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:
@@ -717,6 +717,37 @@ unknown, what evidence exists, and what the first step would be. Move an item in
|
||||
90, `0x82290ED8`). This needs type information the offset index does not carry;
|
||||
it is not a cheap static question and should not be reopened as one.
|
||||
|
||||
* ✅ **(2026-08-27) THE CONFIG SECTIONS ARE REAL DISC DATA — 64/65, and the two
|
||||
reader functions separate perfectly.
|
||||
[structures/isl-condition-builtins](structures/isl-condition-builtins.md),
|
||||
artefact `data/config-keys.txt`.**
|
||||
Testing every literal key from the artefact against the **3 496 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, which
|
||||
confirms the model exactly: `sub_82448AA0(node, NAME)` finds a **record** keyed
|
||||
by `tag_hash(NAME)`; `sub_824482D0(node, KEY)` reads a **field**, whose name is
|
||||
a literal string in the record's pool — so none of them can be a record key.
|
||||
🔑 **The single absent section is `LANGUAGE`** — precisely the one real section
|
||||
in the disc-root `config.ini`. The same API serves both stores and the data
|
||||
shows the seam.
|
||||
✅ **This deflates my own earlier framing.** I had listed "64 sections whose
|
||||
hardcoded fallbacks are worth pinning for the port". They are not fallbacks:
|
||||
**all but one are real data on the disc.** `STAGENN_UNIT_MAX` is the genuine
|
||||
exception, and only because its name is *built at runtime* from the stage index
|
||||
rather than being one of these literals.
|
||||
📎 The artefact now names the pak each record lives in: `tables.pak` for the
|
||||
global tables (`MISSIONS`, `STAGES`, `SOUNDS`, `SUB_OBJECTIVE`,
|
||||
`SQUADRON_ORDER_OBJECT`, `EPILOGUE_MOVIES`, `ACHIEVEMENTS_REQUIREMENTS`,
|
||||
`FONTS`, `BASE_INFO`, …), **`GP_HANGAR_ARSENAL.pak` for `WEAPONS`, `UNITS`,
|
||||
`Camera`, `ControlTweak`, `Rendering`, `AUTO_SETTINGS`, `IGNORE`** — so the
|
||||
arsenal pak holds the canonical weapon/unit definitions — and the per-language
|
||||
`GP_MAIN_GAME_*` paks for the enum tables.
|
||||
🟡 Not settled: the CONTENTS of those records. Knowing `WEAPONS` lives in
|
||||
`GP_HANGAR_ARSENAL.pak` is a pointer, not a decode; the field-level read is a
|
||||
separate job per table.
|
||||
|
||||
## ✅✅ SOLVED — the mission freeze was a modal sign-in dialog (2026-08-26)
|
||||
|
||||
`XamShowSigninUI` opens a modal dialog and `xeXamDispatchDialog` blocks the
|
||||
|
||||
Reference in New Issue
Block a user