The NES console
A working NES built from our own parts: both chips simulated switch by switch, every connection between them checked against recorded reference runs, and a picture path already tested on a real console.
The 6502 work simulates a chip at its switches; ntsc-crt simulates the signal between a console and a tube. This project is where they stop being neighbours and become one machine: a working NES, put together chip by chip, where every place two chips meet is checked against recorded runs of a reference simulator rather than taken on trust.
Every part of the console has its own shelf
- Play: the console running in your browser, on a cartridge from your own disk
- Create: the same console with every tool on one desk: the code, the memory, the palettes and the sprite editor, as windows you arrange
- The NES at human speed: the same console slowed down until you can watch it draw a frame, send it down the wire and read a pad
- The chips: the contract, the 2A03 and the 2C02 at their switches, and the fast chips built from them
- The signal: the composite video between the console and the television, with a live bench and a real console read off the scope
- The console: both chips on one board, then its picture, its sound and the window it plays in
- The bench: a real console and the model under the same controller presses: the plan, the build and what happened
- The calibration cart: one cartridge of our own whose every screen is built to be measured
- The notebook: every plan and report for the console, grouped by the part they are about
- The story so far: what the sketch asked for, what the chips taught us, and what still waits on the real console
What the sketch asked for, and what still waits on the real console
We wrote the plan down first: the end-to-end sketch in the contract repository, with a check for each milestone. Every milestone it names is built and checked on this machine: the contract, the two chips at the switch level and the fast chips built from them, the whole fast 2A03, the mainboard’s glue, the console on one clock running the standard test ROMs, the picture through the encoder and back through the capture path, the sound through the board’s own audio stage, and the window with its GPU picture, its gamepad and its browser version. What is left is exactly what a switch-level model cannot settle alone, and each item is named in the reports: when the NMI really arrives on a real board, a real cartridge for the play test, a properly terminated video capture, the sound stage under a real speaker, the alignment the console powers on in, and the die’s own findings, where the model and the real part are known to disagree and a logic analyser decides. The bench is how those close. The signal side is already real: the signal page carries frames decoded from a physical console, and its composite deep-dive reads that console’s video off the scope level by level.
Where it started
The sketch the whole console is built on, written before any of the code.
- The plan for the whole console Sketch v0.2: What a working console means, how the parts fit together, the milestones from N0 to N8, and the decisions made along the way.
The repositories are public: github.com/tinymachines/2a03 and its siblings. The chip crates embed die data derived from visual6502-family imagery, so NonCommercial and ShareAlike travel with them; the contract crate is MIT and embeds nothing.