Through the wonderful world of homebrew, you can develop your own games, applications and run custom code on your favorite consoles or emulators. The Nintendo homebrew scene blew up in the early 2000s with the Game Boy Advance (GBA) and Nintendo DS as people found ways to execute custom software on these devices using independently built and open-source development tools. This meant you didn’t have to be part of an established game studio to make games, anyone who knew how to code, or wanted to learn how to code could do it themselves.
Today, these tools have continued to mature and expand to modern consoles like the Nintendo Switch. Nintendo has made it slightly easier to get your hands on their official development kit but if you go that route you’ll still have to go through an application process, convince them that you’ve got something good, and sign an NDA which will prohibit you from openly discussing their development tools. This is well within their right, and a necessary process if you are planning on selling your creation as an officially licensed Nintendo product. But what if you just want to start building games or software without a particular title in mind, or you want to build for older systems that are no longer in production?
Fortunately you can with freely available homebrew tools. Homebrew can be a great way to learn game development and familiarize yourself with console hardware. In this tutorial, we’ll be setting up a homebrew development environment for Linux. This was tested specifically on Ubuntu 22.04, but the instructions should work for virtually all modern Linux operating systems. A Windows version of this tutorial is available here, and a macOS version here. Once you’re set up, you’ll be able to start building games and writing code for any of the following consoles:
We’ll be using devkitPro, a tried and true producer of homebrew toolchains for Nintendo consoles. See their official Getting Started guide for full details. I've outlined the Linux specific steps below. Let’s get started:
On Linux:
Let’s install the GBA tools as an example. Use:
The process is very similar for other consoles: