MottZilla's NES / Famicom Stuff



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 sometime in late 2007 or early 2008 though I can't recall exactly when, I finally was up to the job and had success. I had alot of fun with the project and really benifitted 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 bugs and issues with it but those tend to be limited to a few games not working. 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 Blaarg's very handy NES APU emulator which emulates the sound portion of the NES. I have not written my own APU emulator and don't know if I will. Afterall Blaarg's APU code does a nice job with my emulator.

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.

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 090705 Win32 Binary
Allegro Library ( alleg40.dll )
Zlib Library ( zlib1.dll )

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