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:
@@ -1663,6 +1663,24 @@ look like.
|
||||
terminator sits at the same index on both levels. No `gc_formats` module exists
|
||||
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
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user