Nintendulator
an NES emulator by Quietust
[Skip to Downloads]
[Return to NES Stuff]

About

Nintendulator is an open source Win32 NES emulator written in C++. The original goal was to emulate the NES down to its hardware quirks; though it's fallen behind over the years, recent builds have caught up once again and can emulate certain behaviors most other emulators neglect to handle. However, this emulation precision comes at a price - a 1500MHz (estimated) or faster CPU is required to emulate at full speed.

Supported file formats include .NES, UNIF, FDS (fwNES format), and NSF. Mappers are handled using external DLLs, complete with extra sound channels for most games which provide them. Other notable features include writing to FDS images (by storing the differences in separate files), Game Genie support (limited to 3 codes), customizeable controllers (including 4 player), input movie recording and playback (with re-recording), AVI capturing, and a debugger with simple breakpoint support. Savestates and battery-backed RAM are saved within the current user's Application Data folder, allowing Nintendulator to function properly when not run as an Administrator.

To contact the author, send email to quietust at either @qmtpro.com or @gmail.com - you may also be able to find me in the EFnet IRC channel #nesdev.

News

All - Recent - 2020 - 2019 - 2018 - 2017 - 2016 - 2015 - 2014 - 2013 - 2012 - 2011 - 2010 - 2009 - 2008 - 2007 - 2006 - 2005 - 2004

June 25, 2020

I've adjusted the Reset logic so that it will now reset the CPU last, since its reset logic was also running the PPU and APU for 7 CPU cycles.

I've also made a further revision to the CPU trace log format - to improve readability, the PPU column now displays the scanline number first and the pixel number second, rather than the other way around.

The reference log for "nestest.nes" (which is linked from the NESdev Wiki) has been updated to incorporate both of these changes.

May 20, 2020

Having gotten tired of needing to adjust my system's sound volume every time I want to run an NES program, I've added volume controls to Nintendulator. Each internal sound channel can also be adjusted or muted individually, as well as all of the external sound channels combined (because the mapper interface does not expose each one separately).

I also fixed another bug in mapper 16, where a certain game would try to detect a 256-byte EEPROM, fail, then fall back to using a 128-byte EEPROM.

May 9, 2020

I've made some sweeping changes to all of the Mapper DLLs so that they can more intelligently manage multiple versions of their savestate data. This required updating the mapper interface version number, so any 3rd-party mapper modules will need to be updated.

May 6, 2020

A rather curious bug in the EEPROM logic for mappers 16 and 159 was pointed out to me which resulted in save data being corrupted. This should hopefully no longer happen.

May 1, 2020

I've rewritten most of the AVI recording code to unhook it from the rather old "AVI Utilities" library I was using previously. In the process, I also added a workaround for a bug in Wine that causes recordings to fail when saving the second frame worth of audio.

Downloads

Here you may download various versions of Nintendulator and other related applications.

Latest unstable build

This is a snapshot of my latest development code. Though this has features not present in the current release below, it may also have significant bugs, so download it at your own risk!
This is NOT a release!

Current release

This is the latest officially released version of Nintendulator. You are highly recommended to use this version instead of the latest build above unless you require any of the new functionality added since the last release.

Outdated releases

These are old releases of Nintendulator, archived here for historical purposes.

Mappers Supported

These mappers are supported in the latest released version of Nintendulator. Mappers listed in bold have been added or improved in the latest beta build; for iNES and VS, strike indicates what the compatibility was in the official release, while for UNIF it indicates boards that have been removed.

Valid XHTML 1.0 Valid CSS!