Skip to main content

Rise of the Robots (SNES)









Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!




Rise of the Robots (SNES)



From The Cutting Room Floor


Revision as of 12:40, 24 March 2018 by Divingkataetheweirdo (Talk | contribs)


(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)



Jump to: navigation, search







Title Screen


Rise of the Robots

Developer:
Mirage
Publishers: Time Warner Interactive,
T&E Soft (JP)
Platform:
SNES
Released in JP: December 1994
Released in US: December 1994
Released in EU: January 1995




SourceIcon.png This game has uncompiled source code.




ProtoIcon.pngThis game has a prototype article





Hmmm...

To do:
There might be something hidden in the RNC-compressed data here.

Rise of the Robots was perhaps one of the most over-hyped titles of the 16-bit era, which is saying something. The game itself had excellent prerendered graphics and this version contains a nice soundtrack, but the gameplay was considered bad, if not downright awful, by almost everyone who played at the time. However, it still got loads of praise from magazines who rushed their reviews so they could come out before the game did, causing several readers to highly distrust printed sources. Not even a brief guitar riff from Queen's Brian May could save this game.


Source Code Fragments


In the European version, there are fragments of code hidden throughout the ROM


1FFB5:



lda #$00

ldx #16
!0
jsr wait_frame
sta |w_inidisp
inc a

25C667:



(sh)ow_text
lda >win_msg_table+2,x
sta results_win+window_text+2

!loop2: jsr wait_frame

ldy #results_win
jsr window_process

lda results_win+window_text
ora results_win+window_text+2
bne !loop2

rts

print_gmess: jsr gfx_mess
jsr check_gfx_mess
jsr wait_frame

rts

if cine
cine_list: dl wn_cb_mc

dl fly_mc

dl cn_ld_mc
dl ds_ld_mc

dl wn_cb_mc
dl cn_ap_mc
dl ds_ap_mc

dl wn_cb_mc
dl cn_cr_mc
dl ds_cr_mc

dl wn_cb_mc
dl cn_ml_mc
dl ds_ml_mc

dl wn_cb_mc
dl cn_jp_mc
dl ds_jp_mc

dl wn_cb_mc
dl cn_sp_mc
dl ds_sp_mc
dl 0
endif


end_sequence:
if en_sound!rom
jsr play_brian
endif

jsr clr_palette_2
lda #0
ldx #256
jsr fade_it
stz flash_palette
stz flash_colour
jsr clr_pal_buff
jsr death_hdma_on

jsr clear_screen

ldx #10
jsr delay
jsr wait_frame


jsr screen_off
stz nrg_dsp_flg
stz split_mode

lda #29
a08
sta w_bg1hofs
xba
sta w_bg1hofs
lda #$03
sta |w_tm
lda #(sc_1b_scrn/2)>>8
sta w_bg1sc
lda #(sc_2c_scrn/2)>>8
sta w_bg2sc
a16
jsr screen_on

lea window2_table,<a0
jsr init_windows

lea font_dat,<a0
jsr init_window_text

lea wind_mission,<a0
ldy #window_1
jsr create_window

lea mission_info,window_1+window_nexttext

jsr wait_log_finish

stz play_time

if en_which_logo<>1
jsr replay_up
endif

if cine


win_cine_r: lea cine_list,cine_list_ptr

win_cine: lda cine_list_ptr
ldx cine_list_ptr+2
sta a0
stx a0+2
ldy #2
lda [a0]
ora [a0],y
beq win_cine_r

lda [a0]
sta cine_add
lda [a0],y
sta cine_add+2

lda cine_list_ptr
clc
adc #4
sta cine_list_ptr

lda [cine_add]
sta cine_size

inc cine_add
inc cine_add

ldx #$200
stx charc_set
stz cine_count

lda #112
sta cine_pal_size

lea unpack_b1,<a1

win_loop:
lda cine_count
cmp cine_size
bcs end_win

lda [cine_add]
tax
inc cine_add
inc cine_add
lda [cine_add]
inc cine_add
inc cine_add

stx a0
sta a0+2

lda #sc_1b_scrn/2+7*32+8+3
sta d0

jsr cine_frame

jsr wait_frame

ldy #window_1
jsr window_process

inc play_time

inc cine_count
jmp win_loop

end_win:

jsr clr_palette_2
lda #16
ldx #112
jsr fade_it

lda #sc_1b_scrn/2+6*32
sta blit_dest
lda #12*32
sta blit_lenth
jsr clear_ppu

jmp win_cine

endif

!wloop: jsr wait_frame
bra !wloop

;************************************************************************************
;*
;* Game Message Process
;*
game_mess_process:
lda bouts_total
cmp bouts_selected
beq !no_final
cmp bout_number
bne !no_final
lda #0
bra !final
!no_final: lda bout_number
!final: asl
tax
lda >round_table,x
ldx #$40
jsr gfx_mess
jsr check_gfx_mess
jsr wait_frame

jsr game_mess
lda >rest_after_mess
sta rest

jmp game_loop_end


;************************************************************************************************
;*
;* Bout over process
;*

bout_over_process:
; jsr clear_top

jsr print_results

jsr bout_over_mess
no_game_mess:
jsr fade_screen_off
jsr screen_off
jsr hdma_off

jsr clear_sprites

jsr clear_screen

;****************************************************************************
;** Check here for replay
;**

ldx winner_amp
bne !player_won
;Last game was a draw
lda bout_number
cmp bouts_total
bra !not_next_opponent
!player_won:
lda robot_won,x
cmp bouts_toplay
bcc !not_next_opponent

ldx mission
dex
bne !new_select
lda dead_type
beq !dead
ldx players
dex
bne !dead
lda #robot_sup
cmp robot_opponent
bne !next_robot
jmp !new_robot
!next_robot:
inc robot_opponent
jmp !new_robot
!not_next_opponent:
jmp !new_bout
!dead:
jmp !new_game

!new_robot: lda #gs_new_robot
sta game_state
jmp game_loop_end

!new_bout: lda #gs_new_bout
sta game_state
jmp game_loop_end

!new_game: lda #gs_new_game
sta game_state
jmp game_loop_end

!new_select: lda #gs_new_select
sta game_state
jmp game_loop_end


;************************************************************************************
;*
;* Game over process
;*

;****************************************************
;* Print results

;RESULT (overall)=0 for
game_over_process:

stz result ;default to draw

jsr print_results ;print the result of last bout

teletype results_win,finalr_msg

lda robot_2+robot_won ;see who won overall
cmp robot_1+robot_won ;If there is a winner bypass draw
bne !not_draw

;******************************** OVERALL DRAW **********************************

teletype results_win,draw_msg

jsr game_end_mess ;fade to red etc.

lda #gs_new_game ;go play new game
sta game_state
jmp game_loop_end

;********************************************************************************

!not_draw: ldy robot_2+robot_type ;decide who is the winner
lda #0
ldx robot_1+robot_won
cpx robot_2+robot_won
bcs !r0_win ;bypass if it is cyborg

ldy #0
lda robot_2+robot_type ;else get type of oppponent
bra !opp_win
!r0_win:
ldx #1 ;cyborg win result
stx result
bra !cont_win
!opp_win:
ldx #2 ;opponent win
stx result
!cont_win:
sty dead_type ;who is dead

asl
asl
tax
lda >winv_msg_table,x
sta results_win+window_text
lda >winv_msg_table+2,x
sta results_win+window_text+2
!loop3: jsr wait_frame
ldy #results_win
jsr window_process
lda results_win+window_text+2
ora results_win+window_text
bne !loop3



ldx mission ;decide on conditions to display GAME OVER
dex
bne !no_game_over ;Not if TRAINING

ldx players ;Not if 2 Player
dex
bne !no_game_over

lda result ;Not if Cyborg win
cmp #1
beq !no_game_over

teletype results_win,gameover_msg ;print GAME OVER

!no_game_over:
jsr game_end_mess ;Fade to red print message
jsr dead_frame ;Death cinematic

lda result
cmp #1 ;Cyborg victory
beq victory
;
;************************ Overall result draw or lose ***********************************
;

ldx mission ;if die on mission go back to intro screen
dex ;else go back to select screen
bne !ns

ldx players
dex
bne !ns

!ng: lda #gs_new_game
sta game_state
jmp game_loop_end
!ns:
lda #gs_new_select
sta game_state
jmp game_loop_end

;************************ Cyborg Victory *************************************************
victory:

ldx players ;2 Players - so select
dex
bne !new_select

ldx mission ;Training - so new game
dex
bne !new_select

lda robot_2+robot_type
cmp #robot_sup
bne !new_robot

;************************************************************************************
;
; M I S S I O N C O M P L E T E hurray , the end of the game
;
jsr end_sequence ;Victory

lda #gs_complete
sta game_state
jmp game_loop_end

!new_robot:
inc robot_opponent
lda #gs_new_robot
sta game_state
jmp game_loop_end

!new_game:
lda #gs_new_game
sta game_state
jmp game_loop_end

!new_select:
lda #gs_new_select
sta game_state
jmp game_loop_end

;************************************************************************************



set_scroll: jsr wait_frame
lda scroll_pos
a08
sta |w_bg2vofs
xba
sta |w_bg2vofs
a16
rts

init_new_robot:
jsr hdma_off
lda #1
sta tele_flag

lda #1
sta split_mode

jsr wait_frame
jsr clear_screen

jsr screen_off

lda #$0000
sta robot_2+robot_score

stz robot_1+robot_won
stz robot_2+robot_won

lda #1
sta bout_number
lda demo_mode
bne no_select
!sel_again: jsr select_screen
lda cancel_sel
bne !sel_again

no_select: jsr hdma_off
jsr wait_frame

lda players
sta players_g
lda bouts
sta bouts_g
lda timer
sta timer_g

lda difficulty
sta difficulty_g

lda demo_mode
beq !no_demo


lda #0
sta players_g
lda #1
sta bouts_g
lda #4
sta timer_g
lda #2
sta difficulty_g
!no_demo:

lda bouts_g
dec a
asl
tax
lda >bouts_table,x
sta bouts_total
sta bouts_selected
lsr
inc a
sta bouts_toplay
rts
init_bout:
jsr hdma_off

jsr clear_screen
jsr clear_sprites
jsr init_sprites
jsr init_robots
jsr init_background
jsr init_vars

jsr inipix

jsr init_energy

jsr init_schedule



jsr wait_frame
jsr wait_frame
jsr wait_frame

lda #sc_2n_scrn/2
sta wind_screen

lea window_table,<a0
jsr init_windows
lea font_dat,<a0
jsr init_window_text

lea robot1_window,<a0
ldy #window_1
jsr create_window

lea robot2_window,<a0
ldy #window_2
jsr create_window

; jsr players_won

jsr hdma_off
jsr para_init

jsr hdma_on

jsr fade_screen_on
jsr screen_on

jsr setup_collisions

lda #%01010010
sta m_cgadsub
lda #%10000010
sta m_cgswsel

a08
lda timer_value
sta timer_count
ldx timer_g
dex
lda >timer_table,x
sta timer_count+1
a16
lda >timer_table,x
and #$ff
sta timer_mode
lda #2
sta game_mode
lda #10
sta num_frames

if en_sound!rom
lda robot_opponent
asl
asl
tax
lda >robot_table,x
sta a2
lda >robot_table+2,x
sta a2+2
ldy #ri_music
lda [a2],y
jsr play_tune
endif

jsr wait_frame
a08
lda #%01010000
sta |w_cgadsub
lda #%10000010
sta |w_cgswsel
a16

lda #2
sta spr_blit_flag
stz shake
lda #4
sta sprite_blit_count

stz result

lda >rest_before_mess
sta rest


stz time_over_flag
rts


init_sprite_blit:
stz blit_oam
lda #0
ldx #4*8/2
ldy #0

!lp: sta blit_tables,y
iny
iny
dex
bne !lp

rts

;***************************************************************************************
;*
;* Pause
Pause_It:
lda game_mode
bne !exit

lda #but_start
bit |joy_0
bne !start_it
ldx players
dex
beq !exit
bit |joy_1
bne !start_it
bra !exit
!start_it:
jsr sprite_log_blit

lda #Pause_table&$ffff
ldx #$2
jsr gfx_mess
jsr check_gfx_mess

lda #but_start
jsr wait_button_down_up

lda #but_start
jsr wait_button_down_up

!exit:
rts



wait_button_down_up:
tax
!s0 jsr wait_frame
txa
ldy players
dey
beq !p11
bit |joy_1
bne !s1
!p11: bit |joy_0
beq !s0

!s1: jsr wait_frame
txa
ldy players
dey
beq !p12
bit |joy_1
bne !s1
!p12: bit |joy_0
bne !s1

rts


wbdu:
tax
!s0
lda |frame_count
!s0a: cmp |frame_count
beq !s0a
txa
bit |joy_0
bne !s1
bit |joy_1
beq !s0

!s1:
lda |frame_count
!s1a: cmp |frame_count
beq !s1a
txa
bit |joy_0
bne !s1
bit |joy_1
bne !s1

rts

make_joystick_config
ldx #j_config_1
ldy #0

!loop: lda 0,x
sta j_config,y
inx
inx
iny
iny
cpy #12
bcc !loop

rts

delay:
!wl: jsr wait_frame
dex
bne !wl

rts


gfx_mess_delay:
!wl: phx
jsr wait_frame
jsr clear_sprite_buf
jsr csp
jsr check_gfx_mess
jsr sprite_log_blit
plx
dex
bne !wl

rts

sect_2_exit:
jsr fade_screen_off
jsr vbl_vect_off

jsr screen_off
jsr hdma_off

jsr clear_sprites


!loop jmp !loop



which_logo:
if en_which_logo!rom
jml (logo_vect)
endif
rtl


check_timer_out:
lda timer_mode
beq cto_exit
lda game_mode
bne cto_exit
lda timer_count
cmp #2
bcs cto_exit
stz timer_count
ldy #robot_1
lda robot_1+robot_energylost
cmp robot_2+robot_energylost
bcs kill_game
ldy #robot_2
kill_game:
lda #1
sta time_over_flag
jsr end_bout
cto_exit:
rts


game_end_mess:
if en_sound!rom
jsr fade_tune
endif

lda #2000
sta |spr_blit_flag
stz nrg_dsp_flg
jsr wait_frame
jsr wait_frame

lea palette_str,<a0
lda #0
ldx #256
jsr copy_palette_2

ldx #256-16
ldy #16*2
!lp: lda palette_str2,y
and #%0000000000011111
sta palette_str2,y
iny
iny
dex
bne !lp

lda #16
ldx #256-16-16-16
jsr fade_it

jsr wait_frame
ldy #window_1
jsr create_window_matrix
jsr wait_frame
ldy #window_2
jsr create_window_matrix
stz nrg_dsp_flg

!loop1: jsr wait_frame

ldy #window_1
jsr window_process

ldy #window_2
jsr window_process

lda window_1+window_text
ora window_1+window_text+2
ora window_2+window_text
ora window_2+window_text+2

bne !loop1

stz game_mode

lda #4
sta game_mode
lda #1
sta num_frames

rts


bout_over_mess:

ldy #window_1
jsr create_window_matrix
jsr wait_frame
ldy #window_2
jsr create_window_matrix
stz nrg_dsp_flg

!loop1: jsr wait_frame

ldy #window_1
jsr window_process

ldy #window_2
jsr window_process

lda window_1+window_text
ora window_1+window_text+2
ora window_2+window_text
ora window_2+window_text+2

bne !loop1

lda #100
lda #end_time
sta num_frames

rts



game_mess:

!loop1: jsr wait_frame

ldy #window_1
jsr window_process

ldy #window_2
jsr window_process

lda window_1+window_text
ora window_1+window_text+2
ora window_2+window_text
ora window_2+window_text+2

bne !loop1

lda #r0a&$ffff
sta window_1+window_text
lda #r0a>>16
sta window_1+window_text+2
lda robot_opponent
inc a
asl
asl
tax
lda >plrtab,x
sta window_2+window_text
lda >plrtab+2,x
sta window_2+window_text+2

jsr print_windows

lda #scr_1_mess&$ffff
sta window_1+window_text
lda #scr_1_mess>>16
sta window_1+window_text+2

lda #scr_2_mess&$ffff
sta window_2+window_text
lda #scr_2_mess>>16
sta window_2+window_text+2

jsr print_windows

stz game_mode
lda #-1
sta nrg_dsp_flg

!exit:
jsr players_won
rts



print_windows:

!loop: jsr wait_frame

ldy #window_2
jsr window_process
ldy #window_1
jsr window_process

lda window_1+window_text
ora window_1+window_text+2
ora window_2+window_text
ora window_2+window_text+2

bne !loop
rts

set_win_lose_text:
phy
phx
tya
ldy #window_1
ldx #window_2
cmp #robot_1
beq !r1
ldy #window_2
ldx #window_1
!r1:
lda #player_matchlost&$ffff
sta window

2FF793:



rts


schedule_process:
lea schedule,<a1
ldx #sch_len
ldy #0
!loop: lda [a1],y
bne !s1
iny
iny
lda [a1],y
dey
dey
sta [a1],y
bra !s2
!s1: sec
sbc #1
sta [a1],y
!s2: iny
iny
iny
iny
dex
bne !loop
rts



init_robots:
; if en_sp1
lea robot_1,<a2
lda #Robot_Cyb

ldx #2

jsr irs
; endif

; if en_sp2
lea robot_2,<a2
lda robot_opponent

ldx difficulty_g

jsr irs


; endif


ldx players_g
bne !n1
lda robot_1+robot_flags
ora #1<<Bit_CPU
sta robot_1+robot_flags
!n1:
cpx #2
beq !n2
lda robot_2+robot_flags
ora #1<<Bit_CPU
sta robot_2+robot_flags
!n2:
rts

init_background:

if en_back

lda robot_2+robot_type
sta d8

lda #2
sta charc_set
lda #32
lda #0
clc
adc #sc_1n_scrn/2
sta d0
lda d8
clc
; adc #1
asl
asl
tax
lda >robot_table,x
sta a0
sta a4
lda >robot_table+2,x
sta a0+2
sta a4+2
ldy #ri_room
lda [a0],y
tax
iny
iny
lda [a0],y
stx a0
sta a0+2
stz d8+2
jsr back_frame
endif

rts



irs:
;Profile index
pha
txa
dec a
and #3
ldx #7
jsr mult_xa
clc
adc bout_number
dec a
ldx #6
jsr mult_xa
sta d4
pla



if 0
pha

ldx #(robot_parm_size)/2
lda #0
tay
!clp:
sta [a2],y
iny
iny
dex
bne !clp

pla
endif

ldy #robot_type
sta [a2],y
asl
asl
tax
lda >robot_table,x
sta a6
lda >robot_table+2,x
sta a6+2
ldy #ri_gfx
lda [a6],y
pha
iny
iny
lda [a6],y
ldy #robot_gfx+2
sta [a2],y
dey
dey
pla
sta [a2],y

ldx a2
cpx #robot_1
bne p2_set
p1_set:
lda #sjoy0
sta robot_joyval,x
ldy #ri_xstartl
lda [a6],y
sta robot_x,x
sta robot_x_origin,x

lda #robot_2
sta robot_other,x
lda #0
sta robot_other+2,x

lda #rob_gbuff_1&$ffff
sta robot_graphics,x
lda #rob_gbuff_1>>16
sta robot_graphics+2,x

lda #0
sta robot_overdelay,x

bra set_ok
p2_set:
lda #sjoy1
sta robot_joyval,x
ldy #ri_xstartr
lda [a6],y


31F968:



***********************************
;

ldx mission ;if die on mission go back to intro screen
dex ;else go back to select screen
bne !ns

ldx players
dex
bne !ns

!ng: lda #gs_new_game
sta game_state
jmp game_loop_end
!ns:
lda #gs_new_select
sta game_state
jmp game_loop_end

;************************ Cyborg Victory *************************************************
victory:

ldx players ;2 Players - so select
dex
bne !new_select

ldx mission ;Training - so new game
dex
bne !new_select

lda robot_2+robot_type
cmp #robot_sup
bne !new_robot

;************************************************************************************
;
; M I S S I O N C O M P L E T E hurray , the end of the game
;
jsr end_sequence ;Victory

lda #gs_complete
sta game_state
jmp game_loop_end

!new_robot:
inc robot_opponent
lda #gs_new_robot
sta game_state
jmp game_loop_end

!new_game:
lda #gs_new_game
sta game_state
jmp game_loop_end

!new_select:
lda #gs_new_select
sta game_state
jmp game_loop_end

;************************************************************************************



set_scroll: jsr wait_frame
lda scroll_pos
a08
sta |w_bg2vofs
xba
sta |w_bg2vofs
a16
rts

init_new_robot:
jsr hdma_off
lda #1
sta tele_flag

lda #1
sta split_mode

jsr wait_frame
jsr clear_screen

jsr screen_off

lda #$0000
sta robot_2+robot_score

stz robot_1+robot_won
stz robot_2+robot_won

lda #1
sta bout_number
lda demo_mode
bne no_select
!sel_again: jsr select_screen
lda cancel_sel
bne !sel_again

no_select: jsr hdma_off
jsr wait_frame

lda players
sta players_g
lda bouts
sta bouts_g
lda timer
sta timer_g

lda difficulty
sta difficulty_g

lda demo_mode
beq !no_demo


lda #0
sta play

32F8B2:



dec d0 ;any more shards to create ?
beq !exit ;end if not

!na: lda a4
clc
adc #shard_parm_size
sta a4
dec d1
beq !exit
jmp !lp
!exit:
rts

create_spark:
lda #no_sparks
sta d0

ldx #spark_buff
!spl:
lda spark_y,x
bne !not_clear

lda shard_coordx
sta spark_x,x

lda shard_coordy
sta spark_y,x

stz spark_frame,x

rts
!not_clear:
txa
clc
adc #spark_parm_size
tax
dec d0
bne !spl
rts




vert_on:
if en_vert
sei
a08
lda #%10110001
sta |w_nmitimen

a16

lda >htv
sta |w_htimel

cli
endif
rts



np_set:
ldx #max_dma_p
ldy #50

a08
lda r_stat78
a16
bit #1<<4
bne !pal
ldx #max_dma_n
ldy #60
!pal:
if en_ntsc
ldx #max_dma_n
ldy #60
endif

stx max_dma
sty timer_value
rts


vert_off:
if en_vert
jsr wait_frame

sei

a08

lda #%10000001
sta |w_nmitimen

a16

cli
endif
rts


;0978 266333

debug:
if en_debug
if rom=0


if 0
pv robot_2+robot_aioverride,0
pv robot_2+robot_aioverridemode,3
pv robot_2+robot_mode,6
pv robot_2+robot_int,9
pv robot_2+robot_motivation,12
pv robot_2+robot_speed,15
pv robot_2+robot_firepowerdelay,18
pv robot_2+robot_aitimer,21
pv robot_2+robot_aimoveaddr,24
pv robot_2+robot_aimoveaddr+2,27
pv robot_2+robot_aimoveaddr+4,30
endif


if 0
pv robot_2+robot_mode,0
pv robot_2+robot_frame,3
pv robot_2+robot_y,6
pv robot_2+robot_ymax,9
endif


if 1
pv robot_1+robot_frame,0
pv robot_2+robot_frame,3
pw cur_col_pos,6
pw cur_col_diff,11
pw cur_col_xy,16
pw cur_col_xy+2,21

pv robot_1+robot_cur_hit+2,26
pv robot_2+robot_cur_hit+2,29
endif
endif
endif

rts
reset_energy:
ldy a2
lda robot_type,y
asl

34F39C:



straight to IPLROM

SET16
lda #(MusicDriver&$ffff)  ;download driver (24 bit address)
sta <SonyAddr
lda #RamII
lda #MusicDriver>>16
sta <SonyAddr+2
jsr SONY_send

CLR16
lda #$82  ;DOWNLOAD data (music)
sta >APU_PORT0
SET16
lda mus_data
sta <SonyAddr
lda mus_data+2
sta <SonyAddr+2
jsr SONY_send

CLR16
lda #$82  ;DOWNLOAD data (samples)
sta >APU_PORT0
SET16
lda samp_1
sta <SonyAddr
lda samp_1+2
sta <SonyAddr+2
jsr SONY_send

CLR16
lda #$82  ;DOWNLOAD data (samples)
sta >APU_PORT0
SET16
lda samp_2
sta <SonyAddr
lda samp_2+2
sta <SonyAddr+2
jsr SONY_send

CLR16
sta >APU_PORT3
plp  ;restore any interrupts
SET16
rts


;-----------------------------------------------------------------------------
SONY_send: jsr Boot_APU
CLR16
!wait0: lda >APU_PORT0  ;wait for handshake
bne  !wait0
dec a
sta >APU_PORT2  ;acknowledge handshake
sta <callnum  ;init call number to $FF
rts


;-------------------------------------------------------------------------------
; Once the Sound_Init routine has been called, the following routine can be
; used to download additional music data (or sample data with '#Musicdata'
; replaced by '#Samples') which is required for later levels of the game.
;-------------------------------------------------------------------------------

Send_Data:
stx mus_data
sta mus_data+2
send_mus_data:
CLR16
php
sei  ;disable any other interrupts
S_D0: lda >APU_PORT0  ;latest value sent by SOUND CPU
cmp <callnum
bne S_D0  ;previous call still not finished

lda #$82  ;DOWNLOAD data (music)
sta >APU_PORT0
inc <callnum
lda <callnum
sta >APU_PORT3  ;forces a new call
SET16
lda mus_data
sta <SonyAddr
lda mus_data+2
sta <SonyAddr+2
jsr SONY_send

sta >AP

35FA09:



_code: incbin abslogo.bin
endif


dr


hctab:
hct = 0
rept 6
dw hct,hct+$10
hct = hct+$43
endr

endif

dtune_time: dw 400
hit_scale:
dw $80

reverse_off: db $2f,$2f,$2f,$2f,$2f,$2f,$2f,$2f,$2f

power_table:
dw robot_min_power-2
dw robot_mid_power-2
dw robot_max_power-2


sel_ts: dw %00000000
sel_adsub dw %01010010
sel_swel dw %00010010

option_table: dw 3,2,3,4,2,2,3


if en_sound!rom
music_table: dl music1,music1,music2,music3,music4,musict



(Source: Evilhamwizard)














Retrieved from "https://tcrf.net/index.php?title=Rise_of_the_Robots_(SNES)&oldid=553974"





Navigation menu
























if(window.jQuery)jQuery.ready();if(window.mw){
mw.loader.state({"site":"loading","user":"ready","user.groups":"ready"});
}if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.uls.pt"],null,true);
}if(window.mw){
document.write("u003Cscript src="https://tcrf.net/load.php?debug=falseu0026amp;lang=enu0026amp;modules=siteu0026amp;only=scriptsu0026amp;skin=vectoru0026amp;*"u003Eu003C/scriptu003E");
}
var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.tcrf.net/" : "http://stats.tcrf.net/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));

try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}


if(window.mw){
mw.config.set({"wgBackendResponseTime":267});
}

Popular posts from this blog

Mario Kart Wii

What does “Dominus providebit” mean?

Antonio Litta Visconti Arese