Sonic the Hedgehog (Genesis)
|Sonic the Hedgehog|
Also known as: Baramdori Sonic (KR)
This game has unused code.
This game has a development article
This game has a prototype article
This game has a prerelease article
This game has a bugs page
Sonic the Hedgehog is more or less the definitive game of the Genesis in the early 1990s and introduced the world to Sega's new blue mascot.
- 1 Sub-Pages
- 2 Header Space
- 3 Level Select
- 4 Debug Mode
- 5 Unused Sprites
- 6 Obscured Sprites
- 7 Zone Leftovers
- 8 Unused Warping Effect
- 9 Invisible Credits
- 10 Misplaced Objects
- 11 Unused Level Chunks
- 12 Unused 2x2 Tiles
- 13 Exception Handler
- 14 Unused Sounds
- 15 Unused Music Sequences
- 16 Unused Code
- 17 Unused Palettes
| Revisional Differences|
Sonic the Hedgehog 1... point 3.
When playing Sonic the Hedgehog on a emulator, you might have noticed the header has a very large space formatted as:
SONIC THE HEDGEHOG
This is actually a crude attempt at a line break, which can be seen by setting your hex editor's bytes per row to 16 and looking at 0x00120 inside the ROM.
One of the most well-known codes in gaming history: press Up, Down, Left, Right on the title screen (three Downs if playing the JP version on a Japanese console), then hold A and press Start. In the original revision, the level order is different from the order in normal gameplay: Labyrinth and Star Light are earlier than they should be, and Marble and Spring Yard are later. In the Sonic Jam Official Guide, programmer Yuji Naka explained that this is because Labyrinth was supposed to be the second level, but was considered too much of a difficulty spike. This original level order actually showcases the levels getting more and more mechanical in theme, as Sonic gets closer and closer to Robotnik's Factory.
|Green Hill Zone||Green Hill Zone|
|Labyrinth Zone||Marble Zone|
|Marble Zone||Spring Yard Zone|
|Star Light Zone||Labyrinth Zone|
|Spring Yard Zone||Star Light Zone|
|Scrap Brain Zone||Scrap Brain Zone|
|Final Zone||Final Zone|
Again, codes for the debug mode vary based on console or game region.
International Version; & Japanese Version on International Hardware
Another well-known code. While Up, C, Down, C, Left, C, Right, C is the most common version, a shorter version is C, C, Up, Down, Left, Right. The main requirement for the code is pressing C twice before the final input of Right. After entering the code, press Start while holding A and continue holding A until Sonic appears in the level. The "Pause Options" (see below) are enabled even if A hasn't been held.
To activate Level Select and Debug Mode, simply enter the Level Select code, push any direction on the D-Pad after the ring sound, then enter the Debug Mode code.
From here, you have access to a variety of things:
- Infinite Time
- Debug Coordinates (in place of score)
- Sprite Counter (in place of time)
- Placement Mode: Press B during gameplay. From there,
- Press A to move forward one object.
- Hold A and press C to move backward one object.
- Press C to place the object.
- Pause Options: press A to go back to the title screen, hold B to enable slow motion, or press C to enable frame advance.
Japanese Version on a Japanese system
Here, there are separate codes for the pause options and the rest of the debug features. As usual, they are entered on the title screen and can be combined by interpolating a D-Pad direction between them.
- C, C, Up, Down, Down, Down, Left, Right
- C, C, C, C, Up, Down, Down, Down, Left, Right, hold A and press Start
Once enabled, they behave in the same manner as they do when running on non-Japanese systems.
|Sonic gulping for air while standing. Likely used for the air bubbles found in Labyrinth Zone, as well as Scrap Brain Zone Act 3.|
|Sonic holding his breath, alongside 3 unshaded bubbles. Possibly used for when the player was close to drowning. The face of this sprite would later be used in Sonic Mania, as Sonic is inhaling an air bubble.|
|Seen in earlier development pictures. It would be seen as Sonic's jumping sprite after passing a goal. Slightly modified versions of these sprites would finally see the light of day in Sonic Mania, keeping their original purpose. Used in the prototype build.
Fun fact: The second frame would later show up, still unused, in the LeapFrog Didj Sonic game of all things.
|A sliding sprite, similar to those used in Sonic CD. Possibly used for sliding a slope or if he was originally skidding. Modified versions of these sprites would later appear in the official "Hedgehog Day Dance Party" video, but not in Sonic Mania itself.|
|Spin Dash-like sprites. There's a routine which would change Sonic's sprite to one of these, but it's unused. However, a similar animation was made for Mighty's "Hammer Drop" ability in Sonic Mania Plus.|
|Shrinking, maybe falling, sprites for Sonic. Purpose unknown.|
|A black-and-white death sprite, whose purpose is unknown. Possibly would have been used when falling into lava, like in Marble Zone. This is also present, still unused, in Sonic the Hedgehog 2 and the v0.02 prototype of Sonic CD. Similar unused sprites exist in Sonic the Hedgehog 3 & Knuckles.|
These are visible if you fly over the goal in debug mode or using the level wrapping glitch, as the end-of-level art loading routine isn't executed and the goal art is written over the top of the art for the monitors. They are all also unused in the prototype.
|A Robotnik monitor. It has been seen in the Computer Chronicles footage. Later used in Sonic 2, Sonic 3 & Knuckles, and Sonic Mania, where it will hurt Sonic; it would have presumably served the same function here.|
|An image of Sonic's unused goggles, leading some to believe it was originally a power-up. These become placeable objects in the 2013 remake's debug mode, and are also worn by Sonic during Tails', Mighty's, and Ray's Tornado plane segments in Sonic Mania.|
|A static monitor, used as a default for invalid object IDs. Scrap Brain Zone contains a number of these (apparently a victim of changing object allocations - the subtypes work perfectly if these are changed to solidity objects) which emit various glitched tiles when broken. They can be placed in Debug Mode, but don't do anything when broken.|
|A monitor with an "S" on it. This monitor appears in Prototype 510 of Sonic CD, essentially giving the player a speed boost and invincibility. In other games it appears in, including this game's 2013 remake, it grants Super/Hyper forms.|
Green Hill Zone
|A checkered boulder, seen in early screenshots, and part of the Green Hill Zone boss in the final. As seen in the prototype, it would have originally been its own object that could be pushed around and break through walls that Sonic couldn't and roll through tubes that Sonic could. In certain places it would serve as an obstacle that would chase the player. The checker boulder can still be viewed via debug mode, but cannot be placed. This was used in the prototype build.
It was restored in the 2013 remake, and is also featured in Sonic Mania's debug mode, though only in Green Hill's acts. May also go with the "Wrecking Ball" object below.
|Two faces, possibly from an earlier point in development. Their graphics are mapped to Sonic's palette in the final, though it could be possible their true palette was removed. They are simply earlier versions of the Green Hill Zone decorations. They can be also seen in the Nick Arcade prototype of Sonic 2 in Green Hill Zone, on the glitched Crabmeats and the Act 3 boss. They are loaded naturally into the RAM addresses FFBAC8 and FFBAD0 and appear a layer in front of the sprites, can be added on Green Hill Zone with these codes, FF5970:0159 happy face, FF5972:015A sad face.|
|A set of unused border-like tiles. Interestingly, These tiles are very similar to the border tiles seen in the 8-bit version's act 2 underground segment. Although still unused in the prototype, these tiles are included in one of its level chunks, which got eventually replaced in the final. These tiles would later appear in Sonic Mania.|
|A set of what appears to be earlier versions of the border landscape tiles. Their true palette is unknown.|
|The swinging platforms of Green Hill Zone instead carry a wrecking ball when the highest bit of their subtype value is set. The object is fully functional and can hurt Sonic. Technically, the swinging platforms of Marble Zone, Star Light Zone, and the swinging spike ball of Scrap Brain Zone are capable of doing this, too, but the wrecking ball graphics are not loaded, suggesting this feature was only intended for Green Hill Zone. You can see this using PAR codes FFFE06:6B00 + FFD004:1500 during debug mode.|
|An unused and quite different explosion, meant for the scrapped front-facing Ballhog badnik's bomb and Buzz Bomber badnik's unused exploding projectile routine. The explosion, and the Ballhog badnik itself can be found in the prototype build, albeit still unused.|
|A horizontally-oriented spiked chandelier thingy. A fully functional but completely unused object exists for these. Can be added using patch code FFD004:4500 with debug mode active in Marble Zone. Used in the prototype build.|
|Splats the Bunny, a badnik that seems to have been cut relatively late in development, as both a trading card and a figurine for it were released. No code for Splats exists in the final game, but it does exist in the prototype, where it can be placed in Marble Zone using debug mode. It was once meant to appear in Scrap Brain Zone, according to concept art and source code remnants showing its VRAM position. Its original ID was $4F, and similar code would be used for the "Ball" badnik, in the Sonic 2 "August 21st" build.
A functional Splats can be placed via debug mode in the game's 2013 remake, but it wouldn't be until 26 years later in 2017's Sonic Mania when Splats finally got its chance to be fully utilized, sporting a slightly tweaked design as one of the enemies in Press Garden Zone. It can also be seen broken in the scrap piles in Flying Battery Zone. A slightly different variation is also in the debug mode's object list for Green Hill Zone, much like the 2013 remake.
Spring Yard Zone
|Leftover from the prototype is an unused sign present in Spring Yard's tileset. As the sign is also unused in the prototype, it was seen only in Concept art; the palette here is from the prototype which made it cycle.|
|A Burrobot facing downwards. Purpose unknown. Possibly moving on the tile wall.|
Star Light Zone
|Unused lights from Star Light Zone. These lights were used in the prototype.|
|Unused pieces of a capsule. They are loaded into the data of Robotnik's capsule, and concept art shows extra gadgets attached to the capsule.|
At the end of Final Zone after Sonic destroys the Egg Crusher, Robotnik quickly attempts to fly away with his Egg Mobile. Before he takes off, the Egg Mobile has a pair of bird legs that retract. The legs are actually taller in their raw graphics (revealing a mechanical knee), as the legs are cut off in-game.
These can be seen in normal gameplay by falling out of a Special Stage using debug mode.
|Labelled as Zones 1-6, possibly used to mark which Special Stage you were in.|
|A 1-up icon. This is mentioned and shown in the game's manual but doesn't appear in-game outside of the aforementioned out-of-bounds area. It is actually fully coded and functional, and collecting it will grant you an extra life. The icon disappears like a ring when touched.|
|A W block. It's unknown what this would have done. However, a common Japanese pun is used with the letter W, where it would mean “double.”|
|Press Start Button||This text was meant to appear on the title screen, but was disabled due to a programming error involving the Sonic Team Presents screen. Interestingly, it will appear on Japanese systems after viewing the invisible credits, and shows in the Brazilian Mega Games 10 version. It can be reactivated by using the code FFD11A:0100. Functions fine in the prototype build.
This function would be resurrected for Taxman & Stealth's 2013 remake of the game, although the text is recreated to say "TOUCH TO START" in the iOS version, and "PRESS BUTTON" in the version included in Sonic Origins.
|Goggles||Unused sprites for goggles, which would have been placed over Sonic. It was most likely supposed to come from opening the respective Goggles Monitor. These were later used in Sonic Mania for when Sonic is piloting the Tornado when playing as Tails, Mighty, or Ray.|
|Robotnik Explodes||These sprites could have been used in the ending, since they show Robotnik struggling to stay in the air (and then exploding), presumably only if you attacked Robotnik's craft when he tries to escape in Final Zone.|
|Unknown Grass||A chunk of grass which has no known purpose. Early concept art shows a mechanic where grass would be differently colored to show the location of hidden spike traps. Interestingly, it doesn't seem to match with any palette in the game. The code remains in the game.|
|Unused Switch||An unused frame of the switch sprite. When bit 5 of a switch's subtype is set, it makes the object flash, using this sprite. In Labyrinth Zone, this sprite's data is partially overwritten by the cork sprite in VRAM. Marble Zone's switch has no equivalent sprite. This switch was used to close a door, it is present in the prototype in a set of objects without reference from Sparkling Zone 1.|
|2 By 2 Block||This can be found in tile graphics 2F66E-2F6B6, compressed in the Nemesis format. It is unknown which level this sprite was intended for, but the likely candidates are Green Hill Zone or Marble Zone since the palettes for said levels are the best matches for these graphics.|
|Title Card K||The only letter meant for the title cards that went unused after the prototype, since nothing calls for any use of it. It would've been used for Sparkling and Clock Work, but they were respectively renamed to Spring Yard and Scrap Brain.|
|Title Card Period||A period, also intended for the title cards.|
|Vertical Small Fireball||A small fireball, similar to the ones the Fire-Breathing Statues shoot in Labyrinth Zone.|
|Large Smoke Puffs||Some sort of smoke or dust. This is loaded in VRAM within the prototype, where the final game's checkpoint graphics would've been found.|
|Sparkle||Sparkles, in a similar style to the invincibility stars.|
|Green Hill Zone Log||A version of the rotating spikes in Green Hill Act 3, with the log intact.|
|Marble Zone Bricks||Marble Zone's background bricks, separated from the level tiles.|
|The lower half of Sonic's title screen animation are hidden behind the SONIC THE HEDGEHOG ribbon, making these go obscured. These are actually leftovers from the genga (key animation) sketches, seen here. They can, however, be seen in numerous early emulations of the game (Including the official Sega Smash Pack Volume 1 for the Dreamcast), which incorrectly render Sonic in front of the logo.|
Zone ID 06, Act ID 00 (Act 1) and Act ID 01 (Act 2) are used for the ending sequence (good ending and bad ending respectively) in the final game, however, Zone 06 exhibits some odd behavior when played as a regular level. It plays the Final Zone music, and doesn't have an act number on the title card (which just says "Zone"). This isn't due to reading garbage data either, this level is specifically assigned these music and properties.
Act ID 00 (Act 1) spawns Sonic where he normally is during the good ending, while Act ID 01 (Act 2) spawns Sonic where he normally is during the bad ending. Act ID 02 (Act 3) is unused and completely empty, resulting in Sonic falling to his death.
Unused Warping Effect
This was used in the prototype when running into a giant ring; Sonic disappears as he runs into it, and a warping noise plays. Sonic then reappears a few seconds later, likely as a method of testing the object.
Credits that are hidden on the Sonic Team Presents screen, and completely unseen in every region outside of Japan. The credits were added by Yuji Naka in defiance of Sega, which at the time prohibited developer credits. If you play the Japanese version and have a Japanese Mega Drive, or switch the region to Japanese, you can use the code C, C, C, C, C, C, Up, Down, Down, Down, Left, Right, which should make a ring noise, then when the demo starts, hold Down + A + B + C to turn the screen's background to white, making the text visible after the Sega splash screen. This code does not work in the Sonic Classics version.
You can also activate this code for the International version if running on Japanese hardware, then it's C, C, C, C, C, C, Up, Down, Left, Right.
If you can't do the above codes, use the Pro Action Replay codes FFFFE3:0001 and FFF604:0072.
The credits translate to:
|Sound Produce||Nakamura Masato|
|Sound Program||Kubota Hiroshi|
In Green Hill Zone Act 1, a Motobug is suspended above an abyss near the first group of spikes. It is quickly erased from memory because there is no collision area for it to spawn on. A stage planning sheet reveals that a Motobug was once placed at the top of the hill immediately past the misplaced Motobug, in front of the spring, so perhaps this is a remnant of that early design.
Green Hill Zone Act 2 has multiple misplaced enemies, such as this Crabmeat at coordinates 10D0,0370, under the section with the moving pillars and spikes just before the checkpoint. They cannot be seen in gameplay, as they're always placed such that they instantly fall into the abyss and unload. The Crabmeat is particularly amusing in that it's already below the level of the screen.
A stone can be found below the boundaries of the map in Green Hill Zone Act 3, near the boss fight. It is impossible to reach it without the use of debug mode. You can also find a Buzz Bomber that is impossible to reach at coordinates 21B0,0000.
In Labyrinth Zone Act 1, there is a group of spikes buried in 12D3,0675. It is impossible to see them because they are out of bounds and the foreground tiles are in a layer above the sprites. For some reason, the spikes are located at the same coordinate in act 3.
Unused Level Chunks
These have been unused since the prototype, that or they were made but never used.
Star Light Zone:
Note: Several unused chunks of Star Light Zone still retain the art style used in the prototype and that's because there are several unused chunks, it's possible this level has had many changes throughout its development.
Scrap Brain Zone:
Unused 2x2 Tiles
Check the tiles that are in the prototype.
All tiles loaded into VRAM are organized by spreadsheet at the RAM address FFB000, where IDs are created for each line representing 2x2 chunks of VRAM graphics. Address FF0000 is in charge of adding mirroring and collision to these tiles, creating 16x16 chunks.
In all, there are 255 chunks created from FF0000. To add these chunks, add the IDs below in the format (0x xx) after FF0000 and search for the chunk ID 01 in the level data. Through this method, it's possible to see some of the unused graphics referenced above.
|Green Hill Zone||006, 187, 199, 19A, 00C, 00E, 017, 018, 022, 028, 02B, 02C, 044, 048, 049, 055|
057, 058, 059, 05C, 05E, 086, 087, 0BD, 0BE, 0F4, 0F5, 0F7, 146, 159, 15A, 161
|Marble Zone||058, 059, 05A, 05B, 065, 069, 06A, 06B, 06C, 08A, 08C, 094|
095, 096, 097, 09A, 09B, 09D, 09E, 0A3, 0A4, 0B7, 0B8, 0B9, 0BA, 0BB, 0BC, 0C8
|Spring Yard Zone||01C, 01D, 02B, 06A, 06B, 072, 08B, 08D, 0AC, 0BA, 0BB, 0D2, 0DD, 0F6, 0FB, 104|
10C, 10D, 16F, 171, 191, 192, 197, 1A5, 1A6, 1A9
|Labyrinth Zone||03C, 03D, 04F|
|Star Light Zone||
018, 019, 01A, 01B, 01C, 01D, 01E, 01F, 021, 022, 023, 024, 025, 026, 027, 028
|Scrap Brain Zone||01A, 01B, 01C, 01D, 029, 02A, 034, 03E, 047, 048, 06A, 074, 07B, 085, 086, 0C0|
0D2, 0DC, 0EA, 128, 132, 13F, 141, 16C, 172, 173, 17C, 182, 188, 189, 223, 224
The game contains a very basic error handler. In the event a 68000 exception occurs (e.g. a bug causes the game to crash), the game will stop and print some basic information to the screen. This can be triggered in the first two acts of Labyrinth Zone. If the camera is panned down at the moment the results screen is about to appear at the end of the first two Acts, the game may crash with an illegal instruction exception.
These are best performed on an actual console, as the error handler does not work properly in some emulators.
While the error handler has text for most of the defined 68000 exceptions, very few of them are likely to show up during normal gameplay, as many of them are assigned as placeholders.
A way to get out of error messages is by pushing C, but sometimes it won't work properly and will either show another error message, or lead to the game freezing entirely.
A complete list of the game's error messages (which are shown below) can be found at hex value 000004E0.
ERROR EXCEPTION BUS ERROR ADDRESS ERROR ILLEGAL INSTRUCTION ZERO DIVIDE CHK INSTRUCTION TRAPV INSTRUCTION PRIVILEGE VIOLATION TRACE LINE 1010 EMULATOR LINE 1111 EMULATOR
This sound effect was used for when the earlier Ballhog bombs exploded while hitting the ground, and when the Buzzbomber missile made contact with Sonic. In the released prototype, the sound can only be heard when the ballhog bombs hit the ground.
These sounds are similar to the spike sounds in the final game.
Unused Music Sequences
In the game, there exists some unused sequences for music, most of which are either a little or very different than the final version.
Unused Credits Sequence
This unused sequence sounds almost exactly like the track from Masato's demos titled Theme of SONIC THE HEDGEHOG Demo which has many major differences from the final version, one of which there being that an extra note is being played.
Unused Boss Bass
The unused bass instrument is similar to the Masa Demo version.
Unused Act Clear Trumpet
The unused instrument makes this sound near identical to the Masa Demo version as well.
Sonic 1 has quite a bit of unused code, most of which were meant for a much older version of the game:
- An unused routine to squish Sonic, which played the unused "warping" animations shown above. When this routine is enabled, it activates when Sonic is near a wall, causing him to stick in place, as if he was hanging onto the wall. It is completely unknown what this was meant for.
- Sonic in the Special Stages has some leftover code that would've limited his jump height, just like the Sonic in normal stages.
- There's a third music queue that's never called for. Even if it was, a bug in the sound driver prevents it from working.
- Code to record the demo inputs.
- A routine that converts the collision from a 'bitmap'-like format to the one used in-game. Interestingly, this was altered in the Sonic 2 Nick Arcade Prototype so it would convert Green Hill's collision to work with the new collision table, though it doesn't work.
- A routine to calculate a square root.
|A palette cycle for Marble Zone's lava and torches in the background. It doesn't work very well when applied though - it may have been intended for an older iteration of the Zone's artwork, as prerelease screenshots show that the look of the lava changed significantly during development.|
|Alternate background palettes for the special stages.|