Hello my friends, I'm Magnius and I'm going to teach you today how to insert ANY song you like, into the GBA Pokemon games. For this particular tutorial we will be using Pokemon Fire Red, but it can be done on almost any Pokemon GBA game. However, before we start you're going to need a few things...

- 2 Pokemon Fire Red Roms(Don't ask me where to get the roms).
- An emulator to play the rom on(I use VisualBoyAdvance myself).
- Sappy and mid2agb which you can both get here.
- A midi that you want to insert into the game.
- A backup of the Pokemon Fire Red rom incase anything goes wrong.

Got all that stuff downloaded? Good. Once everything is downloaded make sure to extract everything into the same folder, trust me, it'll make things much easier later on. Now let's move on to the tutorial.

Step 1 - Convert your midi to a ".s" file
In this first step we're going to use Mid2Agb to convert our midi file that we want to insert into the game, to an ".s" file. Before we move on, make sure your midi is in the same folder as Mid2Agb. Once you've made sure of that, open up the folder that Mid2Agb is in and click on your midi. After you've clicked on your midi drag it over to the Mid2Agb file and Mid2Agb will automatically convert the midi into a ".s" file. There is another way to convert the midi using the command prompt, but that just makes the whole process harder than it has to be.

Step 2 - Assemble the song using Sappy
Alright, now that you've got your ".s" file, we're going to put it to use in Sappy. So first, open up Sappy. After you've opened up Sappy, go to file and then click on "Open". Now find your first Pokemon Fire Red rom and open it. Now once you've opened your rom in Sappy you'll notice that in the upper left corner of the program a dropdown box will appear with a song name in it. Click that dropdown box and you'll see a list that you can scroll, of songs from the game. The song you click will be the song you'll be modifying in game. You can change any song, but for this tutorial find a song on the list called "Pokemon Theme", since it's one of the first songs you hear when you turn on the game. After you find that, click on "Assemble song" which is in the left part of the program. After that a box will pop up that says "Assemble .S file" at the top. Click the button next to the first box and then to open your ".S" file. The second box, is where you'll write your base offset, but don't worry about that too much now. For now just type the offset "0xEB0B20" in the base offset box. Third is the Voicegroup offset box which will already be filled in. Now click on "Assemble that ugly thing!" and wait for the program to finish assembling the song. Congrats, you've assembled the file. If the song plays already in the game by now, then congratulations, you're done, but if it doesn't, don't fret, move on to Step 3.

Step 3 - Getting the file to work in game
So now you've assembled the file and it plays in Sappy, but you see that it doesn't play in game. Well slow down there guy, there's still a ways to go before we can get the file playing in game. Now that you've assembled the file we're going to export the tracks. In order to do this, go to "Export Tracks". You'll then see a bunch of unchecked boxes which are basically the offsets of the tracks, check all of them. In the 2nd box, you can either put $T or $P, don't know worry too much about what they mean, for this tutorials sake just type in "$T". After that click on "Ok". The songs tracks will now be dumped to your folder and since you picked "$T" the tracks will be numbers like one tracks file name will be 0, the next tracks file name will 1, it's pretty simple. So after that close out Sappy and reopen it. Now that you've reopened Sappy, open the unmodified Pokemon Fire Red rom and find the song you modified in other rom, which should be "Pokemon Theme" in the case of this tutorial. Now go to "import tracks" and check all the "numbered" files, which are basically the tracks we dumped earlier. Next to the "First track" box basically type in an offset where there's a lot of free space, for the sake of this tutorial just put "0xEB0B20" there. Then press OK. Now open up your emulator, open up the rom you just modified and you'll see that the song works in game. Congratulations, you've done your first successful music hack.

And yep, that's how you insert music into the GBA Pokemon games. But I know some of you are asking, what if I want to import music from one Pokemon GBA game to another? Well, I'll explain that in this extra step.

Importing Music from one Pokemon GBA game to another
Importing music from one Pokemon GBA game to another is easy. First open the Pokemon GBA game you want music from like for instance, if I wanted to take music from Ruby and put it in Fire Red, I would open Ruby. Then I'd simply select the song I want to put into the other game and go to export tracks. Once you're in the export tracks window, check all the tracks, type "$T" in the second box and all your tracks will be exported to numbered files(1, 2, 3, 4, 5 you get the point). After that, open the game you want to insert the music into and find the track you want to replace. After that choose import tracks and import the numbered tracks you dumped and press okay. Congrats, you've successfully taken music from one GBA Pokemon and inserted it into another.

And that concludes this tutorial. Hope it helped you guys out.

If you think you've mastered this part of music hacking, these other documents will help improve your music hacking skills even more.

http://www.pokecommunity.com/showthread.php?t=123520
This document is a complete list of Fire Red's music values. So say you wanted to change the music playing on a map, but you didn't know the hex value of the song you wanted to change it to, this is what this document will tell you.

Nice thing, dude, this tutorial looks good. I have some experiences with music editing, but still, a newbie should find this useful. Even I gave up with my efforts when my first MIDI masterpiece that I rewritten from someone's notes - took 2 hours - scrambled up.

Cheers!

P.S.: Don't link to Mid2AGB, it's official Nintendo program and its distribution considered illegal.

Good guide there, Magnius! To me it's in full detail. If you want, you may merge the thread I posted that tackles slight details about music looping originally posted by Baro (I gave credits to him, anyway).

Zaayid, i have the exact same problem. Maybe it is a fault within Windows Vista(You know, how some programs dont work with Vista..), seeing as i have Windows Vista as well.. Or you could simply redownload it from somewhere else, which i have done before and not worked..

Great tutorial. When i go to assemble it closes because something goes wrong.

PS. pm me for assignment

lol think I already did but you never replied.

But yeah, all this will really do is insert what you have in your midi into the game. If you want your midi to sound REALLY good on the Gameboy Advance, it'll have to be tweaked. I've been researching GBA sound myself to make my own GBA remixes sound bette and here's what I've observed...
- On the GBA you can only have a number of "direct" tracks. The number? I'm not sure, the most I'vve been able to get is 3 direct tracks playing at a time, but some of the official Nintendo GBA music uses more, however I haven't figured out how. Direct tracks are anything that isn't GBA synth. Basically instruments like trumpets, violins, strings, anything that isn't GBA synth. The most number of direct tracks I've been able to play at once is 3. One trumpet, one drum track and a strings track. But 3 direct tracks only seems to work, if the third instrument is a string ensemble. Also it seems drums can be the only 2nd "Direct" track as of now. Still I've seen professional Pokemon GBA music using 2 "non drum" direct tracks, so I'm trying to figure out how it's done.

- Since the GBA can only hold so much memory, the "Direct" instruments have certain ranges they can play in. If the instrument goes out of that range, the GBA interprets that as GBA synth.

A very good tutorial Magnius, great! I replaced the Wild Pokemon Battle music and inserted a D/P Wild Pokemon Battle music (in the backup ROM). Then I closed and re-opened Sappy, selected the Wild Pokemon Battle music from the dropdown list and then exported the tracks. I test it in VBA but it doesn't work! It only works in Sappy! Please help!

A very good tutorial Magnius, great! I replaced the Wild Pokemon Battle music and inserted a D/P Wild Pokemon Battle music (in the backup ROM). Then I closed and re-opened Sappy, selected the Wild Pokemon Battle music from the dropdown list and then exported the tracks. I test it in VBA but it doesn't work! It only works in Sappy! Please help!

Did you open the unchanged rom afterwords and import the tracks back into the "Wild Pokemon" battle music? If not that's why it's not working yet.

Ah yes and here is a remix of the GSC Encounter Rival Theme I successfully loaded into the GBA. I'd like the lead instrument to be louder, but this is a good example of what this program can do.

- On the GBA you can only have a number of "direct" tracks. The number? I'm not sure, the most I'vve been able to get is 3 direct tracks playing at a time, but some of the official Nintendo GBA music uses more, however I haven't figured out how. Direct tracks are anything that isn't GBA synth. Basically instruments like trumpets, violins, strings, anything that isn't GBA synth. The most number of direct tracks I've been able to play at once is 3. One trumpet, one drum track and a strings track. But 3 direct tracks only seems to work, if the third instrument is a string ensemble. Also it seems drums can be the only 2nd "Direct" track as of now. Still I've seen professional Pokemon GBA music using 2 "non drum" direct tracks, so I'm trying to figure out how it's done.

I'm not sure, but I've inserted 4 DirectSound tracks (including the percussion, I don't know if Timpani goes with the percussion as I have inserted one separate track) and it worked for me. I think it has something to do with the voicegroups but if you want to hear more instruments from your GBA MIDI, try to use the Bank/Patch Change of your MIDI software.

The PokéCommunity

Meta

Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, or The Pokémon Company International. We just love Pokémon.