diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 233c2ccb..02e94c15 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -6186,3 +6186,41 @@ S28's own weapon table is a single `_EX5` AA-gun variant, and the only other 🟡 Not settled: what `EX` stands for; the two unnamed `_Test` variant objects; what `Placement_*`/`RouteTest_*` are for. + +--- + +## ✅❌ 2026-08-28 — `_EXn` is the n-th challenge stage; the `Extra0n` join is refuted + +Item (a) continued. Reading the docs first paid: `unit-substructure-records` +already had `UN_e001_ADAN_Elan_EX4` and `arsenal-item-weapon-chain` already had +`_T_EX5_el`, so last pass's "the only two `_EX5` names on the disc" was too +narrow — withdrawn and replaced by a census. + +✅ Every name **ending in** `_EX` across all 41 archives, taken from +parsed record names / field names / string values: **26 names, two digits only** — +`_EX4` (7 units, 6 ADAN + 1 TCAF) and `_EX5` (4 TCAF units + 1 weapon), each +with a `UnitName_`/`WeaponCannonName_` twin. + +✅ **The stage join is exact.** `_EX4` appears only in tables **S27** declares +(`EnumUnit_S27.tbl`, `UnitGroup_S27.tbl`); `_EX5` only in **S28**'s +(`EnumUnit_S28.tbl`, `UnitGroup_S28.tbl`, `EnumWeapon_EX5.tbl`); **the other 20 +stages have neither.** The challenge missions are S24–S29 in order, so S27 is +challenge **#4** and S28 challenge **#5**: `_EXn` = the n-th challenge +("EXtra") mission's bespoke variants. S28 declares both schemes at once — +`EnumUnit_S28.tbl` by stage number, `EnumWeapon_EX5.tbl` by challenge index. + +❌ **Refuted: `_EXn` is not the `Extra0n` numbering.** There are four `Extra` +slots but `_EX5` exists, and under that reading `Extra04` = S29, which has no +`_EX` assets. (The six leaderboard modes do map onto the six challenge stages; +`_EXn` counts stages.) + +🟡 Makes available, not adopted: `result-screens`' open "what does `EX_` mean" — +"the challenge-mission debriefing" now fits its own evidence that the `EX_` twin +drops `overview_rank`/`overview_medals`. Consistency, not proof; the selection +has not been shown. + +🟡 Not settled: the four weapons declared by no weapon table — three of them +(`_NoseGun_None`, `_NoseGun_Ttrl`, `Weapon_ADAN_Attacker_S_GunTurret`) are +already in `unit-substructure-records`' "26 weapons no turret mounts", so they +are unmounted **and** undeclared; `_Laser_Ttrl` is not on that list and is the +one still to place. diff --git a/docs/re/structures/result-screens.md b/docs/re/structures/result-screens.md index b1782010..dccdfcda 100644 --- a/docs/re/structures/result-screens.md +++ b/docs/re/structures/result-screens.md @@ -69,7 +69,12 @@ the seven and neither of the two, which is what makes `EX_` the reduced variant rather than a different screen. 🟡 Not settled: what `EX_` means (a second profile? the online/leaderboard -variant?) — `EX_BASE`, `EX_MAIN`, `EX_STAGE_RESULT` and `EX_FONT` are keys with +variant?) — **but see +[stage-numbering-and-player-craft](stage-numbering-and-player-craft.md): +`_EXn` on an asset name is measured to mean "the n-th challenge mission", which +makes "`EX_` = the challenge-mission debriefing" a consistent reading of why +this twin drops `overview_rank` and `overview_medals`. Not adopted — the +selection has not been shown** — `EX_BASE`, `EX_MAIN`, `EX_STAGE_RESULT` and `EX_FONT` are keys with **no record of that name**, so the prefix is a screen-id convention, not a table. And `PLAYER_AMMO_LESS_10` is unexplained. diff --git a/docs/re/structures/stage-numbering-and-player-craft.md b/docs/re/structures/stage-numbering-and-player-craft.md index 3805abab..df8e6ceb 100644 --- a/docs/re/structures/stage-numbering-and-player-craft.md +++ b/docs/re/structures/stage-numbering-and-player-craft.md @@ -161,3 +161,56 @@ 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. + +## ✅ `_EXn` is the n-th challenge stage — measured, 20 of 22 stages clean + +Last pass left "what does `EX` mean" open, with `EnumWeapon_EX5.tbl` as the only +lead. Censusing every name that **ends in** `_EX` (optionally plus a +suffix), taken from parsed IDXD record names, field names and string values — +never a raw byte scan — the whole disc holds **26**, and only two digits exist: + +| | distinct names | entities | faction | +|---|---:|---|---| +| `_EX4` | 14 | 7 units | 6 ADAN + 1 TCAF (`f003_ArrowHead`) | +| `_EX5` | 12 | 4 units + 1 weapon | all TCAF | + +Each entity appears twice — the bare name and a `UnitName_…` / +`WeaponCannonName_…` twin — so 14 = 7 × 2 and 12 = 6 × 2. + +**Joining each name to the stage whose declared tables contain it is exact:** + +| stage | tables carrying the name | digit | +|---|---|---| +| S27 | `EnumUnit_S27.tbl`, `UnitGroup_S27.tbl` | **EX4** | +| S28 | `EnumUnit_S28.tbl`, `UnitGroup_S28.tbl`, `EnumWeapon_EX5.tbl` | **EX5** | +| the other **20** | — | none | + +The challenge missions are S24–S29 in order, so **S27 is challenge #4 and S28 is +challenge #5** — `_EXn` names the **n-th challenge ("EXtra") mission's bespoke +variants**. The two numbering schemes even sit side by side inside S28's own +declarations: `EnumUnit_S28.tbl` by stage number, `EnumWeapon_EX5.tbl` by +challenge index, for the same mission. + +That also explains the shape of the previous finding. S28's weapon table is +bespoke because S28 needs `Weapon_TCAF_Ship_AAGun_EX5`; four of the six +challenge missions add no variants at all and reuse stock assets outright — +consistent with all six borrowing a story stage's `CollisionSet`. + +### ❌ `_EXn` is **not** the `Extra0n` numbering + +The tempting join is to [leaderboard-screen](leaderboard-screen.md)'s six +challenge modes — `ScoreAttack`, `TimeAttack`, `Extra01`…`Extra04`. It fails on +its own arithmetic: there are only **four** `Extra` slots but `_EX5` exists, and +under that reading `Extra04` would be S29, which has **no** `_EX` assets at all. +The six modes do map onto the six challenge stages one-for-one; `_EXn` simply +counts the **stages**, not the `Extra` slots. + +### 🟡 A reading this makes available, not adopted + +[result-screens](result-screens.md) leaves open what `EX_` means in +`EX_OVERVIEW` / `EX_STAGE_RESULT` / `EX_BASE` / `EX_MAIN`, noting the `EX_` twin +is the **reduced** variant — it lacks `overview_rank` and `overview_medals`. +"EX = the challenge missions" fits that exactly: a score/time attack has no +rank and no medals to show. **This is consistency, not proof** — nothing here +shows the code selects the `EX_` key list when a challenge mission ends. That +selection is the experiment that would settle it.