gbadev
Game Boy Advance homebrew development forum
exelotlprofile picture

exelotl

Administrator
online
Joined:
Posts:
49
Topics:
10

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!

Submissions are now closed! Holy crap, we got almost 30 entries which is amazing! We're putting everything together and will aim to release in time for Halloween :D

Hey! I'd recommend to persevere with devkitARM as it's widely used and has up-to-date compilers with the latest fixes / optimisations / features.

After running arm-none-eabi-objcopy you need to run gbafix (which you should have under dkp/tools/bin/) on the .gba file. This will insert the Nintendo logo into the game's header and calculate the header checksum, allowing it to pass the logo check that a real GBA (and many emulators) will perform on boot.

We have now added a library of music jingles to the repo (thanks to Totsnuk for making so many)! Each jingle lasts for a number of beats (usually 16), and the tempo increases as the player completes more stages.

How to use the jingles:

To play a song and ensure your microgame last for the correct amount of time:

_total_frames = play_jingle(mj::game_jingle_type::SONG_NAME_HERE, completed_games, data);

There are plenty to choose from, we might add more later (and can take requests if you have something specific in mind for your game).

I would recommend to start with METRONOME_16BEAT so that you don't get sick of hearing the same song over and over during development :P

You can bring your own music too if you want! See below.

How to use your own music:

  • Save your song at 120bpm and ensure it doesn't last for more than 10 seconds (actual in-game tempo ranges from 138bpm to 222bpm, subject to change)
  • Use play_music() to play your song at the game's tempo
  • Use recommended_total_frames() to calculate how long your game should last, for example:
    const int base_seconds = 8;   // 16 beats at 120bpm
    const int base_frames = base_seconds * 60;
    _total_frames = recommended_total_frames(base_frames, completed_games, data);
    

Have fun!