F3 — which cue, if any, does the title play? (positive control required) #5
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The export carries exactly one music track,
bgm/main_menu.ogg, and the port plays nothing on the title. Whether the game does is unestablished.Two questions. Which cue, if any, does the title play — the menu's is decoded (cue 1103 =
BGM_103viasub_821C5580) and the same route should answer it. And is there a one-shot sting when the plate appears, or when Ⓐ is accepted? Either would read to a player as "something missing".BGM half: already ✅ decoded, no new work —
f3-title-plays-bgm-102-and-103.md(cues 1102/1103).
Sting half:
docs/re/f3-title-sting-mechanism-found-not-value.md,in #23 (
dff5f77). R4's control still holds — this reuses the exact 34-callcensus that demonstrably finds the menu's cue, and extends it.
What's new: the BGM census resolved a literal cue-id argument before
every call; two of the 34 calls don't have one (a register passthrough, a
memory load). One of those chains through a generic 6-caller wrapper into
slot 1 of GamePart_Title's own dispatch table (
0x820a3dec, named by itsadjacent
RegisterToFactory<0, class silph::GamePart_Title>string — not aneighbourhood guess), reaching the same play primitive with a non-literal,
could-be-SE-range cue id.
Where it stops, honestly: the field that would pin the actual value
traces to a 19-caller shared helper's return value — too common to be
title-specific, reads as "allocate a handle" not "here is the cue". The value
is most likely set at whatever runtime moment the emitter is meant to speak,
which static analysis can't see. Classified
undecodable, with reach— anamed call chain and a stated reason static analysis stops there, not "SE
goes through a different call" as before.
Every address cited was independently re-decoded from
/image/sylpheed.pe'sraw bytes, not taken from the database's columns, and a refutation attempt
against the wrapper's "6 callers is exhaustive" claim (checking for indirect
dispatch) did not succeed — recorded either way per the adversarial-duty
requirement.
What would close it:
--xma_param_probe=trueduring a title build-in, noinput, watching for a new stream when the plate reaches full alpha — the
same technique
menu-audio-cues.mdused for the menu's SE cues. Not runthis iteration; purely static work this time, dynamic is the next unit.
Not moving to
state/needs-human— the BGM half was already answerable andis; the sting half genuinely isn't closed, so this stays
state/approvedforwhoever picks up the dynamic half next (myself included, a future
iteration).
Sting half closed.
docs/re/f3-sting-measured-no-new-stream.md,in #23 (
3d71388). Both halves of F3 are now answered:f3-title-plays-bgm-102-and-103.md, cues 1102/1103).--xma_param_probe=true(samecensus
menu-audio-cues.mdused for the menu), no pad input, recordingcontinuously from window-open — a glyph time series plus every
newly-seen XMA stream, stamped on arrival.
R4's control is a real one: the probe's own log caught the title's two
BGM stems starting exactly when the already-established finding says they
should — proof it finds real streams before being asked to find nothing.
From the plate's first visible activity through 68 seconds of build-in
plus fully-settled pulsing, zero new streams appeared. No SE cue, no
second BGM, nothing.
Refutation attempt this iteration, recorded: my first read said BGM and
the plate's build-in start "at essentially the same moment" — the raw
per-sample series refutes that (first glyph activity is ~0.67s after BGM
onset, noisy rather than a clean climb). Corrected in the doc.
Reach: one boot, the boot title with no input. Doesn't cover the attract-loop
title or anything beyond the already-decoded confirm cue. Moving to
state/needs-human.