From 16476e94c31fb98cfbecf88fa85069f24b662e17 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Wed, 26 Aug 2026 04:09:33 +0000 Subject: [PATCH] re: sound.pak is fully accounted for -- the last 2 entries were named in the table static.slb (8970240 bytes, the shared SE bank) and Pj_Silph.xgs (533 bytes, XACT global settings) both hash into the TOC. Their names come from the BANK_SE and SETTINGS records of the very IDXD object this page documents -- I had printed them at the top of the write-up and then reported the entries as unidentified. 9519 of 9519 now: 5100 jpn + 4382 eng + 35 root + these 2. --- docs/re/BACKLOG.md | 8 ++++++-- docs/re/INDEX.md | 2 +- docs/re/structures/sound-pak-contents.md | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index d77007bf..d41768a1 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -27,8 +27,12 @@ sample — and the same bug was silently affecting 1 873 `eng\Voice` banks. I ha mistaken a constant derived from `eng\etc\` for a property of the format. See [`structures/slb-data-offset.md`](structures/slb-data-offset.md). -**Also open**: 2 of the 9 519 TOC entries are unaccounted for, and 55 English -banks have their first `RIFF` at or before offset 1392. +**Closed 2026-08-26**: the 2 unaccounted TOC entries are `static.slb` and +`Pj_Silph.xgs`, named by the same table's `BANK_SE` and `SETTINGS` records — +`sound.pak` is now 9 519 of 9 519 accounted for. + +**Still open**: 55 English banks have their first `RIFF` at or before offset +1392, and the 28 offset-scan ties. --- diff --git a/docs/re/INDEX.md b/docs/re/INDEX.md index ec4fbfd8..057a013c 100644 --- a/docs/re/INDEX.md +++ b/docs/re/INDEX.md @@ -95,7 +95,7 @@ files, which is how the same ground got covered twice. | [`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, 1 where neither offset works | -| [`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 517/9 519 entries accounted for; ⚠️ leading-region rule holds for 1 571/4 382 eng and 0/5 100 jpn | +| [`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 | | [`structures/isl-message-dialogue-link.md`](structures/isl-message-dialogue-link.md) | Mission scripts as dialogue — built-in 64 -> message id -> caption text | ✅ CONFIRMED total, 2 683/2 683 call sites across all 28 stages resolve, no residue | diff --git a/docs/re/structures/sound-pak-contents.md b/docs/re/structures/sound-pak-contents.md index 0ba53e9e..f44bb8d0 100644 --- a/docs/re/structures/sound-pak-contents.md +++ b/docs/re/structures/sound-pak-contents.md @@ -32,10 +32,19 @@ expected number of accidental hits is about **0.01**. | `jpn\…` — named directly by `FILES` | 5 100 | | `eng\…` — the same names with the directory substituted | 4 382 | | `BGM_*.slb`, `JNGL_*.slb` at the root | 35 | -| **total accounted** | **9 517** | -| TOC total | 9 519 | +| `static.slb` and `Pj_Silph.xgs` — named by `BANK_SE` / `SETTINGS` | 2 | +| **total accounted** | **9 519** | +| TOC total | **9 519** | -**2 entries are unaccounted for.** I did not identify them. +**The archive is now fully accounted for.** The last two took a correction: +I first reported them as unidentified, having looked past the fact that the +same IDXD object names them. `BANK_SE`'s single field is `Static.slb` +(8 970 240 bytes — the shared sound-effect bank) and `SETTINGS.PARAM` is +`Pj_Silph.xgs` (533 bytes — the XACT global settings). Both hash into the TOC, +and both were sitting in the table I had already printed at the top of this +page. For 18 candidate names against 9 519 occupied slots the expected number of +accidental matches is about 4 × 10⁻⁵, and these two are corroborated by being +named in the table rather than guessed. Only `eng` and `jpn` resolve. `deu`, `fra`, `ita`, `esp` and the alternative spellings `fre`/`ger`/`spa` produce **zero** hits, which is the measurement