Game Boy Software [part 1]

Jul 08, 2020


I've being - as I said HERE and HERE - that I'm programming for the original Game Boy.

It's being a pleasure and I'm really, really happy with the progress so far, and currently I'm developing two small games for it.

The tools

Right now I'm using C to develop the games, so to be able to compile and build them I'm the GBDK under WSL - yep no GNU/Linux boxes for now - but every now and then I build the games using OSX and the version for Win32 as well.

To develop the graphics I'm using the Gameboy Tile Designer and the Gameboy Map Builder by Harry Mulder.

To debug the game I'm using the AWESOME BGB emulator. I have ZERO complaints about it right now, it works like magic! It let me inspect the disassembly and the memory (including the graphics memory) of the game and there's a neat feature that reloads the ROM if it has changed.

While I'm quite happy with the things - and really grateful for the original developers of those tools - the graphics tools not quite what I expect or want to.

I mean, the original software is fine but we need to understand that it was developed in another era, with another requirements and mindset. They have the latest release from 1999 - This is 21 years ago.

It's just to cumbersome to do some things and I found myself losing too much time fighting against the tool than making the game - which is what I'm interested in ;D

A word before...

Again, before saying anything about the tools, I'd like to say that I'm really grateful for them and I appreciate a lot the effort and time that Harry had put to develop it.

They work fine and do the job, the things that I'm gonna say is more about my workflow desires and the way that I'd like to see things going - Thanks Harry for putting this up, and mostly thanks for making the source code free for all ;D

My workflow

Most of the times when I'm developing a part of the game, I use very crude graphics, just enough to be able to layout the memory and understand the problem deeper.

So when I finished the basic setup I start to pay more attention to the graphics themselves and the flow is more or less like this:

  1. Go to GBTB
  2. Go to GBMB
  3. Go to VSCode
  4. Go to BGB
  5. Repeat...

As you tell, it's a lot of application switch, just to check if what we did with the graphics has the intended results on the game and/or if it looks nice. Additionally the GBTB is quite crude in the way to view and edit the pixels, making more difficult than already is to edit the things.

After sometime I feel tired of alt+tab - not saying that the hands and arms start to really feel pain - and the joy of doing the things start to fade out.

What I'd like to have

In the ideal scenario, I'd like to have one application where I could make the pixel-art, setup the tiles and the maps - this will make the steps (1) and (2) become just one.

With different ways to visualize/setup how the graphics are exported, would be easy to paint the graphics as a whole while exporting them as 8x8 tiles, and since the tool would have more information about how the things are used, it could have more options to how to better identify possible optimizations about the graphics - but let's talk about that later.

With simple options as export on save, and save on change the hassle of exporting things is past. Which would be very nice, because countless times you forget to export the tiles and need to go back from the beginning, making you lose even more time. Worse than that, after some time you start to do the export/save thing even when you don't need :(

To make things even better, an option to run an external command would make the step (3) not needed anymore, and since the BGB already hot-reload the things for us, would be just a matter of checking if the changes that we made is what we want.

So to summarize, I want a program that:

The plan

Well, this post is already to big to describe how I plan to achieve this, so I'll stop here for today. Next steps is to detail a little bit more the features that I want to have on the new application and start to research about the tech that will make it possible.

Anyways, I'd like to thank you for reading all of this ;D

Creative Commons Licence