re: the .slb data offset is the .pNN segment's 2048 grid phase
Closes the open question at the bottom of slb-data-offset.md. X = (cumulative start of the .pNN segment holding the wave) mod 2048 The XMA packet grid is 2048-aligned inside each individual segment file, but the .pak TOC addresses entries in the flat concatenation at offsets that are themselves multiples of 2048. The segment files are not multiples of 2048 long, so each join shifts the grid by size % 2048 — and the four disc-wide values are exactly the running sums: 1392 = |p00| % 2048; 1468 = +76; 1600 = +132; 1728 = +128 Exact for 7620/7620 banks with a RIFF and 1163/1163 RIFF-less ones via their seek chunk, 0 mismatches. Supersedes both heuristics (the 99.62 % packet scan and the 99.97 % seek-residue rule) and dissolves the 28 ties. The refutation test — an entry straddling a segment join must show two phases in one file — passes on all 3 straddlers. The leading bytes are the previous bank's audio, not a header: byte diversity per offset is indistinguishable from a known packet (101.06 vs 101.90, no fixed field anywhere), the seek packet counts chain exactly across consecutive entries, and the inter-entry bytes no TOC entry claims are 1903/1928 non-zero. Also recorded: the real bank header layout (id, block size 0x800, header size in blocks, XMAWAVEFORMAT), and the loader search — a null result. None of the four values exists as an immediate, a table or a float anywhere in default.xex, which is what a pack-time artifact predicts. Sound subsystem addresses mapped for the next pass. Withdraws the 🟡 "most banks declare more data than they store" finding: declared data sizes are exact (260/260), the bytes are just outside the TOC window. Also withdraws my own "the header is unique, so nothing is shared" inference — the windows tile, they do not overlap. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
@@ -94,7 +94,7 @@ files, which is how the same ground got covered twice.
|
||||
| [`idxd-legacy-reader-audit.md`](idxd-legacy-reader-audit.md) | The legacy IDXD string-pool reader vs the real field table — what the old numbers got wrong | 🟡 shape CONFIRMED by hand (`FCSRange`, `ShieldRatio`, hangar `Model`); disc-wide rates are single-source |
|
||||
| [`structures/idxd-container.md`](structures/idxd-container.md) | The IDXD/IXUD container — record/field table, and the two beliefs it withdraws | ✅ CONFIRMED disc-wide, 7 750/7 750 objects and 1 271 462/1 271 462 named fields, zero failures |
|
||||
| [`structures/hud-glyph-quad.md`](structures/hud-glyph-quad.md) | The HUD's glyph quad — vtable `0x820B2A64` | ✅ CONFIRMED for the object layout and the atlas size, read live off |
|
||||
| [`structures/slb-data-offset.md`](structures/slb-data-offset.md) | `.slb` leading-stream offset is `first_riff % 2048`, not the constant 1392 | ✅ CONFIRMED by decoding — 85 of 140 sampled banks yield more audio (median 70×), 54 identical controls; offset recovery for `RIFF`-less banks is 99.95 % on the labelled set |
|
||||
| [`structures/slb-data-offset.md`](structures/slb-data-offset.md) | `.slb` data offset = `(cumulative start of the `.pNN` segment) mod 2048`; the leading bytes are the previous bank's audio, not a header | ✅ CONFIRMED — exact for 8 783/8 783 banks, 0 mismatches; the four values are the running sums of the five segment sizes mod 2048; supersedes the earlier scan/`seek` heuristics |
|
||||
| [`structures/sound-pak-contents.md`](structures/sound-pak-contents.md) | Census of `sound.pak`, and the limit of the leading-region rule | ✅ CONFIRMED, 5 135/5 135 names hash into the TOC and **9 519/9 519** entries accounted for; ⚠️ leading-region rule holds for 1 571/4 382 eng and 0/5 100 jpn |
|
||||
| [`structures/sound-cue-table.md`](structures/sound-cue-table.md) | The cue index in `tables.pak` — message id -> cue -> sound id -> `.slb` bank | ✅ CONFIRMED, 1 326/1 338 script message ids bind to a bank; SOUNDS and FILES agree on the same 12 absentees, 0 orphan files |
|
||||
| [`structures/cutscene-message-table.md`](structures/cutscene-message-table.md) | Cutscene dialogue — speaker, portrait, on-screen seconds, audio cue per page | ✅ CONFIRMED, field count = 9·PageCount+2 for all 7 PageCounts, 1 252/1 252 caption keys match, 138 ids close both ways |
|
||||
|
||||
Reference in New Issue
Block a user