We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Proto:Sonic the Hedgehog 2 (Genesis)/Nick Arcade Prototype

From The Cutting Room Floor
< Proto:Sonic the Hedgehog 2 (Genesis)
Revision as of 21:45, 15 March 2017 by Sanqui (talk | contribs) (Add Hidden Palace link. This is on trial. Please don't go adding them everywhere.)
Jump to navigation Jump to search

This is a sub-page of Proto:Sonic the Hedgehog 2 (Genesis).

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

Download.png Download Sonic the Hedgehog 2 (Nick Arcade Prototype)
File: Sonic The Hedgehog 2 (Nick Arcade Prototype).bin (1 MB) (info)

The Nick Arcade Prototype of Sonic the Hedgehog 2 is a very early build with many visible remnants from Sonic 1, such as level names and music. It is very incomplete, with missing enemies, levels, and graphical glitches everywhere. However, the basic layouts for a few levels have been completed, and Tails has been implemented.

The prototype was sold to drx in cartridge form for $1,500 via a community effort, and was dumped and released to the public on November 7, 2006. It was given its name due to its similarity to a version of Sonic 2 that was showcased on at least two episodes of the game show Nick Arcade, as this build appears to be very close to (if not exactly the same as) the build used on the show.

General Differences

An example of how screwy two-player mode is.
Hmmm...
To do:
Get comparisons between the early and final Sonic sprites.
  • At this point in development, Tails is quasi-independent: Player 2 is able to control Tails, except he will also follow Sonic. Further, Tails cannot complete a level on his own, since the game only loads the goal sign when Sonic approaches it. If Tails gets hurt, he can lose rings for Sonic. The AI is also much simpler; Tails copies Sonic's moves and makes no attempt to keep up with him.
  • 2-Player mode is even less complete, due to all sorts of odd glitches and not being enabled for every Zone.
  • Invincibility doesn't show the star effect, though the music is still played. The music and invulnerability last until the end of the Act.
  • Sonic uses different, smoother sprites that more closely resemble his Sonic 1 appearance more than the final does.
  • There is a mechanic where Sonic rebounds off walls if he runs into them at high speeds, using sprites that became unused by the Simon Wai prototype:

I get knocked down, but I get up again...

  • The spin dash is a work-in-progress, as Sonic and Tails can only charge it once; further, the sound for when Sonic spins in Sonic 1 is heard as there is not yet a specific sound effect for the spin dash. Funnily enough, the same behavior was resurrected for Sonic the Hedgehog Genesis (complete with non-specific sound effect).
  • The spike damage behavior works the same way as it does in Sonic 1.
  • The ground speed cap from Sonic 1 is still present.
  • Locking on this prototype with Sonic & Knuckles will unlock the full "Blue Sphere" game.
  • The timer resets to 9:00 before hitting 9:59, allowing the player to test stages for extended periods.
  • If Sonic and Tails are both hit at the same time while carrying at least one ring, an overabundance of rings will pop out regardless of how many they actually possess.
  • The screen doesn't scroll up or down when you look up or down for a certain period of time.
  • Jumping into a spring pointing down causes Sonic to use the dying animation while falling.
  • All three signposts were originally symmetrical. Only Robotnik's remained that way:
Nick Arcade Proto Later Protos & Final
Isn't Tails adorable? Now with 200% less symmetry!

Cheat Codes

  • Level Select - Up, Down, Down, Down, Down, Up, A + Start.
  • Two-Player Mode - On the Level Select, press B + Start on any level.
  • Debug Mode - C, C, Up, Down, Down, Down, Down, Up, A + Start. Debug can also be enabled using Pro Action Replay code FFFFFA:0001. As with Sonic 1, C merely needs to be pressed twice before the final input of Up.
  • Debug Mode and Level Select - Up, Down, Down, Down, Down, Up, UDLR, Up, Down, Down, Down, Down, C, C, Up, A + Start. "UDLR" simply means to press any direction on the D-Pad to reset the cheat detection code. Unlike the final, where both Debug Mode and All Emeralds can be enabled by playing 19921124126 on the Level Select screen, the last Up of the Level Select code cannot "overlap" with the first Up of the Debug Mode code.

Title Screen

Nick Arcade to Simon Wai Beta 4 Beta 5 to Final
Get out of my way, Tails! Now with options! In case we weren't clear enough, there is now a badge next to the item you are selecting.

The title screen is different, with a particularly well-known design: not only does it appear in the later Simon Wai build, it also appears in the game's instruction manual, as well as the Master System and Game Gear versions. The version seen in the instruction manual has the 1-Player and 2-Player options, which would put it around Beta 4.

Zones

Nickarcade-titlecards.png

At this point in development, the game uses the Zone names and music from Sonic 1. The Sonic 1 title cards are present and intact, but are invisible because the commands to display them are preceded by a return command. Removing the return commands will show the title cards with the Sonic 2 palette.

Green Hill Zone

Believe it or not, I'm walking on air...
  • As you'd expect, it's Green Hill from Sonic 1...except now with broken collision, and glitched/missing graphics.
  • Because of the different collision array, most slopes make Sonic fall out of the level and die.
  • The S-bend tubes are broken as well, with the engine treating most of them as invisible barriers.
  • The original collision array data from Sonic 1 is present in the ROM, and can be restored with a set of Game Genie codes: AA1A-CEAL AA1A-CEFT AA2A-CEB0 AA2A-CEB6 AA0T-CAG6 AA1A-CAEC AA1T-CAA2 AA1T-CAF8 AA2A-CADJ AA2A-CADR AA1T-DECG AA1T-DEHN AA2A-DECN. Using these, it plays perfectly, besides the broken art.
  • All of the necessary data for Green Hill Zone is still present, and has even been updated to use Sonic 2's data formats. For example, the level's tilemaps have been changed from 256×256 to 128×128, and the art has been updated to look correct in 2-player mode. Unfortunately, this is also one of the main reasons the object art is broken.
  • Act 3's boss has no camera lock, allowing Sonic to go back into the level.
  • All three Acts have different monitors than Sonic 1, showing that the pointers for the monitor types were changed early in development.
  • All Sonic 1-Up monitors are Tails monitors, showing that the Tails monitor in Hidden Palace was supposed to be a Sonic 1-Up as well.
  • Crabmeat has unused art from Sonic 1 in his sprite.
  • The Sonic 1-style springs are present here, whereas the other Zones in this build use the Sonic 2 style.
  • The only badnik whose graphics remain intact is the Piranha. However, due to Sonic's palette having been updated, his coloration is glitchy.
  • The spikes are the updated Sonic 2 variants and use the correct graphics when seen in debug mode, but use glitchy graphics when placed or encountered in normal gameplay.
  • Green Hill Zone's palette was not updated to Sonic 2's palette standard, so the spike graphics when viewed in debug mode use one color (a bright green) that is supposed to be gray.
  • If the game is edited so the Rings display correctly, they will also use a wrong color. It is, again, a green, but is supposed to be dark yellow.
  • Tails cannot be harmed by spikes.

Marble Zone (Chemical Plant)

Acactussayswhat?
Please elaborate.
Having more detail is always a good thing.
Specifically: How is the prototype boss accessed?
Second building from the left was the most notable difference.

The only other Zone seen during the game's Nick Arcade appearances, the CPZ demo was visible in the background of several shots. Until the ROM was dumped, it was the only glimpse of its differences.

  • The background (which does not animate) has a pink tint rather than olive-green, which was probably changed to make CPZ feel more industrialized than it does here. The buildings are also shorter.
  • Act 1 has a radically different level layout than later prototypes and the final.
  • There are a few objects at the beginning of Act 1, including moving platforms and path swappers.
  • The bubble launchers are in place, but the bubbles themselves are not implemented yet.
  • Transportation tubes do not function properly, letting Sonic fall out to the floor/pit below. However, the way they're laid out show that you may have had to run into the transport tube machines to go through them rather than break open a tube to enter.
  • The loops have their early diagonal corners. They also do not have the path-swapping objects in place, making them impassable without debug mode.
  • Acts 2 and 3 are identical in layout to Act 1, indicating that there wasn't much work completed at this point. They use the same ring layouts as GHZ Acts 2 and 3.
  • There is a prototype boss for this Zone in the ROM, which can be found through hacking.
  • Some extra objects from the Sonic 1 Marble Zone are accessible via debug mode, albeit with corrupted tiles.
  • Playing this Zone after Green Hill Zone will keep the broken art from GHZ, but with a different palette.

Spring Yard Zone (Hidden Palace)

Aaaand time to cry once again.

Perhaps the most interesting Zone that was cut.

  • Act 1 seems to have been worked on while the monitors were still using their Sonic 1 mappings, which explains why there is a Tails 1-Up monitor early in Act 1.
  • There are dinosaur and bat badniks present here.
  • Various unused badniks can be placed with debug mode, including the piranha, Stego, Gator, early Octus, and early Aquis. Most have glitched sprites, although Pro Action Replay code 01C1D8:0007 will fix most of their graphics.
  • There is an emerald object which blocks a pipe to nowhere in Act 1. Many thought this was the Master Emerald due to being a large green emerald in a Zone called Hidden Palace, but it was actually supposed to be a breakable object like the rocks in Hill Top.
  • If Sonic spindashes into the emerald, he'll drop into the pipe below it. This was fixed by the Simon Wai build.
  • If normally playing Act 1, it stops prematurely due to a slope which is far too steep to climb. If you use debug mode to go past it, there's a little more to see – including a non-functioning water slide.
  • All of the debug mode objects (excluding rings and monitors) have broken previews.
  • Similarly to Green Hill Zone, the palette has one wrong color (a bright green that is gray in all other levels). However, nothing uses the single wrong color here.
  • Sonic's underwater palette is the same as Labyrinth Zone.
  • If you let the drowning countdown begin then jump out of the water, Labyrinth's music will play.
  • Acts 2 and 3 have not been worked on. Act 2 recycles object placement from GHZ Act 2. Act 3 uses GHZ Act 3's object placements.
  • Player 2 can control the water level by pressing Up and Down.
  • The Spring Yard Zone boss can be found in Act 3

Labyrinth Zone (???)

What was this intended to be...?
  • Uses Chemical Plant's tiles, Labyrinth's rippling, and Marble's ring layouts...and it's completely broken.
  • While there are some strips of "land" (garbage data), it is otherwise like Genocide City and Death Egg in the Simon Wai build.
  • If you enter Marble Zone first, then Labyrinth Zone Act 1 will load most of the level.
  • The boss in Act 3 is missing, but the boss music still plays regardless.

Star Light Zone (Emerald Hill)

The *other* reason Melissa Joan Hart was envied.

The most complete Zone in the prototype, and the only one playable without using the Level Select. On Nick Arcade, contestants played Act 1 and had to collect 25 rings in 30 seconds.

  • Tails is absent; considering Sonic loses rings when Tails gets hit, this was very likely done to help the players on Nick Arcade.
  • It, like the Simon Wai build, has the only complete Sonic 2 boss thus far. The boss' explosion graphics are from Sonic 1.
  • Both Acts have different layouts, with Act 1's even moreso.
  • Contains the unused charging snail enemy from the later Simon Wai prototype.
  • Spikes that hang from the ceiling don't hurt Sonic if he jumps up to touch them.
  • Eggman's vehicle is already parked on the spot instead of entering from the right.
  • If the boss is facing left when it finishes exploding, it will change direction and face right as Eggman begins to escape.

Scrap Brain Zone (Hill Top)

This is clearly not technological.
  • The background does not animate.
  • The lifts are not fully functional yet, and do not drop like later builds.
  • The lava acts like regular land (i.e., cannot harm you at all).
  • The see-saws copy the center green orb for the weight instead of a flameless Sol, an element seen in a Sega Visions magazine preview:
Nick Arcade Proto Later Protos/Final
Innocent enough... Seizure potential: Moderate
  • Act 1's layout is complete, but the playfield limit has not yet been changed from Sonic 1. As a result, the Act cannot be finished because there is a spin pipe leading to death.
  • Act 2 cannot be completed with Sonic, because if the camera moves past X coordinate $1EB0, the game tries to load pattern cue $1E, which references data that is not a pattern load cue, causing the game to read garbage art data as a pointer and subsequently crash. As the event handler is specifically looking for Player 1's camera X position to trigger the event, however, Tails can complete the Act.
  • Removing the art load cue will allow Sonic to go further into the level, but shortly after that it simply stops abruptly. After the point that triggered the art cue is reached, the player can fall off the level to go to Act 3, a remnant from Scrap Brain Act 2 in Sonic 1.
Look guys, it's Genocide City *shot*
  • In Sonic 1, Scrap Brain Act 3 is actually Labyrinth Act 4. Labyrinth in this build is broken and uses Marble/Chemical Plant's graphics, so this level does as well. The exit to Final Zone is still present, and can be activated by hugging the top of the level and moving to the right via Debug Mode.
    • It should be noted that Act 3, if accessed through Act 2 by the ways listed above, will not be empty like Labyrinth Zone, but have a layout consisting of garbage data and Chemical Plant graphics.

Final Zone

Time to beat the Eggman, right? Uh...no.
  • Hill Top's graphics are used. The Sonic 1 Final Zone used the graphics of Scrap Brain, so this is unsurprising.
  • Going left drops you over an edge to a dead end.
  • Moving too far to the right crashes the game with a purple screen. This is because the game tries to load the art for the final boss by loading art cue $1F which does exist, but references data that is not a pattern load cue, causing the game to read garbage art data as a pointer and lock up.
  • Through hacking to disable the boss' art load request, it is possible to play further into the Zone. The Sonic 1 final boss' object number will load, but the boss' code is gone and replaced with a dummy object. Because of this, there's nothing to fight and hence no way to reach the "ending".
  • The level layout is actually that of Hill Top Act 1, with no rings or objects. Playing past the point where Act 1 would normally end will simply lead you to a pit. Going past the pit with debug mode will lead to a bunch of nothing before the beginning of the level layout loops over.
  • Beating the level by hacking a signpost into it sends you to the SEGA screen. This is consistent with Sonic 1, as the ending could only be triggered by beating the boss.

Special Stage

  • The game crashes while loading due to bad pointers and missing art, but most of the code is based on the Sonic 1 Special Stage.

Unused Sprites

Hmmm...
To do:
There's almost certainly more.
Sprite Name Description
S2betaspring.png
Spring Monitor icon This is always loaded in the VRAM in the levels, but you never actually see it. Presumably, it would have worked like the Pogo Spring monitor in the much later Sonic Triple Trouble.
Sonic2proto LookingAtYou.png
Sonic facing the player Unused sprites of Sonic turning to face the player directly. Purpose unknown.
Sonic on a ledge An unused animation of Sonic balancing on a ledge. Looks similar to an animation used for the same purpose in Sonic 3.
Sonic2Beta SonicPull.gif
Sonic pulling something An unused animation of Sonic pulling something. Puzzle elements involving pulling things may have been planned for.
Sonic2 NickArcade lamppost.gif
Checkpoint A checkpoint which looks very different compared to the final, but acts the same as the Sonic the Hedgehog checkpoints. You can place this with debug mode in Emerald Hill Zone and Hill Top Zone. Green Hill Zone uses checkpoints, but their graphics are garbled in that Zone.
Sonic2pre hpzbg.png
Early HPZ background remains Used in an early version of the Hidden Palace background seen in a mockup screenshot, but not in any real (known) prototype.
Piranha Badnik A piranha-type badnik which attacks Sonic in an arc-like motion. It is placeable with debug in Hidden Palace Zone, but its graphics are garbled without using a PAR code.
Gator A crocodile-type badnik. This badnik would have appeared in Dust Hill Zone according to a mock-up screenshot and would slowly move back and forth, opening its jaws when it got close to Sonic. It is placeable with debug in Hidden Palace Zone, but its graphics are garbled without using a PAR code.
Stego A triceratops-type badnik. This badnik would have appeared in Hidden Palace Zone according to a mock-up screenshot and would slowly move back and forth, and when Sonic approaches it it would activate its thrusters and move faster much like the snail badnik. In a later prototype, it was redrawn to use Sonic's palette. It is placeable with debug in Hidden Palace Zone, but its graphics are garbled without using a PAR code.
(Source: Sonic Retro)

Object List/Source Code

A humongous object list can be found inside the ROM, along with some raw source code.

	addsym
	nolist
	include	"equ.lib"
	include	"macro.lib"
	list

	xref	colichgpat
	xref	ringpat,itempat,butapat,kanipat,hachipat,togepat
	xref	fishpat,fish2pat,mogurapat,shimapat2,jyamapat
	xref	musipat,sjumppat,kamerepat,arumapat,kagebpat,ballpat
	xref	firepat,fblockpat,signalpat,bobinpat,yoganpat,yogan2pat
	xref	usapat,yadopat,boxpat,bryukapat,daipat,break2pat,yogancpat
	xref	batpat,z5daipat,dai2pat,switch2pat,z4daipat
	xref	elevpat,pedalpat,steppat,funpat,sisoopat,hassyapat
	xref	brobopat,unipat,yaripat,udaipat,dai3pat,kazaripat,kassyapat
	xref	awapat,mizupat,boupat,benpat,fetamapat,mawarupat,hagurumapat
	xref	patapat,yukafpat,nokopat,dai4pat,doorpat,yukaepat,fire6pat
	xref	elepat,yukaipat,scolipat,imopat,savepat,bigringpat,btenpat
	xref	actionsub,actwkchk,frameout,playpat,dualmodesub
	xref	flicpat,usagipat,pengpat,azarpat,fbutapat,niwapat,risupat

	xref	kaitenpat,prodaipat,buranko0dpat
	xref	frntlitpat,gempat,wfallpat,pltfrmpat
	xref	takipat,banepat,dai00pat

	xref	redzpat,bfishpat,seahorsepat,horsepat
	xref	stegopat,wasppat,gatorpat,bbatpat,octpat,wfish2pat,snailpat

	xdef	edit

;------------------------------------------------------------------------------
edit:
	moveq	#0,d0
	move.b	editmode,d0
	move.w	edit_move_tbl(pc,d0.w),d1
	jmp	edit_move_tbl(pc,d1.w)
edit_move_tbl:
	dc.w	editinit-edit_move_tbl
	dc.w	editmove-edit_move_tbl
editinit:
	addq.b	#word,editmode
	move.w	scralim_up,editstack
	move.w	scralim_n_down,editstack2
	move.w	#$0000,scralim_up
	move.w	#$0720,scralim_n_down
	andi.w	#$07ff,playerwk+yposi
	andi.w	#$07ff,scra_v_posit
	andi.w	#$03ff,scrb_v_posit
	move.b	#0,patno(a0)
	move.b	#0,mstno(a0)
	cmpi.b	#spgamemd,gmmode
	bne.b	.jump0
*	move.b	#7-1,stageno
*	move.w	#$000,rotspd
*	move.w	#$000,rotdir
	moveq	#7-1,d0
	bra.b	.jump1
.jump0:
	moveq	#0,d0
	move.b	stageno,d0
.jump1:
	lea	edittbl,a2
	add.w	d0,d0
	adda.w	(a2,d0.w),a2
	move.w	(a2)+,d6
	cmp.b	editno,d6
	bhi.b	.jump
	move.b	#0,editno
.jump:
	bsr.w	editpatchg
	move.b	#12,edittimer
	move.b	#1,edittimer+1
editmove:
	moveq	#7-1,d0
	cmpi.b	#spgamemd,gmmode
	beq.b	.jump
	moveq	#0,d0
	move.b	stageno,d0
.jump:
	lea	edittbl,a2
	add.w	d0,d0
	adda.w	(a2,d0.w),a2
	move.w	(a2)+,d6
	bsr.w	editwalk
*	bsr.w	dirsprset
	jmp	actionsub
editwalk:
	moveq	#0,d4
	move.w	#1,d1
	move.b	swdata1+1,d4
	andi.w	#$0f,d4
	bne.b	.jump0
	move.b	swdata1,d0
	andi.w	#$0f,d0
	bne.b	.jump
	move.b	#12,edittimer
	move.b	#$0f,edittimer+1
	bra.w	.lend
.jump:
	subq.b	#1,edittimer
	bne.b	.jump1
	move.b	#1,edittimer
	addq.b	#1,edittimer+1
*	cmpi.b	#255,edittimer+1
	bne.b	.jump0
	move.b	#255,edittimer+1
.jump0:
	move.b	swdata1,d4
.jump1:
	moveq	#0,d1
	move.b	edittimer+1,d1
	addq.w	#1,d1
	swap	d1
	asr.l	#4,d1
	move.l	yposi(a0),d2
	move.l	xposi(a0),d3
	btst.l	#0,d4			*swdata+0
	beq.b	.jump2
	sub.l	d1,d2			*yposi
	bcc.b	.jump2
	moveq	#0,d2
.jump2:
	btst.l	#1,d4			*swdata+0
	beq.b	.jump3
	add.l	d1,d2			*yposi
	cmpi.l	#$7ff0000,d2
	bcs.b	.jump3
	move.l	#$7ff0000,d2
.jump3:
	btst.l	#2,d4			*swdata+0
	beq.b	.jump4
	sub.l	d1,d3			*xposi
	bcc.b	.jump4
	moveq	#0,d3
.jump4:
	btst.l	#3,d4			*swdata+0
	beq.b	.jump5
	add.l	d1,d3			*xposi
.jump5:
	move.l	d2,yposi(a0)
	move.l	d3,xposi(a0)
.lend:
	btst.b	#6,swdata1+0
	beq.b	.jump7
	btst.b	#5,swdata1+1		* c button check
	beq.b	.jump77
	subq.b	#1,editno
	bcc.b	.jump6
	add.b	d6,editno
	bra.b	.jump6
.jump77:
	btst.b	#6,swdata1+1
	beq.b	.jump7
	addq.b	#1,editno
	cmp.b	editno,d6
	bhi.b	.jump6
	move.b	#0,editno
.jump6:
	bra.w	editpatchg
.jump7:
	btst.b	#5,swdata1+1		* c button check
	beq.b	.jump8
	jsr	actwkchk
	bne.b	.worknai		;z=0:ok	z=1:no
	move.w	xposi(a0),xposi(a1)
	move.w	yposi(a0),yposi(a1)
	move.b	patbase(a0),actno(a1)
	move.b	actflg(a0),actflg(a1)
	move.b	actflg(a0),cddat(a1)
	andi.b	#$7f,cddat(a1)
	moveq	#0,d0
	move.b	editno,d0
	lsl.w	#3,d0
	move.b	4(a2,d0.w),userflag(a1)
	rts
.worknai:
.jump8:
	btst.b	#4,swdata1+1		* b button check
	beq.b	.jump9
	moveq	#0,d0
	move.w	d0,editmode
	move.l	#playpat,playerwk+patbase
	move.w	#$0780,playerwk+sproffset
	tst.w	dualmode		; dual mode check
	beq.b	.end
	move.w	#$0780/2,playerwk+sproffset
.end:
	move.b	d0,playerwk+mstno
	move.w	d0,xposi+2(a0)
	move.w	d0,yposi+2(a0)
	move.w	editstack,scralim_up
	move.w	editstack2,scralim_n_down
	cmpi.b	#spgamemd,gmmode
	bne.b	.jump9
*	clr.w	rotdir
*	move.w	#$040,rotspd
*	move.l	#playpat,playerwk+patbase
*	move.w	#$0780,playerwk+sproffset
	move.b	#02,playerwk+mstno
	bset.b	#cd_ball,playerwk+cddat
	bset.b	#cd_jump,playerwk+cddat
.jump9:
	rts
editpatchg:
	moveq	#0,d0
	move.b	editno,d0
	lsl.w	#3,d0
	move.l	0(a2,d0.w),patbase(a0)
	move.w	6(a2,d0.w),sproffset(a0)
	move.b	5(a2,d0.w),patno(a0)
*	move.b	4(a2,d0.w),userflag(a0)
	bsr.w	dualmodesub
	rts

dcblw	macro	\1,\2,\3,\4,\5
	dc.l	(\1)*$1000000+(\2)
	dc.w	(\4)+(\5)*$100
	dc.w	(\3)
	endm

edittbl:
	dc.w	edit1tbl-edittbl
	dc.w	edit2tbl-edittbl
	dc.w	edit3tbl-edittbl
	dc.w	edit4tbl-edittbl
	dc.w	edit5tbl-edittbl
	dc.w	edit6tbl-edittbl
	dc.w	edit7tbl-edittbl
edit1tbl:
	dc.w	14
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	kani_act,kanipat,$0400,0,$00		;3:
	dcblw	hachi_act,hachipat,$0444,0,$00		;4:
	dcblw	fish_act,fishpat,$0470,0,$00		;5:
	dcblw	toge_act,togepat,$04a0,0,$00		;6:
	dcblw	shima_act,shimapat2,$4000,0,$00		;7:
	dcblw	jyama_act,jyamapat,$66c0,0,$00		;8:
	dcblw	musi_act,musipat,$04e0,0,$00		;9:
	dcblw	sjump_act,sjumppat,$04a8,0,$00		;10:
	dcblw	kamere_act,kamerepat,$249b,0,$00	;11:
	dcblw	kageb_act,kagebpat,$434c,0,$00		;12:
	dcblw	save_act,savepat,$26bc,0,$01		;13:
	dcblw	colichg_act,colichgpat,$26bc,0,$00	;14:

edit2tbl:
edit3tbl:
;zone0d
	dc.w	07
	dcblw	ring_act,ringpat,$26bc,0,$00		;01:
	dcblw	item_act,itempat,$0680,0,$00		;02:
	dcblw	sjump_act,sjumppat,$04a8,0,$00		;03:
	dcblw	colichg_act,colichgpat,$07bc,0,$00	;04:
	dcblw	kaiten_act,kaitenpat,$e000,0,$00	;05:
	dcblw	prodai_act,prodaipat,$e418,0,$00	;06:
	dcblw	buranko_act,buranko0dpat,$2418,0,$08	;07:

edit4tbl:
;zone00
	dc.w	18
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	save_act,savepat,$047c,0,$01		;3:

	dcblw	colichg_act,colichgpat,$26bc,0,$00	;6:
	dcblw	taki_act,takipat,$23ae,0,$00		;7:
	dcblw	taki_act,takipat,$23ae,3,$02		;7:
	dcblw	shima_act,dai00pat,$4000,0,$01		;8:
	dcblw	shima_act,dai00pat,$4000,1,$0a		;8:
	dcblw	toge_act,togepat,$2434,0,$00		;10:
	dcblw	sisoo_act,sisoopat,$03ce,0,$00		;9:

	dcblw	sjump_act,banepat,$045c,0,$80		;3: banev
	dcblw	sjump_act,banepat,$0470,3,$90		;3: baneh
	dcblw	sjump_act,banepat,$045c,6,$a0		;3: banevr
	dcblw	sjump_act,banepat,$043c,7,$30		;3: bane45
	dcblw	sjump_act,banepat,$043c,10,$40		;3: bane45r

	dcblw	wasp_act,wasppat,$03e6,0,$00		;25   ""    ""
	dcblw	snail_act,snailpat,$0402,0,$00		;25   ""    ""
	dcblw	wfish2_act,wfish2pat,$041c,0,$00	;21   ""    ""



	dcblw	redz_act,redzpat,$0500,0,$00		;20: will change
	dcblw	bfish_act,bfishpat,$2530,0,$00		;21   ""    ""
	dcblw	seahorse_act,horsepat,$2570,0,$00	;22   ""    ""
	dcblw	skyhorse_act,horsepat,$2570,0,$00	;23   ""    ""
	dcblw	stego_act,stegopat,$23c4,0,$00		;24   ""    ""
	dcblw	wasp_act,wasppat,$032c,0,$00		;25   ""    ""
	dcblw	gator_act,gatorpat,$2300,0,$00		;26   ""    ""
	dcblw	bbat_act,bbatpat,$2350,0,$00		;27   ""    ""
	dcblw	oct_act,octpat,$238a,0,$00		;28   ""    ""

edit5tbl:
edit6tbl:
edit7tbl:
;zone08
	dc.w	15
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:

	dcblw	bgspr_act,frntlitpat,$e485,3,$21	;3:
	dcblw	wfall_act,wfallpat,$e415,4,$04		;4:
	dcblw	break_act,pltfrmpat,$4475,0,$00		;5:
	dcblw	colichg_act,colichgpat,$26bc,0,$00	;6:

	dcblw	redz_act,redzpat,$0500,0,$00		;20: will change
	dcblw	bfish_act,bfishpat,$2530,0,$00		;21   ""    ""
	dcblw	seahorse_act,horsepat,$2570,0,$00	;22   ""    ""
	dcblw	skyhorse_act,horsepat,$2570,0,$00	;23   ""    ""
	dcblw	stego_act,stegopat,$23c4,0,$00		;24   ""    ""
	dcblw	wasp_act,wasppat,$032c,0,$00		;25   ""    ""
	dcblw	gator_act,gatorpat,$2300,0,$00		;26   ""    ""
	dcblw	bbat_act,bbatpat,$2350,0,$00		;27   ""    ""
	dcblw	oct_act,octpat,$238a,0,$00		;28   ""    ""

;------------------------------------------------------------------------------
	align
;------------------------------------------------------------------------------
	end


edit2tbl:
	dc.w	25
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	sjump_act,sjumppat,$0523,0,$00		;3:
	dcblw	fish2_act,fish2pat,$2486,0,$08		;4:
	dcblw	mogura_act,mogurapat,$84a6,2,$00	;5:
	dcblw	yari_act,yaripat,$03cc,0,$00		;6:
	dcblw	yari_act,yaripat,$03cc,3,$02		;7:
	dcblw	box_act,boxpat,$43de,0,$00		;8:
	dcblw	switch2_act,switch2pat,$0513,0,$00	;9:
	dcblw	toge_act,togepat,$051b,0,$00		;10:
	dcblw	dai_act,udaipat,$43bc,0,$04		;11:
	dcblw	dai3_act,dai3pat,$43e6,0,$01		;12:
	dcblw	dai3_act,dai3pat,$43e6,1,$13		;13:
	dcblw	dai3_act,dai3pat,$43e6,0,$05		;14:
	dcblw	kazari_act,kazaripat,$443e,0,$00	;15:
	dcblw	dai3_act,dai3pat,$43e6,2,$27		;16:
	dcblw	dai3_act,dai3pat,$43e6,3,$30		;17:
	dcblw	kassya_act,kassyapat,$03f6,0,$7f	;18:
	dcblw	uni_act,unipat,$0467,0,$00		;19:
	dcblw	awa_act,awapat,$8348,19,$84		;20:
	dcblw	mizu_act,mizupat,$c259,2,$02		;21:
	dcblw	mizu_act,mizupat,$c259,9,$09		;22:
	dcblw	bou_act,boupat,$43de,0,$00		;23:
	dcblw	ben_act,benpat,$4328,0,$02		;24:
	dcblw	save_act,savepat,$26bc,0,$01		;25:

*	dcblw	dai4_act,dai4pat,$41f0,4,$80		;25:
edit3tbl:
	dc.w	18
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	hachi_act,hachipat,$0444,0,$00		;3:
	dcblw	toge_act,togepat,$051b,0,$00		;4:
	dcblw	sjump_act,sjumppat,$0523,0,$00		;5:
	dcblw	mfire_act,firepat,$0345,0,$00		;6:
	dcblw	fblock_act,fblockpat,$4000,0,$00	;7:
	dcblw	myogan_act,yoganpat,$63a8,0,$00		;8:
	dcblw	yogan2_act,yogan2pat,$63a8,0,$00	;9:
	dcblw	box_act,boxpat,$42b8,0,$00		;10:
	dcblw	yado_act,yadopat,$247b,0,$00		;11:
	dcblw	bryuka_act,bryukapat,$42b8,0,$00	;12:
	dcblw	dai_act,daipat,$02b8,0,$00		;13:
	dcblw	break2_act,break2pat,$62b8,0,$00	;14:
	dcblw	yoganc_act,yogancpat,$8680,0,$00	;15:
	dcblw	bat_act,batpat,$04b8,0,$00		;16:
	dcblw	imo_act,imopat,$24ff,0,$00		;17:
	dcblw	save_act,savepat,$26bc,0,$01		;18:
edit4tbl:
	dc.w	15
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	elev_act,elevpat,$4000,0,$00		;3:
	dcblw	break2_act,break2pat,$44e0,2,$00	;4:
	dcblw	shima_act,z4daipat,$4000,0,$00		;5:
	dcblw	pedal_act,pedalpat,$4000,0,$00		;6:
	dcblw	step_act,steppat,$4000,0,$00		;7:
	dcblw	fun_act,funpat,$43a0,0,$00		;8:
	dcblw	sisoo_act,sisoopat,$0374,0,$00		;9:
	dcblw	sjump_act,sjumppat,$0523,0,$00		;10:
	dcblw	mfire_act,firepat,$0480,0,$00		;11:
	dcblw	bgspr_act,hassyapat,$44d8,0,$00		;12:
	dcblw	brobo_act,brobopat,$0400,0,$00		;13:
	dcblw	uni_act,unipat,$2429,0,$00		;14:
	dcblw	save_act,savepat,$26bc,0,$01		;15:
edit5tbl:
	dc.w	15
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	toge_act,togepat,$051b,0,$00		;3:
	dcblw	sjump_act,sjumppat,$0523,0,$00		;4:
	dcblw	aruma_act,arumapat,$04b8,0,$00		;5:
	dcblw	signal_act,signalpat,$0000,0,$00	;6:
	dcblw	bobin_act,bobinpat,$0380,0,$00		;7:
	dcblw	kani_act,kanipat,$0400,0,$00		;8:
	dcblw	hachi_act,hachipat,$0444,0,$00		;9:
	dcblw	yado_act,yadopat,$247b,0,$00		;10:
	dcblw	shima_act,z5daipat,$4000,0,$00		;11:
	dcblw	dai2_act,dai2pat,$4000,0,$00		;12:
	dcblw	switch2_act,switch2pat,$0513,0,$00	;13:
	dcblw	imo_act,imopat,$24ff,0,$00		;14:
	dcblw	save_act,savepat,$26bc,0,$01		;15:
edit6tbl:
	dc.w	29
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	item_act,itempat,$0680,0,$00		;2:
	dcblw	brobo_act,brobopat,$0400,0,$00		;3:
	dcblw	uni_act,unipat,$0429,0,$00		;4:
	dcblw	imo_act,imopat,$22b0,0,$00		;5:
	dcblw	buranko_act,fetamapat,$4391,2,$07	;6:
	dcblw	haguruma_act,hagurumapat,$c344,00,$e0	;7:
	dcblw	dai_act,daipat,$22c0,2,$28		;8:
	dcblw	switch2_act,switch2pat,$0513,0,$00	;9:
	dcblw	pata_act,patapat,$4492,0,$03		;10:
	dcblw	pata_act,yukafpat,$04df,0,$83		;11:
	dcblw	noko_act,nokopat,$43b5,0,$02		;12:
	dcblw	break2_act,break2pat,$43f5,0,$00	;13:
	dcblw	dai_act,daipat,$4460,3,$39		;14:
	dcblw	dai4_act,dai4pat,$22c0,0,$00		;15:
	dcblw	door_act,doorpat,$42e8,0,$00		;16:
	dcblw	dai4_act,dai4pat,$22c0,1,$13		;17:
	dcblw	noko_act,nokopat,$43b5,0,$01		;18:
	dcblw	dai4_act,dai4pat,$22c0,1,$24		;19:
	dcblw	noko_act,nokopat,$43b5,2,$04		;20:
	dcblw	dai4_act,dai4pat,$22c0,1,$34		;21:
	dcblw	yukae_act,yukaepat,$44c3,0,$00		;22:
	dcblw	fire6_act,fire6pat,$83d9,0,$64		;23:
	dcblw	fire6_act,fire6pat,$83d9,11,$64		;24:
	dcblw	ele_act,elepat,$047e,0,$04		;25:
	dcblw	yukai_act,yukaipat,$42f0,0,$00		;26:
	dcblw	scoli_act,scolipat,$8680,0,$11		;27:
	dcblw	buta_act,butapat,$2302,0,$04		;28:
	dcblw	save_act,savepat,$26bc,0,$01		;29:

*	dcblw	ring_act,playpat,$0780,50,$00		;28:
*	dcblw	usa_act,usapat,$0448,0,$00		;5:
*	dcblw	mawaru_act,mawarupat,$4348,16,$00	;7:

edit7tbl:
	dc.w	02	*13
	dcblw	ring_act,ringpat,$26bc,0,$00		;1:
	dcblw	ring_act,ringpat,$26bc,8,$00		;2:
*	dcblw	bobin_act,bobinpat,$0380,0,$00		;2:
*	dcblw	usagi_act,flicpat,$05a0,0,$0a		;3
*	dcblw	usagi_act,flicpat,$05a0,0,$0b		;4
*	dcblw	usagi_act,flicpat,$05a0,0,$0c		;5
*	dcblw	usagi_act,usagipat,$0553,0,$0d		;6
*	dcblw	usagi_act,usagipat,$0553,0,$0e		;7
*	dcblw	usagi_act,pengpat,$0573,0,$0f		;8
*	dcblw	usagi_act,pengpat,$0573,0,$10		;9
*	dcblw	usagi_act,azarpat,$0585,0,$11		;10
*	dcblw	usagi_act,fbutapat,$0593,0,$12		;11
*	dcblw	usagi_act,niwapat,$0565,0,$13		;12
*	dcblw	usagi_act,risupat,$05b3,0,$14		;13

Something interesting to notice is this group of code:

	dcblw	redz_act,redzpat,$0500,0,$00		;20: will change
	dcblw	bfish_act,bfishpat,$2530,0,$00		;21   ""    ""
	dcblw	seahorse_act,horsepat,$2570,0,$00	;22   ""    ""
	dcblw	skyhorse_act,horsepat,$2570,0,$00	;23   ""    ""
	dcblw	stego_act,stegopat,$23c4,0,$00		;24   ""    ""
	dcblw	wasp_act,wasppat,$032c,0,$00		;25   ""    ""
	dcblw	gator_act,gatorpat,$2300,0,$00		;26   ""    ""
	dcblw	bbat_act,bbatpat,$2350,0,$00		;27   ""    ""
	dcblw	oct_act,octpat,$238a,0,$00		;28   ""    ""

These lines of code are in the block that makes up Hidden Palace Zone's debug list from an earlier build. The content in the list appears to be identical to the actual compiled version in the ROM; however, it does give us information on the objects in the zone that may have been previously unknown:

  • Redz is the red T-rex badnik that appears in Hidden Palace Zone.
  • Bfish is the jumping fish badnik that was unused by the Simon Wai prototype.
  • Seahorse is Aquis, the seahorse badnik that was in the final game in Oil Ocean Zone.
  • Skyhorse is most likely the second Aquis object in Hidden Palace Zone's debug list (the version that shoots a harmless projectile).
  • Stego is the triceratops badnik that was unused by the Simon Wai prototype.
  • Wasp is Buzzer, the bee badnik that's in Emerald Hill Zone in all known versions of Sonic 2. In this prototype, it also has a home in Hidden Palace's debug list.
  • Gator is the alligator/crocodile badnik that is unused by the Simon Wai prototype.
  • Bbat is the dive-bombing bat that appears in Hidden Palace Zone.
  • Oct is Octus, the octopus badnik that was in the final game in Oil Ocean Zone.

These same lines are duplicated in the debug list for Emerald Hill, but unused because the game is told that Emerald Hill's debug list will have 18 entries, and the Hidden Palace enemies are all after entry number 18.

This chunk of uncompiled code also indicates that the Zone order present in this build was going to be changed even at this early stage. Emerald Hill's debug list is labeled as Zone 00, which is Green Hill in this build but Emerald Hill in later builds. Similarly, Hidden Palace is indicated as Zone 08, which is where it resides in later builds and the final.