re: RATC "one level deep" is not a limitation -- measured, plus a second dangling asset
INDEX read as if the parser stopped at one level. Measurement says there is nothing deeper: 2859 top-level bundles hold 18002 children at depth 1 and ZERO at depth 2, with no blob failing to parse. The children that are themselves RATC -- the .rat layout records -- are leaves. They carry no child list and reference their siblings BY NAME (the sprite they place, and via "opt " their focused variant): 3311 such leaves, every one embedding sibling names, and 10144 of 10148 references resolve within the same bundle. That is the same by-name convention used one level up (a screen config naming .prt components) and one level up again (the movie table naming <lang>.pak+<member>). The 4 unresolved references are a disc defect, not a parse gap: pmbase.rat in GP_STAGE_CLEAR.pak's four language builds places pmbase.t32, and that sprite exists nowhere -- not a pak member, not a child of those bundles. Second such dangling asset after SUBTITLE_S12B.tbl, so a reimplementation should skip a missing sprite rather than call it a decode failure. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -314,3 +314,27 @@ buttons are static (every keyframe identical), which is precisely why they make
|
||||
clean ruler. Validating the animation rule needs an element captured mid-slide.
|
||||
|
||||
Evidence: [`captures/arsenal-layout-validation.png`](../captures/arsenal-layout-validation.png).
|
||||
|
||||
## RATC nesting, measured
|
||||
|
||||
`INDEX` carried the bundle format as 🟡 "one level deep", which reads like a
|
||||
parser limitation. It is not — **there is nothing deeper on the disc**:
|
||||
|
||||
- **2 859** top-level RATC bundles hold **18 002** children at depth 1 and
|
||||
**0** at depth 2, with **no** blob failing to parse.
|
||||
- The children that are themselves RATC (the `.rat` layout records) are **leaf
|
||||
records**: they carry no child list and instead **reference their siblings by
|
||||
name** — the sprite they place and, via `opt `, their focused variant.
|
||||
**3 311** such leaves, every one embedding sibling names, and **10 144 of
|
||||
10 148** references resolve to a sibling of the same bundle.
|
||||
|
||||
That is the same by-name convention used one level up, where a screen's config
|
||||
names `.prt` components, and one level up again, where the movie table names
|
||||
`<lang>.pak+<member>`.
|
||||
|
||||
**The 4 unresolved references are a real defect on the disc**, not a parse gap:
|
||||
`pmbase.rat` in `GP_STAGE_CLEAR.pak` (four language builds) places `pmbase.t32`,
|
||||
and that sprite exists **nowhere** — not as a pak member, not as a child of those
|
||||
bundles. It is the second such dangling asset found, after
|
||||
[`SUBTITLE_S12B.tbl`](../movie-subtitle-link.md); a reimplementation should skip
|
||||
a missing sprite rather than treat it as a decode failure.
|
||||
|
||||
Reference in New Issue
Block a user