Mechanic · environment · platformer
Springboard
A surface or object that launches the player higher than a jump, often higher still with a timed press.
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.
- Timed pressSuper Mario Bros.: The Lost Levels (1986). A fresh press of A on the spring launches higher, and green springs launch far higher.1
Games
| Game | Year | How | Note |
|---|---|---|---|
| Super Mario Bros.: The Lost Levels | 1986 | Timed press | a fresh press of A on the spring launches higher, and green springs launch far higher |
Every claim about this mechanic, by game (2)
References
- ^Landing on a springboard sets both the held and the falling gravity to
$70and 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 disassemblyHow 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.