diff --git a/docs/plan/level-assets.md b/docs/plan/level-assets.md index 2677305..15f13bf 100644 --- a/docs/plan/level-assets.md +++ b/docs/plan/level-assets.md @@ -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