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

The atlas reads Super Mario Land through kaspermeerts’ disassembly, which is partial: it covers the jump’s start and release but not the routine that moves Mario through the jump. The arc comes from measurement instead, in the World (Rev 1) ROM running in Mesen.

Unlike the NES Mario games here, the jump has no speed or gravity. Mario walks a table of per-frame steps up and retraces it on the way down1. Holding A keeps him in the table’s fast part; letting go skips ahead to the 1 px steps near the top, so a tap reaches 10 px and a full hold 332. A running jump starts the table two steps earlier and peaks higher3.

Mechanics

MechanicKindHow
JumpTablea table of per-frame steps, retraced in reverse for the fall; a running jump starts it two steps earlier
Variable jump heightHold timerthe rise keeps its 2 px steps while A is held, and a release skips to the table's 1 px steps
GravityNoneno gravity in the jump; a table sets every frame's step
Every claim about this game, by concept (4)

References

  1. ^Measured in the game, a standing jump with A held moves Mario up nothing on the press frame, then 3, 3, and 2 px a frame to 24 px, then 1 px or 0 a frame to an apex of 33 px on frame 23. The fall retraces the rise in reverse, and he lands on frame 49.Verifiedkaspermeerts' SML disassemblyrevised
    How we know
    418	cp a, $04
    419	jr z, .jmp_49ED
    420	ld a, $02
    421	ld [$C20E], a
    422	ld [$C208], a
    423.jmp_49ED
    ⋮
    429	ld a, $01
    430	ld [de], a
    
    bank3.asm lines 398–430 at 618d00e · upstream ↗

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on . It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-25.

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

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

    In the claim ledger

  2. ^Letting go of A while Mario rises moves the jump index to $0F, near where the table's 1 px steps begin, unless the index is already at $0F or past it. Measured, a 1-frame tap reaches 10 px, 5 frames 19 px, 10 frames 29 px, and 15 frames or more the full 33.Verifiedkaspermeerts' SML disassemblyrevised
    How we know
    384.jmp_49AC
    385	bit 0, a				; A button
    386	jr nz, .jmp_49BF
    387	ld a, [de]
    388	cp a, $01
    389	jr z, Jmp_4966
    
    bank3.asm lines 384–389 at 618d00e · upstream ↗
    338Jmp_4966:: ; 4966
    339	inc e
    340	ld a, [de]
    341	cp a, $0F
    342	jr nc, .jmp_49B5
    343	inc e
    344	dec a
    345	ld [de], a
    346	dec e
    347	ld a, $0F
    348	ld [de], a
    
    bank3.asm lines 338–348 at 618d00e · upstream ↗

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on . It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-21.

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

    In the claim ledger

  3. ^Measured, a running jump with A held rises 4, 4, 3, 3, then 2 px a frame and peaks at 41 px on frame 25, higher than the standing jump's 33.Verifiedkaspermeerts' SML disassembly
    How we know
    417	ld a, [$C20E]			; walking running
    418	cp a, $04
    419	jr z, .jmp_49ED
    420	ld a, $02
    421	ld [$C20E], a
    422	ld [$C208], a
    
    bank3.asm lines 417–422 at 618d00e · upstream ↗

    Measured by a script in MesenCE 2.2.1 (build 4b8a196), on . It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-21.

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

    In the claim ledger

Sources

Code