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

An evasive hop jumps clear of a target without turning away from it. In The Legend of Zelda: Ocarina of Time, A sorts the stick into quarters around Link’s facing1,2. Backward is a backflip, higher and shorter; a side hop is lower and faster3.

Games

GameYearHowNote
The Legend of Zelda: Ocarina of Time1998Stick quarterA with the stick back or to a side: a backflip at 5.8 up and 6.0 back, or a side hop at 3.5 up and 8.5 across
Every claim about this mechanic, by game (4)

References

  1. ^ abIn the N64 NTSC 1.0 code, each update sorts the control stick into one of four quarters relative to the way Link's model faces: forward, left, backward, or right, each 90° wide and centered on its direction, after turning the stick angle by the camera's. Below a magnitude of 55 the stick counts as no direction.Codezeldaret/oot
    How we know
    2212    sControlStickWorldYaw = Camera_GetInputDirYaw(GET_ACTIVE_CAM(play)) + sControlStickAngle;
    ⋮
    2216    if (sControlStickMagnitude < 55.0f) {
    2217        direction = PLAYER_STICK_DIR_NONE;
    ⋮
    2221        direction = (u16)((s16)(sControlStickWorldYaw - this->actor.shape.rot.y) + 0x2000) >> 14;
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 2211–2223 at 14759ab · upstream ↗
    639    /* -1 */ PLAYER_STICK_DIR_NONE = -1,
    640    /*  0 */ PLAYER_STICK_DIR_FORWARD,
    641    /*  1 */ PLAYER_STICK_DIR_LEFT,
    642    /*  2 */ PLAYER_STICK_DIR_BACKWARD,
    643    /*  3 */ PLAYER_STICK_DIR_RIGHT
    
    include/player.h lines 639–643 at 14759ab · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  2. ^ abIn the N64 NTSC 1.0 code, the action handler the decomp calls Player_ActionHandler_10 acts on a press of A, except in a room of the indoors type, on floor type 7, or on a floor with floor effect 1 (both unnamed): with the stick backward, left, or right it starts a hop that way; with the stick forward or neutral, only while Z-targeting, it starts a jump slash if Link holds a melee weapon and can use items, and a roll otherwise.Codezeldaret/oot
    How we know
    6388    if (CHECK_BTN_ALL(sControlInput->press.button, BTN_A) && (play->roomCtx.curRoom.type != ROOM_TYPE_INDOORS) &&
    6389        (sFloorType != FLOOR_TYPE_7) &&
    6390        (SurfaceType_GetFloorEffect(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) != FLOOR_EFFECT_1)) {
    6391        controlStickDirection = this->controlStickDirections[this->controlStickDataIndex];
    ⋮
    6393        if (controlStickDirection <= PLAYER_STICK_DIR_FORWARD) {
    6394            if (Player_IsZTargeting(this)) {
    ⋮
    6398                    } else {
    6399                        Player_SetupRoll(this, play);
    ⋮
    6401                } else {
    6402                    if ((Player_GetMeleeWeaponHeld(this) != 0) && Player_CanUpdateItems(this)) {
    6403                        func_8083BA90(play, this, PLAYER_MWA_JUMPSLASH_START, 5.0f, 5.0f);
    6404                    } else {
    ⋮
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 6385–6417 at 14759ab · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abIn the N64 NTSC 1.0 code, the backward hop (a backflip, by its animation) launches Link at a vertical velocity of 5.8 and a horizontal speed of 6.0 aimed straight behind his facing, and a sideways hop at 3.5 up and 8.5 aimed 90° to the left or right. The vertical value is multiplied by a water factor, sWaterSpeedFactor, which this pass didn't read.Codezeldaret/oot
    How we know
    6368void func_8083BCD0(Player* this, PlayState* play, s32 controlStickDirection) {
    6369    func_80838940(this, D_80853D4C[controlStickDirection][0], !(controlStickDirection & 1) ? 5.8f : 3.5f, play,
    ⋮
    6377    this->yaw = this->actor.shape.rot.y + (controlStickDirection << 0xE);
    6378    this->speedXZ = !(controlStickDirection & 1) ? 6.0f : 8.5f;
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 6368–6378 at 14759ab · upstream ↗
    4982void func_80838940(Player* this, LinkAnimationHeader* anim, f32 arg2, PlayState* play, u16 sfxId) {
    ⋮
    4989    this->actor.velocity.y = arg2 * sWaterSpeedFactor;
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 4982–4989 at 14759ab · upstream ↗
    1120static LinkAnimationHeader* D_80853D4C[][3] = {
    ⋮
    1123    { &gPlayerAnim_link_fighter_Lside_jump, &gPlayerAnim_link_fighter_Lside_jump_end,
    ⋮
    1125    { &gPlayerAnim_link_fighter_backturn_jump, &gPlayerAnim_link_fighter_backturn_jump_end,
    ⋮
    1127    { &gPlayerAnim_link_fighter_Rside_jump, &gPlayerAnim_link_fighter_Rside_jump_end,
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 1120–1128 at 14759ab · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  4. ^In the N64 NTSC 1.0 code, the action that holds Link standing while he Z-targets (Player_Action_808407CC in the decomp) offers the hop handler to A, and hands control to the idle action once Z-targeting ends; the idle action's own handler list leaves the hop handler out.Codezeldaret/oot
    How we know
    4174static s8 sActionHandlerList2[] = {
    4175    PLAYER_ACTION_HANDLER_13, PLAYER_ACTION_HANDLER_1,    PLAYER_ACTION_HANDLER_2, PLAYER_ACTION_HANDLER_5,
    4176    PLAYER_ACTION_HANDLER_3,  PLAYER_ACTION_HANDLER_TALK, PLAYER_ACTION_HANDLER_9, PLAYER_ACTION_HANDLER_10,
    4177    PLAYER_ACTION_HANDLER_11, PLAYER_ACTION_HANDLER_7,    PLAYER_ACTION_HANDLER_8, -PLAYER_ACTION_HANDLER_ROLL,
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 4174–4178 at 14759ab · upstream ↗
    4201static s8 sActionHandlerListIdle[] = {
    4202    PLAYER_ACTION_HANDLER_0, PLAYER_ACTION_HANDLER_11, PLAYER_ACTION_HANDLER_1,     PLAYER_ACTION_HANDLER_2,
    4203    PLAYER_ACTION_HANDLER_3, PLAYER_ACTION_HANDLER_5,  PLAYER_ACTION_HANDLER_TALK,  PLAYER_ACTION_HANDLER_9,
    4204    PLAYER_ACTION_HANDLER_8, PLAYER_ACTION_HANDLER_7,  -PLAYER_ACTION_HANDLER_ROLL,
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 4201–4205 at 14759ab · upstream ↗
    8158    if (!Player_TryActionHandlerList(play, this, sActionHandlerList2, true)) {
    8159        if (Player_UpdateHostileLockOn(this)) {
    8160            func_8083CEAC(this, play);
    8161            return;
    ⋮
    8164        if (!Player_FriendlyLockOnOrParallel(this)) {
    8165            Player_SetupActionPreserveAnimMovement(play, this, Player_Action_Idle, 1);
    8166            this->yaw = this->actor.shape.rot.y;
    8167            return;
    
    src/overlays/actors/ovl_player_actor/z_player.c lines 8158–8167 at 14759ab · upstream ↗
    4259    Player_ActionHandler_10,   // PLAYER_ACTION_HANDLER_10
    
    src/overlays/actors/ovl_player_actor/z_player.c line 4259 at 14759ab · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

Sources

Code