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, and while it's not 100% perfect, it does emulate a variety of special cases that 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), authentic 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, or look on the NESdev Discord server (link available from the Wiki) or in the #nesdev IRC channel on EFnet.

News

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

December 31, 2010

Bandai EEPROM data storage is now emulated, both for mappers 16 (256-byte) and 159 (128-byte).

December 30, 2010

Not surprisingly, some of the newly added mappers didn't work quite the way they were supposed to, so they should now be mostly fixed. A few other existing mappers have also been fixed.

December 29, 2010

Today's build adds 21 new iNES mappers and improves at least 7 others.

December 19, 2010

Today's build includes a minor fix for iNES mapper 116 (specifically dealing with savestates) and a whole bunch of minor code cleanup.

December 10, 2010

Attempting to start or stop AVI recording while emulation is active should no longer crash the emulator - instead, it should pause emulation temporarily.

November 26, 2010

Today's build bumps the mapper interface version up to 3.8 in order to fix a few long-standing quirks in some of its data types:

Additionally, another 20 UNIF boards have been added, and the "Mappers Supported" section at the bottom of the page is now dynamically generated.

October 29, 2010

In order to improve usability (and likely improve compliance with any existing standards for program data storage on Windows), Nintendulator's savestates, SRAM files, and debug dumps are now stored within the current user's "My Documents" folder rather than within their roaming "Application Data" folder. The first time you run this build, all relevant files will be migrated to the new location and the old directories will be deleted.

Additionally, the build configurations have been tweaked such that the ANSI version of Nintendulator can now be run properly on Windows 98 again (and possibly even Windows 95), for those inclined to do such a thing; it had apparently stopped working when I first changed it to store save data within the Application Data folder, appropriately enough.

October 16, 2010

The aforementioned alternate keyboard layout is now labeled as the "Subor Keyboard" for the Chinese famiclone from which it originates, and several of its key bindings have been fixed in the process.

October 14, 2010

The Family Basic Keyboard controller (as well as the alternate layout used by several Chinese and Russian games) now supports movie recording and playback. However, due to the way they accept input (and block all other keyboard input), it is not possible to use them with the Frame Advance feature while recording movies.

October 13, 2010

Today's build primarily fixes several input bugs. Firstly, input is no longer monitored when the main window is inactive (as it was intended to be) - previously, it would only behave this way until emulation was stopped and restarted. As a side effect, any currently pressed keys will no longer be registered across a reset. Secondly, joystick controllers will no longer register as being pointed to the top-left when they are unavailable due to the main window being inactive.

September 26, 2010

By request, iNES Mapper #40 can now be used with CHR RAM instead of CHR ROM (for use with porting FDS games, for example).

September 19, 2010

A user-reported crash bug (specifically a divide by zero when minimizing the main window while the Zapper controller is selected) has been fixed.

July 17, 2010

With a small tweak to the NSF player BIOS, switching between tunes without pressing "Stop" first should no longer result in a burst of white noise.

July 11, 2010

Not much new today - just a few timing tweaks to satisfy a few more of Blargg's test ROMs.

July 5, 2010

While in prior versions of Nintendulator, PPU debug information (pattern table, nametable, and palette views) was only updated once per frame, the improved debugger (introduced June 29, 2008) had been made to update such information immediately, resulting in considerable slowdowns; today's build restores the original behavior, as well as incorporating various other bits of code cleanup.

June 22, 2010

Today's build includes brand new logic for DPCM sample fetching - under some circumstances, the old code could skip samples (and get thrown into an infinite loop if there was only 1 sample).

Also, a rather glaring bug (introduced during the C to C++ upgrade back from March 19, 2009) was reported in the Winamp plugin which prevented it from working at all. This has been fixed, and the release file and sources for 0.970 have been reuploaded. In the process of fixing this, I've also updated all of the Winamp plugin structures to match the latest SDK and have added Unicode build targets (and downloads below).

June 14, 2010

Today's build fixes a few minor APU emulation accuracy issues, as well as solving a potential crash when opening files via drag-and-drop from another application (most notably from ZIP files).

June 12, 2010

MMC3 (iNES mapper 4) and MMC6 (UNIF-only) emulation has been updated to be more consistent with newly discovered behavior.

June 10, 2010

Some rather interesting behavior was recently discovered involving accessing $2007 during rendering. Nintendulator should now properly emulate this behavior, fixing several significant display glitches in the game "The Young Indiana Jones Chronicles".

June 1, 2010

Today's build fixes a minor PPU bug regarding sprites - specifically, the SPR-RAM address register ($2003) is no longer reset at the beginning of each frame.

January 18, 2010

A discussion regarding $2004 read behavior (and inconsistent emulation thereof) revealed a few minor bugs in my own implementation; these should now be fixed.

January 9, 2010

As predicted, the process of converting the mapper DLL code from C to C++ introduced at least one bug, causing Namco 106 (iNES mapper 19) sound to break. The latest build includes mapper DLLs which fix this problem.

January 4, 2010

With rather inconvenient timing, information regarding the inner workings of MMC5 PCM sound were posted yesterday, 1 day after the release of Nintendulator 0.970. Support for this feature (though it is not known to be used by any games) has been added.

Additionally, limited support for NES 2.0 format ROM images has finally been added - for now, this consists solely of handling images with more than 4MB of PRG ROM and 2MB or more CHR ROM.

January 2, 2010

An even better way to welcome the new year would be to release a new version of Nintendulator. Thus, it has been done.

January 1, 2010

What better way to welcome the new year than with a simple cosmetic bugfix?
The FPS counter in the titlebar should no longer display negative numbers when the framerate drops too low.

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!