What is NESSIM? It is a Nintendo Entertainment System emulator I programmed. I had wanted to write my own emulator for many years and had attempted making a NES emulator a few times in the past. But around early March 2008 I finally was up to the job and had success. I had alot of fun with the project and really benefited alot from the community at NESDEV. It was quite an awesome moment when I finally saw games like Donkey Kong, Donkey Kong Jr. and 1942 running on my very early and primative emulator. The games being emulated all through code I had wrote was very satisfying. 

NESSIM has progressed alot since then. It's now a pretty nice emulator and supports a good array of memory mappers and emulates most games fairly well. There are still probably a few bugs. Most of my favorite games do work such as the Mega Man series, Ninja Gaiden series, Castlevania series too. To be clear though as friends I shared this with early on seemed confused about the overall goal, I did not start the NESSIM project to try to make the next amazing emulator for people to pirate games with. It was simply for the knowledge, experience, and enjoyment of writing my own NES emulator.

I have uploaded a binary for fun and so others can see the emulator in action. It was coded entirely in C++ using the Allegro library. It also uses Blargg's very handy NES APU emulator which emulates the sound portion of the NES. I have not written my own APU emulator yet. I want to but don't know when I will.

Below are some screenshots from early development to later development. The version number of v0.02 in some is incorrect as I forgot to change it for a long time and it was before I started using the date as the version number. Judging by old backups, I completed my CPU core around March 14th 2008. By March 16th I had early graphics emulation. Games like Contra were playable, no sound though. March 17th I'd added Blargg's APU for sound emulation. March 20th and 21st I was adding scanline accurate graphics emulation. Sometime after March 22nd I started working on a pixel by pixel renderer. After that it's hard to mention any major milestones.

Screenshots:
 This is probably the oldest picture I have of the emulator in action. This was when the emulator was at that point where I could actually play a NES game with the code I had written all by myself for the first time. It was very cool. As you can see sprites were added and a very early and hacky background renderer too. That is why certain background elements are the wrong colors. This really was quite a landmark for the project despite how simple it looks. The reason being that I had made a few attempts before in the past to make a NES emulator but all fell short of any real results. This clearly showed off working CPU emulation and basic PPU emulation. I wish I'd taken more early pictures.

 This is from a much later build like the rest of the screenshots here. Running the classic game Guerilla War. Note that I only ever bothered to update the version number of the program once.

 Kirby's Adventure is another classic and top notch game that works fine on my emulator. It's very nice to have such top notch titles working so well on my emulator.

 Finally we have Castlevania III Dracula's Curse. This game is MMC-5 and the only reason I bothered to put any support for MMC-5 in my emulator. The game is running in the emulator by using some game specific hacks. The game is playable, and that's enough for now. Some day I might put the effort into adding proper support for it. But something is better than nothing right?

I have since improved emulation to the point where no hacks are needed to play CV3. MMC-5 emulation is not complete but works pretty well. CV3 seems to have no trouble now.


Downloads:
NESSIM Build 120915 Win32 Binary
Allegro Library ( alleg40.dll )
Zlib Library ( zlib1.dll )

Build Numbering is YYMMDD (Year, Month, Day).