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
Name | TAS Time | TSC record[1] |
---|---|---|
Route 99 1 | 0:28:97 (T/S) | 0:34:57 (A/S) |
Route 99 2 | 0:39:42 (T/S) | 0:44:85 (S/T) |
Route 99 3 | 0:39:70 (T/S) | 0:47:77 (C/S) |
Route 99 Boss | 0:57:33 (T/S) | 0:58:57 (C/K) |
Sunset Hill 3 | 0:44:12 (S/T)[2] | 0:42:93 (K/A) |
Sunset Hill 1 | 0:25:47 (T/S) | 0:32:52 (C/S) |
Sunset Hill 2 | 0:24:20 (T/S) | 0:28:45 (A/S) |
Sunset Hill Boss | 0:34:72 (T/S) | 0:36:22 (C/K) |
Ocean Base 3 | 0:39:43 (T/S) | 0:44:80 (C/S) |
Ocean Base 1 | 0:34:68 (S/T) | 0:36:99 (S/T) |
Ocean Base 2 | 0:56:95 (S/T) | 1:04:15 (S/T) |
Ocean Base Boss | 0:39:13 (S/K) | 0:39:82 (C/K) |
Toy Kingdom 3 | 0:55:13 (S/T) | 1:02:78 (C/S) |
Toy Kingdom 1 | 0:27:38 (T/S) | 0:37:35 (C/S) |
Toy Kingdom 2 | 0:34:68 (T/S) | 0:49:10 (C/S) |
Toy Kingdom Boss | 1:23:72 (T/S) | 1:39:34 (S/K) |
Twinkle Snow 1 | 0:34:67 (T/S) | 0:42:95 (C/S) |
Twinkle Snow 2 | 0:48:48 (T/S) | 1:06:30 (S/T) |
Twinkle Snow 3 | 0:44:50 (T/S) | 0:53:53 (C/S) |
Twinkle Snow Boss | 0:36:73 (T/S) | 0:43:52 (C/A) |
Cyber Track 1 | 0:31:17 (T/S) | 0:35:78 (C/S) |
Cyber Track 2 | 0:29:16 (T/S) | 0:36:73 (S/C) |
Cyber Track 3 | 1:12:93 (S/T) | 1:29:37 (C/S) |
Cyber Track Boss | 0:46:63 (K/A) | 0:51:27 (A/S) |
Chaos Angel 3 | 0:33:53 (K/A) | 0:47:18 (K/A) |
Chaos Angel 1 | 0:59:55 (S/C) | 1:29:25 (S/T) |
Chaos Angel 2 | 0:56:97 (S/C) | 1:28:62 (S/T) |
Chaos Angel Boss | 0:39:43 (T/S) | 0:41:53 (C/K) |
Altar Emerald | 0: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).
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. (I
must admit, though, that I'm skeptical of the records at TSC that involve
following a route that requires nailing 1/60 of a second timing windows well
into the level. I wouldn't consider such routes possible outside of a TAS, but
maybe my reflexes just suck.)
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. I fly again after that where a tag action jump would
have worked because it was a short enough flight to result in the next tag
action charging faster than it would for a high jump. 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, losing those 100 rings I just got an extra life from.
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 unlocky, 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
- Cancelled because of mistake in Ocean Base 2