These data files have a tree structure, we begin with reading a four byte unsigned int as count, this is the amount of offsets that follow, after those offsets is a last offset aka total node size (u32). These offsets can be offsets to another branch node (offset table) or to a leaf node (data).
With knowing that we can navigate the tree but the trick is to know whether the offset is an offset to another branch node or to a leaf node.
Node sizes can be calculated by picking the next node offset and subtract the current node offset (sizeOfOffset0 = offsets[1] - offset[0]). Except for the last offset then you need to subtract the current node offset from the read size (lastOffsetSize = size - offset[-1]).
Nodes might be compressed with RNC, this applies to both data (leaf) nodes and branch nodes (but not chained as far as observed).
A common data type is an array which starts with an 8 byte header describing the value size and value count. Some arrays are interleaved while others aren't, they probably did interleave some arrays for better compression ratios.
Different files might have a different tree hierarchy. That's why LibT2FS defines schema files for them, we define our schema files in JSON (which has nothing to do with JSON Schema, it's our own format and for other purpose). But we do have defined a JSON Schema for our schema.
See Schema for current defined schemas.
| Filename | Date | Schema | SHA256 | link |
|---|---|---|---|---|
| demodata.dat | 1997-09-02 | CARTDATA.json | 600e1a0ec96f81244cdbc6e186267d3785f51fc454a39a3019025fcbaf41364d | link |
| CARTDATA.DAT | 1997-09-29 | CARTDATA.json | 17e638afa1a8689caaa100976d06641d9c770edf73053245d7dee719ad5c9571 | link |
| Cartdata.dat | 1997-11-06 | CARTDATA.json | 69feb318fae294e5d34d15eb942cf53be5520fc12e6aaaee633f000b4129c063 | link |
| demodata.dat | 1997-12-19 | CARTDATA.json | a2f54dff7e5d692283ac9274bbb70cb03a3f7253a3a6ac29fb20f5fffd9e9bb6 | link |
| Seeds of Evil.lss | 1999-01-11 | Seeds of Evil.json | 9ec578cffed6df96e9ff53844932e6d3ff39a43f176792bbf8bcdf209637f8c3 | link |
| Rok Match Levels.lsm | 1999-01-15 | Seeds of Evil.json | 4c22900227b1a387ed527ac6c90f2973bf6bed8a67900154acdb0fa633a8a88e | link |
| CTF Levels.lsm | 1999-01-15 | Seeds of Evil.json | 280d73d942c439d9c247016518b9a6cb75a27a5d13247b493fdeabc216afa327 | link |
| Arena Levels.lsm | 1999-01-15 | Seeds of Evil.json | 6aa792b84e7491219cce218677c0bceb2b9f7057edb329431e94c94963011c15 | link |
| win32.dat | 1999-01-18 | win32.json | 8d5c88dd233cbd88a9a9feebe58784f828841fa2598ca593941fac1f4773d9fe | link |
| Seeds of Evil.lss | 1999-02-05 | Seeds of Evil.json | 845d860af600b0d7a685359aafde0572f6e775c34853ccaaff85f46bce4e47c4 | link |
| Turok2Demo.lss | 1999-02-10 | Turok2Demo.json | 22b1e183396e92b0b5330e6ecaaa474e64ff8cef81ed0f29900d80524d4d36e8 | link |
| Rok Match Demo.lsm | 1999-02-10 | Seeds of Evil.json | 498aa4a06649c5bcd42513f60463efc9537f1666f12c744e9f73a60df187edaa | link |
| ID | In-file title | LibUltra | Date | Description | Links |
|---|---|---|---|---|---|
| 0000 | 00000000000000000000 | 2.0D | 1996 | Turok - Dinosaur Hunter [North America E3 Kiosk Demo 1996] | [HiddenPalace] |
| 0000 | 00000000000000000000 | 2.0G | 23-12-1996 | Turok - Dinosaur Hunter [Prototype 1996] | [HiddenPalace] [TCRF] |
| NTUP | TUROK_DINOSAUR_HUNTE | 2.0G | Turok - Dinosaur Hunter [Europe Rev 2] | ||
| NTUD | TUROK_DINOSAUR_HUNTE | 2.0G | Turok - Dinosaur Hunter [Germany Rev 2] | ||
| NTUE | TUROK_DINOSAUR_HUNTE | 2.0G | Turok - Dinosaur Hunter [North America Rev 2] | ||
| NTUJ | turok_dinosaur_hunte | 2.0G | Jikuu Senshi Turok [Japan] | ||
| NTYP | Turok 2: Kiosk | 2.0D | 02-09-1998 | Turok 2 - Seeds of Evil [Europe Kiosk Demo] | [HiddenPalace] [TCRF] |
| NTYP | Turok 2: Kiosk | 2.0D | 02-09-1998 | Turok 2 - Seeds of Evil [North America Kiosk Demo] | [HiddenPalace] [TCRF] |
| NT2D | Turok 2: Seeds of Ev | 2.0D | Turok 2 - Seeds of Evil [Germany] | ||
| NT2E | Turok 2: Seeds of Ev | 2.0D | Turok 2 - Seeds of Evil [North America Rev 1] | ||
| NT2J | VIOLENCEKILLER | 2.0D | Violence Killer - Turok New Generation [Japan] | ||
| NT2P | Turok 2: Seeds of Ev | 2.0D | Turok 2 - Seeds of Evil [Europe] | ||
| NT2X | Turok 2: Seeds of Ev | 2.0D | Turok 2 - Seeds of Evil [Europe - En, Fr, Es, It] | ||
| NDTB | South Park | 2.0D | South Park [Brazil] | ||
| NDTD | South Park | 2.0D | South Park [Germany] | ||
| NDTE | South Park | 2.0D | South Park [North America] | ||
| NDTP | South Park | 2.0D | South Park [Europe - En, Fr, Es] | ||
| NRWD | Turok: Rage Wars | 2.0D | Turok - Legenden des Verlorenen Landes [Germany] | ||
| NRWE | Turok: Rage Wars | 2.0D | Turok - Rage Wars [North America Rev 1] | ||
| NRWP | Turok: Rage Wars | 2.0D | Turok - Rage Wars [Europe] | ||
| NRWX | Turok: Rage Wars | 2.0D | Turok - Rage Wars [Europe - En, Fr, It] | ||
| NARD | Armorines Project S. | 2.0D | Armorines - Project S.W.A.R.M. [Germany] | ||
| NARE | Armorines Project S. | 2.0D | Armorines - Project S.W.A.R.M. [North America] | ||
| NARP | Armorines Project S. | 2.0D | Armorines - Project S.W.A.R.M. [Europe] | ||
| 0000 | 00000000000000000000 | 2.0D | 31-05-2000 | Turok 3 - Shadow of Oblivion [Prototype] | [HiddenPalace] |
| ABCD | TUROK3 | 2.0D | 06-06-2000 | Turok 3 - Shadow of Oblivion [Prototype] | [HiddenPalace] |
| NSED | turok | 2.0D | 10-07-2000 | Turok 3 - Shadow of Oblivion [Prototype] | [HiddenPalace] |
| NSHT | turok | 2.0D | 16-07-2000 | Turok 3 - Shadow of Oblivion [Prototype 21:14:12] | [HiddenPalace] |
| NSHT | turok | 2.0D | 16-07-2000 | Turok 3 - Shadow of Oblivion [Prototype 22:02:45] | [HiddenPalace] |
| ABCD | TUROK3 | 2.0D | 18-07-2000 | Turok 3 - Shadow of Oblivion [Europe Prototype] | [HiddenPalace] |
| ABCD | turok3 | 2.0D | 18-07-2000 | Turok 3 - Shadow of Oblivion [North America Prototype] | [HiddenPalace] |
| NTKE | Turok 3: Shadow of O | 2.0D | Turok 3 - Shadow of Oblivion [USA] | ||
| NTKP | Turok 3: Shadow of O | 2.0D | Turok 3 - Shadow of Oblivion [Europe] |