GoNES
github.com
What it is
GoNES is a free, open-source NES emulator written in Go. It runs on Windows, macOS, Linux and web browsers; the browser version compiles to WebAssembly, and the project links to a hosted instance. At startup, the app opens a file picker for selecting a .nes ROM, and it can also be launched from a terminal with a ROM file argument. The project lists support for mappers 0, 1, 2, 3, 4, 7, 69 and 71, which it says cover 84.34% of official NES games. Keyboard controls for two players are configurable. Save-state, load-state and undo bindings are listed. GoNES creates a configuration file on first run, with its location documented for each desktop platform. Release downloads are provided, and macOS installation through Homebrew is documented. Source installation is also documented. Building requires OpenGL development libraries because rendering uses Ebitengine. The project says its GUI renders, but menu options still need to be added.
Spec sheet
- Purpose
- GoNES is an NES emulator written in Go.Read 8 Oct 2026 · github.com
- Security
- The repository page shows a Security and quality section with 0 items.Read 8 Oct 2026 · github.com
- License
- The repository identifies its license as Apache-2.0.Read 8 Oct 2026 · github.com
- Maker
- The GitHub profile identifies Gabe Cook as the project maker and lists Oklahoma City, Oklahoma, USA as his location.Read 4 Oct 2026 · github.com
- Browser play
- GoNES supports emulation in a web browser by compiling to WASM, and the README links to a hosted instance.Read 4 Oct 2026 · github.com
- Browser version
- The emulator can run in a web browser by compiling to WebAssembly, and the README links to a hosted instance.Read 8 Oct 2026 · github.com
- Build requirement
- Building from source requires Go and OpenGL development libraries for the Ebiten rendering library.Read 8 Oct 2026 · github.com
- Command-line options
- The command documentation lists options for audio, configuration, step debugging, fullscreen, palette files, pause on unfocused windows, resume, UI scale, and trace logging.Read 8 Oct 2026 · github.com
- Configuration
- GoNES generates a configuration file on first run, with documented locations for Windows, macOS, and Linux.Read 8 Oct 2026 · github.com
- Controller input
- The README documents default key bindings for two players, and says keys are configurable.Read 8 Oct 2026 · github.com
- Controls
- The README lists configurable keyboard controls, including Player 1 and Player 2 bindings.Read 4 Oct 2026 · github.com
- Development status
- The README says the GUI renders but menu options still need to be added.Read 8 Oct 2026 · github.com
- Downloads
- The README says automated builds are uploaded during releases and links to release download files.Read 4 Oct 2026 · github.com
- Emulation coverage
- The README lists mappers 0, 1, 2, 3, 4, 7, 69, and 71 as supported, covering 84.34% of official NES games.Read 8 Oct 2026 · github.com
- Installation
- The README documents installation through Homebrew on macOS, release binaries, the browser version, and Go source installation.Read 8 Oct 2026 · github.com
- macOS installation
- The README documents installation through Homebrew with `brew install gabe565/tap/gones --no-quarantine`.Read 4 Oct 2026 · github.com
- Mapper support
- The README lists mappers 0, 1, 2, 3, 4, 7, 69, and 71, covering 84.34% of official NES games according to the project.Read 4 Oct 2026 · github.com
- Release features
- The v0.2.0 release notes list per-game configuration overrides and NES utility commands for ROM and graphics data tasks and Game Genie codes.Read 8 Oct 2026 · github.com
- ROM loading
- The app opens a file picker for a .nes file and can also be launched from a terminal with a ROM file argument.Read 8 Oct 2026 · github.com
- Save states
- The README lists keyboard shortcuts for saving, loading, and undoing save states.Read 8 Oct 2026 · github.com
- Source installation
- The README documents source installation with Go using `go install gabe565.com/gones@latest`.Read 4 Oct 2026 · github.com
- Terminal use
- GoNES can be launched from a terminal with a ROM file argument.Read 4 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Free and open source under Apache-2.0.
- Available on Windows, macOS, Linux and web browsers.
- Supports save, load and undo state bindings.
- Configurable keyboard controls for two players.
- Release downloads and macOS Homebrew installation are documented.
Limits
- Listed mapper support covers 84.34% of official NES games.
- GUI menu options still need to be added.
- Building from source requires OpenGL development libraries.
Who it suits
GoNES suits NES players who want a free emulator on desktop or in a browser. It also offers terminal launching and configurable keyboard bindings for two players.
GoNES in depth
Read the full write-up
Overview
GoNES is a Go-based emulator for Nintendo Entertainment System games, suited to players who want a free option they can run on desktop or in a browser. It offers several ways to launch a ROM and configurable two-player keyboard controls, but its supported mapper set excludes part of the official NES library.
Key features
On startup, GoNES opens a file picker for a.nes file; terminal users can instead pass a ROM as an argument. A hosted WebAssembly build provides browser play, useful when you would rather not install a desktop version. These choices suit both straightforward single-game launches and command-line workflows.
Players can configure keyboard bindings for Player 1 and Player 2. Save-state, load-state, and undo save/load bindings let players preserve or recover progress outside a game's own save system. GoNES creates a configuration file on first run and documents its location for Windows, macOS, and Linux.
GoNES supports mappers 0, 1, 2, 3, 4, 7, 69, and 71; the project estimates that set covers 84.34% of official NES games. That is useful breadth, not comprehensive compatibility, so players with a particular ROM in mind should confirm its mapper is supported. The GUI renders, but menu options still need to be added, which makes the current interface a weaker fit for players expecting a complete menu-driven emulator.
Command-line options include audio, configuration, step debugging, fullscreen, palette files, pausing when the window loses focus, resume behavior, UI scale, and trace logging. The v0.2.0 release notes also describe per-game configuration overrides and utility commands for ROM and graphics data tasks and Game Genie codes. These options give technical users room to tune or inspect behavior, though they do not offset the unfinished GUI for users who prefer menus.
Pricing
GoNES is free: its sole GoNES plan costs nothing and includes the NES emulator, source code, and release downloads. There is no paid tier or trial; the open-source project is licensed under Apache-2.0. This is a straightforward choice for anyone seeking an emulator without a software charge, though no separate plan provides broader mapper coverage or a more complete interface.
Platforms
GoNES runs on Windows, macOS, Linux, and web browsers. Desktop users can use release binaries; macOS installation is also documented through Homebrew, and Go source installation is available with go install gabe565.com/gones@latest. Browser play uses WebAssembly. Building from source requires OpenGL development libraries because rendering uses Ebitengine, a consideration for developers compiling it themselves rather than using a release build.
Who it's for
GoNES is a good fit for players whose ROMs fall within its supported mapper set and who value configurable keyboard controls, save-state bindings, or browser access. Its terminal options and source installation also make it relevant to technically comfortable users. Look elsewhere if your priority is coverage of the full NES catalog or a finished menu-based interface.
Pros and cons
Pros: Free, open-source distribution across desktop and browser platforms gives players several ways to get started without a subscription.
Pros: Configurable bindings for two players and save-state controls support flexible keyboard play and progress recovery.
Pros: Command-line options, including step debugging and trace logging, provide useful control for technical users.
Cons: The supported mapper set covers 84.34% of official games by the project's estimate, so some titles will not be covered.
Cons: Menu options are still absent from the GUI, limiting its appeal to players who want a finished menu-driven experience.
Cons: Building from source requires OpenGL development libraries, an extra setup hurdle compared with using release downloads.
Alternatives
NES Emulators is the broader category to browse if you want to compare more options. Choose NESER for another free emulator on Linux, macOS, Windows, and the web. Nestalgia is a free desktop alternative for Linux, macOS, and Windows; Nestopia Undead Edition is another free, GPL-2.0 desktop option on those systems. Nintengo and Dendy are free alternatives with Linux, macOS, Windows, and browser support. Pick FCEUX if you want a free, open-source option whose stated scope includes NES, Famicom, Famicom Disk System, and Dendy emulation, with Win32 and Qt/SDL ports. HalfNES is a free Linux, macOS, and Windows alternative, but has no save states and requires Java 8 or newer. JSNES is a free Linux and web option, described as an open-source JavaScript NES emulator library.
Verdict
Choose GoNES if you want a free NES emulator with desktop and browser access, configurable two-player keyboard controls, and save-state bindings, and your games fit its supported mappers. Its command-line flexibility is a further draw for technical users. Look elsewhere if you need broader game coverage or a complete menu-driven GUI.
Verdict
GoNES offers desktop and browser play, configurable controls and save-state bindings at no cost. Its listed mapper set covers 84.34% of official NES games, and the GUI still lacks menu options.
Where Specifiction places it
- NES Emulators#1 of 268.7