Climbing
Moving up and down a vine, ladder, or wall by holding a direction, with its own speeds and its own ways on and off.
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.
- Vine or ladderSuper Mario Bros. 2 (1988). Vines, chains, and ladders, climbed faster down than up.1Mega Man 6 (1993). Ladders, climbed at the walking speed.2
- WallSonic 3 & Knuckles (1994), Knuckles. Knuckles climbs walls.3
Games
| Game | Year | How | Note |
|---|---|---|---|
| Super Mario Bros. 2 | 1988 | Vine or ladder | vines, chains, and ladders, climbed faster down than up |
| Mega Man 6 | 1993 | Vine or ladder | ladders, climbed at the walking speed |
| Sonic 3 & Knuckles | 1994 | Wall | Knuckles · Knuckles climbs walls |
Every claim about this mechanic, by game (2)
References
- ^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 ofHandlePlayerState_Climbing, and sets the sideways speed to 5.6875 px/frame to the left.CodeSMB2 Discombobulated · “Super Mario Bros. 2 (USA)”revisedHow 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 air the d-pad sets his horizontal speed from the same table at
$8BEAeach 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-disassemblyrevisedHow 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.
- ^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.