"I did it!"
Note: The encode is slightly out of date, as I improved the TAS by 15 frames after encoding.
Objectives
- Fastest completion
- Takes intentional damage
- Emulator used: GBAHawk v.2.3.2
Notes
Private
Private has a walking speed of 435 units per frame. When landing, his speed decreases to 409 u/f for one frame, then jumps to 434 u/f before resuming to 435 u/f. Taking damage from an enemy will boost Private to 512 u/f until he lands. Private can also increase his speed by using "Toboggan Mode", letting him slide on his belly. Private will deaccelerate on flat ground and accelerate when going down slopes. The maximum speed fluctuates and depends on the slope. For most slopes, his highest speed is around 870-880 u/f, while for the tobogganing courses, his max speed is 1 150-1 160 u/f.
Whenever Private has extra speed, whether it be from a damage boost or from tobogganing down a slope, he can keep that extra speed by switching into Toboggan Mode and constantly jumping. If Private hasn't deaccelerated, he can stay on flat ground for a few frames without losing any speed, allowing us to space out our jumps should we need to. On upward slopes, Private with always lose speed, no matter what. Jumping on the first possible frame will only lose 10 u/f. We can also slow Private down while jumping in the air by holding back if we need more control over spacing out our jumps.
Normally, Private will lose speed while tobogganing off edges. However, if you press A right on the edge, Private will descend normally, but without losing any speed. I refer to this as an "edge cancel".
Switching to Toboggan Mode before an edge also gives Private a lot of coyote time. Toboggan Mode also extends Private's hitbox horizontally, allowing us to activate the ends of levels or holes in the ground four frames faster compared to just walking into them.
In water, Private can do a spin attack, launching him horizontally. It starts at 999 u/f before rapidly deaccelerating. In some scenarios, it's actually faster to jump in water and repeatedly do this attack.
If you need help in understanding Private's movement, I recommend you watch my encode, as it has the speed value labelled.
Last important thing to note is that when damage boosting, Private’s animation plays out in full. This animation cannot be cancelled, so if you damage boost and there is higher ground, you won’t be able to carry the extra speed because Private lands before the animation is completed.
The Levels
I'll only be listing off levels that have relevant changes.
Green Circle
I do an edge cancel on the first edge to get to Private's top speed faster.
Giraffe Pen
After sliding down the last slope, I exit Toboggan Mode and do a small jump on the last lilypad, allowing me to carry more extra speed to the end of the room. I also enter Toboggan Mode right before Melman to save more frames.
Visitor's Courtyard
Normally, when un-tobogganing on flat ground, Private's speed immediately drops to 0 for the duration of the animation. For some reason, the floor at the beginning doesn't work like this, allowing us to enter and exit Toboggan mode as much as we like. This is actually beneficial because earlier I said that Private's speed will drop to 409 u/f after landing. This speed loss doesn't happen when we're in Toboggan Mode. We will lose speed if we fully un-toboggan or start sliding on the flat ground for too long, so I have to constantly switch it on and off. All of this saves 1 frame over walking normally.
Interestingly, the tops of the umbrellas count as slopes that we can slide on! We can get just a bit of extra speed, but it carries us a long way throughout this level! I can't carry this extra speed at the first umbrella however, because if I jump, the woman won't notice me fast enough.
Blue Square
Taking damage at the start allows us to get to top speed sooner. For some reason, I can't get Private to move at 1 160 u/f like in "Green Circle", only 1 155 u/f.
Lion Pen
I keep the extra speed from damage boosting off the snake. This lets me cross the gap ahead without having to be slowed down by Private's "glider".
At the very end of the level, I switch to Toboggan Mode to reach Alex sooner, which the previous TAS didn't do.
Black Diamond
For the first part of this stage, I'm actually tied with the previous TAS, as we both reach top speed at the same time. However, the previous TAS slides off an edge of a platform, which loses time. I negate this by doing an edge cancel on the platform.
Monkey Cage 2
I damage boost off the spikes and keep the speed until I reach the bouncy branch.
Bird Cages 2
I activate Toboggan Mode to reach the hole quicker, which the previous TAS didn't do.
Zebra Pen 2
Ditto.
Giraffe Pen 2
Ditto.
Arctic Pen 2
Ditto. Oh, and I also carry some extra speed from the first slope to save more time.
Underground
Ok, this level is the bane of my existence. There is so much potential to save time, but if you do, the cycle the electrical wires are on goes off and prevents you from being able to damage boost through it. Very annoying. I make do by sliding on a slope before the second set of electrical wires, and from damage boosting off a crocodile to save a tiny bit of time. I save more time in the second stage by using Toboggan Mode during damage boosts.
Subway
Saved a lot of time on this level due to tobogganing after damage boosts.
Ship Deck
For all four stages in the ship, I switch to Toboggan Mode to reach the pipe entrances soon. The previous TAS does not do this.
Another unfortunate level that has timesaves early on, but affect us later. Specifically, you can damage boost off a seagull near the start of the level. However, this affects the cycle some sailors are on, so this can’t be implemented.
I am, however, able to damage boost off a rat later on and save a bit of time.
Bottom Deck
Not much to note. Just more tobogganing after damage boosts. At the section with the spider, I shoot 3 darts instead of 4, timing the final one to fire right as the spider moves out of the way. This allows me to keep the spider for another damage boost.
Antarctica
One of my favourite levels in this TAS and for good reason. The previous TAS partially avoids these large snowballs by attacking with the Bass Knuckles. This is creative, but it forces us to be stationary every time we do it. Wouldn’t it be nice if there was some way to make Private invincible while also allowing us to keep our speed?
It turns out the Private's mid-air kick attack also grants him full invincibility! So any time a snowball is on our path, we can just kick right through it! No damage! No stopping!
That being said, there are some places where I have to manually slow down in order for the jumps to line up properly, but nevertheless, this level is so satisfying to me.
Madagascar
In the first section, I jump into the water and do Private's swimming attack twice, which saves a little bit of time compared to jumping over the water normally. Then, I drop down the platform and use the crocodile to damage boost, getting me to the slope sooner.
Not many opportunities to damage boost early in the second section due to it messing up your jumps. However, I was able to damage boost off a banana that a monkey threw. I did more damage boosts on a scorpion and spider, but due to the level's layout, I can't really use the speed from them a lot.
In the third section, I jump into water and do Private's swim attack once, saving a tiny bit of time.
Comparison
Comparison to the previous TAS. Only shows sections that I think were relevant and doesn't really take lag into account. This comparison was made before I improved the TAS again, so take this with a grain of salt.
Suggested Screenshot
101896. Shows Private kicking through a snowball. Definitely my favourite moment in the TAS and this strat saves a lot of time too.
Comments
I’d like to give a big special thanks to CasualPokePlayer who helped find the address for Private’s x-position and wrote the Lua script to display his speed. Also big thanks to Alyosha and FriiedPorkchop. Massively respect your work in making the original TAS! Feel free to ask me any questions about the run and I'll do my best in responding.
nymx: Claiming for judging.
nymx: Excellent job on the improvements.
r3gamerz: Processing...