Close

My Work Environment, Tools, and Resources

A project log for Joy Boy

Jump into the action with this awesome joystick for your Game Boy®. Now you're playing with power. Stick power.

Sven DahlstrandSven Dahlstrand 08/30/2019 at 17:070 Comments
Hardware and software tools, making development a lot easier.

Us humans tend to love creating and make use of our tools. They are essential in almost everything we do. We are also fans of standing on each other's shoulders, taking advantage of the knowledge and resources accumulated by the ones who came before us.

I want to share whit you some of the tools and resources that made up my working environment under this silly project, aiding me in the pursuit of making Joy Boy a reality.

Hardware tools

Let's kick it off with the NES to Game Boy Adapter: my handcrafted custom tool for connecting any NES controller, like a Zinger, to the EXT port on a Game Boy. In the photo above, you notice it attached to a Game Boy Advance and a joystick. See Inverter Simulation and Moving To Protoboard for a closer look at the adapter board.

Also attached to the adapter is the probes of a logic analyzer – the Saleae Logic 8. I've used it a lot during this project to peek at the signals and get their timings just right. Without it, I would have fumbled around in the dark.

On the subject of signals, to generate them I need my code running on the Game Boy. There's a handful of ways to make that happen, but I'm using the EverDrive-GB. It's a cartridge that slips right into the Game Pak Slot of the Game Boy and enables executing homebrewed software from an SD card. Super smart!

Software tools

Before running custom software on the Game Boy, it has to be authored and assembled. For that, I'm using Sublime Text as my editor of choice, rgbds for assembling and Make for managing the build process.

I'm a big fan of Make as a tool. In this project, I wrote the sd target, so when running make sd in the terminal, it builds the whole project and copies the resulting ROM file to an SD card. If no card is present, it patiently waits. After the file is successfully copied over the card is automatically unmounted. That sort of thing saves me from much manual typing in the terminal.

BGB is a Game Boy emulator and debugger that helps a lot during development. It's a Windows application but runs fine under Wine. For fast and easy access to documentation, I'm using Dash. If you take a close look at the photo, you'll catch a glimpse of Logic, the software accompanying Logic 8 for signal analyzing.

Great resources

There's no shortage of great material out there when it comes to Game Boy development and hardware tinkering.

The Ultimate Game Boy Talk gives an excellent overview of the Game Boy's architecture and Internet Archive host the official Game Boy Programmers Manual that contains everything you need to get started developing for the handheld. Section 2.5.1 Serial Cable Communication was crucial when figuring out how to communicate with the Zinger.

After all these years the Game Boy Community is alive and kicking, visit https://gbdev.github.io to discover more resources and fellow Game Boy nerds.

Discussions