How I made my own NES game in 2022
Usually, I write about my professional work as a software automation consultant, but today I want to write about a personal hobby project that I started last September and led me to releasing a game about an alcoholic walrus a month later. I think it is important for everyone working in the IT industry to do some hobby development. I believe it’s the best way to really learn a technology inside and out. But on to the story of the day.
First, some background information. I’m a retro gamer. I’ve been playing and collecting Nintendo Entertainment System (NES) games for more than 10 years and have loved the system ever since I played Super Mario Bros. as a child. Released originally in 1985, the NES reinvigorated the gaming industry after the video game crash of the early 80’s. It had a successful 10 year run before being succeeded by Super Nintendo and the final licensed NES game was released in 1995 (The Lion King).
So, that makes the NES now over 38 years old in the year 2023. And that means, that in terms of computing power, the NES is antiquated. The NES runs on a Ricoh 2A03 processor, which is based on the popular 8-bit MOS Technology 6502 and runs at 1.79 MHz (or 1.66 MHz in PAL systems) [NES, Wikipedia]. And the way to program NES games means programming in 6502 assembly language and remembering a lot of hexadecimal numbers for the graphical assets and other values. And the amount of memory available is very scarce, around 512 kb, depending on the NES cartridge PCB layout or “mapper” as they are called. That means being very frugal with your graphical assets and re-using tiles and sprites in a clever way.
Back to the story. So, I had been collecting NES games for a long time and had long had the idea of wanting to make my own NES game, ever since I was a child. I found a website displaying a tool called NESMaker, which provides a game templates and example code for making NES games. I dived into the NESMaker tutorials and started building my own tutorial games. I hadn’t programmed assembly since my university days, so picking it up again was not easy – I was too spoiled by modern IDEs and software development tools. Fortunately, the NESMaker has a very vibrant and helpful Discord community, which I used to ask my many of programming related questions. Learning to make a NES game was not just about assembly but understanding the NES architecture, how the different memory banks work and how to process the computations. But sooner than later, I had a grasp of the NES development fundamentals and started to dream up my upcoming game.
Of course, programming is just one part of game development! There are many other parts as well, like the story, gameplay, sprites, tilesets, music and sound effects and many other things. Luckily, I had the idea and the story down. The game was going to be about Mauri Mursu, a Finnish walrus that has been out drinking last night and has now lost his bottles and must go on an adventure around the Walrus Islands to find them again. I had originally created the Mauri Mursu character for a short Youtube animation several years ago and didn’t really have any plans for him, but as the faith would have it, a real life walrus stranded on the Finnish coast at end of summer 2022 and gained nation wide publicity. This cemented my choice to use Mauri as my main character.
I wanted to make a top down adventure RPG, similar to the first Legend of Zelda. I wanted to take Mauri and the player on a quirky, humorous adventure around different biomes and to meet funny side characters. I wanted Mauri to gain new weapons along the journey that gradually open up the world map for further exploration. In simple terms, a classic gameplay loop. I didn’t want to reinvent the wheel, but to make an homage the wheels of yesteryears. A popart pastiche.
After a month of hard work, the game was complete. And I couldn’t have been happier with the end result. My cousin had made an awesome, authentic 8-bit soundtrack that fit the game perfectly. And to top it all off, I contacted a Japanese voice actor through Fiverr and produced a Japanese voice-over for my retro-styled video game trailer. I wanted to imitate the cheesy and over-the-top style of early 90’s video game commercials and to give the players a taste of the nostalgia ahead.
After completing the game, now was the moment of truth – playing my own game on real hardware. I had purchased an EverDrive NES cartridge that can read and play .nes roms from a memory card. So, I compiled my game to a rom file, uploaded the file to the memory card, inserted the memory card into the game cartridge and then inserted the game cartridge into the Nintendo and closed my eyes and crossed my fingers. As soon as I pressed the power on, I heard the cheerful menu theme music. I opened my eyes and saw Mauri Mursu live on my own TV screen for the first time. It was marvellous, with all of the static interference gloriousness. Just like I wanted it. And it played as well as it looked!
And to make my childhood dream complete, I contacted a French game studio that still manufactures NES game cartridges. After some deliberations, I made my order for 25 game boxes with a manual and the physical game cartridge. A month later the package arrived, and I finally got to hold the physical game cartridge in my hands. It felt like everything came to full circle. I used to play these games so much back in the day, and now I had made one myself. Hopefully for someone else to love as much as I did.
If you were inspired by my story or are a retro gamer, I suggest you to check out the game, “Mauri Mursu’s Hangover”, it is available in Steam as a standalone Windows version and as a .nes rom file at Itch.io. I would really appreciate if you can check them out! Thanks for reading and long live retro gaming!
Nintendo Entertainment System, Wikipedia, Available:
Mauri Mursu’s Hangover, Steam, Available:
Mauri Mursu’s Hangover, Itch.io, Available:
NESMaker, The New 8-Bit Heroes, Available:
About Tuukka Virtanen
Test automation consultant with technical experience in test automation and quality assurance. TMap Next certified Test Engineer with knowledge in test planning and execution and test design techniques. Master of Science in Information Management. Indie game development as a side project. Creative and visual thinker. The latest assignment included web and mobile game test automation with Appium and Robot Framework in an Agile customer project and regression test automation for websites.
More on Tuukka Virtanen.