Posted: Wed Nov 16, 2005 8:01 am
So, I now understand why the PC collection tool, Tahoe, does nothing but import and export the color maps and bitmaps. I have been working on an Amber clone for days and I haven't even gotten that far. And the color table and bitmap tables are the simple stuff, 256 RGBA colors right where the header says they should be, nice; RLE bitmaps (339 for the warrior tag) again right where the header says they should be, okay.
But the REST of the collection tags are hell.
Hue Changes, 128 bytes of data the first 64 bytes of which is the name:
00009a0: 4875 6520 4368 616e 6765 2031 0000 0000 Hue Change 1....
00009b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009e0: 4000 6aab 0000 0000 0000 0000 0000 0000 @.j.............
00009f0: 0000 0000 0000 0040 0081 e3cd 5e02 e30b .......@....^...
0000a00: 0001 0000 0000 5555 0001 0000 0000 0000 ......UU........
0000a10: e8f4 ae3e 5632 0000 0100 0000 0000 0000 ...>V2..........
What the heck are the next 64 bytes?
Then we have a mystery table of 64-byte entries, like these (the first 4 from the warrior tag):
0000aa0: 0000 0000 0000 ffff 0000 0000 0017 003b ...............;
0000ab0: 0000 0000 0000 0000 0000 0000 0030 0000 .............0..
0000ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000ae0: 0000 0000 0000 ffff 0000 0000 0019 003b ...............;
0000af0: 0000 0000 0000 0000 0000 0000 0038 0000 .............8..
0000b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b20: 0000 0000 0000 ffff 0000 0000 001b 003b ...............;
0000b30: 0000 0000 0000 0000 0000 0000 0040 0000 .............@..
0000b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b60: 0000 0000 0000 ffff 0000 0000 0021 003a .............!.:
0000b70: 0000 0000 0000 0000 0000 0000 0031 0000 .............1..
0000b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
The only thing I can figure out from these is bytes 29-30 seem to be a unique index number, meaning that of the 432 entries in this table in the warrior tag, each one of them was numbered in these 2 bytes from 1-432 (in hex, or course 1-1b0 ). To make it extra confusing though they weren't in this order. Now this tag has only (only?!) 339 bitmaps so what the heck could these be? Anyone? Buehler?
Ah, then we have the sequence table. Starts out simple enough since for the warrior tag there are only 14 sequences. And hey, look, at the right offset we find the first one:
00076a0: 626c 6f63 6b00 0000 0000 0000 0000 0000 block...........
00076b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076e0: 0000 7f20 0000 00fa 072e bee0 0000 0000 ... ............
00076f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0007700: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0007710: 0100 0087 00cc 0014 0000 0000 0000 0000 ................
We have 64-bytes for the name of the sequence, and then what? Where is the list of bitmaps? There's only 64-bytes left in this and most of it's zeroes, there's no way that there can be a list of bitmaps, sounds tag references and whatever else in here. Oh wait, there is a suspicious looking offset/length combo in there... ARGH! These aren't the actual sequences, these are references to the actual sequences!
I hate you Bungie. I gonna go look at the open source Marathon 2 code and see if Myth inherited enough from your earlier games to make this stuff readable. Of course, if you were any other company even that would be impossible...
But the REST of the collection tags are hell.
Hue Changes, 128 bytes of data the first 64 bytes of which is the name:
00009a0: 4875 6520 4368 616e 6765 2031 0000 0000 Hue Change 1....
00009b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009e0: 4000 6aab 0000 0000 0000 0000 0000 0000 @.j.............
00009f0: 0000 0000 0000 0040 0081 e3cd 5e02 e30b .......@....^...
0000a00: 0001 0000 0000 5555 0001 0000 0000 0000 ......UU........
0000a10: e8f4 ae3e 5632 0000 0100 0000 0000 0000 ...>V2..........
What the heck are the next 64 bytes?
Then we have a mystery table of 64-byte entries, like these (the first 4 from the warrior tag):
0000aa0: 0000 0000 0000 ffff 0000 0000 0017 003b ...............;
0000ab0: 0000 0000 0000 0000 0000 0000 0030 0000 .............0..
0000ac0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000ad0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000ae0: 0000 0000 0000 ffff 0000 0000 0019 003b ...............;
0000af0: 0000 0000 0000 0000 0000 0000 0038 0000 .............8..
0000b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b20: 0000 0000 0000 ffff 0000 0000 001b 003b ...............;
0000b30: 0000 0000 0000 0000 0000 0000 0040 0000 .............@..
0000b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b60: 0000 0000 0000 ffff 0000 0000 0021 003a .............!.:
0000b70: 0000 0000 0000 0000 0000 0000 0031 0000 .............1..
0000b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
The only thing I can figure out from these is bytes 29-30 seem to be a unique index number, meaning that of the 432 entries in this table in the warrior tag, each one of them was numbered in these 2 bytes from 1-432 (in hex, or course 1-1b0 ). To make it extra confusing though they weren't in this order. Now this tag has only (only?!) 339 bitmaps so what the heck could these be? Anyone? Buehler?
Ah, then we have the sequence table. Starts out simple enough since for the warrior tag there are only 14 sequences. And hey, look, at the right offset we find the first one:
00076a0: 626c 6f63 6b00 0000 0000 0000 0000 0000 block...........
00076b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00076e0: 0000 7f20 0000 00fa 072e bee0 0000 0000 ... ............
00076f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0007700: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0007710: 0100 0087 00cc 0014 0000 0000 0000 0000 ................
We have 64-bytes for the name of the sequence, and then what? Where is the list of bitmaps? There's only 64-bytes left in this and most of it's zeroes, there's no way that there can be a list of bitmaps, sounds tag references and whatever else in here. Oh wait, there is a suspicious looking offset/length combo in there... ARGH! These aren't the actual sequences, these are references to the actual sequences!
I hate you Bungie. I gonna go look at the open source Marathon 2 code and see if Myth inherited enough from your earlier games to make this stuff readable. Of course, if you were any other company even that would be impossible...