Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. nes

nes

MITGo

A Nintendo Entertainment System (NES) emulator written in Go with OpenGL graphics and audio support.

GitHubGitHub
5.6k stars534 forks0 contributors

What is nes?

fogleman/nes is a Nintendo Entertainment System (NES) emulator implemented in Go. It allows users to play classic NES games on modern computers by emulating the console's hardware components, including the CPU, PPU (Picture Processing Unit), and APU (Audio Processing Unit). The project focuses on accuracy and performance while providing a graphical interface for browsing and selecting ROMs.

Target Audience

Developers and hobbyists interested in retro gaming emulation, particularly those with experience in Go who want to study or contribute to emulator development. It also targets users seeking a cross-platform NES emulator written in a modern, compiled language.

Value Proposition

Developers choose this emulator for its clean, modular Go codebase, which emphasizes accuracy in hardware emulation. Its unique selling points include cross-platform support via OpenGL and GLFW for graphics, PortAudio for sound, and an integrated ROM browser with automatic thumbnail downloads from an online database.

Overview

NES emulator written in Go.

Use Cases

Best For

  • Playing classic NES games on modern computers with support for approximately 85% of games via implemented mappers.
  • Studying emulator development in Go, as it provides a modular codebase focused on NES hardware accuracy.
  • Cross-platform retro gaming emulation using OpenGL for graphics and PortAudio for audio on systems like Linux, macOS, and Windows.
  • Browsing and selecting NES ROMs through a graphical menu interface that automatically fetches game thumbnails.
  • Experimenting with NES hardware emulation components, including CPU, PPU, and APU, for educational purposes.
  • Using joystick or keyboard input for NES gameplay with configurable controls and turbo button support.

Not Ideal For

  • Users requiring 100% NES game compatibility, as only about 85% of games are supported due to limited mapper implementation.
  • Those seeking plug-and-play emulation without manual dependency installations, like PortAudio setup on certain systems.
  • Players wanting fully customizable joystick controls, since button mappings are hard-coded and not configurable.
  • Enthusiasts needing frame-perfect emulation accuracy, given known minor PPU timing issues and imperfect APU emulation.

Pros & Cons

Pros

Cross-Platform Accessibility

Runs on Linux, macOS, and Windows using Go's portability with OpenGL/GLFW for graphics and PortAudio for sound, as shown in the installation and dependency sections.

Integrated ROM Browser

Includes a graphical menu that automatically downloads game thumbnails from an online database, enhancing user experience for browsing and selecting ROMs, as detailed in the usage section.

Clean Educational Codebase

Written in Go with a modular focus on NES hardware accuracy, making it valuable for developers learning emulator internals, supported by documentation links in the README.

Performance and Hardware Focus

Emphasizes accurate CPU, PPU, and APU emulation in a compiled language for better performance, aligning with the project's philosophy stated in the summary.

Cons

Limited Game Support

Only implements six mappers covering about 85% of NES games, meaning many titles won't work, as admitted in the mappers section.

Audio Setup Complexity

Requires manual PortAudio installation with development headers on some systems, adding a setup hurdle compared to more integrated emulators, as noted in the dependencies.

Inflexible Joystick Controls

Joystick button mappings are hard-coded and not user-configurable, limiting customization for different controllers, as mentioned in the controls section.

Frequently Asked Questions

Quick Stats

Stars5,642
Forks534
Contributors0
Open Issues8
Last commit1 year ago
CreatedSince 2015

Tags

#opengl#cross-platform#go#retro-gaming#game-emulation

Built With

G
Go
P
PortAudio
G
GLFW
O
OpenGL

Included in

Go169.1k
Auto-fetched 1 day ago

Related Projects

croccroc

Easily and securely send things from one computer to another :crocodile: :package:

Stars34,744
Forks1,367
Last commit10 days ago
resticrestic

Fast, secure, efficient backup program

Stars33,234
Forks1,743
Last commit23 days ago
gorgor

GoReplay is an open-source tool for capturing and replaying live HTTP traffic into a test environment in order to continuously test your system with real data. It can be used to increase confidence in code deployments, configuration changes and infrastructure changes.

Stars19,287
Forks87
Last commit2 months ago
JuiceFSJuiceFS

JuiceFS is a distributed POSIX file system built on top of Redis and S3.

Stars13,480
Forks1,193
Last commit1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub