re: S18-S23 stage records were never missing; only S17 is absent

The 'S17-S23 have no stage record' gap was an artefact of enumerating by the
literal 'Stage_S<NN>'. Tutorial records omit it -- they name no per-stage .xpr
and pull AIParams/weapons/strings/subobjectives/nameplate/collision from a
shared _Tutorial set -- so all six were skipped. stagetbl.py Stage_S18 returns a
full six-record definition and always would have.

Counting distinct *_S<NN> names across all 1119 decompressed entries: UnitGroup
and Route cover 28 stages (S01-S16, S18-S23, S24-S29); Stage literal and
AIParams cover 22; SUBObjectiveSettings 16 (story only). S17 appears in none --
it is not a stage that lost its data, it does not exist.

Tutorial records carry the same Phase_1/2/3 structure as story stages, so the
tutorial is not a special mission type at the data layer.

Refuted en route: GP_TUTORIAL.pak does not hold the config -- 2 RATC entries,
zero IDXD, like GP_CHALLENGE.pak.
This commit is contained in:
Sylpheed RE agent
2026-08-25 09:34:58 +00:00
parent 479632c13b
commit cb7b0aa461
3 changed files with 280 additions and 2 deletions

View File

@@ -0,0 +1,226 @@
########## S18
=== Stage_S18 definition record (6 records) ===
-- 'StageResource' (15 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S18.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S18.tbl
550ade77 EnumerateFormation = FormationSet_S18.tbl
6d8b50c4 BackGroundID = Original
77dd6f98 NamePlate = nameplate_Tutorial.tbl
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S18.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl
########## S19
=== Stage_S19 definition record (6 records) ===
-- 'StageResource' (15 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S19.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S19.tbl
550ade77 EnumerateFormation = FormationSet_S19.tbl
6d8b50c4 BackGroundID = Original
77dd6f98 NamePlate = nameplate_Tutorial.tbl
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S19.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl
########## S20
=== Stage_S20 definition record (6 records) ===
-- 'StageResource' (15 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S20.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S20.tbl
550ade77 EnumerateFormation = FormationSet_S20.tbl
6d8b50c4 BackGroundID = Original
77dd6f98 NamePlate = nameplate_Tutorial.tbl
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S20.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl
########## S21
=== Stage_S21 definition record (6 records) ===
-- 'StageResource' (15 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S21.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S21.tbl
550ade77 EnumerateFormation = FormationSet_S21.tbl
6d8b50c4 BackGroundID = Original
77dd6f98 NamePlate = nameplate_Tutorial.tbl
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S21.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl
########## S22
=== Stage_S22 definition record (6 records) ===
-- 'StageResource' (19 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S22.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S22.tbl
550ade77 EnumerateFormation = FormationSet_S22.tbl
6d8b50c4 BackGroundID = Original
764727ae WingmanIconID_0 =
774727af WingmanIconID_1 = PGHUD_WING2
77dd6f98 NamePlate = nameplate_Tutorial.tbl
784727b0 WingmanIconID_2 = PGHUD_WING3
794727b1 WingmanIconID_3 = PGHUD_WING4
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S22.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl
########## S23
=== Stage_S23 definition record (6 records) ===
-- 'StageResource' (15 fields)
087ca0d2 EnumerateLocalString = EnumLocalString_Tutorial.tbl
106df3ec EnumerateWeapon = EnumWeapon_Tutorial.tbl
114eccbb CollisionMeshes = CollisionSet_Tutorial.bin
2cffd1e7 EnumerateNullFrame = Route_S23.tbl
33d9c14c EnumerateCharacter =
46f5c611 EnumerateUnit = EnumUnit_S23.tbl
550ade77 EnumerateFormation = FormationSet_S23.tbl
6d8b50c4 BackGroundID = Original
77dd6f98 NamePlate = nameplate_Tutorial.tbl
8b001bd6 EnumerateSubobjective = SUBObjectiveSettings_Tutorial.tbl
8cbff946 BackGroundPackage =
945c9dcb EnumerateAIParams = AIParams_Tutorial.tbl
e8ac2b0d StageResourcePackage =
f19c4815 MessageSet = StageMessageSet_Tutorial.tbl
f37fdac5 EnumerateSquadron = UnitGroup_S23.tbl
-- 'LodResource' (1 fields)
9cbba07e LodEnumTable = game:\hidden\DefTables.pak+EnumLODSet_Tutorial.tbl
-- 'Phase_1' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_2' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'Phase_3' (4 fields)
44c33b91 AsteroidDefinition =
abf237d1 MapPath = mapmesh_box_500km.rgn
abf6366e MapMesh = mapmesh_box_500km.col
d5a83345 BackgroundResourceID =
-- 'MotionResource' (1 fields)
f314d3e4 MotionEnumTable = game:\hidden\DefTables.pak+EnumGameModel_Tutorial.tbl