re: EnumWeapon_EX5.tbl adds exactly one weapon; a tutorial expectation refuted

Diffed 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.

It also refutes that document's expectation that "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 _Ttrl weapon is among them. Four of the five
uninstantiated records are declared by no weapon table on the disc at all.

EX is still not identified but 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.

All fifteen artefacts byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-28 04:17:15 +00:00
parent 51701341f8
commit 82a3207745
2 changed files with 61 additions and 2 deletions

View File

@@ -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.

View File

@@ -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