Skip to content

Roadmap

Every chapter ends with a program that builds and runs. Chapters are written when the previous one is finished, so this page is the plan, not an archive: the Status column tells you what exists today.

# Chapter You build Status
Part I — The Machine
1 A Computer in 4,096 Bytes The project skeleton and the machine's state ✅ Ready
2 Memory, ROMs, and Programs A ROM loader and a hex dump Planned
3 Reading the Machine's Language A full disassembler Planned
4 Fetch, Decode, Execute The CPU loop and the first running ROM Planned
5 Arithmetic and the Flag Register The ALU, flags, and your first tests Planned
6 Control Flow and Time Calls, skips, randomness, timers Planned
7 Sprites and the Framebuffer XOR drawing, font, BCD — and the logo in your terminal Planned
8 Clocks, Frames, and Cycles A timed, headless runner Planned
Part II — The Frontend
9 A Window Full of Pixels SDL3 window, texture, vsync Planned
10 The Hex Keypad Key state, skips, blocking FX0A Planned
11 Sound A square-wave buzzer tied to the sound timer Planned
12 Putting It Together The final architecture and playable games Planned
Part III — Getting It Right
13 Quirks: One ROM, Many Machines The compatibility model and the quirks ROM Planned
14 Testing an Emulator Golden traces, exhaustive decode, sanitizers, fuzzing Planned
Part IV — Bigger Machines
15 SUPER-CHIP 128×64, scrolling, big font, DXY0 Planned
16 XO-CHIP optional 64 KB, bitplanes, patterned audio Planned
Part V — Tools of the Trade optional
17 An Assembler for Your Machine A two-pass assembler and your own test ROMs Planned
18 A Debugger with Rewind Breakpoints, save states, time travel Planned
19 Making It Fast Benchmarks and dispatch strategies Planned
Part VI — Beyond
20 The Next Machine A design doc for Game Boy or NES Planned

Milestones

These are the moments where the project changes shape:

Milestone Chapter What changes
The machine exists 1 A build target and a printed state card
A ROM is readable 3 You can see what a program is made of
The CPU runs 4 Instructions change state
The machine draws 7 A logo appears, in text, with no SDL
Time exists 8 Cycles, ticks, and frames are separate
A window opens 9 The same core, now visible
Games are playable 12 The emulator is useful
Compatibility is proved 13 The quirks test passes per profile
The machine grows 15 SUPER-CHIP and a bigger display

Why the order?

Two decisions shape the sequence:

  1. No window until the CPU is tested. A bug looks the same whether it is in the instruction decoder or the renderer. By the time SDL appears, the CPU has been checked against the test suite, so the search space is tiny.
  2. Time gets its own chapter. Most beginner emulators run "as fast as possible" and then discover that Pong is unplayable. Chapter 8 makes the clock explicit before any game depends on it.

The tooling chapters (17–19) are optional: Chapter 15 leaves you with a complete, tested SUPER-CHIP emulator. They are there because building the tools teaches you more about the machine than using it does.