====== Filetypes: Myst and Riven ====== ==== File Format Description ==== === File Structure === * Format Type: Container * Endian Order: Big Endian * File Extension: .dat (Myst) or .mhk (Riven) Mohawk files sometimes contain some dump data; so read it by analysing the offsets. == FILE == ^ Header ^^^^ | CHAR8 | 0x4 | Identifier | "MHWK" | | INT+32 | 0x1 | Container size | //without header// | ^ Container Info ^^^^ | CHAR8 | 0x4 | Identifier | "RSRC" | | INT+32 | 0x1 | ? | | | INT+32 | 0x1 | Container size | //with header// | | INT+32 | 0x1 | Type list offset | = aa, //absolute// | | INT+16 | 0x1 | File list offset | //relative to [aa]// | | INT+16 | 0x1 | File list size | | ^ kfjkfkf ^^^^ | |||| ^ Type list ^^^^ | INT+16 | 0x1 | ? | | | INT+16 | 0x1 | Types count | = ab | | TYPEINFO* | [ab] | Type information | | | TYPEALLOC* | [ab] | Type allocation list | | ^ File list ^^^^ | INT+32 | 0x1 | File offset | //absolute// | | INT+24 | 0x1 | File size | | | INT+8 | 0x1 | File flags | | == TYPEALLOC* == ^ TypeAlloc ^^^^ | INT+16 | 0x1 | Files of this type count | = ba | | TYPEFILELIST* | [ba] | Type allocation file list | | == TYPEFILELIST* == ^ TypeFileList ^^^^ | INT+16 | 0x1 | File Resource ID | | | INT+16 | 0x1 | File Index ID | | == TYPEINFO* == ^ TypeInfo ^^^^ | CHAR8 | 0x4 | Type identifier | | | INT+16 | 0x1 | Type allocation list offset | //relative to [aa]// | | INT+16 | 0x1 | ? | | === References === http://wiki.xentax.com/index.php/Mohawk_MHK http://www.dalcanton.it/tito/esperimenti/riven/mohawk_mhk.txt