Sunday, February 11, 2018

SMB3: Wrong Warp (7-1) to Princess

A fascinating Super Mario Bros 3 glitch has been found that skips ahead to the game's ending with Princess Toadstool. The setup may seem complex at first, but completing SMB3 in mere minutes is rather incredible (and controversial).
After nabbing the first two warp whistles and traveling to World 7, a glitch in World 7-1 can have Mario rescuing the Princess in just over three minutes of playtime! (Imagine if all girls got off that quickly...)
This trick completely bypasses the entire Dark World, even Bowser...

A screen-wrapping jump the wrong way into this pipe in World 7-1 is a known glitch that sends Mario  outside the level boundaries, normally crashing the game... But three important memory values can be manipulated with Koopa shells, tricking the game into rolling the end credits.

It's easiest to perform the trick with the help of Raccoon Mario's tail. The location value for a Koopa constantly changes as they move back and forth on screen. Stomp or kill one, and the co-ordinate is set to that value until they respawn or another enemy takes their place.

It doesn't work every time because it's difficult to line everything up. Most of the Koopa shells need to be placed perfectly, to the pixel. (This trick also cannot be completed in the Super Mario All-Stars version)

I found the following videos helpful...
The first video is 10 minutes long - And even if your mind is blown by all the technical details, it's really interesting to see what's happening behind the scenes in the game's code... Which helps to understand why these variables are so important to make the glitch work. The second video is a simple explanation. Third video is a simple playthrough performing the glitch.

Super Mario Bros. 3 - Wrong Warp (10:06) by Retro Game Mechanics Explained
https://www.youtube.com/watch?v=fxZuzos7Auk

Super Mario Bros. 3 - How to do the 7-1 wrong warp glitch! (Easy setup) (7:17) by Taven Webb
https://www.youtube.com/watch?v=d9FoUjvU4KI
(video is taken from handheld device, but setup is easy, as advertised)

Completing The SMB3 Wrong Warp Successfully (3:57) by Antique Girl
https://www.youtube.com/watch?v=y73griqeHNk

A collection of notes and screenshots from a few successful attempts:
First step involves knocking the level's first Koopa down to the bottom of the screen instead of outright killing him... (He'll be used at the end of the trick to set the last value.) Kill all three piranha plants, which clears out the memory slots for the Koopas to be placed.


Next Koopa is taken up the pipe with you, and outright killed (eliminating him from the equation) by kicking him into a wall near the next Koopa and Paratroopa. Those two remaining baddies (plus our surviving Koopa back near the start of the level) will help set the three values needed to load the Princess chamber.

The first shell is easy to place. Immobilize the pacing Koopa Troopa between the question blocks and carry him to the far right side of the right question block and kill him by running him into the block and kicking him up against it. His last on-screen position is now set.


Move left on top of the pipe and hit the Paratroopa with your Racoon tail, quickly hopping down to catch his shell. Carrying it back down with you.

Bounce this Koopa shell and stomp it so the shell lands precisely beside this pipe. This is the most difficult variable to set, because a single pixel to the left or right and the value will be wrong. Fortunately, you can re-position the shell if needed before you move on to the last step. (Note how the white pixels of the shell are lined up relative to the outline of the pipe.) Just hop back down the pipe before he rouses to set that value.


Back to the start of the level to find the first Koopa. This value is relatively simple to set. Because the final pipe glitch is easier to perform with small Mario, Super Mario holds this Koopa shell right beneath this pipe.
Jump up into the overhead pipe as the carried Koopa begins to shake himself awake... . Once at the top of the pipe, as soon as the Koopa touches and shrinks Mario, immediately slam down so Mario goes back down the pipe, which should freeze-frame the final Koopa in the perfect position (shown above right).

Performing the pipe glitch at the start of the level (after everything else has been set), the screen temporarily goes black, and the same messed up textures appear...

But if everything lines up, and the correct values are in place, Mario returns on screen standing on this block. A simple jump with 'A' can trigger the game into loading the Princess room and end-game sequence, plus an arsenal of P-Wings for your efforts.

7 comments:

  1. The reason it works, when you go out of bounce, the note bock that crash the game acctually exist in the real part of the level, but when you hit it in the real part of the level, it works properly, this his just an example it may not be exactly correct, that note block his normaly on 6261 and when you hit it it goes 6261+0F to make 6270, nothing goes wrong here, and DD1A works fine to update the sprite animation and then the game return to the note block bouncing animation, and save the X cordinated of that bouncing animation in $0097, and its Y cordinated save in $009F, the X and Y value are only overwriten if another block bounce. So when you go out of bounce the block that was in 6261, gets incorrectly place everytime on 9C61, but since it his the same block it still have +0F to fine the sprite animation, so it will go 9C61+0F=9C70, and that tells the game to write to Read only memory, and since that his not possible the game look in open bus, to fine out what to do with 9C70, and found valid garbage code to update in DD1A, the garbage code are too long by one bite, that it overflow the stack buffer, so you will see in Debbug menu Address $0100: JSR:$0080, that means it already overflow, that it jump to that Addres that addres got that instruction $0080:RTS-1 so it will go to Addres $0081, then it need to go through allot of address before reaching The X cordinated of sprites, that Start on $0090, Enemies X position start on $0091, and end with $0095. Enemies spond on the highest slot first that his still available, so we right at $0093:$20, and at $0094: E3, or E1, and $0095: 8F, in Debug menu this will show as $0093: JSR: $8FE3, or JSR: 8FE1, you will see in debug menu that $0094, and $0095 does not show anymore, and Address $0096 still shows because that his the X cordinated for power-up. Mario X position his in $0090 mario X position need to be correct when hitting the note block that crash the game, to make it work because he can go to an Upcode with enemies in $0091, and $0092, with the easy method nothing spond on $0091, since nothing spond its X value his $00. Most of mario X cordinated are ok, just a few that would guarantee a fail, and that what cause the diffrent sounds before it transition to the rescue the princess. And it does work on WiiU virtual console, and all other Virtual console, Except for NES mini, and also it does not work on the Japanese version and the PAL version, Does not work in all version of All-stars. If you need more information on why it works, and why the Virtual console his banned for speedruning that category just contact me in Youtube, on my channel, video comment My channel his SuperNickid, if you can't contact me on Youtube maybe you can on Twitch, I got the same name.

    ReplyDelete
  2. Can This be done using flower power?

    ReplyDelete
    Replies
    1. Yes it can, but so far only with toll assisted, there his a video on youtube about it

      Delete
    2. @Antique Gril: Despite my user name saying Unknown here, I'm Supernickid on Youtube

      Delete
  3. Does this work in the Japanese version on the NES?

    ReplyDelete
  4. Does this work on the European version?

    ReplyDelete