$ Go NES Emulator
A Nintendo Entertainment System (NES) emulator written in Go. This project brings classic 8-bit gaming to life with accurate CPU emulation, PPU graphics rendering, and support for multiple cartridge mappers.
A WebAssembly version of this emulator is available at /nes. Note that you'll need your own NES ROM files to use the emulator.
Looking for ROMs? You can find them at Vimm's NES Vault.
### features
- -Ricoh 2A03 CPU - Complete emulation of the NES CPU with official and unofficial opcodes
- -PPU Graphics - Accurate rendering with sprite rendering, background layers, and scrolling
- -Mapper Support - Supports 6 major mappers covering ~72% of NES games
- -SDL2 Display - Smooth 60 FPS gameplay with SDL2 for cross-platform graphics
- -WASM Build - WebAssembly target for running in browsers
### supported mappers
The emulator supports the most common NES cartridge mappers:
- •Mapper 0 (NROM) - Super Mario Bros., Donkey Kong
- •Mapper 1 (MMC1) - Zelda, Metroid
- •Mapper 2 (UxROM) - Mega Man, Castlevania
- •Mapper 3 (CNROM) - Arkanoid
- •Mapper 4 (MMC3) - Super Mario Bros. 3, Mega Man 3-6
- •Mapper 7 (AxROM) - Battletoads
### controls
Arrow Keys- D-PadX- A ButtonZ- B ButtonEnter- StartRight Shift- SelectP- Pause/ResumeR- ResetESC- Quit### learn more
Download pre-built binaries, read the documentation, and explore the source code.