case 14: // loop?\r
//WaitForSingleObject(s_chan[ch].hMutex,2000); // -> no multithread fuckups\r
s_chan[ch].pLoop=spuMemC+((unsigned long)((val<<3)&~0xf));\r
- s_chan[ch].bIgnoreLoop=1;\r
+ //s_chan[ch].bIgnoreLoop=1;\r
//ReleaseMutex(s_chan[ch].hMutex); // -> oki, on with the thread\r
break;\r
//------------------------------------------------//\r
break;\r
//-------------------------------------------------//\r
case H_SPUctrl:\r
+ if(!(spuCtrl & CTRL_IRQ))\r
+ spuStat&=~STAT_IRQ;\r
spuCtrl=val;\r
break;\r
//-------------------------------------------------//\r
//-------------------------------------------------//\r
case H_SPUirqAddr:\r
spuIrq = val;\r
- pSpuIrq=spuMemC+((unsigned long) val<<3);\r
+ pSpuIrq=spuMemC+(((unsigned long) val<<3)&~0xf);\r
break;\r
//-------------------------------------------------//\r
case H_SPUrvolL:\r
case 14: // get loop address\r
{\r
const int ch=(r>>4)-0xc0;\r
- if(s_chan[ch].pLoop==NULL) return 0;\r
return (unsigned short)((s_chan[ch].pLoop-spuMemC)>>3);\r
}\r
}\r