Kill screen
A late level where a counter's overflow breaks the game's own setup, such as its drawing or its timer.
On this page
A kill screen, in the games read here, is a late level where an 8-bit counter overflows and breaks the level’s setup. On Pac-Man’s level 256 the level byte holds 255, the fruit routine’s inc a wraps it to 0, and the fruit loop makes 256 passes1. On Donkey Kong’s level 22 the bonus timer’s start wraps from 260 to 42. Players also call level 29 of NES Tetris a kill screen, although the game goes on3.
- Draw overflowPac-Man (1980). On level 256 the fruit row's loop count wraps to 0 and runs 256 times.1
- Timer overflowDonkey Kong (1981). On level 22 the bonus timer's start wraps from 260 to 4.2
Games
| Game | Year | How | Note |
|---|---|---|---|
| Pac-Man | 1980 | Draw overflow | on level 256 the fruit row's loop count wraps to 0 and runs 256 times |
| Donkey Kong | 1981 | Timer overflow | on level 22 the bonus timer's start wraps from 260 to 4 |
Every claim about this mechanic, by game (2)
References
- ^ abThe level byte at
$4E13starts at 0 and gains 1 per level, so on level 256 it holds 255. The routine that draws the fruit row loads it and adds 1, and thatinc awraps to 0; 0 passes the "fewer than 8" test, and the draw loop, adjnzcounted by that 0, makes 256 passes instead of at most 7. Each pass draws a fruit at HL, writes its color$400higher, and moves HL on 2 bytes, so from$4004the loop steps across about 512 bytes of the 1 KB video RAM at$4000and the matching span of color RAM at$4400.Codemburkley/pacman-crevisedHow we know
2125 P1_LEVEL = 0;pacman.c lines 2119–2125 at 3277e56 · upstream ↗ 3156 P1_LEVEL++;pacman.c lines 3153–3156 at 3277e56 · upstream ↗ ld a,(#4e13) ; Load level # inc a ; Increment cp #08 ; >= 8? … ld de,#3b08 ; Fruit table ld b,a
pacman.c#L12932-L12947 · upstream ↗ 12977 /* No need to modify hl as we just pass colour hl+= 0x400;*/ 12978 drawCharSquare_2b80 (&COLOUR[hl], table[1]);
pacman.c lines 12955–12993 at 3277e56 · upstream ↗ 42 uint8_t video[0x400]; // starts at 0x4000 43 uint8_t colour[0x400]; // starts at 0x4400
memmap.h lines 42–43 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.
- ^ abOn level 22 the bonus timer's start overflows: 10 × 22 + 40 = 260, which wraps in 8 bits to 4. Because 4 passes the "less than
$51" test, the cap never applies, and the board's timer starts at 4 instead of 80. dkdasm's comment pairs the starts 50 to 80 with bonuses of 5,000 to 8,000, so 4 stands for a 400 bonus.Codefurrykef/dkdasmrevisedHow we know
3746; set up initial timer 3747; timer is either 5000, 6000, 7000 or 8000 depending on level
dkong.asm lines 3746–3768 at 4d296c5 · upstream ↗ LD (#6229),A ; initialize level to 1
dkong.asm#L1321 · 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.
- ^Players call level 29 the "kill screen", although the game goes on.WebBirken, "Applying AI to Nintendo Tetris" · Trew 2022
How we know
most players cannot endure the drop speed of level 29, which swiftly brings the game to an end. For this reason, it has become associated with the notation of a kill screen.
The Kill Screen · archived copy ↗ beating level 29 (aka the "kill screen")
section on the maxout · archived copy ↗ The quote matches our archived copy.
Checked by a second AI model, 2026-10-21.
Sources
Code
- Burkley, Mark. 2025. “pacman-c: a C translation of the Pac-Man ROM.” Commit 3277e56. mburkley/pacman-c @ 3277e56 · licence, all uses
- Willms, Jeff and Kef Schecter. 2014. “dkdasm: Donkey Kong hacking kit.” Commit 4d296c5. furrykef/dkdasm @ 4d296c5 · licence, all uses
Secondary
- Birken, Michael. 2014. “Applying Artificial Intelligence to Nintendo Tetris.” original · archived · licence, all uses
- Trew, James. 2022. “How Gen Z is pushing NES Tetris to its limits.” Engadget. original · archived · licence, all uses