gbadev
Game Boy Advance homebrew development forum
default profile picture

SkyLyrac

Moderator
Last seen 5 months ago
Joined:
Posts:
13
Topics:
2

Hi! Even though this isn't new, I'm going to leave a post here to get some exposure.

https://github.com/AntonioND/gbt-player

GBT Player is my music player for GBA (old versions supported GB/GBC). It uses the PSG channels (1 to 4, the ones that come from the GB). This means that the music you can make with them is fairly limited, but it doesn't need to use any CPU for mixing audio. Other players, like Maxmod or Apex Audio System, target the DMA channels, which means the music can be as complex as desired, but by using a lot of CPU to mix audio.

With GBT Player, you use a mod tracker like OpenMPT, create a S3M file with your song, and convert it with a python script. It generates files with the converted song. Then, you pass this data to the music player library (which is very small), and that's it!

PSG music players like GBT Player can be very useful for games that need a lot of CPU for other tasks (like for 3D software rendering), or for multiboot games.

Also, there is always the option of using both systems at once! This is an example that combines Maxmod and GBT Player. The music composer has to create a S3M file in which the first 4 channels are special (they correspond to the PSG channels of the GBA), and the rest are free to use as needed. GBT Player includes an utility that will split this S3M file into two, so that you can use the PSG part with GBT Player, and the rest of the S3M file with any player you like!

https://github.com/AntonioND/gbt-player/tree/efd8e754c9ae0ca444d48fced58ca99f0510faaf/gba/examples/combined_maxmod

And it isn't needed to use devkitARM to use this library, it's self-contained, all you need is a C compiler to use it!

Feel free to leave suggestions and bug reports in the repository, and I'm happy to help here if there are doubts about how to use it!

This game looks great!

Well, I'll talk a bit about myself, then.

I'm AntonioND/SKyLyrac. I started coding in an Amstrad CPC when I was around 12, then a bit of Visual Basic a year later. However, I never understood how to make proper games until I discovered Game Maker (versions 5, 6 and 7!).

Eventually I discovered NDS homebrew, when I was 15/16, and I started to learn C. I spent a couple of years creating NDS homebrew while learning C and 3D coding, and then I did a bit of Wii homebrew before switching to PC for a while. I spent a couple of years working on a GB and GBA emulator (GiiBii Advance). At this point I was in university, so I didn't have that much free time, and I slowed down a lot.

After a few years I got tired of PC and rediscovered GB homebrew. I spent a couple of years creating GB games such as uCity and demos (and improving the toolchain I was using, RGBDS). I got tired of this as well, because developing in GB assembly is super slow and painful, and I decided to try GBA for the first time, where I've created a couple of libraries like libugba and GBT Player, and I ported my uCity to GBA!

Now I'm back to NDS homebrew, I've even been improving my 3D engine for NDS but I'm still interested in GBA development, as they are very similar machines!