X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfsound%2Fregisters.c;h=ac495d63e71856cb102c55264cb3e73f6151f26d;hp=19a0a46b2d61d9bf696e3cd33815c71d2d537f41;hb=3fc2a4c27be8c8cd5f8cf53a0d56c263275b8501;hpb=6d866bb7894b252fc430a24a97769511d5ead1ca diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 19a0a46b..ac495d63 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -168,7 +168,7 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) case 14: // loop? //WaitForSingleObject(s_chan[ch].hMutex,2000); // -> no multithread fuckups s_chan[ch].pLoop=spuMemC+((unsigned long)((val<<3)&~0xf)); - s_chan[ch].bIgnoreLoop=1; + //s_chan[ch].bIgnoreLoop=1; //ReleaseMutex(s_chan[ch].hMutex); // -> oki, on with the thread break; //------------------------------------------------// @@ -191,6 +191,8 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) break; //-------------------------------------------------// case H_SPUctrl: + if(!(spuCtrl & CTRL_IRQ)) + spuStat&=~STAT_IRQ; spuCtrl=val; break; //-------------------------------------------------// @@ -214,7 +216,7 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) //-------------------------------------------------// case H_SPUirqAddr: spuIrq = val; - pSpuIrq=spuMemC+((unsigned long) val<<3); + pSpuIrq=spuMemC+(((unsigned long) val<<3)&~0xf); break; //-------------------------------------------------// case H_SPUrvolL: @@ -376,7 +378,6 @@ unsigned short CALLBACK SPUreadRegister(unsigned long reg) case 14: // get loop address { const int ch=(r>>4)-0xc0; - if(s_chan[ch].pLoop==NULL) return 0; return (unsigned short)((s_chan[ch].pLoop-spuMemC)>>3); } }