Install
Homebrew (macOS)
brew install gabe565/tap/gones --no-quarantine
Binary
Automated builds are uploaded during the release process. See the latest release for download links.
Web
GoNES supports emulation in a web browser by compiling to WASM.
A hosted instance is available at gones.gabe565.com.
From Source
Click to expand
Requirements
Rendering uses hajimehoshi/ebiten which requires
OpenGL development libraries to compile.
See ebiten install steps.
Installation
Make sure you have Go and the requirements installed, then run:
go install gabe565.com/gones@latest
Usage
Application
When started, GoNES will open a file picker. Choose the .nes file to start emulation.
Terminal
Click to expand
GoNES also supports being launched from a terminal.
gones ROM_FILE
See docs for the full command line usage documentation.
Configuration
A configuration file will be generated the first time GoNES is run. Depending on your operating system, the file will be available at:
- Windows:
%AppData%\gones\config.toml
- macOS:
~/Library/Application Support/gones/config.toml
- Linux:
~/.config/gones/config.toml
An example configuration is also available at config_example.toml.
Keybinds
Keys are configurable, but the default values are listed below.
Player 1
| Nintendo |
Emulator |
| A |
M |
| B |
N |
| Directions |
WASD |
| Start |
Enter |
| Select |
Right Shift |
| A (Turbo) |
K |
| B (Turbo) |
J |
Player 2
Click to expand
| Nintendo |
Emulator |
| A |
Num Pad 3 |
| B |
Num Pad 2 |
| Directions |
Home/Del/End/PgDn |
| Start |
Num Pad Enter |
| Select |
Num Pad Plus |
| A (Turbo) |
Num Pad 6 |
| B (Turbo) |
Num Pad 5 |
Other
| Action |
Key |
| Save State |
F1 |
| Load State |
F5 |
| Undo Save State |
Shift+F1 |
| Undo Load State |
Shift+F5 |
| Fast Forward |
F (Hold) |
| Reset |
R (Hold) |
| Toggle Fullscreen |
F11 |
| Screenshot |
\ |
Debugging
Click to expand
| Action |
Key |
| Toggle step debugging |
` |
| Toggle stdout trace log (when step debug enabled) |
Tab |
| Step to next frame |
1 |
| Run to next render |
2 |
Milestones
- CPU implementation
- CPU is stable, and
nestest.nes passes.
- Cartridge implementation
- Support for mappers
- Common mappers implemented
- Supported mappers: 0, 1, 2, 3, 4, 7, 69, 71 (84.34% of official NES games)
- PPU implementation (graphics)
- Background rendering
- Sprite rendering
- GUI
- Rendering works, but menu options need to be added.
- Basic controller support
- Player 1
- Player 2
- External controllers
- APU implementation (audio)
- Save file for games with batteries
- Save states
- Configuration (remap controllers, video config, sound config, etc)
- Cheats
References