support armv5 build
[pcsx_rearmed.git] / plugins / dfsound / registers.c
index 2493a1e..669c70f 100644 (file)
@@ -173,6 +173,10 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val)
      //------------------------------------------------//\r
      case 14:                                          // loop?\r
        s_chan[ch].pLoop=spuMemC+((val&~1)<<3);\r
+       if(s_chan[ch].bJump)\r
+        // real machine would be most likely still doing the last block and use new value for the jump;\r
+        // but we decode ahead a bit and already did the jump part, so compensate for that now.\r
+        s_chan[ch].pCurr=s_chan[ch].pLoop;\r
        break;\r
      //------------------------------------------------//\r
     }\r
@@ -429,6 +433,7 @@ static void SoundOn(int start,int end,unsigned short val)
      s_chan[ch].bStop=0;\r
      s_chan[ch].pCurr=spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned\r
      s_chan[ch].pLoop=spuMemC+((regAreaGet(ch,14)&~1)<<3);\r
+     s_chan[ch].bJump=0;\r
 \r
      dwNewChannel|=(1<<ch);                            // bitfield for faster testing\r
      dwChannelOn|=1<<ch;\r