From 08cfd5e5b3027af766dab3916747c0fc9ae47d7d Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 29 Jan 2011 19:47:46 +0200 Subject: [PATCH] spu: don't stop a channel by adsr if we have potential irq otherwise we might miss irqs --- plugins/dfsound/adsr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/dfsound/adsr.c b/plugins/dfsound/adsr.c index 2496e461..387a83b2 100644 --- a/plugins/dfsound/adsr.c +++ b/plugins/dfsound/adsr.c @@ -86,7 +86,10 @@ INLINE int MixADSR(int ch) // MIX ADSR if(s_chan[ch].ADSRX.EnvelopeVol<0) { s_chan[ch].ADSRX.EnvelopeVol=0; - s_chan[ch].bOn=0; + // don't stop if this chan can still cause irqs + if(!(spuCtrl&0x40) || (s_chan[ch].pCurr > pSpuIrq && s_chan[ch].pLoop > pSpuIrq)) + //s_chan[ch].bOn=0; + s_chan[ch].pCurr=(unsigned char *)-1; //s_chan[ch].bReverb=0; //s_chan[ch].bNoise=0; } -- 2.39.2