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.

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.

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.