CODE
/* GFC files */
struct mainHeader {
uint unknown;
uint gobSize;
uint indexCount;
uint fileCount;
}
struct index {
uint size;
uint offset;
uint nextPiece;
}
struct indexThing {
uint unknown; // CRC maybe?..
}
struct fileThing {
uint unknown;
uint unknown;
uint file;
}
struct fileIndex {
char[256] path;
uint unknown;
uint unknown;
}
The main header is followed by the index (has indexCount elements), followed by the indexThing (also indexCount elements)...These are followed by fileThing (has fileCount elements), and fileIndex (also has fileIndex elements)...
The GOB files just contain the data in blocks (padded to 2048 I believe)...You can get the offset/size from the index...Each block of data starts with STBL and ends with ENBL (start block/end block)...I believe the data between is compressed, but I haven't the foggiest with what...
I also had a look at the d3tfull file...Unlike the GFC, it's little endian...
CODE
/* d3tfull file */
struct mainHeader {
uint unknown;
uint indexCount;
uint unknown
}
struct index {
uint unknown
uint unknown
uint unknown
uint unknown
uint unknown
uint unknown
uint offset;
uint size;
}
For this file, the offset points to further in the file itself...Your guess is as good at mine what any of this is...It's also possible the mainHeader is larger, and offset/size isn't the last elements in the index...But this seems to fit...
It's not much, and doesn't let you do anything...But hopefully it'll be a start for anyone else who's interested...