Okay, I dumped the patch resources for MFC, FB-01, and CSM-1 from the SCI Companion test game to dig around in with a hex editor. The MFC patch resource (patch 002) is almost completely straightforward - it's mostly a bunch of 64-byte blocks with names at the beginning, which look to exactly match the FB-01's internal voice format as documented in its manual. (The internal representation, not the SysEx representation, which is awkwardly chopped up into nybble values!) The only part I'm not clear on is a couple of 2-byte sections at the beginning and middle of the file. The first is "89 00" (hex,) which (if I'm reading the available information correctly) is just the type ID for a patch resource. The second (which occurs after the first 48 voices - the size of one FB-01 bank - out of 96 total) is "AB CD," which isn't found in the other two but does show up close to the end of the MT-32 patch resource (and nowhere else in either the MFC resource or the MT-32 resource.) Anybody know what this signifies? The
ScummVM wiki seems to think it's merely a separator, since the MFC patch file can contain either one or two banks. If this is true, then it should be trivial to create a new set of patches from FB-01 banks. I've got an FB-01 in the mail, so I'll give it a shot when I get a chance.
Interestingly, however, the resource SCI Companion labels as "FM-01" (I presume they mean F
B-01?,) patch 004, is completely different - it's only 235 bytes long, has no FB-01 patch blocks in it, and looks a heck of a lot like the CSM-1 patch resource, patch 007. Both files have the "89 00" ID followed by fourteen zero bytes, and then have what look to be a series of two-byte pairs in which the second byte is almost always zero, and then end with the exact same last 46 bytes. I have no idea what this is. For the CSM-1, I presume that it must contain some sort of instrument map, since the CSM-1 doesn't have custom patch capability and only has about thirty presets, but I'm not sure why the FB-01 would need a similar file...anybody know anything about this?
Edit: the
ScummVM Wiki says that patch 004 is used by the GM driver, and gives a file format, only the file format doesn't at all match the resource with the SCI Companion test game - for starters, the test game's patch 004 is
much too short! Oy...
Further edit: the
ScummVM Wiki also claims that the FB-01 driver uses patch 002 as well, which makes more sense (though it means SCI Companion doesn't know what it's talking about.) Still no idea how the CSM-1 patch 007 works, though...