rust-wasm-snes

What rust-wasm-snes is
rust-wasm-snes is a free Super Nintendo emulator written in Rust, compiled to WebAssembly and run in a browser. Its CPU implements all 256 65C816 opcodes with master-cycle accuracy, and the project describes support for all 256 SPC700 opcodes. The sound implementation includes eight voices, BRR decoding, envelopes, interpolation and FIR echo. Graphics remain partial: PPU modes 0, 1 and 3 work, while mode 7 is partial. A browser ROM picker lists 746 titles via Internet Archive material served through a Cloudflare CORS proxy, but ROM files are not included and the README says users should bring their own. Compatibility differs by game: A Link to the Past works with its overworld and Mode 7, while Super Mario World has a known mode-07 input stall. Mega Man X plays with broken audio; Super Mario Kart needs a DSP-1 coprocessor and Chrono Trigger needs HiROM support. The MIT-licensed project documents browser and native builds, emulator-state snapshots and debugging tools.
Who it suits
This project may suit people looking for a browser-based SNES emulator and developers interested in its Rust and WebAssembly implementation. Users should be prepared to supply ROM files and encounter incomplete graphics or game-specific limits.
What it does well
- Free and MIT-licensed.
- Browser ROM picker lists 746 titles.
- CPU implements all 256 65C816 opcodes.
- Provides full emulator-state snapshots.
- Documents audio and execution-trace comparison tools.
What to know first
- ROM files are not included.
- PPU graphics support is partial.
- Mega Man X has broken audio.
- Some games require unsupported coprocessor or HiROM support.
Verdict
rust-wasm-snes has detailed CPU and audio support, but its graphics and game compatibility remain incomplete. ROMs are not supplied, and users should check the listed game-specific limitations.
Facts from rust-wasm-snes's own pages
- Audio
- Its S-DSP implementation supports eight voices, BRR decoding, ADSR/GAIN envelopes, Gaussian interpolation, and eight-tap FIR echo. · github.com, 4 Oct 2026
- Audio verification
- The project compares audio output against blargg’s snes_spc reference implementation using principal-component analysis and reports 1.01× amplitude versus the reference. · github.com, 4 Oct 2026
- Build and run
- The README documents a WebAssembly build with wasm-pack and a local Python server at http://localhost:8090. · github.com, 4 Oct 2026
- Build targets
- The README documents a browser WebAssembly build and a native build for debug tooling, headless ROM runners, audio comparison, and benchmarking. · github.com, 4 Oct 2026
- CPU
- The emulator implements all 256 65C816 CPU opcodes with master-cycle accuracy. · github.com, 4 Oct 2026
- CPU and sound
- The project describes support for all 256 65C816 CPU opcodes and all 256 SPC700 opcodes, with cycle-aware timing and an S-DSP supporting eight voices and BRR decoding. · github.com, 4 Oct 2026
- Debugging tools
- The project documents trace comparison against Mesen2 and includes tooling for waveform comparison and execution-trace diffs. · github.com, 4 Oct 2026
- Experimental mode
- An experimental off-main-thread worker scaffold is provided and requires COOP/COEP headers for SharedArrayBuffer. · github.com, 4 Oct 2026
- Game compatibility
- The README says A Link to the Past works with its overworld and Mode 7, while Super Mario World has a known mode-07 input stall. · github.com, 4 Oct 2026
- Graphics
- PPU support is partial: modes 0, 1, and 3 work, while mode 7 is partial. · github.com, 4 Oct 2026
- Graphics support
- The PPU has partial mode coverage: modes 1 and 3 work, while mode 7 is partial. · github.com, 4 Oct 2026
- Headquarters
- Melbourne, Australia · github.com, 28 Sept 2026
- Known limits
- Mega Man X boots and plays but has broken audio; Super Mario Kart needs a DSP-1 coprocessor, and Chrono Trigger needs HiROM support. · github.com, 4 Oct 2026
- License
- The project is licensed under MIT. · github.com, 4 Oct 2026
- License and ROMs
- The project is MIT-licensed; ROM files are not included, and the README says users should bring their own. · github.com, 4 Oct 2026
- Live demo
- The repository links to a live demo with an in-browser ROM picker listing 746 titles via Internet Archive, served through a Cloudflare CORS proxy. · github.com, 4 Oct 2026
- Purpose
- A cycle-accurate Super Nintendo emulator written in Rust, compiled to WebAssembly, and running in a browser. · github.com, 4 Oct 2026
- ROM picker
- The in-browser ROM picker lists 746 titles via Internet Archive, served through a Cloudflare CORS proxy. · github.com, 4 Oct 2026
- ROM requirement
- ROM files are not included, and the README says to bring your own; the browser ROM picker uses publicly archived Internet Archive material. · github.com, 4 Oct 2026
- Save states
- It serializes full emulator state, including CPU, bus, PPU, APU, and SRAM, into a roughly 484 KB binary snapshot. · github.com, 4 Oct 2026
- Security and compliance
- The repository’s Security and quality tab displays zero. · github.com, 4 Oct 2026
- Support
- The repository exposes GitHub Issues and Pull Requests for project activity. · github.com, 4 Oct 2026
Where rust-wasm-snes stands on Freedom251
- SNES Emulators#20 of 30