I love Game Boys! I own quite a lot of them, and I've been wanting to write a game for one for quite a while. I have this flash cartridge that lets you run whatever you want on the Game Boy.

Because I'm really bad at coming up with game ideas, I ended up making something 'useful' instead!

What it does

It's a todo list that runs on a Game Boy! Because the Game Boy is such a versatile platform, this software is compatible with the original GB, the Color, and all models of the Advance.

How I built it

I used the GBDK - it's a set of compilers and linkers for targeting the Game Boy (and other z80-like processors). The last release was in 2002, and even trying to compile it for Mac was a huge pain. I eventually found some binaries that somebody had uploaded to a forum in 2006 and used them.

GBDK has a load of helper functions for doing stuff on the Game Boy. The means rendering text and using cout is pretty simple! But it doesn't have enough helper functions to handle something like displaying a menu. I had to write that myself (and it's horrible).

Challenges I ran into

I had all kinds of problems with missing header files. This problem was compounded by the fact that I literally have no idea when it comes to C. The biggest blocker was not being able to clear the screen. The way all the >10 year old docs said it should be done just didn't work. It still doesn't work, and I have no idea why.

Accomplishments that I'm proud of

I got a working rom, and it runs on real hardware! (but not in an emulator for some reason)

What I learned

C isn't all that bad, but it is mostly. I'm motivated to keep learning it and get better, then eventually I'll work on a proper game!

What's next for GBTLC

I keep reading everywhere that the only way I'm truly going to be able to get fine control over what I want to do is with assembly programming. The docs and tutorials around asm on the Game Boy are actually really good - much better than with GBDK.

I really just need to find the time to learn now!

Built With

  • c
  • gameboy
  • gbdk
Share this project: