Nestor is a NES/Famicom emulator written in Go.
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
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
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] |
brew tap arl/arl
brew install nestor
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
- 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
- Other distributions, please refer to:
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
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.
![]() |
---|
Main window / Rom selection |
![]() |
---|
Emulator window with accompanying in-game controls window |
![]() |
---|
Input configuration page |
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!
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/.