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.
A few fixes and improvements before the new year:
- Add PPU Debugger option to rearrange pattern table tiles for 8x16 sprites
- Fix PPU Debugger to correctly flip Sprite tiles
- Update MMC5 to support CHR RAM, allowing it to run various ROM hacks which use it that way
The debugger now permits setting breakpoints at the beginning of any scanline. The pre-render scanline is specified as -1 (as the Debugger normally displays it), but you can also specify scanline 261 for NTSC or 311 for PAL and it will translate it accordingly.
Partial NES 2.0 support has been added to iNES mapper #4, allowing it to emulate the MMC6 when submapper 1 is specified.
When I did the "infrastructure update" to the mapper DLLs two months ago, it turns out I introduced a typo in UNIF support which caused all "HVC-*", "UNL-*", and "BTL-*" boards to incorrectly load as "NES-AMROM". This has now been fixed.
Namcot 163 mapper emulation (mappers 19 and 210) has gotten a significant overhaul - NES 2.0 submappers are now respected, and a few bugs were fixed too. Sound support has also been rewritten from scratch to more closely match the actual hardware, at the expense of making a few games (correctly) sound a bit worse.
Mapper 218 (a "single-chip" cartridge containing only PRG ROM and using the nametable RAM to hold graphical tiles) is now supported.
I've also added project files for Microsoft Visual C++ 2015 (better late than never), and in the process I discovered that a few obscure multicart mappers were broken due to name conflicts between global variables and function parameters (for which Visual C++ 2010 did not emit warnings).
Also, I hear that copyright years are a thing that you actually need to update, so there's that too.
Today's build fixes a small bug in the mapper interface which would have prevented the debugger from working when using Game Genie codes.
It also features an infrastructure update to the mapper DLLs which will simplify the process of adding new mappers.
The main result of this is that I'll be able to easily add support for mapper numbers greater than 255, and the only downside is that iNES mapper loading is now slightly less efficient.
NES 2.0 header support has been improved in the following ways:
- Extremely large ROM sizes (using the exponent-multiplier form) are now recognized. Since the maximum permitted ROM sizes are defined at compile time, the only real benefit is that it'll be able to generate more meaningful error messages.
- ROM images flagged to prefer Hybrid "Dendy" timing will now automatically switch to that mode.
- ROM images which require unsupported Extended Console Types (i.e. any of them) will now display appropriate error messages and refuse to load.
- ROM images which require special Vs. System hardware (beyond a special PPU) will log a warning to report that they might not work correctly.
Here you may download various versions of Nintendulator and other related applications.
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!
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.
These are old releases of Nintendulator, archived here for historical purposes.
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.