1. A different hash family. The corpus knows three (idxd-tag-hash.md): name_hash, tag_hash, ixud_hash. Scoring all 5977 harvested names x 6 prefixes: GP_TITLE 8/16 and GP_PAUSE_MENU 6/11 under name_hash (the positive controls), and tag_hash and ixud_hash explain NOTHING anywhere -- including the paks name_hash does explain. So they are not the TOC function, and the unnameable pair is not keyed by a different one. GP_MAIN_GAME_E2D stays at 0/711 under all three. 2. The executable. sylpheed.db's strings table holds 7140 rows, of which exactly two look like asset paths -- Data\gmicon002_2.t32 and Data\gmicon006_2.t32, in a Data\ directory nothing else on the disc uses -- and neither resolves in any archive. The binary is not the name source; it holds two strays and no table. 3. Name transformations -- 13 of them on the 419 config paths, all 0. The container runs out here. Those TOC keys hash names that exist on neither the disc nor the executable in readable form. The only lever left is a dictionary attack using name_hash's shape (top byte = the character-sum checksum), and that needs a plausible name corpus this disc does not contain. Noted as blocked rather than improvised around. The port does not need these names: sprites and bundles are readable by content (T8aD, RATC), and the config records already say which asset each HUD element uses. Only the archive-key to name mapping is missing. Artefact +22 lines / 0 deletions; the other eight regenerate byte-identical.
72 lines
3.6 KiB
Plaintext
72 lines
3.6 KiB
Plaintext
# How much of each pak's TOC can be named from the disc's own strings
|
|
# Regenerate: python3 tools/re-capture/archive_naming.py
|
|
# See docs/re/structures/archive-naming.md
|
|
|
|
candidate asset-name strings harvested: 6027
|
|
path prefixes tried: 16
|
|
|
|
archive entries named pct
|
|
sound.pak 9519 1 0.0%
|
|
GP_HANGAR_ARSENAL.pak 1538 347 22.6%
|
|
DefTables.pak 1465 130 8.9%
|
|
GP_MAIN_GAME_D.pak 1119 751 67.1%
|
|
GP_MAIN_GAME_E.pak 1119 751 67.1%
|
|
GP_MAIN_GAME_F.pak 1119 751 67.1%
|
|
GP_MAIN_GAME_I.pak 1119 751 67.1%
|
|
GP_MAIN_GAME_J.pak 1119 751 67.1%
|
|
GP_MAIN_GAME_S.pak 1119 751 67.1%
|
|
GP_READY_ROOM.pak 1106 6 0.5%
|
|
GP_MAIN_GAME_D2D.pak 711 0 0.0%
|
|
GP_MAIN_GAME_E2D.pak 711 0 0.0%
|
|
GP_MAIN_GAME_F2D.pak 711 0 0.0%
|
|
GP_MAIN_GAME_I2D.pak 711 0 0.0%
|
|
GP_MAIN_GAME_J2D.pak 711 0 0.0%
|
|
GP_MAIN_GAME_S2D.pak 711 0 0.0%
|
|
GP_DEBRIEFING_PILOTLOG.pak 234 78 33.3%
|
|
GP_CHALLENGE.pak 151 151 100.0%
|
|
GP_DIALOG.pak 140 139 99.3%
|
|
deu.pak 117 115 98.3%
|
|
eng.pak 117 115 98.3%
|
|
esp.pak 117 115 98.3%
|
|
fra.pak 117 115 98.3%
|
|
ita.pak 117 115 98.3%
|
|
jpn.pak 117 115 98.3%
|
|
GP_SAVE_LOAD.pak 108 102 94.4%
|
|
GP_MISSION_SELECT.pak 88 22 25.0%
|
|
GP_LEADERBOARD.pak 87 81 93.1%
|
|
tables.pak 79 78 98.7%
|
|
GP_MOVIE_THEATER.pak 56 56 100.0%
|
|
GP_STAGE_CLEAR.pak 44 44 100.0%
|
|
MiscBin.pak 40 40 100.0%
|
|
GP_OPTIONS.pak 26 24 92.3%
|
|
GP_MISSION_LOG.pak 24 22 91.7%
|
|
GP_TITLE.pak 16 16 100.0%
|
|
GP_GAMEOVER.pak 12 12 100.0%
|
|
GP_PAUSE_MENU.pak 11 11 100.0%
|
|
GP_BUNK.pak 10 10 100.0%
|
|
fonts.pak 3 3 100.0%
|
|
GP_SYSTEM.pak 2 2 100.0%
|
|
GP_TUTORIAL.pak 2 2 100.0%
|
|
|
|
## 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
|
|
GP_MAIN_GAME_E2D.pak tag_hash 0 / 711
|
|
GP_MAIN_GAME_E2D.pak ixud_hash 0 / 711
|
|
GP_READY_ROOM.pak name_hash 6 / 1106 <bare>
|
|
GP_READY_ROOM.pak tag_hash 0 / 1106
|
|
GP_READY_ROOM.pak ixud_hash 0 / 1106
|
|
GP_TITLE.pak name_hash 8 / 16 eng\
|
|
GP_TITLE.pak tag_hash 0 / 16
|
|
GP_TITLE.pak ixud_hash 0 / 16
|
|
GP_PAUSE_MENU.pak name_hash 6 / 11 eng\
|
|
GP_PAUSE_MENU.pak tag_hash 0 / 11
|
|
GP_PAUSE_MENU.pak ixud_hash 0 / 11
|
|
|
|
## CONTROL the executable holds almost no asset names
|
|
sylpheed.db `strings`: 7140 rows, of which 2 look like asset paths
|
|
Data\gmicon002_2.t32 and Data\gmicon006_2.t32
|
|
Data\gmicon002_2.t32 resolves anywhere: False
|
|
Data\gmicon006_2.t32 resolves anywhere: False
|
|
gmicon002_2.t32 resolves anywhere: False
|