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.
This commit is contained in:
Sylpheed RE agent
2026-08-26 04:09:33 +00:00
parent e5ce7e4ba3
commit 0712a651b2
3 changed files with 19 additions and 6 deletions

View File

@@ -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.
---

View File

@@ -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 |

View File

@@ -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