notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
spu: handle stop better, split main func more
[pcsx_rearmed.git]
/
plugins
/
dfsound
/
adsr.c
diff --git
a/plugins/dfsound/adsr.c
b/plugins/dfsound/adsr.c
index
c1e98b3
..
976315d
100644
(file)
--- a/
plugins/dfsound/adsr.c
+++ b/
plugins/dfsound/adsr.c
@@
-63,10
+63,10
@@
INLINE void StartADSR(int ch) // MIX ADSR
\r
////////////////////////////////////////////////////////////////////////
\r
\r
\r
////////////////////////////////////////////////////////////////////////
\r
\r
-static
void MixADSR(int ch, int ns, int ns_to)
// MIX ADSR
\r
+static
int MixADSR(int ch, int ns_to)
// MIX ADSR
\r
{
\r
int EnvelopeVol = s_chan[ch].ADSRX.EnvelopeVol;
\r
{
\r
int EnvelopeVol = s_chan[ch].ADSRX.EnvelopeVol;
\r
- int val, rto, level;
\r
+ int
ns = 0,
val, rto, level;
\r
\r
if (s_chan[ch].bStop) // should be stopped:
\r
{ // do release
\r
\r
if (s_chan[ch].bStop) // should be stopped:
\r
{ // do release
\r
@@
-97,9
+97,6
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
}
\r
}
\r
\r
}
\r
}
\r
\r
- if (EnvelopeVol <= 0)
\r
- goto stop;
\r
-
\r
goto done;
\r
}
\r
\r
goto done;
\r
}
\r
\r
@@
-160,7
+157,10
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
if (s_chan[ch].ADSRX.SustainIncrease)
\r
{
\r
if (EnvelopeVol >= 0x7fff0000)
\r
if (s_chan[ch].ADSRX.SustainIncrease)
\r
{
\r
if (EnvelopeVol >= 0x7fff0000)
\r
+ {
\r
+ ns = ns_to;
\r
break;
\r
break;
\r
+ }
\r
\r
rto = 0;
\r
if (s_chan[ch].ADSRX.SustainModeExp && EnvelopeVol >= 0x60000000)
\r
\r
rto = 0;
\r
if (s_chan[ch].ADSRX.SustainModeExp && EnvelopeVol >= 0x60000000)
\r
@@
-173,6
+173,7
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
if ((unsigned int)EnvelopeVol >= 0x7fe00000)
\r
{
\r
EnvelopeVol = 0x7fffffff;
\r
if ((unsigned int)EnvelopeVol >= 0x7fe00000)
\r
{
\r
EnvelopeVol = 0x7fffffff;
\r
+ ns = ns_to;
\r
break;
\r
}
\r
\r
break;
\r
}
\r
\r
@@
-189,7
+190,7
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
{
\r
EnvelopeVol += ((long long)val * EnvelopeVol) >> (15+16);
\r
if (EnvelopeVol < 0)
\r
{
\r
EnvelopeVol += ((long long)val * EnvelopeVol) >> (15+16);
\r
if (EnvelopeVol < 0)
\r
-
goto stop
;
\r
+
break
;
\r
\r
ChanBuf[ns] *= EnvelopeVol >> 21;
\r
ChanBuf[ns] >>= 10;
\r
\r
ChanBuf[ns] *= EnvelopeVol >> 21;
\r
ChanBuf[ns] >>= 10;
\r
@@
-201,7
+202,7
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
{
\r
EnvelopeVol += val;
\r
if (EnvelopeVol < 0)
\r
{
\r
EnvelopeVol += val;
\r
if (EnvelopeVol < 0)
\r
-
goto stop
;
\r
+
break
;
\r
\r
ChanBuf[ns] *= EnvelopeVol >> 21;
\r
ChanBuf[ns] >>= 10;
\r
\r
ChanBuf[ns] *= EnvelopeVol >> 21;
\r
ChanBuf[ns] >>= 10;
\r
@@
-213,12
+214,7
@@
static void MixADSR(int ch, int ns, int ns_to) // MIX ADSR
\r
done:
\r
s_chan[ch].ADSRX.EnvelopeVol = EnvelopeVol;
\r
\r
done:
\r
s_chan[ch].ADSRX.EnvelopeVol = EnvelopeVol;
\r
- return;
\r
-
\r
-stop:
\r
- memset(&ChanBuf[ns], 0, (ns_to - ns) * sizeof(ChanBuf[0]));
\r
- s_chan[ch].ADSRX.EnvelopeVol = 0;
\r
- spu.dwChannelOn &= ~(1<<ch);
\r
+ return ns;
\r
}
\r
\r
#endif
\r
}
\r
\r
#endif
\r