the cutting room mirror

Rise of the Robots (SNES)

The SNES Rise of the Robots contains a nice soundtrack (including a brief guitar riff from Queen's Brian May), but otherwise has the same crappy gameplay as the other versions of the game.

Unused Absolute Entertainment Screen#

Nestled in the last 8,192 bytes of the ROM are code and Rob Northen-compressed data for an Absolute Entertainment logo screen. While Absolute did publish a few versions of the game including the 3DO version, they did not fill this role for the SNES version in any region, leaving this screen unused.

The following Game Genie codes replace the Acclaim logo screen with this one:

USA

446B-87A7
DD6C-8DD7
3D6C-8D07
EE6C-8D67
1D6C-8DA7

Note that the logo colors glitch when fading out. This is because the palette of the previous screen is reloaded during the fadeout, and might be a side effect of how this screen was restored.

(Source: Mattrizzle)

Source Code Fragments#

The European version has fragments of code hidden throughout the ROM:

At 1FFB5: <pre white-space: pre-wrap;> 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)

Hidden Developer Credit#

The first copyright screen has text crediting developer Data Design Interactive below the credit for programmer Tony Stoddart. However, it goes unseen due to it being assigned the same color as the background. Changing color index 3 to something other than black will reveal it:

Unedited

Hidden Text Revealed

(Source: Mattrizzle)

References#


  1. GDR スーパーファミコン ソフト一覧 1994年 - SUPER FAMICOM Software List 1994↩︎
  2. Programmer Tony Stoddart was part of this company.↩︎
  3. Super NES Games↩︎
  4. Video Source's SNES Price List. "Rise of the Robots 55 70 12/14"↩︎
  5. Nintendo Magazine System (UK) Issue 29, p. 66↩︎