diff --git a/docs/re/structures/slb-data-offset.md b/docs/re/structures/slb-data-offset.md index 129a0e1e..0f5e840d 100644 --- a/docs/re/structures/slb-data-offset.md +++ b/docs/re/structures/slb-data-offset.md @@ -392,3 +392,47 @@ What survives: * ❌ Both my "69.8 % are truncated" and my attempted reversal of it are off the table. The measured fact is unchanged and narrow: **the declared `data` size exceeds the TOC window for 5 296 of 7 586 banks.** + + +## ❔ The `seek` chunk's layout — identified, but it does not yield a packet count + +The decoder-independent boundary signal this page called for is the `seek` +chunk. Its **shape** is now readable; its **arithmetic** is not. + +Immediately after the `seek` tag sits a little-endian size, then a short header, +then a strictly ascending table: + + eng\etc\VOICE_D_452 seek at +3 440 size 64 -> 16 words + eng\Voice\VOICE_TCAF_592 seek at +9 660 size 108 -> 27 words + eng\Voice\VOICE_TCAF_608 seek at +28 092 size 348 -> 87 words + + words after seek+8 (big-endian): + 0x01000000, , 0, then ascending: 0, 1572864, 3932160, 6160384, ... + +Word 0 is `0x01000000` in every bank examined — a version or entry-size marker. +Word 1 varies and its top byte is 14 / 25 / 85 for the three above. Word 2 is 0, +and the ascending run begins after it. + +**Two readings tried, both fail:** + +| reading | D_452 | TCAF_592 | TCAF_608 | +|---|---|---|---| +| declared `data` size ÷ 2048 (packets) | 13 | 17 | 371 | +| `seek` size ÷ 4 (entries) | 16 | 27 | 87 | +| entries − 3 header words | **13 ✅** | 24 ✗ | 84 ✗ | + +The third row is the near-miss that would be easy to adopt: it is exactly right +for `VOICE_D_452` and wrong for the other two. That is a one-of-three fit, and +this page has already recorded two measurements today that returned plausible +numbers for questions they could not answer — so it is recorded as **failed**, +not as a rule with exceptions. + +The ascending values are not packet indices: the steps (≈1.5–2.2 million) are far +too large for a bank of a few hundred packets, so they are sample or +fixed-point offsets on some other scale that has not been identified. + +**What the next attempt should know**: the chunk is real, its size field is +little-endian, three header words precede the table, and the entry count is +*not* the packet count. `auto/slb-loader` reports chaining `seek` packet counts +successfully across consecutive entries — whatever field it used is not one of +the two tried here, and reconciling the two readings is the cheapest way in.