diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 5c7c4de..e523cb3 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -6098,3 +6098,50 @@ Corrected in `asteroid-fields.md` and `INDEX.md`. 🟑 Not settled: whether the quaternion is objectβ†’world or worldβ†’object; the two unnamed `_Test` variant objects; what `Placement_*`/`RouteTest_*` are for. + +--- + +## βœ…βœ… 2026-08-28 β€” every challenge mission is flown on a story mission's map + +Item (a): apply the per-stage join to the other stage-resource fields. **Sharing +is exactly what the file-name view hides**, and here it is, complete. + +Of 338 distinct `(field, value)` pairs across the 22 stage objects, **31 are used +by more than one stage.** The strongest signal is `CollisionMeshes`: + +| stage | `CollisionMeshes` | `EnumerateSubobjective` | `BackGroundID` | `EnumerateWeapon` | +|---|---|---|---|---| +| S24 | `CollisionSet_S11.bin` | `SUBObjectiveSettings_S01` | `Anastasis` | `EnumWeapon_Test` | +| S25 | `CollisionSet_S07.bin` | `SUBObjectiveSettings_S07` | `Hargenteen` | `EnumWeapon_Test` | +| S26 | `CollisionSet_S03.bin` | `SUBObjectiveSettings_S06` | `Hargenteen` | `EnumWeapon_Test` | +| S27 | `CollisionSet_S03.bin` | `SUBObjectiveSettings_S03` | `Planet_Lebendorf` | `EnumWeapon_Test` | +| S28 | `CollisionSet_S14.bin` | `SUBObjectiveSettings_S01` | `Lebendorf` | **`EnumWeapon_EX5.tbl`** | +| S29 | `CollisionSet_S15.bin` | `SUBObjectiveSettings_S15` | `Earth` | `EnumWeapon_Test` | + +**6 of 6 challenge missions reuse a story stage's collision set.** Control: +**S01–S16 are perfectly diagonal**, `CollisionSet_SNN` ↔ +`SUBObjectiveSettings_SNN`, **16/16**. + +πŸ”‘ **Map, objectives and sky are borrowed independently** β€” S24 flies S11's map +with S01's objectives; S26 flies S03's map with S06's objectives under a +`Hargenteen` sky belonging to neither; S28 flies S14's map with S01's objectives +under S01's sky. Three of six mix, so "S24 *is* S11" would be wrong. + +πŸ”‘ **S28 is the only stage with its own weapon table** β€” 21 stages use +`EnumWeapon_Test.tbl` (Γ—132), the tutorials `EnumWeapon_Tutorial.tbl` (Γ—36), and +S28 alone `EnumWeapon_EX5.tbl` (Γ—6). S28 was already the odd stage (the only +`rou_f004` flight); this is a second hook on it. + +❔ **A datapoint for [[result-screens]]'s open "what does `EX_` mean"**: `EX5` is +also a **variant suffix on real names** β€” `UN_f001_TCAF_DeltaSaber_T_EX5` and +`Weapon_TCAF_Ship_AAGun_EX5`, 24 each. Not yet enough to fix the meaning. + +⚠️ **Method note worth keeping**: an *unanchored* `EX[0-9]` search over binary +payloads returns `EX0`…`EX9` at 100–180 hits each β€” pure noise from matching +inside compressed data. Only prefix-anchored names are real. (Sibling of "a +prefix match is not an exact match".) + +Written up in `docs/re/structures/stage-numbering-and-player-craft.md`. + +🟑 Not settled: what `EX` stands for; the two unnamed `_Test` variant objects; +what `Placement_*`/`RouteTest_*` are for. diff --git a/docs/re/structures/stage-numbering-and-player-craft.md b/docs/re/structures/stage-numbering-and-player-craft.md index 6914b11..3805aba 100644 --- a/docs/re/structures/stage-numbering-and-player-craft.md +++ b/docs/re/structures/stage-numbering-and-player-craft.md @@ -119,3 +119,45 @@ running 0…27. `\GP_HANGAR_ARSENAL_3D.tbl` all resolve, so the method works). * Why the numbering skips S17 and parks the tutorials at S18–S23 is a production fact this cannot reach. + +## βœ… Every challenge mission is flown on a story mission's map (2026-08-28) + +Joining the stage records **per stage** rather than per file name β€” the same move +that showed S28 borrowing S14's asteroid table ([[asteroid-fields]]): + +| stage | `CollisionMeshes` | `EnumerateSubobjective` | `BackGroundID` | `EnumerateWeapon` | +|---|---|---|---|---| +| S24 | **`CollisionSet_S11.bin`** | `SUBObjectiveSettings_S01` | `Anastasis` (S11's) | `EnumWeapon_Test` | +| S25 | **`CollisionSet_S07.bin`** | `SUBObjectiveSettings_S07` | `Hargenteen` (S07's) | `EnumWeapon_Test` | +| S26 | **`CollisionSet_S03.bin`** | `SUBObjectiveSettings_S06` | `Hargenteen` | `EnumWeapon_Test` | +| S27 | **`CollisionSet_S03.bin`** | `SUBObjectiveSettings_S03` | `Planet_Lebendorf` (S03's) | `EnumWeapon_Test` | +| S28 | **`CollisionSet_S14.bin`** | `SUBObjectiveSettings_S01` | `Lebendorf` (S01's) | **`EnumWeapon_EX5.tbl`** | +| S29 | **`CollisionSet_S15.bin`** | `SUBObjectiveSettings_S15` | `Earth` (S15's) | `EnumWeapon_Test` | + +**6 of 6 challenge missions reuse a story stage's collision set**, and the control +is exact: **S01–S16 are perfectly diagonal**, `CollisionSet_SNN` ↔ +`SUBObjectiveSettings_SNN` for their own `NN`, **16/16**. (The 22 stage objects +are the 16 story + 6 challenge; the tutorials share tables, as +[[stage-mission-tables]] records.) + +πŸ”‘ **Map, objectives and sky are borrowed independently.** S24 flies **S11's map** +with **S01's objectives**; S26 flies **S03's map** with **S06's objectives** under +a `Hargenteen` sky that belongs to neither; S28 flies **S14's map** with **S01's +objectives** under **S01's sky**. Three of the six mix sources, so "S24 *is* S11" +would be wrong β€” the re-dressing is per field. + +πŸ”‘ **S28 is the only stage on the disc with its own weapon table.** All 21 others +use `EnumWeapon_Test.tbl` (Γ—132) and the tutorials `EnumWeapon_Tutorial.tbl` +(Γ—36); S28 alone declares **`EnumWeapon_EX5.tbl`** (Γ—6, one per language pack). +A field with exactly one distinctive value is an identification hook, and S28 was +already the odd stage β€” the only one flying `rou_f004`. + +❔ **A datapoint for the open "what does `EX_` mean"** ([[result-screens]]): `EX5` +is also a **variant suffix on real unit and weapon names** β€” +`UN_f001_TCAF_DeltaSaber_T_EX5` and `Weapon_TCAF_Ship_AAGun_EX5`, 24 occurrences +each (4 per pack). So `EX5` names a *variant*, and one stage's weapon list is +built for it. Not yet enough to say what the letters stand for. + +⚠️ Method note: an **unanchored** `EX[0-9]` search over the binary payloads +returns `EX0`…`EX9` at 100–180 hits each β€” pure noise from matching inside +compressed data. Only the prefix-anchored names above are real.