Intro

Last updated:

Who this is for

This is for developers that want to build an NES emulator. It assumes you're comfortable programming — it isn't the place to learn your first language, and the code is left to you.

Being new to emulation is fine, though; that's part of what the milestones below are for.

It is not an electrical-engineering text. Hardware details — latches, dummy reads, an address sitting on the bus for a cycle — are described only when an emulator has to reproduce them to accurately match the system's behaviour; if something has no observable consequence, it isn't here. So you don't need a hardware background to follow along.

Scope and status

Work in progress, started June 2026. I'm writing these pages as I work through the system myself, so they land incomplete, get rewritten, and occasionally contradict each other for a while. Cross-check anything against NESdev before betting code on it.