A small cycle accurate NTSC NES emulator written in C.
Games that use the following mapper chips are supported:
| Mapper name | Mapper number |
| NROM | 0 |
| MMC1 | 1 |
| UxROM | 2 |
| CNROM | 3 |
| MMC3 | 4 |
| AxROM | 7 |
| MMC2 | 9 |
| Color Dreams | 11 |
| Nina + BNROM | 34 |
| Camerica | 71 |
| Nanjing | 163 |
Supports all of the original NES audio channels, which includes square, triangle, noise, and dmc audio channels.
Basic gamepad support for up to two players, currently, button layout is fixed to how it was on the original joypad.
- Install the required dependencies using your system's package manager
-
sudo apt install gcc make libsdl3-dev libsoxr-dev -
sudo dnf install gcc make SDL3-devel soxr-devel -
sudo pacman -S gcc make sdl3 libsoxr
- run
makein the project root directory to create the binary
-
Install the Homebrew package manager
-
Install the required dependencies
brew install gcc make sdl3 libsoxr -
run
makein the project root directory to create the binary
-
Install
MSYS2 -
Launch the UCRT64 environment that MSYS2 created and run the following command inside the terminal to install the required packages:
pacman -S mingw-w64-ucrt-x86_64-gcc make mingw-w64-ucrt-x86_64-sdl3 mingw-w64-ucrt-x86_64-libsoxr p7zip git -
Run the following commannd to download the repo:
git clone https://github.com/purpasmart96/nones.git -
run
makein the project root directory to create the binary
After building you should be able run the program via ./nones "game.nes"
You can also apply additional arguments after specifying the rom path, which include the following:
--sdl-audio-driver="driver-name"
Set the preferred audio driver for SDL to use.
--ppu-warmup
Enable the ppu warm up delay found on the NES-001. (Will break some famicom games)
--apu-swap-duty-cycles
Enable the use of swapped duty cycles for the square/pulse channels (Needed for older famiclone games)
--sample-rate="sample-rate-mode"
Set the audio device sample-rate: 0 = 44100Hz (default), 1 = 48000Hz, 2 = 96000Hz, 3 = 192000Hz
1 -> 5
Set window size integer scale (1x, 2x, 3x ect. 5x max)
Esc
Exit emulator
F1
Enable/Disable CPU debug stats
F2
Soft Reset
F6
Pause/Unpause
F10
Step by one frame and pause
F11
Step by one instruction and pause