2

In Super Mario Bros, the screen automatically starts scrolling once you are past X position 112. However, a strategy employed by many speedrunners of the game during level 4-2 is the "backwards bump method", which can push you forward several pixels.

enter image description here

This image is of 4-2, and uses a ROM hack that displays Mario's X position where the time usually is. Notice that it moves up and then locks at 112, even though Mario is still clearly moving forward. That's because the game was programmed to start scrolling once Mario's X position reaches 112. But watch what happens in the next image:

enter image description here

This image uses the same ROM hack as before, and is also of 4-2, but this time, Mario's X position spikes to 120. What the player is doing is he's running into a wall, briefly tapping left to turn around, and brushing on the side of the wall while jumping to get over it. Normally you will move between 7 and 10 pixels forward, and the reason speedrunners use this is to access the wrong warp later in the level.

But why does this work? Why does brushing on a wall while facing the opposite direction push Mario forward several pixels? And why does it push Mario forward between 7 and 10?

1

I think what's going on is that Mario's sprite consists of two pieces, 8 pixels apart. Mario's "position" is that of the sprite representing the front half of his body. When Mario is facing to the right, the front sprite is shown, non-reflected, at his position and the other sprite is shown, also non-reflected, 8 pixels to the left. When facing left, each sprite is individually mirror-imaged by the display hardware, and I would guess the programmers thought it simpler to always have one sprite at Mario's position and the other at +/- 8 than to have Mario's position be that of the leftmost sprite (which might be first or second) and have the other sprite be 8 pixels to the right of that.

When Mario switches direction, that requires adding or subtracting 8 from his position. That is done separately, however, from logic which will move Mario to the right a pixel by either incrementing his position if it's less than 112, or incrementing the scroll position.

Essentially, what's happening is that when Mario is facing left, the position of the front of his body is 8 pixels to the left of the position of the right side of his body, while when he's facing right, the same sprite is used for the "front half" as his body as the "right half" [since they're the same side]. Switching directions requires that the front half of Mario's body move left or right 8 pixels, but that's done without checking the scroll position.

| improve this answer | |
  • Alright, however I have one question about this hypothesis. "Fast 4-2", a method that only requires 2 bumps, is achieved by getting 10 pixels forward on each bump, and since you need 20 pixels to achieve the wrong warp in 4-2, I wonder what allows Mario to get more than 8 pixels forward. I'm assuming its to do with how the sprites are rendered when Mario turns around, but I don't know for sure. – Nip Dip May 3 at 0:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.