| MMBN Music Modding, Without Sappy!; MMBN music modding without Sappy. | |
|---|---|
| Topic Started: Sep 1 2010, 03:44 PM (2,504 Views) | |
| timaeus222 | Sep 1 2010, 03:44 PM Post #1 |
![]()
The Tech Guy
|
MMBN Music modding Without Sappy Offsets we will use or you'll need An easy way to mod BN2, or any other GBA game's music without using Sappy, for those of you who cannot use it. This guide is specifically for BN2 music modding. The people who can't use it have these problems: - Can't open game in Sappy - Can't open Sappy All those people are NOT using XP. Now if you ARE using XP, you might have these problems: - Can't preview music in Sappy Anyways, here's how to test them. Each song has its own Voicegroup, but apparently in BN2, it seems like only the title screen truly has a different voicegroup than the others. The others, use different offsets that point to the same instruments. When Prof. 9 said BN2's music channels cheat, they do xD Open HxD and your BN2 game in it. Go to 080EE934. Those point to each voicegroup, if you wanted to edit each song's instruments used. OR Go to 080F3898. Those point to the slots for each song in BN2. EX: in BN6 battle modding, 16(hex) is boss battle. If you go to the 11th line, second offset, in 32-bit, that is the 16th song(16 = 22 in decimal, so 11*2 offsets per line = 22). To test music, simply replace the first offset, title screen, with the others, to see which ones they are. Then you simply listen. Once you find what you want, go there, copy the header and the bytes below, all the way until you see something like: Values in 32-bit YYYY = don't pay attention to that. XXXXXX = part of an offset. B1 = "end this channel here" B2 = "loop at the offset right after" Right after those values is the next song. So, stop there, right after the B1, and copy and paste into a new file. Ctrl+N and paste, Ctrl+V. Don't save it, we'll use it later anyway. It's probably called Untitled-1. REMEMBER THIS FOR LATER! Next up, making the song audible :P Start with replacing the voicegroup with the new one. EX: If BN6, replace it with 081568BC. Now, you remember this, right? Values in 32-bit Let's rip some channels. On BN2, use the pointer offsets, and start highlighting from the actual first offset(If it is 080F6AA0, go to 080F6AA0 and start highlighting at the first value there. NOT starting at A0, 6A, 0F, and 08 >_>), in HxD, and end at where the actual header starts for the current song(the song that we're ripping NOW). It starts with A8140006 or similar. Paste it in the new game and note where you placed it. Go to a spot where you want your new song's header to be, in your game. Label or make a note if you want. Then paste in the file you made earlier(Unnamed, called Untitled-1 at the moment) in HxD. Afterwards, compare the channel offsets from your game with the ones from BN2. What you do is open calculator, go to scientific mode, and then find the difference between the first channel offset in BN2 and the first channel offset in the new game. Then find the difference between the first and second offsets, and add that to the new offset for the game you're importing music in. Repeat until you repointed all the pointers. Well, you remember the difference you found between offsets for the channel pointers just now? Write that down. Back to this. Values in 32-bit To review, B2 means loop at the very next offset, and B1 means end the song. The third is B3 and that means jump to this offset at this point during the song. Anyways, use HxD to find all the B2's at the end of each channel you pasted in(within the new game!), and use "the difference you found between offsets" from earlier and change the pointer offsets. ALL of them. After you're done, continue reading. REPEAT THIS! Do the same for all B3's within the channels you pasted in(within the new game!). Yes, tedious work. That is why we have Sappy. But if we can't use it(IE Ablon/all MAC users/all non XP users), this will help a lot. Now that the hard work is done, the fun work is coming up! Although some people knew this besides Ablon, he wrote a guide, so let's use it xD Read up on Ablon's guide and mod the instruments used in each channel. I'm talking about the kind of modding that has something similar to this: Values in 8-bit Once you're done, save of course. But how do we test it? How do we draw from the new offset? What we talked about at the beginning, except you now need the new offset for the new game. So if you're using BN6, this is the offset for the song list: 08158400 Otherwise, simply search for the offset using HxD. What you do is type this into the Ctrl+F box in HxD: Values in 8-bit Stop when you find the spot where you see the pattern of offset, 1F 00 1F 00, offset, 1F 00 1F 00 on each line. That is where the list of songs is for that game. I don't know about non BN games, but I believe you do the same for all GBA games. Then just replace the correct offset with the offset that leads to the new song's header, aka where A8140006 or similar starts. Now, you're done! Thanks for reading.---------------------------------------- Ablon's BN3 Music Hacking Notes
Edited by timaeus222, Feb 1 2011, 10:50 PM.
|
|
~Timaeus~ Web Designer, Music Composer "There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges ![]()
| |
|
|
|
| Dramz | Sep 2 2010, 05:27 AM Post #2 |
|
Spastic Colon
![]()
|
Some BN3 Offsets.
As with all BN games, 1F001F00 separates the pointers (8-bit). There are a series of empty, inactive slots between music and SFX, which can be activated by changing the 00 00 00 00 to 1F 00 1F 00 How can I go about finding the Voicegroup pointer list? I found the song tale the cheap way - Open up Sappy.xml as a .txt file, and search for "BLA3XE08" which is the ID code for MMBN3 Blue [offtop]You can convert ROMs from E to U by changing this ID code, which is located close to the top of the ROM. Unfortunately, MMBN6 Gregar and Fazar are not interchangable, due to the differences in the routine offsets...etc Practical Application: Using U saves on an E Rom[/offtop] Its painful work, but I did it with one channel before, but I haven't really touched the voice groups....never felt like going beyond that, cause I got Sappy working on the computers at my school. Edited by Dramz, Sep 2 2010, 05:34 AM.
|
|
|
|
| timaeus222 | Sep 5 2010, 05:31 PM Post #3 |
![]()
The Tech Guy
|
To find voicegroup offsets, you could just find the 1F001F00, which is where the actual song list is. Then, go to a song, and look at the voicegroup there. Afterwards, search that offset in HxD, and that offset should be in the voicegroup list. |
|
~Timaeus~ Web Designer, Music Composer "There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges ![]()
| |
|
|
|
| IngusRogeth | Sep 5 2010, 09:40 PM Post #4 |
|
TREZian
|
Wow, thanks a lot Tim. I did not think this was very possible!
|
Siggy by me:3![]() OoT Run is done! 1:39:45 Non-TAS console Currently planning and practicing for Zelda MM | |
|
|
|
| Dramz | Oct 6 2010, 04:47 AM Post #5 |
|
Spastic Colon
![]()
|
Woo, I finally managed to do this. I find it easy to, on a VERY expanded ROM, use similar offsets. eg) I just ripped and imported MMBN1 Boss Battle Theme (I've edited speed, and the annoying channel, so :P ) On a U BN1 ROM, it is located at 080AD870 I Imported it at 08DAD870 Despite the large number of offsets, it was a simple matter of using the Hex Editor's find function for B2 and B3, and changing 0A to DA. Less fiddling with calculators, takes less time, less chance of making a mistake. If GM wrote a prog for this, then everyone would be happy :P Edited by Dramz, Oct 6 2010, 05:03 AM.
|
|
|
|
| MegaRockEXE | Oct 6 2010, 10:38 AM Post #6 |
![]()
BN Guides Author
![]()
|
So does this tutorial suggest manually extracting the channels and placing them somewhere else? Repointing would be tedious and slow, right? |
| The Rockman EXE Zone | YouTube | |
|
|
|
| Dramz | Oct 6 2010, 12:36 PM Post #7 |
|
Spastic Colon
![]()
|
Not as slow as you'd think with some clever offset placement, but the channel's internal pointers take the most time, yes. Once you repoint the channels, and change all the necessary pointer, you have a functioning song. |
|
|
|
| MegaRockEXE | Oct 6 2010, 02:21 PM Post #8 |
![]()
BN Guides Author
![]()
|
I actually got Prof. 9 to teach me a faster method. Basically, you find the song you want to import in Sappy. Extract the tracks from the song and save them. Using a hex editor, copy 20h bytes from the header of that song. Open the rom where you want to import the music. Find some freespace, preferably at the bottom, and write-paste (ctrl+B) the header. Write down the offset somewhere. Now go to the first empty song at 08158528 and write down the offset where the header was placed. Remember to reverse the bytes. Now open the rom you just edited in Sappy and go to the last song around 38. It should be the last one with tracks displaying. Click on Import tracks and select the tracks you exported earlier. On the right, leave the header as is. For first track, use the same offset as the header, but add 20h to it. Make sure the voices is set to 0x1568BC. Import the tracks and you're done! This can be repeated for as many songs necessary. |
| The Rockman EXE Zone | YouTube | |
|
|
|
| Dramz | Oct 6 2010, 10:44 PM Post #9 |
|
Spastic Colon
![]()
|
To quote the title Music Hacking, Without Sappy Sappy is very simple to use, but only computers with Windows XP OS can use it. This is for the Vista, Windows 7 and Mac OS X users. And Sappy can deal with the header manually. But Sappy doesnt seem to like importing songs into empty slots...at least it didnt for me. I've imported/remixed about 10 songs so far, and added them into empty slots, for use in specific battles. Also, I've stumbled across this. http://www.feshrine.net/hacking/Fire%20Emblem%20Music%20Hacking%20Tutorial.pdf I know it is for Fire Emblem hacking, but one of the sections covers converting .midi format to GBA format. Worth looking into I believe. I successfully ripped and imported a 10-channel song from Fire Emblem and put it into BN6. Edited by Dramz, Oct 7 2010, 12:19 AM.
|
|
|
|
| Prof. 9 | Oct 7 2010, 07:40 AM Post #10 |
![]()
Moderaptor
![]()
|
Like ablon said, this tutorial is for music hacking without Sappy. Also, I said "this particular header is 20h bytes". The header isn't always 20h bytes. As far as I can see every header is 8h + amount of tracks * 4h. The song you used had 6 tracks so that became 8+6*4=32 so 20h. Also, it might be worth nothing that every song originally in BN6 has 1F 00 1F 00 behind it the header offset in the song table. |
Follow me on Twitter! Fork me on GitHub!
| |
|
|
|
| Dramz | Oct 7 2010, 12:59 PM Post #11 |
|
Spastic Colon
![]()
|
The header is 4 bytes, plus 4 for the voicegroup of the particular song, and another 4 for each pointer to the song/SFX's channels. And all BN6 games have the 1F 00 1F 00 behind it. Fire emblem games are separated by 00 00 00 00...wasn't so easy finding their song table :l |
|
|
|
| MegaRockEXE | Oct 7 2010, 04:26 PM Post #12 |
![]()
BN Guides Author
![]()
|
I shouldn't have posted that, then... Without Sappy, a lot of pointer recalculating will have to be done. Maybe I can get GM to make a program for that. |
| The Rockman EXE Zone | YouTube | |
|
|
|
| Mgamerz | Oct 7 2010, 09:18 PM Post #13 |
|
The ShoutBox King
![]()
|
I think you meant
|
| I run a Mass Effect 3 modding site named ME3Tweaks.com that details how to mod ME3 as well as showcasing mods for the multiplayer aspect of the game. I also developed a mod manager utility as well as an online mod creation tool named ModMaker. | |
|
|
|
| Dramz | Oct 7 2010, 11:01 PM Post #14 |
|
Spastic Colon
![]()
|
I made that suggestion to him awhile ago. You'll have to use force. |
|
|
|
| timaeus222 | Oct 9 2010, 10:25 AM Post #15 |
![]()
The Tech Guy
|
If finding 1F 00 1F 00 doesn't work(and it generally doesn't), try finding BC 00 BB, which is the beginning of basically any GBA music channel. It sometimes might not work, but it works a lot more often than 1F 00 1F 00. EDIT: The reason why it might not work is because sometimes BC 00 BB is also somewhere else in the rom that isn't related to a music channel. However, 90% of the time it will be. Example: Fire Emblem has several BC 00 BB that aren't in a music channel. Yes, a lot of repointing has to be done, which IS tedious. However, it is satisfying when you get the song imported correctly Also, this covers how to loop songs, so anyone can now fix any channel that isn't looped.
Edited by timaeus222, Oct 9 2010, 10:30 AM.
|
|
~Timaeus~ Web Designer, Music Composer "There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges ![]()
| |
|
|
|
| Dramz | Oct 9 2010, 12:39 PM Post #16 |
|
Spastic Colon
![]()
|
Yeah. I noticed that about fire emblem. The rom is massive compared to BN6 though, so I'd kinda expect 3-byte combinations to occur in more than just one place. The way I've started repointing: Find (eg) "0A08" Replace All "0A09" then just do the voicegroup. Most of the time, the only things replaced will be the pointers you want to. If it glitches, you'll have to do them individually. Edited by Dramz, Oct 9 2010, 06:28 PM.
|
|
|
|
| Dramz | Nov 6 2010, 06:06 PM Post #17 |
|
Spastic Colon
![]()
|
These are NOT my notes, I found them while learning Fire Emblem hacking. Atrius's notes: B1 = End of channel B2 = Jump command, to jump the playback pointer to another location in memory. B3 = Jump command where playback can jump back to after it again later. B4 = Return to last 0xB3 command. BB = Set Tempo BC = Set Pitch offset BD = Set instrument BE = Set Volume BF = Set Panning CF - 0xFF = Play notes of varying lengths. Edited by Dramz, Nov 6 2010, 06:08 PM.
|
|
|
|
| timaeus222 | Dec 12 2010, 05:07 PM Post #18 |
![]()
The Tech Guy
|
Cool. For a long time I hadn't known what BF really did. I just thought it was for changing to a different "group of instruments". That's how it seemed to work for me. |
|
~Timaeus~ Web Designer, Music Composer "There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges ![]()
| |
|
|
|
| timaeus222 | Feb 2 2011, 08:37 PM Post #19 |
![]()
The Tech Guy
|
I also should add in a word of warning: If an offset of yours turns out to end in B1, B2, B3, or B4, you need to move your music data. =/ And I've always thought that B3 makes the song "jump" to another specific spot in the song. After all, there's a lot of jumps. From how you said it, it seems as if you're saying B3 marks where B2 makes the song loop back to, and I see many many B3's very often. |
|
~Timaeus~ Web Designer, Music Composer "There's so much water under the bridge that the bridge is gone." ~ DarkeSword of OC ReMix My Technical Services || MPCR Home Page || My Best Game Mods || Music YT Channel || Gaming YT Channel || My Guides || My Challenges ![]()
| |
|
|
|
| 1 user reading this topic (1 Guest and 0 Anonymous) | |
| « Previous Topic · Guides & Research · Next Topic » |

Thanks for reading.







Also, this covers how to loop songs, so anyone can now fix any channel that isn't looped.