Have you ever imagined Mario going through all the levels at Sonic's speed? Well, you don't have to imagine anymore, you'll see it with your own eyes!
- Emulator used: BizHawk 2.6.3
- Allow Left+Right / Up+Down
- Core BSNES
- Abuses programming errors
- Heavy glitch abuse
- Corrupts memory
- Complete all exits
The Run 🟢
This is a TAS that completes all 96 exits in Super Mario World using arbitrary code execution. I wrote some code in the game's memory that allowed me to give Mario maximum speed, both left and right.
The process of how the code was written in memory is the same as my glitchfest with arbitrary code execution, so I won't go into details here.
The code was very simple: pressing L on controller 1 sets Mario's speed to 7F and pressing R sets the speed to 80. The address responsible for Mario's speed is $7B and the maximum values that we can have are those mentioned (7F is the maximum to the right and 80 is the maximum to the left). In short, Mario travels to the right at a speed of 127 pixels per frame and to the left at 128 pixels per frame.
The code is this:
LDA $18
AND #$10 ;|check if R (controller 1) is pressed
BNE ace1
LDA $18
AND #$20 ;|check if L (controller 1) is pressed
BNE ace2
RTL
ace1:
LDA #$80 ;|set 80 in $7B if $18 equals 10
STA $7B
RTL
ace2:
LDA #$7F ;|set 7F in $7B if $18 equals 20
STA $7B
RTL
In short, that's it. No addresses other than the code have been changed.
Important things:
- Mario jumps very high when his speed is between 110 and 119 (decimal). I used this to my advantage;
- At high speeds, Mario can pass through walls without dying. You will see this several times in this TAS.
This may be a bit of a controversial category because of the use of arbitrary code execution, but I find it fun to watch Mario blast through every level like a lightning bolt! I also believe that there are several improvements in this TAS and it could be faster, but I didn't have much free time to think about the best possible strategies for each level.
My thanks to the great Noise de Gole for teaching me a lot about arbitrary code execution and you for watching :)