(Link to video)

Game objectives

  • Emulator used: VBA-RR v24 svn391 (should work on latest svn)
  • Heavy glitch abuse
  • Genre: Platform

Comments by MUGG



Please watch the run first if you want to be surprised.

Step by step we get closer to beating every single game by magically warping to the end. This run is the result of intensively trying to find ways to make use of the Pause Glitch to finish the game even faster than the previous run. The previous run used the v1.0 exclusive Pipe Glitch to travel through ROM, VRAM and SRAM to destroy a block corresponding to address $A2D5. If this address is non-zero, the game will run the credits the next time you enter a level.
In this run, however, the Pipe Glitch is never used. Instead we use the Pause Glitch that was found in 2011. The game would reset itself or create blocks above Mario's head when pausing rapidly at the same time the game is lagging from having too many enemies onscreen. I didn't really understand why this glitch occurs but I went on and used a lot of trial-and-error to come up with some interesting results [dead link removed]. Later on, Spikeman would contact me to ask questions and investigate the glitch for me which I really appreciated. Please read this post to learn more about the Pause Glitch. It was thanks to his investigation that we found that the Pause Glitch sometimes executes code starting at $A201. Back then, I didn't really understand anything about opcodes, registers, and all that so I couldn't do much more than keep asking for help and keep using trial-and-error blindly.
In 2014, I became a bit more familiar with opcodes after I googled for this page. I tried to actively look into how different code causes different stuff to happen. The first idea was to set $A2D5 to nonzero or $FF9B to 12,13 or 23, which would trigger the credits. The former could be easily done by EA D5 A2 or 08 D5 A2 so I tried to make $A203~$A205 read this code.
($A2D5 is an address whose purpose I don't really know. It never changes throughout a playthrough, but if it is nonzero, it will start the credits the next time you enter a level. $FF9B tells the game what mode it is currently in. "01" for title screen, "0C" for being on the map, "04" for being in a level, "08" for when you paused the game, etc. "12", "13", "23" will trigger the credits immediately.)
$A203 depends on the screen X position in the level and can become 08 at the beginning of a level and EA at the end of some levels.
$A204 seems to depend on Mario's Y position and can become D4 which is sufficient to reach $A2D5.
$A205 was the trouble maker though because it cannot become A2 in the first level. This address changes when you hit a breakable block or touch a coin in a certain location in the level. Spelling A2 can only be done with a coin and there is no such coin in the first level. It took way too much time to go to another level to touch a certain coin, and then go to yet another level to get in the right position and make the game lag.
The next idea was to use the Demo Mode. On version 1.0, you can press certain button combinations on the title screen to start in a level immediately. Up+Select makes you start in the first level for example. While in this mode, there is no music and the game records input and input durations in $A300~$A3FF. This mode was probably used by the developers to create the title screen demo sequences and they might have forgotten to remove it for version 1.0. Being an ingame code, we always neglected using this in a TAS but this seemed to be the last resort to make Pause Glitch work for us. So what I tried was spelling a code in $A203~$A205 that jumps to anywhere after $A300 to execute any code we want. Unfortunately, I discovered later that the Pause Glitch doesn't work at all in Demo Mode, apparently due to the absence of the function that handles the music.
I didn't really expect much after this happened, but somehow I found later that jumping to certain parts of ROM (around $05C8 for example) can cause interesting stuff, like gameovers or instant level finishes. I found that $FF9B could be set to 12,13 or 23 and it was easy to spell code in $A203~$A205 that jumps to ROM but unfortunately the game would always reset or freeze after jumping. With help from Masterjun, who became interested in SML2 after I kept asking for help in IRC, it didn't take long to find the one good way to start the credits and keep the game from freezing. Masterjun was also the first one to accomplish this while testing.
C4 CZ 05 ... C0, where Z can be almost any value, was the code that managed to do what we wanted.
$A203 and $A204 were made to read C4 CZ easily. $A205 was made to read 05 by touching a certain coin in the underground in the first level. $A227 (Mario Xposition) was made to read C0 by standing in the correct pixel position. C0 would return to where the program counter left off. The game would then silently and slowly fade into a mute credits sequence. Success! :)
I used the Pixel Trick from the previous runs to improve my speed. I want to try to explain it here again. The game doesn't use subpixels but still uses speeds that are more precise than 1 pixel/frame or 2 pixels/frame. The game does this by using pixel oscillations. When running, Mario moves 1, 2, 1, 2, 1, 2... pixels. By switching between different oscillation sequences, you can squeeze out an additional 2 every 8th frame or so. I watched $A200 (oscillation pattern that is currently used. I think it points to a certain location in ROM somewhere) and $A202 (Mario's speed) to optimize it as best as I could.
I also want to show you the latest version of the lua script that I used. It is Spikeman's lua script that helps use the Pause Glitch, with amateurish additions by me (lol).

Special Thanks to

  • Spikeman for investigation the Pause Glitch and finding that it executes $A201 onwards
Honorable mention to
  • andymac although he hasn't been involved since 2011, I want to thank him for finding the best way to do the Pixel Trick and for the previous runs that we worked on together

Nach: After doing way more research than is sane, and speaking to some emulator authors, it looks like what this movie does has a reasonable chance at being possible. Since feedback is good, and it's a considerable improvement over the previous run, I'm accepting this as an improvement.
Fog: Publishing with an encode from sheela901...

Joined: 11/20/2011
Posts: 27
Location: UK
No for this being tool-assisted programming, not tool-assisted speedrun. Reading the submission is more like learning programming instead of game technique. Yes vote.
Former player
Joined: 3/31/2005
Posts: 192
Location: Argentina
Are we 100% sure this is theoretically possible on real hardware? I remember there once was a glitched run of this game that was rejected when it was discovered that the glitch was emulator-specific.
Experienced player (703)
Joined: 2/5/2011
Posts: 1417
Location: France
hhj,nj,nj,njh,njh,njkjh,njhnnhguyjn,un, sorry, I was too amazed by what happened, yes vote. 50th YES vote of submission :D
Current: Rayman 3 maybe? idk xD Paused: N64 Rayman 2 (with Funnyhair) GBA SMA 4 : E Reader (With TehSeven) TASVideos is like a quicksand, you get in, but you cannot quit the sand
Editor
Joined: 11/3/2013
Posts: 506
Hmm, even though it is technically phenomenal, this is considerably less entertaining than the movies it obsoletes, it reminds me of the Chrono Trigger situation in a way, where we had an incredible, mind-bending starred movie obsoleted by a movie where nothing happened for three minutes and then the credits ran. So why was that movie consigned to the vault while this is receiving unanimously positive reception? Sometimes I feel that TASvideos is becoming a massive circle-jerk, that there is an unwritten code that you have to proclaim every new run ever as the second coming of Jesus (at least if it is of a popular game). Even on a technical level, I am told that this is an incredible achievement but can I, or even the majority of people watching this movie here and especially on Youtube, appreciate that? I have no idea what is going on inside the RAM that so sadly is no longer being displayed onscreen. Anyway, rant over, I just hope that runs like this aren't slowly sucking the life out of TASing as an artform rather than a science. Abstaining from voting.
Editor, Expert player (2314)
Joined: 5/15/2007
Posts: 3856
Location: Germany
GeminiSaint wrote:
Are we 100% sure this is theoretically possible on real hardware? I remember there once was a glitched run of this game that was rejected when it was discovered that the glitch was emulator-specific.
When I have time I want to try it on console. I think it may be as easy as getting in the right pixel position and then pause a lot until it glitches out. The chance of it freezing is unfortunately much higher than it actually executing $A201~
Joined: 1/24/2012
Posts: 21
Location: France
thatguy wrote:
Hmm, even though it is technically phenomenal, this is considerably less entertaining than the movies it obsoletes, it reminds me of the Chrono Trigger situation in a way, where we had an incredible, mind-bending starred movie obsoleted by a movie where nothing happened for three minutes and then the credits ran. So why was that movie consigned to the vault while this is receiving unanimously positive reception? Sometimes I feel that TASvideos is becoming a massive circle-jerk, that there is an unwritten code that you have to proclaim every new run ever as the second coming of Jesus (at least if it is of a popular game). Even on a technical level, I am told that this is an incredible achievement but can I, or even the majority of people watching this movie here and especially on Youtube, appreciate that? I have no idea what is going on inside the RAM that so sadly is no longer being displayed onscreen. Anyway, rant over, I just hope that runs like this aren't slowly sucking the life out of TASing as an artform rather than a science. Abstaining from voting.
That's why there are different branch on a TAS. A no corrupted RAM glitch could be an amazing category for this game, keeping the TAS gaming experience alive. In an other way, that kind of glitch respect every rules, presenting an other approach of the game that I also find interesting so I dont see any reason to complain about it.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
What happened to this submission?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 5/14/2007
Posts: 525
Location: Pisces-Cetus filament
feos wrote:
What happened to this submission?
Nach is busy in his laboratory devising ways to reject this movie.
AzumaK wrote: I swear my 1 year old daughter's favorite TASVideo is your R4MI run :3 xxNKxx wrote: ok thanks handsome feos :D Help improving TASVideos!
Spikestuff
They/Them
Editor, Publisher, Expert player (2299)
Joined: 10/12/2011
Posts: 6339
Location: The land down under.
Zeupar wrote:
feos wrote:
What happened to this submission?
Nach is busy in his laboratory devising ways to reject this movie.
With Magic. Looking towards Master Nach DON'T TOUCH MY MAGIC POTIONS MASTER! Okay my muffins with magic traces are fine... but not those potions, still trying to figure out what they do, retrieves a potion like this one. Like what does this one do? drinks it oh legs give way then falls asleep
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Nach is busy in his laboratory determining the validity of this movie.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
sack_bot
He/Him
Player (111)
Joined: 11/27/2011
Posts: 394
Location: Massachusetts
Nach wrote:
Nach is busy in his laboratory determining the validity of this movie.
Didn't know you used a laboratory for that.
Message me here for my discord. Current Project: Psycho Waluigi Project on wait list: None?
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
Nach is busy in his laboratory determining the validity of this movie.
Is it possible to know what are the issues, hampering the investigation for so long?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
Nach wrote:
Nach is busy in his laboratory determining the validity of this movie.
Is it possible to know what are the issues, hampering the investigation for so long?
The issues are that I have a limited amount of time and limited preexisting knowledge, and there's a lot of code that needs to be parsed, and manuals to go through to see if behavior is valid.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
The issues are that I have a limited amount of time and limited preexisting knowledge, and there's a lot of code that needs to be parsed, and manuals to go through to see if behavior is valid.
You have a lot of specialists here, that can provide qualified help on that matter, you don't have to handle it alone, and there are enough users that can have a casual opinion on those issues too.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
Nach wrote:
The issues are that I have a limited amount of time and limited preexisting knowledge, and there's a lot of code that needs to be parsed, and manuals to go through to see if behavior is valid.
You have a lot of specialists here, that can provide qualified help on that matter, you don't have to handle it alone
That's a good point. I may enlist some help.
feos wrote:
and there are enough users that can have a casual opinion on those issues too.
Casual users? Opinions? WTH are you smoking?
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
Casual users? Opinions? WTH are you smoking?
You know, there are regular people here that aren't experts in tech stuff. They have opinions. Are you drunk?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
Nach wrote:
Casual users? Opinions? WTH are you smoking?
You know, there are regular people here that aren't experts in tech stuff. They have opinions. Are you drunk?
I would think you are. We don't need opinions in place of facts, and non experts are not going to know if emulators are implemented correctly.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Former player
Joined: 1/17/2006
Posts: 775
Location: Deign
thatguy wrote:
Sometimes I feel that TASvideos is becoming a massive circle-jerk, that there is an unwritten code that you have to proclaim every new run ever as the second coming of Jesus (at least if it is of a popular game).
This is not new. This site is not becoming a hardon for improvements to popular games, it always has been. With regards to opinions: I'm not an expert, I have no idea how these magical emulator things work. I found it perfectly clear what Nach was trying to say and that opinions are not useful here because coding and magic and stuff. You know, like that old run mentioned above that got asploded because it was emulator error.
Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign aqfaq Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
We don't need opinions in place of facts, and non experts are not going to know if emulators are implemented correctly.
Go read this thread again.
Nach wrote:
feos wrote:
Nach wrote:
WTH are you smoking?
Are you drunk?
I would think you are.
You started personal insults again. You claim things that aren't facts (I don't smoke, I'm not drunk), hence if you are saying you deal with facts that don't even need community's opinions, you're officially a liar.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
Nach wrote:
We don't need opinions in place of facts, and non experts are not going to know if emulators are implemented correctly.
Go read this thread again.
And this is related how exactly?
feos wrote:
Nach wrote:
feos wrote:
Nach wrote:
WTH are you smoking?
Are you drunk?
I would think you are.
You started personal insults again. You claim things that aren't facts (I don't smoke, I'm not drunk),
That wasn't a personal insult, that was a statement of incredulity . I'm sorry for using slang which may not be universally recognized.
feos wrote:
hence if you are saying you deal with facts that don't even need community's opinions, you're officially a liar.
I'm calling you out for using technique #6: I don't need opinions regarding emulation accuracy. I do very much need community opinions in general.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
And this is related how exactly?
You have experts and regular viewers agreeing (in the end) about how such cases should be handled. It also appears to match your own suggestion there. If people didn't agree with it, it wouldn't work.
Nach wrote:
That wasn't a personal insult, that was an incredulous statement. I'm sorry for using slang which may not be universally recognized.
That slang was inappropriately used, I didn't use any.
Nach wrote:
I don't need opinions regarding emulation accuracy. I do very much need community opinions in general.
Who suggested you community opinions about emulator accuracy? I said that whatever issues can occur to the run, may be important to discuss publicly. You addressed "a lot of code that needs to be parsed", and then suddenly implied that it equals emulation accuracy, and the argument happened.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
feos wrote:
Nach wrote:
And this is related how exactly?
You have experts and regular viewers agreeing (in the end) about how such cases should be handled. It also appears to match your own suggestion there. If people didn't agree with it, it wouldn't work.
I'm failing to see the connection between the two. One is about initial states, the other is about relying on incorrect logic.
feos wrote:
Nach wrote:
That wasn't a personal insult, that was an incredulous statement. I'm sorry for using slang which may not be universally recognized.
That slang was inappropriately used, I didn't use any.
I don't think either of us are understanding what the other is saying here, so I'm just going to drop this.
feos wrote:
Nach wrote:
I don't need opinions regarding emulation accuracy. I do very much need community opinions in general.
Who suggested you community opinions about emulator accuracy? I said that whatever issues can occur to the run, may be important to discuss publicly. You addressed "a lot of code that needs to be parsed", and then suddenly implied that it equals emulation accuracy, and the argument happened.
I'm talking about emulation accuracy. I thought that was clear, I don't know how else my statements could be understood, but that's not relavent. Since this conversation is going nowhere, and neither of us is understanding what the other has to say, I'm going to refrain from saying anything further.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11271
Location: RU
Nach wrote:
I'm talking about emulation accuracy. I thought that was clear
I couldn't tell that from
Nach wrote:
Casual users? Opinions? WTH are you smoking?
which is exactly why it all started.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Editor, Expert player (2314)
Joined: 5/15/2007
Posts: 3856
Location: Germany
I think the glitch could be console verified. But the credits glitch will take too much time to test as you would always have to go grab the coin in the underground. Possibly there is a pause glitch outcome that is easier and faster to test. I can't promise that I will but maybe I'm going to look into it soon..
Experienced player (632)
Joined: 11/23/2013
Posts: 2208
Location: Guatemala
MUGG wrote:
I think the glitch could be console verified. But the credits glitch will take too much time to test as you would always have to go grab the coin in the underground. Possibly there is a pause glitch outcome that is easier and faster to test. I can't promise that I will but maybe I'm going to look into it soon..
Wut? Gameboy movies can be console verified? I didn't knew that.
Here, my YouTube channel: http://www.youtube.com/user/dekutony