Data Table
A data table file typically uses the .dat file extension. It uses a table structure with columns and rows. The content is split in a fixed size and variable size data section. There is no header.
Each data table has up to four variations, differentiated by their file extensions:
.dat: 32-bit reference addresses, UTF-16LE strings.dat64: 64-bit reference addresses, UTF-16LE strings.datl: 32-bit reference addresses, UTF-32LE strings.datl64: 64-bit reference addresses, UTF-32LE strings
Fixed size data
The fixed size data starts with the 32-bit amount of rows followed by the actual rows. The size of each row depends on the columns defined by the data table. There is no metadata for the columns in the file, thus it has to be reverse-engineered by the community.
<!-- protocol "Row Count: 32, Row [0] (variable): 64, ...: 32, Row [Row Count - 1] (variable): 64" -->
Variable size data
The variable size data starts with the 64-bit magic number 0xBBBB 0xBBBB 0xBBBB 0xBBBB and is then filled with arbitrary data until the end of the file. Individual columns reference segments of that data.
<!-- protocol "0xBBBB 0xBBBB 0xBBBB 0xBBBB: 64, Arbitrary Data (variable): 128" -->
Column types
Base types
| Type | Size | Value |
|---|---|---|
| Bool | 8 | LSB as true or false |
| Byte | 8 | Unsigned integer |
| Short | 16 | Signed integer |
| Int | 32 | Signed integer |
| UInt | 32 | Unsigned integer |
| Long | 64 | Signed integer |
| ULong | 64 | Unsigned integer |
| Float | 32 | Single-precision floating-point |