On this page
  1. Related
  2. Games

A springboard launches whoever lands on it. Some give every bounce the same height; others launch the player higher if they press jump at the right moment, while the spring is compressed.

Games

GameYearHowNote
Super Mario Bros.: The Lost Levels1986Timed pressa fresh press of A on the spring launches higher, and green springs launch far higher
Every claim about this mechanic, by game (2)

References

  1. ^Landing on a springboard sets both the held and the falling gravity to $70 and a launch speed of −7 px a frame ($F9). Over the spring's four steps it carries the player down 2 px a step, then up 2 px a step, and on the last step it launches them. A press of A, not held from before, in the second step or later raises the launch to −12 px a frame ($F4), or to −32 px a frame ($E0) on the green springboards of world numbers 2, 3, and 7, which the letter worlds share as B and C, since the test reads the world number without the letter-world flag. With both gravities at $70, the bounce rises and falls under one pull whether A is held or not, for Mario and Luigi alike. While the game's timers are stopped the spring waits.Codedoppelganger's SMB2J disassembly
    How we know
    11291ChkForLandJumpSpring:
    11292        jsr ChkJumpspringMetatiles  ;do sub to check if player landed on jumpspring
    11293        bcc ExCJSp                  ;if carry not set, jumpspring not found, therefore leave
    11294        lda #$70
    11295        sta VerticalForce           ;otherwise set vertical movement force for player
    11296        sta VerticalForceDown
    11297        lda #$f9
    11298        sta JumpspringForce         ;set default jumpspring force
    11299        lda #$03
    11300        sta JumpspringTimer         ;set jumpspring timer to be used later
    11301        lsr
    11302        sta JumpspringAnimCtrl      ;set jumpspring animation control to start animating
    ⋮
    
    sm2main.asm lines 11291–11303 at 9c40114 · upstream ↗
    5574JumpspringHandler:
    5575           jsr GetEnemyOffscreenBits   ;get offscreen information
    5576           lda TimerControl            ;check master timer control
    5577           bne DrawJSpr                ;branch to last section if set
    5578           lda JumpspringAnimCtrl      ;check jumpspring frame control
    5579           beq DrawJSpr                ;branch to last section if not set
    5580           tay
    5581           dey                         ;subtract one from frame control in A,
    5582           tya                         ;the only way a poor NMOS 6502 can
    5583           and #%00000010              ;mask out all but d1, original value still in Y
    5584           bne DownJSpr                ;if set, branch to move player up
    5585           inc Player_Y_Position
    ⋮
    
    sm2main.asm lines 5574–5620 at 9c40114 · upstream ↗
    12672       lda #$02
    12673       ldy WorldNumber             ;if the world number is not 2, 3 or 7
    12674       cpy #$01                    ;then use regular attributes for jumpsprings
    12675       beq GrnJS                   ;which will paint them red
    12676       cpy #$02
    12677       beq GrnJS                   ;otherwise use alternate attributes
    12678       cpy #$06                    ;to get the green superhigh jumpsprings
    12679       bne RedJS
    12680GrnJS: lsr
    12681RedJS: sta EnemyAttributeData+$18  ;set jumpspring gfx attributes in the lookup table
    12682       sta EnemyAttributeData+$19
    12683       sta EnemyAttributeData+$1a
    
    sm2main.asm lines 12672–12683 at 9c40114 · upstream ↗
    6575MovePlayerVertically:
    6576         ldx #$00                ;set X for player offset
    6577         lda TimerControl
    6578         bne NoJSChk             ;if master timer control set, branch ahead
    6579         lda JumpspringAnimCtrl  ;otherwise check to see if jumpspring is animating
    6580         bne ExXMove             ;branch to leave if so
    6581NoJSChk: lda VerticalForce       ;dump vertical force 
    6582         sta $00
    6583         lda #$04                ;set maximum vertical speed here
    6584         jmp ImposeGravitySprObj ;then jump to move player vertically
    
    sm2main.asm lines 6575–6584 at 9c40114 · upstream ↗

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

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

    In the claim ledger