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:
- 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.
- 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.