Ten modules across ten weeks. Each module is a working artefact: a stock core that boots, a 6502 program that runs, a palette that visibly changed, a mapper that loaded a bank-switched ROM, a homebrew ROM you wrote yourself. Twenty hours of lecture, forty hours of lab, sixty hours of independent practice, one hundred and twenty hours total.
Position in the academy
CON-101 is the third belt of the academy ladder, the applied-technical capstone for the silicon arc. Students arrive having built a CPU from NAND gates in CSA-101 and (optionally) having compiled a high-level language to it in CSA-102. CON-101 takes that FPGA discipline and points it at the largest body of open-source retro-console HDL the community has ever shipped.
The pedagogical move
CSA-101 said: build the smallest layer that earns its keep. CON-101 says: study layers other people built, understand what they chose, modify them, stand on the shoulders. Every CON-101 module that touches a community core opens with the question, what choice did this author make and what was the alternative, before any keyboard-on-ROM work begins. The capstone is a homebrew ROM running on a modified core; modification has to be non-trivial.
Reading anchors
Two anchor pairings carry the course. The build-it-yourself axis pairs Steven Hugg's Designing Video Game Hardware in Verilog (Puzzling Plans 2018) with Hugg's free 8bitworkshop.com in-browser IDE. Single-author tool plus text alignment, used as the daily read-it-then-run-it loop.
The down-to-earth narrative axis pairs three sources. Rodrigo Copetti's Architecture of Consoles writeups for breadth (free, around thirty console architectures, updated through 2025). Bogost and Montfort's Racing the Beam for the Atari 2600 deep dive that founded MIT Press's Platform Studies series. Altice's I Am Error for the NES deep dive that succeeded it. The Petzold weaves that thread CSA-101 are CSA-only by design; CON-101 substitutes the Hugg plus Copetti plus Bogost+Montfort plus Altice pairing.
Module map
| Module | Topic | Working artefact |
|---|---|---|
| 1 | DE10-Nano + Quartus + MiSTer setup | Boot the MiSTer framework; load a stock NES core; play Donkey Kong |
| 2 | The 6502 ISA, canonical 8-bit anchor | Hand-write 6502 assembly; assemble with cc65; run on the NES core (or the 6502 REPL for the no-hardware path) |
| 3 | NES PPU and APU internals | Read the open-source NES core HDL; modify the palette; observe pixel output on HDMI |
| 4 | Cartridge mappers and bank switching | Implement an MMC1-class mapper variant; load a bank-switched ROM; verify on the core |
| 5 | Game Boy LR35902 architecture | Walk the Game Boy core; trace a frame; identify the LR35902 versus Z80 instruction differences |
| 6 | SNES 65C816 and the 16-bit successor | Compare SNES to NES at the architectural level; document the cousin-mapping pattern |
| 7 | Homebrew ROM development | Write a small original NES game (~50 to 100 lines of 6502); flash to the DE10-Nano |
| 8 | Audio, video, and HDMI on MiSTer | Trace the HDMI output path; modify the audio mix; produce visible or audible artefacts |
| 9 | Cousin mapping retro to modern | Map the NES's memory-mapped I/O against the SB6141's memory-mapped peripherals |
| 10 | Capstone, ship a homebrew console artefact | Original homebrew ROM running on a modified core, with a five-minute recorded demo |
Learning outcomes
- Remember. State the 6502 register set, addressing modes, and canonical instruction encoding.
- Understand. Explain why memory-mapped I/O is the dominant pattern for retro consoles, and why the MMC mappers existed.
- Apply. Hand-write 6502 assembly, assemble it with cc65, and run it on a synthesised NES core.
- Apply. Read open-source NES PPU and APU HDL; modify a small parameter (palette, audio mix); observe the change.
- Apply. Implement an MMC1-class cartridge mapper variant and verify a bank-switched ROM.
- Analyze. Compare NES, Game Boy, and SNES architectures via a structured Compare and Contrast across ISA, memory map, video, audio, and mapper conventions.
- Synthesize. Write or port an original homebrew ROM to a modified soft core running on the student's DE10-Nano.
Assessment
First the project has to work. The capstone homebrew ROM runs on the student's modified core on the DE10-Nano, the modification is non-trivial, and the demo shows the artefact running for at least sixty seconds with HDMI video and audio. Then the written report scores on three dimensions weighted 40 plus 30 plus 30. Modification depth 40%, engineering discipline and reproducibility 30%, demo and report quality 30%. B-minus minimum on Tier 2 for the certificate.
What comes next
- RE-101. Reading other people's HDL is the same skill as reading other people's firmware. CON-101 graduates land RE-101 having already reverse-engineered NES + Game Boy + SNES core HDL.
- RF-201 + RF-301. The Tang Primer 25K substrate carries forward; FPGA-side SDR work in RF-201 and RF-301 is a natural extension of CON-101's HDL-reading discipline.
- EMB-201 (future). Embedded soft-core development at production scale.