Introduction
It's about time someone did a 100% run of this game! Sonic Advance 3 is, without a doubt, a lot harder to TAS than its predecessors (Advance and Advance 2). With the introduction of the partner system and 20 unique teams to play with, this game offers countless possibilities; even more so when making a TAS.
This idea has always been in my head even before I made my
Sonic Advance 2 "Knuckles" run, but this game's required level of precision with the tag action, as well as its completely different physics from SA2 was rather intimidating for me as a TASer. Combine this with the fact that this game's bosses are incredibly difficult to optimise (more into that later), I thought I would never muster enough patience to even begin this project.
Regardless, I still gave TASing this game a go anyway; I started with some individual level TASes, and eventually understood enough of SA3's physics, tricks and techniques (most of them from nitsuja's outstanding any% run) to work on the full game completion TAS. I had to map out Chao locations (with the help of the maps on The Sonic Center) and key locations, then determine the most efficient order of acts to be played in each zone.
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.
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.
100% completion
I consider 100% of Sonic Advance 3 to fulfil these goals:
- Collect all chaos emeralds
- As with the previous two games in the Advance series, there are 7 "zones" in the game, each with an emerald to collect, by completing additional objectives which are not required to beat the game with an "any%" completion.
- In Sonic Advance 3, there are 10 chao located in each of the 7 zones, collecting all of which will "unhide" the hidden keys in the individual stages. You must collect the key and complete the act without dying to keep it (will elaborate more on keys later on).
- Using the key on a special spring in the zone overworld will bring you to a special stage, where you have to collect a certain amount of rings to get the emerald.
- Unlock all characters
- Sonic and Tails are unlocked from the beginning of the game. To unlock Knuckles, Amy and Cream, you have to beat Sunset Hill Act 3, Toy Kingdom Act 3, and Cyber Track Act 3 respectively with Sonic as the team leader.
- Defeat the extra boss, Nonaggression
- This boss can only be accessed after beating the final boss (Altar Emerald) once, then defeating it again with all 7 chaos emeralds in hand.
Movie objectives
The goals, in order of highest to lowest priority, are as follows:
- 100% completion of the game without playing any level twice
- Death abuse only if it saves both real time and in-game time, not one or the other
- Maximum ring count on special stages
- Collecting more rings past the required amount on the special stages won't affect time in any way, but I thought that for a movie of this length I might as well optimise everything I can and add on to the entertainment value.
- Time can be affected in special stages if you jump, and are in mid-air when the "Good!" message (which appears midpoint and at the end of the stage) would appear. In which case, the message will be delayed until you land, which ends up wasting 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".
Hidden Chao and Keys
There are between 2 and 4 hidden Chao in every level (or "act"), and sometimes one Chao on the zone overworld. Collecting a Chao brings up a dialogue, which pauses the in-game timer, then the game saves the Chao immediately regardless of whether or not you complete the act. While this technically means I can collect all Chao in one level, then die/reenter again and complete it as fast as possible to "save" in-game time, this would both pile on to the movie length, and kill a whole lot of entertainment with its repetitiveness.
As for keys, every level has about 6-8 keys, with half of them appearing in one layout and the other half in another layout. The key layout is random (which means technically there's a 50% chance of any given key appearing in that level), but luck manipulation on my part takes care of that (more on that later too). As mentioned earlier, the layout is determined the moment you start the level, regardless of whether you have collected all 10 Chao in the zone or not.
Therefore, the general strategy of this run will be to collect Chao in a certain route on the way to the goal for each level, then collect the 10th Chao together with the key in an act. Before TASing the act in which I would collect the key, I manually collect all the Chao in that act first then see if the key appears where I want it to (typically placed conveniently somewhere between the last Chao and the goal ring). If it doesn't, I add in small delays of 1 frame increments before entering the "Act Ring" in the zone then try again.
Team analysis
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:
Tails/Sonic
The most used team in this run, unlockable 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...
Sonic/Tails
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 mostly slower than T/S; I only use S/T 4 times in this run. Three times to unlock the other characters in three levels, and once in Ocean Base 2 because of the level layout requiring a lot of vertical jumps to make it through quickly.
Knuckles/Tails
Although this is a very useful team for exploring places and reaching almost anywhere in a level, K/T can't boost at all. I only use this team once in Ocean Base 1, because Knuckles' power attack is required to break a wall, and Sonic's tag action isn't very useful in a level which vertical movement wins out horizontal movement.
Sonic/Knuckles
This team is used twice; in the Ocean Base boss, and in the final Altar Emerald fight. 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 two abovementioned bosses quickly.
Knuckles/Sonic
I only use this team once in Cyber Track 1 to break a wall which requires Knuckles. Cyber Track 1 doesn't require any flying or high jumps to complete, making Sonic the ideal partner for Knuckles. Knuckles' gliding is replaced with a useless headbutt attack when paired with Sonic, effectively rendering him useless when compared to T/S.
Knuckles/Amy
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.
Sonic/Cream
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/Amy
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.
Level notes
The in-game times of the acts, listed in the exact order I played, are as follows:
Stage | Time |
---|
Route 99 3 | 0:48.68 (T/S) |
Route 99 2 | 0:44.05 (T/S) |
Route 99 1 | 0:40.07 (T/S) |
Sunset Hill 3 | 1:00.82 (S/T) |
Sunset Hill 1 | 0:30.23 (T/S) |
Sunset Hill 2 | 0:31.93 (T/S) |
Ocean Base 3 | 0:50.53 (T/S) |
Ocean Base 1 | 0:45.07 (K/T) |
Ocean Base 2 | 1:14.13 (S/T) |
Toy Kingdom 3 | 1:04.88 (S/T) |
Toy Kingdom 2 | 0:53.42 (T/S) |
Toy Kingdom 1 | 0:39.83 (T/S) |
Twinkle Snow 1 | 0:56.17 (T/S) |
Twinkle Snow 2 | 0:53.62 (T/S) |
Twinkle Snow 3 | 0:52.72 (T/S) |
Cyber Track 2 | 0:36.23 (T/S) |
Cyber Track 1 | 0:37.45 (K/S) |
Cyber Track 3 | 1:28.33 (S/T) |
Chaos Angel 2 | 1:35.90 (S/C) |
Chaos Angel 1 | 1:12.82 (S/C) |
Chaos Angel 3 | 0:39.68 (T/A) |
As for the bosses, with a comparison to nitsuja's timings:
Boss | Time | nitsuja | Difference (in frames) |
---|
Route 99 Boss | 0:57.28 (T/S) | 0:57.33 (T/S) | 3 |
Sunset Hill Boss | 0:34.40 (T/S) | 0:34.72 (T/S) | 19 |
Ocean Base Boss | 0:39.10 (S/K) | 0:39.13 (S/K) | 2 |
Toy Kingdom Boss | 1:23.47 (T/S) | 1:23.72 (T/S) | 15 |
Twinkle Snow Boss | 0:36.73 (T/S) | 0:36.73 (T/S) | 0 |
Cyber Track Boss | 0:46.62 (K/A) | 0:46.63 (K/A) | 1 |
Chaos Angel Boss | 0:39.20 (T/S) | 0:39.43 (T/S) | 14 |
Altar Emerald (1) | 0:40.25 (T/S) | 0:40.27 (T/A) | 1 |
Altar Emerald (2) | 0:40.27 (S/K) | - | - |
Nonaggression | 0:35.17 | 0:35.33 | 10 |
And also the Special stages' ring counts if anyone cares (mostly for TSC competing purposes):
Special Stage | Rings | TSC record |
---|
1 | 240 | 240 |
2 | 263 | 263 |
3 | 269 | 268 |
4 | 284 | 272 |
5 | 275 | 275 |
6 | 324 | 323 |
7 | 366 | 351 |
Now for the actual level notes!
Route 99 3
I use Tails/Sonic for the whole of Route 99.
On two occasions, I drop Sonic onto one end of a springboard to immediately propel myself upward. The first Chao requires quite a detour to get (but this isn't much compared to some of the more wacky levels to come). I play Act 3 first simply because the key is easier to get in Act 1, hence I have to play Act 1 last.
After this level ends, I grab the map Chao then enter Act 2.
Route 99 2
The beginning of this level is quite a stretch for Tails/Sonic due to Tails' vertical deficiency, but they are most certainly faster than Sonic/Tails due to the huge boosts I do off downward surfaces and the final stretch where boost mode is greatly welcomed.
Route 99 1
I grab the last 3 Chao and the key here, which is conveniently located before the goal ring. You may notice that I charge a tag action at the very end and not use it; this was to increase Tails' vertical hitbox in order to hit the goal ring. Doing a boost-jump at the very end would've been slower because the distance is already very short, and releasing the tag action wastes a frame.
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 3
I switch to Sonic/Tails here to unlock Knuckles at the end, and also because a lot of high jumps are needed to grab the hard-to-reach Chao as fast as possible. I use a slide to grab the 1st Chao, which looks slow but is actually the fastest way to lose speed and immediately spindash-jump back in the opposite direction. The 3rd Chao is placed inside a rock at an obnoxiously out-of-place spot at the very top of the level; this combined with the length of the G-mel fight made this level run longer than a minute.
Sunset Hill 1
Another reset is done, both to switch team to Tails/Sonic, and to skip the "unlocking Knuckles" cutscene. Compared to Sunset Hill 3, this was a smooth and straightforward level, and the fastest level in this run in terms of in-game time.
Sunset Hill 2
I take a nice shortcut after grabbing the 1st Chao, by deliberately cutting my speed to roll into the half-pipe, propelling me high afterwards. The next two Chao required taking a snaking detour, which fortunately didn't require too much vertical movement. Near the waterfall at the end I charge a tag action and boost-roll past it, instead of riding it down. This saves 10 frames or so. I also grab the key at the foot of this waterfall and complete the level slightly under 32 seconds.
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 3
I play this act first to avoid an additional reset. The first 10 seconds or so may look a little sloppy, but it doesn't affect the timer much because I have to wait for the moving block anyway. The 2nd Chao's location is one of the reasons I wish I used Sonic/Tails instead for their instant exit from the water via a high jump; but Tails/Sonic is still faster for most of the level preceding this.
Ocean Base 1
There are four Chao in this act, one of which is behind a wall which only Knuckles can break. I switch to Knuckles/Tails for the only time in this run for this purpose. I touch a checkpoint midway through the level, then backtrack to collect two Chao and quickly take a death to a moving block to cut down real time and a huge chunk of in-level time.
Ocean Base 2
Act 2 and act 3 both have key locations which don't take up any extra time to collect, but I play Act 2 last and collect the key here simply to avoid reseting to Tails/Sonic for act 3 later. It might look like I waste unnecessary time by hitting the ring box beside the key, but it doesn't matter because I was waiting for a tag action to charge up anyway.
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 3
I switch to Sonic/Tails again, and grab the map Chao before beginning act 3, simply because S/T can collect the map Chao faster than T/S can. Once again, Sonic must be the leader here to unlock Amy at the end of this level, and S/T can actually collect the Chao here much faster. On one occasion I jump through a moving spike block, tricking it to push me forward instead of do damage.
Toy Kingdom 2
There weren't any convenient key locations in this act, hence I saved act 1 for last. Contrary to what nitsuja said in his submission, the jack-in-the-box springs are actually timed objects alternating between a spring and a spiked trap periodically. This, and the numerous moving block sections in Toy Kingdom meant that I had to spend a lot of waiting time for timed objects.
Toy Kingdom 1
After exiting Toy Kingdom 2, I had to delay my entry into the act 1 ring by 6 frames to make the key appear where I want it to. It just (unfortunately) happened that the previous 5 frames in a row gave the other key layout which placed the key too far away from my route.
This act, compared to 2 and 3, was nice and linear, with the exception of the 1st Chao which required a small detour. Unfortunately, I couldn't find a way to leap over the final spinning panda cup.
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. This paid off to the tune of 15 frames at the end.
Twinkle Snow 1
This is the only zone where I play the acts in sequential order. There are four Chao here, and all four are placed in ridiculous spots which greatly slow down the level timing. Regardless, I still managed to complete this under a minute. I grab the map Chao before entering act 2.
Twinkle Snow 2
I kidnap the 1st Chao then immediately run into the enemy beside it to die and save some time. There's a faster way up, by boost-jumping in the reverse direction on the adjacent slope which I used, but I will pick up rings this way and can't die to the enemy immediately. I abuse another death at a checkpoint to save time from travelling all the way back up after collecting the 3rd Chao.
Twinkle Snow 3
This level is very Tails/Sonic friendly due to that huge horizontal section and the slope at the very beginning which allowed me to maintain a X-velocity of 3905 for a good 6 seconds before getting hit by the spikes. As a comparison, jumping out of a spindash immediately gives a velocity of 2296; running off a booster gives 3072, and boost-jumping off a vertical surface gives 4320.
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 boss-leaving-screen delay.
Cyber Track 2
I get the map Chao, then enter this act first to avoid a reset. The 3rd Chao is inconveniently placed next to a spring beside a bottomless pit, so it took a bit of fiddling to boost onto the spring in such a way to cancel all my horizontal speed. Despite this, the level is actually quite linear, which yielded a relatively low time.
Cyber Track 1
I switch to Knuckles/Sonic here because Knuckles is needed to break a wall to get a Chao. This level doesn't require any flight or high jumps, making any team with Sonic as a partner equally useful here.
Cyber Track 3
I reset to Sonic/Tails to unlock Cream at the end of the level, and also because Tails' tag action allows for some huge shortcuts by glitching into the launchers. The very first checkpoint I touch practically screams "death abuse" in my face for the 1st Chao, but taking a death is much slower because I already have some rings from the launcher path. The 2nd Chao is placed conveniently in my path, and the 3rd didn't require much of a detour to get. The key is also located directly in my path shortly afterward.
Cyber Track Boss
I switch to Knuckles/Amy, do the special stage, then enter the boss fight. K/A have the fastest exit from this map due to the their walljumping ability, hence my reason for choosing them. This fight was nightmarishly insane to do; even though the boss always shoots out balls at the same direction at the same time every time, the collision physics are exceedingly weird. I somehow managed to save a frame from this run.
Chaos Angel 2
Another reset here to Sonic/Cream. I do act 2 before act 1, simply because it saves time to exit from this stage, jump down (and grab the map Chao), enter act 1 then reset. Entering act 1 first will drop me into a pit after exiting and I would have to waste time getting back up.
For the act itself, it definitely wins the "most inconvenient Chao location" award, with all four damn Chao placed in locations which require huge detours. The 3rd Chao especially required a snaking route to reach it (I tried jumping from the rail below to reach the series of springs, but Cream's tag doesn't give that much height), costing a good 20 seconds. The 4th Chao required jumping into a low pit which costed a lot of time getting back up onto the faster route of the level. I end up taking the longest time here of all the levels.
Chaos Angel 1
Compared to Chaos Angel 2, this was much easier to run. Most of the level follows nitsuja's route, and I only break off from the path to collect the Chao. I wish I could have taken a death somehow after getting the 3rd Chao to shave off all the in-level time from going through that detour, but there was no quick death near the Chao location.
Chaos Angel 3
I use Tails/Amy here to take advantage of Tails' faster flight and blaze through most of the level. I reached a pillar so early that the spikes hadn't retracted yet; I had to spindash jump and fly off that pillar. The 2nd Chao required a bit of a detour; I had to do the entire level with Knuckles/Amy also, to make sure that Tails/Amy was faster, and they definitely won out especially with the long stretch to the goal ring. Speaking of the final stretch, it's possible to fly all the way to the goal ring from the first pillar I landed on; however the spikes were in the way when I passed the second pillar, meaning I had to spindash jump off there and fly to the goal.
As a bonus, here's a separate TAS [dead link removed] of Tails/Amy beating Chaos Angel 3 as fast as possible. I get a timing of 28.80 in this separate run, improving the current any% TAS by about 4.5 seconds.
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.
Altar Emerald
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 me a reset. 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 extra boss Nonaggression can't be unlocked on the first run of Altar Emerald, even if you have all 7 chaos emeralds. I have to watch the credits in its entirety then come back to defeat this boss again to access Nonaggression. And no, a reset to skip the credits doesn't work - I learned it the hard way. It seems that you must view the two "unlock something" messages at the end of the credits shown by the Chao before you can actually trigger the cutscene leading to the Nonaggression boss fight.
I use Sonic/Knuckles for the 2nd fight, because Sonic must be the leader to unlock the extra boss. Sonic's upward attack also makes Sonic/Knuckles the only viable team to defeat Altar Emerald quickly. By the way, my timing is 1 frame slower than the previous run because Sonic can't boost-jump into the boss area.
Nonaggression
No idea what kind of crack Sonic Team was smoking when thinking up a name for this boss, but anyway...
This boss takes 12 hits to defeat (8 if Easy mode is selected in the options), and the only way to hit him is to charge a tag action to open up his eye, followed by an attack on it. Eggman's tag action takes 2 seconds to charge, and unlike the other characters, you can actually charge his tag action longer to make the boss's eye open up for a longer period of time. This is however slower than simply charging a tag action to its minimum power. It took quite a bit of getting used to this boss to bring the timing lower than nitsuja's 0:35.33.
Special thanks to:
nitsuja - for his outstanding any% TAS of the game being the inspiration behind this run, as well as sharing so many techniques which I have used numerous times.
Anty-Lemon - for helping my coding illiterate self write a lua script for the game. :)
KirbyMastah and Paused - for offering help and strategies, and to KirbyMastah as well for having a comprehensive set of videos on the individual levels which helped me immensely.
You, the viewer, for watching my long movie, and if you read the entirety of this long commentary :)
GoddessMaria: I have to say, this was a well made movie and I can tell that this has been looked into quite a bit to ensure that there isn't any room for error. Despite what may have seemed to be interruptions, the run keeps moving and makes good work of what it has. Audience response was mostly positive and it completes its goals in timely fashion.
Accepting as new branch for Moons.