From af8292c9405f87f28e58e723ede9f412229be934 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Fri, 28 Aug 2026 06:28:14 +0000 Subject: [PATCH] re: the rest of StageResource - two more value kinds, one convention refuted Swept all 19 StageResource fields by value kind. Refuted: ID + Package is not a convention. The record has exactly one *ID field (BackGroundID) and exactly one pairing stem. StageResourcePackage has no StageResourceID; WingmanIconID_0..3 have no package. n = 1 is not a rule, so last pass's generalisation is withdrawn. Fourth kind - the game:\ external path. BackGroundPackage (18 values) and StageResourcePackage (23) are neither records nor pak keys because they are ISO file paths. Mapping game:\ to the extract root and \ to /, case-folded, 41 of 41 exist on the extracted disc (hidden/resource3d/BG_Acheron.xpr, Stage_S01.xpr, ...; 166 .xpr files in that directory). Fifth form - game:\hidden\.pak+. LodEnumTable, MotionEnumTable and TBL_3D name an archive AND an entry inside it, e.g. game:\hidden\DefTables.pak+EnumLODSet_S24.tbl. Splitting on + and hashing the right half against THAT archive's keys resolves 20 of 21; the one failure is sound.pak+ with an empty entry name. Some of those entry names carry an explicit \ prefix (deu\GP_HANGAR_ARSENAL_3D.tbl, eng\, esp\), each present in 0 other archives, so the language-prefix form is genuinely used by the engine. This does NOT unblock the 2D naming problem: archive-naming refuted \ there structurally, since the six 2D paks share one identical 711-key TOC and cannot carry per-language names. Both facts stand. The 4 never-shipped _Test tables - the residual of the 344-name census - are now named: EnumCharacter_Test.tbl, EnumLocalString_Test.tbl, EnumSquadron_Test.tbl, StageMessageSet_test.tbl (lower-case test on the last). WingmanIconID_1..3 hold PGHUD_WING2/WING3/WING4, HUD element names from the PG* roster; WingmanIconID_0 is never valued. All fifteen artefacts byte-identical. --- docs/re/BACKLOG.md | 33 +++++++++++++++++ docs/re/structures/stage-definition-table.md | 38 ++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index b1e6e627..f6135a7e 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -6407,3 +6407,36 @@ id β€” the same borrow-and-re-dress pattern already seen for maps and objectives 🟑 Not settled: `Original` carries **no** `BackGroundPackage` β€” whether that is "no sky" or an engine default is unknown. + +--- + +## βœ…βŒ 2026-08-28 β€” the rest of `StageResource`: two more value kinds, one convention refuted + +Item (a). + +❌ **`ID` + `Package` is not a convention.** `StageResource` has exactly one +`*ID` field (`BackGroundID`) and one pairing stem; `StageResourcePackage` has no +`StageResourceID`, `WingmanIconID_0…3` have no package. **n = 1 is not a rule** β€” +last pass's generalisation withdrawn. + +βœ… **Fourth kind β€” the `game:\` external path.** `BackGroundPackage` (18) and +`StageResourcePackage` (23) resolve as neither record nor pak key because they +are ISO paths: mapping `game:\`β†’extract root and `\`β†’`/`, **41 of 41 exist on the +extracted disc**. + +βœ… **Fifth form β€” `game:\hidden\.pak+`.** `LodEnumTable`, +`MotionEnumTable`, `TBL_3D` name an archive *and* an entry +(`…\DefTables.pak+EnumLODSet_S24.tbl`); hashing the right half against **that +archive's** keys resolves **20 of 21**, the failure being `sound.pak+` with an +empty entry name. + +πŸ”‘ Some entry names carry an explicit `\` prefix (`deu\GP_HANGAR_ARSENAL_3D.tbl`), +each present in 0 other archives β€” the language-prefix form is real. +⚠️ It does **not** unblock 2D: `archive-naming` refuted `\` there +structurally (six identical 711-key TOCs). Both stand. + +βœ… **The 4 never-shipped `_Test` tables are named**: `EnumCharacter_Test.tbl`, +`EnumLocalString_Test.tbl`, `EnumSquadron_Test.tbl`, `StageMessageSet_test.tbl`. + +βœ… **`WingmanIconID_1…3` = `PGHUD_WING2/3/4`**, HUD names from the `PG*` roster; +`WingmanIconID_0` is never valued. diff --git a/docs/re/structures/stage-definition-table.md b/docs/re/structures/stage-definition-table.md index 9cc05d42..1799d45f 100644 --- a/docs/re/structures/stage-definition-table.md +++ b/docs/re/structures/stage-definition-table.md @@ -315,3 +315,41 @@ pattern [[stage-numbering-and-player-craft]] found for maps and objectives. 🟑 **`Original` has no `BackGroundPackage` at all.** Whether that means "no sky" or "whatever the engine defaults to" is not settled here. + +### βœ…βŒ The rest of `StageResource`, and two more value kinds + +Sweeping all 19 `StageResource` fields the same way settles the proposed +convention and adds two kinds the earlier three-way split had no box for. + +❌ **`ID` + `Package` is NOT a convention.** The record has exactly **one** +`*ID` field, `BackGroundID`, and exactly one stem pairs. `StageResourcePackage` +has **no** `StageResourceID`; `WingmanIconID_0…3` have **no** package. **n = 1 is +not a rule** β€” last pass's generalisation is withdrawn. + +βœ… **A fourth kind: the `game:\` external path.** `BackGroundPackage` (18 values) +and `StageResourcePackage` (23) are neither records nor pak keys because they are +**ISO file paths**. Mapping `game:\` β†’ the extract root, `\` β†’ `/`, case-folded: +**41 of 41 exist on the extracted disc** (`hidden/resource3d/BG_Acheron.xpr`, +`…/Stage_S01.xpr`, …; 166 `.xpr` files in that directory). + +βœ… **A fifth form: `game:\hidden\.pak+`.** `LodEnumTable`, +`MotionEnumTable` and `TBL_3D` name an archive *and* an entry inside it, e.g. +`game:\hidden\DefTables.pak+EnumLODSet_S24.tbl`. Splitting on `+` and hashing the +right half against **that archive's** keys: **20 of 21 resolve**, the one failure +being `sound.pak+` with an **empty** entry name. + +πŸ”‘ **Some of those entry names carry an explicit `\` prefix** β€” +`deu\GP_HANGAR_ARSENAL_3D.tbl`, `eng\…`, `esp\…` β€” and each is present in **0** +other archives. So the language-prefix form is genuinely used by the engine. +⚠️ **This does not unblock the 2D naming problem**: [[archive-naming]] refuted +`\` there *structurally*, because the six 2D paks share one identical +711-key TOC and so cannot be carrying per-language names. Both facts stand. + +βœ… **The 4 never-shipped `_Test` tables are now named** β€” the residual of the +344-name census is exactly `EnumCharacter_Test.tbl`, `EnumLocalString_Test.tbl`, +`EnumSquadron_Test.tbl` and `StageMessageSet_test.tbl` (note the lower-case +`test` on the last). + +βœ… **`WingmanIconID_1…3` hold `PGHUD_WING2`, `_WING3`, `_WING4`** β€” HUD element +names from the `PG*` roster ([[hud-config]]), i.e. an identity into a set the +corpus already owns. `WingmanIconID_0` is never valued.