Submission #2823: pirohiko & MUGG's SNES EarthBound in 30:42.12

Super Nintendo Entertainment System
(Submitted: Earthbound)
baseline
Snes9x
110527
60
76730
Unknown
Mother 2 (J).smc
Submitted by MUGG on 8/31/2010 12:11:52 AM
Submission Comments

Game Information

Earthbound is a game where the hero, Ness, is just an average 13 year old kid from the suburbs... until the night a meteor lands in his backyard. The local wildlife starts attacking him, he begins to realize psychic powers, and a mysterious messenger from the future tells him that he must save the world, but before he faces any of that Ness has to change out of his pajamas. With a baseball bat as his weapon, Ness begins a quest to stop an evil alien presence from destroying the world. He will later meet with Paula, a girl with strong psychic abilities, Jeff, a young genius with the ability to repair broken things, and Poo, a prince from far, far away who also happens to have strong psychic abilities.

About the run

  • Uses death to save time
  • Uses warps
  • Manipulates luck
  • Abuses programming errors in the game
  • Genre: RPG
Used emulator: Snes9x rerecording 1.51 v6
The following comments are written by mugg: I know many game series only because I played Super Smash Bros. Melee on the Nintendo Gamecube, a beat 'em up featuring many Nintendo characters and the prequel for SSBB. I got to know F-zero, Starfox, Kirby, and of course I got to know Earthbound. I always wanted to play through this game at some point and after I did so I felt the need to TAS this game. I simply loved the graphics, the comic-style and the music in this game. But a full run seemed to be very long and the glitched category was already well optimized. I wasn't very knowledgeable with the game either. Always with an eye for possible improvements for popular Nintendo games, I watched many Youtube videos until I saw the Tent glitch in Earthbound. It was said that when you check a certain place in the tent in Threed, the game would behave very strangely and sometimes it would even glitch up. People had written comments stating that it also triggered the debug menu #1 in this game so I thought this was my lucky day. I began researching the glitch, checking places in the out-of-bounds area and making a map for it, telling people like Nitrodon and Halamantariel about it and getting things started. However, I wasn't able to record this glitch in snes9x 1.43 (because playback behaved differently than recording mode), so this stopped progress for a while until I was said that it worked properly in snes9x 1.51. I tried it with the Japanese version, Mother 2, and it seemed to be more glitch-friendly and more likely to trigger the debug menu so this version was used. Pirohiko teamed up with me and I want to thank him for his work. When I TASed a section of this game, he would often improve it by a few frames and he is also much better at manipulating luck and did basicly all the battles. He wrote a very useful lua script regarding RNG behavior. When we reached the debug menu, things got a bit difficult since we couldn't directly go to the credits with it. More details on this below...
The debug menu glitch worked differently when using different versions of the game on different versions of snes9x. But pirohiko [dead link removed] recorded himself testing the tent glitch on the Japanese version on a real SNES and it behaves like snes9x 1.51 with the Japanese ROM.

Tricks

Optimizing positioning

This game has subpixel carry-over. This means that approaching a door a bit differently can be done in order to optimize the subpixels.

Luck-manipulation

The game uses a flow of 14592 sequent RNG values which it will run through during playing the game. Those values determine the appearance of enemies, item drops, SMAAAASH!! attacks, NPC behavior and other things. Having text being written onscreen will cause the flow of RNG to move with each character written. When the game loads new enemies onto the map, it will shift the flow of RNG too.

Overworld

In order to skip enemies or to have specific enemies appear or to have NPCs not move into one's path, one can pause the game by pressing "B" or "select". The RNG will be called each frame during pausing. The game uses barriers to determine if enemies should appear. Once you walk across such a barrier, enemies may appear and it will shift the RNG a bit. This is very useful in Giant Step since we can shift the RNG very efficiently here by walking across barriers repeatedly. This trick is even more useful when walking on an intersection of barriers. We needed to do this in Giant Step in order to get 6 speed and 24 offense from the Gigantic Ant boss battle so we could knock out every police officer with one SMAAAASH!! only. We needed to shift the RNG for an entire 700 steps which explains the random walking in Giant Steps...

Battle

Changing the selection during a battle will change the RNG. This can be used to manipulate SMAAAASH!! attacks. Since you can change the selection only every other frame it is better to manipulate the first SMAAAAASH!! before the battle, by pausing the game.

Skipping a trigger spot (Stutter walk)

It is possible to skip spots which trigger an event by moving through it every other frame. This was used in order to skip the Starman Jr. battle and the Soundstone from Buzz Buzz.

Walk through cliffs

You can walk through certain types of cliffs with proper subpixel positioning. See this section for more detail. It was used in order to skip Twoson.

Tent glitch (Debug menu)

In the circus tent in Threed, position yourself into the wall on the right, below the door. If you are in the correct spot, try to check the area and the dialoge should be delayed. You might end up warping to some place, freezing your game, causing graphical glitches, seeing garbage dialogue or triggering the debug menu. The latter is interesting from a speedrunning point of view since you can use the debug menu in order to complete the game very quickly with it. The debug menu occurs more likely on the Japanese version of the game (Mother 2). I wasn't able to trigger it even once on the US version, however, people made comments stating in English language that they triggered the debug menu so I'm assuming that it may work on the US version.
When you check the glitch area in the tent, there are two primary glitch messages that are very likely to appear eventually. One message would prevent you from proceeding and eventually freezes your game, with the graphics glitched up and the Arcade BGM. The other will change the music to the game-over BGM often and it will produce many invisible text boxes. Depending on the timing and on how long and how often you press "L", "A" or "R" the 'next' invisible text box may or may not appear. If it doesn't appear you basicly failed the glitch. During the first two invisible text boxes, there is a tiny chance of glitching up the game (in that it gives you a bicycle and plays the bicycle BGM or warping you somewhere while freezing the game and similar things). Once you reach the third invisible text box, the debug menu will eventually come after ~10.000 frames of auto-firing "L" and "A" alternatedly. I tested this glitch thoroughly and it would either get me to the debug menu on frame ~77000, ~72000 or ~68000. I was able to change a 77000 outcome to 68000 by random input, but I wasn't able to get an even better outcome. The assumption was that the text would be read from some point of memory until it reaches the debug menu, but the text pointer (0x7e9979) didn't seem to affect anything. We went on as we couldn't reduce more time. The next problem was to get to the staff credits fast! We could go to different events throughout the games so we chose to go to event 70 (69 goes to Ness' house after the Staff credits, but playing the Staff credits instead of skipping them was prefered). It sends us to Saturn Valley with the game beaten, with Paula in the party, and all left to do was to talk to Ness' mother. But the game still seems to be glitched after using the debug menu. It may randomly crash, freeze but most likely it would warp us to Fourside's café with a lot of invisible dialogue to click away before we could proceed. After a lot of trying different strategies we used this strategy:
  1. Add Paula as a character
  2. Make Ness' HP run out
  3. Give him the 'diamondized' status ailment
    This makes the game behave like Ness has no HP but is still alive.
    This is needed to make a game-over sequence work later on.
  4. Make Paula's HP run out
  5. Give Paula the 'diamondized' status ailment
    The same for Paula...
  6. Give each party member as much Skip Sandwich DX as they can carry
    This is a special feature of the debug menu. After going to event 70, Ness loses his inventory items but we can still use a Skip Sandwich DX from Paula's inventory.
  7. Go to event '70'
  8. Game-Over (very rare and we tried to reduce lag as much as we could, but it always forced us to go back to the center of Saturn Valley...)
    We used death as a shortcut here, otherwise we would have had to walk home from Saturn Valley or Fourside.
  9. Walk home and finish the game
This page explains the features of the debug menu.

Possible improvements?

We wouldn't know of a confident way to improve this movie. However, it may be possible to set up a better randomness in the long run for Giant Step so we wouldn't need to spend much time towards manipulating the RNG there. But it is very hard since you can't predict how things are going to turn out. Seeing how random the tent glitch can act, it may be possible to abuse it further. Maybe someday we will be able to access the Staff credits a whole lot faster without the need of the debug menu at all? Maybe the waiting time for the debug menu can be shortened, but we tried our best to reduce it as much as we could already.

Closing words

Thanks to Nitrodon, Halamantariel, Scepheo, and others! Maybe more information will be added later.
Please feel free to ask questions since my complicated explanations may not be clear sometimes.

Flygon: Added YouTube module.

FractalFusion: Judging.
FractalFusion: This run uses a glitch which passes through a debug menu which cannot otherwise (as to our knowledge) be accessed by means apart from external codes. If the debug menu was easily accessed by an internal code, that would be a different story. As it stands, it can only be assumed as part of the glitch process, and it will be allowed.
In the apparently non-existent event that such an internal code is found later, the published run will be placed in the impure category and any further runs going through the debug menu will likely be rejected.
This run will be accepted for publication alongside the existing publication.
Last Edited by adelikat on 9/19/2023 5:57 PM
Page History Latest diff List referrers