From d9504fef70f8c9f371fdd210b1c38502aee6e097 Mon Sep 17 00:00:00 2001 From: "SND\\edgbla_cp" Date: Tue, 12 Feb 2013 13:09:27 +0000 Subject: Patch 13831, Castlevania Chronicles fix (ckain); git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@82818 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfsound/registers.c | 4 ++-- plugins/dfsound/spu.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'plugins') diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index f8943cf2..f9051c4a 100755 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -215,8 +215,8 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) break; //-------------------------------------------------// case H_SPUdata: - // BIOS - allow dma 00 - Check_IRQ( spuAddr, 0 ); + // BIOS - allow dma 00 + Check_IRQ( spuAddr, 0 ); spuMem[spuAddr>>1] = val; spuAddr+=2; diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index 6d2564e4..5a28dafe 100755 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -732,9 +732,10 @@ static void *MAINThread(void *arg) //////////////////////////////////////////// irq check #if 1 - // ?? (-8) - if( Check_IRQ( (start-spuMemC)-8, 0 ) || - Check_IRQ( (start-spuMemC)-0, 0 ) ) + // Check channel/loop IRQs (e.g. Castlevania Chronicles) and at pos-8 for unknown reason + if( Check_IRQ( (s_chan[ch].pCurr)-spuMemC, 0 ) || + Check_IRQ( (start-spuMemC)-0, 0 ) || + Check_IRQ( (start-spuMemC)-8, 0 ) ) { #else if(irqCallback && (spuCtrl&0x40)) // some callback and irq active? @@ -747,7 +748,7 @@ static void *MAINThread(void *arg) #endif { s_chan[ch].iIrqDone=1; // -> debug flag - irqCallback(); // -> call main emu + //irqCallback(); // -> call main emu (checked & called on Check_IRQ) if(iSPUIRQWait) // -> option: wait after irq for main emu { -- cgit v1.2.3