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.
- 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).
- Wall action timer: This requirement is satisfied when the wall action timer is non-zero both before and after the frame in question.
- Floor: This requirement is satisfied when there is not a floor <= 16 pixels below Mario's Y location.
- Wall collision: This requirement is satisfied when Mario is within the wall's collision space.
- Height:
- 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.
- Same as 5.1, except part (B) is BEFORE the frame in question.
- Crouch: This requirement is satisfied if Mario is not crouching.
- Moved down:
- This requirement is satisfied if Mario moved down during the frame in question.
- Opposite 7.1, this requirement is satisfied if Mario did not move down during the frame in question.
- 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.
- Horizontal movement: This requirement only ever applies if the wall is to the left of Mario.
- 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).
- 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.