re: S00A.wmv confirmed off the running game -- the movie was never

ambiguous, the sampling was

Continuing last iteration's amber rather than starting something new. The
fix was already named there: stop using 5-second screenshots and record
the display.

Recorded with ffmpeg x11grab at 10 fps and matched every 0.5 s. Across
the 25 consecutive samples from capture 5.0 s to 17.5 s the S00A playhead
is strictly non-decreasing -- 1.0 through 11.0 s, advancing at
essentially real time -- with scores at or above 0.96 and four of them at
0.999 or 1.000 against a runner-up in the 0.78-0.83 range. S00A is the
top match on 23 of the 27 frames carrying signal. So MS00A -> S00A.wmv is
decoded from the manifest AND measured off the game, and the intro begins
about 4.5 s after A on the save slot.

The previous attempt's failure is worth its own METHOD line, because it
did not look like a sampling problem: it looked like weak evidence for
the wrong film. Sparse sampling produced contrast-23 frames, a playhead
that would not join up, and one frame preferring ADV. Sampling does not
weaken a signal gracefully; it turns it into noise shaped like a
different answer.

One aside recorded and not chased: in the S00A 5.5-10 s window, ADV also
scores 0.97-0.99 at its OWN monotone playhead of 33.5-37.5 s. Two films
matching strongly with two consistent playheads is not noise -- it reads
as the boot movie being a trailer cut from the story cutscenes, which
also explains why the sparse run kept flipping between them.
This commit is contained in:
Sylpheed RE agent
2026-08-28 19:23:57 +00:00
parent 66643bae55
commit f1e78c425c
3 changed files with 53 additions and 28 deletions

View File

@@ -140,7 +140,7 @@ authored version can be deleted.
disc** — this is why the splash is a screen), **`ADVERTISE_MOVIE``ADV.wmv`**,
`STAFF_ROLL``SYLPH_HD720p_8M-CBR_2ch.wmv`, **`MS00A``S00A.wmv`** (the
new-game intro, 93.9 s, with subtitle + `VOICE_S00A` + a text overlay),
`MS01A``S01A.wmv`. ✅ decoded.
`MS01A``S01A.wmv`. ✅ decoded — and **`S00A.wmv` is now also measured**: matched off the running game at 0.961.000 with a strictly monotone playhead over 25 consecutive 0.5 s samples. It starts ~4.5 s after Ⓐ on the save slot.
**The boot intro and the attract movie are the SAME asset** — there is no
separate boot slot, and 15 of 19 captured attract frames match `ADV.wmv` with a
monotonically advancing playhead ending at its full 137 s. One video, not two.
@@ -256,7 +256,6 @@ here until 2026-08-28 and is now settled.)
| 🟡 | **the paint-order tie-break** (Q3) | eight candidates refuted; costs one element's blend on one screen |
| 🟡 | **GamePart ids behind the buttons** (Q4) | the *screens* are measured; the ids are a name match onto the executable's class names |
| ❔ | **the boot transitions in code** (Q6) | bounded as code-not-data, not proven. `sub_821C6458` — the substantial function in `GamePart_Title`'s neighbourhood — has **not been read** |
| 🟡 | **`MS00A``S00A.wmv` watched only weakly** (Q9) | the path completes now, but 5-second screenshots gave a partial playhead, not the clean one the attract test gave. Manifest decode is still the primary evidence |
| ❔ | **builds 0/1 and 10/11**, the `DELTASABER` plates (Q2) | never seen anywhere in the boot path, the title-side screens or the attract loop. A mission load is the remaining candidate and this container kills runs before one completes |
The first two share one unblocker — an emulator build whose audio path can be

View File

@@ -196,3 +196,10 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
~1 GB free with swap exhausted. Budget dynamic experiments to fit in ~2 minutes
of guest time, take the measurement early, and never read a disappearance as a
guest crash without checking the log tail for one.
* **When a frame-match will not resolve, sample denser before doubting the
hypothesis.** Identifying a movie from 5-second screenshots gave contrast-23
frames, a playhead that would not join up, and a runner-up winning one frame —
it looked like weak evidence for the wrong film. The same question sampled every
0.5 s (`ffmpeg x11grab` at 10 fps) answered at **0.999 with a strictly monotone
playhead**. Sparse sampling does not weaken a signal gracefully; it turns it
into noise that looks like a different answer.

View File

@@ -126,34 +126,53 @@ black screen. Hammering breaks it; one press does exactly what the button is for
The scripts' `waiting it out (tapping breaks the title)` comment is **too broad**,
and it costs every scripted boot ~2.5 minutes.
## 🟡 `S00A.wmv` watched — weakly, and the weakness is the point
## `S00A.wmv` watched — measured 2026-08-28
Reaching the new-game intro finally worked (`SELECT DATA` did not crash this
time), so the manifest's `MS00A → S00A.wmv` was put to the same frame-signature
test that identified the attract movie. **It did not reproduce that test's
quality, and the honest read is "consistent with", not "confirmed".**
The manifest's `MS00A → S00A.wmv` has now been confirmed against the running
game. The first attempt, with 5-second screenshots, gave an ambiguous partial
playhead; re-run with **`ffmpeg x11grab` at 10 fps** and matched every 0.5 s, it
is unambiguous:
* The first four samples give a clean monotonic `S00A` playhead **2, 6, 9, 13 s**
across four 5-second samples — and `S00A` beats `ADV` on each.
* The single strongest frame of the run (contrast 47.4) matches `S00A` at
**0.916** against `ADV` 0.714.
* But the run as a whole is **not** the clean advancing playhead the attract test
produced (15 of 19, monotone throughout). Most frames here sit at contrast
2337, where the discrimination is poor by this page's own rule, and one
high-contrast frame matches `ADV` over `S00A`. Two locally-consistent runs
(2→13 s, then 86→90 s) do not join into one timeline.
| capture t | `S00A` score @ playhead | `ADV` (runner-up) |
|---|---|---|
| 5.0 s | **0.998** @ 1.0 s | 0.787 @ 126.5 s |
| 6.0 s | **0.999** @ 1.5 s | 0.820 @ 126.5 s |
| 7.5 s | **1.000** @ 3.0 s | 0.836 @ 126.5 s |
| 9.0 s | **0.999** @ 4.5 s | 0.823 @ 126.5 s |
| 12.0 s | **0.998** @ 7.0 s | 0.985 @ 34.5 s |
| 16.0 s | **0.999** @ 10.0 s | 0.886 @ 37.5 s |
| 17.5 s | **0.967** @ 11.0 s | 0.460 @ 87.0 s |
So the primary evidence that the new-game intro is `S00A.wmv` remains the
**manifest decode**; this run is weak corroboration and is recorded as such. A
clean identification needs denser sampling (the 30 fps `x11grab` route from
[`screen-transitions.md`](screen-transitions.md)) rather than 5-second
screenshots.
Across the 25 consecutive samples from capture 5.0 s to 17.5 s the `S00A`
playhead is **strictly non-decreasing** — 1.0, 1.5, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0,
4.5, 5.0, 5.5, 5.5, 6.0, 6.5, 7.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.0, 9.5, 10.0, 10.5,
11.0 — advancing at essentially real time, with scores at or above 0.96. **`S00A`
is the top match on 23 of the 27 frames that carry signal** (contrast > 35;
the other 25 of 52 frames are the transition and are correctly ignored).
### ⚠️ And the run was killed before the mission load
So the new-game intro is `S00A.wmv`: **decoded** from the manifest and now
**measured** off the game. It begins ~4.5 s after Ⓐ on the save slot.
The emulator disappeared at ~145 s with **no crash line in its own log** — the
last entries are routine `MEM-WATCH rss=1153MB` — so this was an external kill,
not a guest fault. It is the **second** time this session (the first at ~50 s
into a boot). Long dynamic runs are unreliable in this container, and the
`DELTASABER` plates of [`ui-title-build-map.md`](ui-title-build-map.md), which
would need a mission load, were not reached.
### 🟡 An aside worth recording: `ADV.wmv` reuses `S00A` footage
In the window `S00A` 5.510 s, `ADV` also scores 0.970.99 — at its *own*
monotonically advancing playhead, 33.537.5 s. Two different movies both matching
strongly with two consistent playheads is not noise; it reads as **the boot movie
being a trailer cut from the story cutscenes**, `S00A` among them. That would
explain why the sparse first attempt kept flipping between them. Not investigated
further.
### ⚠️ Sparse sampling was the whole problem
The earlier attempt sampled every 5 s and produced contrast 2337 frames, a
playhead that would not join up, and one high-contrast frame preferring `ADV`. The
same question at 0.5 s spacing answers itself at 0.999. **The movie was never
ambiguous; the sampling was.**
### The run was killed before the mission load
An earlier run of this path disappeared at ~145 s with **no crash line in its own
log** — routine `MEM-WATCH rss=1153MB` to the end — so an external kill, not a
guest fault, and the second this session. The `DELTASABER` plates of
[`ui-title-build-map.md`](ui-title-build-map.md) need a mission load and were not
reached.