gbadev
Game Boy Advance homebrew development forum
exelotlprofile picture

exelotl

Administrator
Last seen 10 hours ago
Joined:
Posts:
52
Topics:
11

Hi! This is a kinda huge question but here's some tips I could recommend:

  1. Get familiar with a systems programming language of choice (C and C++ are most common but there's also Rust, Zig, Nim, Ada, etc.)

  2. Read Tonc to learn how to program the GBA hardware directly (IO registers, tiles, palettes, sprites, backgrounds, etc.) as well as general low-level embedded programming wisdom.

  3. Read GBA Resource Management to learn how to make things like a palette allocator, object VRAM allocator, big map system with streaming tiles - if you don't yet know why this stuff is useful, try writing a game without them first.

  4. Read Game Programming Patterns to learn about ways to structure your game code. Some things may be overkill (event queue) or not that useful on GBA (data locality) but in general this book is full of gold.

  5. Have a game in mind, and try to develop the game + engine together. For example Butano Fighter was released alongside Butano, serving as a demonstration of everything the engine is capable of. One of the reasons why developers hate Unity is because Unity don't make games in their own engine! Instead of fixing the issues devs encounter, they're too busy building half-baked new features before abandoning them and moving onto the next shiny new feature.

  6. Get familiar with a higher-level 'productivity' language of choice such as Python (but even compiled languages will do as long as you can wrangle files/strings/data easily in them) - this will be important for the next point.

  7. Making an engine is also about making tools. In some cases (e.g. image converter, music converter) you can write a script that just reads a config file and calls an external tool (e.g. SuperFamiConv, mmutil). But then there's stuff like level design, for which there's no out-of-the-box GBA solution. A good level editor is Tiled, but you have to write your own converter from Tiled maps into level data (e.g. const C structs) that your game can understand. Not to say you need a level converter, for example Butano doesn't have one, but I mentioned it to illustrate how much non-GBA code might be involved in making an engine.

Hey all, we launched a new GBA Winter Jam which is running until 28th February.

This one's a bit different, instead of focusing on new games, this is a jam about revisiting and improving your past projects!

Like the previous Winter Jams, this is a low-key jam with no judging or prizes. Very excited to see what everyone comes up with!

More info here: https://itch.io/jam/gba-winter-jam-2025

Hey, thanks a lot and I'm glad you liked it!

It's hard to compete with Discord these days in terms of active discussions, but we're still keeping this place running out of principle.

Happy 2025 and good luck on your GBA dev journey :D

Afska answered this on Discord but I'm putting it here for posterity:

The solution is to use the BN_LOG macro which is able to handle data types other than strings:

BN_LOG(egg_sprite.x());

The jam logo and other assets are now available at this repository in case you want to include them in your game (e.g. as a splash screen or similar)!

GBA Jam 2024 logo variant 2, at GBA resolution on a transparent background

Hey welcome! Guess this is the official jam topic now!

I'll aim to enter something but I haven't decided exactly what yet... maybe a rhythm game or a tech demo I had in mind for a while x)

Hey welcome, glad to have you onboard!

Hey everyone! I wrote a blog post about making a faithful Minesweeper clone for the GBA, which we snuck into Goodboy Galaxy as a fun minigame.

It goes pretty in-depth, you can read it here!
https://exelo.tl/poopsweeper.html

Thx and merry christmas!! <3

Screenshot of a Minesweeper game running in the Goodboy Galaxy pause menu.

It feels surreal to finally be writing this but... Goodboy Galaxy for the GBA released earlier this week!

It's an exploration platformer about a dog in space, which myself, Rik and so many friends & collaborators have been working on for the last 2.5 years (or 5 years if you include the demo!). We've poured absolutely everything into this project and we really hope you enjoy it after all this time! <3

You can buy the game digitally on itch.io: https://goodboygalaxy.itch.io/goodboy-galaxy-gba

Physical carts are currently in production, and can be preordered from First Press Games.

title screenshot of maxwell looking into the sky gameplay footage gif screenshot of maxwell standing in a cave, pointing his gun at a glass orb FMV screenshot of three bears with a large machine crawling over the horizon

The game was made in the Nim programming language and uses the following libraries:

  • Natu (in development) - Nim GBA programming toolkit
  • libtonc - text rendering and many other utilities
  • maxmod - music / sound engine
  • libugba - interrupt handler
  • ACSL - heap allocator / C stdlib replacement
  • posprintf - string formatting
  • Cult-of-GBA BIOS - RLE Decompression for video cutscenes
  • agbabi - memcpy/set + coroutines
  • nimcoro - high-level coroutine wrapper
  • gba-rumble - brrrrrrrrrrrrrrrrr
    Full game credits here.

We're currently working on the native PC and Switch ports, which will be out next year, but I figured I'd post about the GBA release here for posterity. Lemme know if you have any questions!

pmprog wrote:

I'm gutted I didn't get chance to finish mine, but great news on having 30 microgames! I look forward to trying it out

Aw yeah I wasn't able to finish mine either, as coding the intro cutscene ate up all my remaining time. I'm unbelievably happy with the result though!

I noticed your alternate title screen made it in which is very neat, I think I prefer it over the original!