Skip to content

RustyNES Documentation

RustyNES is a cycle-accurate Nintendo Entertainment System emulator written in pure Rust. Its accuracy bar is Mesen2 / higan / ares: tight lockstep scheduling at PPU-dot resolution on a master-clock-precise timebase, sub-instruction PPU events visible to subsequent CPU code, and a lookup-table non-linear audio mixer with band-limited synthesis. The desktop frontend is pure Rust (winit + wgpu + cpal + egui), and the same deterministic #![no_std] chip stack drives the Android, iOS, WebAssembly, and Libretro builds.

This handbook is the reader-friendly view of the specs that live in the repository's docs/ tree. Those documents are the spec, not history: they are updated in the same change as the code they describe.

Try it and read the code

  • Play the demo

    The full winit + wgpu + egui emulator, compiled to WebAssembly and running in your browser at the site root.

  • API documentation

    The generated rustdoc for every rustynes-* workspace crate — the CPU, PPU, APU, mappers, core, and frontend public interfaces.

  • Source on GitHub

    Issues, releases, the full CHANGELOG.md, and the build instructions.

Start here

New to the codebase or the emulator? These pages are the fastest way in:

  • Architecture — the load-bearing decisions: the PPU as master clock, the Bus that owns all mutable state, the one-directional workspace dependency graph, and the determinism contract.
  • Scheduler — how the single canonical cycle counter drives the CPU, PPU, and APU in lockstep so mid-instruction events land at the right dot.
  • Project Status — the single source of truth for per-suite pass counts, the mapper matrix, and version policy.
  • Getting Started — install, load a ROM, and play, from the end-user's side.

What's in here