Edit history:
Hazel: 2016-08-12 01:18:44 am
Hazel: 2016-08-12 01:18:42 am
Hazel: 2016-08-12 01:18:42 am
Hazel: 2016-08-03 07:59:06 am
Hazel: 2016-08-02 08:49:37 pm
Hazel: 2016-08-01 09:00:17 pm
Hazel: 2016-08-01 08:54:45 pm
Hazel: 2016-08-01 05:52:58 pm
Hazel: 2016-08-01 05:49:16 pm
Hazel: 2016-08-01 05:46:25 pm
Hazel: 2016-08-01 05:31:47 pm
Hazel: 2016-08-01 05:31:35 pm
Hazel: 2016-08-01 05:17:30 pm
Hazel: 2016-08-01 05:17:29 pm
rocks, locks, and invisible blocks
Alright so I think having a space to discuss and explain some things I've learned making this TAS could be pretty neat. First off in no particular order I'm just going to list things I've noticed and learned:
Resetting the BSJ timer: Touching the seam of collision with morph ball often counts as touching ground for one frame and resets the timer for when you can still BSJ. This can be abused in many places outside the TAS (especially on MPWii), but examples of it in the TAS are at 19:35 and 35:23
Ledge Clipping: Depending on the shape of collision you're landing on and how quickly you're ascending, ledge clipping can be really easy or really terrible. It's done be causing Samus' feet to sort of snap to the ground as you jump up from below by just having a precise position and some momentum towards the ledge. Ledge clipping can be used to just plain land sooner, which can save time on it's own, but it can also be used to give a ridiculous ghetto jump effect. There's one frame as you snap to the ledge where your vertical speed hasn't set back to 0, but you're considered "on ground" and can jump. Jumping on this frame carries over all previous vertical speed into your jump, it's possible to start a jump at the speed cap of 14 upward velocity (14 is the Space Jump speedcap, no Space Jump is 11.667) doing this can give heights previously just not considered possible. Some examples of this in the TAS are at 17:07 jumping up to that peg, 30:34 jumping to the ledge for Spirit from the lower platform, 39:43 to get enough height to skip the elevator after OP, 41:46 pretty much all of these jumps use it.
Boosting: There are 6 frames after you release a boost (or 5 maybe depending on how you count) where you need to be "on ground" or else the speed gets taken away, if you've ever boosted off a ledge at the very edge you'll know the effect I mean. When I say "on ground" I guess I more just mean touching collision, since walls and ceilings also work. This made keeping my boost speed extremely precise in instances like 40:15 getting the game to think I'm touching the collision on all 6 of the frames. This 6 frame rule is generally universal, but I did notice something extremely odd in Tallon Canyon on the way to the ship. If you've recently touched a half pipe, you can boost in mid air and gain speed as though you're touching collision, the 6 frame rule doesn't apply anymore. It's hard to spot if you're not looking for it, but at 46:50, the final boost before the unmorph was done while quite far above the ground. This effect seems to go away once you leave the room, but it also goes away on it's own if you stay in the room, more testing is needed to know exactly what activates and deactivates the state.
Dashing: Pressing R just as your dash reaches maximum speed is a good way to get dash speeds around 39 horizonal velocity. You want to press R and continue to hold L until you stop gaining upwards speed, and then release L. When I say gaining, I mean your velocity is growing, so when the numbers start to go down towards 0 is when you release, not at the peak of the jump, that would be too late to maximize speed (it's actually a few frames sooner because it takes a few frames to truly release L, you can use Prime watch and easily see when is optimal). 39 is good, but you can do better, using a Space Jump early on during your strafe will add even more speed to the dash, normally around 43 if you press R the frame after B. In situations where you're dashing for speed and not to cover a giant pit, this is often the better option over a single jump dash, obviously if you use the Space Jump early on so you'll land much sooner than a dash aiming for maximum distance. But yet again, you can do even better. Dashing is triggered by holding to the side and releasing B, releasing B is very commonly optimal on the first frame, you know, letting you dash as soon as possible. But in situations where you're waiting for something to move out of the way, or you're jumping around a corner before starting the dash, delaying when you start the dash can give more speed. The later you trigger the strafe in a jump, the more of a downward angle you dash at, this means less time spent gaining upward velocity and more time to wait before pressing R to lock your speed. Combining this with a space jump can give speeds around 45, this is sort of used at 42:18, where I need to jump forwards around the wall before dashing. Because of the angle I needed and height I wanted, it turned out better to not have the most possible speed though, but it still demonstrates the general idea.
Unmorphing: I'm going to have to go back and look at the numbers on this one because I don't know off the top of my head, but unmorphing physically moves Samus' position forwards the frame you start the animation, this means in cases where you're boosting to a load trigger or cutscene trigger, unmorphing 2 frames before you touch it can sometimes activate it a frame earlier than if you just continue to roll. This is a really minor optimization that can be done, I don't believe it can save more than a frame and sometimes it ends up being equal, meaning the amount of distance you zip forwards is less than that generally traveled in one frame. It just sometimes can be enough so save a frame. (I'll look back into this and try to find some actual number on it later).
I can do a section on just bosses:
Flaahgra: by wallcrawling into the fight you can bomb the slots without activating Flaahgra. By bombing the first slot then laying a frame perfect Power Bomb in the center of two other slots as the cutscene starts, you can break 3 and be spawned near the 4th at the end of the cutscene, which you then bomb and activate the fight to trigger Flaahgra dying.
Omega Pirate: I still after all these years don't actually understand the 2 pool strat. It has to do with putting the X-Ray visor on at a time that the Power Bomb does the most damage and hitting a charge shot on the last frame before the damage cap is reached, but often times doing exactly this will only clear 50% of OP's health in pool 1, which isn't enough to kill in pool 2. You need to do more than 50% the first time, which honestly just feels random. At the start of the fight I did the sleeping glitch where you start the cutscene off to the side, this allows for an animation skip at the end of the armor part of the fight. I also did another animation skip by breaking both knee/shin pieces of armor close enough together to only play one animation. Also by abusing the fact that Samus unmorphs towards where OP was if you do the Power Bomb animation skip/trooper skip, I was able to get sideways unmorphs which have no speed cap, allowing for faster PB damage and earlier charge shots.
Ridley: I'm sad I wasn't able to find a way to infinite boost into Ridley right at the start of the fight. I did however realize that in between charge shots you can fire an uncharged AND a missile and it only costs 2 frames to do so, this made reaching the damage required to start the fly by considerably faster. Fly by skip is simply just hitting Ridley on a specific frame which cancels his fly by and makes him go straight to landing. When you boost him as he lands doesn't actually matter much, if it was before the landing animation is finished, then you still need to wait for it to finish before he starts reacting to the damage done. His attack where sort of slashes at you seems to be the earliest of the attack/animation options that he opens his mouth, so I used that when I was able to hit a charge shot sooner. I noticed that after the damage requirement to make him go back dashing and slashing and roaring has been met, he can still be damaged until the lock-on switches back to his mouth. This allowed for a round to be skipped at the end, but using extra missiles during this prolonged vulnerability time. The window for the last missile to hit is incredibly small though, it has 1-2 frames of leeway depending on how close you are when it's fired
Exo: Floors 3 and 4 are quiet easy to optimize, you can do enough damage to end the round when he dashes at you before his turning around animation finishes, similar to the Ridley boost, as long as the damage is dealt before the animation is done, it'll react to the damage at the same time. Floors 1 and 2 I had to sort of try to do the finishing blow of each round during an animation that was very short or instantly switched to the damage animation. I think a little time could be saved here honestly.
Essence: I had a hard time finding a way to optimize this boss. Honestly, it's probably quite improvable, I got lazy after trying to improve on my sloppy test and being slower than it somehow, and taking into consideration no matter how much I optimized, I would still end with :37, I just took my test for the first pool and did a semi decent second pool. Maybe someday I'll actually look into how to make this as fast as can be.
Thread title: