OAF

From Game Research Wiki
Jump to navigation Jump to search

Used in the following game(s):

  • South Park: The Stick of Truth

Structure

Header
Size Content Description
12Bytes Unknown Appears to be same data on all archives
4Bytes Offset Offset for filename list
4Bytes Unknown(?) Padding or part of 8 byte number
4Bytes File Count Number of Files inside.
Index Entry
Size Content Description
4Bytes Unknown No idea what this is... maybe some kind of CRC or hash?
4Bytes Offset File location
4Bytes Unknown(?) Padding or part of 8 byte number
4Bytes File Size Size of file(?)
4Bytes Unknown Padding or part of 8 byte number

Research

Different from the ones I'm used to. A quick look doesn't show much of a normal index but file names may be stored at the end of the file. This could be a bit tricky but only two ways I can think of this working is it stores the start offset of the file name for a specific entry or it loads all file names into memory.

File offsets may just be of a 'long long' data type, which is a 64bit number stored over 8bytes rather than 4bytes of padding. I wonder I could just use as streamoff. That's typedef as long long... right? O.o

Filenames are null terminated/separated by a 0x00 and might not have any whitespace in the filename/path since looks like they used underscores like most people do. XD

There is a little bit of data before or after each data entry. Unsure what it means right now.