TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #5447: Masterjun's SNES Super Mario World "expansion game end glitch" in 00:41.75

Console: Super NES
Game name: Super Mario World
Game version: USA
ROM filename: Super Mario World (U) [!].smc
Branch: expansion game end glitch
Emulator: lsnes rr2
Movie length: 00:41.75
FrameCount: 2509
Re-record count: (unknown)
Author's real name: Julian N.
Author's nickname: Masterjun
Submitter: Masterjun
Submitted at: 2017-04-01 07:06:46
Text last edited at: 2017-04-06 17:18:12
Text last edited by: Masterjun
Download: Download (5531 bytes)
Status: judging underway
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

Suggested intro text

Welcome to the 4 frame improvement to the SMW credits glitch run! Credit to p4plus2 for thinking of the method to do this.


(Link to video)

Suggested game objectives

  • Emulator used: lsnes-expansion-p4plus2-credittohim-uuuh-hedidnttestthisyetthough
  • Aims for the goal of completing the process of reaching the THE END of a completed game which reached the state of the finished goal of winning in the game... as fast as possible!
  • It also uses a bunch of controllers to complete the goal of finishi-
  • It's also faster than the current run by 4 frames
  • Credit to p4plus2 for finding the mysterious thing that makes this possible

Suggested comments

How to play back the file on a normal lsnes rr2 version

For your convenience (and probably mine because I don't have the version either), I made a fancy Lua script to run which makes the run play back correctly! In fact, it's also already in the movie file itself so you can also simply extract the script.

It also only needs to run on the last frame of input (after that you can use Reset Lua VM to remove all remaining callbacks) so it doesn't make the run any longer.

What do you mean you want an explanation for the mysterious thing

Okay, okay, it's the expansion port on the SNES! (see picture below) (credit to p4plus2 for thinking of this)

SNES expansion port

Turns out the expansion port registers are found on addresses $2184-$21FF which makes them very similar to controller regsiters (adresses $4218-$421F).

The differences are quite important though.

One is pretty obvious: Instead of 8 arbitrary bytes with the controllers, we have 124 arbitrary bytes with the expansion port.

The other one is just as useful though: In practice (as in, on actual hardware), all 124 bytes can be changed at the speed of the SNES CPU. This means in theory you could set all 124 bytes to 0xA9 and start executing them. Then right after the CPU fetched the first byte you can change all 124 bytes to hold, say, 0x96. The resulting first instruction would be A9 96 (LDA #$96).

Since the value can change every fetch of the byte, p4plus2 found the easy method to emulate it by just writing a byte buffer for all the bytes returned to the CPU as soon as it requires them. This is the expansionportdata file you see inside the movie file, even though it's useless since it isn't read by the normal emulator.

In this movie a jump to the expansion port is used to write a program into memory (all in the last frame, so that it doesn't make the movie longer). This program then runs until it finally jumps to the credits.

Now a few words from an Aidful Individual who learned to write submission texts

I die jump with platform, Select is trologed. For my have to be have along the Super Mario's cut prized.
  • He Pokemon.
This is prevented for the battle, they. Hat have set that good scroll and a Mario quickly reason.

But TAS work.

Suggested screenshot

(whaaat !? it's not an actual screenshot from the movie !?)


Fog: Judging.

Fog: Dropping this one, this run seems much more suited for Nach.


Nach: Judging.

Similar submissions (by title and categories where applicable):