GoNES

What GoNES is
GoNES is a free, open-source NES emulator written in Go, available for Windows, macOS, Linux, and web browsers. Its browser version runs through WebAssembly, and the README links to a hosted instance. On startup, the app opens a file picker for choosing a .nes file; 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 can be configured, and the listed key bindings include save state, load state, and undo actions. GoNES creates a configuration file on first run, with its location documented for Windows, macOS, and Linux. Release downloads are available, and macOS installation through Homebrew is documented. The project also documents source installation using Go. Building from source requires OpenGL development libraries because rendering uses Ebitengine. Its README says the GUI renders but menu options still need to be added; the repository is licensed under Apache-2.0.
Who it suits
GoNES may suit players looking for an NES emulator on desktop or in a browser, and developers who want to install it from source. Its listed mapper coverage is a factor for users choosing ROMs.
What it does well
- Runs on Windows, macOS, Linux, and web browsers
- Browser version uses WebAssembly
- Supports configurable keyboard controls for two players
- Includes save, load, and undo state bindings
- Free and licensed under Apache-2.0
What to know first
- Listed mapper support covers 84.34% of official NES games
- GUI menu options still need to be added
- Source builds require OpenGL development libraries
Limits
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. Its GUI renders, but menu options still need to be added.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| GoNES | NES emulator; source and release downloads available | Free |
As github.com lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Open the hosted browser version linked from the project for web play.
- Download a release build for your platform from the project’s release downloads.
- On macOS, install through Homebrew with `brew install gabe565/tap/gones --no-quarantine`.
- Alternatively, install from source with Go using `go install gabe565.com/gones@latest`.
- Launch GoNES and choose a .nes file, or start it from a terminal with a ROM file argument.
GoNES is a free NES emulator for Linux, macOS, Windows, and web browsers. It is best suited to players who want flexible ways to launch ROMs and configurable controls, rather than complete game coverage or a finished menu-driven interface. Its mapper support spans much of the official library, but leaves a meaningful gap.
Overview
GoNES combines desktop emulation with a WebAssembly browser version linked from the project. Players can select a .nes file through the startup picker or pass a ROM file when launching from a terminal. That range is useful for both direct play and command-line workflows, though the unfinished GUI menu options make it a less polished choice for players who expect a complete graphical interface.
Key features
Keyboard controls are configurable for Player 1 and Player 2, and bindings are provided for saving and loading states as well as undoing those actions. This gives players control over input and a way to manage progress outside a game's own save system. GoNES creates a configuration file on first run; its location is documented 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, a substantial range but not full compatibility. Players with a particular game in mind should verify its mapper before choosing GoNES as their primary emulator.
Command-line options include audio, fullscreen, UI scaling, pause behavior when a window loses focus, palette files, resume, configuration, step debugging, and trace logging. The v0.2.0 release also adds per-game configuration overrides and utility commands for ROM and graphics data tasks and Game Genie codes. Those command-line and utility options will matter more to technically inclined users than to players seeking a menu-first experience.
Pricing
GoNES is free: its plan costs nothing, with no paid tier or free trial. It is open source under the Apache-2.0 license. Release downloads are available, macOS users can install through Homebrew, and source installation uses Go. Building from source requires OpenGL development libraries because rendering uses Ebitengine.
Platforms
GoNES supports Linux, macOS, Windows, and web browsers. The browser version runs through WebAssembly, while desktop users can choose release binaries or install from source. The documented Homebrew route is specifically for macOS.
Who it's for
GoNES is a sensible fit for players whose games fall within its supported mapper set and who value configurable two-player keyboard input, save-state bindings, or browser play. Its terminal options and ROM utilities also make it relevant to users comfortable with command-line tools. Players seeking broad NES library coverage or a completed menu interface should look elsewhere.
Pros and cons
- Pros: Free and open source, with desktop and browser versions, giving players several ways to run it without a paid plan.
- Pros: Configurable two-player keyboard controls and save/load/undo bindings support flexible play and progress recovery.
- Cons: The supported mapper set covers 84.34% of official NES games, so some titles are outside its stated compatibility.
- Cons: GUI menu options still need to be added, limiting its appeal to players who want a finished graphical interface.
- Cons: Source builds require OpenGL development libraries, an extra dependency for anyone compiling it themselves.
Alternatives
Compare NES emulators if you want to weigh more options. NESER is another free choice for Linux, macOS, web, and Windows. Nestalgia is free for Linux, macOS, and Windows. binjnes is free for Linux, macOS, and web, with web and build-from-source versions. FCEUX may suit readers seeking emulation for NES, Famicom, Famicom Disk System, and Dendy, with Win32 and Qt/SDL ports. HalfNES is free for Linux, macOS, and Windows, but has no save states and requires Java 8 or newer. JSNES is a free open-source JavaScript NES emulator library for Linux and web. Nestopia Undead Edition is a free, open-source option for Linux, macOS, and Windows. NET-NES is free MIT-licensed software for Linux, macOS, and Windows.
Verdict
Choose GoNES if you want a free NES emulator with browser access, configurable two-player keyboard controls, and save-state bindings, and your games fit its supported mapper set. Its main reasons to look elsewhere are the uncovered portion of the official library and the still-incomplete GUI menus.
Verdict
GoNES offers desktop and browser NES emulation, configurable controls, and save-state bindings. Its listed mapper coverage and unfinished GUI menu options are worth considering.
Questions
Is GoNES free?
Yes. GoNES is listed as free and open source under the Apache-2.0 license.
Which platforms does GoNES support?
It supports Windows, macOS, Linux, and web browsers. The browser version runs through WebAssembly.
How do I load a game?
At startup, GoNES opens a file picker for a .nes file. You can also launch it from a terminal with a ROM file argument.
Can I use a controller or change the controls?
The project documents configurable keyboard bindings for Player 1 and Player 2.
Does GoNES support save states?
Yes. The documented bindings include save state, load state, and undo save/load state.
Who makes GoNES?
The project identifies Gabe Cook, based in Oklahoma City, Oklahoma, USA, as its maker.
Facts from GoNES's own pages
- Browser play
- GoNES supports emulation in a web browser by compiling to WASM, and the README links to a hosted instance. · github.com, 4 Oct 2026
- Browser version
- The emulator can run in a web browser by compiling to WebAssembly, and the README links to a hosted instance. · github.com, 8 Oct 2026
- Build requirement
- Building from source requires Go and OpenGL development libraries for the Ebiten rendering library. · github.com, 8 Oct 2026
- 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. · github.com, 8 Oct 2026
- Configuration
- GoNES generates a configuration file on first run, with documented locations for Windows, macOS, and Linux. · github.com, 8 Oct 2026
- Controller input
- The README documents default key bindings for two players, and says keys are configurable. · github.com, 8 Oct 2026
- Controls
- The README lists configurable keyboard controls, including Player 1 and Player 2 bindings. · github.com, 4 Oct 2026
- Development status
- The README says the GUI renders but menu options still need to be added. · github.com, 8 Oct 2026
- Downloads
- The README says automated builds are uploaded during releases and links to release download files. · github.com, 4 Oct 2026
- Emulation coverage
- The README lists mappers 0, 1, 2, 3, 4, 7, 69, and 71 as supported, covering 84.34% of official NES games. · github.com, 8 Oct 2026
- Installation
- The README documents installation through Homebrew on macOS, release binaries, the browser version, and Go source installation. · github.com, 8 Oct 2026
- License
- The repository identifies its license as Apache-2.0. · github.com, 8 Oct 2026
- macOS installation
- The README documents installation through Homebrew with `brew install gabe565/tap/gones --no-quarantine`. · github.com, 4 Oct 2026
- Maker
- The GitHub profile identifies Gabe Cook as the project maker and lists Oklahoma City, Oklahoma, USA as his location. · github.com, 4 Oct 2026
- 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. · github.com, 4 Oct 2026
- Purpose
- GoNES is an NES emulator written in Go. · github.com, 8 Oct 2026
- 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. · github.com, 8 Oct 2026
- 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. · github.com, 8 Oct 2026
- Save states
- The README lists keyboard shortcuts for saving, loading, and undoing save states. · github.com, 8 Oct 2026
- Security
- The repository page shows a Security and quality section with 0 items. · github.com, 8 Oct 2026
- Source installation
- The README documents source installation with Go using `go install gabe565.com/gones@latest`. · github.com, 4 Oct 2026
- Terminal use
- GoNES can be launched from a terminal with a ROM file argument. · github.com, 4 Oct 2026
Where GoNES stands on Freedom251
- NES Emulators#2 of 26