diff --git a/pcsx2/SPU2/spu2sys.cpp b/pcsx2/SPU2/spu2sys.cpp index c526c85b79..2d4ca9b678 100644 --- a/pcsx2/SPU2/spu2sys.cpp +++ b/pcsx2/SPU2/spu2sys.cpp @@ -1102,7 +1102,7 @@ static void __fastcall RegWrite_VoiceAddr(u16 value) switch (address) { case 0: // SSA (Waveform Start Addr) (hiword, 4 bits only) - thisvoice.StartA = ((value & 0x0F) << 16) | (thisvoice.StartA & 0xFFF8); + thisvoice.StartA = ((u32)(value & 0x0F) << 16) | (thisvoice.StartA & 0xFFF8); if (IsDevBuild) DebugCores[core].Voices[voice].lastSetStartA = thisvoice.StartA; break; @@ -1114,7 +1114,7 @@ static void __fastcall RegWrite_VoiceAddr(u16 value) break; case 2: - thisvoice.LoopStartA = ((value & 0x0F) << 16) | (thisvoice.LoopStartA & 0xFFF8); + thisvoice.LoopStartA = ((u32)(value & 0x0F) << 16) | (thisvoice.LoopStartA & 0xFFF8); thisvoice.LoopMode = 1; break; @@ -1133,7 +1133,7 @@ static void __fastcall RegWrite_VoiceAddr(u16 value) // without it some sound effects get cut off so we need the two NextA cases enabled. case 4: - thisvoice.NextA = ((value & 0x0F) << 16) | (thisvoice.NextA & 0xFFF8) | 1; + thisvoice.NextA = ((u32)(value & 0x0F) << 16) | (thisvoice.NextA & 0xFFF8) | 1; thisvoice.SCurrent = 28; break; @@ -1229,6 +1229,9 @@ static void __fastcall RegWrite_Core(u16 value) if (!thiscore.IRQEnable) Spdif.Info &= ~(4 << thiscore.Index); + else + if ((thiscore.IRQA & 0xFFF00000) != 0) + DevCon.Warning("SPU2: Core %d IRQA Outside of SPU2 memory, Addr %x", thiscore.Index, thiscore.IRQA); } } break; @@ -1370,7 +1373,7 @@ static void __fastcall RegWrite_Core(u16 value) // change the end address anyway. // case REG_A_ESA: - SetHiWord(thiscore.ExtEffectsStartA, value); + SetHiWord(thiscore.ExtEffectsStartA, value & 0xF); if (!thiscore.FxEnable) { thiscore.EffectsStartA = thiscore.ExtEffectsStartA; @@ -1390,7 +1393,7 @@ static void __fastcall RegWrite_Core(u16 value) break; case REG_A_EEA: - thiscore.ExtEffectsEndA = ((u32)value << 16) | 0xFFFF; + thiscore.ExtEffectsEndA = ((u32)(value & 0xF) << 16) | 0xFFFF; if (!thiscore.FxEnable) { thiscore.EffectsEndA = thiscore.ExtEffectsEndA;