Skip to content

arl/nestor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nestor - NES emulator

Nestor is a NES/Famicom emulator written in Go.

adventures of rad gravity battletoads tsuppari oozumou
castevania prince of persia contra

Features

All these features are planned, but not all of them are implemented yet.

  • Cycle accurate CPU
  • PPU (Picture Processing Unit)
  • NTSC (USA / Japan)
  • PAL (Europe)
  • Joystick/Joypad support
  • APU (Audio Processing Unit)
  • CRT Shader effects
  • Debugger
  • Save state
  • Frame run-ahead

Implemented mappers

A NES games cartridge is made up of various circuits and hardware, which varies from game to game. The configuraion and capabilities of such cartridges is commonly called their mapper. Mappers are designed to extend the system and bypass its limitations, such as by adding RAM to the cartridge or even extra sound channels.

Name iNES mapper Implemented
NROM 0 [x]
MMC1 1 [x]
UxROM 2 [x]
CNROM 3 [x]
MMC3 4 [ ]
MMC5 10 [ ]
AxROM 7 [x]
GxROM 66 [x]

Installation

MacOS - homebrew

brew tap arl/arl
brew install nestor

MacOS - build from source

Install the dependencies with homebrew:

brew install go gtk+3 sdl2 sdl2_ttf

Clone this repository and build it from source with go1.24+:

go build

Linux - build from source

Install dependencies

  • Debian-based (e.g Ubuntu, Mint)
sudo apt-get update &&
sudo apt-get install \
  gcc \
  pkg-config \
  libsdl2-dev \
  libgtk-3-dev \
  libglib2.0-dev \
  libgdk-pixbuf-2.0-dev \
  libsdl2-image-dev \
  libsdl2-mixer-dev \
  libsdl2-ttf-dev \
  libsdl2-gfx-dev

Build

Requires go1.24+

Then you can close the directory and run go build Or else directly download, build and install nestor in your $PATH with:

go install github.com/arl/nestor@main

Usage

You can either directly run a rom file with:

$ nestor run /path/to/rom.nes

or use the Graphical User Interface (GUI) mode:

$ nestor

Run nestor --help for more information.

UI Screenshots

mainwindow rom selection
Main window / Rom selection
emuwindow gamepanel
Emulator window with accompanying in-game controls window
input config ui
Input configuration page

Thanks

Many thanks to:

  • @genbs for the help on macos x!
  • @tommyblue for the paddle!
  • @rasky for ndsemu codebase!
  • NesDev Wifi for the great documentation and community!

License

Nestor is available under the GPL V3 license. Full text here: http://www.gnu.org/licenses/gpl-3.0.en.html

Copyright (C) 2023-2025 arl

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

About

👾 NES/Famicom emulator

Resources

License

Stars

Watchers

Forks

Packages

No packages published