If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Proto:Rise of the Robots (SNES)

From The Cutting Room Floor
Jump to navigation Jump to search

This page details one or more prototype versions of Rise of the Robots (SNES).

Hiddenpalace.org logo.png  This prototype is documented on Hidden Palace.

A prototype of the Japanese version has been released into the wild and contains additional source code not present in the European version.

General Differences

  • AI is set to its hardest level, no matter what difficulty option is selected. This makes it hard to progress through the game.

Text Differences

  • The prototype has the text "JAMES (J) 1994 RISE OF THE ROBOTS", which is not in the final version.

Visual Differences

  • Only the Mirage logo is shown when booting up the game, and even that is missing "Created and Designed by" and the trademark.
  • The player robot character on the title screen has the hip glitched.
  • The opening and ending cinematics are not present. The robot analysis and arrival cinematics take place on the main menu rather than on unique screens.
  • Health bars are split into sections.
Proto Final
Rise of the Robots Proto-title.png Rise of the Robots J final title.png

Unlike the final version, the title screen image is static.

Proto Final
Rise of the Robots Proto Results.png Rise of the Robots Final Results.png

The results graphics are more arcade game-like than the final version, which combines the results into one monitor.

Uncompiled Source Code

0x578A:

lr_pal incbin data\dat_back\finalr.pal

final	incbin data\dat_back\finala.dat
final_pal incbin data\dat_back\finala.pal

round1	incbin data\dat_bso

0x61F0:

5
ds_sp_074	incbin	data\dat_back\ds_sp074.dat  ;1550
ds_jp_023	incbin	data\dat_back\ds_jp023.dat  ;2779
ds_ml_003	incbin	data\dat_back\ds_ml003.dat  ;3001
ds_ml_004	incbin	data\dat_back\ds_ml004.dat  ;2871
ds_ml_005	incbin	data\dat_back\ds_ml005.dat  ;2959
ds_ml_006	incbin	data\dat_back\ds_ml006.dat  ;2891
ds_ml_007	incbin	data\dat_back\ds_ml007.dat  ;2873
ds_ml_008	incbin	data\dat_back\ds_ml008.dat  ;2796
ds_ml_009	incbin	data\dat_back\ds_ml009.dat  ;2852
ds_ml_010	incbin	data\dat_back\ds_ml010.dat  ;2804
ds_ml_011	incbin	data\dat_back\ds_ml011.dat  ;2808
ds_cb_004	incbin	data\dat_back\ds_cb004.dat  ;2767
ds_cb_005	incbin	data\dat_back\ds_cb005.dat  ;2857
ds_cb_012	incbin	data\dat_back\ds_cb012.dat  ;2943
ds_cb_015	incbin	data\dat_back\ds_cb015.dat  ;3127
ds_cb_016	incbin	data\dat_back\ds_cb016.dat  ;3129
ds_cb_017	incbin	data\dat_back\ds_cb017.dat  ;3033
ds_cb_018	incbin	data\dat_back\ds_cb018.dat  ;3012
ds_cb_021	incbin	data\dat_back\ds_cb021.dat  ;2801

	SECTION	m59,m_59  ;65479

ds_sp_013	incbin	data\dat_back\ds_sp013.dat  ;2685
ds_sp_034	incbin	data\dat_back\ds_sp034.dat  ;2727
ds_sp_036	incbin	data\dat_back\ds_sp036.dat  ;2620
ds_sp_037	incbin	data\dat_back\ds_sp037.dat  ;2624
ds_sp_039	incbin	data\dat_back\ds_sp039.dat  ;2318
ds_sp_042	incbin	data\dat_back\ds_sp042.dat  ;2207
ds_ld_010	incbin	data\dat_back\ds_ld010.dat  ;144
ds_ml_012	incbin	data\dat_back\ds_ml012.dat  ;2765
ds_ml_013	incbin	data\dat_back\ds_ml013.dat  ;2720
ds_ml_014	incbin	data\dat_back\ds_ml014.dat  ;2746
ds_ml_015	incbin	data\dat_back\ds_ml015.dat  ;2682
ds_ml_016	incbin	data\dat_back\ds_ml016.dat  ;2696
ds_ml_017	incbin	data\dat_back\ds_ml017.dat  ;2621
ds_ml_018	incbin	data\dat_back\ds_ml018.dat  ;2622
ds_ml_019	incbin	data\dat_back\ds_ml019.dat  ;2617
ds_ml_020	incbin	data\dat_back\ds_ml020.dat  ;2754
ds_cb_002	incbin	data\dat_back\ds_cb002.dat  ;2643
ds_cb_003	incbin	data\dat_back\ds_cb003.dat  ;2696
ds_cb_006	incbin	data\dat_back\ds_cb006.dat  ;2419
ds_cb_007	incbin	data\dat_back\ds_cb007.dat  ;2741
ds_cb_008	incbin	data\dat_back\ds_cb008.dat  ;2604
ds_cb_009	incbin	data\dat_back\ds_cb009.dat  ;2643
ds_cb_010	incbin	data\dat_back\ds_cb010.dat  ;2694
ds_cb_011	incbin	data\dat_back\ds_cb011.dat  ;2186
ds_cb_013	incbin	data\dat_back\ds_cb013.dat  ;2651
ds_cb_020	incbin	data\dat_back\ds_cb020.dat  ;2654

	SECTION	m60,m_60  ;65528

ds_sp_012	incbin	data\dat_back\ds_sp012.dat  ;2163
ds_sp_040	incbin	data\dat_back\ds_sp040.dat  ;2125
ds_sp_041	incbin	data\dat_back\ds_sp041.dat  ;2113
ds_sp_043	incbin	data\dat_back\ds_sp043.dat  ;2165
ds_sp_044	incbin	data\dat_back\ds_sp044.dat  ;2023
ds_sp_045	incbin	data\dat_back\ds_sp045.dat  ;2088
ds_sp_046	incbin	data\dat_back\ds_sp046.dat  ;2065
ds_sp_047	incbin	data\dat_back\ds_sp047.dat  ;2006
ds_sp_048	incbin	data\dat_back\ds_sp048.dat  ;1975
ds_sp_049	incbin	data\dat_back\ds_sp049.dat  ;2001
ds_sp_050	incbin	data\dat_back\ds_sp050.dat  ;1966
ds_sp_051	incbin	data\dat_back\ds_sp051.dat  ;2055
ds_sp_052	incbin	data\dat_back\ds_sp052.dat  ;1930
ds_sp_053	incbin	data\dat_back\ds_sp053.dat  ;1865
ds_sp_054	incbin	data\dat_back\ds_sp054.dat  ;1906
ds_sp_055	incbin	data\dat_back\ds_sp055.dat  ;1876
ds_sp_056	incbin	data\dat_back\ds_sp056.dat  ;1872
ds_sp_057	incbin	data\dat_back\ds_sp057.dat  ;1749
ds_sp_058	incbin	data\dat_back\ds_sp058.dat  ;1817
ds_sp_059	incbin	data\dat_back\ds_sp059.dat  ;1727
ds_sp_060	incbin	data\dat_back\ds_sp060.dat  ;1796
ds_sp_061	incbin	data\dat_back\ds_sp061.dat  ;1781
ds_sp_063	incbin	data\dat_back\ds_sp063.dat  ;1737
ds_sp_064	incbin	data\dat_back\ds_sp064.dat  ;1799
ds_sp_065	incbin	data\dat_back\ds_sp065.dat  ;1766
ds_sp_066	incbin	data\dat_back\ds_sp066.dat  ;1735
ds_sp_067	incbin	data\dat_back\ds_sp067.dat  ;1696
ds_sp_068	incbin	data\dat_back\ds_sp068.dat  ;1754
ds_sp_070	incbin	data\dat_back\ds_sp070.dat  ;1620
ds_ld_002	incbin	data\dat_back\ds_ld002.dat  ;1768
ds_ld_003	incbin	data\dat_back\ds_ld003.dat  ;1648
ds_ld_006	incbin	data\dat_back\ds_ld006.dat  ;1670
ds_ld_007	incbin	data\dat_back\ds_ld007.dat  ;1731
ds_cr_004	incbin	data\dat_back\ds_cr004.dat  ;886
ds_cr_007	incbin	data\dat_back\ds_cr007.dat  ;531
ds_cb_019	incbin	data\dat_back\ds_cb019.dat  ;2123

	SECTION	m61,m_61  ;33144

ds_cb_mc	include data\dat_back\ds_cb.mac  ;791
ds_ld_mc	include data\dat_back\ds_ld.mac  ;506
ds_ap_mc	include	data\dat_back\ds_ap.mac  ;411
ds_cr_mc	include	data\dat_back\ds_cr.mac  ;525
ds_ml_mc	include	data\dat_back\ds_ml.mac  ;392
ds_jp_mc	include	data\dat_back\ds_jp.mac  ;449
ds_sp_mc	include	data\dat_back\ds_sp.mac  ;1494
ds_sp_069	incbin	data\dat_back\ds_sp069.dat  ;1595
ds_sp_071	incbin	data\dat_back\ds_sp071.dat  ;1525
ds_sp_072	incbin	data\dat_back\ds_sp072.dat  ;1596
ds_sp_073	incbin	data\dat_back\ds_sp073.dat  ;1472
ds_sp_075	incbin	data\dat_back\ds_sp075.dat  ;1546
ds_sp_076	incbin	data\dat_back\ds_sp076.dat  ;1532
ds_sp_077	incbin	data\dat_back\ds_sp077.dat  ;1521
ds_sp_078	incbin	data\dat_back\ds_sp078.dat  ;1440
ds_ld_005	incbin	data\dat_back\ds_ld005.dat  ;1510
ds_ld_008	incbin	data\dat_back\ds_ld008.dat  ;220
ds_ld_011	incbin	data\dat_back\ds_ld011.dat  ;226
ds_ld_012	incbin	data\dat_back\ds_ld012.dat  ;303
ds_ld_013	incbin	data\dat_back\ds_ld013.dat  ;309
ds_ld_014	incbin	data\dat_back\ds_ld014.dat  ;343
ds_ld_015	incbin	data\dat_back\ds_ld015.dat  ;442
ds_ld_017	incbin	data\dat_back\ds_ld017.dat  ;564
ds_ld_018	incbin	data\dat_back\ds_ld018.dat  ;440
ds_ld_019	incbin	data\dat_back\ds_ld019.dat  ;472
ds_ld_020	incbin	data\dat_back\ds_ld020.dat  ;457
ds_ld_021	incbin	data\dat_back\ds_ld021.dat  ;339
ds_ld_022	incbin	data\dat_back\ds_ld022.dat  ;345
ds_ld_023	incbin	data\dat_back\ds_ld023.dat  ;340
ds_ld_024	incbin	data\dat_back\ds_ld024.dat  ;316
ds_ld_025	incbin	data\dat_back\ds_ld025.dat  ;219
ds_cr_002	incbin	data\dat_back\ds_cr002.dat  ;850
ds_cr_005	incbin	data\dat_back\ds_cr005.dat  ;859
ds_cr_008	incbin	data\dat_back\ds_cr008.dat  ;490
ds_cr_009	incbin	data\dat_back\ds_cr009.dat  ;492
ds_cr_010	incbin	data\dat_back\ds_cr010.dat  ;458
ds_cr_011	incb

0xF400:

                            1sc
		lda	#(sc_2n_scrn/2)>>8
		sta	w_bg2sc
		stz	w_bg1hofs
		stz	w_bg1hofs	;two writes required/upper byte zero
		lda	#3		;sc1 (256 color) , sc2 (16 color)
		sta	w_bgmode
		lda	#bg12nme	;effective global nme offset for each sc
		sta	w_bg12nba	;
		lda	#$13
		sta	|w_tm
		lda	#$01
		sta	|w_ts
		lda	#%01010010
		sta	|w_cgadsub
		lda	#$02
		sta	|w_cgswsel
		lda	#-1
		sta	|w_bg1vofs
		lda	#0
		sta	|w_bg1vofs

		lda	#-1
		sta	|w_bg2vofs
		lda	#0
		sta	|w_bg2vofs

		a16
		rts

init_vars:
		stz	|time_count
		stz	|spr_blit_flag
		stz	|playback
		stz	|play_mode	;return from demo to play a game
		stz	|stop
		stz	|spr_frame
		stz	|sjoy0
		stz	|ljoy0
		stz	|sjoy1
		stz	|ljoy1
		stz	|overflow
		stz	|game_over
		stz	|v_offset
		lda	#0
		sta	scroll_h

		stz	bout_number
		stz	num_frames

		stz	nrg_dsp_flg
		stz	nrg_dsp_flg+2

		stz	message_1+ms_ptr
		stz	message_1+ms_cnt
		lda	#mess_init_spd
		sta	message_1+ms_tim
		stz	message_1+ms_delcount

		stz	message_2+ms_ptr
		stz	message_2+ms_cnt
		lda	#mess_init_spd
		sta	message_2+ms_tim
		stz	message_2+ms_delcount

		lda	#mess_cue_1
		sta	message_1+ms_cue_head
		sta	message_1+ms_cue_tail

		lda	#mess_cue_2
		sta	message_2+ms_cue_head
		sta	message_2+ms_cue_tail

		if	en_inimess
;		lda	#mess1
;		jsr	message1
		lda	robot_opponent
		asl
		tax
;		lda	>ms_tbl,x
;		jsr	message2
		endif


		ldy	#(no_shards*shard_parm_size)/2
		ldx	#shard_buff
		lda	#0
!lp:		sta	0,x
		inx
		inx
		dey
		bne	!lp

		stz	rest		
		rts


message1	phx
		ldx	message_1+ms_cue_tail
		sta	0,x
		inx
		inx
		cpx	#mess_cue_1+mess_cue_len
		bne	!ok1
		ldx	#mess_cue_1
!ok1		stx	message_1+ms_cue_tail
		plx
		stz	robot_1+robot_state
		rts

message2	phx
		ldx	message_2+ms_cue_tail
		sta	0,x
		inx
		inx
		cpx	#mess_cue_2+mess_cue_len
		bne	!ok2
		ldx	#mess_cue_2
!ok2		stx	message_2+ms_cue_tail
		plx
		stz	robot_2+robot_state
		rts



tog_spr_bank:
		lda	#fsn
		sta	|sprite_bank
		rts

		lda	|sprite_bank
		cmp	#fsn
		beq	!bnk0
		lda	#fsn
!cont:
		clc
		adc	#$08
		and	#$f0
		sta	|sprite_bank
		rts
!bnk0:
		lda	#127	;|dec_start
		sec
		sbc	#10
		clc
		adc	#fsn
		lsr
		bra	!cont


csp:
		ldx	|time_count
		cpx	#-1
		beq	!nit
		inx
!nit:		stx	|time_count
		cpx	#4
		bcc	!exit


		lda	#robot_sp
		sta	sprite_number

		if	en_sp1

		lea	robot1_sprite,<a0
		ldx	#robot_1_sc
		jsr	cn_spr

		endif

		if	en_sp2

		lea	robot2_sprite,<a0
		ldx	#robot_2_sc
		jsr	cn_spr

		endif

0x29F16B:

                        a1		; <d4+2 - xOfs
		and	#$ff
		eor	#-1
		sec			; inc a : clc
		adc	<d4
		a08
		sta	sprite_buffer,x
		xba
		beq	!no_x
		a16
		lda	>spt,x
		tay
		a08
		lda	>spt+2,x
		ora	0,y
		sta	0,y
!no_x:
		lda	[a1]
		clc
		adc	<d5
		sta	sprite_buffer+1,x
		a16
		lda	<d3
		inc	a
		inc	a
		bit	#$0010
		beq	!not_adjust
		clc
		adc	#$0010
!not_adjust:
		sta	<d3
		inc	<a1
		inx
		inx
		inx
		inx
		dec	<d0
		bne	!loop
!exit:
		rts


;###############################################################################
sh_spr:
		sty	<a0
		stz	<a0+2
		sta	<d6

		lda	spr_mult_disp,y
		bne	!exit
		stx	<d3
		lda	sprite_number
		asl	a
		asl	a
		tax
		lda	spr_mult_add,y
		sta	<a1
		lda	spr_mult_add+2,y
		sta	<a1+2
		lda	spr_mult_x,y
		clc
		adc	scroll_h
		sta	<d4
		lda	[a1]		; # of sprites
		sta	<d0
		clc
		adc	sprite_number
		sta	sprite_number
		lda	<a1
		clc
		adc	#spr_off
		sta	<a1
		lda	>shadow_floor
		sec
		sbc	v_offset
		adc	<d5
		sta	<d5
		lda	spr_mult_height,y
		dec	a
		asl	a
		asl	a
		asl	a
		clc
		adc	<d5
		sta	<d5
		lda	spr_mult_xflip,y
		bit	#1<<6
		beq	sh_spr_forwards
		jmp	sh_spr_back
!exit:
		rts

sh_spr_forwards:
!loop:
		cpx	#128*4		;point to x,y etc
		bcs	!exit
		a08
		lda	<d3
		sta	sprite_buffer+2,x
		lda	<d3+1		;now high + vflip/hflip/priority/color
		and	#1
		ora	#%10110000
		ora	<d6
		sta	sprite_buffer+3,x
		a16			; set up x
		inc	<a1
		lda	[a1]
		inc	<a1
		and	#$ff
		clc
		adc	<d4
		a08
		sta	sprite_buffer,x
		xba
		beq	!no_x
		a16
		lda	>spt,x
		tay
		a08
		lda	>spt+2,x
		ora	0,y
		sta	0,y
!no_x:
		a16
		lda	[a1]
		and	#$ff
		lsr	a
		eor	#-1
		sec			; inc a : clc
		adc	<d5
		cmp	#230
		bcs	!skip
		a08
		sta	sprite_buffer+1,x
		a16
		inx
		inx
		inx
		inx
!skip:
		inc	<a1
		lda	<d3
		inc	a
		inc	a
		bit	#$0010
		beq	!not_adjust
		clc
		adc	#$0010
!not_adjust:
		sta	<d3
		dec	<d0
		bne	!loop
!exit:
		rts


sh_spr_back:
		lda	spr_mult_width,y	; adjust x position
		dec	a
		asl	a
		asl	a
		asl	a
		asl	a
		clc
		adc	<d4
		sta	<d4
!loop:
		cpx	#128*4		;point to x,y etc
		bcs	!exit
		a08
		lda	<d3
		sta	sprite_buffer+2,x
		lda	<d3+1		;now high + vflip/hflip/priority/color
		and	#1
		ora	#%11110000
		ora	<d6
		sta	sprite_buffer+3,x
		a16			; set up x
		inc	<a1
		lda	[a1]
		inc	<a1
		and	#$ff
		eor	#-1
		sec			; inc a : clc
		adc	<d4
		a08
		sta	sprite_buffer,x
		xba
		beq	!no_x
		a16
		lda	>spt,x
		tay
		a08
		lda	>spt+2,x
		ora	0,y
		sta	0,y
!no_x:
		a16
		lda	[a1]
		and	#$ff
		lsr	a
		eor	#-1
		sec			; inc a : clc
		adc	<d5
		cmp	#230
		bcs	!skip
		a08
		sta	sprite_buffer+1,x
		a16
		inx
		inx
		inx
		inx
!skip:
		a16
		inc	<a1
		lda	<d3
		inc	a
		inc	a
		bit	#$0010
		beq	!not_adjust
		clc
		adc	#$0010
!not_adjust:
		sta	<d3
		dec	<d0
		bne	!loop
!exit:
		rts



		endif


********************************************************
*	enable the NMI interrupts		*
********************************************************
v_blank_on	a08
		lda	#%10000001
		sta	|w_nmitimen
		a16
		rts



vbl_vect_off:
		sei
		cli
		rts


update_frame:
		lda	|frame_blit_frm
		sta	|frame_blit_frm+2
		lda	|frame_blit_size
		cmp	|frame_blit_size+2
		bcc	!nok
		sta	|frame_blit_size+2
		lda	|frame_blit_count
		sta	|frame_blit_count+2
!nok:		rts


zero_frame:	lda	#0
		sta	|frame_blit_size
		sta	|frame_blit_count
		sta	|frame_blit_frm
		rts

vbl_vect_on:
		sei
		ldx	#0
		txa
!1:
		sta	|dma_tab+log_lenth,x
		inx
		inx
		cpx	#max_dma_logs*log_blk_size
		bcc	!1

		stz	|log_offset_in
		stz	|log_offset_out

		cli
		rts



process_nmi:
(Source: evilhamwizard)