diff --git a/docs/plan/level-assets.md b/docs/plan/level-assets.md index f0d0f65..908ac76 100644 --- a/docs/plan/level-assets.md +++ b/docs/plan/level-assets.md @@ -901,14 +901,31 @@ Those 144 bytes sit in runs of 6, every 8 bytes: `(0..5), (8..13), (16..21), ...`. The body is an array of **8-byte records, 6 varying and 2 constant**. The payload is not half-floats. Decoding the 6 bytes as a `half3` gives 245.25 -and -168.375, which no shrub has. The bit patterns (`7ea5`, `1ab6`, `43d9`, -`af80`) and their repetition are VIF-packed data -- the same quadruple-word -packing moby and tfrag use, which is what the first three stride attempts were -really circling. +and -168.375, which no shrub has. -Filler around it is the PS2 NaN `0x7fff0000` rather than zeros, which is why -the body looked like noise in the earlier dumps. +**Correction, later the same day.** This section originally concluded the +payload was VIF-packed, on the strength of recurring patterns like `7ea5` and +`1ab6`. That conclusion does not survive a control. Decoding every 32-bit word +of every shrub body as a `VifCode`: -So the shrub body is a VIF packet stream in 8-byte units, and the real -question is the code assignment, not the stride. Reusing the VIF decoder -already written for tfrag is the next step. +| region | words decoding as UNPACK | distinct cmd bytes | +|---|---|---| +| shrub bodies | 24.9% | 128 (all of them) | +| uniform random | 25.1% | 128 (all of them) | +| sound_bank (definitely not VIF) | 19.0% | 122 | +| gs_ram (mixed) | 13.6% | 128 | +| moby class 0 span (known VIF) | 40.1% | 105 | + +Shrub sits on the random baseline, and all 128 possible command bytes occur, +which is what unstructured data looks like. The VIF reading was pattern +matching on a handful of recurring byte values, and it was wrong. + +Note the test is weak in general: even the known-VIF region only reads 40.1%. +So this does not prove shrub is *not* VIF -- it proves the claim was never +established. Treating three recurring bytes as a format is the same mistake as +the three stride guesses, just at a different level. + +What survives from this section is the differential finding, which rests on +grouping and diffing rather than on recognising byte patterns: 8-byte records, +6 varying and 2 constant, 144 varying bytes per group regardless of `count`. +The payload's encoding is still unknown.