This repository has been archived on 2026-09-16. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Syplheed-Reborn/docs/re/structures/mission-script-manifest.md
Sylpheed RE agent 9d25a3a582 re: correction -- the dialogue table was already in the corpus, and one negative was false
The previous commit announced message\MissionDialogMessage.tbl as a
find.  structures/ixud-localised-text.md OWNS it and already says
S02_P1_OBJECTIVE and friends are record names in an IDXD map,
message\MissionDialogMessage.tbl, whose positional fields list the
lowercase per-line IXUD names -- and that *_GRAPH is the odd one, a
single named field holding a texture.  I grepped the manifest doc and
not the text doc.  Third overclaim in four days; the rule is now to grep
the doc that owns the DATA, not only the doc that owns the FILE.

Worse, the headline negative was wrong.  MissionDialog_local_string.tbl
DOES resolve -- as language\MissionDialog_local_string.tbl, IXUD, in all
six GP_MAIN_GAME_* paks.  My 33 prefixes omitted language\, which is
precisely the convention ixud-localised-text.md records for language
paks.  A prefix sweep is only as good as its prefix list, and the list
should come from the corpus.

'LOSE has exactly one entry' was wrong too.  Per kind: HINT_PAUSE 4,
HINT 3, LOSE 4, OBJECTIVE 4 positional fields, and GRAPH 1 NAMED field
holding the .t32.  The single-field bucket was GRAPH, not LOSE.

What survives as new: the 11 non-MISSION field values read as a block;
the GP_TEST and TEXTS sibling records; the per-stage phase census; and
the five pgmsg_*.prt resolving nowhere under 34 prefixes x 41 archives,
now with two working controls in the same sweep.

Artefact 8 insertions / 3 deletions, every deleted line replaced by its
corrected form; the other five regenerate byte-identical.
2026-08-27 13:45:35 +00:00

105 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✅ `Stage\script.tbl` — the 11 non-`MISSION` fields, and where they point
[mission-script-ssb](mission-script-ssb.md) owns this manifest and names its
40 fields; **it never read the 11 that are not `MISSION<n> = StageNN.ssb`.**
This does, and follows each value into the archives. Artefact
`../data/script-manifest.txt`, regenerator `tools/re-capture/script_manifest.py`.
```
DIALOG_MESSAGE MissionDialogMessage.tbl
DIALOG_LOCAL_STRING MissionDialog_local_string.tbl
FONT dat\fonts.pak+HGRGE00.TTF FONT_SIZE 15
TEXT_POS 128,128,16 TEXT_LINES 30
MISSION_START_PRT pgmsg_start.prt MISSION_END_PRT pgmsg_end.prt
MISSION_UPDATE_PRT pgmsg_update.prt MISSION_FAILED_PRT pgmsg_failed.prt
MISSION_RESTART_PRT pgmsg_restart.prt
```
Two sibling records in the same file, also unread until now:
`GP_TEST` (`PATH = dat\GP_TEST\` — a debug archive that is **not on the disc**)
and `TEXTS` (`FONT_SIZE 33`, `TEXT_LINES 3`, `TEXT_POS 296,565,39` — a second,
larger text style beside `SCRIPTS`'s own 15/30/`128,128,16`).
> ## ❌ CORRECTION (2026-08-27, same day) — the dialogue table was ALREADY KNOWN,
> ## and one "not found" was a FALSE NEGATIVE
>
> This page announced `message\MissionDialogMessage.tbl` as a find.
> **[ixud-localised-text](ixud-localised-text.md) owns it** and already states
> that `S02_P1_OBJECTIVE` and friends "are record names in an **IDXD** map,
> `message\MissionDialogMessage.tbl`, whose positional fields list the
> *lowercase* per-line IXUD names", and that "`*_GRAPH` is the odd one: a single
> named field holding a texture, `pgmsg_stg02_1.t32`". I grepped the manifest
> doc and not the text doc. **Third overclaim in four days.**
>
> Worse, the sweep's headline negative was wrong.
> **`MissionDialog_local_string.tbl` DOES resolve — as
> `language\MissionDialog_local_string.tbl`, IXUD, in all six
> `GP_MAIN_GAME_*` paks.** My 33 prefixes omitted `language\`, which is exactly
> the convention `ixud-localised-text.md` records for language paks. A prefix
> sweep is only as good as its prefix list, and the list should have come from
> the corpus.
>
> Also wrong here: "`LOSE` has exactly one entry". Per kind the shapes are
> `HINT_PAUSE` 4, `HINT` 3, `LOSE` 4, `OBJECTIVE` 4 positional fields, and
> **`GRAPH` 1 NAMED field** — the `.t32` texture. The single-field bucket was
> `GRAPH`, not `LOSE`.
>
> **What survives as new**: the 11 field VALUES read as a block, the `GP_TEST`
> and `TEXTS` sibling records, the per-stage phase census, and the five
> `pgmsg_*.prt` still resolving nowhere.
## `message\MissionDialogMessage.tbl` — keyed by stage AND phase
Probed 7 values × 34 prefixes × 41 archives. **Two resolve**:
`message\MissionDialogMessage.tbl` (IDXD) and
`language\MissionDialog_local_string.tbl` (IXUD), each in all six
`GP_MAIN_GAME_*` paks.
**200 records, 25 280 bytes**, every name of the form
`S<NN>_P<n>_<KIND>` with five kinds, 40 each:
| kind | fields | reading |
|---|---:|---|
| `HINT_PAUSE` | 4 | the pause menu's hint lines |
| `HINT` | 3 | 🟡 in-mission hint |
| `OBJECTIVE` | 4 | 🟡 the objective text |
| `LOSE` | 4 | 🟡 the failure lines |
| `GRAPH` | **1 NAMED** | ✅ a `.t32` texture — `S10_P1_GRAPH` → `pgmsg_stg10_1.t32` |
The fields are **positional, tagged 0…3**, and each value is a message key:
`S10_P1_HINT_PAUSE` → `S10_P1_Hint_Pause_00 … _03`. So this is an index from
(stage, phase, kind) to the localised strings — the same `S<NN>_P<n>` keying the
ISL corpus uses for [mission phases](isl-phase-guards.md).
🧪 **Control — the 22 stages are exactly the STORY stages.** The 40 stage-phases
span stages **1–16 and 24–29**; that is a subset of the 28 shipped, and the six
with no hints at all are **18–23**, the tutorials
([stage-numbering-and-player-craft](stage-numbering-and-player-craft.md)). A
fifth independent route to the same story/tutorial split, and it also gives the
**phase count per stage** — 1 to 3, e.g. S02 and S03 have 3, S10 and S13 have 1.
## 🟡 Five values still do not resolve — with two working controls
All five `pgmsg_*.prt` are **not a pak entry** under any of the 34 prefixes
tried. Two controls sit in the same sweep and both resolve in 6 archives:
`message\MissionDialogMessage.tbl` and
`language\MissionDialog_local_string.tbl` — the second only after the
correction above added `language\`.
This is the same wall [mission-phase-advance](../mission-phase-advance.md) hit
for the manifest's KEYS — but that sweep probed `MISSION1..33` and
`MISSION_*_PRT` as names. This one probes the **values**, which had never been
read, and closes them the same way.
## ⚠️ `name_hash` is CASE-INSENSITIVE
`name_hash("message\\a.tbl") == name_hash("Message\\A.TBL")`. `tag_hash` is
**not** (`tag_hash("Abc") != tag_hash("abc")`). Already noted for archive lookup
in [sound-pak-contents](sound-pak-contents.md); worth repeating because it
doubles the apparent hit count of any prefix sweep.
## 🟡 Not settled
* Where the five `pgmsg_*.prt` screen parts live.
* `dat\GP_TEST\` is named by the manifest and is not on the disc — a debug path
left in, not a missing asset. Not chased.