SBlk body head: the DAW size, stored twice

Picked sound_bank rather than tie, where three discriminators have now come back
negative and a fourth would be guesswork.

The body after the 24-byte head opens with twelve words. Six are settled across
all 27 levels:

    word   value                 note
    0      varies per level      not identified; 27 distinct
    1      60                    constant
    2      varies per level      not identified; 23 distinct
    3      0                     constant
    4      daw_size              == the header's daw_size, exactly
    5      daw_size              the same value again
    6,7,8  0                     constant
    9      127                   constant
    10     1                     constant
    11     0                     constant

Level 0's words 4 and 5 are both 1,482,000, and daw_size is 1,482,000.

THE POINTER THAT WAS NOT ONE

Words 4 and 5 were briefly recorded as pointers into the DAW region. They are not.
The test that promoted them was "does this value fall inside [daw_offset,
daw_offset + daw_size)" -- and the DAW region is ~1.5 MB starting near the front of
a ~1.5 MB extent, so almost any plausible 32-bit word lands inside it. 1,482,000 is
merely just under the top of exactly that range.

A range test is not an identification. What survives is EQUALITY with daw_size,
exact on all 27 levels and asserted, which is a claim that can fail rather than one
that is almost always true.

That is the fourth time this session a plausible reading of a single number has had
to be withdrawn for something falsifiable: the 305x class-ID slot, the UV-corner
texcoords, the VIF code word, and now this. The pattern is consistent enough to be
worth stating as a rule -- a test that passes almost always is measuring the shape
of the data, not a property of it.

Word 0 gets one note: levels 1 and 4 hold 13,042,052 and 13,042,054, two apart,
while their daw_sizes differ by 63,504. Whatever it is, it is not a size.

The remainder of the SBlk body -- the per-sound record table -- is still undecoded,
so sound_bank stays open. A SBlkBodyHead struct carries the twelve words with the
constants asserted in its docs.

259 tests.
This commit is contained in:
2026-10-14 03:06:36 +02:00
parent ec433e3341
commit 4ca0308499
3 changed files with 146 additions and 0 deletions
+42
View File
@@ -2865,3 +2865,45 @@ So: on a flat record, `i16[4]`/`i16[5]` are **not identified**, and the texcoord
slot of a tie vertex is unknown. What survives from the original section is the
boundary work -- `vert_ofs + vert_size + scissor_size` is the region length -- and
the LOD1/LOD2 sharing result, which is stride-insensitive.
## The `SBlk` body head: the DAW size, twice
The body after the 24-byte head opens with twelve words, and six of them are
settled across all 27 levels:
word value note
0 varies per level not identified; 27 distinct
1 60 constant
2 varies per level not identified; 23 distinct
3 0 constant
4 daw_size == the header's daw_size, exactly
5 daw_size the same value again
6 0 constant
7 0 constant
8 0 constant
9 127 constant
10 1 constant
11 0 constant
Level 0's words 4 and 5 are both 1,482,000, and `daw_size` is 1,482,000.
### The pointer that was not one
Words 4 and 5 were briefly recorded as pointers into the DAW region. They are not.
The test that promoted them was "does this value fall inside
`[daw_offset, daw_offset + daw_size)`", and the DAW region is ~1.5 MB starting
near the front of a ~1.5 MB extent -- so almost any plausible 32-bit word lands in
it, and 1,482,000 is just under the top of exactly that range.
**A range test is not an identification.** The claim that survives is *equality
with `daw_size`*, which is exact on all 27 levels and is asserted. That is the
fourth time in this session that a plausible reading of one number has had to be
withdrawn in favour of a claim that can fail.
Word 0 is worth one note: levels 1 and 4 hold 13,042,052 and 13,042,054, two
apart, while their `daw_size`s differ by 63,504. Whatever it is, it is not a
size.
Asserted in `sound_bank_sblk_body_head_carries_the_daw_size_twice`. The remainder
of the body -- a per-sound record table -- is still undecoded.