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

Comments

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.

Area by area comments

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.
Spikestuff: Publishing.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15583
Location: 127.0.0.1
This topic is for the purpose of discussing #5160: Dragonfangs's GBA Metroid: Zero Mission in 32:08.09
Editor, Skilled player (1439)
Joined: 3/31/2010
Posts: 2108
Hot damn, this is one unexpected submission. Watching now, voting later. As expected, this was a really cool improvement. The new tricks were cool, and the attention to detail really stood out. Easy yes vote.
Fortranm
He/Him
Editor, Experienced player (878)
Joined: 10/19/2013
Posts: 1121
Totally didn't see this coming. Is it not possible to jump over Kraid like in ZX497's NBMB run?
Joined: 3/3/2010
Posts: 87
Interesting how you used a pirate's shot to help clear that annoying tunnel that alternates single bomb and shootable blocks. Has someone else used that in a run before and I just never noticed it?
Active player (378)
Joined: 6/5/2006
Posts: 188
Location: Malmö, Sweden
Fortranm wrote:
Is it not possible to jump over Kraid like in ZX497's NBMB run?
Doing that leaves Kraid alive and doesn't let you enter Tourian. NBMB can do it because it wants speedbooster and specifically doesn't want to kill Kraid OR enter Tourian.
evknucklehead wrote:
Interesting how you used a pirate's shot to help clear that annoying tunnel that alternates single bomb and shootable blocks. Has someone else used that in a run before and I just never noticed it?
Among standard speedrunners, it's been a known strat in that room for a while. But I think this is the first TAS it's been done in.
Even the best player is limited by the speed of his fingers, or his mind's ability to control them. But what happens when speed is not a factor, when theory becomes reality?
Joined: 5/12/2009
Posts: 748
Location: Brazil
Great run! Yes vote!
Player (78)
Joined: 3/13/2013
Posts: 31
Location: Zebes
Great run, very entertaining to watch. I loved Tourian part. Yes vote !
La Hollande, c'est un Pays-Bas comme les autres...
Former player
Joined: 9/13/2010
Posts: 138
Location: Tallahassee, FL
Would it be possible to conserve shine at 27:53 of the youtube video to the next room, then at 27:58 you could shine spark right then shine spark up the right wall rather than space jump to the door?
Skilled player (1176)
Joined: 5/11/2011
Posts: 427
Location: China
I like it very much. Easily vote yes. But what's meaning Takes damage to save time? Did you take damage? When or where? I didn't find it. edit: I found it, vs samus.
Active player (378)
Joined: 6/5/2006
Posts: 188
Location: Malmö, Sweden
Heidman wrote:
Would it be possible to conserve shine at 27:53 of the youtube video to the next room, then at 27:58 you could shine spark right then shine spark up the right wall rather than space jump to the door?
Nope, you're almost a full second short of making that. And even if you could I'm not sure it would actually be any faster, shinesparking isn't nearly as fast as it seems with fairly long startup and bonk animations.
Even the best player is limited by the speed of his fingers, or his mind's ability to control them. But what happens when speed is not a factor, when theory becomes reality?
Editor, Experienced player (885)
Joined: 1/23/2008
Posts: 529
Location: Finland
Looks good, as runs of Metroid-games tend to do. Voting 'yes'.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15583
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. ---- [3175] GBA Metroid: Zero Mission by Dragonfangs in 32:08.09
Reviewer, Experienced player (920)
Joined: 11/18/2011
Posts: 314
Location: Morocco
I did some cutsceneless encode and this one is for this run: https://www.youtube.com/watch?v=EkUYWWG6ZOQ Please update the pub and add this link for no cutscenes.
I still learn more about English. https://www.youtube.com/user/McBobX100
I wrote:
Working is the best way to achieve goals in speedruning. Hardworking is a pain.
Invariel
He/Him
Editor, Site Developer, Player (171)
Joined: 8/11/2011
Posts: 539
Location: Toronto, Ontario
Except that your cutsceneless encode of this game doesn't remove item collection, plays half (instead of none) of the item fanfare, and while it does remove door transitions, it doesn't remove elevator transitions. If I were a non-TASVideos member watching this encode on TVC, I'd be very confused as to why this video is associated with the site, because it doesn't seem to meet the site's publication standards.
I am still the wizard that did it. "On my business card, I am a corporate president. In my mind, I am a game developer. But in my heart, I am a gamer." -- Satoru Iwata <scrimpy> at least I now know where every map, energy and save room in this game is
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
McBobX, did you use a lua script that pauses avi recording during non-gameplay time?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Player (95)
Joined: 5/27/2006
Posts: 240
Invariel wrote:
Except that your cutsceneless encode of this game doesn't remove item collection, plays half (instead of none) of the item fanfare, and while it does remove door transitions, it doesn't remove elevator transitions. If I were a non-TASVideos member watching this encode on TVC, I'd be very confused as to why this video is associated with the site, because it doesn't seem to meet the site's publication standards.
He used a lua script that doesn't record non-gameplay (based on a RAM address). The publication for my Fusion 100% TAS includes a link to a video that uses a similar script: https://www.youtube.com/watch?v=bRqel3zOBIo It's always going to be a bit weird watching a video that cuts chunks out of it. Even if someone manually cut out different parts, you'd never please everyone in terms of what they want cut out or left in.
Reviewer, Experienced player (920)
Joined: 11/18/2011
Posts: 314
Location: Morocco
feos wrote:
McBobX, did you use a lua script that pauses avi recording during non-gameplay time?
Sorry for the late if I didn't quote instantly btw. Yes I used a lua script and here are 2 scripts: this one uses the pause function. Thanks to P.JBoy and amaurea for there codes.
Language: lua

pigf = -1 while true do local igf = memory.readbyte(0x03000153) if igf ~= pigf then avi.resume() else avi.pause() end pigf = igf emu.frameadvance() end
this one uses avisynth that creates a long text that contains trims which will make the no cutscenes video. Thanks to natt for that code:
Language: lua

--[[ start this script at the same time as you playback the movie and dump the avi. when finished, be sure to hit "stop" in the lua script window to ensure that the created file gets flushed you'll have an "skip.avs" that will contain a set of Trim() commands that will create a cutsceneless encode ]] local pigf = -1 local skipping = true local startframe = 0 local outfile = io.open ("skip.avs", "w") local firstsegment = true -- remember to hit "stop" to ensure that the io file gets cleaned up correctly! while true do local igf = memory.readbyte(0x03000153) -- in game time counter if igf ~= pigf then -- display this frame if skipping then -- end skipping, so record start of new unskipped segment startframe = avi.framecount() skipping = false end else -- skip this frame if not skipping then -- start skipping, so record finish of last unskipped segment if avi.framecount () > 1 then -- avoid 1 frame edge case that causes avs problems if firstsegment then outfile:write (string.format (" c0.Trim (%i, %i)\n", startframe, avi.framecount () - 1)) firstsegment = false else outfile:write (string.format ("last + c0.Trim (%i, %i)\n", startframe, avi.framecount () - 1)) end skipping = true end end end pigf = igf emu.frameadvance() end
Actually, I just took both scripts from the Metroid Fusion 100% by BioSpark and changed 0x0300013B to 0x03000153 that's all. I searched for an adress which changes only in gameplay and similar to the one used in Metroid Fusion. BioSpark is right. I may re-encode the Low% MF by Dragonfangs without cutscenes.
I still learn more about English. https://www.youtube.com/user/McBobX100
I wrote:
Working is the best way to achieve goals in speedruning. Hardworking is a pain.
Ford
He/Him
Joined: 3/5/2013
Posts: 183
Location: California
So, is the long wind-up time, the bonk time, and the fact that it lands you on the far right of the room why you chose to just use a regular dash with space jump over a shine spark ball for the final dash at 31:53?
Editor, Player (95)
Joined: 5/27/2006
Posts: 240
Ford wrote:
So, is the long wind-up time, the bonk time, and the fact that it lands you on the far right of the room why you chose to just use a regular dash with space jump over a shine spark ball for the final dash at 31:53?
Correct, a ballspark is slower.