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
|
`GP_HANGAR_ARSENAL.pak` is a pointer, not a decode; the field-level read is a
|
||||||
separate job per table.
|
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)
|
## ✅✅ SOLVED — the mission freeze was a modal sign-in dialog (2026-08-26)
|
||||||
|
|
||||||
`XamShowSigninUI` opens a modal dialog and `xeXamDispatchDialog` blocks the
|
`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
|
`Camera`, `ControlTweak`, `Rendering`, `AUTO_SETTINGS`, `IGNORE`**, and the
|
||||||
per-language `GP_MAIN_GAME_*` paks for the enum tables.
|
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
|
🟡 Its neighbours belong to the same cluster: `builtin103` reads
|
||||||
`[phase+10156]` and `[phase+10152]` (9 and 7 writers), and a sibling vtable stub
|
`[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
|
clears `[phase+10152]`. The shape is an engine→script status trio, but that is a
|
||||||
|
|||||||
Reference in New Issue
Block a user