summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rwxr-xr-xplugins/dfsound/registers.c4
-rwxr-xr-xplugins/dfsound/spu.c9
2 files changed, 7 insertions, 6 deletions
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
{