Proto:Sonic the Hedgehog 3
This page details one or more prototype versions of Sonic the Hedgehog 3.
This prototype is documented on Hidden Palace.
|Download Sonic the Hedgehog 3 (Nov 3, 1993 prototype)
File: Sonic the Hedgehog 3 (Nov 3, 1993 prototype).bin (2 MB) (info)
|This page or section needs more images. |
There's a whole lotta words here, but not enough pictures. Please fix this.
The November 3rd, 1993 prototype of Sonic the Hedgehog 3 was dumped on November 16, 2019, as the finale of Hidden Palace's Sonic Month. It is the first and currently the only true prototype of Sonic 3 to have been discovered, as all previous prerelease ROM images match the final. Although the EPROM labels claim a date of 3 November 1993, the ROM header suggests the data is actually from October.
The October date makes sense, given that this build is wildly incomplete for a game that was supposed to be finished by the end of November. It was made at a time where the game was starting to be split into two separate games. Differences include early sprites, palettes, character abilities, missing Act transitions, and different music that would later be repurposed for the Sonic & Knuckles Collection on PC. Flying Battery Zone (which was moved to Sonic & Knuckles) is still present by default, and Lava Reef also exists deep within the ROM. It's also horrendously buggy, especially in regards to music.
The prototype seems to be the same one that was showcased in Sega Magazine in December 1993, given that all of the screenshots are 1:1 matches of what's seen in this prototype.
- 1 Notes
- 2 Gameplay Differences
- 3 Graphical Differences
- 4 Audio Differences
- 5 Title Screen
- 6 Level Select
- 7 Stage Differences
- 8 Unused Objects and Enemies
- 9 Unused Graphics
- 10 Data Leftover
- 11 Source Code
- While the EPROMs date the ROM to November 3rd, the header suggests that it was built in October.
- Leftovers from Star Trek: The Next Generation, and even earlier builds of Sonic the Hedgehog 3 linger at the end of the ROM.
- The prototype is region free, unlike the final.
- Sonic has a Drop-Dash-esque move that can be performed by jumping while pressing Up.
- Elemental shields lack their specific effects.
- Special Stage rings aren't present.
- The insta-shield isn't present yet.
- Even though sparkles appear above checkpoints when Sonic has 50 rings, the bonus stages are inaccessible through normal play.
- It's very easy to clip into walls due to unfinished collision.
- Tails will fly instead of swimming when attempting to fly underwater and is also capable of carrying Sonic underwater.
- Tails cannot get tired from flying or swimming.
- Super Sonic has been partially implemented, and has the ability to shoot rings, which was removed from the final.
- The demo of Angel Island Zone Act 1 is a bit different, and also desyncs.
- The debug mode "animation test" accessed by pressing B + C in debug mode has not been implemented.
- Many stage transitions have not been properly implemented yet, so the level select is required to continue to the next zone in most cases.
- Objects that Sonic can hang onto still act like Wing Fortress's from Sonic 2 in that Sonic won't curl into a ball when jumping off, and his animation stays the same.
- Overall, the Competition Mode levels are more complete than the single-player ones and even feature the final game's player sprites. There are still some things that were changed, however.
- The Grand Prix and Time Trial modes (as well as the monitor options) do not exist as a result of a lack of menu for the mode.
- The prototype features little markers near the black line that show the positions of the two players. They often change between three sprites for unknown reasons. These were removed in the final game, yet their sprites still exist within the data.
- The lap counter uses the blue/yellow palette of the "TIME" text, instead of the final's red/white palette.
- It's possible to complete a lap by jumping over the goal post.
- The game will declare a GOAL at lap 6 rather than the final's lap 5, but the race never ends. As a result, races can go all the way up to Lap 9, which results in it rolling over to 0 and continuing from there.
Coding for Super Sonic exists even though the Special Stages haven't been created yet, thereby preventing you from gaining any Chaos Emeralds. He can only be accessed by destroying an S monitor. Most of the code is reused from Sonic 2, with a few adjustments: the invincibility music plays instead of using a unique track, and the palette cycling has been adjusted to only use three colors in Sonic's palette instead of the four colors that Sonic 2 required. However, the actual colors used are still based on Sonic 2's palette format (Where the darkest blue in Sonic's palette is indexed first, followed by progressively lighter shades of blue) instead of Sonic the Hedgehog 3's format (Where the lightest blue color is indexed first, followed by darker shades). As such, the palettes for both Super Sonic and Sonic's palette after the transformation runs out are glitched.
- Sonic and Tails' sprites are the same as the ones in Sonic 2, albeit updated for Sonic the Hedgehog 3's palette with some new sprites.
- Fire shields always overlap the player.
- The HUD numbers have some shading that were removed in the final. The shine on the HUD text is also larger.
- Neither Sonic nor Tails have victory poses, instead they use their "hurt" sprites upon finishing an act.
- The bubble shield uses simpler graphics compared to the final.
- The invincibility stars are missing, but they do show up using the fire shield's graphics if the player has a fire shield.
- Some frames for the lightning shield haven't been positioned properly.
- The game-over graphic is still the Sonic 2 sprite, and thus looks incorrect with the palette used in Sonic the Hedgehog 3.
- Title cards for levels use a different palette, and graphics from the stage load early, making the title cards garbled after a few seconds.
- A majority of object palettes are not finalized.
- The Speed Shoes and Heavy Shoes icons in Competition mode have different icons:
Between Sonic the Hedgehog 2 and Sonic the Hedgehog 3, the sound driver was completely replaced. In this prototype, the replacement driver is in an early state where it hasn't had features from the previous driver re-implemented yet, and it seems to suffer from some glaring bugs. There are also some other general differences.
- Sounds often bug out and sustain until either the game is paused or something else plays on that sound channel.
- Various objects don't play the correct sound effect:
- The underwater "alarm" sound uses a completely different sound - likely just an incorrect ID assignment.
- Many bosses don't play sounds. This includes explosions, zooming, etc. They play one sound when being defeated.
- Collecting a ring only plays the sound for the right speaker, and doesn't alternate between the ones for the right and left (despite both sounds being present).
- The Spin Dash plays the rolling sound, much like Sonic the Hedgehog Genesis as well as some of the Sonic 2 prototypes.
- Playing a theme that would interrupt the stage theme prevents it from reloading.
- Beating an act doesn't play the act-clear jingle, it instead continues playing the stage theme.
- The Speed Shoes play the invincibility theme rather than speeding up the music - and it does not cut back to the level music when the effect ends.
- The Sonic the Hedgehog 3 miniboss theme does not exist in this prototype. In the slot $2E, where the final Sonic the Hedgehog 3 miniboss theme would be, this prototype contains an SMPS rendition of the unused theme from the PC version.
- The Sonic & Knuckles miniboss theme, located at sound test slot $18 in this prototype and the final release of Sonic 3 alone, plays when fighting minibosses instead of using slot $2E.
- A small remnant of this exists in the final game while fighting the bosses in Hydrocity Zone; leaving the water while the drowning countdown plays will result in the Sonic and Knuckles miniboss theme playing instead of the Sonic the Hedgehog 3 one. This was fixed in Sonic the Hedgehog 3 & Knuckles with the Big Shaker fight, but not with the Robotnik one.
- Interestingly, certain tracks are Genesis compositions of their themes in Sonic & Knuckles Collection, suggesting those may have been originally intended to be used instead of the final tracks. The MIDI tracks in that rerelease often match up better with these early music versions as well, indicating that all the MIDI music was likely ported from a prerelease build rather than the final game where available.
- The pieces of music which are recognizably the same tunes as those in the final Genesis release, rather than entirely different tracks which were used in the PC version, still contain some differences.
- Some instrumentation in nearly all of them is noticeably different from the final. Specifically, the instruments used for Angel Island act 2, both acts of Flying Battery, both acts of Mushroom Valley, Lava Reef act 2, Sky Sanctuary, Doomsday, Balloon Park, Desert Palace, and Chrome Gadget are audibly different, likely because the sounds used there in the final are unfinished and may not even exist yet.
- The Angel Island Zone act 2 theme is missing a few notes.
- The Doomsday Zone theme seems to be incomplete, as its Square/Saw Wave instrument sound is likely meant to be quieter.
|Sound ID||Name||November 3||Final||Sonic & Knuckles Collection|
|$01||Angel Island Zone Act 1|
|$02||Angel Island Zone Act 2|
|$07||Carnival Night Zone Act 1|
|$08||Carnival Night Zone Act 2|
|$09||Flying Battery Zone Act 1|
|$0A||Flying Battery Zone Act 2|
|$0B||IceCap Zone Act 1|
|$0C||IceCap Zone Act 2|
|$0D||Launch Base Zone Act 1|
|$0E||Launch Base Zone Act 2|
|$0F||Mushroom Valley Zone Act 1|
|$10||Mushroom Valley Zone Act 2|
|$13||Lava Reef Zone Act 1|
|$14||Lava Reef Zone Act 2|
|$15||Sky Sanctuary Zone|
|$1A||The Doomsday Zone|
|$22||Desert Palace Zone|
|$23||Chrome Gadget Zone|
|$26||Sonic the Hedgehog 3 Credits|
|$2E||Unused||(No equivalent music is in the final game.)|
- The song used for the level select ($2F) does not glitch after listening to it for an extended amount of time, unlike in the final version of Sonic 3.
- The unused theme from the PC game is also present as slot $2E, which is where the Sonic the Hedgehog 3 miniboss theme is in the final release. In Sonic & Knuckles and Sonic 3 & Knuckles, this slot contains a duplicate of the Sonic & Knuckles miniboss theme, which is used instead of slot $18 to play music for the minibosses. This renders slot $18 unused in all final retail releases of Sonic 3, Sonic & Knuckles, & Sonic 3 & Knuckles except for Sonic & Knuckles Collection.
The title screen uses some very, very basic graphics. Specific visual differences include:
- There's no background at all - the final adds a nice skyline of Angel Island Zone. This also means no Tails or Tornado.
- The palettes appear to be broken in some fashion. The logo banner is changed from a light blue/white to a red/white color scheme, and the logo itself was changed from dark blue with orange outlines (the way the text was presented on the box art for previous titles) to yellow with dark blue outlines. There's also no TM next to the banner.
- The model for the ring and Sonic himself seems to be the same as the final, but the ring's positioning as well as the lighting were updated. The final render makes better use of the color space, since it dithers colors where the proto render doesn't. Sonic also isn't animated, though the banner still bounces up and down. The rest of his body is present below the ring, unlike the final.
- Incidentally, the text reading "Sonic the Hedgehog" below the logo is finalized - this simple text carried its way into the final build of the game.
- The Copyright 1994 SEGA text is absent, which is likely more of a given.
- Entering the button combination Up, Up, Down, Down, Up, Up will enable Debug Mode.
- There are no menu options. Pressing Start automatically sends the player to the Level Select.
- Using the patch code FFFFD0:0000 will disable Level Select. Doing so will allow the game to immediately start on Zone 1 as in Sonic 1 and 2. This does not disable the soft reset (pause, A) or frame advance (pause, B) functions, however.
Playing as Tails or Knuckles
You can play as different characters by pressing the following button combinations at the title screen:
- Sonic + Tails: A + Start
- Sonic alone: B + Start
- Tails alone: C + Start
You can also play as different characters by using the cheat codes FFEF4C:000X FFFF08:000X FFFF0A:000X and replacing the X with one of the following numbers:
- 0 - Sonic & Tails
- 1 - Sonic
- 2 - Tails
- 3 - Knuckles (will use Tails' sprites instead)
Tails and Knuckles have graphical problems with their end-level Sign Posts they beat a level, however;
|Tails' Sign Post||Knuckles' Sign Post|
- When playing as Tails, the Sign Post will display an image of a blue Knuckles instead of Tails' image.
- Knuckles has data in the game and his name card is still present, though when playing as him the Sign Post will load Dr. Robotnik's image instead of Knuckles' image.
- When playing as Knuckles, the player object doesn't correctly set the collision plane when spawned, making navigating the stages very difficult. Setting memory address FFB046 to 0x0C will fix this.
The level select is almost the same as the final game. It plays no music, rendering the File Select theme unused.
Just like in the final game, none of the S&K zones are selectable by default (with the exception of Flying Battery Zone). Unlike in the final game, all bonus stages are accessible (the last 2P VS act goes to the gumball machine, while the two "Bonus" acts go to the Sonic & Knuckles bonus stages). The PAR Codes below can be used to regain access to these zones.
|Zone||Act 1 Code||Act 2 Code|
|Mushroom Valley Zone||005C0E:0700||005C10:0701|
|Lava Reef Zone||005C16:0900||005C18:0901|
|Sky Sanctuary Zone||005C1A:0A00||005C1C:0A01|
|Death Egg Zone||005C1E:0B00||005C20:0B01|
|The Doomsday Zone||005C2A:0C00||005C2A:0C01|
|Lava Reef Zone Act 3/Boss||005BF6:1600|
|Hidden Palace Zone||005BF8:1601|
|Death Egg Zone Final Boss||005BFA:1700|
|Hidden Palace Zone (Special Stage Ring)||005BFC:1701|
Each level can be played through the level select. Lava Reef Zone, Sky Sanctuary Zone, and Death Egg Zone are accessible using the first, second, and third 2P VS options respectively while The Doomsday Zone uses the Sound Test option. The gumball machine bonus stage can be played by selecting "Bonus" on the level select. "ID 0D" can be accessed by selecting Angel Island Zone Act 1 and 2. Lava Reef Act 3 and Hidden Palace Zone can be played by selecting Hydrocity Zone. Finally, the Death Egg Zone final boss and Hidden Palace Zone (Special Stage Ring) can be accessed through Marble Garden Zone Act 1 and 2.
| Stage Differences|
All of the Stage differences and Map Layouts from this build.
Unused Objects and Enemies
|12||0001C6A0||LBZ Platform||A glitched platform that appears to belong to LBZ.|
|1A||0001DFCE||Speed Cannon?||A seesaw-esque object that forces Sonic to run extremely fast upon pressing the jump button. It seems to belong to LBZ.|
|1C||0001E6C6||Spinning Spike?||A very strange object that appears to be spinning. It seems to belong to LBZ.|
|1D||0001C228||Grabbing Platform||One of the LBZ platforms, but with a "grabber" underneath that can hold Sonic. Its tile mappings appear to be somewhat glitched.|
|84||00040704||Hey Ho||A very glitched version of Hey Ho, the Mushroom Valley Zone Act 1 boss.|
|90||00049FB6||Fireworm?||Fireworm badnik for Lava Reef Zone. Crashes the game while trying to DMA non-existent sprites.|
|91||0004A29C||Iwadomoki||The exploding "fake stone" badnik. Can crash the game.|
|92||0004A400||Toxomister||The smoke clouds do not hurt Sonic, they only slow Sonic down.|
|93||000495CC||Madmole||The mushrooms it throws have an exaggerated effect on Sonic. It appears in the Mushroom Valley Object Layout.|
|94||000499BC||Mushmeanie||The bouncing mushroom enemy from Mushroom Valley Zone.|
|95||00049B24||Dragonfly||Flies up and down, as in the final game.|
|96||00049DCA||Butterdroid||Butterfly badnik from Mushroom Valley Zone.|
|97||00049E50||Cluckoid||Chicken badnik from Mushroom Valley Zone.|
|98||0004107E||Sandopolis Golem||The miniboss from Sandopolis Zone.|
|B6||0003CE96||FBZ2 Barrier Eggman||The mid-boss of FBZ Act 2. Although coded, it isn't actually placed in the stage.|
|C5||0004178A||Hidden monitors that can be revealed by the falling signpost.|
|CA||00035AD2||Sonic during the AIZ intro sequence.|
Possible early graphics for a button used by Knuckles. These tiles are loaded early on in the space used for the burning Angel Island Zone stage graphics.
Compressed graphics in 0x182624 contain Tornado plane sprites, indicating that the cutscene with Sonic surfing would be removed soon.
A smaller version of the Turbo Spikers. This was found in an unreferenced Konsinki Moduled-compressed archive at 0x132802.
Act Clear Signs
|November 3rd 1993 and Final|
In Sonic 3, the sign frames are uncompressed and loaded dynamically over each other to conserve video memory. This said, also present in the game's data is an unused copy of the same art compressed like in Sonic 2, strongly suggesting it is from earlier in development.
Although Sonic, Tails, and Robotnik are basically the same as their Sonic 2 counterparts, Knuckles appears for the first time, with a slightly different appearance relative to the final art. This early version is still present in the final game, as well as in Sonic & Knuckles.
Hydrocity Zone Act 1 underwater
Hydrocity Zone 1
|Original||Alternative 1||Alternative 2|
Hydrocity Zone 2
|Original||Alternative 1||Alternative 2|
IceCap Zone Act 1 and 2 "Cavern Area"
|Original||Alternative 1||Alternative 2|
IceCap Zone Act 2 "Outside"
Mushroom Valley Zone Act 1 and 2
Lava Reef Zone Act 2
Although the color gradients are disorganized, these color palettes, oddly enough, are almost the same as the final version rather than the Sonic 3C 0408 prototype.
Balloon Park Zone
This palette matches the final icon's colors.
Chrome Gadget Zone
This palette shows an otherwise unseen part of the background, and also matches the final icon's colors.
Angel Island Zone 1 "Used in an early cutscene?"
Offset for the Very Old version.
An unused AIZ1 color palette appears to be a mix between the beach cutscene and the forest interior, as if the forest background did not exist. This color palette has been removed in the version used by the prototype.
| Data Leftover|
Listing with the location of data leftover from other rewrites of old builds during development.
Towards the end of the binary, two partial blocks of older data exist, which contain Lava Reef Zone data and older palettes (and potentially other levels' data), among other things. The palette block used in-game is the one on the left.
Pieces of another game's source code (judging by the labels, most likely the aforementioned Star Trek game) can be found scattered throughout the ROM at the following locations.
,WhichMessage Bra @DoneInput @InComingHail: Move.w #3,WhichMessage Bra @DoneInput @ImpulseDamaged: Move.w #4,WhichMessage Bra @DoneInput
the screen. DMAScrollArrows: Subq.w #1,ArrowDelay ; Determine if arrow buffers or blanks should Bne.s @NoTogg ; be DMA'ed this makes the arrows flash. Move.w #15,ArrowDelay ; Reset delay between flashes. Eor.w #1,ArrowToggle ; Toggle between blanks and arrows. @NoTogg: Tst.w ArrowToggle ; Branch to relevent bit. Beq.s @ArrowsOff ; ====== Arrows on, DMA the buffers. ====== Lea UpArrowBuffer,A0 ; Source. Lea ScrollBBase+(27*2)+(21*64),A1 ; Destination. Move.w #1,D0 ; Number of words. Move.l #VDP_VRAMWrite,D1 ; Set to write to VRAM. Moveq #2,D2 ; Auto increment. Jsr PushDMA ; Move characters to VRAM. Lea DownArrowBuffer,A0 ; Source. Lea ScrollBBase+(27*2)+(26*64),A1 ; Destination. Move.w #1,D0
Lea ScrollBBase+($b*64)+(27*2),A1 Jsr Word_2GVRAM Move.w #AsciiOffset+CHR_Palette0+CHR_HighPri,D5 ; Color is different if in impulse. Bra @DoneSeperators @NotImpulse: Move.w #AsciiOffset+CHR_Palette3+CHR_HighPri+'.',D0 ; Place decimal points and '/' seperators. Lea ScrollBBase+($5*64)+(28*2),A1 Jsr Word_2GVRAM Lea ScrollBBase+($7*64)+(27*2),A1 Jsr Word_2GVRAM Lea ScrollBBase+($d*64)+(28*2),A1 Jsr Word_2GVRAM Move.w #AsciiOffset+CHR_Palette3+CHR_HighPri+'/',D0 Lea ScrollBBase+($9*64)+(27*2),A1 Jsr Word_2GVRAM Lea ScrollBBase+($b*64)+(27*2),A1 Jsr Word_2GVRAM Move.w #AsciiOffset+CHR_Palette3+CHR_HighPri,D5 ; Set up character color. @DoneSeperators: Move.w CurrentDistance,D7 ; Get whole part of DISTANCE. Moveq #3,D6 ; Three characters. Moveq #'$',D2 ; Lead with a spaces. Lea ScrollBBase+($5*64)+(25*2),A1 ; Screen destination. Jsr PrintVal ; Print it. Move.w CurrentDistance+2,D7 ; Get fractional part of DISTANCE. Moveq #2,D6 ; Two digits. Move.w
_No1,VIEW_NOT_FLIPPED,VIEW_SIZE_6 Dc.b VIEW_PLANET10,VIEW_PAL_NoA,VIEW_FLIPPED,VIEW_SIZE_6 Dc.b VIEW_PLANET4,VIEW_PAL_NoC,VIEW_FLIPPED,VIEW_SIZE_7 Dc.b VIEW_PLANET10,VIEW_PAL_No1,VIEW_NOT_FLIPPED,VIEW_SIZE_7