Metroid: Zero Mission any% improvement by Dragonfangs
Game objectives
- Emulator used: VBA-RR v24 svn461
- Aims for fastest time
- Manipulates luck
- Takes damage to save time
This is an improvement to the any% category. Finishing at 20:59 IGT it beats the current published run by ~28 ingame seconds and ~34 realtime seconds. The time comes from more optimized movements and a few minor tricks, but mainly from a greater understanding of RNG in the game (thanks to Biospark). Being able to do more practical luck manipulation means it's possible to do Tourian with way less supers. The main chokepoint for ammo is now the Ridley fight actually, and this run only grabs just enough for that fight and then nothing more until chozodia. This time also in stereo sound :D.
Brinstar and Norfair
Implements various optimizations and tricks found in cpadolf's Low%, ZX497's NBMB and my own 100% run, nothing really new or interesting happens in this section.
Ridley
The second of the two supers in this area is skipped, saving around 20 seconds. But in return, I needed to grab 2 more standard missile packs and the Ridley fight end up about a second slower because of it. The final shot on Ridley is delayed a bit to make his death animation shorter, if he dies between taking off and starting his swooping pattern he spends way more time just exploding.
Right before fighting Ridley I also perform a new-ish glitch when refilling: it takes a few frames for any major upgrade to spawn after destroying the container, if you manage to get into the statue's hands and trigger a refill before grabbing the item the text boxes will show up at the same time and overlap. Since refilling takes longer than grabbing an item, this pretty much completely eliminates the item's textbox time-wise (around 2 seconds).
Brinstar and Norfair again
Still not much new here. However, I run past what seems to be a practically free missile tank on the way to hi-jump. At this point in the run, normal missiles just aren't that useful. It would save some time against the workbots in chozodia and potentially some against the zebetites in Tourian, but not enough to offset the pickup dialog.
Kraid
This is pretty much the same as the old run too, Kraid fight takes a bit longer due to the lack of supers. Both from the fact that shooting 5 missiles just takes longer than a super, but also because Kraid gets to rise further and so takes longer to die afterwards.
On the way to Tourian I skip another super tank (saving around 10 seconds), leaving me with a maximum of 2 supers for fighting the metroids.
Tourian
Metroid spawn times are random, all the drops are random. Metroid movement is deterministic based on Samus but erratic and hard to predict, rinkas move in a straight line towards where Samus was when it spawned. The tiniest differences anywhere can have huge ramifications on everything. Biospark helped me out a lot here and wrote the basis for several lua scripts that I used to manipulate drops and spawn times.
Having only 2 max supers was a big constraint because it's not possible to keep any kind of buffer, I need to get precisely a super drop from every other metroid. The RNG sort of works in waves of 256 frames, and extreme results are more likely at the end of those frames. Red rinkas have only 4 out those 256 where they can drop supers at all and they're always right next to each other, it's then also based on position, which makes ice beam a very powerful tool for luck manipulation. Red rinkas have a ~0.97%(10/1024) drop rate of supers, I get two while killing metroids and three in the mother brain fight.
Also in the Mother brain fight it's possible to skip the first Zebetite by freezing a rinka close the ground next to it and then performing a hover glitch. If you unmorph the same frame you're boosted by a bomb on top of a frozen enemy (or any enemy you can stand on, really) you end up in a state of falling without ever landing on the enemy. Doing this can make collision really wonky at specific places, and we can use it to clip through the first Zebetite. The 3rd zebetite also doesn't spawn until the first one is destroyed so this effectively skips both of them (2nd and 4th work with a similar pairing). The setup is kind of slow and it's only really used to save ammo in the run. Skipping the others is also technically possible, but the only way we know how to requires several rinkas and just costs way too much setup time to be worth it.
Suitless
Almost exactly the same as the 100%. Some small optimizations here and there. There's a part where I grab a ledge and just hang there seemingly for no reason, it's to allow the alarm to run out and to let the pirate below me to move out of the way so he doesn't see me falling down. If the alarm keeps running there you have to wait for it to shut off to get past a gate later on.
Chozodia
Ammo is actually really tight in this section. There's a really quick super tank early on that helps in the Mecha Ridley fight, but the entire area has several missile blocks, red doors and two workbots that move incredibly slowly unless you push them along with missiles. Pirates don't drop anything so you're stuck with what you have, save points here gives you a full refill but it takes an ungodly amount of time.
Thanks to
A huge thanks to Biospark for helping me figure out a lot of technical things, both before and during work on the TAS, this missile route would not be reasonable at all without his help.
Thanks to anyone who came and watched me stream my work too, your words of encouragement really helped me stay motivated. And having an audience helps keeping laser focus on the task.
Suggested screenshot
frame 67515
Tompa: Judging judging...
Tompa: Another good improvement! Accepting.