From 9e2c41bd4896e276870c2798d35e464fcbf0f7b6 Mon Sep 17 00:00:00 2001 From: Rad0van Date: Sat, 6 Jun 2026 18:13:39 +0200 Subject: [PATCH] cellAudio: fix _mxr000 surmixer event-queue key constant The "Dirty hack for sound" in AudioSetNotifyEventQueue() is gated on a named constant c_mxr000 that is supposed to equal the IPC key of the _mxr000 event queue created by the game's _cellsurMixerMain thread (0x8000cafe02460300, e.g. Virtua Fighter 5 FS / SEGA AM2 CRI titles). When the inline literal was refactored into the named constant in 730badd37 ("cellAudio: Move and partially fix _mxr000 hack", 2023) a trailing hex digit was dropped: 0x8000cafe0246030 instead of 0x8000cafe02460300 (the value used by the original 2018 hack in cc0d7c598). As a result `key == c_mxr000` never matches and lv2_event_queue::find(c_mxr000) looks up the wrong key, so the surmixer-queue serialization path is effectively dead for every _mxr000 CRI game. Restore the correct 16-digit key so the gate and lookup match the queue the game actually creates. Note: this corrects a real latent bug but does not by itself resolve the cellSurMixer null-deref in VF5FS (#17066), which is a separate, flaky CRI channel-strip init divergence. Co-Authored-By: Claude Opus 4.8 (1M context) --- rpcs3/Emu/Cell/Modules/cellAudio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/Modules/cellAudio.cpp b/rpcs3/Emu/Cell/Modules/cellAudio.cpp index b28809ef03..d2aed65f25 100644 --- a/rpcs3/Emu/Cell/Modules/cellAudio.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAudio.cpp @@ -1662,7 +1662,7 @@ error_code AudioSetNotifyEventQueue(ppu_thread& ppu, u64 key, u32 iFlags) lv2_sleep(20, &ppu); // Dirty hack for sound: confirm the creation of _mxr000 event queue by _cellsurMixerMain thread - constexpr u64 c_mxr000 = 0x8000cafe0246030; + constexpr u64 c_mxr000 = 0x8000cafe02460300; if (key == c_mxr000 || key == 0) {