re: all 24 settings objects named -- stage\StageParameter_S<NN>.tbl

The queued item (the 29-object resource manifest) turned out to be already
settled by challenge-mission-gate.md and stage-mission-tables.md, so the
iteration moved to the open question those docs make answerable.

Hashing EVERY string that appears in any IDXD object on the disc resolves all
24: StageParameter_S01..S16 (story), S24..S29 (challenge), StageParameter_
Tutorial shared by all six tutorials, and StageParameter_Test.  16+6+1+1 = 24,
which is exactly why the settings family is 24 against 29 stage records.

IsBoss16Enable confirmed independently: that object is StageParameter_S16.
GravityFactor is non-zero in S10 (700), S11 (400), S03 (250), S27 (250); the
three unscored objects are S24, S27, S28; the one without SplinterCell is _Test.

Refuted on the way: TOC order is not stage order (the TOC is hash-sorted and the
Boss16 object is 17th, not 16th), and neither the StageResource template nor a
real 19-field record names the settings table.  The AUTO_SETTINGS filenames are
a different scheme -- none of the 28 hashes to any of these 24.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Claude (auto)
2026-08-27 19:05:28 +00:00
parent 5f764458cd
commit 589d09f2b5
6 changed files with 141 additions and 17 deletions

View File

@@ -67,18 +67,12 @@ difficulties) zero the multipliers, the penalties and `TimeBonus_Maximun`
outright: missions that are not scored. Full per-object diffs are in the
artefact.
## Which object is which stage
## Which object is which stage — settled
Not settled. `AUTO_SETTINGS` names 28 files (`stage01…16`, `tutorial01…06`,
`challenge01…06`, tags 116/1823/2429 — tag 17 absent, the cut S17), but
**none of those 28 names resolves to any of the 24 objects** under 19 prefixes
(bare, `stage\`, `Stage\`, `message\`, `settings\`, `2d\`, `ui\`, `system\`,
`dat\`, `prt\`, `view\`, `language\`, `eng\`, `script\`, `Script\`, `mission\`,
`Mission\`, `param\`, `Param\`). So either the settings files are loaded outside
the pak namespace, or the scoring objects are keyed by something else entirely.
**The 24-vs-28 puzzle is answered** by
[`stage-settings-table.md`](stage-settings-table.md): the same pack holds a
*second* family of **29** objects that also uses `Phase_1/2/3` — the resource
manifest — so the settings family really is 24 and the 29 is a different table.
The only per-stage handle found so far is `IsBoss16Enable`, present in exactly
one object.
All 24 are named `stage\StageParameter_S<NN>.tbl`, plus `_Tutorial` (shared by
all six tutorials) and `_Test`. See
[`stage-settings-table.md`](stage-settings-table.md); that also explains 24
against the 29 stage records, and confirms the `IsBoss16Enable` object is S16.
⚠️ The names are **not** `AUTO_SETTINGS`'s `stageNN_settings.tbl`; none of those
28 hashes to any of these objects.

View File

@@ -17,6 +17,40 @@ same rendering fields again. `stage-definition-table.md` /
`LodResource` / `MotionResource`. `SplinterCell` and `Difficulty_*` are owned by
nothing.
## ✅ Every settings object is named — `stage\StageParameter_S<NN>.tbl`
**Settled 2026-08-27, 24/24.** Hashing **every string that appears anywhere in
any IDXD object on the disc** (rather than guessing filenames) resolves all
twenty-four:
| name | count |
|---|---|
| `stage\StageParameter_S01…S16.tbl` | 16 — the story campaign |
| `stage\StageParameter_S24…S29.tbl` | 6 — the challenge missions |
| `stage\StageParameter_Tutorial.tbl` | **1, shared by all six tutorials** |
| `stage\StageParameter_Test.tbl` | 1 — the developer stage |
**That is exactly the 24, and it explains 24 against the 29 stage records**
([`challenge-mission-gate.md`](challenge-mission-gate.md) counts 29:
16 story + 6 tutorial + 6 challenge + `Test`): the six tutorials do not get one
table each, they **share a single `_Tutorial` table**, and `_Test` accounts for
the last. 16 + 6 + 1 + 1 = 24.
**Independent confirmation of the `IsBoss16Enable` hook.** That field is
present in exactly one object, and the object is `0xEECC84F2` =
**`StageParameter_S16.tbl`** — predicted before the naming, confirmed by it.
⚠️ The names are **not** what `AUTO_SETTINGS` lists. That record names
`stage01_settings.tbl``challenge06_settings.tbl`, and **none of those 28
hashes to any of these 24 objects** under 19 prefixes. Two different naming
schemes for stage-scoped parameters; only `StageParameter_*` is what the pak
actually holds.
With the names in hand the earlier value findings acquire stages:
**`GravityFactor` is non-zero in S10 (700), S11 (400), S03 (250) and S27 (250)**;
the three objects that zero their score multipliers are **S24, S27 and S28**; and
the one object without a `SplinterCell` record is **`_Test`**.
## ⚠️ Two different families both use `Phase_1/2/3`
Searching `GP_MAIN_GAME_E.pak` for objects containing a `Phase_1` record finds
@@ -123,5 +157,4 @@ owns `MapPath`/`MapMesh` in the `Stage_SNN` records; what it does not say is tha
the name recurs in the resource manifest's per-phase records.
## 🟡 Not settled
* Which object is which stage, beyond the single `IsBoss16Enable` hook.
* `SplinterCell Count 5` — name and value only.