Need help ripping Metroid Fusion MIDI's by Meowmaritus at 8:48 PM EDT on May 2, 2017
Metroid Zero Mission and Fusion are said to have the sappy data located in a different place, causing saptapper, gba_mus_riper, etc to be unable to find the sappy data. However, bout 4 years ago a user by the name of soneek managed to rip pretty much all of the MIDIs in Metroid Zero Mission, with all of the instruments other than the drumkit. I still have no idea how he managed to extract it so any help with the Metroid games specifically or information on how to find sappy data in general would be appreciated. It would be nice if you could reply, @soneek, but I understand if you're too busy.
So far I've searched inside of a Pokemon Emerald using sappy_detector.exe's results as a guide, trying to find similar looking data in Metroid Fusion and inputting the addresses into gba_mus_riper, with no success. It says "Invalid amount of tracks 234 ! (must be 1-16)" with almost any address inputted, leading me to believe I'm not even close to finding anything and that's just the default value.
Also, I'd like to point out that I'm not interested in listening to the tracks in high quality, as a lot of people trying to rip them are wanting to do (I'm doing it for research purposes). So, I don't need any resources or help with alternative methods of listening to the soundtrack. I appreciate those who were planning on doing that though lol
I hope Soneek can shed some light on this, I have that very same copy he ripped years ago which is way better than the midi rips I tried making using the VGBA app for android while playing both Metroid games...I just want the midis and soundfonts for remixing and that's it as I don't care about high quality soundtracks either just like with every other video game midi+soundfont rip. :)
I copied the sound tables from Metroid and Pokemon and overwrote the sound tables in Sonic Advance 2, then ran through gbaMusRiper. I might've used Kingdom Hearts: Chain of Memories as another template for the larger games. From what I heard I think newer versions of gbaMusRiper support Pokemon games now, but I don't remember if they support Metroid.
There was a sappy GUI I used for getting the offsets and sizes, though it was a whole ago so I don't remember exactly what I did. I hope this info is somewhat helpful in pointing you guys in the right direction.
I was actually using the latest gbaMusRiper in my tests I mentioned above.
If you could remember the name of that sappy GUI it would be very helpful, but even as it is, you've given me many great ideas to try. Also, now that I actually know that said GUI exists, I may be able to find it pretty easily with some searching.
Thanks for the help, soneek.
I'll be back after I try some more.
After a bit of searching, I found Sappy 2006 Mod 17.1, but I'm not sure if it's the same GUI that you used...
EDIT: After a bit of digging around in the sappy_detector.c file in the gbaMusRiper source code, I found an AoB (array of bytes) it uses to find the selectsong data (re-formatted for brevity): <small> 00 B5 00 04 07 4A 08 49 40 0B 40 18 83 88 59 00 C9 18 89 00 89 18 0A 68 01 68 10 1C 00 F0 </small>
Then I found a fork of it by someone named xperia64, which included an additional alternate AoB for finding Mother 3's unique selectsong data: <small> 00 B5 00 04 07 4B 08 49 40 0B 40 18 82 88 51 00 89 18 89 00 C9 18 0A 68 01 68 10 1C 00 F0 </small>
After finding neither of these AoBs in Metroid Fusion, I decided to search for the first few bytes of those AoBs which they share in common (00 B5 00 04 07) and sure enough, the ONLY search result was the unique AoB for Metroid Fusion: <small> 00 B5 00 04 07 4B 08 49 40 0B 40 18 82 88 51 00 89 18 89 00 C9 18 0A 68 01 68 10 1C 01 F0 </small>
What I did was replace that AoB in Metroid Fusion with the default one gbaMusRiper uses (and I saved it as a separate file).
I was disheartened when gbaMusRiper failed to extract the music, saying "Only a partial sound engine was found". However, I extremely surprised when I was able to open it in Sappy 2006 Mod 17.1
Example Image ("Nightmare", playing in Sappy2006) Example WAV ("Nightmare", recorded from Sappy2006 using Stereo Mix in Audacity lol note that the "jerkiness" of the notes is just caused by Sappy2006's badly programmed playback system) Example MIDI ("Nightmare", exported by Sappy2006)
Sappy2006 has some playback issues with some of the synths the game uses, but it does allow for exporting all the samples of one specific song or exporting a MIDI of one specific song. So there is still no way to generate soundfonts of the different soundbanks or export all the songs to MIDI at the same time, but I'm going to see if I can use the info Sappy2006 provides in order to get gbaMusRiper working on it so that I can extract it all at once using that.
ONE LAST EDIT: Here is an example of the "playback issues with some of the synths the game uses" that I mentioned.
Hmmm, I might have manually found the tables in the Metroid games then with a hex editor. I'll check if I get a chance later to see if I backed up what I was using back then.
Necroposting this because I feel like sharing my own rip.
Apparently the song table locations were already known at caitsith2's site. I used the one listed for Metroid Fusion USA and was able to rip everything with gbs mus riper. I ended up having to modify the soundfont to remove 0's from tone scale settings and lower the volume of all the simulated gameboy sounds. Several Midi's did not convert well sadly and I couldn't do anything to fix them...
Thank you so very much for ripping these!! What a strange coincidence that I was looking at this thread the other day and going to post here again about needing help with opening the japanese rom of Metroid Fusion in the Sappy GUI program because it kept crashing on my end, I don't know how you did it but you are a godsend!!! I'm curious though, which songs did not convert to midi?
All songs and sfx are converted, just several songs did not convert as well as the others. Every song likely at the bottom with "XX" at the start of the file name are the ones with issues varying minor to major. Just listen to them either the ost or gsfs.
Ah now I see, just begun checking out the midi's and soundfont and everything is great. It's nice listening to the soundtrack in perfect quality without any static noise or pops and I noticed some midi's have a problem playing in windows media player but they still work and open fine in my DAW, thanks for all your efforts ripping and sharing them!
I keep winamp around for various reasons like plugin comparisons. Anyways I noticed an issue when comparing how Metroid Fusion sounded compared to real hardware, Caitsith2's gsf plugin and 3.0.2 of your plugin.
From foo_gsf: https://www.dropbox.com/s/bzi1j6bd9tkdjd2/VS.%20Fake%20Chozo%20Statue.mp3?dl=1
A real hardware video: https://www.youtube.com/watch?v=0XYXu8i1de4&t=11m52s
@kode54 plenty of people still use Windows Media Player mostly because of familiarity and it's probably one of the easiest to use, at least for me but you're right. There are other great players like XMPlay which I recommend.
The gsfs use the original files played back through emulation. If the gsf's were ripped properly and the emulator is accurate, then the gsf's will sound like what they were supposed to sound like.
The midi's and soundfont were transcribed, in a sense. This can have issues if the program doing the transcribing doesn't 100 percent understand the game's sound driver and format as is the case with this game. Also, if the game uses the gameboy's sound hardware in any way, that feature can only be simulated with pre-recorded sounds in the soundfont rather than emulated and may end up sounding off as a result. "VS Fake Chozo Statue" is one of those tracks with this kind of problem.
Maybe you can upload just the GSFLIB/MINIGSF files? Conversion output is kind of redundant since I have the software to generate the same audio.
E: Here's a GBA ROM from the affected GSF:
https://f.losno.co/chozo_statue.zip
Compare against hardware, please. Yes, I know it's somewhat wrong now, but it sounded closer before. Highly Advanced is in no way a proper reference anyway, it was never volume level accurate between the GB and GBA sound.
Oh, and this isn't the wave channel, it's not even being used here. Just the two square wave channels.
edited 9:45 PM EDT September 3, 2017
E: Here's a GSF (or minigsf) to GBA converter, it imports all the MINIGSF/GSFLIB chain to produce the final GBA ROM that the emulator runs.
I know highly advanced has issues, but the 2 square wave channels still sounded similar to the video I posted several posts back... plus it was either use that as a comparison, the soundtrack version, or viogsf.
The gsf's I'm using are the ones that I think you posted awhile back. They're probably up on gsf.joshw.info now as a replacement for the old set.
This might be a better video for comparison, but it's still just as noisy: https://www.youtube.com/watch?v=yB7oSrPGAag&t=5m00s