Mechanic · movement · platformer
Long jump
A low, fast jump that trades height for forward speed.
On this page
A long jump goes far rather than high. In Super Mario 64, A pressed early in a crouch slide takes off at 30 units/frame up with 1.5 times the forward speed, capped at 48, and falls under half the usual gravity1. The cap clips only forward speeds, so a long jump while moving backward multiplies the backward speed with no limit, the root of the backwards long jump2.
- From a crouch slideSuper Mario 64 (1996). A from a crouch slide: 30 units/frame up and 1.5 times the forward speed, capped at 48 only going forward.1,2
Games
| Game | Year | How | Note |
|---|---|---|---|
| Super Mario 64 | 1996 | From a crouch slide | A from a crouch slide: 30 units/frame up and 1.5 times the forward speed, capped at 48 only going forward |
Every claim about this mechanic, by game (2)
References
- ^ abZ while running starts a crouch slide, and A in its first 30 frames at a forward speed above 10 units/frame starts a long jump. It takes off at 30 units/frame up and multiplies the forward speed by 1.5, capped at 48; in the air it falls with a gravity of 2 instead of 4.Coden64decomp/sm64revised
How we know
807 if (m->input & INPUT_Z_PRESSED) { 808 return set_mario_action(m, ACT_CROUCH_SLIDE, 0);
src/game/mario_actions_moving.c lines 807–808 at 9921382 · upstream ↗ 1459 if (m->actionTimer < 30) { 1460 m->actionTimer++; 1461 if (m->input & INPUT_A_PRESSED) { 1462 if (m->forwardVel > 10.0f) { 1463 return set_jumping_action(m, ACT_LONG_JUMP, 0);
src/game/mario_actions_moving.c lines 1459–1463 at 9921382 · upstream ↗ 863 case ACT_LONG_JUMP: ⋮ 865 set_mario_y_vel_based_on_fspeed(m, 30.0f, 0.0f); ⋮ 870 if ((m->forwardVel *= 1.5f) > 48.0f) { 871 m->forwardVel = 48.0f;
src/game/mario.c lines 863–873 at 9921382 · upstream ↗ 543 } else if (m->action == ACT_LONG_JUMP || m->action == ACT_SLIDE_KICK 544 || m->action == ACT_BBH_ENTER_SPIN) { 545 m->vel[1] -= 2.0f;
src/game/mario_step.c lines 543–545 at 9921382 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
- ^ abThe long jump's cap clips only a forward speed above 48. A backward (negative) speed is multiplied by 1.5 with no limit, which the decompilers' comment names as the cause of backwards long jumps (BLJs). A long jump's landing chains into another long jump on A with Z held. In the air, each frame moves the speed 0.35 toward 0, adds the stick's push (up to 1.5 along Mario's facing), and adds 2 more while it is below −16. This is the US build; the Shindou and iQue builds set a negative speed to 0 when a long jump lands.Coden64decomp/sm64revised
How we know
868 //! (BLJ's) This properly handles long jumps from getting forward speed with 869 // too much velocity, but misses backwards longs allowing high negative speeds. 870 if ((m->forwardVel *= 1.5f) > 48.0f) { 871 m->forwardVel = 48.0f;
src/game/mario.c lines 868–871 at 9921382 · upstream ↗ 46struct LandingAction sLongJumpLandAction = { 47 6, 5, ACT_FREEFALL, ACT_LONG_JUMP_LAND_STOP, ACT_LONG_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,
src/game/mario_actions_moving.c lines 46–48 at 9921382 · upstream ↗ 1847s32 act_long_jump_land(struct MarioState *m) { 1848#if defined(VERSION_SH) || defined(VERSION_CN) 1849 // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997 1850 if (m->forwardVel < 0.0f) { 1851 m->forwardVel = 0.0f; ⋮ 1853#endif ⋮ 1855 if (!(m->input & INPUT_Z_DOWN)) { 1856 m->input &= ~INPUT_A_PRESSED; ⋮ 1859 if (common_landing_cancels(m, &sLongJumpLandAction, set_jumping_action)) {
src/game/mario_actions_moving.c lines 1847–1859 at 9921382 · upstream ↗ 223 dragThreshold = m->action == ACT_LONG_JUMP ? 48.0f : 32.0f; 224 m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f); ⋮ 226 if (m->input & INPUT_NONZERO_ANALOG) { ⋮ 228 intendedMag = m->intendedMag / 32.0f; ⋮ 230 m->forwardVel += intendedMag * coss(intendedDYaw) * 1.5f; ⋮ 235 if (m->forwardVel > dragThreshold) { 236 m->forwardVel -= 1.0f; ⋮ 238 if (m->forwardVel < -16.0f) { 239 m->forwardVel += 2.0f;
src/game/mario_actions_airborne.c lines 223–240 at 9921382 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-21.
Revised after a check by a second AI model, 2026-10-21.
Sources
Code
- n64decomp. 2023. “sm64: a decompilation of Super Mario 64 (n64decomp/sm64).” Commit 9921382. n64decomp/sm64 @ 9921382 · licence, all uses