re: close both remaining .slb questions in the backlog -- both were my errors

The declared sizes are honest (seek magic at data_at + declared_size, 7620/7620)
and VOICE_TCAF_608 was stereo decoded as mono, not truncated. The four offsets
are a segment-packing phase, not a per-directory header size. Neither was closed
by finding something new; both were closed by correcting a mistake of mine.
This commit is contained in:
Sylpheed RE agent
2026-08-26 05:30:57 +00:00
parent aa84aaf53f
commit e19e2aa1e8
2 changed files with 19 additions and 4 deletions

View File

@@ -40,9 +40,24 @@ packet boundary, so `seek_pos % 2048` is a second and structural derivation of
the offset (99.97 % on the labelled set). It resolves 26 of the 28 correctly and
none wrongly; the combined rule is 99.95 %.
**Still open**: ❔ why 69.8 % of banks declare more `data` than they store, and
❔ why the offset takes exactly four values by directory (see
[`structures/slb-data-offset.md`](structures/slb-data-offset.md)).
**Both remaining questions closed the same day**, and both by correcting an
error of mine rather than by finding something new:
***"69.8 % of banks declare more `data` than they store"** — the declared
sizes are **honest**. Every `RIFF`-bearing entry on the disc carries `seek`
magic at exactly `data_at + declared_size` with `packet_count × 2048 ==
declared`, **7 620 / 7 620**. The TOC window is simply not the wave boundary.
My supporting case, `VOICE_TCAF_608`, was not truncated either: it is **stereo**
(170 of 8 021 banks are) and I decoded it as mono, which yields one frame. Read
correctly it is 33.96 s, agreeing with both length signals inside the bank.
***"the offset takes four values by directory"** — the *cause* was wrong.
`X = (cumulative start of the .pNN segment) mod 2048`; the per-directory table
was a correlation, because directories cluster into segments. There is no
header: those bytes are the previous bank's audio.
Both are written up in
[`structures/slb-data-offset.md`](structures/slb-data-offset.md), including the
`seek` layout (little-endian, packet count at `+12`) and the boundary recipe.
---