{\r
if((val&1) && regAreaGet(ch,6)) // mmm... start has to be set before key on !?!\r
{\r
- // do this here, not in StartSound\r
- // - fixes fussy timing issues\r
- s_chan[ch].bStop=0;\r
s_chan[ch].pCurr=spu.spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned\r
s_chan[ch].pLoop=spu.spuMemC+((regAreaGet(ch,14)&~1)<<3);\r
- s_chan[ch].prevflags=2;\r
-\r
spu.dwNewChannel|=(1<<ch);\r
- spu.dwChannelOn|=1<<ch;\r
- spu.dwChannelDead&=~(1<<ch);\r
}\r
}\r
}\r
StartADSR(ch);
StartREVERB(ch);
- // fussy timing issues - do in VoiceOn
- //s_chan[ch].pCurr=s_chan[ch].pStart; // set sample start
- //s_chan[ch].bStop=0;
- //s_chan[ch].bOn=1;
+ s_chan[ch].bStop=0;
+ s_chan[ch].prevflags=2;
s_chan[ch].SB[26]=0; // init mixing vars
s_chan[ch].SB[27]=0;
s_chan[ch].spos=0;
spu.dwNewChannel&=~(1<<ch); // clear new channel bit
+ spu.dwChannelOn|=1<<ch;
+ spu.dwChannelDead&=~(1<<ch);
}
////////////////////////////////////////////////////////////////////////