Articles.
These articles are about how the code inside classic machines was written. Every arcade game and pinball machine here is run by a program burned into chips on its circuit board, written in assembly language by a handful of programmers for 8-bit processors with a few kilobytes of memory and no operating system.
Each article takes one part of that original program, disassembled straight from the chips, and reads it the way its authors wrote it: how they stored the numbers, how they faked physics or randomness or three dimensions, how they made a machine notice its own broken parts, and which shortcuts left the bugs players later found. Every explanation is then tested against the running program.
Arcade
Z80 programs from the original arcade boards: one-byte counters, clocks built from the frame interrupt, enemy logic squeezed into a few routines, and where that arithmetic runs out of room.
- Dig Dug · 1982 · Oct 15, 2026Dig Dug's Last Round Is Built From the Wrong TablesWhy round 256 of Dig Dug puts a Pooka on top of you, traced through the original Namco arcade code to a round number that wraps to zero and a layout number that wraps to 255.Namco, three Z80s at 3.072 MHz
- Donkey Kong · 1981 · Oct 15, 2026Yes, You Can Steer the BarrelsHow Donkey Kong decides whether a barrel rolls down a ladder at you, why your joystick is part of that decision, and how far it moves the odds.Nintendo, Z80 at 3.072 MHz
- Donkey Kong · 1981 · Oct 15, 2026Mario's Jump Is Made of Odd NumbersHow Donkey Kong builds a perfect parabola without multiplying, why you can't steer in the air, and the 15 pixel rule that kills you on landing.Nintendo, Z80 at 3.072 MHz
- Donkey Kong · 1981 · Oct 15, 2026The Number That Ends Donkey KongWhy every game of Donkey Kong stops at level 22: one byte in the original arcade code that was asked to hold the number 260.Nintendo, Z80 at 3.072 MHz
- Donkey Kong · 1981 · Oct 15, 2026Donkey Kong's Luck Is Made of Spare TimeDonkey Kong has no dice. Its random numbers come from counting how long the processor sat idle each frame, which ties every barrel's luck to everything on screen, and to you.Nintendo, Z80 at 3.072 MHz
- Frogger · 1981 · Oct 15, 2026Frogger's Turtles Only Vanish for a Quarter of a SecondThe diving turtles in Frogger run on a fixed clock, always the same group dives, and a frog on them only drowns for 16 frames in every 256, because the frog check stops one entry short of a list.Konami, Z80 at 3.072 MHz, with a second Z80 for sound
- Galaga · 1981 · Oct 15, 2026Why Galaga's Bees Stop ShootingThe famous Galaga no-fire trick traced through the original arcade code: eight bullet slots, one position the game treats as invisible, and the four bytes Namco added to close it.Namco, three Z80s at 3.072 MHz
- Ms. Pac-Man · 1981 · Oct 15, 2026Ms. Pac-Man's Ghosts Only Scatter OnceWhy the ghosts in Ms. Pac-Man wander off in a different direction every game, traced through the original arcade code to two small patches and a processor counter used as dice.Midway/General Computer Corporation, Z80 at 3.072 MHz
- Pac-Man · 1980 · Oct 15, 2026Pac-Man's Last Level Is Drawn by Its FruitWhy level 256 of Pac-Man buries half the maze in garbage, traced through the original arcade code to a loop that was asked to draw zero fruit and drew 256.Namco/Midway, Z80 at 3.072 MHz
- Zaxxon · 1982 · Oct 15, 2026Zaxxon Measures Your Height With Your ShadowHow Zaxxon fakes three dimensions on a flat screen: the ship's altitude is the distance to its shadow, and every wall is a five by four grid.Sega, Z80 at 3.04 MHz
Pinball
Motorola 6809 programs from Williams and Bally WPC machines: how the code was organised around a switch matrix, timed tasks and paged ROM, and how it keeps score on its own mechanisms.
- The Addams Family · 1992 · Oct 15, 2026The Addams Family Teaches Itself One ShotHow Bally's 1992 Addams Family pinball times each ball with a light beam, fires its own flipper at the swamp, and keeps adjusting its aim from where the ball lands, all with three numbers it guards in memory.Bally/Williams WPC with Fliptronics, Motorola 6809 at 2 MHz
- Attack From Mars · 1995 · Oct 15, 2026Attack From Mars Picks Your Stroke of Luck Before the ShowHow Bally's 1995 pinball machine really chooses its mystery award: a table of weights read the instant the ball lands, a list of four that is built around the answer and padded with prizes you could not have won, and an extra ball rate that tunes itself. Traced through the original 1995 program.Bally WPC-95, Motorola 6809 at 2 MHz
- Medieval Madness · 1997 · Oct 15, 2026Medieval Madness Keeps Score on Its Own DrawbridgeHow Williams' 1997 castle pinball times every drawbridge move, decides after three failures in a row that a switch is broken, and forgives it after two good moves, all from a pair of bytes per switch.Williams WPC-95, Motorola 6809 at 2 MHz
- Twilight Zone · 1993 · Oct 15, 2026How Twilight Zone Spots the PowerballTwilight Zone shouts POWERBALL before you have even pulled the plunger. How the 1993 Bally machine tells one white ceramic ball from five steel ones with a metal detector, and how it stops trusting that detector when it goes quiet.Bally/Williams WPC (Fliptronics II), Motorola 6809 at 2 MHz
How we take a game apart
1. Start from the original chips. The subject is always the program ROM from the machine itself: the arcade board, or the pinball machine's CPU board. Each one is checked byte for byte against known-good dumps of the same chips first. Ports, remakes and home versions are never the subject.
2. Disassemble and read the code. The raw machine code is turned back into readable instructions with our own disassemblers for the Z80 and Motorola 6809, then annotated routine by routine: what each memory address holds, what each routine is for, where the game makes its decisions. Published disassemblies by other researchers are used only to cross-check, and credited.
3. Run it and measure. The unmodified program runs in an emulator (MAME) with small scripts that drop coins, move the joystick, close pinball switches or roll a pretend ball. Breakpoints and memory logs record what the code does frame by frame, and every number the code predicts is timed and counted. For pinball, switch and coil numbers are checked against the manufacturer's manual.
4. Write only what held up. A claim goes in if it was read directly in the code or seen happening when the program ran. Anything else is credited to its source or marked as an open question, and every article lists exactly what it was checked against. Code excerpts are a few lines with our own comments, and the diagrams are drawn by hand: no screenshots or graphics are taken from the games.