This page serves as a repository for NES-related stuff I have written over the years.
I've heard discussion that neither Nintendulator nor Nestopia support execution of code from the MMC5's 1KB expansion RAM, suggesting that it may be due to optimizations. This is clearly not the case, and to prove it I've hacked my Copper Bars program to run on an MMC5 with part of its code located in ExRAM.
I suspect some confusion may have arisen from the fact that Nintendulator's debugger displays values of $FF within ExRAM even while executing - this is not what the CPU is actually executing, but it is what the debugger shows whenever it is viewing a region of memory it believes to contain I/O registers (which are very likely to result in side effects if they are actually read from).
This ROM image is available for download below.
A bit on the late side, but the NSF below has now been joined by a PCM-enabled rip of Battletoads & Double Dragon. Coincidentally, somebody else had already ripped the NSF in the same manner quite some time ago, so this is largely moot.
Added a new NSF - a rerip of Battletoads which includes the raw PCM drums in the 'Title Screen' and 'Level Complete' tracks.
This NSF may not be supported in all players, though the latest build of Nintendulator plays it properly.
In a discussion over on the NESdev forums, somebody requested a demo which would display a box 200 pixels tall and 144-200 pixels wide (adjustable). Since I was bored at the time, I wrote a demo to do just that - it is available below, simply named "Square".
Made some updates to the 'Color Bars' demo, allowing the user to specify the palette value on each individual color bar as well as simultaneously increment/decrement the palette values of all 8 bars.
Instructions can be found at the top of the source code, included in the download package.
Added a new demo, 'Turbo Checker', which displays how quickly each button on controller #1 is being pressed.
As the source code is included, it can be modified to support either the 2nd controller port or any number of special controllers, though care should be taken to not monitor too many buttons at once, otherwise there won't be enough time to update the screen.
Rewrote my 'Scanline' demo to produce better results.
Also updated my other remaining demos to include UNIF builds as well as iNES.
Made a few changes to my 'Copper Bars' demo and uploaded a new version. Now includes both iNES and UNIF versions.
Added a new demo, 'Color Bars'. Based on Mark Knibbs's "Colour Bars" demo, it can display up to 8 [consecutive] colors on the screen at once.
While its predecessor could only toggle grayscale for the entire screen, this program allows specifying grayscale and/or color emphasis for the bottom half of the screen only while leaving the top half alone, allowing you to observe the effects more easily.
Further fixing of MMC3 IRQs exposed yet another bug in the 007 demo, which I have updated. This one is still named PRG 2, though it contains both an iNES and UNIF build.
Lack of decent iNES/UNIF tools motivated me to write programs to build iNES and UNIF files based on parameters specified in a small textfile. These tools, MakeINES and MakeUNIF, can be found below.
After learning a bit more about MMC3 IRQs, I found that my 007 demo did not work properly - PRG revision 2 is now available. Also updated SMW Stomper with improved timing.
Added Copper Bars demo, which I wrote overnight. Curiously enough, very few emulators display this demo properly!
Created a central page for all of my NES-related stuff.