re: the menu's music is BGM_103 -- found by accident while chasing Q6,
confirmed three ways Chasing where the event code comes from, sub_821C5580 turned out to do two things worth having. For Q6 it arms the outer gate: li r11,3 ; stw r11,16(r28) is exactly the value sub_821C7850 tests before dispatching, which answers the "what does this+16 == 3 gate on" question I left open last iteration. It then passes r5 = [r27+4], an event read out of a structure, so the vocabulary is still not enumerable. Of the four callers of sub_821C7850, three pass constants -- 0, 0 and 5 -- and this one does not. The accident is a few instructions earlier: li r5, 1103 into a sound-play call. 1103 is a BGM cue id, BGM_103. That closes a residual I had written off as undecodable: which bank the menu plays. The cue table genuinely cannot say, since its BGM entries are numeric -- but the code can, and it checks out three independent ways. The census says BGM_103.slb is two waves of 3876864 and 3930112 bytes; the XMA probe at the main menu saw two stereo streams of 3876864 and 3930112 bytes. Byte for byte on both. That also corrects me. bgm-two-stems.md said those observed sizes matched no bank's declared waves and inferred the decoder gets a window rather than a whole wave. Wrong on both counts -- I had checked only the BGM_0xx rows of the census because that was the block on screen. METHOD gets it: check a measurement against the whole reference set, not the part you happened to be reading.
This commit is contained in:
@@ -220,3 +220,9 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
|
||||
into place later (`addi r27, r11, X` … `mr r5, r27`). A backward search for the
|
||||
destination register alone found 7 of 48 sites and missed the two known-good
|
||||
ones. Simulate forward over a window instead, tracking `lis`/`addi`/`mr`.
|
||||
* **Check a measurement against the WHOLE reference set, not the part you were
|
||||
reading.** Two observed BGM stream sizes were recorded as matching "no bank's
|
||||
declared waves", which spawned a wrong theory that the decoder gets a window
|
||||
rather than a whole wave. They match `BGM_103` exactly — the check had covered
|
||||
only the `BGM_0xx` rows of the census, because that is the block that had been
|
||||
on screen.
|
||||
|
||||
Reference in New Issue
Block a user