Emulate the Emulators

How will we play NES/Famicom games 10, 50, 100, or 1000 years from now?

We can imagine a not-so-distant future where all of the playable Nintendo Entertainment Systems are trashed, lost, non-functional, or beyond repair. Sound silly? Think of the early history of recording media. You may have friends who still buy vinyl, own a record player, and hopefully know how to operate said devices. Fortunately, vinyl has had a vibrant underground music culture to support its existence. But what about 8-tracks? Wax cylinders? These media are less than two centuries past but we risk their eventual loss without adequate preservation strategies.

We have to consider a world where videogames as physical objects are no longer sustainable. Cartridges break. CD-ROMs get scratched. RAM degrades. Bits rot away.

Thankfully, emulation provides a means for preservation. Conceptually, emulation is the mimicry of an older (or unrealized) computer platform by a more powerful one. But it’s so much more than copying the behavior of a CPU. For a game console like the NES, emulation has to account for its CPU, Picture Processing Unit, Audio Processing Unit, controllers, light gun, and other peripherals. Not to mention the emulation of display technologies. NES games weren’t meant for crisp LCDs; much recent work has been done on mimicking the peculiar artifacts of tube televisions.

NES emulation has a long history, dating back at least to the mid-1990s. At that point, PCs were finally powerful enough to handle the NES’s dated 6502 processor, running at a meager 1.7 MHz. However, it wasn’t until 1997, when Bloodlust Software released their infamous NESticle emulator that NES emulation really hit the mainstream. It was fast, free, ran a large bulk of NES games, and had a lowbrow sense of humor to boot. Its desktop icon was a pair of hairy balls and the GUI mouse pointer was re-skinned as a bloody dismembered hand with its pointer finger extended. During its brief development lifetime, NESticle’s developers implemented save states, .PCX snapshots (a DOS image format), movie and wave recording, Internet play, palette editing, graphics viewers, and more. Many an NES gamer cut their emulation teeth on NESticle. I remember firing up the emulator my first year of college, marveling at the fact that I could play Tecmo Bowl online with my hallmate two doors down.

I’m currently writing a chapter on emulation for my dissertation/book. As I’ve researched the topic over the past month, I’ve been amazed that no one has written a well-researched history of emulation. There is much work to be done on the topic (and I hope my contribution will spur some interest). But part of the problem is the lack of access to early emulators like NESticle. In 1997, Windows 95 dominated the OS market, while DOS puttered along behind the scenes. We’ve now reached a point of utter irony wherein NESticle itself must be run in emulation.

According to Bloodlust’s own website, NESticle had twelve official releases, starting with v0.20 for DOS/Win95 on April 3, 1997 and concluding with the DOS-only vX.XX on August 18, 1998. The links on Bloodlust’s page no longer work, so I searched around the Nether Realms of Web 1.0–when we all lived in Geocities (I was on Sunset Strip)–and compiled all the versions I could find. I found eleven, though I’m not sure the missing v0.41 was available, as it is greyed out on the Bloodlust site. You can download them all at the bottom of this post.

Why would I do such a thing? Part of the preservation of videogame history will include not only the games and the hardware that played them, but also the emulators themselves. We have to preserve the preservers.

To ensure that each version worked, I fired up the eleven individual .exe files. If you have an old Windows 95 Pentium/486 box sitting around, good for you – they’ll work like a charm. If you’re on a modern PC (I’m on a Mac), getting them to function will be a bit trickier. In my experience, all versions except the final two ran in Windows XP via VMWare. This was passable for the purposes of screen captures, but not ideal – there was a significant flicker that greatly limited playability (and tested my visual sanity). The better option is to emulate DOS. For Mac or Windows, DOSBox is great. For the best Mac solution, I went with a DOSBox frontend, namely Boxer. This puts a shiny graphical interface on that antiquated command prompt. Of course, getting v0.43 and vX.XX to run presented an additional challenge. They used a special DOS extender by the name of dos4gw.exe. Without this file, the final two versions of NESticle won’t launch. I saved you some time and embedded those files in the download folder. You should be able to double-click and go. (If not, Google around – you’ll figure it out).

While I was testing each version of NESticle, I took a screen capture to note some of the visual changes that took place during its sixteen months of rapid development. Interesting stuff. Scroll down to see them all.

NESticle v0.20

The first version was rather spartan. Mapper support was limited, but the save states (single slot), .PCX support, and various graphics viewers were there. Note the ‘About’ box featuring Buddy and the program Bloodlust used to develop NESticle (Microsoft Visual C++ 4.10). The timestamp for the release date is meticulously accurate as well.

NESticle v0.21 (with Contra loaded)

Version 0.21 was released a day after 0.20, so no major visual changes. ROMs can now be selected from a directory instead of having to cram those files in with the executable. Also, the pointer hand is now dripping (animated!) blood from its stump. A much-needed improvement, IMHO.

NESticle v0.30 (with Excitebike loaded)

Version 0.30 came less than a month later. Note the appearance of the ‘Net’ menu header. The ROM browser now displays the iNES mapper number and associated PRG-ROM and CHR-ROM banks, as well as mirroring. In the screen capture, you’ll see that Excitebike is iNES Mapper #0 (aka NROM), using vertical mirroring (for horizontal scrolling), with a 16K PRG-ROM bank (for code) and an 8K CHR-ROM bank (for sprites and backgrounds). The ‘About’ dialogue also has a refreshed date and timestamp. More importantly, Buddy has now been replaced by Shitman, the fecal-lord!

NESticle v0.31 (with Final Fantasy loaded)

No new visual enhancements that I could find, but I was relieved that Shitman was a permanent fixture.

NESticle v0.32 (with Isolated Warrior loaded)

More of the same, though the individual windows now feature Microsoft-style squares and x’s for maximizing or closing purposes. Lengthy filenames also no longer spill off the right edge of the load window. On the emulation front, NESticle is still struggling with games that used fancy scrolling or raster tricks. Note the pixellated garbage where the status bar should be in Isolated Warrior (a game that uses some astounding graphical tricks on the level bosses).

NESticle v0.33 (with Cobra Triangle loaded)

No major visual changes. I loaded Cobra Triangle, another tricky game (code-wise) to show that NESticle still struggled with ROM compatibility. After the opening screen, it hung on a black screen.

NESticle v0.34 (with Donkey Kong 2010 loaded)

Nothing to see here, really. For trivia purposes, I loaded the 2010 version of Donkey Kong, as released for the Virtual Console in Europe. Nintendo’s re-release included the omitted ‘pie factory’ level and some new animations, so there are some tiles in the pattern tables that weren’t there in the original. Also, the ROM was converted from its original Mapper #0 (NROM) configuration to Mapper #3 (CNROM) to allow more memory for the additional level and graphics.

NESticle v0.40 (with Cobra Triangle loaded)

There’s an interesting revision to the typeface in the ‘About’ box (and a few other places). The text is cleaner, loses its drop shadow, and is all capitals. Coincidentally, this version was released on my eighteenth birthday. I had also started college a few days prior, so this is likely the version of NESticle that I first used (or a version soon after). Cobra Triangle is still glitchy, as you can see by the title screen, but it is now reasonably playable.

NESticle v0.42 (with Battletoads loaded)

The usual minor changes. Note that the weird discoloration on Shitman’s crown and, um, ‘beard’ are likely errors with my screen capture and not the actual emulator. Battletoads is reasonably playable.

NESticle v0.43 (with Mega Man III loaded)

The biggest absence? Our fecal-lord has departed from the ‘About’ box and ‘Thanks Shitman!’ has been replaced with the disappointing ‘OK’ button. Version 0.43 was DOS-only, so the Windows-reliant Internet play is now gone, along with its menu item. Also note the IDE has changed to ‘Watcom C++ 10.60′ and the copyright is updated to include 1998. Mega Man III appears to run smoothly (look at those beautiful pattern tables!), but the sound emulation is poor.

NESticle vX.XX (with Mega Man III loaded)

The final DOS-only version of NESticle has no version number at all. It is simply vX.XX. Launching Mega Man III again, I found that the sound emulation seemed much more accurate. And note how the profile pictures are split in the pattern tables. Mega Man’s helmet and eye sockets were built from background tiles, while his eyes and face were built from sprites. Drawing the peach flesh tone with layered sprites allowed the developers to circumvent the NES’s color limitations. But that’s a discussion for another day.

In the meantime, here are the individual downloads for each version of NESticle. I urge you to use these for research purposes only. Not for copyright reasons, but for accuracy’s sake. NESticle is severely outdated and should NOT be used for everyday emulation unless you are on an equally dated PC. There are far better contemporary emulators that offer better support, sound, and emulation accuracy than NESticle can ever offer.

All files are .zip format. Versions 0.20 – 0.42 require DOS or Windows 95. The final two version are DOS-only:

NESticle v0.20 (373 KB)
NESticle v0.21 (377 KB)
NESticle v0.30 (285 KB)
NESticle v0.31 (433 KB)
NESticle v0.32 (462 KB)
NESticle v0.33 (465 KB)
NESticle v0.34 (467 KB)
NESticle v0.40 (327 KB)
NESticle v0.42 (329 KB)
NESticle v0.43 (197 KB)
NESticle vX.XX (191 KB)

Note: If you own the copyright to NESticle and want me to remove these files, please let me know. They are here for educational and preservation purposes only. I will remove them on request.

Also: It should go without saying, but don’t ask me where to download ROMs or how to make NESticle, VMWare, DOSBox, or Boxer work. I’m not a support forum. Shitman abides.