re: the config sections are real disc data -- 64/65, with a clean 0/54 control

Testing every literal key from data/config-keys.txt against the 3496
distinct IDXD record keys with tag_hash:

  section names (arg to sub_82448AA0) -> 64 / 65 present
  field  keys  (arg to sub_824482D0) ->  0 / 54 present

The two classes are each other's control and the dissociation is
total, confirming the model: sub_82448AA0 finds a RECORD keyed by
tag_hash(name); sub_824482D0 reads a FIELD whose name is a literal
string in the pool, so none of them can be a record key.

The single absent section is LANGUAGE -- the one real section in the
disc-root config.ini.  The same API serves both stores.

This deflates my own earlier framing: I had listed "64 sections whose
hardcoded fallbacks are worth pinning".  They are not fallbacks; all
but one are real data.  STAGENN_UNIT_MAX is the genuine exception,
because its name is built at runtime from the stage index.

The artefact now names the pak each record lives in -- notably
GP_HANGAR_ARSENAL.pak holds WEAPONS, UNITS, Camera, ControlTweak,
Rendering, AUTO_SETTINGS and IGNORE.

Docs + regenerated artefact; ISL artefacts byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-27 11:54:36 +00:00
parent 49b5892df5
commit bc48fa576d
3 changed files with 142 additions and 71 deletions

View File

@@ -1,78 +1,85 @@
# The named-section / int-key vocabulary the engine asks for
# The named-section / field-key vocabulary the engine asks for
Resolved by back-tracking the r4 string argument at every call site of
sub_82448AA0 (find a named section/record) and sub_824482D0 (read an int).
Resolved by back-tracking the r4 string at every call site of
sub_82448AA0 -- find a named RECORD (key = tag_hash(name))
sub_824482D0 -- read a named FIELD (name = a literal string in the pool)
Only sites whose key is a literal addis/addi string are listed, so these are
LOWER BOUNDS, not the complete set.
LOWER BOUNDS. "found in" = the paks holding an IDXD record with that tag_hash.
## sub_82448AA0 -- named section / record (65 distinct)
1 ACHIEVEMENTS_REQUIREMENTS
3 AUTO_SETTINGS
1 ArmsItem
1 ArmsItemFile
19 BASE_INFO
1 COMMON_RESOURCE
1 COMMON_XPR
1 CUSTOM_KEY_LOCATE
1 Camera
1 ControlTweak
4 CorrespondingTable
3 EPILOGUE_MOVIES
2 EnumCharacter
2 EnumUnit
1 EnumWeapon
1 Enumerate_ObjectiveMarkers
1 FILE
2 FILES
4 FONTS
2 FONT_SET
1 Faces
1 Files
1 GP_MAIN_GAME
2 GP_SCRIPT
1 Generic
3 IGNORE
2 LANGUAGE
4 LOCATE
2 LocalStringFiles
5 MISSIONS
1 MotionResource
1 Number
1 OFFSET
1 OPEN_PAK
1 Parameters
5 Path
2 PrefetchPaks
1 RADIO_WINDOW
1 Rendering
1 ResourceID
1 ResourceTable
1 Rule
2 SCRIPTS
1 SETTINGS
1 SE_main_arm1_attach
1 SE_main_arm1_detach
1 SE_main_arm2_attach
1 SE_main_arm2_detach
1 SE_main_arm3_attach
1 SE_main_arm3_detach
1 SE_nose_attach
1 SE_nose_detach
1 SOUND
1 SOUNDS
1 SQUADRON_ORDER_OBJECT
2 STAGE
1 STAGES
1 SUB_OBJECTIVE
11 SYSTEM
4 StageResource
1 TEXTS
2 UNITS
1 UnitMessageSetTable
2 WEAPONS
1 WeaponChangeFrame
The two classes act as each other CONTROL:
SECTION names present as IDXD record keys : 64 / 65
FIELD keys present as IDXD record keys : 0 / 54
The one section that is NOT a record is LANGUAGE -- the one real section in
the disc-root config.ini, which the same API also reads.
## sub_824482D0 -- read an int (54 distinct)
## sub_82448AA0 -- named record (65 distinct)
1 ACHIEVEMENTS_REQUIREMENTS tables.pak
3 AUTO_SETTINGS GP_HANGAR_ARSENAL.pak
1 ArmsItem GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
1 ArmsItemFile GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
19 BASE_INFO tables.pak
1 COMMON_RESOURCE tables.pak
1 COMMON_XPR tables.pak
1 CUSTOM_KEY_LOCATE tables.pak
1 Camera GP_HANGAR_ARSENAL.pak, GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak
1 ControlTweak GP_HANGAR_ARSENAL.pak
4 CorrespondingTable tables.pak
3 EPILOGUE_MOVIES tables.pak
2 EnumCharacter GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
2 EnumUnit GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 EnumWeapon GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 Enumerate_ObjectiveMarkers GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
1 FILE GP_READY_ROOM.pak
2 FILES tables.pak
4 FONTS tables.pak
2 FONT_SET tables.pak
1 Faces GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 Files GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 GP_MAIN_GAME tables.pak
2 GP_SCRIPT tables.pak
1 Generic DefTables.pak, GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak
3 IGNORE GP_HANGAR_ARSENAL.pak
2 LANGUAGE -- not an IDXD record --
4 LOCATE tables.pak
2 LocalStringFiles GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
5 MISSIONS tables.pak
1 MotionResource GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 Number GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
1 OFFSET GP_READY_ROOM.pak
1 OPEN_PAK tables.pak
1 Parameters GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
5 Path tables.pak
2 PrefetchPaks tables.pak
1 RADIO_WINDOW tables.pak
1 Rendering GP_HANGAR_ARSENAL.pak
1 ResourceID GP_HANGAR_ARSENAL.pak
1 ResourceTable GP_MAIN_GAME_D2D.pak, GP_MAIN_GAME_E2D.pak, GP_MAIN_GAME_F2D.pak
1 Rule GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
2 SCRIPTS GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
1 SETTINGS tables.pak
1 SE_main_arm1_attach GP_HANGAR_ARSENAL.pak
1 SE_main_arm1_detach GP_HANGAR_ARSENAL.pak
1 SE_main_arm2_attach GP_HANGAR_ARSENAL.pak
1 SE_main_arm2_detach GP_HANGAR_ARSENAL.pak
1 SE_main_arm3_attach GP_HANGAR_ARSENAL.pak
1 SE_main_arm3_detach GP_HANGAR_ARSENAL.pak
1 SE_nose_attach GP_HANGAR_ARSENAL.pak
1 SE_nose_detach GP_HANGAR_ARSENAL.pak
1 SOUND tables.pak
1 SOUNDS tables.pak
1 SQUADRON_ORDER_OBJECT tables.pak
2 STAGE GP_HANGAR_ARSENAL.pak, tables.pak
1 STAGES tables.pak
1 SUB_OBJECTIVE tables.pak
11 SYSTEM tables.pak
4 StageResource GP_HANGAR_ARSENAL.pak, GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak
1 TEXTS GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
2 UNITS GP_HANGAR_ARSENAL.pak
1 UnitMessageSetTable GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak
2 WEAPONS GP_HANGAR_ARSENAL.pak
1 WeaponChangeFrame GP_HANGAR_ARSENAL.pak
## sub_824482D0 -- read a field (54 distinct; none is a record key, as expected)
1 ADJUST_X
1 ADJUST_Y
1 BlinkCycle