the cutting room mirror

Sonic the Hedgehog 2 (Genesis)

This article has a talk page!
view on tcrf.net

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

This page or section needs more videos.
There's a whole lotta words or pictures here, but not enough videos. Please fix this.
Specifically:

  • 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#

Multiple Points for Separate Players in 2-Player Mode#

If Sonic or Tails destroy a badnik, and the other player quickly destroys another badnik in 2-player mode, Sonic/Tails will get 200 points, since the game never checks which player destroyed the badnik.

Super Sonic at End of Level#

Sonic2SuperSonicEndBug.png

There's a rather game-breaking 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.

Over 999 Rings#

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 Mode Crash#

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

Swap Monitor Background Bug#

In debug mode, if you layer a bunch of Swap Monitors on top of each other or in a straight line the constant scrolling breaks Chemical Plant and Aquatic Ruin's background (or can freeze the game sometimes). Watch on YouTube

61 Frame Draining#

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#

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#

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, the game 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 pieces 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).

Sliding Tails#

Sometimes Tails may get stuck in his idle animation while moving. He can't climb slopes over 45 degrees or jump in this state but he can phase through short walls. There are many ways it can happen but the Swap monitor background glitch was used to demonstrate it here. Watch on YouTube

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.

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#

14 Continues Cheat#

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 use the sound test IDs instead of the actual IDs, as the continue sound does appear as $3F in the sound test.

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#

Pattern Load Cue Crash#

Watch on YouTube

A bug that also existed in the original Sonic the Hedgehog 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.