Giter Club home page Giter Club logo

gones's Introduction

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 github.com/gabe565/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

gones's People

Contributors

dependabot[bot] avatar gabe565 avatar gabe565-renovate[bot] avatar gones-bot[bot] avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gones's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

Renovate tried to run on this repository, but found these problems.

  • WARN: Update versions are not valid

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
hack/builder.Dockerfile
  • golang 1.22.3
git-submodules
.gitmodules
  • internal/console/nes-test-roms master@95d8f621ae55cee0d09b91519a8989ae0e64753b
github-actions
.github/workflows/build.yml
  • actions/checkout v4
  • actions/setup-go v5
  • awalsh128/cache-apt-pkgs-action v1
  • golangci/golangci-lint-action v6
  • actions/checkout v4
  • actions/setup-go v5
  • awalsh128/cache-apt-pkgs-action v1
  • actions/checkout v4
  • actions/setup-go v5
  • actions/upload-artifact v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • actions/upload-artifact v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • awalsh128/cache-apt-pkgs-action v1
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • docker/setup-qemu-action v3
  • docker/setup-buildx-action v3
  • docker/build-push-action v6
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • actions/setup-node v4
  • actions/upload-pages-artifact v3
  • actions/deploy-pages v4
  • actions/checkout v4
  • actions/download-artifact v4
  • gabe565/changelog-generator v1
  • softprops/action-gh-release v2
  • actions/create-github-app-token v1
  • actions/checkout v4
  • actions/download-artifact v4
  • stefanzweifel/git-auto-commit-action v5
  • ubuntu 24.04
  • ubuntu 24.04
  • ubuntu 24.04
  • macos 14
  • ubuntu 24.04
  • ubuntu 24.04
  • ubuntu 24.04
  • ubuntu 24.04
  • ubuntu 24.04
  • ubuntu 24.04
.github/workflows/codeql.yml
  • actions/checkout v4
  • github/codeql-action v3
  • actions/setup-go v5
  • github/codeql-action v3
  • github/codeql-action v3
  • ubuntu 24.04
.github/workflows/update-nointro-database.yaml
  • actions/create-github-app-token v1
  • actions/checkout v4
  • actions/setup-go v5
  • peter-evans/create-pull-request v6
  • peter-evans/enable-pull-request-automerge v3
  • ubuntu 24.04
gomod
go.mod
  • go 1.22.3
  • github.com/Masterminds/sprig/v3 v3.2.3
  • github.com/PuerkitoBio/goquery v1.9.2
  • github.com/fatih/color v1.16.0
  • github.com/hajimehoshi/ebiten/v2 v2.7.3
  • github.com/knadh/koanf/providers/posflag v0.1.0
  • github.com/knadh/koanf/providers/rawbytes v0.1.0
  • github.com/knadh/koanf/providers/structs v0.1.0
  • github.com/knadh/koanf/v2 v2.1.1
  • github.com/ncruces/zenity v0.10.12
  • github.com/pelletier/go-toml/v2 v2.2.2
  • github.com/rs/zerolog v1.32.0
  • github.com/spf13/cobra v1.8.0
  • github.com/spf13/pflag v1.0.5
  • github.com/stretchr/testify v1.9.0
  • github.com/vmihailenco/msgpack/v5 v5.4.1
  • gopkg.in/yaml.v3 v3.0.1
npm
web/package.json
  • @iconify-json/material-symbols 1.x
  • @iconify-json/simple-icons 1.x
  • @types/golang-wasm-exec 1.15.2
  • @vitejs/plugin-vue 5.0.4
  • autoprefixer 10.4.19
  • postcss 8.4.38
  • sass 1.77.1
  • tailwindcss 3.4.3
  • unplugin-icons 0.19.0
  • vite 5.2.11
  • vite-plugin-pwa 0.20.0
  • vue 3.4.27
  • @eslint/js 9.2.0
  • @rushstack/eslint-patch 1.10.2
  • @vue/eslint-config-prettier 9.0.0
  • eslint 9.2.0
  • eslint-config-prettier 9.1.0
  • eslint-plugin-prettier 5.1.3
  • eslint-plugin-vue 9.26.0
  • globals 15.2.0
  • prettier 3.2.5
nvm
web/.nvmrc
  • node 20
pre-commit
.pre-commit-config.yaml
  • TekWizely/pre-commit-golang v1.0.0-rc.1
  • pre-commit/mirrors-eslint v9.2.0

  • Check this box to trigger a request for Renovate to run again on this repository

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
builder.Dockerfile
  • golang 1.21
git-submodules
.gitmodules
  • internal/console/nes-test-roms master@95d8f621ae55cee0d09b91519a8989ae0e64753b
github-actions
.github/workflows/build.yml
  • actions/checkout v4
  • actions/setup-go v5
  • golangci/golangci-lint-action v3
  • actions/checkout v4
  • actions/setup-go v5
  • codecov/codecov-action v3
  • actions/checkout v4
  • actions/setup-go v5
  • actions/cache v3
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • actions/cache v3
  • docker/setup-qemu-action v3
  • docker/setup-buildx-action v3
  • docker/build-push-action v5
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-go v5
  • actions/cache v3
  • actions/setup-node v4
  • actions/upload-pages-artifact v3
  • actions/deploy-pages v4
.github/workflows/codeql.yml
  • actions/checkout v4
  • github/codeql-action v3
  • actions/setup-go v5
  • github/codeql-action v3
  • github/codeql-action v3
.github/workflows/update-nointro-database.yaml
  • actions/checkout v4
  • actions/setup-go v5
  • peter-evans/create-pull-request v5
  • peter-evans/enable-pull-request-automerge v3
gomod
go.mod
  • go 1.21.6
  • github.com/PuerkitoBio/goquery v1.8.1
  • github.com/hajimehoshi/ebiten/v2 v2.6.3
  • github.com/knadh/koanf/parsers/yaml v0.1.0
  • github.com/knadh/koanf/providers/confmap v0.1.0
  • github.com/knadh/koanf/providers/posflag v0.1.0
  • github.com/knadh/koanf/providers/rawbytes v0.1.0
  • github.com/knadh/koanf/v2 v2.0.1
  • github.com/ncruces/zenity v0.10.10
  • github.com/sirupsen/logrus v1.9.3
  • github.com/spf13/cobra v1.8.0
  • github.com/stretchr/testify v1.8.4
npm
web/package.json
  • @iconify-json/material-symbols 1.x
  • @iconify-json/simple-icons 1.x
  • @vitejs/plugin-vue 5.0.3
  • autoprefixer 10.4.16
  • postcss 8.4.33
  • sass 1.69.7
  • tailwindcss 3.4.1
  • unplugin-icons 0.18.2
  • vite 5.0.11
  • vite-plugin-pwa 0.17.4
  • vue 3.4.13
  • @rushstack/eslint-patch 1.6.1
  • @vue/eslint-config-prettier 9.0.0
  • eslint 8.56.0
  • eslint-plugin-prettier 5.1.3
  • eslint-plugin-vue 9.20.1
  • prettier 3.2.2
nvm
web/.nvmrc
  • node 20
pre-commit
.pre-commit-config.yaml
  • TekWizely/pre-commit-golang v1.0.0-rc.1
  • pre-commit/mirrors-eslint v8.56.0

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.