(Resubmitted to be 1.73 seconds faster in Ocean Base 2. I put a save before the change here for anyone that has already seen the previous movie and wants to see the change without re-watching the whole thing.)
In case you plan to read them, get ready for some long author's comments:

Intro

Sonic Advance 3 is the third Sonic game released for GBA, and is certainly the longest and most difficult of those three to TAS. It is the least-breakable Sonic Advance game, with no way to gain potentially unlimited speed (air dash has been removed) and not as many bugs leftover from the previous games. Not only does it have more (and more complicated) levels than the previous games, but this time there are 20 different teams of two characters to play as (each with different capabilities and "tag actions" to perform), which adds a lot of complexity to figuring out how to beat each level the fastest. There's no clearly superior team at everything, it was fairly well-balanced with different teams possessing different strengths and weaknesses, although this run takes advantage of some exploits that upset that balance a bit. Of course, this being a Sonic game means it has difficult-to-optimize and often non-intuitive physics.

Goals

In order of highest to lowest priority, the goals were:
  • beat all levels from a new game without playing any level twice
  • fastest (sum of) in-level times
  • fastest time
These goals were chosen because I thought they would result in the most interesting movie. They did not result in the most easy-to-make movie by any means, which is probably a good thing. Fastest time on its own would mean using suboptimal character combinations on many levels simply to avoid taking the time to switch characters, which wouldn't have been much fun. Playing levels twice to get better times after having unlocked more characters would (I believe) have questionable entertainment value for the added movie length, and would possibly result in re-playing quite a few levels for very small time gains. I chose to start from a new game because doing that feels more like playing through the game from start to credits, instead of running through an already-beaten game and happening to play all of the clearly-already-completed levels in order.
I admit that the character switching means that the run as a whole isn't very well-paced, if nonstop action is your idea of good pacing, but I'd rather have that than less-interestingly completed levels with less variety of teams and moves used.

Times

NameTAS TimeTSC record[1]
Route 99 10:28:97 (T/S)0:34:57 (A/S)
Route 99 20:39:42 (T/S)0:44:85 (S/T)
Route 99 30:39:70 (T/S)0:47:77 (C/S)
Route 99 Boss0:57:33 (T/S)0:58:57 (C/K)
Sunset Hill 30:44:12 (S/T)[2]0:42:93 (K/A)
Sunset Hill 10:25:47 (T/S)0:28:88 (C/S)
Sunset Hill 20:24:20 (T/S)0:28:45 (A/S)
Sunset Hill Boss0:34:72 (T/S)0:36:22 (C/K)
Ocean Base 30:39:43 (T/S)0:44:80 (C/S)
Ocean Base 10:34:68 (S/T)0:36:99 (S/T)
Ocean Base 20:55:22 (S/T)1:04:15 (S/T)
Ocean Base Boss0:39:13 (S/K)0:39:82 (C/K)
Toy Kingdom 30:55:13 (S/T)1:02:78 (C/S)
Toy Kingdom 10:27:38 (T/S)0:37:35 (C/S)
Toy Kingdom 20:34:68 (T/S)0:49:10 (C/S)
Toy Kingdom Boss1:23:72 (T/S)1:39:34 (S/K)
Twinkle Snow 10:34:47 (T/S)0:42:95 (C/S)
Twinkle Snow 20:48:48 (T/S)1:06:30 (S/T)
Twinkle Snow 30:44:50 (T/S)0:53:53 (C/S)
Twinkle Snow Boss0:36:73 (T/S)0:43:52 (C/A)
Cyber Track 10:31:17 (T/S)0:35:78 (C/S)
Cyber Track 20:29:17 (T/S)0:34:95 (S/C)
Cyber Track 31:12:93 (S/T)1:29:37 (C/S)
Cyber Track Boss0:46:63 (K/A)0:51:27 (A/S)
Chaos Angel 30:33:53 (K/A)0:47:18 (K/A)
Chaos Angel 10:59:55 (S/C)1:29:25 (S/T)
Chaos Angel 20:56:97 (S/C)1:28:62 (S/T)
Chaos Angel Boss0:39:43 (T/S)0:41:53 (C/K)
Altar Emerald0:40:27 (T/A)0:37:58 (?/?)[3]
[1]: (as of the time this was posted, although they were very different when I started and will probably continue to change)
[2]: Slower because the K/A team used for the record is not unlocked yet this early in the game. When using the K/A team, I get 0:36:65.
[3]: I dispute the legitimacy of this time (see level notes). EDIT: said record times have apparently been retracted after this TAS was made. Current standing record there is now 0:42:70.

Route Planning and Maps

In order to help plan routes through the levels, I modified the VBA camera hack I had used for my Sonic Advance run in order to take screenshots at each position in the level (at 1/4 scale) to generate whole-level maps. It took a long time to output because the levels are quite large, the largest having about 168 screenfuls of area, and I wanted high-quality output that clearly showed all sprite-based objects in the level as well as the level layout, but the result was extremely useful for making this run. As an example, here is a map of the shortest level. I daresay the Twinkle Snow 2, Chaos Angel 1, and Chaos Angel 2 routes would have been terrible in comparison if I hadn't had those maps handy. If TSC is up right now you should be able to find all of the Sonic Advance 3 maps there. You might not intend to plan any routes, but it is neat to see what the levels look like in entirety. (And if anyone is ever crazy enough to make a 100% run, look closely and you can see all of the Chao on those maps...)
Also, the videos other people have put up at TSC (thanks Quartz) helped greatly and I used them in conjunction with the maps whenever possible. Having something to compare to always makes things easier, even when it happens to follow a completely different route.

Making / General Notes

As far as general TAS-making techniques go, I was monitoring the character's speed and tag action counters at all times as well as boss health and invulnerability countdown timers when applicable. In general, the most important memory viewer address was 030015D8 set to 16-bit with decimal display on, which holds the character's current speed in x then y followed by some other useful stuff. Some of the other addresses I needed to monitor were dynamically allocated to apparently random locations in memory, so I had to do a new cheat search for boss information at every encounter.
For recording it, I used frame advance and frame search for basically everything. I made sure the character is traveling faster than normal whenever possible, which is to say, almost all of the time. I used auto-hold on the R button so that when I wasn't holding it down, it was always charging, and I only had to "press" the R button for one frame to perform the tag action and ready it to charge again. Some of the charging was unnecessary as I periodically reset the charge to avoid using it, but I didn't consider that a bad thing because it meant bringing the partner onscreen more often.
A final note about tag actions: Sometimes it might look like I purposely do something slowly, such as dawdling before hitting a spring or walking instead of spindashing, and in all of those cases I was waiting for a tag action to charge up because it was necessary to use one recently and it needed to be used again to keep following the fastest route, and/or because special moves like spindashing or flying will partially reset the tag action charge counter. Tag actions take 1.5 seconds to charge from scratch, or if the R button has not been released since the last time something else reset it (such as spindashing or running along a wall) then they only take 1 second to charge. (It's also possible that I'm simply waiting for a timed level object, although I didn't need to do that very often.)

Techniques

While not too numerous (or so I thought when I first started writing this), several bugs and other tricks were discovered while making this TAS. I'll list a few of them here.

Boost Tag Action Bugs

The most important ones have to do with Sonic's tag action. Sonic's tag action is supposed to give you a boost as if you were running over a booster, and it is supposed to work even in the air, but since you can jump while running over a booster, that means you can use it to jump while already in the air if you use Sonic's tag action boost and jump at the exact same time. Not only that, but the frame spent jumping causes the boost to get applied for 2 frames instead of only 1 frame, giving extremely fast movement (12 pixels per frame instead of the usual 10). (As another variation of this maneuver, holding Down to roll while using a tag action boost also gives the extra speed, obviously without the jump.) Additionally, if the boost+jump is done while on the ground on a downhill surface, preferably a completely vertical one, that speed goes even higher (up to 16 pixels per frame horizontally). Because it counts as regular jump, characters that can fly can do so out of a boost+jump, and note that flying with Tails, unlike with Cream, does not decrease horizontal speed. Other tag actions can be done while still in the air from a boost+jump, but once you are already going that fast it only slows you down to do more of them.

Cream's Tag Action

Another trick (this one probably intentional) has to do with the use of Cream's tag action. Her tag action switches you into a mode where you can activate Chao attacks with the B button, and also gives you a little upward boost if you do it while in the air. Most people thought it was worthless for gaining height, but I found that it works by multiplying your current upward velocity, thus giving you quite a large upward boost if you use it immediately after jumping instead of near the peak of a jump. This meant that Sonic/Cream suddenly became a viable alternative to Sonic/Tails for a team specialized at making high jumps quickly. Cream is unlocked quite late in the game, but in this TAS she's still put to good use on the largest two levels in the game.

Sticking to Blocks

I found an odd property of moving blocks: If you jump into the side of one while facing away from the block, it will temporarily stop you but it won't actually change your velocity, meaning you will suddenly speed up and go past the block as soon as either falling below it or rising above it. This happens for some other objects as well. If two moving blocks are touching each other, this allows for passing straight through both of them (with each block thinking you are on the outside of it).
The moving spike blocks in Toy Kingdom can be tricked into actually pushing you forward instead of doing damage, by jumping directly through them at full boosting speed.

Going through Rails

Rails that you should normally catch on can be passed through at certain angles, especially where the rail curves. Of course (these are well-known), rails can also be jumped from to go through them, or a tag action can become fully charged while on the rail to fall through, but those are both slower than passing clean through. It's not always possible to get a good enough angle and speed to do it, however.

Delayed R-Button Trick

As a minor bug, R-button tricks are not reset by tag actions, meaning that you can hit a spring, land, do a tag action high-jump at the instant of landing, then do a trick. Or, you can hit a spring, tag action boost(+jump), then do a trick. The former of those was used to save time in Toy Kingdom 3.

Early R-Button Trick

When going through those hoops in the Twinkle Snow levels, releasing then holding R before going through the hoop causes you to do a trick as soon as you exit the hoop. The trick normally follows the same path as the hoop would launch you through, which isn't helpful at all, but if you take damage immediately beforehand you instead do a normal trick and regain control. This was used once to save time in Twinkle Snow 3.

Tag Actions on Walls

A ready tag action is cancelled by running on a wall or ceiling and can't normally be used there, but if the button is released exactly when the tag action becomes ready, it is executed while still on the wall. I use this occasionally for getting a boost when upside-down and a couple of times to do a high jump while running up a wall, and it's a required component of the trick where I use a boost+jump while running down a wall to get the highest possible speed.

Tag Actions on Walls

Tails' flying tag action can be used to force the main character down into any sprite-based object, including into Cyber Track launch pads that should not be possible to enter from that end, allowing for some big shortcuts in Cyber Track 3. Simply jump when on it then immediately release R. Doing this trick also allows for teleporting downward through platforms (I found no good opportunity for using that) and some other objects.

Fast Stopping

After landing from a jump in one direction, normally it takes longer than usual to come to a complete stop holding the other direction, but I found that holding for at least 1 frame on the ground in the direction you are already going causes the velocity to suddenly become 0 as soon as it goes below 2 pixels per frame.

Fast turning and dashing

I found that the "turning around" animation can be cancelled by tapping either Up or Down. When combined with the fast stopping move above, that makes it possible to land from a jump while still moving forward, quickly stop and face the other way, then fast-turn back and spin-dash forward. The typical sequence of input for it looks kind of strange, if you're wondering why I sweep the control pad in a circle before spindashing.

Edge dashing

Normally spin dashes cannot be done when too close to an edge, because the "about to fall" animation prevents ducking, but this can be circumvented either by doing a small roll from slight movement at the edge, or by doing fast stopping or fast turning on the edge. Or by landing on the edge again while holding Down, but that tends to be slower.

Maintaining Speed

Jumping immediately upon landing prevents the ground's maximum velocity from being applied, which is good because even the regular jumping speed is higher than the maximum on-ground velocity. If this is done on a downhill slope, the speed is increased by the slope's angle without being decreased by the ground, often giving speeds higher than the boost+jump trick.

Starting Quickly

If possible at the start of every level, after spindashing (revving it twice) I always either fly and immediately land and jump again with Tails in the lead, or jump and use the B-button when Knuckles or Amy is the partner. This is because you cannot alter your speed when jumping out of rolling, which the spindash causes, so landing quickly and jumping again or using one of those B-button attacks gets around that problem. (It's a problem because spindash speed is slower than normal maximum jumping speed.)

Note (real-time / records)

A few of the above tricks are possible to do in real-time, especially when combined with pause abuse. The TSC record times would likely not be as low as they are if I had not already revealed some of these that I found when initially working on this TAS. But, I thought: If this TAS is going to be impressive, it will be on its own merits and not because of me witholding information to make it easier to beat the real-time records.

Level Notes

Here I'll try to describe anything noteworthy/unusual or that might be considered a mistake without explanation, on each of the levels.

Route 99 1

I use Tails/Sonic and abuse the bugs with boost mode quite a bit to beat the level in less than 30 seconds. (If you're not familiar with the game and this doesn't look really fast to you, umm... try beating the level once yourself and see if you can get anywhere near that time.) The high precision necessary to do this is in pretty much all of following levels as well so I'll not mention that anymore. Note that Tails is not supposed to say "Yeah!" when beating the level, I tried to substitute R-button-trick voice clips for normal sounds like that when it can be done without wasting time.

Route 99 2

This level isn't really made for Tails/Sonic, and they lost quite a bit of time near the start due to having no high jump and Tails being slow at flying upward when he's with Sonic, but made up for it by the end with several long stretches of traveling much faster than Sonic would. Note that like all moving in-level object, the platforms activated by switches are on a global level timer, so it doesn't matter when I hit the switch, the platform will be at a certain place at any given time (all the switch does is un-hide it). This is one of the few places where I wait for a moving platform and ride it up, because going up without it (even if I jump from it partway up) was slower and also would require waiting at the top for another tag action to charge.
I think this must be one of the most improvable levels by the looks of it, although I did it 3 times and the improvements leveled off to almost nothing by the last one. I also did the whole thing optimized with Sonic/Tails just to make sure Tails/Sonic was really faster, and they were faster by at least a second. Perhaps another team would be much better than either, but of course, only Tails and Sonic were available at this point in the run.

Route 99 3

I manipulated Sonic into helping me break the barrier so it looks like I only had to hit it once to break it. The partner's actions are actually semi-random, so I got him to do that by hex-editing small delays into the trip between the last level and this one, which avoided adding the luck manipulation time to the in-level time. Soon after that, I took advantage of the way the swing handle only partially resets the tag action charge if I don't release R, in order to boost over the next barrier without needing to fly or purposely wait in the air for it to charge before hitting the spring.
Near the end, I make Sonic spring me up into the air by preparing a tag action then cancelling it at the last moment, dropping him onto the other end of the springboard. It was a little hard to set up but not random like the other manipulation to break the barrier was.

Route 99 Boss

The first part is a G-Mel mini-boss fight. It's an extremely easy fight so I fought him in a purposely minimal/lazy way this first time. Note that for all of the G-Mel fights, the blinking is not a terribly good indication of when he's vulnerable, and the process of hitting him safely is kind of weird (for jump attacks, it often depends on what he's doing at the time and the angle you hit him at, and he sometimes becomes invulnerable to certain types of attacks while not to others). I don't use a boost tag action to get to the next part because it wasn't any faster (nor was it slower) for such a short distance.
The actual hammer boss I managed to hit at the earliest frame each time, such that it never turns blue between hits. You might wonder why I don't end the fight as far to the right as possible; It's because the time keeps ticking while Eggman is slowly flying off to the right from wherever he was when I beat him, and I can get across the screen much faster than that, so I ended just far enough to the left to get Eggman to start flying from as far to the right as possible. What a tricky thing for them to make necessary for getting good boss fight times...

Sunset Hill 3

I switch to Sonic/Tails before this level because Sonic must be the leader when beating this particular level in order to unlock Knuckles, and because that team actually turned out to be faster on this level. I reset the game to switch characters because it was a little faster than going back into the ring and waiting for all of the transitions etc. I hope you can get used to seeing "Presented by SEGA" because it was never faster to not reset when switching characters... Although I used the emulator's reset command, the game also has a soft-reset button sequence (which I didn't use) that gives similar results.
The best team for this level is Knuckles/Amy, which I obviously couldn't use the first time playing it considering that this level unlocks Knuckles and a later level unlocks Amy. See the notes in the Times section above if you want to see a separate movie of this level done with the Knuckles/Amy team. I used the same huge shortcut that the Knuckles/Amy team can use on this level, but the problem is that no other team can follow that route as fast as Knuckles/Amy because that is the only team that can spindash straight up walls (and do "ninja-like" walljumping).
G-Mel is at the end of the level so you get to see him again already, although this second fight with him is still pretty easy.

Sunset Hill 1

I switch back to Tails/Sonic because this and the next level are very well-suited for a team that is specialized for fast horizontal movement. The route I chose is difficult with all of the jumping off of tiny blocks and just barely clearing platforms, but it makes the level looks much more straightforward than it really is.

Sunset Hill 2

Here I get the shortest of any level times in the game. After going down that ramp near the end, I reverse directions and boost through it earlier than it seems like should be possible, before getting near the ground I'm supposed to be running along when going through it. I had to slide in the water briefly because after that boost I was travelling much too fast to jump down over it immediately.

Sunset Hill Boss

This boss is fairly random but was quite fun due to the circular arena for zooming around with boost mode. I deal the final hit in an unusual way specifically to cause the boss to end up off the right side of the screen. As it turns out, not only does it take longer to regain control the further Eggman ends to the left, but it actually takes less time the further he is offscreen to the right, subtracting time away from when he is supposed to be saying "You're going to pay for this!", which is why you only hear "You're go" before the spindash sound interrupts him. It's quite hard to end up in a good position with Eggman also on the right on this boss fight, but that's by far the best one I could find here. Note that it's not possible to do this at all on several bosses; some of them simply refuse to go offscreen.

Ocean Base 3

This is the only Ocean Base level that isn't helped much by high jumping, so I stick with Tails/Sonic for this level. Those waterfalls can be jumped up, but touching one slows you down and locks out flying and tag action charging until hitting the ground. I hit a shield monitor with Tails' flying to get a big upward boost, which nicely worked out to absorb the hit I used soon after that to go from moving right at high speeds to falling down to the left without hitting the waterfall.
This is also the only level I got Sprint Shoes at because that let me take a nice trajectory up through the air soon afterwards, made some other sideways movement faster, and was nearby on a platform I needed to fall from anyway (pre-jump off the edge while getting it), the combined effect of those three being barely enough to warrant it.

Ocean Base 1

Back to Sonic/Tails for two levels. It's a fast route mostly following the existing TSC record video's route. Note that the jump off of the falling platform onto that spring (about 14 seconds in) has a window of success of only 1 frame with not much alternative way of progressing along that route.

Ocean Base 2

I managed to reach the first crushing platform so early that I spindashed off the top while it was falling. I took a shortcut from the (previous?) record route, it required 3 high jumps but involved much less distance so it ended up being faster by a second or two. I use a high-jump-on-wall as a slightly faster alternative to going left and hitting the spring to get up the wall.
Damage boosting up onto the ledges would have gotten me onto the ledges faster, but I was watching the tag action counters and noticed that landing normally without hitting them resulted in the tag action being ready sooner. I fly onto a spring to get some extra height off of the spring to reach a pole on the wall without having to wait for the crushing block to start rising back up to jump off of it. Once I get to the top, I've no need for further tag actions, and a damage boost gets me onto a booster pad earlier.

Ocean Base Boss

For this boss, I switch to the Sonic/Knuckles team for the only time, because it's the only team I have at this point that can reach the boss at the top of the screen in a shorter time than its invulnerability period, due to the upward flame burst that Sonic can do when Knuckles is the partner. There's a lot of luck manipulation here to get the boss to end up all the way to the right.

Toy Kingdom 3

I switch to Sonic/Tails because Sonic has to be in front for this level to unlock Amy, and it might actually have been faster than Tails/Sonic because of the shortcuts I take around timed blocks and the downward slopes that let me match or exceed boost+jump speed. At the start I use a weird property of the block with the spring on it to cancel my horizontal movement and jump straight up into the spring enough though it shouldn't have been possible from that angle. Soon after that I use the "delayed R-button trick" (for the only time) off a balloon to spin down a path without having to stop and lose momentum partway down it. In this and other Toy Kingdom and Twinkle Snow levels, I skip touching as many of the spinning cups or rail carts as possible (it is just barely possible on many of them, probably not intentionally).
Again you will see G-Mel, and for the only time I let him use a missile attack (and just barely dodge in-between the missiles) because this is the only encounter where his missile attacks don't also make him invincible.

Toy Kingdom 1

Back to another fast Tails/Sonic level, with a route that worked out quite nicely. Tails and Sonic do something a bit strange when this level ends: For some reason they walk in place right next to each other, failing to get to where they're supposed to go, then give up and do their victory animations there. It looked funny and didn't seem to waste any time, so I left it in.

Toy Kingdom 2

And another fast Tails/Sonic level. It looks like I do high boost+jumps over moving blocks a couple of times, but Tails can't jump that hight, what really happened is a boost+jump onto the block, combined with facing left to do the glitch where my speed doesn't get reset when I hit the block and I continue through it, then the game notices on and pushes me on top of the block from where I do a second jump and continue to the right. At one point I use one of those spring boxes that can randomly have a spiked spring come out, and apparently the decision is random based on previous input or sound samples and such. I would have expected some sort of human-usable trick to knowing when it will be a spring in a level intended to be time-attacked in real time, like checking if the seconds counter is even or odd.
This level wins the award for "most inconvenient overworld exit location", placing me directly on a slope to a wall where I can't easily stop to spindash or quickly continue up the wall.

Toy Kingdom Boss

This boss does not have a set number of hits before it dies, but instead crawls left when vulnerable and needs to be pushed off the right edge into a pit to beat it. Every time the boss is hit, the box opens and one of three things happens. If you're lucky, a jack-in-the-box type thing comes out, which doesn't attack you unless you purposely jump into it, and then the boss quickly becomes vulnerable again. If you're unlucky, the boss does one of two enormously time-wasting attacks.
This fight, then, is mostly a matter of luck manipulation. The jack-in-the-box attack becomes less likely as the fight goes on, until when the box starts to go over the righthand edge, then it is simply impossible to make it happen. I tried to fool around quiet a bit and always kill those 3 enemies that kept popping out, since this battle has so much waiting time. Again, when the battle ends, I make sure to end with the boss in the position that cancels as much of the delay until regaining control as possible. Note that if he's too far right and the delay time goes negative, it reverts back to normal and you start losing time again as if he were just barely onscreen.

Twinkle Snow 1

Tails/Sonic again. I take a fairly novel route to maximize the time spent boosting at 16 pixel/frame speeds, when I noticed that huge downhill stretch and the loop conveniently going into it.

Twinkle Snow 2

I found this to be the most difficult level to plan because there were so many routes of similar lengths to consider (at least 3 different branches that had to be tested both ways for large parts of the level). Also, the team wasn't obvious, but I found Tails/Sonic to be fastest. Oh, and the route I did use was really difficult to execute; it took over an hour to do that inconveniently-shaped section between 18 and 23 seconds into the level. That reverse-boost shortcut underwater worked surprisingly well, and was what made the difference between that and another completely different route being faster. Despite taking a route that involved traveling a large distance underwater, it was covered so quickly that the countdown didn't even start until about 15 frames before I was exiting the water at the end of the level, so all you will hear of the drowning countdown in this run are the first one and a half notes.

Twinkle Snow 3

Compared to Twinkle Snow 2, this was nice and straightforward. Conveniently-placed downhill slopes made for for extended high-speed movement, and the long ramp allowed after a downhill wall briefly allowed an even higher speed than anything else in this run (18 pixels per frame). Also, I use a booster to run backwards up the wall at the end to boost off of it to the goal, reaching the goal before the game gets a chance to center it on the screen. Running backwards was necessary because you must be facing downward for the game to give any boost from the downhill surface, otherwise it instead reduces the speed by a large amount.
I take damage once on spikes because it was the only possible way through there, and once on an icicle to activate the "Early R-Button Trick", because that particular hoop is supposed to launch you high into the air before allowing you to regain control.

Twinkle Snow Boss

As it turned out, waiting for this boss to get into a better position at the beginning of the fight was much faster than hitting it at the earliest possible moment. That way, it was under more platforms than would normally be able to hit it, and never got a chance to do that slow spiked ball attack that makes him invincible. Note that the platform positions were not random, else I would have manipulated them to better positions to avoid that waiting during the battle. This boss always bounces into the same position when it dies, so the best I could do about that was make sure the screen was scrolled as far left as possible.

Cyber Track 1

Partway through the level, I manipulate Sonic to land on a platform earlier than I could, starting it moving earlier so I didn't have to wait as long. At one point I use a boost to purposely slow down to catch a rail down, then I jump at exactly the right angle to glitch through a rail onto the next one, which I had time a tag action from before to be ready exactly when it hit so that I could use the rail's downhill slope to get faster than normal boost+jump speed. After that, it seemed like there was a perfect location for using that running backwards uphill trick from Twinkle Snow 2, except I found that the booster refused to let me run backwards unless I had already been moving in the direction I wanted to face before hitting the booster, which took too much setup time to be worthwhile.

Cyber Track 2

The TSC record for this level uses Sonic/Cream for high bounces, but I looked over the video and saw nowhere really necessary to use it, so I stuck with Tails/Sonic for their superior boosting capabilities to win out again. It's the last really short (sub-30 second) level in this run.

Cyber Track 3

This is definitely the most broken level. At three points I follow the route in a way that shouldn't be possible. I use Sonic/Tails because Sonic must be in front to unlock Cream, and because Tails must be the partner to glitch into those launcher things from the wrong side. That glitch works because Tails' flying tag action puts Tails where the main character was and instantly drops the main character below him, even if that puts him inside or through a solid edge of a sprite-based object. Having entered the launcher from the wrong side, skipping a gravity change event, gravity was going the wrong way afterward, but luckily that wasn't a problem and it corrected itself after going far enough. Another glitch gets exploited when I do a little dance over a gravity changer to get past it without the gravity being reversed, which saved time by letting Sonic jump closer to the next launcher directly from the rope, thus being able to glitch into it without needing to do a high-jump tag action to get down there first. Finally, for the last launcher I fly into it from the bottom with Tails to avoid having to high-jump on top of it first, which doesn't seem like a glitch, but if you try it yourself you'll find that normally Tails gets sucked into the launcher first because he reaches it first, dropping Sonic into the pit. This was avoided by pressing A at just the right frame so that Sonic is left going up enough to get into the launcher.
A stupid Chao was directly in the way early in the level, so I just picked it up and kept going. The game paused for the message, so it had no effect on the in-level time.
The G-Mel fight at the end of this level was by far the most difficult to do quickly, even including the final encounter. Basically, in this fight all of his attacks will add varying amounts and types invulnerability time over any existing invulnerability, so it was necessary to manipulate him into doing a very specific sequence of attacks in order to amortize those delays as much as possible with the overlap of the normal invulnerability from hitting him. This was pretty frustrating when adding in the fact that he's difficult to manipulate: I had to restart the fight from the first hit quite a few times in order to be able to manipulate his actions after the second and third hits, since sometimes his future actions would become restricted to only time-wasting possibilities.
Despite being such a broken level with quite a straightforward path through it, it's the longest level in the run going by time (the only one longer than a minute), when you take into account the G-Mel fight and the required time spent travelling between brackets in those imaginary tubes.

Cyber Track Boss

I was both dreading and looking forward to this crazy boss fight. As you might guess from how hectic it gets, this fight was really hard to optimize. The boss doesn't do anything random, but the collision physics are so wacky that they might as well be random. I used Knuckles/Amy because it was ideal for exiting the area quickly and had a variety of moves to show off during the fight, and as an added bonus is also being used on the next level, avoiding a reset. I found a way to do the fight underneath the main platform, but it ended up being slower so I didn't do that. For once, I end the fight all the way to the left not in order to make the boss leave faster, but because with Knuckles/Amy I could actually get to the goal on the right much faster starting from the left wall than I could from anywhere else.

Chaos Angel 3

This level is supposed to be played like an autoscroller, with 3 segments of dodging spikes while standing on slowly moving platforms. Instead I glide and use walldashing to skip all that and go straight to the end. Knuckles/Amy is probably the most versatile team, with a lot of different moves, impressive-looking walljumping, instant-stop capability from any speed, and almost no shortcut they can't take. I would have liked to use them more, but they can't boost nor are they suited for leaping over medium-sized barriers without slowing down.
The way gliding works speed-wise is that it starts out very slowly, and builds up speed to something apparently quite high (I've never seen whatever the maximum is that it can reach). Also, turning around during a glide preserves most of that built-up speed. That's why I turn around once to get lower before continuing to glide instead of dropping down and starting a new glide, because by then I had built a lot of speed in the glide.
I bounce from an enemy to continue a jump over a pit where I would otherwise need to glide. It was necessary to take damage in the process, which didn't matter because game doesn't knock you back if the enemy dies on the same frame that it deals the damage.

Chaos Angel 1

A long and difficult level (with probably my favorite level music in this game), done under a minute due to an insane route that required Sonic/Cream to follow it quickly. That jump on the diagonal spring near the end is almost impossible, requiring all three of perfect timing, velocity, and position to go far enough (it wasn't necessary to follow the route, but it was faster). Sonic/Cream is an unusually difficult team to play optimally with, moreso than any other. The way that tag-action jumps multiply Sonic's current velocity means that very fine velocity control is necessary at all times in order to land as early as possible in the right place after every jump without losing momentum from brushing against walls, and there is a variety of added moves to take into account (flame dash, homing attack, and chao attack, all of which I use at some point to save time). To say that it's easy to lose frames when playing with this team would be an understatement. This is my 4th complete revision of this level, and it's 12 full seconds faster than the first one. By the way, the re-records from such other revisions are not included in this movie's count.
Note that the flame burst attack doesn't actually increase Sonic's speed past a certain low amount, but it maintains current speed, is useful for delaying falling or the next jump, and unlike almost every other move in the game it doesn't waste even 1 frame to use it. It's too bad it cannot be done out of a tag-action jump and it partially resets the tag action charge to use it, or it would have been a lot more useful.
The Chao attack seems like it shouldn't saving any time, since it wastes a frame of movement to use it, but the animation makes Sonic's collision area become a bit larger, saving about 2 frame to reach certain walls to run up them, and it was also useful to push Sonic down from a ceiling before the first loop, which would otherwise required a slower angle to enter without hitting at what the game considers a weird angle and suddenly stopping The actual effect of killing enemies was useful once when jumping into or around it would have been slower.
Similar to what happened in Route 99 Act 3, I made Cream hit the other end of a springboard for me, except this time the partner's AI was determined to not land on the springboard, so I had to force her to land there by making the spiked ball hit her. It might look like that hit only wasted time, but it both prevented Cream from jumping completely over the board and gave the next tag action the necessary time to charge. There were several alternative ways through there, but that one turned out to be fastest (by a small margin). Also similar to Route 99 Act 3, I use the partner to break a barrier faster, and Cream did the final hit to it which saved a few more frames of falling time.

Chaos Angel 2

The largest level in the game, surpisingly completed even faster than Chaos Angel 1 which was already under a minute. The route is even crazier, mainly because of taking huge shortcuts at steep angles using only Cream's tag action to reduce falling speed just enough to not fall into a pit. That part near the end where it looks like I simply jump down onto a booster actually has an overhang and involves falling much too far to make it in there without some very carefully-timed tag actions to slow the rate of falling. Anyway, by now I had the hang of controlling this team, so this level wasn't as hard as I thought it would be.
The normally-unhelpful homing attack is used once here to bounce off of an enemy onto some steps that I needed to slow down to clear.

Chaos Angel Boss

I switch to Tails/Sonic one last time, which you might find a surprising choice for this boss, but I used the boost+jump in an interesting way to deal damage and stay on the same side ready to do more damage. Once he starts spinning I have to take damage to be invincible to get inside where the boss is going to be when he becomes vulnerable, although I was able to substitute Sonic for Tails for one of those attacks. I luck-manipulated him to be on the right side by the last hit, then went left as the battle was ending, to for the last time cut down on the delay when the boss is leaving.
Entering either side to change between top and bottom completely resets the tag action charge counter, which explains why I didn't change back and forth a lot more than I did.

Altar Emerald

I use Tails/Amy because it is one of the few teams that can damage the final boss in less than 30 frames from the ground as well as reach G-Mel as fast as possible. This fight seems like it should be simple, but it was maddening, mainly because two people at TSC claim to have sub-40 second times on it and no matter what I did those times seemed to be unreachable. Well I did some calculations:
minimum time from beginning until g-mel can be damaged: 289 frames
invulnerability between g-mel hits:                     120 (x3)
minimum time between g-mel dying and next boss:         635
time before boss is vulnerable:                         30
invulnerability between boss hits:                      121 (x7)
minimum time shielding while "vulnerable":              60
delay after beating boss:                               181
optimal mid-time: 1284 frames = 289 + (120*3) + 635
 = 21.40 seconds
total optimal:    2402 frames = 289 + (120*3) + 635 + 30 + (121*7) + 60 + 181
 = 40.03 seconds
Now, if Easy mode is selected in the options, G-Mel only takes 2 hits to kill, reducing those minimum times by 4 full seconds, which makes sub-40-second times easily possible. The only information I could get out of those with sub-40-second records was something about G-Mel dying unusually fast and not remembering what team was used or how to get that time. Now, I have no absolute proof that some as-yet-unknown technique can somehow make such times possible, but I've tried this fight enough times, know enough about the game's physics, and watched the memory used to determine the boss' status and actions long enough to get the distinct impression that a completion time on this boss on Normal difficulty of anything below 40 seconds is impossible.
I tried quite a few alternative things such as scrolling the screen to a different height to make G-Mel fall faster, changing the number of rings I collected to affect randomness, adding delays before or in-between or during the boss fights, seeing if either boss will react differently to Cream or any particular team of characters, seeing if a Chao attack initiated while the boss is unshielded can damage it after it starts shielding, seeing if any attack results in less invulnerability time, changing the attack cycle the boss is on when the final blow is dealt to reduce the final 3-second delay, dying or taking damage at the same instant as dealing the final blow to reduce that delay, seeing if dying and re-trying or otherwise changing the number of lives would affect the initial attack cycle, beating G-Mel at different locations, building up gliding speed, seeing if Chaos Emeralds had any effect on either boss' actions, seeing if different emulator versions or settings gave different results, etc. All of those did not work.
So, if the best time I think I can get is 0:40:03, why do I only get 0:40:27 ? Because the above "minimum time shielding while vulnerable" value assumes I can force the random delay to be long enough that the hands start shielding exactly a frame after his last invulnerability period ends (180 frames minimum of shielding minus 120 frames of invulverability = 60 frames of waiting). But the random delay isn't actually that random; it's only a choice between a few possible delay times (with a few frames extra if the hands come up separately), so even though I got the hands to come up simultaneously at the earliest of those times, it happened that he started shielding 14 frames later than the last time I had hit him. 2402 + 14 frames = 40.2667 seconds, which is the time I got when rounded up to the nearest time the game can display. Keep in mind that was only possible with a superhuman startoff and much luck manipulation on both bosses.
If you are confused as to what "shielding" means, it's when the boss covers the face with both hands, preventing damage from registering during that and during the animations to and from that state (even while it looks like Eggman isn't protected at all).
That ring you can see during the final part of the final battle shouldn't be there, but I jump into the battle in such a way that neither Tails nor Amy picks up a ring that's supposed to be collected automatically while beginning the boss fight, so it just sits there during the fight. For some reason Amy runs back over to pick it up as soon as the boss dies.

Nonaggression

This extra boss fight wouldn't fit into this run since only 100% completion of everything else unlocks it (and I didn't go collecting all of the Chao to get Special Keys to get Chaos Emeralds). However, if anyone cares about the time or wants to see it, I tried it and got 0:35:33, although I think it's possible to do it a little faster.

Other

  • Emulator used: VBA re-recording v19.2
  • Takes damage to save time
  • No death (it could have saved on in-level time but I considered that against my goals as replaying a level)
  • Uses a game restart sequence
  • Ignores semi-important goals in the game
  • Plays at hardest level
  • Abuses programming errors in the game
  • Manipulates luck


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15584
Location: 127.0.0.1
This topic is for the purpose of discussing #1192: nitsuja's GBA Sonic Advance 3 in 35:56.75
Active player (315)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
??????????
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
pirate_sephiroth wrote:
??????????
I fixed and resubmitted it because of this: http://tasvideos.org/forum/viewtopic.php?t=4340&start=46
Active player (315)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
Now we'll have to vote again! I know you're here since the last day of 1969, but that's not a big enough reason!
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Active player (437)
Joined: 4/21/2004
Posts: 3517
Location: Stockholm, Sweden
Revoting yes.
Nitrogenesis wrote:
Guys I come from the DidyKnogRacist communite, and you are all wrong, tihs is the run of the mileniun and everyone who says otherwise dosnt know any bater! I found this run vary ease to masturbate too!!!! Don't fuck with me, I know this game so that mean I'm always right!StupedfackincommunityTASVideoz!!!!!!
Arc wrote:
I enjoyed this movie in which hands firmly gripping a shaft lead to balls deep in multiple holes.
natt wrote:
I don't want to get involved in this discussion, but as a point of fact C# is literally the first goddamn thing on that fucking page you linked did you even fucking read it
Cooljay wrote:
Mayor Haggar and Cody are such nice people for the community. Metro City's hospitals reached an all time new record of incoming patients due to their great efforts :P
Player (36)
Joined: 9/11/2004
Posts: 2630
oh hey, nitsuja's join time is 0 epoch. Cool.
Build a man a fire, warm him for a day, Set a man on fire, warm him for the rest of his life.
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
What did you re-do or was it just a minor hex-edit. I'll watch again and hope this doesn't desync like last time since unlike some other people I never vote until I watched the movie in full. EDIT: After a long search I couldn't find the right rom, which is what caused the desync before, and the site which I could always rely on which'll remain nameless no longer gives direct links through legal issuses, so I guess I'm sunk. Damm its hard to find GBA roms.
Player (109)
Joined: 8/24/2006
Posts: 61
Location: Brazil
Do I even have to explain myself? Yes again, of course!
AW2 v2 progress: Two-Week Test (mission 17/25)
Joe
Joined: 6/10/2006
Posts: 152
Location: Wisconsin
ninjitsu apparently redid a portion of Ocean Base 2 because someone pointed out that he didn't take a shortcut, and ninjitsu concluded was because he started from the wrong savestate. Anyway, I really enjoyed this run due to the wide varienty of techniques used to reach the goal. Also usung different characters and teams (even though it was mainly Sonic & Tails) in some of the levels helped bring more variety into the run. The restart sequences got a tad annoying, but are rather short compared to how long this game is.
Skilled player (1099)
Joined: 8/26/2006
Posts: 1139
Location: United Kingdom
Joe wrote:
ninjitsu
It's Nitsuja. Only watched up until where you changed. The single second of imperfection in a fantastic movie, is now amended. Not that i noticed first time around. This one was always a yes.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
OmnipotentEntity wrote:
oh hey, nitsuja's join time is 0 epoch. Cool.
Oh, I thought pirate_sephiroth was just being crazy. That's what he meant.
AKA wrote:
What did you re-do or was it just a minor hex-edit
I redid the level starting from about 42 seconds in until the end of it. Then I would've had to redo considerably more, except I was saved by the hard reset that happened to be at the end of Ocean Base 2 (which cleared out any variables that would normally have caused desync), so the entire rest of the movie played back correctly on the very first attempt to hex edit it onto the end.
Joe wrote:
concluded was because he started from the wrong savestate
And because when I went to double-check it, I only compared the milliseconds, and thought it was .27 seconds faster when it was really 1.73 seconds slower. My common sense must have gotten turned off that night or something (I know it was at the end of a recording session before the next boss fight).
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Revoting as well.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Former player
Joined: 5/24/2005
Posts: 405
Location: France
It's beautiful as usual... YES !
Not dead yet... still very busy... damn...
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I voted yes for the last, so I'll be voting yes for this submission as well.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
Yay finally watched it although the game lagged like hell that it actually hurt my head so I had to sit 6-7 metres away from the screen which made critizing anything literally impossible. I don't have to look at the re-record rate to realize that there is a lot of work that went into this movie. Although the one thing I did like was not having an annoying score counter beebing away, but on another note all this soft reseting didn't really make it seem like a smooth run through, but if thats what it takes to get to the end sequence quickly then it must be done. I don't know why this game lagged so much espeacially since my computer is 512 DDR (and you know all the specs that'll go with that) , with one of the most up to date graphics cards around. As a sit through it wasn't enjoyable because of the emu and rom issues as an execution was next to flawless and I know how frustrating Sonic can be and none more so than GBA sonic. Although the one question I have to ask is how many re-records will Sonic Adventure 1 or DX take to do? Since I think thats the hardest game around that could be potenially TASed. Voting yes of course because it would be selfish not to. EDIT: I did have the emu set to the lowest resolution.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
AKA wrote:
I don't know why this game lagged so much espeacially since my computer is 512 DDR (and you know all the specs that'll go with that) , with one of the most up to date graphics cards around.
About 90% of VBA's performance is affected by CPU, and only ~2% by graphics card. Make sure you don't have any filters, vsync or triple buffering enabled (they drain the performance rather fast). Also, try setting renderer to OpenGL or Direct3D, it may help as well.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15584
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [597] GBA Sonic Advance 3 by nitsuja in 35:56.75
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
Just wondering Nitsuja, did you ever experment to see if Left+Right was quicker at any point in the game. I don't if left+right has a generic affect across all sonic games. Maybe not this run but certainly it might of saved time in SA2, because left+right in Sonic 1 on Gens causes sonic to come to a much quicker halt than a skid does, plus it halfs his speed in a single frame during running air animation. Just wondering...
Joined: 12/2/2005
Posts: 139
Location: New York, United States
The avi torrent seems to be stuck at 61 percent.
What's a man like me supposed to do with all this extra savoir-faire?
Player (36)
Joined: 9/11/2004
Posts: 2630
It hasn't been fully seeded yet. The seeder has slow upstream.
Build a man a fire, warm him for a day, Set a man on fire, warm him for the rest of his life.
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
AKA wrote:
Just wondering Nitsuja, did you ever experment to see if Left+Right was quicker at any point in the game.
I did, and Left+Right in this game or Sonic Advance 2 is the same as holding either Left or Right alone, so it wouldn't save any time. I did use it occasionally to continue running without any skid frames when I would normally need to switch directions on exactly the right frame to do that (such as when hitting a spring while running up a wall), but it didn't do anything that wouldn't have been possible without it. In Sonic Advance it makes Sonic move a little slower, but not slow enough to be useful for stopping. In the Genesis Sonic games, it's only an illusion that Left+Right stops you faster than holding a single direction, although it still does some things that can save time.
Joined: 7/28/2005
Posts: 339
For the record, you get 34:47 on TS1, not 34:67... might wanna fix that in the submission if it's not too late.
Active player (437)
Joined: 4/21/2004
Posts: 3517
Location: Stockholm, Sweden
Think we all should stomp our feet and light a match for Nach for maintaining his patience and endurance during this whole process! :)
Nitrogenesis wrote:
Guys I come from the DidyKnogRacist communite, and you are all wrong, tihs is the run of the mileniun and everyone who says otherwise dosnt know any bater! I found this run vary ease to masturbate too!!!! Don't fuck with me, I know this game so that mean I'm always right!StupedfackincommunityTASVideoz!!!!!!
Arc wrote:
I enjoyed this movie in which hands firmly gripping a shaft lead to balls deep in multiple holes.
natt wrote:
I don't want to get involved in this discussion, but as a point of fact C# is literally the first goddamn thing on that fucking page you linked did you even fucking read it
Cooljay wrote:
Mayor Haggar and Cody are such nice people for the community. Metro City's hospitals reached an all time new record of incoming patients due to their great efforts :P
Player (66)
Joined: 3/29/2005
Posts: 229
Location: The boonies.
The video on the AVI is all glitchy. Am I missing a codec, here?
If life were an RPG, I'd be an NPC.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Glitchy in what way? You need an up to date H.264 decoder to play it. And the H.264 decode from ffmpeg (ffdshow) ~4 months back makes the video look like someone used a paintbrush and moved wet paint around, which may be what you're experiencing.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.