Rust NES Emulator
Page last updated: September 9, 2026
This was the final project for a class in college. We were told we could do anything we wanted so long as it was interesting and we gave a presentation at the end. After writing a couple of MIPS emulators as part of a computer architecture course, I was really excited to give something more meaty a try. I think we had about 4 weeks for this, which was already going to be a bit tight. Combining this with other schoolwork and extracurriculars, it’s a miracle it works at all.
There are enough features to play Donkey Kong (without sound) and that’s it. At least I had the forethought to set the bar appropriately low. I chose Donkey Kong because it’s about the simplest game there is for the console. Notably, it doesn’t use a mapper, nor does it depend on accurate emulation.
At the time of writing, I haven’t looked at the code in almost 10 years, and I’m sure it’s not up to any reasonable quality standard. I decided to write it in Rust, because I’d done a couple small things in the language before and thought it was cool. This was before the concept of editions and a lot of really nice language features (NLL, ergonomic modules).
There’s a bug I didn’t have time to track down where it always ends up in two player mode, and probably many more besides.