Rsizetable: Difference between revisions
Jump to navigation
Jump to search
(Created page with "The resource size table is an ares file format managed by ares::ResourceSizeTable. It contains an array of sorted file path Crc32b hashes + file resource heap size pairs, '''the earliest revision has no header'''. Since succeeded by a version with a 0xc byte header and an optional additional array of fixed 128 byte file paths + file resource heap size pairs for file paths that would produce a hash collision. Since succeeded by version with a new 0x16 byte header, the 0x6...") |
(Improve wording) |
||
Line 1: | Line 1: | ||
The resource size table is an ares file format managed by ares::ResourceSizeTable. | The resource size table is an ares file format managed by ares::ResourceSizeTable. '''The earliest revision has no header''', only containing the crc32b array, the size of array is implicitly calculated. Succeeded by a version with a 0xc byte header and an optional array of fixed size file path + resource size pairs for file paths that would produce a hash collision (default fixed size of that game's max path). Since succeeded by a version with a new 0x16 byte header, the 0x6 byte magic makes all subsequent u32 values unaligned. | ||
=== Header (revision 1) === | === Header (revision 1) === | ||
Line 41: | Line 41: | ||
|0x4 | |0x4 | ||
|u32 | |u32 | ||
|Version | |Version | ||
|- | |- | ||
|0xa | |0xa | ||
|0x4 | |0x4 | ||
|u32 | |u32 | ||
| | |Size of paths in collision table (0x80 and 0xa0 have been used) | ||
|- | |- | ||
|0xe | |0xe | ||
Line 70: | Line 70: | ||
|0x4 | |0x4 | ||
|u32 | |u32 | ||
|Crc32b of | |Crc32b of file path | ||
|- | |- | ||
|0x4 | |0x4 | ||
Line 88: | Line 88: | ||
|0x0 | |0x0 | ||
|0x80 | |0x80 | ||
| | |char[ares MaxPath] | ||
| | |Fixed size file path | ||
|- | |- | ||
|0x80 | |0x80 |
Latest revision as of 00:26, 19 February 2024
The resource size table is an ares file format managed by ares::ResourceSizeTable. The earliest revision has no header, only containing the crc32b array, the size of array is implicitly calculated. Succeeded by a version with a 0xc byte header and an optional array of fixed size file path + resource size pairs for file paths that would produce a hash collision (default fixed size of that game's max path). Since succeeded by a version with a new 0x16 byte header, the 0x6 byte magic makes all subsequent u32 values unaligned.
Header (revision 1)
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | Magic ("RSTB" in big-endian) |
0x4 | 0x4 | u32 | Crc32b resource size pair count |
0x8 | 0x4 | u32 | Path resource size pair count |
Header (revision 2)
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x6 | u32 | Magic ("RESTBL" in big-endian) |
0x6 | 0x4 | u32 | Version |
0xa | 0x4 | u32 | Size of paths in collision table (0x80 and 0xa0 have been used) |
0xe | 0x4 | u32 | Crc32b resource size pair count |
0x12 | 0x4 | u32 | Path resource size pair count |
Crc32b Array
Array of hash + size pairs immediately following the header, if the header exists. Sorted by hash.
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x4 | u32 | Crc32b of file path |
0x4 | 0x4 | u32 | Size required by file resource in ares |
Path Array
Array of path + size pairs immediately following the Crc32b array, if the file path array exists. Sorted by path.
Offset | Size | Type | Description |
---|---|---|---|
0x0 | 0x80 | char[ares MaxPath] | Fixed size file path |
0x80 | 0x4 | u32 | Size required by file resource in ares |