diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index e523cb3..233c2cc 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -6145,3 +6145,44 @@ 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. + +--- + +## βœ…πŸ”΄ 2026-08-28 β€” `EnumWeapon_EX5.tbl` adds exactly one weapon, and a tutorial expectation is refuted + +Item (a): diff S28's bespoke weapon table against the common one. + +βœ… **The disc has exactly three weapon tables**, and each is a **single +`EnumWeapon` record whose *field names* are the weapons** β€” the `Enumerate`-style +declaration shape again: + +``` +EnumWeapon_Test.tbl 126 names +EnumWeapon_EX5.tbl 127 names = the same 126, same order, PLUS one +EnumWeapon_Tutorial.tbl 9 names = a strict subset of Test +union 127 +``` + +**The whole of S28's bespoke table is one extra weapon: +`Weapon_TCAF_Ship_AAGun_EX5`.** Zero removals, identical order on the shared 126. + +βœ… **That explains one of [[weapon-struct-runtime]]'s five "never instantiated" +disc records** β€” the AA-gun variant is declared by `EnumWeapon_EX5.tbl` only, and +that table belongs to **S28 alone**, which the captured save was not playing. + +πŸ”΄ **And it refutes that document's expectation.** It says "Running the tutorial +should instantiate the `_Ttrl` pair". It will not: `EnumWeapon_Tutorial.tbl`'s +nine names are `Weapon_NULL`, `Weapon_ADAN_Puppy_NoseGun`, +`Weapon_DSaber_P_wep_{01_Beam,02_Missile,58_Laser}` and +`Weapon_TCAF_DeltaSaber_{Beam,Cannon,Missile,ASMissile}` β€” **neither +`Weapon_TCAF_DeltaSaber_NoseGun_Ttrl` nor `_Laser_Ttrl` is among them.** Four of +the five uninstantiated records (`_NoseGun_Ttrl`, `_Laser_Ttrl`, `_NoseGun_None`, +`Weapon_ADAN_Attacker_S_GunTurret`) are **declared by no weapon table on the +disc at all** β€” a static answer to a question the runtime capture left open. + +❔ **`EX` is still not identified**, but it is narrowed hard: the entire content of +S28's own weapon table is a single `_EX5` AA-gun variant, and the only other +`_EX5` name on the disc is `UN_f001_TCAF_DeltaSaber_T_EX5`. + +🟑 Not settled: what `EX` stands for; the two unnamed `_Test` variant objects; +what `Placement_*`/`RouteTest_*` are for. diff --git a/docs/re/structures/weapon-struct-runtime.md b/docs/re/structures/weapon-struct-runtime.md index e9cc00f..7a5f591 100644 --- a/docs/re/structures/weapon-struct-runtime.md +++ b/docs/re/structures/weapon-struct-runtime.md @@ -262,8 +262,26 @@ whole `…Ratio` family that blocked Route B is simply "no penalty". objects; the 5 with no runtime object are context variants that this save never loads β€” `Weapon_TCAF_DeltaSaber_NoseGun_Ttrl` / `_Laser_Ttrl` (tutorial), `_NoseGun_None`, `Weapon_TCAF_Ship_AAGun_EX5`, - `Weapon_ADAN_Attacker_S_GunTurret`. Running the tutorial should instantiate - the `_Ttrl` pair. No runtime object lacked a disc record. + `Weapon_ADAN_Attacker_S_GunTurret`. No runtime object lacked a disc record. + + βœ…πŸ”΄ **Followed up statically 2026-08-28 β€” and "running the tutorial should + instantiate the `_Ttrl` pair" is refuted.** The disc has exactly **three** + weapon tables, and each is a single `EnumWeapon` record whose *field names* are + the weapons: `EnumWeapon_Test.tbl` (126), `EnumWeapon_EX5.tbl` (**127 β€” the + same 126 plus one**), `EnumWeapon_Tutorial.tbl` (**9, a strict subset of + Test**). Union: **127**. + + | of the five | declared by | + |---|---| + | `Weapon_TCAF_Ship_AAGun_EX5` | **`EnumWeapon_EX5.tbl` only** β€” and that table belongs to **S28 alone** ([[stage-numbering-and-player-craft]]) | + | `_NoseGun_Ttrl`, `_Laser_Ttrl`, `_NoseGun_None`, `Weapon_ADAN_Attacker_S_GunTurret` | **no weapon table at all** | + + So one of the five is explained β€” it loads only in Stage 28 β€” and the other + four are **declared by nothing on the disc**, tutorial included: the nine names + in `EnumWeapon_Tutorial.tbl` are `Weapon_NULL`, `Weapon_ADAN_Puppy_NoseGun`, + `Weapon_DSaber_P_wep_{01_Beam,02_Missile,58_Laser}` and + `Weapon_TCAF_DeltaSaber_{Beam,Cannon,Missile,ASMissile}` β€” **neither `_Ttrl` + weapon is among them.** Running the tutorial will not instantiate them. - Defaulted `Power` values vary per weapon (1, 10, 100, 300, 500, 1000), so they are **not** one constructor constant. Where they come from β€” the IDXD's undecoded binary node/index region, or per-type code defaults β€” is **not