Sarc: Difference between revisions
Jump to navigation
Jump to search
(Added all of sarc.) |
(Add category.) |
||
Line 130: | Line 130: | ||
|Reserved | |Reserved | ||
|} | |} | ||
[[Category:File formats]] |
Revision as of 06:55, 9 May 2023
Sarc is a file archive format. Files are typically accessed by a binary sorted crc32 hash table. There does not appear to be an official version field, but this is fine as the format does not appear to have changed.
Header
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | Magic ("SARC" in big endian) |
0x4 | 0x2 | u16 | Size of header (0x14) |
0x6 | 0x2 | u16 | Endianess (Always 0xfffe in big endian) |
0x8 | 0x4 | u32 | Total file size |
0xc | 0x4 | u32 | File array offset |
0x10 | 0x4 | u32 | Alignment |
Sfat Section
The sfat section follows after the sarc header (header + size of header).
Sfat Header
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | Magic ("SFAT" in big endian) |
0x4 | 0x2 | u16 | Size of header (0x14) |
0x6 | 0x2 | u16 | File count |
0x8 | 0x4 | u32 | Hash seed |
Sfat Entry Array
The sfat entry array follows the sfat header (header + size of header). Array is sized by the sfat header file count, and is sorted by the crc32 hash.
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | File name crc32 hash |
0x4 | 0x3 | u24 | File name offset (may be invalid) |
0x7 | 0x1 | u8 | Number of file hash collisions |
0x8 | 0x4 | u32 | File array start offset |
0xc | 0x4 | u32 | File array end offset |
Sfnt Section
Following the sfat section is the sfnt section, a header preceding an array of file path of null-terminated strings.
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | Magic ("SFAT" in big endian) |
0x4 | 0x2 | u16 | Size of header (0x8) |
0x6 | 0x2 | u16 | Reserved |