summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-12 13:09:27 +0000
committerSND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-02-12 13:09:27 +0000
commitd9504fef70f8c9f371fdd210b1c38502aee6e097 (patch)
treefe58e3ea21aeaf829e8d5bb2a208cb81a4ee4a54 /plugins
parent720d4be596d3aa7529d9e97eacb744e90b4a8e3f (diff)
downloadpcsxr-d9504fef70f8c9f371fdd210b1c38502aee6e097.tar.gz
Patch 13831, Castlevania Chronicles fix (ckain);
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@82818 e17a0e51-4ae3-4d35-97c3-1a29b211df97
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
{