Advertiser Content

Magnius

Pokemon Music Hacking Guru

Seen February 17th, 2014
Posted February 10th, 2014
295 posts
14.1 Years
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.
Seen January 3rd, 2010
Posted November 22nd, 2009
230 posts
11.8 Years
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.
If you remeber me, feel free to send me a PM ;-)

clonex25

Just droppin' by...

Age 34
Pearl of the Orient Seas
Seen 2 Weeks Ago
Posted May 30th, 2009
74 posts
12.2 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).




I hvae updated the GBA Music Looping thread. It now has a tutorial for looping multiple-tracked S Files. Click the link below:
http://www.pokecommunity.com/showthread.php?t=118722

Due to popular demand, I have lowered the Wild Pokemon Theme (with two versions) and added it in my music collection thread:
http://www.pokecommunity.com/showthread.php?t=139756

Next STOP: To make guidelines regarding GBA music tracks

Swampert 22

Is making tools for you...

Age 28
Male
Switzerland
Seen April 23rd, 2013
Posted November 26th, 2011
393 posts
14 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?

I've made some tools for Pokémon hacking! Please check out the thread... Swampert Tools Showcase

Head over to my thread to check out my latest tool, Pokémon Red/Blue Trainer Editor!

Visit my site for Pokémon ROM Hacking tools! Swampert Tools Homepage

Magnius

Pokemon Music Hacking Guru

Seen February 17th, 2014
Posted February 10th, 2014
295 posts
14.1 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?
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...

Age 34
Pearl of the Orient Seas
Seen 2 Weeks Ago
Posted May 30th, 2009
74 posts
12.2 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).




I hvae updated the GBA Music Looping thread. It now has a tutorial for looping multiple-tracked S Files. Click the link below:
http://www.pokecommunity.com/showthread.php?t=118722

Due to popular demand, I have lowered the Wild Pokemon Theme (with two versions) and added it in my music collection thread:
http://www.pokecommunity.com/showthread.php?t=139756

Next STOP: To make guidelines regarding GBA music tracks

Swampert 22

Is making tools for you...

Age 28
Male
Switzerland
Seen April 23rd, 2013
Posted November 26th, 2011
393 posts
14 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!

I've made some tools for Pokémon hacking! Please check out the thread... Swampert Tools Showcase

Head over to my thread to check out my latest tool, Pokémon Red/Blue Trainer Editor!

Visit my site for Pokémon ROM Hacking tools! Swampert Tools Homepage

+Sneasel™

It's a meeee, itman!

Age 25
None of your business!
Seen December 29th, 2009
Posted December 2nd, 2008
1,032 posts
12.3 Years
THis guide rocks, thanks!
I tried it and it worked!
Of coarse, i just made random music, but it still worked, and thats the important thing!
Intentions that were pure have turned obscure,
Seconds into hours, minutes into years.
Don't ask me why,
PLEASE DON'T CRY!
I can't tell you lies...

Don't click this!

PPH - A great hacking forum :)

Magnius

Pokemon Music Hacking Guru

Seen February 17th, 2014
Posted February 10th, 2014
295 posts
14.1 Years
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.
Age 23
Male
Brisbane, Australia
Seen May 21st, 2015
Posted May 11th, 2009
76 posts
12.3 Years
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!

Magnius

Pokemon Music Hacking Guru

Seen February 17th, 2014
Posted February 10th, 2014
295 posts
14.1 Years
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

clonex25

Just droppin' by...

Age 34
Pearl of the Orient Seas
Seen 2 Weeks Ago
Posted May 30th, 2009
74 posts
12.2 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.




I hvae updated the GBA Music Looping thread. It now has a tutorial for looping multiple-tracked S Files. Click the link below:
http://www.pokecommunity.com/showthread.php?t=118722

Due to popular demand, I have lowered the Wild Pokemon Theme (with two versions) and added it in my music collection thread:
http://www.pokecommunity.com/showthread.php?t=139756

Next STOP: To make guidelines regarding GBA music tracks

Magnius

Pokemon Music Hacking Guru

Seen February 17th, 2014
Posted February 10th, 2014
295 posts
14.1 Years
How do we put the export tracks down like.

$T battle?

or

battle $T?
If you're talking about folder names it would go something C:\Pokemon\$T.

As for the problem, it may be a vista related problem and I use XP so I wouldn't be sure how to resolve it.

Also since the document apparently didn't get accepted yet or something, here's a list of music values in Fire Red unless you wanted to change the music in AdvanceMap.

0105 = Healing (RS)
0106 = Level Up
0107 = Evolution Start
0108 = Evolution/Safari
0109 = Battle 1
010A = Battle 2
010B = Unknown/Not listed in Sappy
010C = Fanfare 1
010D = Fanfare 2
010E = You Fail It!
010F = You Fail It Again!
0110 = Follow Me
0111 = Game Corner
0112 = Evil Lurks
0113 = Gym
0114 = Jigglypuff's Song
0115 = Introduction
0116 = Pokemon Theme
0117 = Cinnabar Island
0118 = Lavender Town
0119 = Healing
011A = Bicycle
011B = Encounter 1
011C = Encounter 2
011D = Encounter 3
011E = You're In The Hall of Fame!
011F = Viridian Forest
0120 = Mount Moon
0121 = Abandoned Place
0122 = End Credits
0123 = Route Theme 1
0124 = Route Theme 2/Intro
0125 = Route Theme 3
0126 = Route Theme 4
0127 = Indigo Plateau
0128 = Battle 3
0129 = Battle 4
012A = Battle 5
012B = Battle 6
012C = Pallet Town
012D = Oak's Lab
012E = Oak's Theme
012F = Pokemon Center
0130 = SS Anne
0131 = Surf's Up
0132 = Pokemon Tower
0133 = Silph Co.
0134 = Cerulean City
0135 = Celadon City
0136 = Victory 1
0137 = Victory 2
0138 = Victory 3
0139 = Vermillion City
013A = Viridian City and Pewter City
013B = Gary's Theme
013C = Gary's Theme (bis)
013D = Fanfare 3
013E = Fanfare 4
013F = You caught a Pokemon!
0140 = Trainer Card Photo
0141 = Gamefreak
0142 = Victory 2 (bis)
0143 = Intro Message 1
0144 = Intro Message 2
0145 = Intro Message 3
0146 = Game Corner (+1)
0147 = Game Corner (+2)
0148 = Net Corner
0149 = Mystery Connection
014A = Game Corner (+3)
014B = Mount Ember
014C = Follow Me (alt)
014D = Water Labyrinth
014E = Tanoby Ruins
014F = Islands 1-3
0150 = Islands 4-5
0151 = Islands 6-7(AKA Violet City Theme from GSC)
0152 = PokeFlute
0153 = Battle - Deoxys
0154 = Battle 5 (+1)
0155 = Battle 5 (+2)
0156 = Encounter 4
0157 = Deoxys Encounter
0158 = Trainer Tower
0159 = Pallet Town (fame mix)
015A = Teachy TV
Advertiser Content