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¶
-
The full winit + wgpu + egui emulator, compiled to WebAssembly and running in your browser at the site root.
-
The generated
rustdocfor everyrustynes-*workspace crate — the CPU, PPU, APU, mappers, core, and frontend public interfaces. -
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¶
- Emulation Core — per-chip specs for the CPU, PPU, and APU, plus the scheduler, the mapper families, and the cartridge format.
- Frontend & Features — the egui shell, Lua scripting, WebRTC netplay, RetroAchievements, compatibility, and performance.
- Testing & Accuracy — the testing strategy, the accuracy ledger, and the hardware emulation checklist that defines what "cycle-accurate" means here.
- Platforms — the native Android and iOS / iPadOS apps and the Libretro core.
- User Guide — a task-oriented manual covering controls, menus, save states, configuration, and troubleshooting.