Disclaimer: a lot of the submission text will be similar to that of my Sonic Advance 3 "100%" TAS.
After making the Sonic Advance 3 "100%" TAS, I knew that the any% could stand to be improved significantly. What initially held me back was my lack of confidence to improve nitsuja's already well-optimised work; looking back now, I'm glad I took on this challenge! This run is an improvement of 1218 frames of in-game time and 2443 frames overall (31.07 seconds) compared to the currently published any% run by nitsuja.
I'd just like to say that this movie would not have been possible without nitsuja's run. Most, if not all of the entire TAS was done while analysing his movie and using it as a reference in a separate window. Most of my lengthy commentary will make references to his run, especially the boss stages. Some of my words here will closely mirror that of his submission as well. I also won't be going into too much detail regarding the game's various tricks and techniques as nitsuja has already amply described many of them in his submission.
There were a few other tricks I discovered which nitsuja didn't mention though. The first one involves catching the partner and not using the tag action; if you do that while jumping upwards, the "catch" provides a small upward boost which can be very useful sometimes (one example where it saved a lot of time was in the Cyber Track overworld, on the set of pendulums before the Act 3 ring). Another noteworthy trick revolves around the moving platforms in the Ocean Base levels. If you jump along the side of said platform (be it a normal jump or a tag action), you immediately come to a stop at the edge of the platform. For some odd reason, jumping on the exact frame you land gives a huge vertical boost, several times higher than a normal jump would give. This trick was used twice in Ocean Base 1, and once in Ocean Base 2.
This TAS was done with VBA-rr v23.5 svn421, with the "Auto-hold" function on R (to always charge a tag action). I only have to press R once to "release" the R button and use my tag action. I also opened a separate VBA window alongside, and ran nitsuja's movie to look through his inputs in common areas and try to improve them (although most of his work is already incredibly optimised for a run done 9 years ago). I also run a lua script (kindly provided by Anty-Lemon) which details X/Y coordinates, X/Y velocity and a timer which also runs in the overworld.
The goals, in order of highest to lowest priority, are as follows:
- Completion of the game without playing any level twice
- Death abuse if it saves in-game time (I couldn't find any opportunities to do so though)
- Fastest in-game time
- Fastest real time
With these goals, which closely follow those of nitsuja's run (except the death part), more team diversity is encouraged, rather than racing through the entire game with one or two teams simply to avoid resetting and switching characters. The character switching no doubt adds a considerable amount of real time to the movie length, but I felt that better-optimised individual levels would add to the movie's appeal much more than an invisible "real-time".
Although there are 20 different teams from 5 different characters to choose from, not all of them are used in this run for two reasons: 1) Not all characters are unlocked from the start; 2) not all teams are fast and/or mobile enough to fit into a run aiming for speed. Here are the teams I use in the run, listed in their order of appearance:
The most used team in this run, accessible from the very beginning of the game. This is definitely the most broken team for any run aiming for speed. Sonic's tag action gives immediate boost mode and, thanks to a bug, allows for an immediate jump after using the tag action (more details in nitsuja's submission). Boosting off a downward surface (preferably a completely vertical one) gives an enormous speed boost; combine this with the fact that Tails maintains his horizontal speed completely when flying, and you have a team which can blast through most levels quickly with ease. However, due to the fact that, on a vertical surface, you have to release the tag action the exact frame it is charged, this makes optimising jumps extremely troublesome as I have to determine the exact frame to begin charging the tag action. The only downside of Tails/Sonic which has a significant impact on this run is their poor vertical movement. This brings us to the next team...
This team can attain boost mode, but only from running off a booster. With Tails' tag action giving a high jump, as well as Sonic's potential to reach high speeds, S/T is a great team in levels which require a lot of vertical movement. However, they are a lot slower than T/S as they don't have access to instant boost mode (and consequently, boost-jumping).
This team's main selling point is the upward flame burst attack which Sonic can use only when Knuckles is his partner. Sonic also has a cooler slide attack, with increased sliding distance and a cool flame animation. Pressing B mid-jump also gives a speed boost and is very useful when used immediately after jumping out of a spindash. While the upward flame burst attack is greatly overshadowed by better vertical movements in Tails and Cream's tag actions in the individual levels, Sonic's upward attack doesn't require any charging (unlike a tag action), allowing him to demolish the Ocean Base boss quickly.
I really like this team a lot. This is the only team which can spindash straight up walls, and is probably the most versatile team of all. Their only downside would be their inability to boost, which unfortunately slows them down in most levels, making a +Sonic team better in such cases. Unfortunately I use this team only once in the Cyber Track boss because they have the fastest exit from the battlefield. K/A can do two levels faster than any other team can: Sunset Hill 3 and Ocean Base 2, but they are inaccessible when playing through those levels the first time.
This is an amazing team, with the ability to make quick, fast jumps (albeit not as high as Tails' tag action) without losing much speed. Unlike with Tails, Cream's tag action maintains most of your horizontal speed and momentum, making her very useful in two of the largest levels in the game. However, this is an extremely difficult team to TAS, because very careful planning is needed for every tag action to land as soon as possible. It's a pity that Cream is unlocked so late in the game.
Tails' flying capabilities get a huge boost when paired with Amy. He gains a lot more altitude, and flies with much higher acceleration. The only downside to his flight is that he only can fly for 3 seconds (unlike the normal 5 when paired with Sonic). However, T/A is put to great use in Chaos Angel 3, where boosting is useless and prolonged flight is crucial.
Like what Mukki did in his Sonic Advance 2 submission, I have annotated the Sonic Center maps with my commentary. I highly recommend you to check out the maps, as they show the exact route and can describe the run better than plain-text commentary. However, not all the levels' commentaries have details on the exact number of frames saved for each trick I used. The maps have been uploaded to MediaFire here! You can also click the names of the individual acts in the table below to access the annotated map of that level.
The in-game times of the levels, with a comparison to nitsuja's timings, are as follows:
|Stage||My time||nitsuja||Difference (in frames)|
|Route 99 1||0:28.72 (T/S)||0:28.97 (T/S)||15|
|Route 99 2||0:37.93 (T/S)||0:39.42 (T/S)||89|
|Route 99 3||0:39.15 (T/S)||0:39.70 (T/S)||33|
|Route 99 Boss||0:57.28 (T/S)||0:57.33 (T/S)||3|
|Sunset Hill 3||0:44.07 (S/T)||0:44.12 (S/T)||3|
|Sunset Hill 1||0:23.75 (T/S)||0:25.47 (T/S)||103|
|Sunset Hill 2||0:22.63 (T/S)||0:24.20 (T/S)||94|
|Sunset Hill Boss||0:34.15 (T/S)||0:34.72 (T/S)||34|
|Ocean Base 3||0:39.05 (T/S)||0:39.43 (T/S)||23|
|Ocean Base 1||0:33.70 (S/T)||0:34.68 (S/T)||59|
|Ocean Base 2||0:54.82 (S/T)||0:55.22 (S/T)||24|
|Ocean Base Boss||0:39.10 (S/K)||0:39.13 (S/K)||2|
|Toy Kingdom 3||0:54.97 (S/T)||0:55.13 (S/T)||9|
|Toy Kingdom 1||0:27.07 (T/S)||0:27.38 (T/S)||18|
|Toy Kingdom 2||0:33.87 (T/S)||0:34.68 (T/S)||48|
|Toy Kingdom Boss||1:23.45 (T/S)||1:23.72 (T/S)||16|
|Twinkle Snow 1||0:33.73 (T/S)||0:34.47 (T/S)||43|
|Twinkle Snow 2||0:47.63 (T/S)||0:48.48 (T/S)||50|
|Twinkle Snow 3||0:43.87 (T/S)||0:44.50 (T/S)||38|
|Twinkle Snow Boss||0:36.73 (T/S)||0:36.73 (T/S)||0|
|Cyber Track 1||0:30.75 (T/S)||0:31.17 (T/S)||25|
|Cyber Track 2||0:28.95 (T/S)||0:29.17 (T/S)||13|
|Cyber Track 3||1:11.65 (S/T)||1:12.93 (S/T)||77|
|Cyber Track Boss||0:46.62 (K/A)||0:46.63 (K/A)||1|
|Chaos Angel 2||0:55.12 (S/C)||0:56.97 (S/C)||111|
|Chaos Angel 1||0:59.13 (S/C)||0:59.55 (S/C)||25|
|Chaos Angel 3||0:28.25 (T/A)||0:33.53 (K/A)||317|
|Chaos Angel Boss||0:39.20 (T/S)||0:39.43 (T/S)||14|
|Altar Emerald||0:40.25 (T/S)||0:40.27 (T/A)||1|
Here are the boss notes, which are not on the maps:
Route 99 Boss
Bosses in Sonic Advance 3 are ridiculously difficult to optimise. I have to end the fight with Eggman as far right on my screen as possible, to reduce the delay of him slowly flying away from the map, while also ensuring that Tails is as close as possible to the right. Hitting the boss on the very first possible frame proved to be a huge challenge with Tails/Sonic as well due to their poor attacking range; it took some 2-3 hours to finish this boss. I also saved 3 frames from nitsuja's run, because jumping higher into the G-mel fight actually makes him land earlier for this stage.
Sunset Hill Boss
This was another nightmare to optimise. This boss is the most random out of the other 7; hex editing even a single frame of delay before the run will cause it to desync entirely, even with the exact same inputs. Here I take a few hits to abuse the invincibility to land certain hits more easily; the final hit has to be dealt in such a way to force the boss offscreen after it dies. This nearly drove me insane, but I miraculously managed to get a hit where the delay before regaining my controls was greatly reduced. This allowed a huge time cut from nitsuja's run.
Ocean Base Boss
Sonic/Knuckles is the only team I have at this point which can damage the boss shorter than its invulnerability period, hence I switch to it for this boss. I had to use a series of inputs and delay the 7th hit in order to make him end up on the far right of the screen for the 8th hit. Nitsuja also did this, but I managed to land that 7th hit 2 frames earlier, hence the improvement.
Toy Kingdom Boss
You can refer to nitsuja's commentary for more information on this boss. I noticed that nitsuja used delayed hits to luck manipulate the boss into using the ideal attacks, but I instead land every hit as early as possible while using other movements (flying to the other side, getting hit etc) to manipulate his attacks (in case you're wondering why I do a bunch of stupid stuff and intentionally get hit). This paid off to the tune of 16 frames at the end.
Twinkle Snow Boss
I matched nitsuja's timing here. What happens is basically, at the beginning of the fight I wait for him to get into a position where I can do 8 consecutive hits without giving him a chance to attack. I then land just enough to the left such that the screen is scrolled to the left as much as possible, to reduce the delay when the boss is leaving.
Cyber Track Boss
K/A have the fastest exit from this map due to the their walljumping ability, hence my reason for choosing them. I wanted to reuse the input from my 100% run but decided to just redo the entire thing while trying to squeeze in more action and entertainment. Sadly I wasn't able to save more than 1 frame, because the boss always shoots out balls at the same locations and intervals.
Chaos Angel Boss
I switch to Tails/Sonic again, for a faster entry into the boss arena, as well as a faster exit. A bit of luck manipulation was needed to get the boss all the way to the right for the final hit, but I managed to do it a little quicker than nitsuja and save 14 frames.
Nitsuja switched to Tails/Amy here, but I realised that Tails/Sonic can defeat this boss 1 frame faster by jumping into the final boss arena with a boost-jump. This saved a reset and compensated for the additional reset to Tails/Amy at the start of Chaos Angel 3. A bit of luck manipulation was needed after the 3rd hit, to ensure that both his hands drop down and come back up at the earliest possible moment (this is because when his hands come back up, he starts shielding his face, adding 1 second or so to his invulnerability).
The "timer" address (0300094E), which shows the level timer in frames, also runs in the overworld acting like a "hidden timer". This helped me a lot in optimising the overworld navigations. Perhaps an interesting improvement would be doing Chaos Angel 2 first then followed by Chaos Angel 1. Since exiting act 1 would drop you into a pit, forcing you to high jump back up, it was a little faster to do act 2 first then jump down into act 1, after which I would simply reset to the next team.
The only act which I used a different team than nitsuja is Chaos Angel 3. While the additional reset to Tails/Amy costs about 10 seconds, this was compensated by not resetting at Altar Emerald. Using the same team for the Chaos Angel boss and the final boss also meant that I didn't have to waste time travelling from the factory ring to the Altar Emerald ring with a completely different team.
It is worth noting that due to the unavailability of some characters early on in the game, not all the levels in this TAS were done with their optimal teams; I simply use the team I have at that point which can beat the level as fast as possible. If anyone is interested in seeing these levels completed with a faster team, you can click on the faster team's name in the notes below.
These are the levels which cannot be played with their optimal teams the first time round:
- Route 99 2 - There are two teams faster than Tails/Sonic on this level: Sonic/Amy (0:37.20) and Sonic/Cream (0:34.55), with the latter being slightly faster than the former. Obviously, only Sonic and Tails are available at the beginning of the game, and Tails/Sonic is much faster than Sonic/Tails here.
- Sunset Hill 3 - One of two levels where Knuckles/Amy (0:35.88) is faster than any other team, because they can spindash straight up the huge shortcut at the end. I used Sonic/Tails here instead of Tails/Sonic in order to unlock Knuckles at the end of the level (and also because the former is actually faster).
- Sunset Hill boss - Cream/Sonic is slightly faster than Tails/Sonic here because Cream can fly with enough altitude to reach the goal ring without needing to touch the curved slope.
- Ocean Base 3 - Cream/Sonic (0:38.20) is slightly faster than Tails/Sonic here because Cream can grab the speed shoes faster than Tails can; consequently, this also allows said team to reach the retracting spikes before they pop up, allowing them to clear the higher platform with a boost-jump.
- Ocean Base 2 - This is the other level which Knuckles/Amy (0:45.60) wins out once again, and by almost 10 seconds too. This stage requires a lot of vertical movement which forces me to use Sonic/Tails instead of Tails/Sonic.
- Ocean Base boss - The timing here is largely dependent on how far you can get knocked back while dealing the last hit to the boss. Cream/Knuckles (0:38.45) can do this slightly faster.
- Toy Kingdom 3 - There are two teams faster than Tails/Sonic here; Cream/Sonic (0:49.77) and Knuckles/Sonic (0:52.43). Even though I already have Knuckles unlocked at this point, I stuck to Sonic/Tails instead because Sonic must be the leader to unlock Amy on this particular stage; two subsequent levels (the Cyber Track boss and Chaos Angel 3) would take considerably longer to complete without Amy as a partner.
Whew! The final improvement was really surprising, even to me. I wasn't expecting to be able to improve every single level (it's nitsuja we're talking about here :P).
Once again, my heartfelt thanks to nitsuja for creating such an incredible TAS of the game. I probably wouldn't even have gotten past the first level if it wasn't for him revealing so many tricks and techniques on this game.
Also a shoutout to Anty-Lemon for helping me write a lua script for this game. It was definitely indispensable in optimisation.
T'was also a pleasure to interact with the TASvideos community, including a select few who had a similar interest in Sonic Advance 3 (thanks, KirbyMastah and Paused).
Thank you for reading my commentary, and I hope you enjoyed the run!
Nach: Nice improvement, accepting.