UF's adventures in BMS by unknownfile at 11:17 AM EST on December 15, 2006
This thread created by popular request.
BMS (aka JaiSeq) is a sequence format from Gamecube games. As you are all aware, I have been doing analysis on the format for a while.
Known types of JaiSeq archives: - SeqBank (.arc files) (Super Mario Sunshine, Luigi's Mansion) - RARC (.arc files) (Zelda WW, Twilight Princess)
For games that use JaiSeq, take a look at the GC stream database, JaiSeq-powered games are usually identified as having "AW" files.
The purpose of this thread is to analyze the formats used by JaiSeq, including AW (samples), AAC (init files), BMS (sequences), and integrate support in in_cube.
More stuff coming soon.
by PokeParadox at 12:29 PM EST on December 15, 2006
All I can say is: Good luck :)
by unknownfile at 3:38 PM EST on December 15, 2006
And voila, I have written an extractor (with help from hcs) that extracts BMSes from seqbanks. The header is similar to the following (C code):
Regarding the sequences themselves, I am currently doing analysis on the sequence format. Once again, I urge all of you to annoy hcs to decode the .AW sample blocks so that I can figure out how to play this shiz.
You can find the BMS sequences at http://unknown.hcs64.com/JaiSeq
And yes, I am aware the extractor is somewhat broken.
I know that BMS files aren't playable, as they're not understood at all yet. However, because they're sequenced based, I'd recommend that you look into MIDI files, IT files, MOD files, and things like that. That way, you can familiarize yourself with what sequenced formats look like. Hopefully, that'd make understanding BMS easier. Also, to ease the programming end of it, I'd suggest you look for an open source MIDI/IT/MOD/etc. player. That way, you can see how they did things, and modify it to fit your needs.
Of course, a complete re-write might be in order, to accommodate BMS files. Even so, I'd think having something to learn from would help out a lot.
Anyway, good luck on this. I always look forward to whatever progress you may have had. Mouser X over and out.
I wish you good luck. A few years ago i already tried to decipher them but i suck at reverse engineering(not enough patience) so i gave up pretty early only knowing the files start with a 4 byte signature. I think there is probably more similarities with the way the nintendo ds plays sequenced data.
Edit: I just checked the bms of Donkey Kong Jungle Beat(yes i wanted the music from that game) and what i noticed is F0 and FF are very common and often with 2 bytes in between so i guess these are the note on and note off events. I could be completely wrong though. Also the the 5th byte the bigger it is the more i see E0 in the file followed by 00 and another byte(and then E0 again). Sounds like empty channels.
edited 4:14 PM EST December 16, 2006
by unknownfile at 4:42 PM EST on December 16, 2006
There is always the possibility of volume controls. Anyways, my extractor is still being written, so I can't really post it yet.
Stuff to implement:
- RARC support - Yaz0/Yay0 support
Stuff to fix:
- fake RARC suport
by unknownfile at 9:57 PM EST on December 19, 2006
While looking through the Pikmin ISO, I came across a DLL, assembled in x86. This appears to have a lot of the game code inside of it.