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