Feel free to follow along, as always. Link: https://www.dropbox.com/s/4whtaoy8mnt32 ... O.zip?dl=0
Byte order is big-endian. Here is the structure:
Code: Select all
// header
char{16} - ID string: "MMFW [types]" // [types] can be "Sounds" or "Pictures"
char{2} - "MM" // don't know why
byte{82} - padding? (all 0s)
uint16{2} - unknown // I've seen 0, 0x4000, and 0x8000
uint16{2} - number of files
// begin offset table
// for each file
uint32{4} - file offset
uint32{4} - archive size
// begin table 2 [unknowns]
// for each file
uint32{4} - unknown
// begin table 3 [unknowns]
// for each file
uint16{2} - unknown // seems to always be 0012 for sounds, but alternates for pictures
// begin name table
// for each file
char{32} - file name
// begin table 5 [unknowns]
// for each file
uint32{4} - unknown
// the rest is all the raw data
-Johnny
