Down the NES Rabbit Hole — Press Start

Gerald McAlister
5 min readApr 24, 2020

While I spend the majority of my days focusing on cutting edge and bleeding edge technologies like virtual reality, augmented reality, and artificial intelligence, I have a deep appreciation for older technologies still. In fact, I got my start writing code for the Nintendo DS back in 2007 using devkitPro, a toolchain that contains lots of immensely helpful tools for doing so. As time went on, I gradually started expanding out, building some games for the Nintendo Wii, and eventually helping out with the 3DS homebrew channel very minorly. These days, I unfortunately have bills to pay, and don’t have as much time to dive into these older systems as much as I’d like to.

Recently however, I had a sudden urge to sit down and dive back down this rabbit hole during holidays. The holidays have always been one of my more experimental times for building games, and this year has been a bit slow as I wait on a lot of my projects to have other parts completed by others. Thus, I thought it’d be particularly fun to take up a new challenge: Building a Nintendo Entertainment System game. For those who don’t know, the NES was Nintendo’s first home console in the U.S. that gained widespread popularity. It’s a very old and very simple device, but those two properties actually make it a challenge to develop for. Thus, I decided to dive in and build a simple game for it! There’s just one problem: There isn’t a whole lot of documentation on how to build a simple NES game online. Thus, I decided to do this multi-part series on how I went about building my first NES game! Today’s topic: Setting up all of the tools.

Let’s start with the basics: We’re going to need a few different things: A way to build our NES game, and a way to test our builds. The first thing we should do is find a decent NES emulator that we can use to test everything. You can also go and purchase a flashcart to do so, but this will require more iterations for testing, so it’s probably easier to just use an emulator for now. Since I’ll be doing most of this on my Mac, I’d recommend OpenEmu for that platform, but for Windows I don’t have any main recommendations. I’d ultimately just Google around (RetroArch seems to be a popular recommendation). Once you have an emulator, we’ll need to figure out how we’ll actually build our game. Let’s start with a quick overview of how this will work:

Gerald McAlister

Software engineer, hardware tinkerer, focused on VR, AR, AI, & Web3. I write about whatever crosses my mind, but try to focus on business vs tech vs philosophy.