Submission #6381: Sniq's SNES Super Metroid "100%" in 1:01:47.03

(Link to video)
Super Nintendo Entertainment System
100%
lsnes rr2-β23
222788
60.0988138974405
701819
Unknown
Super Metroid (Japan, USA) (En,Ja).sfc
Submitted by Sniq on 5/1/2019 7:49:17 PM
Submission Comments

Attributes

  • Collects all items
  • Aims for lowest real time / frame count
  • Forgoes major game breaking glitches
  • Forgoes out of bounds
  • Forgoes memory corruption
  • Abuses minor glitches and exploits
  • Takes damage to save time
  • Manipulates luck

Terminology

  • Energy Tank = E-Tank
  • Super Missile = Super
  • X-Ray Scope = X-Ray
  • Speed Booster = Speed
  • Charge Beam = Charge
  • Plasma Beam = Plasma
  • Mother Brain = MB
  • Continuous Wall Jump = CWJ

Tools Used

Overview

The ultimate TAS of the 2D realm has finally crossed the finish line, incinerating Cpadolf's previous iteration into ashes. The total improvement is 23360 frames, or approximately 6 minutes and 28 seconds in real time, and 3 minutes and 22 seconds in game time. Of those 23360 frames, 4118 were from lag reduction.
With an extremely unconventional route, even more new techniques than before, tons of updated room strategies, and a healthy amount of lag reduction, this TAS aims to outdo my previous works in terms of optimization and entertainment.
A secondary encode is being provided with fixed graphics, thanks to the creation of a LUA script for Bizhawk by PJBoy that alters the VRAM. All Super Metroid TASes created with Bizhawk and Lsnes are compatible with each other.
More specifically, this LUA script automatically:
  • Centers misaligned doors (to prevent permanent graphical issues)
  • Allows graphics to scroll & update while using X-Ray
  • Prevents graphical errors that would occur if Samus moved faster than 16px per frame
  • Follows Samus while she is off-screen (doesn't work yet, but will soon)
Fortunately, VRAM doesn't impact a Super Metroid TAS's ability to sync.

Route Outline

Perhaps only somewhat surprising in the context of 100%, Kraid -> Ridley -> Phantoon -> Draygon was determined to be optimal, with a 'one-trip Norfair' being possible through the assistance of various X-Ray exploits, and Phantoon being handled before Draygon to acquire Gravity Suit, of course.
The route itself was produced in cooperation with EternisedDragon, and as the saying goes, "well begun is half done".
Thanks to moonfall, almost all of the items from Green/Pink Brinstar can be acquired in one pass - the one unfortunate exception being the E-Tank behind Charge (commonly referred to as the "water tank") as it's shielded by many layers of Speed blocks.
All other areas, such as Kraid's Lair, Norfair, Wrecked Ship, and Maridia are completed in one visit, with a brand-new exploit performed to access Maridia immediately after reentry into Red Brinstar.
After Maridia, the aforementioned water tank is collected before sweeping the rest of (blue) Brinstar and Crateria. MB is then promptly dethroned in a lag-free duel to the death.

New Techniques

Grapple Speedkeep

Normally, all dash (run speed) is lost whenever Grapple makes contact with a Grapple block or Grapple-able enemy. However, if you do so on the same frame when the knockback period ends, all dash will be maintained.
With careful maneuvering, it's also possible to land and continue forward movement with this prior dash maintained. (see Post Crocomire Farming Room)

Grapple Supersink

If Samus releases from a grapple swing in a manner that the starting vertical speed exceeds 6 pixels per frame, it becomes uncapped and is allowed to increase forever, similar to moonfall.
If this specific release is combined with a pixel-perfect soft unmorph ("slopekiller"), this speed can be stored while in a crouch pose. From there, turning with either or both angle buttons held will increase the speed further, eventually allowing Samus to sink through objects (16+ speed required). (see Bowling Alley & Aqueduct first visit)

Unused Doors

There are a few rooms in the game which contain unused doors / areas within their boundaries. The Plasma beach is one such area, where a door - which has the same ID as the bottom right door of that room - exists behind the door leading to the Plasma area, effectively serving as a shortcut.

Pausing to release inputs

When the game pauses, it considers all inputs to be released, making it possible to, for example, morph without needing to wait a frame before being able to press down a second time to morph. This was crucial in being able to properly soft morph during the Bowling Grapple supersink. (That's why there's a seemingly unnecessary pause there, but it was definitely necessary!)

Midair-stuck Moonfall

Certain conditions can make Samus seemingly stuck in midair, in one of her midair poses. One method for this is to freeze two enemies with the correct distance between each other, and then jump between them. Now, what happens if you moonfall between those two enemies? Well, it allows a massive amount of vertical speed to be built up without needing any falling distance beneath you.
This was originally going to be applied as part of the means to access Maridia through Red Brinstar, but a faster strategy was found, thus limiting application of this technique to the Green Pirates Shaft before Tourian, using both of the Beetoms.

Phantoon Double Super

If Phantoon is struck with a Super on the same frame he initiates movement after the first Missile volley, he won't enrage.
This trick saved nearly a second compared to the typical single Super fight - albeit still slower than an X-Plasma fight, but this obviously wasn't an option in this run.

Soft Crumbling

Performing a soft unmorph atop a crumble block (to maintain vertical speed) and then performing a frame-perfect morph when the block vanishes can save time in very specific situations. (see West Sand Hole & Blue Brinstar E-Tank Room)

Snailtool

Yards (snails) can consume the same blocks of sand that Shaktool plows through, so a Yard can be directed to tear through part of the sand before Shaktool is able to reach it, allowing a quicker escape.

Continuous CWJs

Normally, all dash is lost as soon as the jump button is released, but if Screw Attack or Space Jump are active, it's possible to perform multiple CWJs in a row without losing dash.

Sand moonturns

By initiating a moonfall right before entering a room filled with sand, Samus will sink at about double the speed during turnaround animations, which makes this much faster than the traditional morph-unmorph-ing.
And finally, all techniques and glitches applied in the Any% TAS from 2018 were also applied in this project. You can read more about those on the submission page of that run.

Improvement Breakdown

Yes, very much improved...
...placeholder

Special Thanks

  • EternisedDragon a.k.a. Aran;Jaeger for helping create this route and for reviewing my progress
  • Cakemaphoneige a.k.a. Cake5 for finding a 3 frame improvement to MB's head manipulation during the stand-up glitch
  • PJBoy for his amazing LUA script
  • Dan for various disassemblies
  • Cpadolf's previous TAS for comparison material
  • Overfiend for being my editor

feos: This run as it is is somewhat easy to judge, it's just an improvement to the existing full completion branch, coming from better routing, optimization, and new tricks. I watched them side by side to confirm this.
However, the thread proves that we're having quite some questions to be answered about Super Metroid TASing and branching in general. Those questions started appearing a few years ago, and since there was no answer that'd satisfy the whole community and get its approval, I'm going to generate it now.

Out of bounds

I watched all the recent "game end glitch" movies using this script that I found on google and tweaked a little bit. Here's what it looks like.
From reading some resources I can conclude that Super Metroid's out-of-bounds area is special if we compare this game to, say, Mega Man, which was brought in the thread a few times. In MM the map is continuous, even if only on the index level, so by leaving one room, you enter another, even if they are not meant to be near each other level design wise. In Super Metroid, a room is what is currently loaded into memory, and leaving its layout bounds brings you nowhere else than garbage area. What this garbage area will be is determined by what layout was previously loaded, and whether or not the current layout loops in memory. So you either enter a copy of the current room, or utter garbage area with garbage blocks, which in turn have a variety of garbage properties, including calling non-existent routines. What routine a block calls upon touching can be manipulated to trigger arbitrary code execution, this is what's happening in the most recent "game end glitch" branches.
Just like with the current Super Metroid trunk (or labelless branch, or no-major-glitches category), some people feel disappointed by what looks like being out of bounds in this submission. Technically the room bounds are never escaped in either movie. What looks like OOB is just scrolling glitches where the camera isn't able to follow the character's movement due to bugs. As a result, it's impossible to know where the character is actually going during such segments, and that damages entertainment.
It's worth mentioning that it would technically be allowed to visit out-of-bounds areas in all SM branches as long as that's not used to fill completion counter via memory corruption and ACE techniques. It just seems to be the most entertaining solution for the NMG branch to avoid OOB along with ACE and memory corruption. Since that branch is unvaultable, we want it to be as entertaining as possible, and the current rule set used in it makes it reasonably entertaining. For full completion, it doesn't even have to be entertaining at all to be published, but that could downgrade the movie to Vault, and the audience doesn't want that. So it's a common agreement that SM 100% should avoid all the techniques SM NMG avoids, while also collecting all items as implied.

Entertainment

Despite of having quite some complaints in the discussion thread for [3653] SNES Super Metroid by Sniq in 35:58.31, that movie's rating is overwhelmingly high. I don't have an explanation for that other than people not caring about ratings once they have expressed their position in the thread. Despite of that rating, all the same complaints are now back and vocal in this submission's discussion.
I could of course rely on the NMG branch ratings and ignore the complaints, just accepting this branch to Stars the same way that other movie was accepted. But firstly, I'd prefer to make sure the audience generally doesn't mind starring this run; secondly, there should be some agreement on how to manage glitch avoidance within SM branches; and thirdly, I can expect some more negative ratings this time, since this subject is seemingly getting more annoying to some viewers.
As I said, I watched this movie side-by-side with cpadolf's work. I tried to match all the similar areas and watch them so that the changes are the most apparent to me. After having read the thread, I expected the second half of the movie to be a complete mess where you can see neither Samus nor the level layout at all. And this expectation was completely false. Aside from very few occasions, it was clear or at least easily deducible where Samus has navigated even during X-Ray dashes. What I didn't like at all though was segments where you can't possibly understand where Samus is at the moment. This is closely tied with scrolling glitches, and it does indeed visually look like out-of-bounds navigation.

No X glitch

The situation around the previous two chapters is that people are confusing major glitches with major skip glitches. Whenever something looks like heavy corruption, it's considered a major glitch, even though we only count glitches as major skip ones if they skip major parts of the movie.
But even though we mostly separate runs with and without major skip glitches, we also can separate runs with and without heavy glitches just fine. Time difference doesn't have to be all that big, but the way gameplay looks without such a glitch is significantly different. Avoiding this glitch also results in a more human-like (although still super-human) look: the action becomes more comprehensible, and as a result, it's far easier to relate to and enjoy. Note how glitch avoidance is called out in the "no X glitch" manner: this is because it avoids glitches that are common among other branches of that game.
Okay so how do we apply this to Super Metroid branches?
It's been said a number of times that having alternative branches for each of the current ones, separated by glitch usage, doesn't make too much sense because of huge content overlap between all the potential resulting branches. For games that have two or three branches, having this difference is mostly fine. It branches either as "major skip glitch" / "no major skip glitch" / "no heavy glitches at all", or as "heavy glitches" / "no heavy glitches". But Super Metroid always has at least 4 branches published together, so any new branch is going to resemble others, and that's especially true if there are 4 fundamental, primary routes, and on top of that there are versions of them without heavy glitches. Adding a "no heavy glitches" alternative to any of the current branches is unfeasible.
Then, banning heavy glitches right in NMG or 100% makes those branches too arbitrary. We don't have enough support in the community for such a step. In addition to that, comparing speed improvements would become a hell, because the line tends to be getting thiner and thiner between visually appealing and distracting heavy glitches, all of which save time, but none of which results in a major skip. So it won't be possible to properly account for this limitation in obsoletion chains.
There's also a point to be made about really insignificant time difference in either scenario.
Anyway, camhack encodes are possible that fix the scrolling glitches. Having low-glitch branches that look exactly like alternative encodes of high-glitch branches is silly.
So as I said in this submission's thread, one's best bet is avoiding all the "bad looking" glitches in a fundamentally unvaultable branch. To be specific, the only current unvaultable branch that would suit for this limitation seems to be "low%".

Attempt to define this esoteric goal

It's worth noting that the ammo underflow glitch that was used in the previous NMG branch, can count as memory corruption. You partially change the logic controlling some address, and what would properly work in proper situation A and in proper situation B, doesn't work right in improper A-B hybrid. resulting on writing to unintended logical address those 2 situations share. But even then, whether we want to define this strictly as memory corruption or not is not that clear: all the X-Ray glitches used in this run and in NMG could arguably fit the same definition, yet they aren't avoided alongside other memory corruption techniques.
Regardless, the undeflow glitch is banned in low%, and I fully agree with this decision, because it avoids route and execution trivialization, resulting in a more entertaining movie. But how do we account for other recently applied techniques that damage entertainment?
In addition to banning the underflow glitch, I suggest banning all the scrolling glitches in the low% category. Sure, in its current form it probably doesn't have them anyway. But after all, it's the only category among the current ones where this approach is still possible (and desired).

Conclusion

Every decision made in this movie makes the most sense, and represents the most solid of the available options. Any tweak theorized by the audience would make it worse, either in terms of entertainment (the majority still likes this run), or in terms of definition solidity.
Even though this movie looks stylistically identical to the NMG branch that is starred and has great ratings, I'd like to see this run's ratings. After all, this movie inherits all the problematic aspects of [3653] SNES Super Metroid by Sniq in 35:58.31. Then there's arguably less difference between this and the current NMG than there was between the previous 100% and previous NMGs. As a result, I'd prefer having a Star related discussion separated, and well after this run gets published and gains enough post-publication feedback.
Otherwise, accepting to obsolete [2436] SNES Super Metroid "100%" by Cpadolf in 1:08:15.74 while going to Moons for now.
Spikestuff: PUB-LISH-ING
Last Edited by adelikat on 10/31/2023 5:26 PM
Page History Latest diff List referrers