(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...

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
Location: 127.0.0.1
Player (172)
Joined: 12/28/2007
Posts: 235
Location: Japan, Sapporo
So SML2 has finally got silent credits...
Retired because of that deletion event. Projects (WIP RIP): VIP3 all-exits "almost capeless yoshiless", VIP2 all-exits, TSRP2 "normal run"
Skilled player (1766)
Joined: 5/7/2008
Posts: 187
Location: Japan
It is very impressive credits. YES YES YES!!
Skilled player (1703)
Joined: 9/17/2009
Posts: 4952
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
This is almost as hilarious as kirby going up a ladder and saving the world. Almost. Yes vote. Edit: Speaking of which: Post #374370 I really hope this happens. :D
Editor, Expert player (2310)
Joined: 5/15/2007
Posts: 3854
Location: Germany
I'd like to post this image to help people understand better what happened. Compare it with the image in the submission text.
jlun2 wrote:
Edit: Speaking of which: Post #374370 I really hope this happens. :D
That is only a matter of some frames, if any can even be saved. Masterjun also said that some time has to be sacrificed in order to prepare for the ladder glitch.
Joined: 5/17/2007
Posts: 393
Location: Sweden
I guess this is TAS only then. Yes vote
"No love for the game gear"
Editor, Experienced player (607)
Joined: 11/8/2010
Posts: 4012
I agree with pirohiko, that was impressive! I also enjoyed the nice submission text you wrote out. Always interesting to see all the time and effort put into making a great run. Yes vote!
Cooljay
He/Him
Active player (391)
Joined: 5/1/2012
Posts: 468
Location: Canada
Interesting to see this game got a new way to get the ending.Nice work MUGG and Masterjun!
Editor, Skilled player (1402)
Joined: 3/31/2010
Posts: 2081
What better run to wake up to than this? Yes vote.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
Notable improvement!
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.
Joined: 1/13/2013
Posts: 8
Location: Tokyo, Japan
Any hesitation will be needed for Masterjuning submission? Yes vote.
Masterjun
He/Him
Site Developer, Skilled player (1968)
Joined: 10/12/2010
Posts: 1179
Location: Germany
Great movie! I wanna make sure that I don't get too much credit for this. I was surprised that nobody went ahead and helped MUGG after he pretty much almost got to the credits. I decided that I could help him, as I already knew a bunch about the gameboy CPU (it's pretty easy). After a bit of digging inside the game I saw that we could use the xposition for more code to execute, which was the final step to succeeding. Fun fact: MUGG and I are both native German speakers but we never talked a word German. :D
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Fortranm
He/Him
Editor, Experienced player (773)
Joined: 10/19/2013
Posts: 1108
Epic. Yes. P.S.: Are both [1886] GB Super Mario Land 2: 6 Golden Coins "game end glitch" by andymac, MUGG in 02:08.98 and this run considered using memory corruption?
kazblox
He/Him
Joined: 5/4/2014
Posts: 29
"PUSH START TO CREDITS" Yes vote!
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2224
Location: Georgia, USA
I'm glad I didn't read the submission text until watching the encode. That was quite surprising indeed. I love how the ending pops out of absolutely nowhere. Yes vote!
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
Editor, Expert player (2457)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
THANK YOU MARIO YOUR QUEST IS OVER
Joined: 8/1/2004
Posts: 2687
Location: Seattle, WA
This is really bad and I don't like it. Voted Yes.
hi nitrodon streamline: cyn-chine
Experienced player (576)
Joined: 2/23/2008
Posts: 266
Location: CA, USA
I prefer the glitchyness of running around in the memory, but this was awesome!!! Yes vote and congratz on improving this game.
Experienced player (670)
Joined: 11/23/2013
Posts: 2206
Location: Guatemala
Heck Yeah!!!
Here, my YouTube channel: http://www.youtube.com/user/dekutony
Active player (500)
Joined: 3/1/2014
Posts: 76
Location: Paris
click workbench, see Masterjun name... crazy shit gonna happen ^^ great work MUGG, you finally did it (of course yes vote!) p.s : can't wait to see if someone find one in mario land1
ACE is my raison d'etre!
Spikestuff
They/Them
Editor, Expert player, Publisher (2254)
Joined: 10/12/2011
Posts: 6324
Location: The land down under.
HELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL NO. - thoughts on TAS Anyways yes vote.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. These colours are pretty neato, and also these.
Joined: 10/1/2013
Posts: 96
Location: My Basement
I wonder if you could do this on the TI-89 version high schoolers always seem to be playing in Math class...
Glitcher
He/Him
Joined: 3/24/2007
Posts: 216
Location: London, U.K.
First Kirby, then Metroid and now this. It seems more and more games are getting the memory corruption treatment. Yes all the way!
WST
She/Her
Active player (442)
Joined: 10/6/2011
Posts: 1690
Location: RU · ID · AM
Yes vote for heavy glitch abuse
S3&A [Amy amy%] improvement (with Evil_3D & kaan55) — currently in SPZ2 my TAS channel · If I ever come into your dream, I’ll be riding an eggship :)
Techokami
He/Him
Joined: 6/23/2008
Posts: 160
RIP Super Mario Land 2. AGAIN. Impressive glitch abuse! Yes vote.