Download is avaible in the releases section. An eframe frontend with egui is available, with a GUI and a lot of user functionality. A SDL2 and SDL3 frontend for the emulator is avaible, with very basic user functionality. A (WIP) WASM frontend is also avaible here: https://comba92.github.io/nen-emulator/frontend-wasm/index.html
Game ROMs can be loaded by dragging and dropping the files into the window, or by using the file dialog in the top bar.
[!TIP] Zip files are supported.
[!TIP] Both keyboards and controllers are supported. [!TIP] Controls can be changed in the keybids menu.
| Keyboard | Button |
|---|---|
| S | A button |
| A | B button |
| W | Start |
| E | Select |
| ArrowKeys | You know what they do! |
| P | Pause/unpause the emulator |
| R | Reset current game |
| M | Mute/unmute sound |
| 0 | Save state |
| 9 | Load state |
The emulator supports all the basic NES features you'd expect from a NES emulator. - [x] The 6502 CPU is emulated with most of its quirks. - [x] PPU pixel rendering emulation. Emulates the LoopyRegister behaviour and the pixel fethcer. - [x] The APU channels are all fully emulated. - [x] Both NTSC and PAL games are supported. - [x] The Famicon Disk System is supported. - [x] Custom color palettes are supported - [x] Games with tricky and obscure behaviour run correctly, except for one or two exceptions. - [x] RAM random initializing for games which uses it to seed RNG - [x] Saving/loading of battery RAM when the game is changed or the emulator is closed. - [x] Savestates - [x] Setting to disable the sprites limit for scanline.
Building requires, of course, Rust and it's development tools.
Three frontends are avaible. The eframe frontend is the default one. To build it:
cargo run -r
cargo run -r --features=persistence # enable savestates feature
cargo run -r --features=opengl # use opengl graphical backend for eframe
A SDL2 and a SDL3 frontends are also available. They are their own separate package, so the -p flag is needed.
To build them:
cargo build -r -p nenemu_sdl2 # Dynamically linked with SDL2, no savestates feature
cargo build -r -p nenemu_sdl2 --features="static" # Statically linked with SDL2
The WASM frontend is still WIP, but already avaible here: https://comba92.github.io/nen-emulator/frontend-wasm/index.html
This section contains some of the resources I've used during development. Sadly I didn't keep track of all of them. I did found a lot of interesting articles, blogs, and readings, but forgot to add them here.
$ claude mcp add nen-emulator \
-- python -m otcore.mcp_server <graph>