diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/dfsound/registers.c | 7 | ||||
-rw-r--r-- | plugins/dfsound/spu.c | 8 |
2 files changed, 4 insertions, 11 deletions
diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 210adb2..8e4956e 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -362,16 +362,9 @@ static void SoundOn(int start,int end,unsigned short val) {
if((val&1) && regAreaGet(ch,6)) // mmm... start has to be set before key on !?!
{
- // do this here, not in StartSound
- // - fixes fussy timing issues
- s_chan[ch].bStop=0;
s_chan[ch].pCurr=spu.spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned
s_chan[ch].pLoop=spu.spuMemC+((regAreaGet(ch,14)&~1)<<3);
- s_chan[ch].prevflags=2;
-
spu.dwNewChannel|=(1<<ch);
- spu.dwChannelOn|=1<<ch;
- spu.dwChannelDead&=~(1<<ch);
}
}
}
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index 1d5e28f..147db94 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -238,10 +238,8 @@ INLINE void StartSound(int ch) 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; @@ -254,6 +252,8 @@ INLINE void StartSound(int ch) s_chan[ch].spos=0; spu.dwNewChannel&=~(1<<ch); // clear new channel bit + spu.dwChannelOn|=1<<ch; + spu.dwChannelDead&=~(1<<ch); } //////////////////////////////////////////////////////////////////////// |