Sonic Advance is the first in the GBA series of Sonic games. Apparently it received a lot of criticism for being too slow. I didn't think it was too slow, but what do I know?
Emulator used: VBA re-recording v19.2. You might want to set the frame skip to 0 (choose "Options->Speed->Frame Skip->skip 0"), otherwise the scrolling will be choppier than it should be.
This run beats Sonic Advance with Sonic+Tails, aiming for the fastest in-game time on each level, then fastest real-time. (No emeralds.) Sonic+Tails isn't a normal character option, they are selected by pressing Up,Down,L,R on the other characters, so technically this uses a cheat code. It makes it more interesting to have a second character, I think, with manipulating a second character on boss fights being good for a TAS. Besides boss fights, Tails has no effect at all (he just gets left in the dust immediately).
This was quite difficult to make because so many precise actions have to be made while the character is far offscreen in order to beat the levels as fast as possible. I worked around that by watching Sonic's position in VBA's memory viewer, and eventually by hacking a "sonic cam" option into VBA to keep Sonic always onscreen (this was pretty complicated to do without desync because the camera position drastically affects the gameplay). It's possible to make an AVI with this of what it looks like when you can actually see Sonic all the time, for example, this AVI of the first act (but I didn't encode it very well...) . There are a lot of opportunities for glitching this game in a TAS. Most of the glitches involve doing an ultra spin-dash (hold down and press the A button 11 times as fast as possible) and are mainly good for horizontal movement, making vertical stages relatively slower. You might be surprised at how well Egg Rocket 1 turned out, though (if you've ever played it before, you'll know how ridiculous a sub-1-minute time on it is), and I was definitely surprised by how that level ended...
Depending on the path, it's possible to skip the loading of the collision boundaries for the rest of the level. Usually that's bad because it means you fall through the level to the bottom and die, but I manage to take advantage of this in Egg Rocket 1. That glitch required extremely precise positioning, by the way (it needed to be literally subpixel-precise, and was very unlikely that I found it).
Interactive objects in the level, such as springboards, enemies, item boxes, or the goal, don't have any effect offscreen. Thus, I can't bounce off of springs, be harmed by enemies, get items, or complete the level until I allow the camera to catch up. Loops and other places where Sonic is supposed to pass behind part of the level also don't work offscreen (they count as walls then, completely halting Sonic although they can be glitched through like other walls). When an interactive object is onscreen, it makes it impossible to glitch through it into a wall (the game teleports Sonic back to where he started a little while after going through). Somewhat surprisingly, rings can be collected offscreen like normal.
In Angel Island 1 and (more noticeably) Cosmic Angel 2, I'm able to move up or down a small amount by spin dashing or attacking while inside a wall. Normally this doesn't work, but it worked there because I had entered the wall directly from a sloped surface (which is rarely possible).
Different wall tiles have different properties for glitching. The Angel Island ones were especially bad for having lots of the tiles that cause you to get stuck. The hardest levels to do were: Egg Rocket 1, Casino Paradise 2, Cosmic Angel 2, Angel Island 1. Besides exploiting programming errors in the game, this run also manipulates randomness on most of the bosses. The final boss in particular was a pain to manipulate.
Here are the in-game times achieved:
|Neo Green Hill 1||0:12:85 ||0:24:45|
|Neo Green Hill 2||0:30:05||0:45:55|
|Secret Base 1||0:26:37||0:39:98|
|Secret Base 2||0:37:10||1:12:05|
|Casino Paradise 1||0:15:52||0:36:82|
|Casino Paradise 2||0:38:52||0:53:42|
|Ice Mountain 1||0:12:32||0:47:63|
|Ice Mountain 2||0:44:62||1:04:03|
|Angel Island 1||0:14:72||1:11:67|
|Angel Island 2||0:37:87||1:06:93|
|Egg Rocket 1||0:53:25 ||2:26:17|
|Cosmic Angel 2||0:42:78||1:14:53|
Total in-game time: 6:49:17
The TSC record times are going by different rules (fastest time using any individual character), should be current as of this submission, and are only listed to give a better sense of how long these levels are "supposed" to take.
: I cross the goal of Neo Green Hill 1 in 9.57 seconds, but get a level time of 0:12:85 because I have to wait for the camera to catch up for the goal sprite to load. Since I outran the camera at the earliest possible moment, and stayed offscreen until the level ended, I believe 0:12:85 is the fastest time possible on that level. Note that time bonus on this and several other levels actually takes longer to count down than the entire level took to complete (too bad the countdown is unskippable).
: The game doesn't display this time because it replaces the timer with a 5-minute countdown at the first rocket transition. To see that the time was 0:53:25, I hex-edited the completed level into the "time attack" mode of the game on that level. I did find a way to skip the first transition and beat the level before the rocket even takes off, but it was slower overall.
adelikat: excellent run, excellent response, accepting