Sonic Adventure 2/Bugs

From Sonic Retro

Revision as of 19:13, 12 September 2021 by BSonirachi (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Back to: Sonic Adventure 2.

This page lists a number of bugs in the game engine for Sonic Adventure 2, Sonic Adventure 2: Battle, and Sonic Adventure 2 (2012). One-off bugs that stem from the geometry of a single level are a better fit on that level's page, if anywhere at all.

General bugs

Permanent speed adjustment

Each character has a normal base running speed, and there are three ways to adjust this speed:

  • Collecting a Speed Shoes item will add an increment to the character's current speed, which will be reverted 15 seconds later.
  • In Sonic/Shadow 2P, using the Speed Up power has a similar effect, but only lasts 10 seconds.
  • Having Sonic or Shadow charge up a Light Attack will cause their speed to drop to a lower value, and be reverted when they release the attack.

If the game thinks one of these temporary modifiers is in effect (collecting Speed Shoes in the last 15 seconds, Speed Up in the last 10 seconds, or having an unused light attack in storage) and the player dies or restarts the level, it will also automatically perform the appropriate reversion, which is supposed to prevent the player from accruing abnormal amounts of speed. Or so they thought.

The reason it's able to revert the speed at the end of the duration at all is because there's a memory address that serves as "former speed", and when one of these adjustments takes place, the character's previous speed is stored in that address; reversion consists of simply loading that address into the current base speed address.

However, if a player obtains a second speed adjustment while the previous one hasn't yet reverted, the speed that gets stored will be the one that reflects the first speed adjustment. When one of the adjustments wears off, the speed will be "reverted" into having that first adjustment, and (since the "former speed" is never cleared out during a level, only overwritten) when the second one wears off, it will restore the same speed that you already have. (Essentially, this is a stack overflow where the stack size is one element.) Character base speed is persistent across lives, so you can die or restart at this point and you're start out the next life

Putting this into practical terms:

  • In any hunting stage except Security Hall, you can dig into the ground without limit. It's all random, but if you keep digging (as long as you move around a bit between each dig) eventually you'll get two or more Speed Shoes in a 15-second span. This makes the effect of one of the Speed Shoes permanent, and you can restart the level and retain the high speed.
  • Tails and Eggman can't dig, but they're still capable (at least in theory) of achieving the same effect. Collect 80 rings, but not more than 89, then cross a checkpoint to get Speed Shoes as a reward. If you can make your way to another checkpoint (without going over 89 rings) before the Speed Shoes run out, you get the permanent boost of speed. In practice, however, the only one of their stages where the level layout makes this reasonably possible is Cosmic Wall.
  • Sonic and Shadow don't need such a stringent level layout. They can still obtain a permanent speed boost using the Tails/Eggman method (and their greater speed and mobility makes this option feasible in several levels), but even a single checkpoint will suffice. Cross it with enough rings to get Speed Shoes, then charge a Light Attack. The former-speed address now reflects having Speed Shoes, and it's that simple.
  • Be careful, because Sonic and Shadow are also capable of the reverse order: if you charge a Light Attack, then cross the checkpoint while it's still charged, the stored speed will reflect being slowed down from the charged attack, and the effect in this case will be to make you permanently slower. Eventually the effects can be countered by gathering enough Speed Shoes, but if you want the permanent speed boost, be careful not to do it this way.
  • It obviously isn't useful, but there's still another way for Sonic and Shadow to get a permanent slowdown effect without a checkpoint. Charge the Light Attack first, then get yourself into a position where the game forces a somersault regardless of your input (it has to be forced, since the light attack can only be held by holding B or X, and pressing the other one simply cancels the light attack). Sometimes getting jammed into the corner of a somersault barrier can do this; the easiest place is probably in White Jungle where there are somersault barriers that are hollow at the top, so you can jump on them and fall through to the bottom where you're forced to do a somersault to get out from under the barrier. After performing the somersault, if you're still holding the spindash button, you'll perform another spindash which will eventually be charged into a second Light Attack, making the speed decrease permanent. On a trivial note, with two light attacks charged at the same time, you get twice as many lights circling the character, and repeating this process will produce even more wandering lights. If you get up to about 40 light attacks at once, the glut of objects is so great that even the HUD will periodically disappear, and beyond that you can even produce enough objects to crash the game.

Extra hunting items

In a Knuckles or Rouge level, if one of the hunting items (emeralds, pieces or keys) is chosen to be inside an enemy, and you destroy that enemy without making physical contact with it, the item will be floating at the spot of its destruction. What's more, if you proceed to die, on the next life that item will still appear at the same spot you destroyed the enemy before! All 3 items will still be reshuffled and put in new locations, so in that case the remnant item is an illusion: collecting it doesn't count for one of the 3 you need to find, and it doesn't even give any points.

You can destroy enemies at a distance by having another one shoot it with bullets (but not lasers), letting it get caught in the explosion of a thrown or dropped bomb, digging up a bomb panel from the ground yourself, or most straightforwardly, throwing Omochao or another projectile at it.

Not fixed in any version.

Mission 6

(Dreamcast only)

In the level select screen, move to Chao World. Select it with A, but then press B to go back rather than proceeding into the world. This is relevant because it causes your most recent menu to be a character-select menu with 6 options, instead of a mission-select menu with 5.

Next, go to any level where you've completed all 5 missions. Hold A+B at the same time to select it, and instead of seeing the mission-select menu, the screen will turn black (and since it doesn't draw the menu, menu properties will fall back on the most recent visible menu, which was character select). You can still press Left and Right to move through missions and hear a sound when doing so, and if you press Right 5 times, you can select the 6th option: the so-called "Mission 6".

Mission 6 plays the same way as mission 1, except:

  • On the title card, the mission description box says " Mission:", not "6th Mission" or even "1st Mission".
  • The mission objective is also unusual. Each level has an internal number unrelated to its order in the story, but rather based on the order they were created during development; these numbers can be found in the level select code description. The mission objective will be the one normally associated with the 1st mission of the level that comes after the current one in creation order.
  • In most cases, completing mission 6 will simply hang the game (without writing any save data), rather than proceed to the level completion screen. The only levels that will go through with a completion are Route 101 and Route 280.
  • If you complete a kart level's mission 6, the completion screen still displays only a time, and not score or rings, as usual for kart levels. However, it will also display a "PERFECT!" block that's normally associated with getting all rings. If you complete Route 101, the attempt to save your data will write it as garbage to the chunk of memory reserved for Route 280 stats. If you complete Route 280 mission 6, the save data will be written as garbage to the memory where Kart Race data normally goes, but in this case the garbage is out of place enough that if you ever attempt to play the Kart Race minigame again on that save file, the game will crash. You have been warned.

Fixed in Sonic Adventure 2: Battle.

Timer reset after level completion

When you complete a level (by touching the goal ring, lost Chao, or 100th ring), the timer will actually count off 2 more frames before proceeding to the level complete screen. If you can pause the game during this 2-frame window, it's possible to reset or quit out of the level, and cancel the completion. Mission 2 is unique in that if you restart out of it, it won't cancel the completion: instead of going back to start, you'll restart into the level complete screen, with the timer starting from 0 and counting up on the screen itself. When the "NOW SAVING" message appears, the time that will be saved this way is predictable, and will always be 00:08:25 and an A rank.

There's also another method for restarting the timer after completing a level, which works in other missions. It relies on the fact that after triggering a character's death, there is a 175-frame delay before the screen fades out and the next life starts. The objective is to find a place to die (probably by way of a kill plane, since dying that way doesn't cause you to lose control of the character) such that it's still possible to complete the level in a window of time between 121 and 172 frames afterwards (roughly 2 to 2.9 seconds--any sooner than 2 just causes the level to complete normally). If you do that, the fade out to the level completion screen will be preempted by the fade out to the next life, and you'll go back to either the starting point or the last checkpoint. However, the normal level completion data will appear on the screen, and it's possible to control the character and even pause the game. If you choose Restart from the menu, the next life still counts as the level completion screen, and the timer resets to 0 and starts counting up from there. After a combined total of about 9 seconds across any number of lives, the "NOW SAVING" message will pop up, and the current time at that moment will be the time that gets saved to memory. Levels where this is possible include Crazy Gadget, Security Hall hard mode, Pumpkin Hill hard mode, and several 1st missions of hunting stages (but those require significant luck in rolling a specific piece placement to end the level on). It's also possible in mission 2 of Route 280, because the completion screen there is simply a continuation of the level, and you can aim such that the 100th ring is directly between the car and a gap in the road, and launch a boost to collect the ring and fall down the gap toward the water.

Not fixed in any version.

Jump from 0 lives to 99

Like the above, this trick relies on the 175-frame window between death and screen fade. Instead of hitting a goal ring, though, if you can touch the Back ring, there are a different set of quirks that come into play.

  • For Sonic, Tails, Shadow, or Eggman, you can find a Back ring at the end of mission 2 or 3, which will take you back to start in case you've traveled the whole distance of the level without completing the objective.
  • For Knuckles or Rouge, in mission 2 of any level except Mad Space, taking damage anywhere will cause the Back ring to appear at the starting point, so that there's a way to respawn all the rings in case you get hit and there aren't enough left to reach 100. Also, if you go to the spot where the lost Chao appears in mission 3 (and a 1-up appears in missions 1, 4, or 5), and find a way to take damage while that location is within draw distance, a Back ring will appear there as well (even in Mad Space).

If you die and then touch the Back ring before the screen fades, the effect depends on what point in the 175-frame window you actually touched it.

  • Frames 0-66: The screen fades to white for the back ring, causing all objects to respawn, the timer to remain as it was at the moment of death before it starts counting up, and you lose a life. Meanwhile, the death trigger timer keeps counting through the fade process, and when it gets to 175, the screen fades again--this time to black, causing you to lose another life and the timer to reset to 0. (In the 13-66 window, frame 175 will elapse while the screen is fading in from white; in this case it'll wait for the fade-in to complete, and the timer will count off one frame before fading out to black.)
  • Frames 67-120: The screen fades to white. You lose a life and the timer starts from what it was at the moment of death. The 175-frame timer lapses while the game is already busy with the fade procedure, and nothing comes of it: the screen doesn't fade to black at any point.
  • Frames 121-175: The screen fades to black before the back ring routine can be processed, and it counts as a regular death with 1 life lost and the timer resetting to 0.

The window from 67 to 120 (roughly 1.1 to 2 seconds) provides the most desirable effects, because that code path can be executed even when you have 0 lives. The fade to white, even though it results in loss of a life in this case, doesn't go through the check for a "game over" at 0 lives, like the fade to black does. As such, it can reduce you to "-1" lives, and the effects that follow are the result of internal confusion over some functions treating that value in signed context (-1) and other functions treating it in unsigned context (255).

The HUD displays a -1 life total as 99 (from counting it as unsigned and reducing it to a 2-digit display). However, if you pause the game, the "Restart" option is unavailable: it's looking at a signed life total in this case, and -1 is less than 1, so don't allow a restart. Likewise, attempting to Quit from the level and take the "99" lives into a new level will only result in disappointment (-1 is less than the default starting life total of 4, so the game will "helpfully" bring you up to 4 lives), as will believing you actually have all those expendable lives (any death that results in a fade to black will see that -2 is less than 0, and count it as a game over and kick you back out to level select). They're not good for much...yet.

In order to obtain any useful effects, you need to die again, and hit the back ring in the same window of 67-120 frames after death that you did before. The white-screen-only death is still safe, and reduces the life total to -2 (signed) or 254 (not). It still displays as 99, and still has all those undesirable side effects that prevent it from actually being as useful as it looks on the HUD. There is one thing that becomes possible at -2 lives but not -1, though: the ability to gain a life and still have your total be negative afterwards.

Lives are normally constrained to the 0-99 range, and the game tries to enforce it at both ends: after losing a life (at least when it fades to black, as you've just seen), if the life total is less than 0 then count it as a game over. Obviously here, the life total has to be used in signed context. At the other end, after gaining a life, if the life total is greater than 99, reduce it to 99. Notably, this uses the life total in unsigned context, so from 254, gaining 1 puts it to 255, and that's greater than 99 so "reduce" the life total to that level. (If you started from -1/255 lives, then gaining a life just puts you up to 0 and defeats the whole purpose.) Now the 99 lives claimed by the HUD are real for all purposes: you can choose Restart from the pause menu again (and doing so will go to 98), and you can go to another level and still have 99 lives. Any method for gaining the life will do: the standalone 1-up item, 100 rings, or even collecting small animals. This trick is almost always done in mission 2, so 100 rings is the most convenient way because it also results in completion of the level, which causes the life total to save to the memory card for future playing sessions.

Now, it's one thing to say "find a place to die that allows you to touch the back ring in a precise window of 67 to 120 frames after that, then do it again." It's another thing to actually make good on those instructions without a personal timer that's constantly aware of each passing frame. The easiest way, by far, to die in that manner can be found in mission 2 of Security Hall. There are two Spark Beetles in the "C" block of the yellow (second) floor, which will move toward you (albeit slowly) and put up an intermittent damaging electric field, and the second floor is at just the right height that falling in the helpless death animation will land on the back ring at the right time. After getting hit, characters will always be knocked backward from the way they're facing, so get up to the edge of the second floor to your right, stand in the middle of the first two columns of safes, and turn to face away from the starting point, then wait for the beetle to move toward you and hit you into the back ring, and you should be one step closer to the game's fastest method of filling up the life total. It's also possible to perform the steps (albeit with varying degrees of difficulty) in Meteor Herd, Pumpkin Hill, and even Crazy Gadget, but for all practical purposes, Security Hall is the only one worth considering.

Not fixed in any version.

50Hz sticky jumps (GCN only)

The European version of Sonic Adventure 2: Battle on the GameCube introduced a bug that's not in the US and Japanese versions when playing in 50Hz. Occasionally, the game may register two presses of the A button in one frame, causing characters to act strangely. Sonic and Shadow will spontaneously do a Homing Attack from the ground, Tails and Eggman will instantly hover off the ground, and Knuckles and Rouge will cling to walls and floors instead of jumping.

The cause for this bug is the way the game handles 50Hz; frames are dropped so that the game runs at the same speed as in 60Hz when playing in 50Hz, and pressing A during a frame that's being skipped causes the game to register the input on the next frame also. To address this bug, play the game in 60Hz mode by holding down B when booting the game, providing the TV supports it.

Not fixed in any version.

Chao Key glitch (2012 Only)

In the 2012 re-release, the camera can be locked up when picking up the Chao Key to cause a warp glitch. If performed correctly, the player will be taken to the Test Stage instead of Chao World. The easiest way to do the glitch is to play the 3rd mission of Cosmic Wall & pick up the Key by the Mystic Melody shrine, the camera is automatically far enough away, and the mission is shortly completed by reaching the Lost Chao above. Darkspinesonic has a YouTube tutorial for all characters glitch keys. By using this glitch, you can access most stages with most characters.

To do this, you will need the Battle DLC:

  • Go to 2P Battle mode and set the match to 2/3 with no time limit.
  • Complete the set so the stage you want is the final round, then select "No" on the Continue screen & go to Stage Select.
  • Complete the Chao Key glitch with your desired character.

Instead of warping to the Test Stage, you will be sent to your last stage from 2P.

IMPORTANT: City Escape doesn't work for Knuckles or Rouge, Tails/Eggman stages take you to the 2P Battle arena rather than the 1P stage, Metal Harbor doesn't load objects or music, Wild Canyon & Dry Lagoon softlock the game if you aren't Knuckles or Rouge respectively, Death Chamber doesn't load properly with Rouge, and playable levels can be completed by Hero/Dark counterparts on any mission, while only mission 2 & 3 can be finished by alternate characters. (Example: Rouge in White Jungle)

Not fixed in any version.

Graphical bugs

Sonic's classic shoes leftovers

It's well known at this point that Sonic's normal shoes were replaced with SOAP shoes due to a deal, however most of SA2 was done at that point so because of it there are many leftovers, including:

  • the game's artwork (DC & GCN only)
  • Hero Story's opening cut scene until he jumps onto the wing (DC only)
  • Sonic entering the shuttle in Dark Side's Story (DC only)
  • Eggman realising that Sonic, Tails and Amy are on the ARK.

Not fixed in any version.

Chao color problems (2012 only)

Shiny two-tone Chao colors are off from what they should be in the 2012 re-release, possibly due to the rushed condition of the port. For example, a Shiny two-tone run/run/dark Chao will be red with light yellow stripes rather than black with red stripes.

Not fixed in any version.

Level-specific bugs


Sonic Adventure 2 / Sonic Adventure 2: Battle
Sa2 title.png

Main page (SA2B|2012)
Cheat codes (SA2B)
Credits (SA2B)

Manuals (SA2B)
Promotional material (SA2B)
Magazine articles (SA2B)
Video coverage
Merchandise (SA2B)

Development (SA2B)
Hidden content (SA2B) (2012)
Bugs (SA2B) (2012)
Hacking guide

  • Hero Stages
  • Dark Stages
  • Extra Stages
  • Enemies
  • Bosses
  • DLC
  • Story Scripts
  • Prereleases
  • Media