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

A continue picks the game up after the last life is lost. Contra and Super C on the NES offer a set number at each game over, 3 and 21,2. Gradius on the NES brings back a player who enters a button code while the game-over screen waits3.

  • CodeGradius (1985). Down Up B A B A B A B A at game over restores the lives.3
  • LimitedContra (1987). 3 lives and 3 continues a game.1Super C (1990). 2 continues a game, one fewer than Contra.2

Games

GameYearHowNote
Gradius1985CodeDown Up B A B A B A B A at game over restores the lives
Contra1987Limited3 lives and 3 continues a game
Super C1990Limited2 continues a game, one fewer than Contra
Super Mario Bros.: The Lost Levels1986Unlimitedat every game over outside World 9, Continue restarts the world from its first level
Every claim about this mechanic, by game (5)
Gradius 1985When a player's lives byte drops below 0 in the US NES Gradius, the game-over state waits, for as long as $B0 is nonzero and then 120 frames ($78), and meanwhile runs the code check with its other ten-entry table, Down Up B A B A B A B A. If the count has reached ten when the wait ends, the player comes back with the lives byte at 3, the value a new game sets.Code
Super Mario Bros.: The Lost Levels 1986At a game over outside World 9, Select switches between CONTINUE and RETRY and Start picks. Continue restarts the current world at its first level, small, with three lives, the score and coins at zero, and the hidden 1-up available again. Retry ends the game and clears the record of completed worlds.Code
The status bar numbers, game setup, lives and game over (PrintStatusBarNumbers through RunGameOver) are Super Mario Bros.'s with a new GameOverSubs dispatch among them and these changes: the status bar's digit tables lose the second player's entries; UpdateTopScore checks one score where Super Mario Bros. checks two; DigitsMathRoutine drops a compare with zero before its BEQ; DefaultSprOffsets loses the sprite 0 data; InitializeArea loads the player's physics (LoadPhysicsData) and sets the secondary hard mode flag from 4-4 on and in all of worlds A to D (HardWorldFlag), where Super Mario Bros. sets it from 5-3 on or once the primary hard mode flag is set; SecondaryGameSetup sets the name table and switches on the status bar's IRQ split, where Super Mario Bros. sets the second player's lives and switches on the sprite 0 check; InitializeMemory also spares $0100-$0108; PlayerLoseLife reads its own halfway pages and no longer swaps players; RunGameOver opens the continue-or-retry menu (or, in world 9, ends the game) where Super Mario Bros. ends the game on Start or when the screen timer runs out and then hands over to the other player if they have lives left. GetAreaMusic and Entrance_GameTimerSetup keep every instruction, though the level timer's digits moved from $07F8 to $07EC.Code
Contra 1987A new game of the US NES Contra gives each player 2 lives in reserve (3 in all) and the game 3 continues. A death with none in reserve puts that player in game over, and each game over spends a continue; with none left, the CONTINUE/END choice is skipped.Code
Super C 1990The US NES Super C allows 2 continues a game, where Contra allows 3: the count is set to 2 at the start, and each game over spends one before offering CONTINUE/END.Code

References

  1. ^ abA new game of the US NES Contra gives each player 2 lives in reserve (3 in all) and the game 3 continues. A death with none in reserve puts that player in game over, and each game over spends a continue; with none left, the CONTINUE/END choice is skipped.Codevermiceli/nes-contra-us
    How we know
    1143init_score_player_lives:
    ⋮
    1146    lda #$03           ; a = #$03
    1147    sta NUM_CONTINUES  ; continues remaining
    
    src/bank7.asm lines 1143–1147 at 687d651 · upstream ↗
    1165init_player_lives:
    1166    lda #$02                  ; start off with #$02 lives
    
    src/bank7.asm lines 1165–1166 at 687d651 · upstream ↗
    5150init_player_dec_num_lives:
    ⋮
    5153    lda P1_NUM_LIVES,x         ; load player number of lives
    5154    beq @set_game_over         ; branch if no more lives
    5155    dec P1_NUM_LIVES,x         ; decrement player number of lives
    ⋮
    5158@set_game_over:
    5159    lda #$01                  ; a = #$01
    5160    sta P1_GAME_OVER_STATUS,x ; game over state of player (1 = game over)
    
    src/bank7.asm lines 5150–5161 at 687d651 · upstream ↗
    3289show_game_over_screen:
    ⋮
    3301    dec NUM_CONTINUES                         ; subtract from number of continues remaining
    3302    bmi @no_continues_remaining               ; if run out of continues, jump
    3303    lda #$0e                                  ; a = #$0e (continue  end)
    
    src/bank7.asm lines 3289–3307 at 687d651 · 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

  2. ^ abThe US NES Super C allows 2 continues a game, where Contra allows 3: the count is set to 2 at the start, and each game over spends one before offering CONTINUE/END.Codevermiceli/nes-super-c · vermiceli/nes-contra-usrevised
    How we know
    1484init_player_for_level_a:
    ⋮
    1489    lda #$02
    1490    sta NUM_CONTINUES
    
    src/bank-f.asm lines 1484–1490 at be6ccce · upstream ↗
    2465level_routine_06:
    2466    dec LEVEL_ROUTINE_DELAY           ; decrement level routine delay
    2467    bne game_over_exit                ; exit if level delay hasn't elapsed
    2468    dec NUM_CONTINUES                 ; decrement number of continues
    2469    bmi restart_game                  ; branch if no more continues to reset the game
    2470    lda #$0a                          ; store "CONTINUE END" in CPU_GRAPHICS_BUFFER
    
    src/bank-f.asm lines 2465–2470 at be6ccce · upstream ↗
    1322    jsr clear_mid_high_ram
    1323    jsr init_player_level_1    ; set level 1, initialize player state, number of lives, player count, player mode, etc.
    
    src/bank-f.asm lines 1322–1323 at be6ccce · upstream ↗
    1478init_player_level_1:
    1479    lda #$00
    
    src/bank-f.asm lines 1478–1479 at be6ccce · upstream ↗
    1143init_score_player_lives:
    ⋮
    1146    lda #$03           ; a = #$03
    1147    sta NUM_CONTINUES  ; continues remaining
    
    src/bank7.asm lines 1143–1147 at 687d651 · upstream ↗
    3301    dec NUM_CONTINUES                         ; subtract from number of continues remaining
    3302    bmi @no_continues_remaining               ; if run out of continues, jump
    
    src/bank7.asm lines 3301–3302 at 687d651 · upstream ↗

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

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

    In the claim ledger

  3. ^ abWhen a player's lives byte drops below 0 in the US NES Gradius, the game-over state waits, for as long as $B0 is nonzero and then 120 frames ($78), and meanwhile runs the code check with its other ten-entry table, Down Up B A B A B A B A. If the count has reached ten when the wait ends, the player comes back with the lives byte at 3, the value a new game sets.Code“Gradius (USA)”revised
    How we know

    In the cartridge (“Gradius (USA)”): $979D-$97C4: decrement the player's lives byte at $20,X; if it's negative, branch to $97F1; $97F1-$9829: clear the player's bit in $0A, set the state $1B to `$C0`, draw text `$1C`, and store `$78` in the timer $4C; $96FB-$9764, state bit `$40`: while $B0 is nonzero, run the check with table 1 ($9789) without counting $4C down ($96FF branches to $975D); after that, while $4C is nonzero, count it down and run the check; when $4C reaches 0 with the count at 10, store 3 in $20,X, set the player's bit in $0A again, and resume; $9785-$979C: the first table, at $9789, is 04 08 40 80 40 80 40 80 40 80; $82F8-$8306, in the new-game setup: store 3 in both players' lives bytes, $20 and $21. We don't reproduce the bytes.

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

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

    In the claim ledger

Sources

Code