The game data consists of the following:
BGM.THFS / IMAGE.THFS / SCRIPT.THFS / VOICE.THFS / PACK.DAT
Quote (THFS Header)
0x00000000: 5448 4653 (THFS) [file signature]
0x00000004: xxxx xxxx (integer) [file size]
0x00000008: xxxx xxxx (integer) [number of files in hex]
0x0000000c: 0000 0000 4-bytes of padding
Quote (Contents table in a THFS Container)
each entry is 0x00000040 in length.
0x00000000: xxxx xxxx (integer) [unknown value]
0x00000004: xxxx xxxx (integer) [unknown value]
0x00000008: 0000 0000 ... / ... 0000 0000 (28-byte string) [filename, including trailing zeroes]
0x00000030: xxxx xxxx (integer) [Start address]
0x00000034: xxxx xxxx (integer) [length of file]
0x00000038: xxxx xxxx (integer) [compression flag]
0x0000003C: xxxx xxxx (integer) [uncompressed filezise]
relevant data is compressed using zlib (signature=789c)
Note: the file PACK.DAT is actually a .THFS file, it's just been renamed.
this file has it's garbage data altered. Instead of 0000 0000's the data is FEFE FEFE