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

February 20, 2024

Today's build attempts to fix a hang that can happen when rapidly single-stepping through code with the debugger open, particularly when large numbers of PPU updates are taking place (e.g. with the MMC5's graphics extensions). Additional performance optimizations have also been made to the PPU debugger.

January 7, 2024

The NTSC palette generator has been updated with properly measured voltage levels. Normal colors are largely unchanged, but color emphasis is somewhat lighter than before.

June 2, 2023

Basic support for iNES Mapper 30 (UNROM 512) has been added; note that this does not include the ability to overwrite Flash ROM contents. Additionally, all mappers which emulate Bus Conflicts now do so in a deterministic manner.

January 29, 2023

Today's build fixes a bug in Wine 6.0 and later with certain window managers, where the main window shrinks to minimum size and jumps to the upper-left corner of the screen on program startup (as well as when the size multiplier is changed).

Not coincidentally, this is also the first build of Nintendulator produced within Wine (using Visual C++ 2010).

January 11, 2023

An error in the Debugger has been corrected so that accesses to the Stack now properly trigger memory read/write breakpoints.

August 23, 2022

The NTSC palette generator has undergone a significant improvement and simplification - the standard palette should be mostly unchanged, but color emphasis should be much more accurate now.

July 18, 2022

Prompted by an online discussion about optimization, I made a minor optimization to the PPU's FrameSkip rendering code and a major optimization to the APU code when sound is disabled, allowing "fast-forward" to run much more quickly than before.

February 25, 2022

Today's build features numerous accuracy fixes centered around the APU and DMA, fixing a handful of failing test programs.

January 5, 2022

The first build for the new year adds support for an extremely obscure feature recently discovered in one revision of the Nintendo MMC1 mapper, along with a UNIF mapper fix for MMC3 boards that could be reconfigured for hardwired mirroring.

December 18, 2021

A few fixes and improvements before the new year:

June 9, 2021

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.

May 28, 2021

Partial NES 2.0 support has been added to iNES mapper #4, allowing it to emulate the MMC6 when submapper 1 is specified.

May 24, 2021

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.

May 19, 2021

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.

March 27, 2021

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.

March 22, 2021

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.

January 6, 2021

NES 2.0 header support has been improved in the following ways:

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.

April 15, 2020

A fair amount of cleanup has been done to the Controllers code - hopefully no bugs were introducd in the process (aside from a crash-on-exit bug I caught prior to commit).

April 6, 2020

Frameskip settings will now be ignored during AVI capture (as well as whenever a Zapper is plugged in, as was already the case). Additionally, stopping the AVI capture (and/or unplugging the Zapper) will restore your previously configured Frameskip settings.

April 1, 2020

When the PPU debugger is enabled and you hover over a Sprite (or right-click one to pin it), its location will now be highlighted within the Nametable view.

April 28, 2019

Nintendulator's source code has been migrated to GitHub (emulator and mappers).

January 2, 2019

As is bound to happen when I decide to make an unplanned release (in response to the last release having been nine years ago), I managed to introduce a rather unfortunate bug in a last-minute change - all savestates made with the Arkanoid paddle connected to the Famicom Expansion Port would be corrupted. The release has been updated to incorporate a fix for this.

January 1, 2019

Just barely in time for the new year, I've decided to finally release version 0.980 of Nintendulator.

December 23, 2018

The debugger now counts CPU cycles elapsed since the last hard reset, starting at 7 due to RESET interrupt handling.

The CPU trace log format has also been updated to include this information, as well as reformat the old scanline/cycle status to be more meaningful.

June 21, 2017

The debugger now has its own dedicated I/O handlers for safely reading CPU and PPU memory without triggering side effects. Debugging NSFs should now be far easier.

June 14, 2017

Several issues in MMC5 sound emulation have been fixed, notably correcting a hang in at least one Koei title.

Some minor tweaks have also been made to the various Konami VRC mappers.

May 27, 2017

Performing a reset or savestate save/load while emulation is active will no longer interrupt audio playback or controller input.

September 21, 2016

The Arkanoid Paddle and SNES Mouse controllers can now be configured to use custom axes instead of always using the mouse - most notably, it's possible to play Arkanoid II in VS mode using two paddle controllers bound to different axes.

June 1, 2016

A few adjustments have been made to CPU DMA emulation (for sprite transfers and sound sample fetches), as well as a small tweak to Controller configuration to get it to work in Wine.

March 20, 2016

Controller configuration should now be able to tolerate Windows enumerating devices in a different order (e.g. if you unplug a USB gamepad you weren't using).

May 9, 2015

A truly ancient bug related to POV hat configuration and usage has finally been fixed - now, the axis/discrete toggle only affects configuration, and both modes will actually work during gameplay.

The checkbox in Controller Configuration has also been reversed, so that Axis mode (which tends to be more useful for NES controllers) is used by default.

September 10, 2014

Palette configuration is now specific to the selected region (NTSC, PAL, and Dendy/Hybrid) rather than the CPU/PPU clock divider ratio. Additionally, both PAL and Dendy mode will now swap the Red and Green color emphasis bits as has been observed on actual hardware.

August 10, 2014

A rather annoying bug with POV hat configuration (which I introduced back in February with some "code cleanup") has been fixed, so you can actually use them again.

June 12, 2014

Breakpoints now trigger on "dummy reads" that result from page crosses and indirection.

May 29, 2014

A few fixes to frameskip rendering for today - took me a few tries to get it right, since I was in a hurry to get a working build available.

March 21, 2014

Today's build includes a number of PPU updates to make emulation better match findings from Visual 2C02. The savestate version number has also been updated, so any new saves will be incompatible with older builds.

April 21, 2013

Nintendulator's sprite evaluation logic has been partially rewritten in order to match behavior observed from Visual 2C02 and actual hardware.

March 10, 2012

Some graphics/sound code has been reorganized somewhat in order to avoid needlessly reloading parts of DirectX. In the process, I fixed a bug that caused 64-bit builds (MSVC 2010 only) to crash upon changing video modes.

December 9, 2011

Support for the SNES Mouse controller has been added - try it out with the game "Thwaite".

September 27, 2011

Nintendulator will now only attempt to relocate old save data from the "Saves" folder once, rather than doing so every time the program starts.

September 21, 2011

Apparently, the Oeka Kids tablet controller had the same problem as the Zapper when the pointer was outside the window - this has also been fixed.

September 18, 2011

A few Zapper bugs have been fixed - now it can react correctly to the scanline currently being rendered, and moving the pointer outside the window will properly set it as seeing "nothing".

September 16, 2011

64-bit build targets have been added to the Visual Studio 2010 project files, and they seem to run just fine on Windows 7 64-bit. Actual 64-bit builds will not be made available for download until version 0.980 is released.

September 3, 2011

A rather serious bug in the Game Genie savestate code (would would result in lockups when used with mappers such as MMC3 and MMC5) has been fixed.

August 27, 2011

Mappers 1, 4, 11, 16, 66, 85, and 159 have been updated to support more than 8KB of CHR RAM when used with NES 2.0 ROM images.

August 26, 2011

Nintendulator now respects the NES 2.0 header values for PRG RAM and CHR RAM sizes more closely; their default maximum sizes have been updated from 64KB to 1024KB and 32KB to 256KB, respectively. The logic for setting banks will now obey these limits, so an NES 2.0 ROM which indicates zero PRG/CHR RAM will prevent you from mapping any; consequently, an NES 2.0 ROM with both zero CHR ROM and zero CHR RAM is invalid and will report an error when loaded.

July 10, 2011

Today's build updates some of the inner workings of the APU to more closely match the behavior of the hardware as observed in the Visual 2A03.

March 9, 2011

A very small bug has been fixed in the PPU savestate code - rather than loading the timing mode (NTSC/PAL/Hybrid) from the savestate, it was taking the current mode and jumping to the next one.

Another very small bug has also been fixed in the movie savestate code - if the movie had a non-empty description, loading a savestate for it would corrupt the description and the input data itself.

February 19, 2011

Nintendulator's builtin iNES header editor now disallows setting the NES 2.0 battery-backed PRG/CHR RAM fields to nonzero values if the SRAM flag is cleared. Additionally, all unused fields will be properly zeroed out when saving the header.

February 6, 2011

A rather embarrassing flaw has turned up within Nintendulator's NTSC palette generator, resulting in colors being significantly out of phase. This flaw has now been corrected.

February 3, 2011

Nintendulator's region handling support has been overhauled, and provisional support for the "Dendy" NTSC/PAL hybrid has been added.
Additionally, partial widescreen support has been added to fullscreen mode - based on your primary monitor's current resolution, Nintendulator will try to use one of several appropriate fullscreen resolutions to prevent the image from being stretched horizontally, falling back to 640x480 if none of them work.

January 31, 2011

Four new mappers have been added: 82, 101, 155, and 206. Mapper 184 has been fixed so it actually works, and Mapper 185 has been dropped to "Nearly" compatibility since 2 of its 9 games seemingly don't work.

January 30, 2011

Nintendulator no longer makes use of inline assembly for CPU emulation optimization - in fact, I've managed to further optimize the existing C++ code to make it even faster.

Support has been added for mappers 209-211, all of which are variants of already supported mappers.

January 26, 2011

To anybody who might be curious, I've just confirmed that the latest ANSI build of Nintendulator actually does run on Windows 95 with DirectX 8; however, that does not mean that you should do such a thing. Nintendulator 0.980, whenever it is released, will be the final version to include ANSI builds.

Nintendulator's mapper interface has been updated to make the MapperInfo "Load" callback return a boolean to indicate success, primarily so that the Famicom Disk System mapper can indicate failure if it is unable to load DISKSYS.ROM. The mapper interface version is not being updated with this change, as it has already been updated once in version 0.975 (back on November 26, 2010).

January 25, 2011

Nintendulator's builtin .NES header editor has been updated with proper NES 2.0 support, largely imported from a standalone header editor I wrote back in 2006.

January 21, 2011

Joysticks and gamepads should work correctly again - when adding support for Microsoft Visual Studio 2010, the input code had been updated to use DirectInput 8.0 without actually verifying that everything still worked properly.

January 18, 2011

As it turns out, my code changes from October 29, 2010 violated relevant guidelines - the appropriate place to store data is indeed within Application Data. This change has thus been reverted, and any data in My Documents will automatically be moved back to Application Data when Nintendulator is opened.
In order to properly accomodate for the difficulty of actually locating the savestate folder, a new menu option "Browse Save Files" has been added to the File menu which will open an Explorer window to the appropriate path; similarly, if any files could not be migrated to the Application Data folder, Explorer will browse to the old location to simplify cleanup.

January 16, 2011

Project files for Microsoft Visual Studio 2010 have been added, and several code changes have been made to ensure that everything still compiles, including changing the build paths once again.
Unlike the existing project files for Visual Studio 2003, these produce only Unicode binaries, as executables produced by Visual Studio 2010 cannot be run on any operating system prior to Windows XP SP3.

Nintendulator's CPU core is now available without inline assembly, and several more invalid opcodes have been implemented.

January 15, 2011

Emulator and mapper project files have been changed to output Unicode build files in their own directory, just as ANSI builds do. Anybody making their own builds of Nintendulator should update their build scripts accordingly.

January 13, 2011

Just some code cleanup and optimization for today, part of which resolves some confusion over the difference between WNDPROC and DLGPROC.

January 9, 2011

The emulator's main window should no longer be positioned off the edge of the screen (unless you use multiple monitors and have them in a non-rectangular arrangement).

January 8, 2011

The 5 special Vs. Unisystem PPUs which swap registers $2000 and $2001 and add a special readback value at $2002 are now supported (provided your ROMs have appropriate NES 2.0 headers), and mapper 99 now works with Vs. Gumshoe.

The "Debug Information" window should no longer flicker and slow down whenever there's a lot of stuff in it; additionally, Nintendulator will now remember whether or not said window was open when you exit and restart, and the corresponding Debug menu option will now act as a toggle.

January 7, 2011

iNES mappers #1 and #5 now support nonstandard battery-backed PRG RAM sizes specified via NES 2.0 header fields.

Additionally, Vs. Unisystem ROMs with NES 2.0 headers (and Playchoice-10 ROMs, NES 2.0 or not) will now automatically load the appropriate palette without altering your configuration.

January 3, 2011

The first build of 2011 boosts almost* all "partially supported" iNES mappers to "nearly supported".
(* - except for #116)

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.

June 13, 2009

Nintendulator's mapper DLL code has been upgraded from C to C++, effectively completing the task from March 19.

Several mapper bugs have been fixed in the process, though it is entirely possible that some other bugs may have been introduced as well, so keep an eye out for problems.

March 21, 2009

The code for handling different controller types (gamepad, Zapper, Power Pad, Four Score, etc.) has been rewritten to take advantage of C++ language features. Initial tests suggest it is working properly, though there may yet be bugs lurking within it.

The savestate format has also been updated - it would seem that controller state data was never being stored correctly, and the actual controller state block was missing some important data.

March 19, 2009

Nintendulator's code has been upgraded from C to C++ in order to make use of namespaces for a much needed improvement in maintainability.

No actual functionality should have changed as a result of this.

March 16, 2009

Fixed a rather glaring bug (pointed out by a user) which caused read/write breakpoints to not trigger on unindexed accesses (e.g. LDA $2002 or STA $4015).

March 15, 2009

The aforementioned "Detail" section has been implemented - simply hover the cursor over a nametable tile, sprite, pattern table tile, or palette entry, and it will be displayed magnified and with appropriate details. Right-clicking on an object will cause its details to remain displayed when you move the mouse over an empty area.

March 14, 2009

The PPU Debugger now displays sprites, arranged in a 16 by 4 grid.

A "Detail" section has also been added - while it currently does nothing, it will eventually be made to display details about whatever the mouse cursor is currently pointing at (in similar fashion to rveach's modified Nintendulator debugger).

March 12, 2009

Some minor fixes to the Debugger - pressing the various "Controls" buttons will no longer result in a crash when no ROM is loaded.

February 28, 2009

A few bugs in Nintendulator's NSF player (and the Winamp plugin) have been fixed.

January 16, 2009

Various dialogs within the emulator (particularly the debugger and the NSF player controller) should now properly respond to keyboard input.

December 28, 2008

Nintendulator now stores its savestates, SRAM/FDS data, and debug dumps within the current user account's Application Data folder instead of the "Saves" subdirectory of its installation folder. The first time you run this build, there will be a short delay as your savestates are moved to this new location.

This should improve compatibility with Windows Vista and allow Nintendulator to be installed within the Program Files folder without needing to run as an Administrator.

December 20, 2008

Breakpoints can now be toggled on and off simply by double-clicking on them in the Breakpoint list.

November 8, 2008

No code changes, but the mapper DLLs are now licensed under the BSD license and their sources are now available on SourceForge.

September 28, 2008

Fixed a minor typo which prevented breakpoints from being listed properly when closing and reopening the CPU debugger window.

September 6, 2008

Adding execution breakpoints has just gotten a whole lot easier - just double-click an instruction in the Trace listing and it'll open the Add Breakpoint dialog with the address filled in for you.

September 5, 2008

Today's build adds some minor tweaks to PPU and APU timing to match certain behaviors observed on the real hardware.

Those of you familiar with Blargg's emulator test ROMs will now observe that it passes nearly all of them (aside from power-on palette and MMC3A/MMC3B behavior).

September 4, 2008

Today's build adds dialog boxes for recording movies (to allow users to specify a description for the movie, as well as configure controllers more easily) as well as playing them back.

September 3, 2008

Fixed a rather glaring bug with sprite overflow.

September 2, 2008

This build adds a few special changes. To start off, the debugger menu options now actually make sense, having been updated to match the debugger changes I made over the past months, and the debugger windows now automatically position themselves when they open.

Additionally, I've made some changes to APU DMA fetches - as a result, they should now (correctly) interfere with reading from the controller ports and video memory.

Last, but not least, I've enabled Nintendulator's experimental cycle-accurate sprite emulation code (and fixed a few bugs in the process). This code has been present for quite a long time, but I had neglected to enable it in fear of breaking emulation (though not enabling it sort of prevents it from being tested, rather defeating the purpose). Hopefully, with more people (i.e. almost everybody, excluding those who compiled it themselves) messing around with it, any remaining bugs will be eliminated and the old sprite code can permanently go away.

Note that this increases the minimum system requirements significantly, though a modern system (less than 3-4 years old) should still be able to handle it fine.

August 26, 2008

Cleaned up and reorganized some of the build files to speed up compilation - no actual code changes in today's snapshot.

August 17, 2008

As promised, opcode and interrupt breakpoints have been implemented.

August 3, 2008

Support for execution breakpoints has been readded, along with brand new support for memory read/write breakpoints. Opcode breakpoints (i.e. break when a specific opcode is encountered) and interrupt breakpoints (NMI and IRQ, as well as BRK, which is logically equivalent to opcode 00) are planned - they will be implemented at a later date.

Note that this new breakpoint support has not been fully tested - if you encounter any problems, please contact me via e-mail (address here).

June 29, 2008

After being left untouched for months, I've updated Nintendulator's debugger. Window positioning isn't yet done intelligently, but the new debugger should be a significant improvement over the old one.

Note that this build currently does not support breakpoints - they will be readded in a future build, potentially with additional options.

January 6, 2008

It seems that nVidia GeForce 8 series video chipsets do some strange things at 320x240 (such as stretching the image and heavily filtering it), so fullscreen now uses 640x480 instead.

The introduction of software 2X stretching for this fix also greatly simplified the process of implementing a Scanlines option, intended for Windowed 2X and Fullscreen modes.

December 31, 2007

2007 was an "off" year - after leaving the NESdev community, it was a long time before I did anything with Nintendulator.

July 9, 2006

Fullscreen emulation is mostly complete now - the only thing that remains to be added is preservation of window size and position prior to switching to fullscreen.

June 20, 2006

The RP2C04-0004 palette has been extracted, thus completing the VS Unisystem palette set in Nintendulator.

May 31, 2006

Kevin Horton has extracted accurate palettes from the RP2C04-0002 and RP2C04-0003, allowing me to add 100% accurate palettes for VS (2) and VS (3). All that remains now is the 4th VS palette.

February 14, 2006

The remaining VS Unisystem palettes have been filled with placeholders containing most of the correct colors (based on translation tables found in several games which feature support for all 4 VS palettes as well as the standard NES palette). However, some VS games may still have color problems.

In addition, I have reordered the palette configuration values slightly - as such, the values for "Custom palette" and "VS (1)" have been swapped.

The PAL palette now features a Saturation adjustment, though it currently does nothing (as the PAL palette is still hardcoded).

February 9, 2006

Nintendulator's NTSC palette generator has been updated with more accurate values, as well as a few bug fixes. Hue adjustment now ranges from -30 to +30, rather than from 300 to 360 (settings will be automatically adjusted on program startup), and Saturation is now properly set for each color.

February 6, 2006

A minor fix has been applied to the NSF player's BIOS, allowing it to properly handle NSFs whose init routines loop forever.

January 22, 2006

Today's beta introduces preliminary Fullscreen support. Further work is required, though, in order to prevent Mouse clicks (from Zapper input, for example) from causing the main application window to lose focus.

POV hat support has also been improved, allowing them to be used in two different ways. The standard mapping (which was supported first) is to treat each POV hat as up to 8 mutually exclusive buttons. An additional mapping has now been added to treat them as a pair of axes (technically as 4 overlapping buttons) to make them usable for controller D-pads.

A new option has been added to the Input Configuration dialog to allow using this new mapping. The option is not preserved, so it needs to be re-checked each time you reconfigure your controllers, but it only applies to the configuration process - it is possible to use both POV hat mappings simultaneously, but they need to be configured separately.

January 19, 2006

The first 0.965 beta build is now available, featuring an overhauled DirectInput interface, including proper axis/button names as well as POV hat support.

January 11, 2006

Nintendulator 0.960 is now officially released.

January 7, 2006

After performing numerous tests with my CopyNES and TV tuner card, I've derived much more accurate coefficients for the PPU's Colour Emphasis bits.

November 24, 2005

A few major bugs (dealing with recording movies from savestates) have been fixed, and a few new mappers have been added.

After some consideration, I realized that there's no point in including separate downloads for the beta mapper DLLs when the beta emulator binaries always include them.

November 19, 2005

Partial VS Unisystem support has been readded to Nintendulator, in the form of a new mapper DLL - VS.DLL. Mappers 99 and 151 have been removed from iNES.DLL as a result.

Automatic VS palette detection will likely not be implemented, and it'll be a while before the VS palettes are added.

June 30, 2005

Nintendulator has been modified to support Unicode; separate downloads are now available for ANSI (Windows 9x/ME) and Unicode (Windows NT/2K/XP) binaries.

March 14, 2005

After trying for perfection for too long (and never reaching it), I've decided to formally release Nintendulator 0.950.

December 11, 2004

In an attempt to get rid of annoying bugs which caused movies to desynchronize, Nintendulator is now multithreaded. This means that opening menus and moving windows around will no longer cause emulation to pause. Best of all, the change was successful in fixing the aforementioned movie bugs!

November 2, 2004

Just posting an update on Nintendulator 0.950 development.

Frameskipping code has been vastly improved, and audio data is properly saved in savestates now. Also, slowdown and frame-advance options have been added, allowing users to record movies with extreme precision. Unless some major bugs or feature requests come up, I should be ready to officially release soon.

September 12, 2004

Development on Nintendulator 0.950 has been progressing nicely. Among the many new features added are movie recording/playback (with savestate support), an iNES header editor, AVI capturing, and more.

April 1, 2004

Nintendulator now has a proper homepage. New material will be added as it is deemed necessary.

The current source and binary snapshots for Nintendulator 0.950 are officially available here.

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!