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
This is a sub-page of Proto:Sonic the Hedgehog 2 (Genesis).
This prototype is documented on Hidden Palace.
| 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
| 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:
- 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 |
|---|---|
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 |
|---|---|---|
|
|
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
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
- 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)
| Please elaborate. Having more detail is always a good thing. Specifically: How is the prototype boss accessed? |
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)
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 (???)
- 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 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)
- 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 |
|---|---|
![]() |
![]() |
- 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.
- 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
- 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
| To do: There's almost certainly more. |
| Sprite | Name | Description |
|---|---|---|
| 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. | |
| 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. | |
| Sonic pulling something | An unused animation of Sonic pulling something. Puzzle elements involving pulling things may have been planned for. | |
| 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. | |
| 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. |
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.













