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

Bugs:Sonic the Hedgehog 2 (Genesis)

From The Cutting Room Floor
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Other languages:
English • ‎polski • ‎português do Brasil

This page details bugs of Sonic the Hedgehog 2 (Genesis).

Hmmm...
To do:
  • Record Super Sonic's in-game palette cycle and compare it with the full cycle

Sonic 2 has many bugs, some of which were fixed in later revisions of the game.

Gameplay Bugs

Point Glitch 101

If one player destroys a badnik, and the other player quickly destroys another badnik in 2-player mode, that player will get 200 points, since the game doesn't have separate badnik checks for both players.

Super Sonic's Super Softlock

Sonic2SuperSonicEndBug.png

There's an extremely horrible bug that can occur as Super Sonic. If the player has at least 50 rings and transforms at the end of the level before going off-screen, Sonic will turn to normal but will be stuck in the air, softlocking the game. This was thankfully fixed in REV02.

A similar bug can occur with capsules, though because the results display no matter what, this will not softlock the game.

It's Over 999

Sonic2Rings1000Rev00.png

In REV00 only, it's possible for ring monitors to exceed the 999-ring cap, which will glitch out the HUD. Fixed in REV01 and all future revisions.

Debug Moooooooode

Normally, the game prevents any object that hasn't had their variables fully initiated from crashing the game by checking if the "rendering bits" have been set; however, when placing an object in Debug Mode while "dead", the game only clears the lower bit of object variable $01, meaning the upper bit is never cleared, meaning the object never fully initializes, causing a crash... in REV01/02.

In REV00, the crash happens for a completely different reason; this build has sanity checks to prevent such a circumstance occurring (by checking both the object's ID and mappings), however the code it jumps to forces the game to read address 0x000001 from a word address, causing another crash; this code didn't exist in earlier builds, and was likely implemented to detect Sonic 1‍ '​s "clusterfuck" bug, where objects were displaying before being initialized (potentially leading to the object being deleted on the same frame as displaying, which itself could cause crashes with Sonic 2‍ '​s new mappings format).


(Source: Clownacy)

An Extra Frame

Due to a programming oversight, the Super Sonic ring drain is actually 61 frames instead of 60. This essentially gives the player an extra second per 60 rings.

Missing Super Sonic Palette Frame ("blo")

When the game does the palette cycle routine for Super Sonic, it uses "blo" instead of "bls". As a result, it skips the last frame of animation.

Graphical Bugs

Graphical Issues on Title Screen

Sonic2TitleMissingArm.png

There are three bugs relating to the title screen:

  • Tails' and his hand never have their sprite priority set during the animation, meaning a few of their pixels get overlapped by Sonic; strangely, skipping the animation does set it.
  • One of Sonic's frames is a pixel too high, causing him to float above the emblem for a few frames.
  • Right before the game spawns Sonic's arm, it loads mapping 0x08, which is an incomplete duplicate of 0x12; as a result, both of his arms disappear for a few frames.
(Source: Clownacy)

Boss Deconstruction

The Aquatic Ruin, Casino Night, and Mystic Cave boss addons don't fall apart as they should. For all other bosses the parts fall in individual directions, but here they either fall in the same direction (Aquatic Ruin) or the wrong one (Casino Night/Mystic Cave).

Level-Specific Bugs

Emerald Hill Zone

Broken Title Card Frame

Sonic 2 Emerald Hill Title Card Bug.png

One of the frames of Emerald Hill's title card doesn't display properly. Oddly, this only became an issue in Beta 5.

Broken Horizontal Scrolling

The bottom two pixels don't scroll correctly. This was fixed in Knuckles in Sonic 2 and 3D Sonic the Hedgehog 2, but not in the vanilla version of the game.

Casino Night Zone

Tails sometimes uses his standing animation when moving.

Hill Top Zone

If the player breaks a rock and then destroys a Rexon in a certain way, the game will crash. This is because the game is jumping to code it's never meant to, resulting in invalid opcodes and an eventual crash. Fixed in REV02.

Sky Chase Zone

In the Sonic Classics version of REV02, it's not possible to spindash off the Tornado. This is since the game originally checked for whether the player was standing on the Tornado, only for Sonic Classics to check if they're facing left.

Sound Driver Bugs

Only Oil Ocean

Using the 14 continues cheat (01, 01, 02, 04) will continuously play the Oil Ocean Zone theme. This is because instead of playing $BF (the continue sound), it instead plays $3F. As that is an invalid SMPS command, it causes the Sound Driver to malfunction and be unable to play new sounds.

Presumably, whoever programmed in the cheat code used the sound test IDs instead of the actual IDs, as the continue sound does appear as $3F

Death Egg Music Doesn't Resume

The game is programmed to restart the Death Egg theme after beating Mecha Sonic...in theory. However, the instruction uses the wrong data length to pass Death Egg's music identifier to the function for switching tracks, resulting in the game instead pointlessly trying to play track #0.

(Source: Sonic Retro)

Technical Bugs

The Pattern Load Cue Crash

A bug that also existed in the original Sonic the Hedgehog and is still present here involving a few misplaced lines of code in the routine, causing a crash when the End of Act sequence starts should the water level be at a certain height on screen. Thankfully due to Sonic 2's scrolling delay when ducking, Debug Mode is needed to scroll the camera down fast enough to trigger the crash.

Interestingly, it seems like the developers did try to mitigate this bug, as the code for loading art cues is altered to be slower.