• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

Magnius Guide to Pokemon Music Hacking

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
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.

Magnius' Music Hacking Document Part 2

http://www.pokecommunity.com/showthread.php?t=139156
Part 2 of my music hacking document. This covers more advanced stuff.

A document on Fire Red voice groups and the instruments they play.

http://www.pokecommunity.com/showthread.php?t=148811
This document lists every voicegroup in Fire Red, as well as the instruments those voice groups can play.

A complete list of Fire Red's Music Values

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.

GBA Music Looping

http://www.pokecommunity.com/showthread.php?t=123520
This is a document by Clonex25 that explains how to successfully loop a song once you've inserted it.

IF YOU ENCOUNTER THE VBAL ERROR OR HAVE PROBLEMS RUNNING SAPPY ON WINDOWS 7 DOWNLOAD THIS VERSION OF SAPPY.

I also mirrored that file here, in case the original link gets deleted.
 
Last edited:
230
Posts
16
Years
  • Seen Jan 3, 2010
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.
 

clonex25

Just droppin' by...
74
Posts
16
Years
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).
 

Swampert 22

Is making tools for you...
393
Posts
18
Years
Hey Magnius, great, easy to follow tutorial, but when I click on 'assemble that ugly thing' the program crashes. I've retried several times with different songs but it still won't work. Any ideas?
 

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
Hey Magnius, great, easy to follow tutorial, but when I click on 'assemble that ugly thing' the program crashes. I've retried several times with different songs but it still won't work. Any ideas?
Hmm... How long are your midi files? Generally I've found that longer midis don't work sometimes or it may also be that the midi has a lot of instruments.
 

clonex25

Just droppin' by...
74
Posts
16
Years
Hey Magnius, great, easy to follow tutorial, but when I click on 'assemble that ugly thing' the program crashes. I've retried several times with different songs but it still won't work. Any ideas?

The filename's length is somehow relevant to this case. Magnius is right in his suggestions of reducing instruments. I, too, encountered the same problem (if not the crash, the weird instrumentation).
 

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
No you'd need the midi. However, if you need a midi of a particular song I can help in making it.
 

Swampert 22

Is making tools for you...
393
Posts
18
Years
The filename's length is somehow relevant to this case. Magnius is right in his suggestions of reducing instruments. I, too, encountered the same problem (if not the crash, the weird instrumentation).

Oh ok then. Thanks for the help. I'll try these things later!
 
13
Posts
16
Years
  • Seen May 3, 2008
I have a problem with Sappy. When I open my Fire Red rom with it, I get a message saying "Sappy has stopped working". Help anyone? I'm using Vista Ultimate if that helps.
 

Tony the Awesome

mi nombre es tony
233
Posts
16
Years
  • Seen Mar 13, 2010
Thank you Magnius for making this guide.
I learned how to add music into my rom!
Thank you!
 
112
Posts
17
Years
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..

Giovanni
 

Apple Inc.

This Changes Everything. Again
732
Posts
16
Years
  • Age 30
  • Seen Mar 29, 2023
Great tutorial. When i go to assemble it closes because something goes wrong.

PS. pm me for assignment
 
13
Posts
16
Years
  • Seen May 3, 2008
Dammit why are there so many probs with Vista? And it would've been so cool to put Alter Bridge's Metallingus in my hack.
Does anyone know of any other program similar to sappy?
 

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
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.

- "Square" and "Sawtooth" instruments seem to emulate the GBA synth quite nicely.

And yeah, that's what I've observed. Much of how the GBA and Sappy interpret the sounds is still a mystery to me.
 

Apple Inc.

This Changes Everything. Again
732
Posts
16
Years
  • Age 30
  • Seen Mar 29, 2023
Also another thing is that it will also work with other GBA games. However you cannot export easily. I tried it and it ended up being a 5 second bit of it
 
76
Posts
16
Years
Midi Problem

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!
 
Last edited:

Magnius

Pokemon Music Hacking Guru
295
Posts
18
Years
  • Seen Feb 17, 2014
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.

http://www.sendspace.com/file/klxksr

Here's a youtube clip showing it in game....

http://www.youtube.com/watch?v=lgQtTmYgLzE
 
Last edited:

clonex25

Just droppin' by...
74
Posts
16
Years
- 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.
 
Back
Top