X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfsound%2Fregisters.c;h=54e4000f767de70a578d7872ae790267d39abfec;hp=1a51cd729a5784f39ddd41816b18ad31539a9862;hb=b72f17a1320e9038c8416343ce270b0f676c757c;hpb=fb552464f06137102fd9ca69a05492265bbdcea7 diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 1a51cd72..54e4000f 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; //------------------------------------------------// } @@ -216,6 +212,9 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) { rvb.StartAddr=(unsigned long)val<<2; rvb.CurrAddr=rvb.StartAddr; + // sync-with-decode-buffers hack.. + if(rvb.StartAddr==0x3ff00) + rvb.CurrAddr+=decode_pos/2; } } rvb.dirty = 1; @@ -428,7 +427,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<