Callum Moseley

NES Emulator


Way back in 2014, I started being interested in exactly how emulators worked, something that I had used all throughout my childhood to play games from before my time. I poked around with a Chip8 emulator, which I found really easy to understand and build. So, I thought it wouldn't be to much of a step up to try making an NES emulator. Turns out, it was significantly more of a step up than I thought.

Previous Attempts

I've probably had about 4 past attempts to build a working NES emulator. The first was back in 2014 when I started being curious about emulators. I was able to build a functional 6502 processor emulator, but I just couldn't wrap my head around the PPU (graphics). The next two attempts were more like refactors, and happened from 2015-2017. Both times, I decided that the way I was doing the processor emulation was messy, and rewrote it to be a bit nicer, but then later got stumped on the graphics again.

Latest Attempt

Over the summer of 2018, I decided to once again go back to the infamous NES emulator project. This time, I decided to write in C++ because I wanted to get more experience with it. The processor went smoothly, and I really focused a lot on trying to understand and build the graphics unit. I finally made some progress on it, and by the end of the summer I was able to play Donkey Kong almost perfectly. It was extremeley satisfying to have something I worked on for years come together.

Future Steps

I'm taking a bit of a break from the project right now, due to school, but I do plan to return to it later. There is still a lot to be done, including the audio unit, support for a wider range of cartridge types, and fixing the large number of graphics bugs that will inevitably pop up as I try to emulate different games.