From 9ca1a1c1c7bf56e39b516c299b4e0d3efe59652b Mon Sep 17 00:00:00 2001
From: Alexander Kassouni
Each voice sequence's subtrack sits in a spin loop:
-L_0019: delay 1 frame - macro_read_port0 - branch_rel_not_eq_zero L_0019 ; wait until Sou_VoiceStart writes the port - set_dyntbl D_0026 - dyntbl_call ; index the table with the phoneme code - branch L_0019- -
The dynamic table has 128 entries pointing at 10-byte routines
-C1 <instrument> / 88 <note> / FF. Entry v selects instrument
-v − 1. Entry 0 is an immediate FF — nothing.
loop: delay 1 tick + MACRO_SET 1 ; publish "I am sequence 1/2/3" … + PORT1_WRITE_MACRO_REG ; … to port 1 (the load-race handshake) + MACRO_READ_PORT0 ; value ← port 0, port 0 ← -1 + branch loop if value < 0 ; port empty + SET_DYNTBL 0x0026 + DYNTBL_CALL ; call routine dyntbl[phoneme code] + branch loop+ +
The dynamic table has 128 entries pointing at routines of the shape
+C1 <instrument> / 88 <layer addr> / FF, where the note layer holds the
+actual note, delay and velocity. Entry v selects instrument
+v − 1; entry 0 is an immediate FF — nothing. The
+full annotated disassembly, the per-code note/delay/velocity map, and the tick math are
+on the disc page. Two headlines from it: dialogue phonemes play
+at semitone 44 / 41 / 39 (sequences 243 / 244 / 245) against a pitch table with unity at
+48, so each bank is pitched down 4–9 semitones from its recordings; and port reads are
+destructive (the port resets to −1), which is why one Sou_VoiceStart write
+triggers exactly one syllable.
0x01–0x77 exactly.
-Bank 157 stopping at 83 is not an omission: instruments 0–82 cover codes
-0x01–0x53, and the phonology engine never produces a code above
-0x52 apart from 0x77. The missing range
-0x53–0x76 is the editor's letter-name block,
-which spec 3 can never reach. The only thing spec-3 voices genuinely lack is
-you.
Sample details are in ../extraction.md: N64 VADPCM, tuning 0.6891
-(22050 Hz), order 2, two predictors, no loop, ~190 ms each.
Bank 157 stopping at 83 is not an omission, and nothing is lost. The phonology
+engine's maximum output is 0x52 plus 0x77; instruments 0–81
+cover 0x01–0x52, and the missing
+0x53–0x76 range is the
+editor's letter-name block, which spec 3 can never reach.
+For you (0x77), sequence 244's dynamic table explicitly routes
+the code to instrument 82 — the bank's 83rd and last instrument, which
+sits above the phonology range and is reachable by nothing else. Bank 157 carries one
+extra instrument precisely to be its you.
Sample details are on the disc page: N64 VADPCM, tuning +0.689062 (22050 Hz at a 32000 Hz mixer), order 2, two predictors, no loop, +32–407 ms each (mean ≈ 190 ms).