Tuesday, January 6, 2015

Writing an NES Emulator: Overview

Writing a NES Emulator

I previously completed a project that emulated a 6502 processor. It was my first venture into the world of emulation, and I enjoyed it. I always wanted to turn the 6502 into something more though, namely an emulator of a game console. Originally, I thought about writing an ATARI 2600 emulator but after spending a lot of time thinking about it, I have finally settled on the NES system. There are a couple of reasons why I decided on the NES over the ATARI, the biggest reason being that the NES was my first real game machine, and it holds a fondness in my heart more than just about any other machine. Hopefully, by picking a machine that I have nostalgia for increases my chance of success.

Now, lets define some parameters that I want to operate under, so I have a clearly defined goal to reach.  I am shooting for a basic emulator, one that lacks anything but the most basic features required to get some of the NES games up and running. An outline of my plan is below

  1. Make sure that the basic CPU tests for the NES pass. I am not planning on worrying about implementing the illegal opcodes that only a small number of games use. I used a pretty comprehensive test program to validate the 6502 previously, so this should be quick, and give me a change to re-familiarize myself with the code I wrote.
  2. Get the graphics emulation working. I'll need to figure out how to emulate the PPU, which is the chip that drives the graphics.
  3. Get the audio emulation working. This should be a fun challenge!
  4. Input. This will be the easiest of the tasks I have to complete.
  5. Miscellaneous stuff. Things like loading the cartridge, and anything else
My basic plan all laid out in front of you. What could possibly go wrong?

You can check out the source here 

 Additional Posts
Work Has Started
6502 Overview

No comments :

Post a Comment