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

Lock delay is the time a piece can sit on the stack and still move before it locks. The games read so far have none of their own: when gravity can’t move the piece down, it locks then and there. NES Tetris1 and Dr. Mario2 work this way, so a resting piece gets one gravity interval, which shrinks as the game speeds up.

  • NoneTetris (NES) (1989). A piece that can't fall locks at its next gravity step.1Dr. Mario (NES) (1990). A pill that can't fall locks at its next gravity step.2

Games

Every claim about this mechanic, by game (1)

References

  1. ^ abfallTimer counts frames, and when it reaches the level's value the piece moves down a row; if that row is blocked, the piece locks where it is, so a resting piece locks after one gravity interval.CodeCelestialAmber/TetrisNESDisasm · Birken, "Applying AI to Nintendo Tetris"
    How we know
    1441gameModeState_updateCountersAndNonPlayerState:
    ⋮
    1448        inc     player1_fallTimer
    
    main.asm lines 1441–1449 at 94581c0 · upstream ↗
    1570@drop:  lda     #$00
    1571        sta     fallTimer
    1572        lda     tetriminoY
    1573        sta     originalY
    1574        inc     tetriminoY
    1575        jsr     isPositionValid
    1576        beq     @ret
    1577        lda     originalY
    1578        sta     tetriminoY
    1579        lda     #$02
    1580        sta     playState
    ⋮
    1592        lda     fallTimer
    ⋮
    
    main.asm lines 1570–1594 at 94581c0 · upstream ↗
    This means that the lock delay—the maximum number of frames that a Tetrimino waits while supported before locking—is equal to the drop delay.
    Dropping Tetriminos · archived copy ↗

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

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

    In the claim ledger

  2. ^ abWhen a drop is blocked, the pill moves back up and is placed in the bottle at once, so a pill resting on the stack locks at its next gravity step.CodeNostaljipi/dr-mario-disassembly
    How we know
    257        jsr pillMoveValidation      ;Checks if move is valid, returns zero if valid   
    258        bne @pillHasLanded          ;If can't move down anymore, the pill has landed
    ⋮
    263        inc currentP_fallingPillY   ;Returns Y to its previous value because it couldn't be lowered
    ⋮
    266        jsr confirmPlacement        ;"Print" (or "cement") the pill in position
    
    prg/drmario_prg_game_logic.asm lines 257–266 at ecb9899 · upstream ↗

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

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

    In the claim ledger

Sources

Code

Secondary