re: kill the duplicate-resource-name hypothesis for the viewer bug, and reconcile 22 vs 16 stages

build_ship_model resolves each placement with find(|m| m.name == p.resource) --
first match wins -- so a repeated resource name inside a container would draw
the wrong geometry. It cannot happen: decoding every XBG7 resource in all 22
stage containers gives 4603 resources and ZERO repeated names. Per ship it is
tighter still: e106 wants 9 distinct names and decodes exactly 9 models for 11
placements, e105 9 for 9, f105 5 for 6.

Two of the three remaining candidates for the user-reported viewer bug are now
gone (this and include_external), leaving mirror handling and the exhaust cones,
plus the untried visual comparison.

The container sweep also reconciles a number I flagged earlier: the disc has 22
stage CONTAINERS -- Stage_S01..S16 plus Stage_S24..S29 -- i.e. 16 story stages
plus 6 extra. The save screen's 16 STAGE sprites and the notes' "22 stages" are
both right and count different things; neither gets edited to match the other.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-11 21:31:18 +00:00
parent 671891f9bf
commit a7905d0f6b
2 changed files with 37 additions and 3 deletions

View File

@@ -448,9 +448,11 @@ Three things fall out, none of which needed the emulator:
shows as `At Standby`), `STATE_STAGE_CLEAR`, `STATE_GAME_CLEAR`.
- **The screen can label exactly 16 stages**, `STAGE01`…`STAGE16`. That matches
`weapon.tbl`'s `AUTO_SETTINGS` list — `stage01…16` plus `tutorial01…06` and
`challenge01…06` — so **16 is the story-stage count**, and the "22 stages"
figure used elsewhere in these notes counts a different set (🟡 probably story
plus challenge). Worth reconciling before either number is relied on.
`challenge01…06` — so **16 is the story-stage count**. ✅ **The "22 stages"
figure used elsewhere in these notes is now reconciled**: the disc carries 22
stage *containers*, `Stage_S01…S16` **plus `Stage_S24…S29`** — 16 story + 6
extra. Both numbers are right; they count different things, and neither should
be edited to match the other.
The panel's own field names are here too, with their screen positions:
`Points`, `FlightTime` (`%03d:%02d:%02d`), `ClearTimes`, `CompletionRate`,