After more than a year of no posts, I’ve decided to use this space again as a journal while I work on my new goal for 2022: to build an NES game. As I collect and play more games for the system, I’ve come to appreciate the amount of effort that goes into engineering software at such a low level. The kinds of challenges that programmers had to overcome while building these games are so far divorced from modern software problems that I felt compelled to explore the space in more depth. Maybe it’ll make me a better programmer. Maybe it’ll make me appreciate my game collection that much more. Hopefully it is a fun project and something that I can build on in the future.

I’m starting off by learning some 6502 Assembly. I know there are some higher-level tools that folks have built and there are even simple tools like NES Maker that abstract the development process even farther. I might look into some of those later on. For now, my chief goal is to make something playable using only assembly code. My ‘Hello World’ implementation was far more challenging than I anticipated, but I got there:

Hello World from my NES emulator

My development environment consists of:

As I continue to work on this, I’ll post progress here as well as links to resources I’ve found helpful. For now, here are some links to resources I’ve currently exploring, some of which may be more useful than others:

That’s all I’ve got for now. Next on my list is to figure out color palettes, then I’ll look into animation and reading controller input.