aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/registers.c
diff options
context:
space:
mode:
authornotaz2012-07-07 21:45:00 +0300
committernotaz2012-07-15 20:29:48 +0300
commite4f075af4e4ba79332c72809d3bb4ba6e2895253 (patch)
treecb9851e519f749f3f3a998055824d6755d2d4f1c /plugins/dfsound/registers.c
parentf2aec10aa8e3befe7e89070e8559d070835cc23e (diff)
downloadpcsx_rearmed-e4f075af4e4ba79332c72809d3bb4ba6e2895253.tar.gz
pcsx_rearmed-e4f075af4e4ba79332c72809d3bb4ba6e2895253.tar.bz2
pcsx_rearmed-e4f075af4e4ba79332c72809d3bb4ba6e2895253.zip
spu: rework irq handling and loop reloading
irq might be too early, but this seems to be better than was before. Special thanks to Ryphecha for some ideas again.
Diffstat (limited to 'plugins/dfsound/registers.c')
-rw-r--r--plugins/dfsound/registers.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c
index 1a51cd7..45df2eb 100644
--- a/plugins/dfsound/registers.c
+++ b/plugins/dfsound/registers.c
@@ -173,10 +173,6 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val)
//------------------------------------------------//
case 14: // loop?
s_chan[ch].pLoop=spuMemC+((val&~1)<<3);
- if(s_chan[ch].bJump)
- // real machine would be most likely still doing the last block and use new value for the jump;
- // but we decode ahead a bit and already did the jump part, so compensate for that now.
- s_chan[ch].pCurr=s_chan[ch].pLoop;
break;
//------------------------------------------------//
}
@@ -428,7 +424,7 @@ static void SoundOn(int start,int end,unsigned short val)
s_chan[ch].bStop=0;
s_chan[ch].pCurr=spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned
s_chan[ch].pLoop=spuMemC+((regAreaGet(ch,14)&~1)<<3);
- s_chan[ch].bJump=0;
+ s_chan[ch].prevflags=2;
dwNewChannel|=(1<<ch); // bitfield for faster testing
dwChannelOn|=1<<ch;