On this page
  1. Related
  2. Games
  3. References
  4. Sources

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

GameYearHowNote
Super Mario 641996From a crouch slideA 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

  1. ^ 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.

    In the claim ledger

  2. ^ 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.

    In the claim ledger

Sources

Code