Bugs:Sonic the Hedgehog 2 (Genesis)
This page details bugs of Sonic the Hedgehog 2 (Genesis).
Sonic 2 has many bugs, some of which were fixed in later revisions of the game.
- 1 Gameplay Bugs
- 2 Graphical Bugs
- 3 Level-Specific Bugs
- 4 Sound Driver Bugs
- 5 Technical Bugs
Multiple Points for Separate Players in 2-Player Mode
If Sonic/Tails destroys a badnik, and Tails/Sonic 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
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.
Over 999 Rings
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 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).
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 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.
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).
Emerald Hill Zone
Broken Title Card Frame
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
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
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.
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.