re: the per-phase objectives, from the game's own text
TextIndex in sylpheed-formats::localization already indexes per-phase objective text under S<NN>_P<n>_Objective_<i>, with hints and lose conditions alongside. Querying it settles what the wave work spent many iterations circling, and a disc test now pins it. Stage 02 phase 1 is "Shoot down all invading enemy fighters while watching out for attacks on the ACROPOLIS", losing if the ACROPOLIS is sunk. Phase 2 is "Protect the Admiral's ship the CALIBAN until it has entered the safe zone", losing if the CALIBAN is sunk. Phase 3 is "Destroy the interstellar cruise missiles headed for Schlos Base", matching phase 3's roster of exactly nine ISCMissile and SUBOBJ_013. That explains the phase advances and shows they are not all the same kind. Phase 1 is a kill-all-marked-fighters gate -- fighters, not the turrets every run killed almost exclusively. Phase 2 is positional and ends when the CALIBAN reaches a safe zone, so "what advances a phase" never had a single answer. It also closes a loop to the first session. The hints say red mission markers [OB] indicate your targets, so REMAINING OB -- the HUD counter hunted in the earliest iterations and located at 0xbdb59668 -- is the count of remaining marked objective targets, which is phase-1 progress itself. The old reframing that the counter is not a roster was right, and this names what it is. It is also the correct signal to watch for an advance: not deployed, which only changes once the next phase deploys, but REMAINING OB reaching zero, which is the cause. Method lesson recorded because the reflex will recur: localization.rs has had objectives, hints and lose_conditions for some time, and several iterations were spent reconstructing the same information by hand from SUBObjective strings and the guide script. The reconstruction was not wasted -- it produced the IXUD UTF-16BE and language\ prefix findings independently -- but the corpus should have been searched before the disc was, and grep -rl TextIndex crates/ would have saved the detour. Minor discrepancy noted, not investigated: ixud.rs documents the string pool as UTF-16BE and localization.rs as UTF-16LE.
This commit is contained in:
@@ -560,6 +560,20 @@ search cannot find a *schedule*.
|
||||
the pilot (game-playing, uncertain); (2) accept the static answer (structure,
|
||||
rosters, routes, objective texts all decoded and cross-confirmed; only the
|
||||
*trigger* is inferred); (3) one 40+ min chained run betting against freezes.
|
||||
* ✅✅ **(2026-08-24) THE OBJECTIVES, FROM THE GAME'S OWN TEXT** — pinned by
|
||||
`tests/phase_objectives_disc.rs`; `TextIndex::objectives(stage, phase)` already
|
||||
existed. **S02 phase 1: "Shoot down all invading enemy fighters while watching
|
||||
out for attacks on the ACROPOLIS"** (lose: ACROPOLIS sunk). **Phase 2: "Protect
|
||||
the CALIBAN until it has entered the safe zone"** — *positional, not a kill
|
||||
count*, so phase triggers are NOT all the same kind. **Phase 3: "Destroy the
|
||||
interstellar cruise missiles headed for Schlos Base"** (matches the 9
|
||||
`ISCMissile` + `SUBOBJ_013`). ✅ **`[OB]` = objective marker** — hints say *"Red
|
||||
mission markers [OB] indicate your targets"*, so **`REMAINING OB` at
|
||||
`0xbdb59668` is phase-1 progress** and is the right signal to watch, not
|
||||
`deployed`. Closes a loop to the first session. 🔴 **Method lesson: the crate
|
||||
already knew this** — several iterations reconstructed it the hard way;
|
||||
`grep -rl TextIndex crates/` would have saved the detour. ❔ Minor: `ixud.rs`
|
||||
says UTF-16BE, `localization.rs` says LE — one comment is wrong.
|
||||
🔴 `SYLPH_HZ=3` refuted as a lever: it gave the LOWEST frame rate (8/s) with the
|
||||
most kills, so pilot polling is not the throttle.
|
||||
* ~~🚧 BLOCKER: t=210/240 unreachable in one turn~~ — **superseded, see above**;
|
||||
|
||||
Reference in New Issue
Block a user