mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
2ba81d5d7b
1) cdrom: continuous disc clock — the read stream froze disc time while the guest had an unacked INT, starving the XA->SPU ring ~5-6x/s (6 Hz music dropout flutter). Replaced with the Beetle-mirrored SetAIP/CheckAIP model: disc never pauses, data-ready INT1 pends one deep, presented on ack. read_hold_cycles/int1_* tripwires in cdrom_state. 2) spu: END-without-REPEAT now jumps to the repeat address AND forces the envelope to zero (Beetle spu.cpp:333,341-352). Previously parked one-shot SFX voices decoded past the terminator at full envelope — X4's SFX bank parks them on +28672-DC filler with ~infinite release, railing the mix at +32767 (38-41% samples clipped = the 'static'). User ear-validated on the MMX4 attract ice-stage demo. Gate: MMX4 0.00% clip post-fix; MMX5 boots healthy (pend path exercised 12-13x, 0 lost); Tomba behavior equivalent to master. Runtime-only — no regen needed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>