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:
Sylpheed RE agent
2026-08-28 20:10:41 +00:00
parent a98e96b0f0
commit 86e52b01d0
6 changed files with 97 additions and 13 deletions

View File

@@ -283,9 +283,12 @@ authored version can be deleted.
**And it is not a seamless loop**: `BGM_001` fades out at 167.663 s and is
followed by 6.15 s of silence, with no loop-point field identified. A menu loop
is authored.
**Which bank is the menu's music is not on the disc** — all 32 BGM cues are
named `BGM_001``BGM_109`, no semantic name in `SOUNDS`, `FILES` or the bank
headers. The port is choosing a track.
**The menu's music is `BGM_103`.** The cue *table* cannot say — its BGM
entries are numeric — but `GamePart_Title`'s `sub_821C5580` plays **cue 1103**,
and `BGM_103.slb`'s two declared waves (3 876 864 / 3 930 112 B) are
byte-for-byte the two streams the XMA probe saw decoding at the main menu.
Static code, disc census and runtime all agree. The port does **not** have to
choose a track.
* **`JNGL_001.slb` does not decode.** One bank in 9 519; its payload is not a whole
number of XMA1 packets from any known data offset.