TASVideos

Tool-assisted game movies
When human skills are just not enough

Game Resources / NES / Super Mario Bros

The purpose of this page is to document all of the known tricks of the games based on the Super Mario Bros engine.

Because of the nature of this site, we concentrate here on tricks that are nearly impossibly difficult to play in real play, but are useful in the making of tool-assisted speedruns. For most of the tricks, a frame advance feature in an emulator is required.

Games:

  • SMB1 = NES Super Mario Bros
  • SMB2j = FDS Super Mario Bros 2 (also known as "Lost levels")
  • SMB3 = NES Super Mario Bros 3

The SNES ports of these games contain almost the same physics as their NES/FDS counterparts, so you can use most of them in SNES Super Mario All Stars as well.

Note: To see movies of game completions using these tricks, click here.

This page focuses mainly on Super Mario Bros. and Super Mario Bros. 2 (J). See here for trick pages of other Mario games:

Walljump (SMB1, SMB2j)

Walljump is when you jump towards a wall and somehow Mario's foot catches the wall and allows to jump again, boosting from the wall. The walljump in the left image is easy to try even on the real console. In the right image (using a custom map), three walljumps are performed.



Theory:
Walljump happens because the game does a floor check (a simple "is there a solid block below him?" test) even during a wall-ejection. Wall-ejection is SMB's mechanism to push Mario out of a wall when he entered it partially. The game ejects Mario towards the opposite of his steering.

To perform a walljump, you need two things:

It's possible to perform walljump from any non-lethal solid material (bricks, pipes, etc.)


Flagpole glitch (SMB1, SMB2j)

Complete the level without lowering the flag by glitching into the base block of the flagpole and touch the flapole from inside. Doing so is faster than lowering the flag. The points you get from the flagpole will be only 100. This trick can not be used in 8-3 since the timer would turn 343 which results in fireworks. The flagpole glitch was originally found by klmz.









Flagpole glitch using an enemy

Koopa Troopas and Bullet Bills can be useful for flagpole glitching. When Mario enters the block at the flagpole with proper height, the "walking to the castle" sequence will be skipped. Landing on shells results in a higher bounce than Bullet Bills, so in order to use shells for this version of the flagpole glitch, you need to be inside the block at the flagpole already, at the moment you bounce off.












Vine teleporting glitch (SMB1, SMB2j)

If you touch a vine at the extreme left edge of the screen, you'll be transported to the right edge.

Uses: In 4-2 of SMB1, hit the vine block and get up on the ceiling. Walk to the right so that about half of the vine block gets scrolled off the screen, and the vine will dissappear. Go back to the left and touch the vine, and if you went the correct amount to the right, you'll be teleported to the extreme right edge of the screen. If you misestimated the amount, you'll get stuck in the left edge of the screen.


Alternate pipe glitches (SMB1, SMB2j)

The alternate pipe glitch occurs when a pipe takes you to somewhere other than where it was intended to.

Theory: The game can have only one "entry point" (a pipe or vine) per screen. The reason lies in how the game is designed: There is just one global variable in the game RAM that determines where pipes or vines in the current screen lead. Once the screen scrolls far enough for the next target label to be loaded from the level data, all entry points in the current screen will lead to that place.

Methods of getting Mario to the left side of the screen

  • Just move back.

Methods of getting Mario to the right side of the screen

  • Teleport to the right edge of the screen the vine glitch (explained above).
  • If you enter a wall, the wall will automatically transport Mario towards the right edge of the screen without scrolling.
  • If Mario bumps into the left edge of an obstacle (wall, pipe, coin block etc.) while jumping, the screen scrolling will momentarily stop even if Mario continues to move to the right. Since Mario accelerates faster into the direction he doesn't face to, you should use this trick while jumping backwards (Mario faces to the left).


Going through bricks (SMB1, SMB2j, SMB3)

There are several occasions when Mario can partially or even completely enter a solid object (brick, question mark block, etc).

The easiest of them, though not very useful, is to stand under a brick so that less than half of Mario is under the brick, and then jump up. Mario will not hit the brick, and will get pushed away from the brick instead. When the pushing away effect happens, if you try to manually steer away from the brick, the brick actually pulls you inside instead of ejecting.

This is a basic technique which has many uses.

TODO: Explain the flagpole glitches with images (might need to merge "Going through bricks" and "Flagpole glitch").

Application: Catch a power-up before it appears

If you are quick enough, you can catch the bonus item through the block even before it has completely exited from the block it came from.

In the example image on the right, you can see that it's also possible to jump again after getting a mushroom or fire flower (have the "A"-button pressed at the end of the transformation).

Application: Jump into a solid object below a floor

For the purpose of this glitch, any solid object (including pipes) counts as a floor.

It is really difficult to perform (much harder than the walljump), but here are the instructions.

  1. You need proper speed. If the object is only 2 blocks tall, such as the pipe in the end of 1-2, you can not jump into it while running. Use the left+right trick to deaccelerate quickly before jumping. If you have too high speed, you'll just find yourself standing on top of the object instead of inside it.
  2. You need the right position. The right position is: as near as possible. You are too near, if when you jump toward the object, you'll bump into it without getting ejected pixel by pixel.
  3. Immediately when the wall starts ejecting Mario, start steering away from it. This causes the wall to pull you in instead of push you out.
  4. Immediately after your vertical movement stops, start moving to the direction you want to go. If the wall is ejecting you now, you failed some of the previous steps.

The easiest way to perform this trick is into 2-block tall obstacles at walking speed.

  1. Do a minimal height jump (hold A for 1 frame) at the exactly right distance.
    • You are too close, if you bump into the wall without a chance to counter the ejection.
    • You held A for more than 1 frame (or your jumping platform was less than 2 block distance far from the floor), if you land on top of the floor.
  2. When the wall would start ejecting, hold to the opposite direction from the obstacle.
  3. Once Mario lands into the wall, start walking normally.
    • If the wall just ejects Mario, you were too far from the wall when you jumped.

This trick is apparently also possible in SMB3 (noticed against some water level end pipes).

A special case of this trick is called 'the swim of death', as demonstrated in the image on the right. The physics of Super Mario Bros is nearly the same in air and in water, and thus walls can be entered in water too.

TODO: Add other swimming tricks.



Application: Jump into a wall just below a solid ceiling and walk through it

-> With small Mario (SMB1, SMB2j)

To perform the trick, do a walljump into the wall position right below the ceiling. When you get foothold, jump immediately. When you land, jump again. When you land again, jump again. Usually three or four jumps are enough before you can walk through the wall. Each jump takes you deeper into the wall.

During each of the jumps, you need to steer heavily to the opposite direction you're going to. Otherwise the wall will eject Mario.

Note: Steering only has effect during a jump (i.e. when Mario is not standing or walking). If Mario is standing, the direction of ejection is determined by the location of his upper body in relation to the left edge of the wall. (If it's partially out from the wall, he'll be ejected to the left (unstoppable unless you jump). Otherwise, he'll be ejected to the right (stoppable, speedable).




-> With big Mario (SMB1, SMB2j, SMB3)

As demonstrated in the right image, big Mario doesn't need to do any of the complicated stuff that applied to when he is small. When he is big, he can simply perform a duck-jump into the corner and start walking. This is because his head will be well inside the ceiling, enabling the ejection to the right. (If he ducks again before he is fully inside the wall, he'll be ejected to the left instead.)





Application: Jump into a solid wall and walk through it

It is possible to perform the wall-entry trick even without a ceiling. However, it requires extremely precise positioning and efficient speed. This is the hardest of all of the tricks.

Instructions: You will need to have a proper X-subpixel position value for this to work. A subpixel is a position component which is not rendered onscreen. In this game, 16 subpixels make up 1 pixel. Now when you jump into a wall (not doing this trick), you might be pushed out immediately without having entered the wall at all. At other times you might have been able to be inside the wall partially. This is the result that you want when optimizing your X-subpixel position. You can press "left" for 1 frame while running to the right to decrease your subpixel value by one unit. Do this until jumping into a wall will result in Mario being partially inside the wall. If this condition is met, you can follow these instructions.

  1. Jump towards a wall, approach its edge as closely as possible right before you enter it, and become embeded in it as deep as possible at the first frame you have entered it. The required minimum depth is 3 pixels.
  2. Immediately when the wall starts ejecting you, start steering away from it. This causes the wall to pull you in instead of pushing you out.
  3. As soon as you land inside the wall, jump while moving away from the wall for 1 frame. You have to hit the block above you inside the wall. You may have to repeat doing this until you are so deep inside the wall that you will not be ejected out while you are walking forwards inside the wall.
    • If you can't hit the solid block above when jumping, you will be ejected out. You will need to try again from the start.
  4. After you have entered the wall deep enough, start moving in the direction you want to go as soon as you land. If the wall is ejecting you now, you failed the previous steps.

Application: Off-screen wall climbing (SMB1, SMB2j)

This trick is trivial to perform. When there is a hole on the left side of the screen, you can cram Mario in between of the screen edge and the wall, and climb upwards the hole. Mario will be unable to fall down. It can be used to reach the ceiling of the dungeon in places where there normally is no route to the ceiling.

By jumping repeatedly and steering to the left, it can also be used to enter the wall, as shown in the right example image.

Aside from brick walls, it works with other solid walls too.




Accelerating faster (SMB1, SMB2j except with Luigi)

When you need to accelerate from zero speed, you can do it faster if you jump a small jump backwards and steer to the opposite direction Mario is facing. This can be used to start a level faster, to accelerate faster after exiting a pipe and to complete a walljump faster.

Press "left" and "right" for 1 frame. Press the "A"-button for 1 frame to make a small jump to the right. Start holding the "B"-button. When landing on the ground you will need to face backwards for one frame (without holding the "B"-button). The next frame you can start jumping again, holding the "B"-button and you will have gained running speed.

TODO: Add images (level beginning & walljump)


Shooting faster (SMB1, SMB2j)

By pressing right+left at the same time, you can shoot to the left and the shots travel horizontally at twice the normal speed. It looks very aggressive, compared to the normal merrily bouncing fire balls. Though, this technique is more userful in water levels since it doesn't slow down Mario.


"Stomping" enemies from below (SMB1, SMB2j)

You don't need to land on the top of an enemy to kill it. As long as you're moving downward as you hit the enemy, you'll kill it. If you time it just right, sometimes you can even hit the bottom of the enemy. This is useful for killing enemies that seem to be too high to jump on.




Special case: Moustache stomp

This is not a walljump. This image illustrates how "landing" on a turtle at the
right time can save Mario's life, even if it is only his moustache that lands on the turtle.


Walking inside enemies (SMB1, SMB2j)

When you stomp an enemy, the enemy becomes a friend for a short while, so if you stomp it from below,
you don't need to worry about being immediately killed by it when you bounce upwards.

In fact, you can sometimes get inside an enemy right after stomping it,
and the enemy doesn't harm you as long as you are inside it.


Bouncing high off turtles (SMB1, SMB2j, SMB3)

How it's done: If you jump toward a turtle while it's in the air, you can stomp it while moving upward and keep moving upward. The maximum height that you'll be able to reach if you keep holding down A depends on the exact frame that you made your jump and which part of the turtle you hit, so if you aren't bouncing high enough, keep adjusting your jump.

This is useful for being able to get over an obstacle or landing on another enemy after bouncing off a turtle.

In SMB2j, a special case was added for flying turtles: When you "stomp" them in upward motion, you'll gain a lot of vertical velocity.


Jumping through hammers (SMB1, SMB2j)

How it's done: The game does a very poor job of detecting collisions with hammers, so sometimes you can go through a hammer without getting hit, and sometimes you can completely miss a hammer and still get hit.

Bowser will start throwing hammers beginning from 6-4. Even if it looks like there's no gap in the stream of hammers, it's still likely that you'll be able to get through without taking a hit.

It is easier if you are small or ducking, due to the smaller hitbox.

TODO: Add image.


Jumping through fire (SMB1, SMB2j)

TODO: Explain.


Turning around quickly (SMB1, SMB2j)

Press left and right simultaneously for 1 frame.

When you press left+right, you'll start walking backwards to the right. How exactly it works is slightly different in SMB1 and SMB2j, but what is common for both of them is that your running speed is instantly reduced to a walking speed or even slower. This allows for a much more sudden braking. It can be applied anywhere where you need to brake quickly.


Avoiding fireworks (SMB1, SMB2j)

In SMB1, fireworks come when a level is completed with the last digit of the timer at 1, 3, or 6.

In SMB2j, fireworks come when the last digit of your coin counter matches the last digit of the timer.

Getting fireworks wastes time, so you should avoid them.


Sliding on one foot (SMB1, SMB2j)

This is a well-known trick which requires the fiery Mario. When you start a level or exit from a pipe, hold B and jump, and continue holding B. When you move, Mario will slide instead of running, for some time. This trick is trivial to do on the real console.





Lip jumps (SMB1, SMB2)

It is possible to stand on the edge of a pipe even where's a plant coming out of the pipe. There are a few pixels of room at both sides of the pipe. You can land on it, and jump immediately again.







The "21 frame rule" (SMB1, SMB2j)

In SMB1 and SMB2j, every time the screen blacks out (entering a new level), the game delays for a varying amount of time.

The delay is actually calculated so that the current playing progress will be rounded up to next 21 frame boundary.

As an example, this means that if you complete a level in

And so on, where N is a constant minimum length of the black screen.

Therefore, the only part of the game that can be improved by a time less than 21 frames is the entire last level.


Walking in place (Moonwalking)

See level 8-4 of HappyLee's SMB walkathon TAS for a demonstration.

This kind of moonwalk where Mario is walking in place without further input is a special state which can be achieved by pressing "left" and "right". It happens sometimes when you slow down the speed on the ground with "left" and "right". While walking in place, the X-speed goes "1, 255, 1, 255..."and it will never stop, so the X-subpixel goes "x, x-16 ,x, x-16...". When "x"=0, "x-16" turns to be 240, so the X-pixel has changed. Mario is shaking and the screen begins to scroll. This is what makes the moonwalk trick useful, because the screen scrolls without further actions.





Firebar hiding trick

A FireBar can't always hurt Mario. In the image on the right, The firebar moves too fast to hurt Mario because there is no frame rendered where Mario is ""inside"" the firebar.











Small fiery Mario / negative Mushroom (SMB1, maybe SMB2j too)

(The following explanation is copied from Wikipedia. It is a good explanation, but someone seems to stick to that it is “fan cruft” and does not belong into an encyclopedia. Thus copying it here instead of linking to the Wikipedia article.)

Internal to the game, Mario’s powerup state is recorded in two independent variables; one describes size (0=regular; 1=super) and the other tracks the ‘upgrade state’ (0=need mushroom; 1=need flower; 2=has flower). The ‘size’ decides the sprite (small on 0; big on 1) used for Mario; the ‘upgrade state’ decides what powerup will come out of a block (mushroom on 0; flower on 1 or 2) and what will happen when Mario is hit (die on 0; switch ‘size' and clear ‘upgrade state’ on 1).

These states can be knocked out of synchronization. The game checks for all sprite collisions, knocks the ‘upgrade state’ to 0 if it hits, and switches size only when all checks are done. If Mario’s sprite strikes the King Koopa sprite and the bridge release sprite in one frame, the game will register the collision between Mario and Koopa, knock the ‘upgrade state’ to 0, register the collision between Mario and the bridge release, and jump into the level complete loop that causes Mario to walk to the right ― and never switches the ‘size’ variable.

If Mario was naturally large (state 1 or 2, size 1) when he hit the switch he will stay large (state 0, size 1). If he strikes an enemy he will die (because his ‘upgrade state’ is 0), but he can break blocks. If he gets a mushroom, he will shrink and be unable to hit blocks; if he is hit now, he will grow again. If he gets a fire flower, his palette will be changed and he will be able to shoot (but the game will use the large image for shooting; it will, however, keep Mario’s small feet if Mario is moving). Mario will now be Little Fiery Mario.

If Mario was naturally small (state 0, size 0) when he hit the switch, he will appear to die but the level will still be beat and he will not lose a life. If Mario was unnaturally small (state 1 or 2, size 0) when he hit the switch (that is, if he does this trick twice), he will revert to his normal form. When Mario dies his size is set small and his state is set unupgraded, no matter how he died or what his state was before.

Using the third part only of a 3-code Game Genie code for “Always Stay Big” will produce similar results (the code is SZLIVO). As long as Mario has gained a power-up, he will become small when hit, then grow when hit a second time. This is a much simpler way to view the “Little Fiery Mario” quirk.

This glitch appears to have been fixed in the Super Mario All-Stars version, though the two-variable mechanism behind it still exists.


The Minus World (SMB1)

This is a well-known glitch which occurs when Mario glitches behind the wall in 1-2 in SMB1 and enters the first pipe.

The minus world is basically just a random location of the game ROM, it is not a real world. It wasn't designed that way ― it's just an oversight of the programmers that you can get into the pipe before the correct warp labels are assigned.

In the NES version of Super Mario Bros., the "minus world" was a looping, uncompleteable copy of world 2-2. In the FDS version, however, it is an underwater 1-3, 2-3, and an underground 4-4, making it completable. Completing the game this way would give the "in another castle" message, but would return to the title screen as if 8-4 had been beaten; hard mode and the level become accessible, as well.


Low-Gravity Mario (SMB1)

When a level starts, Mario is in a special state regarding falling speed until he jumps for the first time. He regains this state whenever there is a screen transition (when a new level starts or after exiting a pipe). This is not useful for speedrunning, though it is featured in the "minimum buttons pressed" submission.

TODO: Add image (1-1 after exiting the pipe, landing on the two goombas).


Koopa walking in mid-air (SMB1)

Usually, when a shell is being landed on in mid-air, it will just turn around and continue falling down. But if a shell is being landed on at the bottom of the screen (within the first two rows of blocks), the shell will not be falling down anymore, mysteriously. When the Koopa Troopa starts walking, he will be walking in mid-air and he will be able to walk through solid obstacles.

TODO: Add image.


Enemies, firebars, or platforms not appearing (SMB1/SMB2J)

Sometimes enemies or objects will not appear when they are supposed to normally. When there are 5 or more object sprites on the screen (this can include firebars, fireballs, and platforms) this will occur. One of the most bizarre cases of this is seen in level 4-4 of SMB2J (The Lost Levels). If you approach Bowser the moment 5 other sprites are on screen, Bowser will not spawn. It is as if you've already defeated him.

TODO: Add image.


Things to add in the future


Memory Addresses

Address Set #11: Super Mario Bros.
System: Nintendo Entertainment System
Download .wch file for: BizHawk
Domain Address Data Type Signed Endian Description
System Bus 000F Byte Unsigned Big Enemy 1 Loaded
System Bus 0010 Byte Unsigned Big Enemy 2 Loaded
System Bus 0011 Byte Unsigned Big Enemy 3 Loaded
System Bus 0012 Byte Unsigned Big Enemy 4 Loaded
System Bus 0057 Byte Unsigned Big X Speed
System Bus 006D Byte Unsigned Big Level X 2nd
System Bus 0086 Byte Signed Big Level X
System Bus 009F Byte Unsigned Big Y Speed (pixel?)
System Bus 00CE Byte Unsigned Big Y Pixel
System Bus 03AD Byte Unsigned Big On Screen X
System Bus 0400 Byte Unsigned Big X Subpixel
System Bus 0416 Byte Unsigned Big Y Subpixel
System Bus 0483 Byte Unsigned Big Bowser HP
System Bus 0705 Byte Unsigned Big X Speed Sub (subsub)
System Bus 071D Byte Unsigned Big Camera X
System Bus 077F Byte Unsigned Big 21 Frame Rule


See also



Combined RSS Feed
GameResources/NES/SuperMarioBros last edited by fsvgm777 on 2014-10-09 19:03:15
Page info and history | Latest diff | List referrers | View Source