Six modules of reading other people's HDL and other people's assembly. Module 7 is the one where you ship your own thing. A small original NES homebrew ROM (~50 to 100 lines of 6502) that uses sprites, the tile map, controller input, and at least one of audio or a score display.
Reading
- Hugg, Making 8-Bit Arcade Games in C, the companion volume. The most direct CON-track resource for this module.
- nesdev.org wiki: Programming Basics, the canonical web tutorial.
- Hugg 8bitworkshop.com mirror at the academy, walking the canonical Pong design step by step.
- Optional: Game Programming Patterns by Robert Nystrom (free online) for the architecture-pattern register.
Lecture
Roughly three hours across two sessions. Key arc:
- Homebrew scope. What you can build in fifty to one hundred lines and what you cannot.
- The cc65 + ld65 toolchain for ROM packaging. iNES header, ROM bank layout, fixed entry.
- Sprite memory and OAM DMA. The standard NMI-handler pattern.
- Controller input. Polling, edge detection, the Mario-jump bug as a teaching example.
- Audio: the one-channel one-note 'I shipped audio' floor.
Lab pack
Lab Pack 7 is the most open-ended of the course. See Lab Pack 7: Original Homebrew ROM.
Classroom tools
- Workbench: 6502 REPL Workbench for fast-iteration 6502 testing.
- SPK-101 classroom: jsnes for the browser-runs-your-ROM verification loop.
- cc65 + ld65 + ca65 installed locally; the SETUP guide walks the install.
- Mesen for the strongest free NES debugger; pre-flash verification.
Architecture comparison sidebar
A 1985 homebrew developer had no debugger and no source-level browser; they wrote assembly into a hex editor and burnt EPROMs. You have cc65, Mesen, the academy jsnes, the bitplane decomposer, the sprite inspector, and a Tang Primer 25K. The pedagogical point is not nostalgia for hardship; it is that modern tooling lets you study the same artefact (the ROM byte sequence) the original developers shipped, and that the ROM byte sequence is the ground truth either way.
Reflection prompts
- What is the smallest fun thing you can build in fifty lines of 6502? Write it down before you start.
- Read three open-source homebrew ROMs on nesdev.org's homebrew archive. What patterns repeat?
- If your homebrew ROM ships with audio, where in the APU did you put the sound? Why?
What is next
Module 8 is the HDMI and audio output plumbing. The chip outputs pixels and samples; MiSTer wraps that into HDMI and stereo line-out. You trace the path.