I have managed to extract some of the uncompressed files packed into the Drome archive.
Check it out (they're the menu option select and cancel sound effects):
GAME DATASOUNDSSELECT.AIF
GAME DATASOUNDSCANCEL.AIF
Here's what I've learned:
GAME DATASOUNDSSELECT.AIF & GAME DATASOUNDSCANCEL.AIF are both contained in byte block 12 (0 indexed, so the 13th block or the 1st uncompressed block) referenced by compress.inf. They start with the header FORM and are normal AIF files (the OS X Terminal file command describes them as "IFF data, AIFF audio"). Their exact offsets and sizes in gamedata.gtc are:
NAME - OFFSET - SIZE
GAME DATASOUNDSSELECT.AIF - 487424 - 60362
GAME DATASOUNDSCANCEL.AIF - 548864 - 27028
A quick comparison between filelist.inf shows some interesting information:
File Path - Data A - Data B
GAME DATASOUNDSSELECT.AIF - 1613824 - 60362
GAME DATASOUNDSCANCEL.AIF - 1675264 - 27028
Between the 2 files, there are 1087 0xC7 bytes, exactly the number of bytes filelist.inf skips over in it's pointers (1613824 + 60362 + 1078 = 1675264).
This means that Data B represents the file size of the file. However, Data A doesn't point directly to the file in the compressed GTC. Here's how the file appears to be constructed prior to compression.
[FILEBYTES]
[A bunch of 0xC7 bytes]
[FILEBYTES]
[A bunch of 0xC7 bytes]
[FILEBYTES]
[A bunch of 0xC7 bytes]
...
...
...
Then, all of that gets compressed down in block of 131072 bytes (which is the true uncompressed size of each block referenced by compress.inf) and merged together.
Now here is my proof for this theory. filelist.inf puts GAME DATASOUNDSSELECT.AIF at offset 1613824, but the actual file location is much sooner. This is because the 12 blocks before the block SELECT.AIF is in are compressed, making it appear sooner in the compressed gamedata.gtc. If those 12 blocks were 131072 in size, and we added SELECT.AIF's offset from the start of the uncompressed block it appears in, that would calculate out as follows:
131072 * 12 = 1572864 + 40960 = 1613824
Which is the exact same place filelist.inf said it would be.
So, this means that, in order for us to properly extract all of the files, we will need to first decompress every one of the compressed blocks back up to their original 131072 byte size, merge them together (as files sometimes span more than 1 block), then extract them from the information in filelist.inf.
Of course, decompressing them is easier to say than to do, but we now know that each block is compressed separately and the size they should be when decompressed. My dissection tool above breaks each of these blocks down into separate files which should make this process easier.
On the plus side, we now know for certain that we won't need to make a recompressor. We also know that at least some of the files are normal files. I can confirm that the AIF files are true AIF files, and that the IFL files are plain Windows style line feed text files. It's reasonable to assume that more of the files aren't custom files like in LEGO Racers.
I don't foresee having time to try to crack the compression algorithm in the near future, so if anyone else wants to give it a go, feel free!