The purpose of this page is to document all of the known tricks of NDS New Super Mario Bros so far.
Because of the nature of this site, we concentrate here on tricks that are extremely difficult to execute 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 a definite must-have.
TODO: Make clips of these segments and cut the useless screen out.

Published on 4/28/2022
New Super Mario Bros. was released in 2006 for the Nintendo DS. It is the first brand new side scrolling Mario game since Super Mario Land II on the Gameboy, as a way to bring the franchise back to its roots. It features your typical side-scrolling plumber, but in this case he comes with enhanced abilities, like wall jumping and doing flips. It also includes new powerups such as the mega mushroom and the blue shell. The Latter being what this TAS uses throughout the run.
This run beats the previous run by 313 frames from better optimization.

RAM values relevant to tricks/optimization. For the US version.
  • 021B6A90 - X speed (20.12 Fixed Point)
  • 021B6A3C - X position (20.12 Fixed Point)
  • 021B6AB0 - Y speed (20.12 Fixed Point)
  • 021B6A40 - Y position (20.12 Fixed Point)
  • 021B6A94 - Current max speed (20.12 Fixed Point)
  • 02088A68 - RNG (4 byte)
  • 020CC0EE - Rail position; where mario/luigi are on the progress bar (4 bytes)
  • 021B759B - Wall jump timer (1 byte)
  • 021B7597 - Wall action timer, wall to left of Mario (1 byte)
  • 021B7598 - Wall action timer, wall to right of Mario (1 byte)
  • 021B71D8 - Mario's height in pixels, for wall jumps (4 bytes)
  • 021B71BC - Mario's height in pixels, for bumping blocks(4 bytes)
  • 021B757F - Jump combo timer (for double/triple jumps) (1 byte)
  • 0208B350 - Starman timer (4 bytes)
  • 021B75A1 - Pipe timer left; must be 10 to enter left pipe (1 byte)
  • 021B75A2 - Pipe timer right; must be 10 to enter right pipe (1 byte)
  • 02088BD8 - Frame counter that pauses during stage transitions (e.g. doors) (4 bytes)
  • 020CA8B4 - In-game timer as seen in top-right (20.12 fixed point)
Speed and location units are in pixels. Blocks are 16x16 pixels, so displaying location values mod 16 is helpful.
Here are some Lua scripts for BizHawk that may be helpful.
View information about currently spawned objects, such as location and speed of Mario, enemies, and star coins. https://pastebin.com/h23Yhsym
See when and how many times RNG is used. https://pastebin.com/ARAMDreP

Corner Boosting




Turning right on the flagpole




Speed Mechanics

TODO: finish this and turn into a table, and explain, and add RAM addresses

Wall slides and wall jumps

These are generally straight-forward, but there are some details that make it difficult in certain situations. Mario's ability to do these is affected by a variety of factors, including a "wall jump timer" and two "wall action timers", one for left walls and one for right walls. See RAM addresses at the top of this page for the address of the timer values.
The wall action timers and the actions themselves all depend on various factors. Here is a list of requirements that apply to one or more of them.
  1. Wall jump timer: This requirement is satisfied when the wall jump timer is 0 after the frame in question (e.g., the frame on which A is pressed for a wall jump).
  2. Wall action timer: This requirement is satisfied when the wall action timer is non-zero both before and after the frame in question.
  3. Floor: This requirement is satisfied when there is not a floor <= 16 pixels below Mario's Y location.
  4. Wall collision: This requirement is satisfied when Mario is within the wall's collision space.
  5. Height:
    1. This requirement is satisfied if both (A) Mario is >= 19 pixels below the top of the wall (11 pixels if crouching) after the frame in question, and (B) Mario is < 4 pixels below the bottom of the wall after the frame in question.
    2. Same as 5.1, except part (B) is BEFORE the frame in question.
  6. Crouch: This requirement is satisfied if Mario is not crouching.
  7. Moved down:
    1. This requirement is satisfied if Mario moved down during the frame in question.
    2. Opposite 7.1, this requirement is satisfied if Mario did not move down during the frame in question.
  8. Facing wall: This requirement is satisfied if Mario was facing the wall before the frame in question, or if he would be at the end of current animations.
  9. Horizontal movement: This requirement only ever applies if the wall is to the left of Mario.
    1. This requirement is satisfied if Mario moved horizontally during the frame in question (movement counts even if the wall immediately pushed Mario back; thus holding left against a wall works).
    2. Same as 9.1, but movement happened on the previous frame.
This value must be zero before a wall jump or slide can be executed. The timer is set to 16 on the frame Mario begins a wall jump. It decreases by 1 each frame until 0.
This value must be non-zero before a wall jump or slide can be executed.
The timer is set to 16 when left/right (towards wall) is pressed and the following conditions are met:
  • #3 (Floor)
  • #4 (Wall collision)
  • #5.1 (Height)
  • #7.1 (Moved down)
  • #9.1 (Horizontal movement)
The timer decreases by 1 each frame until 0. The timer is automatically set to 0 if condition #3 (Floor) is no longer met. This means that both wall slides and jumps implicitly require condition #3 (Floor) as well. If Mario is currently doing a wall slide when this value reaches 0, the wall slide ends.
A wall slide can be started by pressing left/right (towards wall) when the following conditions are met:
  • #1 (Wall jump timer)
  • #2 (Wall action timer)
  • #4 (Wall collision)
  • #5.2 (Height)
  • #6 (Crouch)
  • #8 (Facing wall)
  • #9.2 (Horizontal movement)
A wall jump can be done in either of two situations. Both require #1 (Wall jump timer) and #6 (Crouch).
The first situation requires pressing A on the frame in question, and #2 (Wall action timer).
The second situation requires pressing A and left/right (towards wall) on the frame in question, and:
  • #4 (Wall collision)
  • #7.2 (Not moved down)
  • #8 (Facing wall)
  • #9.2 (Horizontal movement)
Notes:
  • If a wall slide and a wall jump are activated on the same frame, the wall slide is activated first.
  • If a wall slide is active, vertical speed is set to 0 and the actual jump is delayed by one frame.

RNG

The RNG is currently known to affect:
TODO, explain these: Ground pounding as mini-mario Super corner boosting Maintaining speed as a turtle shell Mini-mario corner boosting

GameResources/DS/NewSuperMarioBros last edited by Suuper on 2/2/2023 3:25 AM
Page History Latest diff List referrers View Source