My Attempts to Improve GBA Music Romhacking and SiIva-Style "Ripping"
(Whenever I talk about "ripping" in the below post, I am referring to a style of mashup made popular by SiIvagunner.)
Hello! Working on my last post made me think about how, even though GBA ripping is very easy and reliable especially compared to other consoles, the process could still be improved. For example, GBA_Mus_Ripper has a bug that causes the generated soundfonts to sound horrible in fluidsynth, and it often adds vibrato to songs that aren't supposed to have vibrato.
I tried to make this fork of GBA_Mus_Ripper the best it could be. I need to give huge credit to IAGOnGithub, who fixed the fluidsynth soundfont bug and made lots of other bug fixes too.
I recommend running GBA_Mus_Ripper with the arguments This is a program written by ipatix that can take a midi file and convert it into ARM assembly code that can be injected into a GBA game. It's very good!
Update Oct 4 2024: I have made slight modifications to it for the purpose of my romhacking/ripping workflow.
This is a rewrite of Sappy2006's assembler into python. This program takes an .s file outputted by Midi2AGB, compiles it to machine code, and injects it into a GBA game. The original Sappy2006 could only be used on Windows, but this version should be usable on any platform that can run Python!
I was also thinking about how I remembered Sappy2006 being a very easy to use program to inject sequence data into most GBA games. I thought "How hard could it be to rewrite that part of Sappy2006 in a modern programming language so more people can use it?". If I could pull it off, the result would be useful to both romhackers and high quality rippers. And I did pull it off!
GBA_Mus_Ripper
This version of GBA_Mus_Ripper is a fork of IAGOnGithub's fork of berg8793's fork of CaptainSwag and Bregalad's GBA_Mus_Ripper. I also took a bug fix from justedni's fork.
-xg -sb -rc -raw
.
-sb
-rc
-rc
is necessary for these cases.-raw
-raw
is most useful for people who plan on injecting their edited midi back into the game.
Even though the non-raw mode is meant to *sound* like the original, there are some bugs in the code that prevent it from accomplishing this; my focus for this release was to improve GBA_Mus_Ripper as a tool for editing and injecting music into GBA games, so I didn't try to improve the non-raw mode, but I will look into improving it in a future version.
Because I did my best to make -raw
mode sound accurate for this release, I recommend that everyone use the -raw
mode. Currently, the only downside of -raw
mode is that volume levels will sound different than on GBA, but I'll try to fix this in the future.-xg
-xg
tells the program to use the extended general midi standard when outputting midis.Midi2AGB
gba-song-assembler.py
There are still more features I want to add to these programs, but I thought I would release them now because they're in a good state now and it will take me a while to add those last features.
I hope you find them useful!