re: find the mission wave data — stage records and the UnitGroup squadron roster
Sweeping the 811 unnamed IDXD objects in GP_MAIN_GAME_E.pak by schema turned up
schema 3c9ae32e: the per-stage definition record. 23 of them, one per stage,
each naming its background, resource package, collision set, message set,
nameplates, MapMesh/MapPath and EnumerateSquadron = UnitGroup_S<NN>.tbl.
That resolves two open threads at once:
- MapPath = test.rgn hashes to 0x3506e972, a REGN object in MiscBin.pak, and
MapMesh = test.col to 0x2cf7eb47, an MCOL object. REGN is a stage's map
path data; MCOL is its collision mesh.
- stage\UnitGroup_S02.tbl (0x019fd129, in all six language paks) is the
Stage 02 squadron roster: 112 records, 112 squadron IDs, and a field
vocabulary of FormationID / AIID / SideID / Count / DisableInterval, plus
the unit model (UN_e010_ADAN_Attacker_S and friends, which match the XBG7
mesh names we already decode), the MessageSet and the pilot character.
DisableInterval is the first direct evidence of the arrival-timing knob, which
is what the user's reframing predicted: the mission has a schedule with
parameters, not a fixed roster.
Container layout is only partly read. The 112x16 entry array was confirmed by
its boundary — keys increase for exactly 112 entries and break at 0x708, where
the next section header sits — not assumed. pak dump mislabels this file's
first key as its schema.
Refuted and recorded: the 16-byte record key is not the squadron ID's name
hash. name_hash("TCN001") = 0xd639f1a4 but the keys start 0x659aff47; 0 of 112
match.
Still open: the per-record payload fields, the meaning of the key, where the
interval values actually live, and the missing S17-S23 stage records.
This commit is contained in:
@@ -267,12 +267,26 @@ search cannot find a *schedule*.
|
||||
on-disc keys are not the source paths.
|
||||
* 🔴 **`STAGES = Static.slb` is a false lead.** It is a field of the *sound*
|
||||
table; `.slb` is an XACT sound bank ([`structures/sound-slb.md`](structures/sound-slb.md)).
|
||||
* ❔ **Not yet searched:** the ~800 unnamed objects in `GP_MAIN_GAME_<lang>.pak`,
|
||||
and the executable itself.
|
||||
* ✅ **FOUND — it is the `GP_MAIN_GAME_<lang>.pak` unnamed objects.**
|
||||
Sweeping the 811 unnamed entries by schema turned up **schema `3c9ae32e`, the
|
||||
per-stage definition record**: one per stage (`Stage_S01.xpr` … `Stage_S29.xpr`),
|
||||
naming that stage's background, resource package, collision set, message set,
|
||||
nameplates, `MapMesh`/`MapPath`, and — the point — its
|
||||
**`EnumerateSquadron = UnitGroup_S<NN>.tbl`**.
|
||||
`stage\UnitGroup_S02.tbl` (`0x019fd129`) is the Stage 02 roster: **112 records**,
|
||||
112 squadron IDs (`TCN001`, `ADN101`, `ADT102`, …), and a field vocabulary of
|
||||
`FormationID` / `AIID` / `SideID` / `Count` / **`DisableInterval`** plus the unit
|
||||
model (`UN_e010_ADAN_Attacker_S`, matching our XBG7 names), the `MessageSet_*`,
|
||||
and the pilot character. `DisableInterval` is the first direct evidence of the
|
||||
timing knob. Same pass also settled `MapPath = test.rgn` → the `REGN` objects.
|
||||
See [`structures/stage-definition-table.md`](structures/stage-definition-table.md).
|
||||
🔴 Refuted along the way: the 16-byte record key is **not** the squadron
|
||||
ID's name hash (0 of 112).
|
||||
|
||||
**First step:** dump the smallest `REGN` object's four sections (counts
|
||||
`8, 6, 18`) and the three unnamed `DefTables` schemas — both are pure static
|
||||
work, and either could carry per-map trigger or spawn records.
|
||||
**First step (next):** read the `UnitGroup` per-record payload — three u32s per
|
||||
entry — and find where the interval *values* live (the file's second section,
|
||||
`Formation_*.tbl`, or `EnumSquadron_Test.tbl`). Also: S17–S23 have no stage
|
||||
record in `GP_MAIN_GAME_E.pak`; find where they are.
|
||||
|
||||
## The dynamic-RE state is not in git, and it was gone
|
||||
|
||||
|
||||
Reference in New Issue
Block a user