re: withdraw the 'Japanese banks are a separate format' item, one iteration later

This commit is contained in:
Sylpheed RE agent
2026-08-26 03:57:08 +00:00
parent d15b3d8d85
commit d6127a049e
3 changed files with 17 additions and 5 deletions

View File

@@ -6,7 +6,7 @@ unknown, what evidence exists, and what the first step would be. Move an item in
---
## ⚠️ OPEN (2026-08-26) — the Japanese voice banks are not decoded
## ❌ WITHDRAWN (2026-08-26, same day) — the Japanese voice banks are NOT a separate format
The `sound.pak` census (see
[`structures/sound-pak-contents.md`](structures/sound-pak-contents.md)) shows
@@ -19,10 +19,13 @@ exactly, so this is a limit of the finding, not a defect in the reader.
Since `FILES` names the **Japanese** set and the game substitutes the language
directory, the undecoded half is the one the table actually points at.
**First step**: take one misaligned `jpn\` bank and one `RIFF`-less one, and
locate the audio by scanning for XMA1 packet structure rather than assuming a
fixed data offset. The English aligned banks are the control — the same scan
must find their known leading region.
**Resolved by that first step.** Scanning instead of assuming showed the offset
is simply `first_riff % 2048`, which takes four values disc-wide (1392, 1468,
1600, 1728) by language and subdirectory. The Japanese banks decode fine at
their own offset — median **70×** more audio on a 140-bank FFmpeg-verified
sample — and the same bug was silently affecting 1 873 `eng\Voice` banks. I had
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.

View File

@@ -94,6 +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, 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-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 |

View File

@@ -46,6 +46,14 @@ are subtitle-only.
consistent with the previously recorded finding that a set of lines exists only
undubbed, and it puts a number on it from the archive side.
> ❌ **CORRECTED the same day — see [slb-data-offset.md](slb-data-offset.md).**
> The section below measures correctly but concludes wrongly. The Japanese banks
> are **not** a different layout: the leading-stream offset is
> `first_riff % 2048`, which is 1392 only in `<lang>\etc\`. Every "misaligned"
> row here is a bank being decoded mid-packet, in English as well as Japanese.
> The numbers stand as a measurement of the *old constant's* reach; the
> interpretation does not.
## ⚠️ The leading-region rule is English-only
This is the part that matters most, and it bounds an existing result.