DSP: Add address mask for physical pointers to audio data buffers

Hardware testing indicated that FFFFFFFC is the correct mask for all audio formats (mono and stereo PCM8, mono and stereo PCM16, and ADPCM). This fixes broken audio in Luigi's Mansion: Dark Moon and a few other games.
This commit is contained in:
RoadrunnerWMC 2018-12-03 01:07:55 -07:00
parent 11bc9028bb
commit 3aff585f32

View file

@ -284,7 +284,7 @@ bool Source::DequeueBuffer() {
state.adpcm_state.yn2 = buf.adpcm_yn[1]; state.adpcm_state.yn2 = buf.adpcm_yn[1];
} }
const u8* const memory = Memory::GetPhysicalPointer(buf.physical_address); const u8* const memory = Memory::GetPhysicalPointer(buf.physical_address & 0xFFFFFFFC);
if (memory) { if (memory) {
const unsigned num_channels = buf.mono_or_stereo == MonoOrStereo::Stereo ? 2 : 1; const unsigned num_channels = buf.mono_or_stereo == MonoOrStereo::Stereo ? 2 : 1;
switch (buf.format) { switch (buf.format) {