Skip to content

gabe565/gones

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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