From cade6bc1a5176b13ace52e735a5b6e58f1b83b15 Mon Sep 17 00:00:00 2001 From: "Claude (auto)" Date: Thu, 27 Aug 2026 19:41:29 +0000 Subject: [PATCH] re: why each archive is low-coverage -- two different reasons, cleanly separated Splitting every unnamed entry by magic turns the coverage percentages into an explanation. The three low-coverage UI archives have ZERO unnamed IDXD. GP_HANGAR_ARSENAL is 180 IDXD, 180 named, 0 unnamed -- its 1191 unnamed entries are 1149 T8aD/RATC plus 42 LSTA, i.e. sprites. GP_MISSION_SELECT and GP_DEBRIEFING_PILOTLOG hold no IDXD objects at all. So "22.6 % named" is misleading: every data table in that pak is named, and these three are the same artwork-naming phenomenon as the blocked 2D and READY_ROOM archives. DefTables is the only genuine data gap: 1425 IDXD, 130 named, 1295 unnamed, in 17 record-name shapes -- Generic + Level_0..Level_3 (807, LOD sets) and Default + EnumMotions + Generic + ReferenceFrames +/- Motion_break/dead/down (463, motion sets). One LOD and one motion table per model. Level_0, EnumMotions and ReferenceFrames appear in no document. Control: the 100 % archives have no unnamed entry of any kind, and GP_MAIN_GAME_E is 667/337 IDXD with zero unnamed artwork -- two failure modes, not a gradient. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE --- docs/re/BACKLOG.md | 40 +++ docs/re/INDEX.md | 2 +- docs/re/data/archive-naming.txt | 404 +++++++++++++++++++++++++++ docs/re/structures/archive-naming.md | 44 +++ tools/re-capture/archive_naming.py | 35 +++ 5 files changed, 524 insertions(+), 1 deletion(-) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index d0983e63..c4f1282a 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -4753,3 +4753,43 @@ iterating a set needs a sort**. `GP_DEBRIEFING_PILOTLOG` 33.3 % β€” and the content index now makes it possible to say *what kind* of thing is missing from each, which is the obvious next step. πŸ”΄ The 2D / `GP_READY_ROOM` archives stay blocked. + +--- + +## βœ… 2026-08-27 β€” why each archive is low-coverage: two different reasons + +Uses last iteration's content index rather than re-running naming. `archive_naming.py` +extended to split every **unnamed** entry by magic and, for IDXD, by record-name shape. + +**Docs checked:** `archive-naming.md` (mine, owns the percentages); +`stage-definition-table.md` / `stage-mission-tables.md` / `arsenal-item-weapon-chain.md` +own the **names** `EnumLODSet_*.tbl` / `EnumGameModel_*.tbl`; +`isl-condition-builtins.md` owns the 40 `.tbl (+ _Tutorial shared by six, + _Test) | | [`structures/stage-settings-table.md`](structures/stage-settings-table.md) | The per-stage settings object β€” Camera rigs, Player limits, Difficulty_* damage record | βœ… CONFIRMED, 24 settings objects vs 29 resource objects both using Phase_1/2/3; Camera is 13/14 fields constant; GravityFactor non-zero in 4 stages; IsBoss16Enable identifies one object; the Phase block is 94 fields of which 68 never vary between phases; all 24 objects named StageParameter_S | | [`structures/isl-mission-timer.md`](structures/isl-mission-timer.md) | The mission timer β€” two sequential countdowns, not a limit and a warning | βœ… CONFIRMED β€” read from `sub_822639B8`; the threshold reading is | -| [`structures/archive-naming.md`](structures/archive-naming.md) | Which archives the disc can name β€” 100% for menu paks, **0.0%** for the six 2D paks and `GP_READY_ROOM` | βœ… CONFIRMED β€” 6027 names Γ— 16 prefixes, bimodal | +| [`structures/archive-naming.md`](structures/archive-naming.md) | Which archives the disc can name β€” 100% for menu paks, **0.0%** for the six 2D paks and `GP_READY_ROOM` | βœ… CONFIRMED β€” 6027 names Γ— 16 prefixes, bimodal; unnamed entries split by content β€” three UI paks have ZERO unnamed IDXD (artwork only), DefTables is the only real data gap (1295 LOD/motion tables) | | [`structures/hud-config.md`](structures/hud-config.md) | The in-game HUD configuration β€” 16 records, 419 asset paths, and a per-stage `ResourceTable` | βœ… CONFIRMED β€” 0 of 419 config paths resolve as pak entries | | [`structures/mission-script-manifest.md`](structures/mission-script-manifest.md) | `Stage\script.tbl`'s 11 non-`MISSION` fields, and the mission dialogue table they name | βœ… CONFIRMED β€” 1 of 7 values resolves (`message\MissionDialogMessage.tbl`, 200 records), controls in the same sweep | | [`structures/stage-numbering-and-player-craft.md`](structures/stage-numbering-and-player-craft.md) | The disc's stage numbering (S01–S16, S18–S29) and the player's craft per stage | βœ…βœ… CONFIRMED β€” two independent files close on 6 + 15 + 1 + 6 = 28 | diff --git a/docs/re/data/archive-naming.txt b/docs/re/data/archive-naming.txt index 2364351d..e2def5ae 100644 --- a/docs/re/data/archive-naming.txt +++ b/docs/re/data/archive-naming.txt @@ -1752,6 +1752,410 @@ GP_TUTORIAL.pak 2 named, 1 families x2 puscr.prt +## What the UNNAMED entries are (magic of every entry not resolved above) + archive IDXD named unnamedI unnamedUI LSTA + GP_HANGAR_ARSENAL.pak 180 180 0 1149 42 + DefTables.pak 1425 130 1295 0 0 + GP_MAIN_GAME_D.pak 1004 667 337 0 0 + GP_MAIN_GAME_E.pak 1004 667 337 0 0 + GP_MAIN_GAME_F.pak 1004 667 337 0 0 + GP_MAIN_GAME_I.pak 1004 667 337 0 0 + GP_MAIN_GAME_J.pak 1004 667 337 0 0 + GP_MAIN_GAME_S.pak 1004 667 337 0 0 + GP_READY_ROOM.pak 6 0 6 902 6 + GP_MAIN_GAME_D2D.pak 6 0 6 704 0 + GP_MAIN_GAME_E2D.pak 6 0 6 704 0 + GP_MAIN_GAME_F2D.pak 6 0 6 704 0 + GP_MAIN_GAME_I2D.pak 6 0 6 704 0 + GP_MAIN_GAME_J2D.pak 6 0 6 704 0 + GP_MAIN_GAME_S2D.pak 6 0 6 704 0 + GP_DEBRIEFING_PILOTLOG.pak 0 0 0 148 8 + GP_DIALOG.pak 0 0 0 1 0 + GP_SAVE_LOAD.pak 0 0 0 2 2 + GP_MISSION_SELECT.pak 0 0 0 64 2 + GP_LEADERBOARD.pak 0 0 0 6 0 + tables.pak 79 78 1 0 0 + GP_OPTIONS.pak 0 0 0 0 2 + GP_MISSION_LOG.pak 0 0 0 0 2 + + record-name sets of the UNNAMED IDXD entries, per archive: + DefTables.pak 1295 unnamed IDXD in 17 shapes + x294 Generic Level_0 Level_1 + x247 Generic Level_0 + x212 Default EnumMotions Generic ReferenceFrames + x209 Generic Level_0 Level_1 Level_2 Level_3 + x182 Default EnumMotions Generic Motion_break Motion_dead ReferenceFrames + x61 Default EnumMotions Generic Motion_break ReferenceFrames + x57 Generic Level_0 Level_1 Level_2 + x8 Default EnumMotions Generic Motion_break Motion_down ReferenceFrames + x8 Default EnumMotions Generic Motion_break Motion_selected ReferenceFrames + x8 Enumerate + x3 Default EnumMotions Generic Motion_FlipTurn Motion_ShieldAttack Motion_SideRoll_L Motion_SideRol + x1 Damage Damage2 Default EnumMotions Generic ReferenceFrames + x1 Default Default2 Default3 EnumMotions Generic ReferenceFrames + x1 Default EnumMotions Generic Motion_AfterBurner Motion_break ReferenceFrames + x1 Default EnumMotions Generic Motion_dead ReferenceFrames + x1 Default EnumMotions Generic Motion_down ReferenceFrames + x1 EnumMotions Generic Motion_attackA_charge Motion_attackA_charge_b1 Motion_attackA_charge_b2 Moti + GP_MAIN_GAME_D.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_MAIN_GAME_E.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_MAIN_GAME_F.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_MAIN_GAME_I.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_MAIN_GAME_J.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_MAIN_GAME_S.pak 337 unnamed IDXD in 53 shapes + x90 Shell Weapon + x64 Faces Generic + x44 Effect Explosion Generic Maneuver Mass SE Shield StructureCount + x24 Shell ShellWake Weapon + x12 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 + x9 AssortMissileParam Shell ShellWake Weapon + x9 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x8 ATTACK_IS_AVOIDED ATTACK_SUCCEEDED AVOIDED_BY_PLAYER AVOIDED_PLAYER_ATTACK AVOID_ATTACK COUNTER + x7 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x6 Shell ShellWake Weapon WhiskMissileParam + x4 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x3 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x2 Bridge_000 Bridge_001 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldG + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Bridge_000 Effect Explosion Generic Hatch_000 Maneuver Mass NS_Body SE Shield ShieldGenerator_00 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Thruster_000 + x2 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 + x2 EnumUnit + x2 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 AnalogRevice_adv_roll AnalogRevice_adv_yaw AnalogRevice_eye_pitch AnalogRevice_eye_yaw AnalogRev + x1 AsteroidGroup_000 AsteroidGroup_001 AsteroidGroup_002 AsteroidGroup_003 AsteroidGroup_004 Astero + x1 BezierMissileParam Shell ShellWake Weapon + x1 Booster Misc SpecialAttack SpecialAttackGauge_1 SpecialAttackGauge_2 SpecialAttackGauge_3 Specia + x1 Bridge_000 Effect Explosion Generic Hatch_000 Hatch_001 Hatch_002 Hatch_003 Maneuver Mass NS_Bod + x1 Bridge_??? Effect Explosion Generic Hatch_??? Maneuver Mass NS_* SE Shield ShieldGenerator_??? S + x1 Core Generic Guardian + x1 Effect Explosion Generic Maneuver Mass NS_Body NS_Body_2 SE Shield StructureCount + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_001 Tu + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_000 Turret_002 + x1 Effect Explosion Generic Maneuver Mass NS_Body SE Shield StructureCount Turret_001 Turret_002 Tu + x1 Effect Explosion Generic Maneuver Mass SE Shield StructureCount Turret_000 + x1 EnumWeapon + x1 Enumeration Formation_100 Formation_Fleet_01 Formation_Fleet_02 + x1 Enumeration Placement_00 Placement_01 Placement_02 RouteTest_00 RouteTest_01 + x1 Generic + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 Generic Message_000 Message_001 Message_002 Message_003 Message_004 Message_005 Message_006 Mess + x1 MessageSet_test + x1 Shell Weapon WhiskMissileParam + GP_READY_ROOM.pak 6 unnamed IDXD in 1 shapes + x6 FILE OFFSET + GP_MAIN_GAME_D2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + GP_MAIN_GAME_E2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + GP_MAIN_GAME_F2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + GP_MAIN_GAME_I2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + GP_MAIN_GAME_J2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + GP_MAIN_GAME_S2D.pak 6 unnamed IDXD in 4 shapes + x2 ActiveArm ArmsItem ArmsItemFile ArmsStatus HudResource Information Manuva Map Marker NamePlate N + x2 Enumerate_ObjectiveMarkers ObjectiveMarker_Acropolis ObjectiveMarker_Guard ObjectiveMarker_SubOb + x1 Face + x1 ResourceTable + tables.pak 1 unnamed IDXD in 1 shapes + x1 COMMON_XPR GP_ARSENAL GP_BUNK GP_CHALLENGE GP_DEBRIEFING GP_DIALOG GP_EXTRAS GP_GAMEOVER GP_HANG + ## CONTROL is the unnameable pair keyed by a DIFFERENT hash? (6 prefixes x 3 hash families; the menu paks are the positive control) GP_MAIN_GAME_E2D.pak name_hash 0 / 711 diff --git a/docs/re/structures/archive-naming.md b/docs/re/structures/archive-naming.md index ffdcd6fc..aee8757d 100644 --- a/docs/re/structures/archive-naming.md +++ b/docs/re/structures/archive-naming.md @@ -67,6 +67,50 @@ redo the work. is now iterated **sorted** β€” a plain `set` gave a different winner for collided hashes on each run and the artefact failed its own byte-identical check. +## βœ… WHY each archive is low-coverage β€” two different reasons (2026-08-27) + +Splitting every **unnamed** entry by its magic turns the percentage table into an +explanation. The three "low-coverage" UI archives are not missing data at all: + +| archive | IDXD | named | **unnamed IDXD** | unnamed T8aD/RATC | unnamed LSTA | +|---|---:|---:|---:|---:|---:| +| `GP_HANGAR_ARSENAL` | 180 | **180** | **0** | 1 149 | 42 | +| `GP_MISSION_SELECT` | 0 | 0 | **0** | 64 | 2 | +| `GP_DEBRIEFING_PILOTLOG` | 0 | 0 | **0** | 148 | 8 | +| `DefTables` | 1 425 | 130 | **1 295** | 0 | 0 | +| `GP_MAIN_GAME_{D…S}` | 1 004 | 667 | 337 | 0 | 0 | + +πŸ”‘ **`GP_HANGAR_ARSENAL`'s "22.6 %" is misleading: every one of its 180 data +tables is named.** Its 1 191 unnamed entries are **sprites and bundles**, and +`GP_MISSION_SELECT` / `GP_DEBRIEFING_PILOTLOG` contain **no IDXD objects at +all**. Those three are the *same* phenomenon as the πŸ”΄ blocked 2D and +`GP_READY_ROOM` archives β€” unreachable **artwork** names β€” not a data gap. + +πŸ”‘ **`DefTables` is the only genuine data gap on the disc**: 1 295 unnamed IDXD +objects, in **17 record-name shapes**, and two families cover almost all of them: + +``` +Generic + Level_0 … Level_3 807 LOD sets (cf. EnumLODSet_*.tbl) +Default + EnumMotions + Generic + 463 motion sets (cf. EnumGameModel_*.tbl) + ReferenceFrames (+ Motion_break / + Motion_dead / Motion_down) +``` + +`stage-definition-table.md` and `stage-mission-tables.md` own the *names* +`EnumLODSet_*.tbl` / `EnumGameModel_*.tbl`; **the record shapes above are not in +`docs/re/` anywhere** β€” `Level_0`, `EnumMotions` and `ReferenceFrames` appear in +no document. So what `DefTables` withholds is **one LOD table and one motion +table per model**, keyed by model names the disc does not spell out. + +⚠️ The 40 ``, ``, ``) and corrects an earlier +"the config reader is XML" claim. Not new here. + +**Control:** `GP_TITLE` and the other 100 % archives have no unnamed entry of any +kind, and `GP_MAIN_GAME_E` splits 667 named / 337 unnamed IDXD with zero unnamed +artwork β€” the two failure modes are cleanly separated, not a gradient. + ## What that means for the 419 The in-game HUD's asset paths are not "missing". **Nothing in the 2D paks is diff --git a/tools/re-capture/archive_naming.py b/tools/re-capture/archive_naming.py index 3e72da8b..d347c81f 100644 --- a/tools/re-capture/archive_naming.py +++ b/tools/re-capture/archive_naming.py @@ -62,6 +62,41 @@ def main(): for k, c in sorted(fam.items(), key=lambda kv: (-kv[1], kv[0])): print(" x%-4d %s" % (c, k)) + # WHY an archive is low-coverage: split its UNNAMED entries by content. + print("\n## What the UNNAMED entries are (magic of every entry not resolved above)") + print(" %-28s %6s %6s %8s %9s %6s" % ( + 'archive', 'IDXD', 'named', 'unnamedI', 'unnamedUI', 'LSTA')) + for nm, _ in rows: + e = pak_entries(os.path.join(os.path.dirname( + [p for p in paks if os.path.basename(p) == nm][0]), nm)) + idx = [(h, b) for h, b in e if b[:4] == b'IDXD'] + ui = [(h, b) for h, b in e if b[:4] in (b'T8aD', b'RATC')] + ls = [(h, b) for h, b in e if b[:4] == b'LSTA'] + ui_un = sum(1 for h, _b in ui if h not in NAMES) + ls_un = sum(1 for h, _b in ls if h not in NAMES) + ix_un = sum(1 for h, _b in idx if h not in NAMES) + if not (ix_un or ui_un or ls_un): + continue + print(" %-28s %6d %6d %8d %9d %6d" % ( + nm, len(idx), sum(1 for h, _b in idx if h in NAMES), ix_un, ui_un, ls_un)) + + print("\n record-name sets of the UNNAMED IDXD entries, per archive:") + for nm, _ in rows: + e = pak_entries(os.path.join(os.path.dirname( + [p for p in paks if os.path.basename(p) == nm][0]), nm)) + un = [b for h, b in e if b[:4] == b'IDXD' and h not in NAMES] + if not un: + continue + sh = collections.Counter() + for b in un: + try: + sh[tuple(sorted({r['squadron'] for r in U.parse(b)}))] += 1 + except Exception: + sh[('',)] += 1 + print(" %s %d unnamed IDXD in %d shapes" % (nm, len(un), len(sh))) + for shape, c in sorted(sh.items(), key=lambda kv: (-kv[1], kv[0])): + print(" x%-5d %s" % (c, ' '.join(shape)[:96])) + def _ix(t): return U.ixud_hash([ord(c) for c in t]) FN = [('name_hash', U.name_hash), ('tag_hash', U.tag_hash), ('ixud_hash', _ix)] SUB = ['', '2d\\', 'eng\\', 'Data\\', 'ArmsSt\\', 'Marker\\']