Submission #5809: Sniq's SNES Super Metroid "game end glitch" in 07:05.83

Console Super NES Emulator lsnes-rr2-beta23
Game Version JPN/USA Frame Count 25592
ROM Filename Super Metroid (Japan, USA) (En,Ja).sfc Frame Rate 60.0988138974405
Branch game end glitch Rerecord Count 36554
Unknown Authors Sniq
Game Super Metroid
Submitted by Sniq on 1/31/2018 7:51:02 PM

Submission Comments


  • Aims for lowest real time / frame count
  • Takes damage to save time
  • Abuses programming errors
  • Executes arbitrary code
  • Skips all items


0% has finally landed onto planet Earth after much waiting, and unexpectedly, it crushed all the framecounts Super Metroid had witnessed up to this point!
This is a 231 frame improvement over the currently-published TAS, a TAS which was recently proven not to actually work as intended on original hardware. Not only should this TAS work as intended, but it is also faster and uses less items. What more could you ask for?
This improvement became possible through moonfall's property of uncapping falling speed, thus allowing for Samus to clip straight through the PB floor below Green Brinstar's elevator, along with an ACE method I developed for the OoB area afterward.
Without any items, moonwalking is the only way to move, bit by bit during each pause-unpause, through leftward door transitions towards an OoB area. The only door inside the Green Brinstar elevator room which does not have a solid wall behind it is at the very bottom, thus it is used.
The OoB area contains a useful block which executes code depending on Samus's previous X-axis position (7E0B10), which is what primarily gets abused through my ACE method.
Everything outlined above is explained in greater detail below!

New glitches and techniques


By moonwalking then pressing jump (frame 1: < or > + X, frame 2: A), instead of performing a jump, Samus will perform a turnaround animation right before performing the jump.
This particular jump will not have a value assigned to its vertical direction (7E0B36), causing its Y-speed value to underflow. Normally, Samus's falling speed is capped at ~5 pixels per frame, but by performing this jump, her speed will be uncapped.
Therefore, by performing a moonfall, it is possible to acquire a large amount of falling speed, which can be used to pass through entire tiles. A standard tile is 16 pixels by 16 pixels.

Moonwalk Doorskip

Not only is it possible to pass through doors corresponding to vertical transitions, which happens in the room known as the Parlor (and has been present in the multiple ACE TASes up to this point), it is possible to do the same with doors corresponding to horizontal transitions.
Unfortunately, performing such a skip is not possible with only one pause-unpause. Instead, it has to be performed using multiple pause-unpauses, moving a half-pixel backwards on a single specific frame each time via moonwalk.
The reason these skips work is because there is a specific frame during the unpause fade-in where Samus will not have normal constraints applied, such as those related to her energy (allowing her to survive indefinitely at zero by chaining pauses together appropriately, which was performed in a previous TAS) and room transitions.



Right off the bat, things take an interesting turn within the second room of Crateria. Usually, the player would head straight down multiple rooms to acquire Morphing Ball and Missiles, but by using an OoB transition block directly below the room itself, this sequence is skipped.
By performing this skip, Samus is placed at the top of the next room, which luckily contains another handy transition block. This transition block places Samus within a copy of the green pirates' shaft, to the right of the original room, due to her X/Y coordinates at the time of transitioning.
Copies of rooms do not contain enemies (only the original room does), and Samus interacts slightly differently with such rooms. In this case, in order to open the door leading to the next room, the shot has to spawn far enough left for it to register upon the door.
Because of the copy room's properties, Samus is placed one tile above the ground after the transition, so jumping through allows her to land earlier, and also helped adjust the screen position.
Due to lacking Morphing Ball, the optimal strategy involving morphing through the Kago hives is not possible.

Green Brinstar

After arriving here without any items, you might think there cannot possibly be any further progress to be made, but that isn't the case.
By performing a moonfall near the edge of the elevator platform, Samus can perform many turnaround animations to maintain and build additional falling speed, until enough has been built to pass through the PB floor at the bottom of the (first half of the) room.
An additional moonfall is performed after passing through this flooring, weaving through the floating platforms accordingly.
Upon landing at the bottom, I jump towards the door and pause-unpause so that Samus will turn around and land on a specific frame (mentioned earlier, in the moonwalk doorskip explanation) without activating the transition, allowing her to start from a position ~2.5 pixels inside the transition blocks.
From this point, I perform many pause-unpauses along with frame-perfect moonwalks until I have maneuvered Samus outside of the transition blocks and into the OoB area, where the real fun can begin.

ACE method

I found two methods during the development of this TAS, the one used within being the fastest of them all.
Part of the setup occurs as early as the final pause-unpause, during the moonwalk doorskip. During this, I am holding inputs which produce the values 6C 93 within 7E05E1-7E05E2, as these store the values of the previous buttons pressed during the pause menu.
7E05E3 is already at value 00, which is exactly what I need here, as the 3 bytes I need together are 6C 93 00 which translates to JMP $0093.
Now, upon entering the OoB area in Green Brinstar, I head towards a 0F 44 block, which, upon making contact, executes things depending on what Samus's X position was on the previous frame.
There are multiple copies of this block within the OoB area, but none of them are located at X position 7E05E1, which is required for my pause menu manipulation.
Fortunately, making contact with the block at roughly $15 X position with an appropriate X speed makes it possible to have the block shuffle room data... thus creating a completely new 0F 44 block, right at X position $05E1!
After accomplishing the above, the trek towards that X position begins. Upon completing the trek and making contact with the block at $05E1, the block jumps to the contents within $05E1 (6C 93 00).
Now, we are at $93, which translates to "buttons pressed on previous frame". Cleverly, I hold the buttons which produce $421A, to start executing from controller registers.
With only three controllers available at this point due to one being used as part of the setup up to this point, I had difficulty loading the ending, but my dear programmer friend Total figured out a minimum byte combination for loading the ending straight from the ROM.
The entire ACE setup consists of the following code:
  • JMP $0093 - Jumps to contents of 7E0093
  • JSL $A2AD20 - Loads ending sequence
  • RTS - Return To Subroutine (required to prevent the game from crashing)

Special Thanks

  • Total, Taco, and Dan for assisting in the development of ACE methods.
  • Aran;Jaeger for leading me into discovering moonfall.

Noxxa: Judging.
Noxxa: Congratulations for taking a game and franchise whose best known feature is item collection and beating it without collecting a single item. It's a nice testament to just how broken the game has become at this point.
That said, it's fun to see the new route, which shows off quite well how broken the game has become when it is pushed to the absolute limit. Out-of-bounds trickery, sequence breaks, and other glitches are applied in interesting and technical ways. Accepting as an improvement to the published "game end glitch" movie.
Spikestuff: Publishing.

Last Edited by on 1/1/2022 6:14 PM
Page History Latest diff List Referrers