Follow the gameplay.bin pointers: they address position and direction arrays

Where the pointers go. Following them shows what gameplay.bin indexes. The leading
table is 39 words, all of which land inside the file, and three clusters
dominate: near 150000, near 800000 and near 1050000.

The region near 797808 is position data -- 31 consecutive plausible floats that
group cleanly into xyz triples:

  246.948 201.015  73.867 |  88.240 186.000 302.598 | 107.712  12.723 183.125
  353.591 126.365  19.962 | 182.068 374.001 122.567 | 116.961 265.001 437.866

and the region near 797456 is direction data -- unit-length vectors:

  0.969 0.945 0.733 | -0.120 0.433 0.250 | -0.866 0.000 0.267

So the file's leading words are a table of pointers into float arrays, not a flat
list of small integers. The earlier reading of it as "u32 pointers holding
nothing" was too quick: it is a pointer table into data that is present.

Volumes remain unlocated. The position arrays are the right shape to bound a
volume and nothing yet shows the volume records themselves.
This commit is contained in:
2026-10-12 03:36:55 +02:00
parent b17ec17127
commit d8b8ccc6d4
+18
View File
@@ -1663,6 +1663,24 @@ look like.
terminator sits at the same index on both levels. No `gc_formats` module exists terminator sits at the same index on both levels. No `gc_formats` module exists
for this yet; it is characterised, not parsed. for this yet; it is characterised, not parsed.
**Where the pointers go.** Following them shows what `gameplay.bin` indexes. The
leading table is 39 words, all of which land inside the file, and three clusters
dominate: near 150,000, near 800,000 and near 1,050,000.
The region near 797,808 is **position data** -- 31 consecutive plausible floats
that group cleanly into xyz triples:
246.948 201.015 73.867 | 88.240 186.000 302.598 | 107.712 12.723 183.125
353.591 126.365 19.962 | 182.068 374.001 122.567 | 116.961 265.001 437.866
and the region near 797,456 is **direction data** -- unit-length vectors:
0.969 0.945 0.733 | -0.120 0.433 0.250 | -0.866 0.000 0.267
So the file's leading words are a table of pointers into float arrays, not a
flat list of small integers. The earlier reading of it as "u32 pointers holding
nothing" was too quick: it is a pointer table *into data that is present*.
**On volumes.** Nothing resembling volumes was found here. `gameplay.bin` is **On volumes.** Nothing resembling volumes was found here. `gameplay.bin` is
u32 pointers throughout and holds no float data in its first 64 words read as u32 pointers throughout and holds no float data in its first 64 words read as
`f32` (59 of 64 are denormals, i.e. small integers reinterpreted). Volumes remain `f32` (59 of 64 are denormals, i.e. small integers reinterpreted). Volumes remain