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

A high score is the best score the machine has seen, kept for the next player to chase. Space Invaders and Pac-Man keep one number and no name1,2. Donkey Kong keeps five ranked places and asks a player who places for initials3. Asteroids keeps 10 scores in the table4, each with three initials, where Donkey Kong keeps five3.

  • SingleSpace Invaders (1978). One four-digit high score, updated when a player's game ends.1Pac-Man (1980). One six-digit high score, checked after every score change.2
  • TableAsteroids (1979). Ten scores with three initials each.4Donkey Kong (1981). Five ranked places, with initials entered on a NAME REGISTRATION screen.3

Games

GameYearHowNote
Space Invaders1978Singleone four-digit high score, updated when a player's game ends
Pac-Man1980Singleone six-digit high score, checked after every score change
Asteroids1979Tableten scores with three initials each
Donkey Kong1981Tablefive ranked places, with initials entered on a NAME REGISTRATION screen
Every claim about this mechanic, by game (5)

References

  1. ^ abSpace Invaders keeps one high score, four BCD digits at $20F4–$20F5. When a player's game ends, it compares that player's score with it, upper digits first, and copies the score over it if the score is higher.CodeComputer Archeology, Space Invaders
    How we know
    3304166E: CD 8B 1A        CALL    $1A8B               ; {} Print ZERO ships remain
    33051671: CD 10 19        CALL    $1910               ; {code.CurPlyAlive} Get active-flag ptr for current player
    33061674: 36 00           LD      (HL),$00            ; Flag player is dead
    33071676: CD CA 09        CALL    $09CA               ; {} Get score descriptor for current player
    33081679: 23              INC     HL                  ; Point to high two digits
    3309167A: 11 F5 20        LD      DE,$20F5            ; Current high score upper two digits
    3310167D: 1A              LD      A,(DE)              ; Is player score greater ...
    3311167E: BE              CP      (HL)                ; ... than high score?
    3312167F: 1B              DEC     DE                  ; Point to LSB
    33131680: 2B              DEC     HL                  ; Point to LSB
    33141681: 1A              LD      A,(DE)              ; Go ahead and fetch high score lower two digits
    33151682: CA 8B 16        JP      Z,$168B             ; {} Upper two are the same ... have to check lower two
    ⋮
    
    content/Arcade/SpaceInvaders/Code.md lines 3303–3327 at 1adc2a7 · upstream ↗

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

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

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

    In the claim ledger

  2. ^ abPac-Man keeps one high score, three BCD bytes at $4E88. After every change to a player's score it compares the score with it from the top byte down and, if the score is higher, copies the 3 bytes over and redraws it.Codemburkley/pacman-crevised
    How we know
    12392    /*  Get Ptr to MSD of high score */
    12393    uint8_t *highScore = HIGH_SCORE;
    ⋮
    12405        if (score[b] < highScore[b])
    12406            return;
    ⋮
    12424        return;
    ⋮
    12434    highScore = HIGH_SCORE;
    ⋮
    12440    memcpy (highScore, score, 3);
    
    pacman.c lines 12389–12440 at 3277e56 · 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. ^ abcDonkey Kong keeps a five-place high-score table in RAM at $6100, copied from a default table in ROM at power-on, each entry holding its place, its score, and room for a name. A player who places enters initials on a "NAME REGISTRATION" screen.Codefurrykef/dkdasm
    How we know
    132401DF  CD0702    CALL    #0207           ; set all dip switch settings and create default high score table from ROM
    
    dkong.asm line 1324 at 4d296c5 · upstream ↗
    1404025A  216535    LD      HL,#3565        ; source = #3565 = default high score table
    1405025D  110061    LD      DE,#6100        ; dest = #6100 = high score RAM
    14060260  01AA00    LD      BC,#00AA        ; byte counter = #AA
    14070263  EDB0      LDIR                    ; copy high score table into RAM
    
    dkong.asm lines 1404–1407 at 4d296c5 · upstream ↗
    104223565:  94 77 01 23 24 10 10 00 00 07 06 05 00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 3F 00 50 76 00 F4 76
    104233587:  96 77 02 1E 14 10 10 00 00 06 01 00 00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 3F 00 00 61 00 F6 76
    1042435A9:  98 77 03 22 14 10 10 00 00 05 09 05 00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 3F 00 50 59 00 F8 76
    1042535CB:  9A 77 04 24 18 10 10 00 00 05 00 05 00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 3F 00 50 50 00 FA 76
    1042635EE:  9C 77 05 24 18 10 10 00 00 04 03 00 00 10 10 10 10 10 10 10 10 10 10 10 10 10 10 3F 00 00 43 00 FC 76
    
    dkong.asm lines 10422–10426 at 4d296c5 · upstream ↗
    4547142D  211C61    LD      HL,#611C        ; load HL with high score entry indicator
    45481430  112200    LD      DE,#0022        ; offset to add is #22
    45491433  0605      LD      B,#05           ; for B = 1 to 5
    45501435  3E01      LD      A,#01           ; A := 1 = code for a new high score for player 1
    ⋮
    45521437  BE        CP      (HL)            ; compare (HL) to 1 .  equal ?
    45531438  CA5914    JP      Z,#1459         ; yes, jump to high score entry for player 1
    ⋮
    4568144C  C37514    JP      #1475           ; skip ahead, no high score was achieved
    ⋮
    45821465  210A60    LD      HL,GameMode2        ; load HL with game mode2 address
    45831468  34        INC     (HL)            ; increase game mode2 to #15
    45841469  110D03    LD      DE,#030D        ; load task data for text #D "NAME REGISTRATION"
    
    dkong.asm lines 4547–4584 at 4d296c5 · upstream ↗
    104823710:  24 24 1F 1E 3F 27 76 20 25 23 18 3F 06 77 1E 11  TTON...PUSH...NA
    104833720:  1D 15 10 22 15 17 19 23 24 22 11 24 19 1F 1E 3F  ME.REGISTRATION.
    
    dkong.asm lines 10482–10483 at 4d296c5 · upstream ↗
    2363072C  86 14                             ; (15) #1486    ; player enters initials in high score table
    
    dkong.asm line 2363 at 4d296c5 · upstream ↗

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

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

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

    In the claim ledger

  4. ^ abcAsteroids keeps a table of ten high scores, two BCD bytes each, with three initials apiece (computed from the 20-byte and 30-byte tables), and tells a player who makes it "YOUR SCORE IS ONE OF THE TEN BEST".CodeComputer Archeology, Asteroids
    How we know
    38| 1D:30     | highScores         | High Score Table (Scores) 2 Byte Format In Decimal. Byte 1 Tens, Byte 2 Thousands (In Decimal) |
    
    content/Arcade/Asteroids/RAMUse.md lines 38–42 at 1adc2a7 · upstream ↗
    LDY #$02 ; Offset For "YOUR SCORE IS ONE OF THE TEN BEST" … LDY #$03 ; Offset For "PLEASE ENTER YOUR INITIALS"
    content/Arcade/Asteroids/Code.md#L721-L723 · upstream ↗

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

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

    In the claim ledger

  5. ^Computer Archeology credits Mikael Agren with patching the original Space Invaders ROMs to add a high-score table.Code notesComputer Archeology, Space Invaders
    How we know
    Mikael Agren patched the original ROMs to add a [high-score table]
    content/Arcade/SpaceInvaders/README.md#L31-L35 · upstream ↗

    The quote matches our archived copy.

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

    In the claim ledger

Sources

Code