diff --git a/docs/plan/level-assets.md b/docs/plan/level-assets.md index 826e5d6..41f80e5 100644 --- a/docs/plan/level-assets.md +++ b/docs/plan/level-assets.md @@ -1405,3 +1405,43 @@ checked yet. not be listed as unparsed geometry. What it contains *after* the descriptor is still unknown, and the file is large enough that the descriptor is unlikely to be all of it. + +## Tie spans: a constant first word, and three quantized floats + +**Range measured:** all **1,864 tie spans across 27 levels**, read at each +class entry's geometry offset. + +**Method:** read `+0x00`, `+0x0c` and the three `f32` at `+0x10`, `+0x14`, +`+0x18`, and count distinct values per position. + +**Result:** + +- `u32@+0x00` takes **exactly one value across all 1,864 spans** -- `0x00000100`, + 256. A constant first word across the whole disc. +- `+0x0c` takes **83 distinct values**, so it is not constant. +- The three floats take **103 distinct triples** built from **42 distinct + values**, and those values are round: 4, 8, 9, 10, 12, 15, 16, 18, 20, 24, + 25, 30 ... Only 10 of the 42 are exact powers of two. + +Two spans on level 0 open: + + +000 00000100 00005070 000065c0 07050612 + +010 41400000 41c80000 42200000 00009460 + +and the same second, different first-two: + + +000 00000100 00007ca0 0000a040 0605091e + +010 41400000 41c80000 42200000 0000ddf0 + +**What this rules out.** The three floats are not a general bounding box: a box +would take continuous values, and these come from a 42-value set of round +numbers. They are authored or quantised quantities -- a grid, a size class, or a +set of LOD thresholds -- and nothing measured here separates those. + +**Correction to an earlier reading.** These floats were previously read as a +bounding-box minimum, from level 0's first two spans happening to share +(12.0, 25.0, 40.0). That triple holds on 266 of 1,864 spans, not all of them, +and the value set is quantised. The bounding-box reading does not survive. + +**Not decoded:** what the three floats are, what `0x100` at `+0x00` counts, +and what the 83 values at `+0x0c` are.