On this page
  1. Related
  2. Games

Climbing replaces walking and gravity with a direction held along something to climb. Games differ in how the player grabs on, whether they can jump or attack while climbing, and what happens at the top.

Games

GameYearHowNote
Super Mario Bros. 21988Vine or laddervines, chains, and ladders, climbed faster down than up
Mega Man 61993Vine or ladderladders, climbed at the walking speed
Sonic 3 & Knuckles1994WallKnuckles · Knuckles climbs walls
Every claim about this mechanic, by game (2)

References

  1. ^On a vine, chain, or ladder the player climbs up at $F0 (1 px/frame), down at $20 (2 px/frame), and sideways at 1 px/frame. Holding up and down together reads past the end of the table, the byte $A5, and sends the player up at 5.6875 px/frame. Holding left and right together reads past the end of the sideways table too, again a byte $A5, the first of HandlePlayerState_Climbing, and sets the sideways speed to 5.6875 px/frame to the left.CodeSMB2 Discombobulated · “Super Mario Bros. 2 (USA)”revised
    How we know
    2107byte_BANK0_8ACE:
    2108	.db $00
    2109	.db $10
    2110	.db $F0
    2111; ---------------------------------------------------------------------------
    ⋮
    2113HandlePlayerState_Climbing:
    2114	LDA Player1JoypadHeld
    2115	AND #ControllerInput_Down | ControllerInput_Up
    2116	LSR A
    2117	LSR A
    2118	TAY
    2119	CPY #$02
    ⋮
    
    src/prg-0-1.asm lines 2107–2131 at b73415e · upstream ↗
    3328ClimbSpeed:
    3329	.db $00
    3330ClimbSpeedDown:
    3331	.db $20
    3332ClimbSpeedUp:
    3333	.db $F0
    3334; Bug: The climb speed index is determined by checking the up/down flags in
    3335; Player1JoypadHeld. If both are enabled, the index it out of bounds and uses
    3336; the LDA ($A5) below, which zips the player up the vine!
    
    src/prg-e-f.asm lines 3328–3336 at b73415e · upstream ↗

    In the cartridge (“Super Mario Bros. 2 (USA)”): ClimbSpeed's three bytes at $F225, and the next routine's first, $A5; byte_BANK0_8ACE's three bytes at $8ACE, and HandlePlayerState_Climbing's first, $A5 (LDA Player1JoypadHeld). We don't reproduce the bytes.

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

    Revised after a check by a second AI model, 2026-10-26.

    In the claim ledger

  2. ^In the air the d-pad sets his horizontal speed from the same table at $8BEA each frame, 1.30 px/frame or 0, and clears any carried momentum, except when his surface ($A7) is $15: then the air loop runs the momentum routine code_388B0F instead, and the carried speed stays (momentum-surfaces). On a ladder, Up or Down moves him along it at the same 1.30 px/frame.Coderefreshing-lemonade/megaman6-disassemblyrevised
    How we know
    LDA #$00 STA $A1 STA $A0 LDY $99 LDA $8BEA,y STA $ED LDA $8BED,y STA $EB JMP code_3886CE
    bank38_3F.asm#L1540-L1548 · upstream ↗
    LDA $40 AND #$0C BEQ loc_703E5 LSR LSR TAY LDA $8BEA,y STA $EE LDA $8BED,y STA $EC
    bank38_3F.asm#L498-L510 · upstream ↗
    db $00, $01, $FE, $00, $4C, $B4, $00, $02
    bank38_3F.asm#L1550 · upstream ↗
    124loc_700F9:
    
    bank38_3F.asm lines 124–129 at f0763c4 · upstream ↗

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

    Revised after a check by a second AI model, 2026-10-25.

    In the claim ledger

  3. ^The Sonic & Knuckles manual gives Knuckles the spin dash and moves of his own: he breaks through walls, glides on a second press of the button in the air, and climbs walls.ManualSonic & Knuckles US manual
    How we know
    Knuckles uses a Spin Dash just like Sonic, but he also. has unique moves of his own. For one thing, he bashes through walls like nobody else! … Glide + Press Button A, Bor C twice quickly — once to get some air and again to start gliding. … Wall Climb ® Get close to a wall.
    Knuckles' moves · archived copy ↗

    The quote matches our archived copy.

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

    In the claim ledger