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).