Document

Making a NES Game (2019)

Some 33 years after the NES launched in Europe, here I am trying to learn how it all worked. The iconic console has long been interesting to homebrew developers wanting to tackle the groundbreaking and versatile 6502 assembly language, and my interest was peaked when I recently spotted a Kickstarter for an original NES game release for the modern day, Magic Mages.

Getting Started

I decided to blog my experience for a couple of reasons, but above all else I simply couldn’t understand where to start with any of it. I read around 10 tutorials before even figuring out how to install and use a compiler. I tried NESASM, then CC65, and finally I landed at ASM6, a compiler that seems as barebones as it gets; I needed all the help I could get. Simple setup and a handy Hello World demo to reference, and I was away!

Download the demo files including ASM6 here!

So with helpfulness in mind, here’s what you do. Extract the zip anywhere you want, but keep all of the files in one folder together. I’ve bundled in ASM6 and a set of demo files for a Hello World ROM. Simply run the build.bat file in the zip and Windows command line will generate a hello.nes file from the code also in the zip. The window will flash briefly and disappear (I assumed it was broken.. it wasn’t). Load up a NES Emulator (I used Mesen, and highly recommend) and load the generated file. Voila! Text will appear, and progress has been made. You have made your first NES “Game”.

Unfortunately, now is where I leave you to march forth and go make NES games. Thankfully there ARE loads of references on how the commands and assembly language work, I’ve merely gotten you off the mark and out of the starting gate. Have fun!

“During this initial research, I felt like a time traveller. Every useful forum post or resource site was at least 15 years old, it really is surreal to see these old websites still retaining relevance after so long.”