Difference between revisions of "OAF"

From Game Research Wiki
Jump to navigation Jump to search
 
(8 intermediate revisions by the same user not shown)
Line 11: Line 11:
| 12Bytes || Unknown || Appears to be same data on all archives
| 12Bytes || Unknown || Appears to be same data on all archives
|-
|-
| 4Bytes || Offset || Start offset for file list
| 4Bytes || Offset || Offset for filename list
|-
|-
| 4Bytes || Unknown || Padding or part of 8 byte number
| 4Bytes || Unknown(?) || Padding or part of 8 byte number
|-
|-
| 4Bytes || File Count || Number of Files inside.
| 4Bytes || File Count || Number of Files inside.
Line 21: Line 21:
! Size !! Content !! Description
! Size !! Content !! Description
|-
|-
| 4Bytes || Unknown ||  
| 4Bytes || Unknown || No idea what this is... maybe some kind of CRC or hash?
|-
|-
| 4Bytes || Offset || File location
| 4Bytes || Offset || File location
|-
|-
| 4Bytes || Unknown || Padding or part of 8 byte number
| 4Bytes || Unknown(?) || Padding or part of 8 byte number
|-
|-
| 4Bytes || File Size || Size of file(?)
| 4Bytes || File Size || Size of file(?)
Line 32: Line 32:
|}
|}


== 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.


NOTE! Number might be 8 bytes rather than 4? 64 bit int?
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


== Research ==
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
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.
 
There is a little bit of data before or after each data entry. Unsure what it means right now.

Latest revision as of 21:19, 18 August 2014

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.