// the find
bokuweb/rustynes
👾 An NES emulator by Rust and WebAssembly
A Rust NES emulator that compiles to WebAssembly for browser play, with a native SDL2 standalone build as well. It targets developers who want to see how emulator architecture maps onto Rust's type system, or who are learning WASM compilation pipelines. Not a production-grade emulator — the README says 'work in progress' and it means it.
The CPU and PPU are split into clean, separate modules with their own register files, which makes the emulation logic easier to follow than many hobby emulators that merge everything into one god struct. The project ships a native SDL2 build alongside the WASM target, so you can test locally without a browser. It includes a solid suite of NES test ROMs (sprite hit tests, NMI sync demos, nestest.nes) directly in the repo, which is genuinely useful for validation. Nix shell support is a nice touch — it removes the emscripten toolchain setup pain.
Only Mapper 0 and Mapper 3 are implemented, which means almost every commercial game you'd want to test won't load. APU is half-done: no DCM (DMC) channel, which cuts out bass-heavy games' audio entirely. The last commit was June 2022 and the TODO list hasn't moved in years — this is effectively abandoned, not just slow. The build tooling depends on emscripten rather than the modern wasm-pack/wasm-bindgen pipeline, so getting it to build today will involve fighting old toolchain versions.