NES emulator written in Go.
Alternatives To Nes
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
a month ago258otherC
iOS & tvOS multi-emulator frontend, supporting various Atari, Bandai, NEC, Nintendo, Sega, SNK and Sony console systems… Get Started: |
Nes5,15545 months ago1January 27, 202110mitGo
NES emulator written in Go.
7 months ago11mitGo
🕹️ A basic gameboy emulator with terminal "Cloud Gaming" support
Awesome Gbdev3,496
3 days ago22other
A curated list of Game Boy development resources such as tools, docs, emulators, related projects and open-source ROMs.
Retro2,9761662 months ago8May 01, 202053mitC
Retro Games in Gym
2 days ago328gpl-3.0Kotlin
All in one emulator on Android!
a month ago5wtfplRust
Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.
19 days ago134mitC
Game Boy and Game Boy Color emulator written in C
a year ago1C
si78c is a memory accurate reimplementation of Space Invaders in C.
Super Nt Jailbreak461
2 years ago21
Custom "Jailbreak" firmware for the Analogue Super NT
Alternatives To Nes
Select To Compare

Alternative Project Comparisons


This is an NES emulator written in Go.



Title Screens


The portaudio-go dependency requires PortAudio on your system:

To build portaudio-go, you must first have the PortAudio development headers and libraries installed. Some systems provide a package for this; e.g., on Ubuntu you would want to run apt-get install portaudio19-dev. On other systems you might have to install from source.

On Mac, you can use homebrew:

brew install portaudio


The go get command will automatically fetch the dependencies listed above, compile the binary and place it in your $GOPATH/bin directory.

go get


nes [rom_file|rom_directory]
  1. If no arguments are specified, the program will look for rom files in the current working directory.

  2. If a directory is specified, the program will look for rom files in that directory.

  3. If a file is specified, the program will run that rom.

For 1 & 2, the program will display a menu screen to select which rom to play. The thumbnails are downloaded from an online database keyed by the md5 sum of the rom file.

Menu Screenshot


Joysticks are supported, although the button mapping is currently hard-coded. Keyboard controls are indicated below.

Nintendo Emulator
Up, Down, Left, Right Arrow Keys
Start Enter
Select Right Shift
A (Turbo) A
B (Turbo) S
Reset R


The following mappers have been implemented:

  • NROM (0)
  • MMC1 (1)
  • UNROM (2)
  • CNROM (3)
  • MMC3 (4)
  • AOROM (7)

These mappers cover about 85% of all NES games. I hope to implement more mappers soon. To see what games should work, consult this list:

NES Mapper List

Known Issues

  • there are some minor issues with PPU timing, but most games work OK anyway
  • the APU emulation isn't quite perfect, but not far off


Interested in writing your own emulator? Curious about the NES internals? Here are some good resources:

Popular Video Game Projects
Popular Rom Projects
Popular Games Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Video Game
Nes Emulator