Skip to content

gabe565/gones

Folders and files

NameName
Last commit message
Last commit date
Feb 11, 2025
Jan 29, 2025
Aug 13, 2024
Feb 17, 2025
Jan 28, 2025
Feb 11, 2025
Feb 17, 2025
Jan 28, 2025
Feb 18, 2025
Aug 29, 2023
Feb 25, 2024
Aug 25, 2024
Feb 17, 2025
Dec 22, 2024
Jun 18, 2024
Oct 14, 2024
Jan 30, 2025
Feb 17, 2025
Feb 17, 2025
Feb 17, 2025
Aug 13, 2024

Repository files navigation

GoNES

GitHub release (latest by date) Build Go Report Card Quality Gate Status

An NES emulator written in Go.

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)
    • Config file
    • Config UI
  • Cheats

References