re: decode the config records -- render/input constants, and a correction
parse() + named() on each named record (data/config-records.txt). The find, directly portable: Rendering carries the tone-mapping and bloom numbers (Brightness 1.4, Contrast 1.0, ExposureKeyValue 0.18, BrightPassThreshold 0.6, LuminanceMin/Max 0.15/3.6, BloomScale 0.5, AfterimageScale 0.05, StarScale 1.20, GlareType 8), ControlTweak the input constants (CameraSpeed 0.50, TargetSpeed 0.50, TargetMovingRange -10..10, mov_trigger_play 20, eye/mov_stick_play 6000), and Camera NoseCameraFOV 0.92 / ChangeTime 0.20. Corrects my own last entry: WEAPONS is a 59-entry NAME ROSTER, not a stat sheet, and UNITS is not units at all -- seven craft-slot/pilot pairs, the wingman roster. IGNORE is a 13-name blocklist over the weapon enumeration. AUTO_SETTINGS lists exactly 28 stageNN_settings.tbl files -- a third independent confirmation of the 28-stage count. The objective-shaped records are UI: SUB_OBJECTIVE is a HUD layout (two variants ship), SQUADRON_ORDER_OBJECT is 29 .prt sprite names, MISSIONS holds the challenge categories, STAGES has zero fields. Docs + one new artefact; ISL artefacts byte-identical.
This commit is contained in:
@@ -748,6 +748,44 @@ unknown, what evidence exists, and what the first step would be. Move an item in
|
||||
`GP_HANGAR_ARSENAL.pak` is a pointer, not a decode; the field-level read is a
|
||||
separate job per table.
|
||||
|
||||
* ✅🔴 **(2026-08-27) THE CONFIG RECORDS ARE DECODED — real render/input constants
|
||||
for the port, and my "canonical weapon/unit definitions" guess was half wrong.
|
||||
Artefact `data/config-records.txt`,
|
||||
[structures/isl-condition-builtins](structures/isl-condition-builtins.md).**
|
||||
✅ **The find — directly portable constants:**
|
||||
`Rendering` = `Brightness 1.4`, `Contrast 1.0`, `Saturation 1.00`, `Hue 0.00`,
|
||||
`ExposureKeyValue 0.18`, `BrightPassThreshold 0.6`, `BrightPassOffset 1.5`,
|
||||
`LuminanceMin 0.15`, `LuminanceMax 3.6`, `BloomScale 0.5`,
|
||||
`AfterimageScale 0.05`, `StarScale 1.20`, `GlareType 8`, `ColorLayer R/G/B/A`.
|
||||
`ControlTweak` = `CameraSpeed 0.50`, `TargetSpeed 0.50`,
|
||||
`TargetMovingRange −10.0…10.0`, `mov_trigger_play 20`, `eye_stick_play 6000`,
|
||||
`mov_stick_play 6000`. `Camera` = `NoseCameraFOV 0.92`, `ChangeTime 0.20`.
|
||||
These are the game's own tone-mapping, bloom and input-deadzone numbers.
|
||||
🔴 **Correction to my own last entry.** I said `GP_HANGAR_ARSENAL.pak` holds
|
||||
"the canonical weapon/unit definitions". **`WEAPONS` is a 59-entry NAME ROSTER**
|
||||
(`No_Equipment`, `Machiene_Cannon_MG1`, `Broad_Sword_SG1`, `Frail_GP37`,
|
||||
`Stiletto_BG1`, `Pilum_BP`, …) — an enumeration of ids, **not a stat sheet**.
|
||||
And **`UNITS` is not units at all**: seven craft-slot↔pilot pairs —
|
||||
`Bird1-Sandra`, `Bird2-Billy`, `Bird3-Antonius`, `Bird4-Carl`,
|
||||
`Rhino1-Raymond`, `Rhino2-Katana`, `Rhino3-Ellen` — **the wingman roster**.
|
||||
✅ **`IGNORE` is a 13-name blocklist** over that enumeration
|
||||
(`Long_Spear_HBP`, `Twin_Saber_LG2H`, `Eagle_120AM`, `Maelstrom_Bomb`,
|
||||
`Cluster_Mine_B10`, plus placeholders `Wep_82`, `Wep_85`) — weapons that exist
|
||||
but are withheld.
|
||||
🔑 **`AUTO_SETTINGS` lists exactly 28 files** (`stage01_settings.tbl` …
|
||||
`stage29_settings.tbl`) — a **third independent confirmation of the 28-stage
|
||||
count**, after the `.ssb` census and the `UnitGroup_SNN.tbl` probe.
|
||||
🟡 **The "objective" records are UI, not gameplay.** `SUB_OBJECTIVE` is a HUD
|
||||
layout (`MAX_OBJECTIVE_OFFSET 353,242`, `TEXT_OFFSET 85,271`,
|
||||
`NUM_QUALIFY_OFFSET 309,242`, `DOT_OFFSET 0,20`) with a **second variant** in
|
||||
one pak (`275,222` / `85,251` / `231,222` / `0,0`), so two layouts ship.
|
||||
`SQUADRON_ORDER_OBJECT` is 29 `.prt` sprite names. `MISSIONS` holds
|
||||
`TimeAttack`, `ScoreAttack`, `Extra01`…`Extra04` — the **challenge**
|
||||
categories, not the campaign. `STAGES` has **zero** fields.
|
||||
🟡 Not settled: where weapon/unit STATS live — the roster names an enumeration,
|
||||
and the corpus's existing weapon datasheet came from a runtime capture, so the
|
||||
static table behind it is still unlocated.
|
||||
|
||||
## ✅✅ SOLVED — the mission freeze was a modal sign-in dialog (2026-08-26)
|
||||
|
||||
`XamShowSigninUI` opens a modal dialog and `xeXamDispatchDialog` blocks the
|
||||
|
||||
262
docs/re/data/config-records.txt
Normal file
262
docs/re/data/config-records.txt
Normal file
@@ -0,0 +1,262 @@
|
||||
# Decoded contents of the named config records
|
||||
|
||||
Read with tools/re-capture/unitgroup.py: parse() + named(). A record is
|
||||
located by tag_hash(NAME) over every IDXD entry in every pak. Identical
|
||||
contents appearing in several paks are the per-language / per-variant copies;
|
||||
only DISTINCT variants are printed, with the paks that carry each.
|
||||
|
||||
## Rendering (1 distinct variant)
|
||||
variant 1 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
AfterimageScale 0.05
|
||||
BloomScale 0.5
|
||||
BrightPassOffset 1.5
|
||||
BrightPassThreshold 0.6
|
||||
Brightness 1.4
|
||||
ColorLayerA 0.00
|
||||
ColorLayerB 0.00
|
||||
ColorLayerG 0.00
|
||||
ColorLayerR 0.00
|
||||
Contrast 1.0
|
||||
ExposureKeyValue 0.18
|
||||
GlareType 8
|
||||
Hue 0.00
|
||||
LuminanceMax 3.6
|
||||
LuminanceMin 0.15
|
||||
Saturation 1.00
|
||||
StarScale 1.20
|
||||
|
||||
## ControlTweak (1 distinct variant)
|
||||
variant 1 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
CameraSpeed 0.50
|
||||
TargetMovingRange_Max 10.0
|
||||
TargetMovingRange_Min -10.0
|
||||
TargetSpeed 0.50
|
||||
eye_stick_play 6000
|
||||
mov_stick_play 6000
|
||||
mov_trigger_play 20
|
||||
|
||||
## Camera (3 distinct variants)
|
||||
variant 1 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
ChangeTime 0.20
|
||||
NoseCameraFOV 0.92
|
||||
variant 2 -- 138 copies in GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak, GP_MAIN_GAME_I.pak
|
||||
CameraFar 3000000.0
|
||||
CameraNear 1.0
|
||||
FarCameraFOV 0.92
|
||||
FarCameraPosX 0.0
|
||||
FarCameraPosY 15.0
|
||||
FarCameraPosZ 80.0
|
||||
NearCameraFOV 0.92
|
||||
NearCameraPosX 0.0
|
||||
NearCameraPosY 10.0
|
||||
NearCameraPosZ 40.0
|
||||
NoseCameraFOV 0.92
|
||||
NoseCameraPosX 0.0
|
||||
NoseCameraPosY 4.5
|
||||
NoseCameraPosZ 7.0
|
||||
variant 3 -- 6 copies in GP_MAIN_GAME_D.pak, GP_MAIN_GAME_E.pak, GP_MAIN_GAME_F.pak, GP_MAIN_GAME_I.pak
|
||||
CameraFar 500000.0
|
||||
CameraNear 1.0
|
||||
FarCameraFOV 0.92
|
||||
FarCameraPosX 0.0
|
||||
FarCameraPosY 15.0
|
||||
FarCameraPosZ 80.0
|
||||
NearCameraFOV 0.92
|
||||
NearCameraPosX 0.0
|
||||
NearCameraPosY 10.0
|
||||
NearCameraPosZ 40.0
|
||||
NoseCameraFOV 0.92
|
||||
NoseCameraPosX 0.0
|
||||
NoseCameraPosY 4.5
|
||||
NoseCameraPosZ 7.0
|
||||
|
||||
## WEAPONS (1 distinct variant)
|
||||
variant 1 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
positional (59):
|
||||
No_Equipment, Machiene_Cannon_MG1, Machiene_Cannon_MG2H, Machiene_Cannon_MG3
|
||||
Machiene_Cannon_MG5H, Broad_Sword_SG1, Swing_Sword_SG2H, Twin_Sword_SG3II
|
||||
Frail_GP37, Stiletto_BG1, Dagger_BG2, Rapier_BG4H
|
||||
Pilum_BP, Multi_Pike_BP, Spear_HBP, Long_Spear_HBP
|
||||
Gray_Head_T76H, Saber_LG1, Twin_Saber_LG2H, Needle_L1GP
|
||||
Fire_Arrow_L2GP, Falcon_9AM, Buzzard_10AM, Hawk_75AM
|
||||
Condor_105AM, Eagle_120AM, Terrier_SMH, Hound_SMH
|
||||
Pointer_SM, Piranha_T53, White_Shark_T53R, Dirt_23_Rocket
|
||||
Arrow_27_Rocket, EMP_Mine_B8E, Laser_Mine_B9L, Cauldron_50_Rocket
|
||||
Cluster_Mine_B10, Maelstrom_Bomb, Tomahawk_a_Rail_Gun, Sling_75KG
|
||||
Glaive_120mm_Cannon, Arbalest_155KG, Monoceros_Long_Cannon, Grab_Cannon_XGS
|
||||
Chaff_Flare_Dispencer, Shield_Doubler, Booster, FireControlSystem
|
||||
HP_Regenerator, Magazine, Wep_80, Wep_81
|
||||
Wep_82, Wep_83, Wep_84, Wep_85
|
||||
NullWeapon_Arm1, NullWeapon_Arm2, NullWeapon_Arm3
|
||||
|
||||
## UNITS (5 distinct variants)
|
||||
variant 1 -- 12 copies in GP_HANGAR_ARSENAL.pak
|
||||
Bird1-Sandra
|
||||
Bird2-Billy
|
||||
Bird3-Antonius
|
||||
Bird4-Carl
|
||||
Rhino1-Raymond
|
||||
Rhino2-Katana
|
||||
Rhino3-Ellen
|
||||
variant 2 -- 90 copies in GP_HANGAR_ARSENAL.pak
|
||||
Bird1-Sandra
|
||||
Bird2-Billy
|
||||
Bird3-Antonius
|
||||
Bird4-Carl
|
||||
Rhino1-Katana
|
||||
Rhino2-Ellen
|
||||
Rhino3-Gene
|
||||
Rhino4-Yoji
|
||||
variant 3 -- 30 copies in GP_HANGAR_ARSENAL.pak
|
||||
Bird1-Sandra
|
||||
Bird2-Billy
|
||||
Bird3-Antonius
|
||||
Bird4-Carl
|
||||
Rhino1-Raymond
|
||||
Rhino2-Gene
|
||||
Rhino3-Katana
|
||||
Rhino4-Ellen
|
||||
variant 4 -- 30 copies in GP_HANGAR_ARSENAL.pak
|
||||
Rhino2-Katana
|
||||
variant 5 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
Rhino1-Katana
|
||||
Rhino2-Ellen
|
||||
Rhino3-Gene
|
||||
Rhino4-Brandon
|
||||
|
||||
## IGNORE (4 distinct variants)
|
||||
variant 1 -- 12 copies in GP_HANGAR_ARSENAL.pak
|
||||
Arbalest_155KG
|
||||
Cauldron_50_Rocket
|
||||
Cluster_Mine_B10
|
||||
Eagle_120AM
|
||||
Grab_Cannon_XGS
|
||||
Gray_Head_T76H
|
||||
Long_Spear_HBP
|
||||
Maelstrom_Bomb
|
||||
Pointer_SM
|
||||
Twin_Saber_LG2H
|
||||
Twin_Sword_SG3II
|
||||
Wep_82
|
||||
Wep_85
|
||||
variant 2 -- 12 copies in GP_HANGAR_ARSENAL.pak
|
||||
variant 3 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
Arbalest_155KG
|
||||
Buzzard_10AM
|
||||
Cauldron_50_Rocket
|
||||
Chaff_Flare_Dispencer
|
||||
Cluster_Mine_B10
|
||||
Condor_105AM
|
||||
Dagger_BG2
|
||||
EMP_Mine_B8E
|
||||
Eagle_120AM
|
||||
Falcon_9AM
|
||||
Grab_Cannon_XGS
|
||||
Gray_Head_T76H
|
||||
Hawk_75AM
|
||||
Hound_SMH
|
||||
Laser_Mine_B9L
|
||||
Long_Spear_HBP
|
||||
Maelstrom_Bomb
|
||||
Multi_Pike_BP
|
||||
Pilum_BP
|
||||
Piranha_T53
|
||||
Pointer_SM
|
||||
Rapier_BG4H
|
||||
Shield_Doubler
|
||||
Spear_HBP
|
||||
Terrier_SMH
|
||||
Wep_81
|
||||
Wep_82
|
||||
Wep_85
|
||||
White_Shark_T53R
|
||||
variant 4 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
Arbalest_155KG
|
||||
Booster
|
||||
Cauldron_50_Rocket
|
||||
Chaff_Flare_Dispencer
|
||||
Cluster_Mine_B10
|
||||
EMP_Mine_B8E
|
||||
Eagle_120AM
|
||||
FireControlSystem
|
||||
Grab_Cannon_XGS
|
||||
Gray_Head_T76H
|
||||
HP_Regenerator
|
||||
Laser_Mine_B9L
|
||||
Long_Spear_HBP
|
||||
Maelstrom_Bomb
|
||||
Magazine
|
||||
Pointer_SM
|
||||
Shield_Doubler
|
||||
Twin_Saber_LG2H
|
||||
Twin_Sword_SG3II
|
||||
Wep_81
|
||||
Wep_82
|
||||
Wep_83
|
||||
Wep_84
|
||||
Wep_85
|
||||
|
||||
## AUTO_SETTINGS (1 distinct variant)
|
||||
variant 1 -- 6 copies in GP_HANGAR_ARSENAL.pak
|
||||
positional (28):
|
||||
stage01_settings.tbl, stage02_settings.tbl, stage03_settings.tbl, stage04_settings.tbl
|
||||
stage05_settings.tbl, stage06_settings.tbl, stage07_settings.tbl, stage08_settings.tbl
|
||||
stage09_settings.tbl, stage10_settings.tbl, stage11_settings.tbl, stage12_settings.tbl
|
||||
stage13_settings.tbl, stage14_settings.tbl, stage15_settings.tbl, stage16_settings.tbl
|
||||
tutorial01_settings.tbl, tutorial02_settings.tbl, tutorial03_settings.tbl, tutorial04_settings.tbl
|
||||
tutorial05_settings.tbl, tutorial06_settings.tbl, challenge01_settings.tbl, challenge02_settings.tbl
|
||||
challenge03_settings.tbl, challenge04_settings.tbl, challenge05_settings.tbl, challenge06_settings.tbl
|
||||
|
||||
## SUB_OBJECTIVE (2 distinct variants)
|
||||
variant 1 -- 5 copies in tables.pak
|
||||
DOT_OFFSET 0,20
|
||||
MAX_OBJECTIVE_OFFSET 353,242
|
||||
NUM_QUALIFY_OFFSET 309,242
|
||||
TEXT_OFFSET 85,271
|
||||
variant 2 -- 1 copy in tables.pak
|
||||
DOT_OFFSET 0,0
|
||||
MAX_OBJECTIVE_OFFSET 275,222
|
||||
NUM_QUALIFY_OFFSET 231,222
|
||||
TEXT_OFFSET 85,251
|
||||
|
||||
## SQUADRON_ORDER_OBJECT (1 distinct variant)
|
||||
variant 1 -- 6 copies in tables.pak
|
||||
BTN00 pgmenu_btn00.prt
|
||||
BTN00F pgmenu_btn00f.prt
|
||||
BTN01 pgmenu_btn01.prt
|
||||
BTN01F pgmenu_btn01f.prt
|
||||
BTN10 pgmenu_btn10.prt
|
||||
BTN10F pgmenu_btn10f.prt
|
||||
BTN11 pgmenu_btn11.prt
|
||||
BTN11F pgmenu_btn11f.prt
|
||||
BTN12 pgmenu_btn12.prt
|
||||
BTN12F pgmenu_btn12f.prt
|
||||
BTN20 pgmenu_btn20.prt
|
||||
BTN20F pgmenu_btn20f.prt
|
||||
BTN21 pgmenu_btn21.prt
|
||||
BTN21F pgmenu_btn21f.prt
|
||||
BTN22 pgmenu_btn22.prt
|
||||
BTN22F pgmenu_btn22f.prt
|
||||
BTN30 pgmenu_btn30.prt
|
||||
BTN30F pgmenu_btn30f.prt
|
||||
CMU_FACE_BASE pgfacewin_base.prt
|
||||
CMU_FACE_DEAD pgfacewin_dead.prt
|
||||
CMU_FACE_EM pgfacewin_em.prt
|
||||
CMU_FACE_TR pgfacewin_tr.prt
|
||||
CMU_FACE_WIN pgfacewin.prt
|
||||
CMU_TEXT_WIN pgtextwin.prt
|
||||
ITEM0 pgmenu_item0.prt
|
||||
ITEM1 pgmenu_item1.prt
|
||||
ITEM2 pgmenu_item2.prt
|
||||
ITEM3 pgmenu_item3.prt
|
||||
PAD pgmenu_pad.prt
|
||||
|
||||
## MISSIONS (1 distinct variant)
|
||||
variant 1 -- 8 copies in tables.pak
|
||||
positional (6):
|
||||
TimeAttack, ScoreAttack, Extra01, Extra02
|
||||
Extra03, Extra04
|
||||
|
||||
## STAGES (1 distinct variant)
|
||||
variant 1 -- 2 copies in tables.pak
|
||||
|
||||
@@ -486,6 +486,51 @@ global tables (`MISSIONS`, `STAGES`, `SOUNDS`, `SUB_OBJECTIVE`,
|
||||
`Camera`, `ControlTweak`, `Rendering`, `AUTO_SETTINGS`, `IGNORE`**, and the
|
||||
per-language `GP_MAIN_GAME_*` paks for the enum tables.
|
||||
|
||||
### ✅ (2026-08-27) The records DECODED — and my "canonical definitions" guess was half wrong
|
||||
|
||||
`parse()` + `named()` on each record (artefact `data/config-records.txt`):
|
||||
|
||||
**Real, directly portable constants** — these are the find:
|
||||
|
||||
```
|
||||
Rendering Brightness 1.4 Contrast 1.0 Saturation 1.00 Hue 0.00
|
||||
ExposureKeyValue 0.18 BrightPassThreshold 0.6
|
||||
BrightPassOffset 1.5 LuminanceMin 0.15 LuminanceMax 3.6
|
||||
BloomScale 0.5 AfterimageScale 0.05 StarScale 1.20
|
||||
GlareType 8 ColorLayer R/G/B/A 0.00
|
||||
ControlTweak CameraSpeed 0.50 TargetSpeed 0.50
|
||||
TargetMovingRange -10.0 … 10.0
|
||||
mov_trigger_play 20 eye_stick_play 6000 mov_stick_play 6000
|
||||
Camera NoseCameraFOV 0.92 ChangeTime 0.20
|
||||
```
|
||||
|
||||
🔴 **But `WEAPONS` and `UNITS` are not what I called them.** Last iteration I
|
||||
said `GP_HANGAR_ARSENAL.pak` holds "the canonical weapon/unit definitions". Half
|
||||
right at best:
|
||||
|
||||
* **`WEAPONS`** is a **59-entry name roster** — `No_Equipment`,
|
||||
`Machiene_Cannon_MG1`, `Broad_Sword_SG1`, `Frail_GP37`, `Stiletto_BG1`,
|
||||
`Pilum_BP`… — an enumeration of ids, **not a stat sheet**.
|
||||
* **`UNITS`** is not units at all: seven fields pairing a craft slot with a pilot
|
||||
— `Bird1-Sandra`, `Bird2-Billy`, `Bird3-Antonius`, `Bird4-Carl`,
|
||||
`Rhino1-Raymond`, `Rhino2-Katana`, `Rhino3-Ellen`. **The wingman roster.**
|
||||
* **`IGNORE`** is a **13-name blocklist** over that roster —
|
||||
`Long_Spear_HBP`, `Twin_Saber_LG2H`, `Eagle_120AM`, `Maelstrom_Bomb`,
|
||||
`Cluster_Mine_B10`, and the placeholders `Wep_82`, `Wep_85`. Weapons that
|
||||
exist in the enumeration but are withheld.
|
||||
|
||||
🔑 **`AUTO_SETTINGS` lists exactly 28 files** — `stage01_settings.tbl` …
|
||||
`stage29_settings.tbl` — a **third independent confirmation of the 28-stage
|
||||
count**, after the `.ssb` census and the `UnitGroup_SNN.tbl` probe.
|
||||
|
||||
🟡 **And the UI records are UI, not gameplay.** `SUB_OBJECTIVE` is a HUD layout —
|
||||
`MAX_OBJECTIVE_OFFSET 353,242`, `TEXT_OFFSET 85,271`, `NUM_QUALIFY_OFFSET
|
||||
309,242`, `DOT_OFFSET 0,20` — with a **second variant** (`275,222` / `85,251` /
|
||||
`231,222` / `0,0`) in one pak, so there are two layouts. `SQUADRON_ORDER_OBJECT`
|
||||
is 29 `.prt` sprite names for the squadron-order menu. `MISSIONS` holds six
|
||||
positional members — `TimeAttack`, `ScoreAttack`, `Extra01`…`Extra04`, the
|
||||
**challenge** categories, not the campaign. `STAGES` has **zero** fields.
|
||||
|
||||
🟡 Its neighbours belong to the same cluster: `builtin103` reads
|
||||
`[phase+10156]` and `[phase+10152]` (9 and 7 writers), and a sibling vtable stub
|
||||
clears `[phase+10152]`. The shape is an engine→script status trio, but that is a
|
||||
|
||||
Reference in New Issue
Block a user