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

Proto:Sonic the Hedgehog 3

From The Cutting Room Floor
Jump to navigation Jump to search
Other languages:
English • ‎polski • ‎русский

This page details one or more prototype versions of Sonic the Hedgehog 3.

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

Download.png Download Sonic the Hedgehog 3 (Nov 3, 1993 prototype)
File: Sonic the Hedgehog 3 (Nov 3, 1993 prototype).bin (2 MB) (info)
Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.
Sonic 3 November 3rd Title.png

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 may be from late 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 Sonic 3 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 Sonic & Knuckles Collection. 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.

Hmmm...
To do:
  • Find the differences between the final and early tracks.
  • Rip and compare sound effects.
  • There are a lot of Sonic 2 leftovers, like a lot.
  • Early level layouts for the rest of the maps in the leftover data.
  • Other changes.
  • Try to apply the leftover data.

Sub-Pages

Sonic 3 Flying Battery icon.PNG
Stage Differences
Some minor, some major, some unplayable.
Sonic2SoundTestIcon.png
Sound Differences
Why is Sonic & Knuckles Collection stuff here?
Sonic3-1103 leftover ALZ-BG.png
Data Leftover
Azure Lake with no lake?

Gameplay Differences

  • Sonic has a Drop Dash-esque move that can be performed by holding Up on the D-pad, then jumping. Sonic and Knuckles are also able to use this ability in Competition Mode.
  • Elemental shields lack their specific effects.
  • Special Stage rings aren't present, though all their respective locations are.
  • 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' flight ability is incomplete, and every jump press will result in maximum levitation, regardless of drop speed.
  • Tails cannot change his flight direction if jumping from a curve-pipe.
  • Tails cannot get tired from flying or swimming.
  • Tails cannot enter Debug mode.
  • Super Sonic has been partially implemented, and has the ability to shoot rings, which was removed from the final.
  • The "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' from Sonic 2, in that Sonic won't curl into a ball when jumping off, and his animation stays the same.
  • The Competition Mode levels are overall 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 HUD timer uses a colon to separate the the minute from the seconds, unlike the final which uses the prime marks.
    • 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 in Chrome Gadget 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.

Demo

The demo for Angel Island Zone Act 1 appears to be meant for an older build as the Demo desyncs after a bit, however though. This Demo's existence also shows that the game must have been shown in a private place somewhere as all Sonic Prototypes with pre recorded demos, are shown at some event. Some other strange oddities are, the Angel Island surfboard intro is coded specifically for the demo, when the demo reaches knuckles the demo player kind of interacts with him which means knuckles existed in the older build, the demo player makes several movements that hint at the object layout being pretty different in the older build, and the demo actually goes all the way to the Act 1 transition while showing all the gimmicks in Angel Island Zone which further reinforces that this demo could have been meant to be privately showcased somewhere.

Super Sonic

Sonic3 Nov3-1993 Super Sonic.png

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 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.

Graphical Differences

Sonic 2 Proto Final
Sonic2SonicIdleFinal.png Sonic3PrototypeSonicIdleFrame.png Sonic3FinalIdle.png
Sonic 2 Proto Final
Sonic2FinalTailsIdle.gif Sonic3PrototypeTailsIdle.gif Sonic3FinalTailsIdle.gif
  • Sonic and Tails' sprites are nearly the same as the ones in Sonic 2, albeit updated for Sonic 3's palette. For Sonic however, there are some additional sprites unique to this prototype.
  • Fire Shields use different graphics and 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 using 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.
Sonic3PrototypeGameOver.png
  • The "Game Over" and "Time Over" graphics are still the using the Sonic 2 sprites, and thus looks incorrect with the palette used in Sonic 3.
Proto Final
SEGAAAA--AAH who turned out the lights! It's going to cost them a fortune to repair that.
  • Title cards for levels use different graphics, opting for a dark red instead of the bright red seen in the final. Additionally, the underline beneath the SONIC 3 text is red instead of yellow, and it only stretches part of the text. Only the 1P stages have title cards implemented at this point.
  • Many sprites, such as the water behind Sonic's surfboard while he is surfing to Angel Island, are glitched.

Sonic 3 Prototype Glitch Water.png

  • A majority of object palettes are not finalized.
  • The Speed Shoes and Heavy Shoes icons in Competition mode have different icons:
Proto Final
S3Proto Competition Item.png S3Final Competition Item.png
  • The GOT THROUGH text seen upon completion of an act has noticeably simpler shading.
  • Knuckles's act clear text is also different:
Proto Final
Sonic3PrototypeKnucklesActClearText.png Sonic 3 unused Knuckles text.png

SEGA Screen

Proto Final
SEGAAAA--AAH who turned out the lights! It's going to cost them a fortune to repair that.

The SEGA screen is still largely based on Sonic 2.

  • Due to a bug in the code, too much RAM is cleared which ends up blackening the entire color palette RAM. This miraculously wasn't an issue in Sonic 2 because the RAM was arranged differently. It can be fixed with the following code 034634:00FF.
  • Sonic's sprites have been updated to use the new player palette, but the SEGA screen still loads the old Sonic 2 player palette.
  • Although it might not seem like it given its current state, some code changes were made to work with Sonic 3's new engine.
  • The "SEGA!" sound is somewhat muffled.

Title Screen

Proto Final
Why's it so dimly lit in this render? Ah, there we go!

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 (and Knuckles in Sonic 3 & Knuckles) or Tornado.
  • Sonic's render was not touched up at all from his conversion to 4bpp and the palette appears to be computer generated, therefore, color clamping issues show up. The logo banner was 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 but with some differences, Sonic's pupils are move rounder, his fingers are fatter, and his ears have no inside. 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's mouth is also notably absent from the render entirely, implying that it was a drawn-on feature when it was added to the final game's render. 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.
  • Pressing 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 Sonic 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:000? FFFF08:000? FFFF0A:000?, where "?" is one of the following:

  • 0 - Sonic & Tails
  • 1 - Sonic
  • 2 - Tails
  • 3 - Knuckles (will use Tails' sprites instead)

Tails and Knuckles have graphical problems with their end-of-level signposts, however;

Tails Knuckles
Sonic 3 November 3rd Tails Name Card.png Sonic 3 November 3rd Knuckles Name Card.png
  • When playing as Tails, the signpost will display 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 signpost will load Robotnik's image instead of Knuckles'.
  • 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.
(Source: Sonic Retro, Original TCRF Research)

Level Select

Sonic3LevelSelect.png

Almost the same as the final game, though it plays no music, rendering the File Select theme unused. One other difference is pressing B while the Sound Test selection is highlighted will play the error buzzer sound.

As in the final game, none of the Sonic & Knuckles Zones are selectable by default (with the exception of Flying Battery). 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 below Pro Action Replay codes can be used to regain access to these Zones:

Zone Act 1 Code Act 2 Code
Mushroom Valley 005C0E:0700 005C10:0701
Sandopolis 005C12:0800 005C14:0801
Lava Reef 005C16:0900 005C18:0901
Sky Sanctuary 005C1A:0A00 005C1C:0A01
Death Egg 005C1E:0B00 005C20:0B01
The Doomsday 005C2A:0C00 005C2A:0C01
ID 0D 005BF2:0D00 005BF4:0D01
Lava Reef Act 3/Boss 005BF6:1600
Hidden Palace 005BF8:1601
Death Egg Final Boss 005BFA:1700
Hidden Palace (Special Stage Ring) 005BFC:1701

Each level can be played through the level select. Lava Reef, Sky Sanctuary, and Death Egg are accessible using the first, second, and third 2P VS options respectively, while The Doomsday uses the Sound Test option. The gumball machine bonus stage can be played by selecting "Bonus". "ID 0D" can be accessed by selecting Angel Island Act 1 and 2. Lava Reef Act 3 and Hidden Palace can be played by selecting Hydrocity. Finally, the Death Egg final boss and Hidden Palace (Special Stage Ring) can be accessed through Marble Garden Act 1 and 2.

Sonic 2 Menu Leftovers

Sonic3-Sonic2Options.png

By setting the game's screen mode to $24, you can access the Sonic 2 options menu. Alternatively, you can use the patch code FFF600:2400 or hack the menu back in yourself. Much like the Level Select, no music is played here.

Pressing Start will begin the game at Angel Island with the selected character. The Sound Test can also be used to enter Sonic 2 specific cheat codes.

  • Level Select: Although enabled by default, the level select cheat can be entered by playing sounds 19, 65, 09, 17 (September 17, 1965 being Yuji Naka's birthday).
  • Extra Continues: For 14 extra continues, play sounds 01, 01, 02, 04. Unlike Sonic 2, this cheat plays the continue theme which is otherwise unused in this prototype.
Sonic3-Sonic2-2PlayerScreen.png

It's also possible to find the 2 Player Level Select from Sonic 2 using the patch code FFF600:1C00. However, selecting any of the zones on this screen will send you back to the title screen, so you can't really do anything with this menu. Leftover graphics for the Sonic 2 Results Menu also exist, but all the coding has been removed.

Leftover graphics from the Results Menu can be found.

Unused Objects and Enemies

ID Offset Name Description
0B 0001B338 Eosian Spheres A mass of spheres that can be spawned in Angel Island Zone Act 1 through debug mode. It's worth noting the coding for the object is separate from the test Special Stages, despite the similar behavior.
12 0001C6A0 LBZ Platform A glitched platform that appears to belong to Launch Base Zone.
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 Act 1 boss.
86 0003F11A Beam Rocket An early version of the Launch Base Zone Act 2 boss.
90 00049FB6 Fireworm? Fireworm badnik for Lava Reef Zone. Crashes the game while trying to DMA nonexistent 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.
B1 00039F9E Knuckle's MGZ2 Boss Knuckles's variant of the Marble Garden Zone Act 2. Although coded, it isn't actually placed in the stage.
B6 0003CE96 FBZ2 Barrier Eggman The mid-boss of Flying Battery Zone Act 2. Although coded, it isn't actually placed in the stage.
C5 0004178A Hidden Monitors Hidden monitors that can be revealed by the falling signpost.
CA 00035AD2 Tornado Intro Sonic during the Angel Island intro sequence.
N/A 0001AA34 Sprite Scaling Test Another object that can be spawned in Angel Island Zone Act 1 through debug mode. It uses a software scaling algorithm to scale sprites, although the original graphics are no longer present in ROM.
N/A 0000F972 Classic Shield A non-elemental shield seen in Sonic 1 and Sonic 2 exists in a functional state, albeit unused and lacking graphics.
N/A 00010C60 Big Ring The big ring object and associated flash object from Sonic 1 still exists. It was presumably reused as a basis for hidden rings in the final game.
N/A 00010FC2 Slot Machine Rings Leftover code for slot machine rings seen in Sonic 2's Casino Night Zone can be found.
N/A 00024BCC Special Stage Results Leftover object code for the Special Stage results screen used in Sonic 2.

Unused Graphics

Sprite Description
S3 S monitor.gif
A monitor that can transform Sonic into Super Sonic and Tails into Glitched "Super Tails" without needing to collect Chaos Emeralds. This monitor is present in Debug mode only in Hydrocity Zone.
Sonic3PrototypeSonicAltDeath.png
Unused grey scale death frame leftover from Sonic 1 and Sonic 2.
Sonic3Nov31993prototype-SonicHangOnVertical.gif
A vertical animation for Sonic holding onto something. A similar animation would be used in the final game for the intro of Mushroom Hill Zone Act 2.
Sonic3-UnusedContinueSonicIcon.gif Sonic3-UnusedContinueTailsIcon.gif Leftover continue icons from Sonic 2. These are still mapped to the original palette.
Sonic3leftoverTailsanim1.gif
A leftover animation from the Sonic 2 continue screen.
Sonic3 unused Knuckles icon.png
Knuckles' life icon which would later see use in Sonic & Knuckles.
Sonic3-knuxmini.png
Unused gliding, climbing and falling frames for Knuckles in 2-Player mode, despite him not having these abilities there (he uses Sonic's Drop-Dash ability). The final game does not restore these functions (assuming they were ever implemented).
Sonic3eggmanpanic-running.gif
Sonic3eggmanpanic.png
A set of sprites where Eggman has a panicked facial expression. One of these sprites shows him attempting to jump. The final game didn't use them either.
What could it mean?
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.
Sonic3 Nov3-1993 AIZ1 Tornado Cutscene.gif
Compressed graphics in 0x182624 contain Tornado plane sprites, indicating that the cutscene with Sonic surfing would be removed soon.
Awww, it's so cute!
A smaller version of the Turbo Spikers. This was found in an unreferenced Konsinki Moduled-compressed archive at 0x132802.
Sonic3-icz1introsprites.png
Unused sprites from IceCap Zone Act 1. While the teleporter pad ended up being used in Sonic 3 & Knuckles for Knuckles' transition into the stage, the unusually oversized ice boulder which actually fits in some of the cave's halls was never used.
Sonic3Unused2PFont.png
This is an unused font, located directly after the font for the timer in the competition mode. It's very likely that it was used earlier in development.

Act Clear Signs

Early
Sonic3-signpost-proto.png
Proto/Final
Sonic3-signpost-final.png

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.

Source Code

Pieces of the source code for Star Trek: The Next Generation linger at various parts of the ROM. Like other prototypes, this was likely the result of the game formerly occupying the cartridge before being mostly overwritten.

At 0xAFF0E:

                          ,WhichMessage
                Bra     @DoneInput

@InComingHail:
                Move.w  #3,WhichMessage
                Bra     @DoneInput

@ImpulseDamaged:
                Move.w  #4,WhichMessage
                Bra     @DoneInput

At 0xBFAB4:

                                                                  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                 

At 0xCF970:

                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  

At 0xDFEF3:

                                              _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