X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfsound%2Fregisters.c;h=5ab519b86fa479822f06244f5e7558d3e936ec1e;hp=b684914fa24ff120c136f9130bfe95c64f315427;hb=b00afb7734d75d4e625db0263548fa15b9aa0af7;hpb=7384197d8a5fd20a4d94f3517a6462f7fe86dd4c diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index b684914f..5ab519b8 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -70,7 +70,8 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) break; //------------------------------------------------// start case 6: - s_chan[ch].pStart=spuMemC+((unsigned long) val<<3); + // Brain Dead 13 - align to 16 boundary + s_chan[ch].pStart= spuMemC+(unsigned long)((val<<3)&~0xf); break; //------------------------------------------------// level with pre-calcs case 8: @@ -162,7 +163,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); + s_chan[ch].pLoop=spuMemC+((unsigned long)((val<<3)&~0xf)); s_chan[ch].bIgnoreLoop=1; //ReleaseMutex(s_chan[ch].hMutex); // -> oki, on with the thread break; @@ -424,6 +425,13 @@ void SoundOn(int start,int end,unsigned short val) // SOUND ON PSX COMAND { s_chan[ch].bIgnoreLoop=0; s_chan[ch].bNew=1; + + // do this here, not in StartSound + // - fixes fussy timing issues + s_chan[ch].bStop=0; + s_chan[ch].bOn=1; + s_chan[ch].pCurr=s_chan[ch].pStart; + dwNewChannel|=(1<