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: get rid of bStop, clean up
[pcsx_rearmed.git]
/
plugins
/
dfsound
/
adsr.c
diff --git
a/plugins/dfsound/adsr.c
b/plugins/dfsound/adsr.c
index
976315d
..
a86f461
100644
(file)
--- a/
plugins/dfsound/adsr.c
+++ b/
plugins/dfsound/adsr.c
@@
-57,22
+57,22
@@
void InitADSR(void) // INIT ADSR
\r
INLINE void StartADSR(int ch) // MIX ADSR
\r
{
\r
\r
INLINE void StartADSR(int ch) // MIX ADSR
\r
{
\r
- s_chan[ch].ADSRX.State=
0;
// and init some adsr vars
\r
+ s_chan[ch].ADSRX.State=
ADSR_ATTACK;
// and init some adsr vars
\r
s_chan[ch].ADSRX.EnvelopeVol=0;
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r
\r
s_chan[ch].ADSRX.EnvelopeVol=0;
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r
\r
-static int MixADSR(
int ch, int ns_to) // MIX ADSR
\r
+static int MixADSR(
ADSRInfoEx *adsr, int ns_to)
\r
{
\r
{
\r
- int EnvelopeVol =
s_chan[ch].ADSRX.
EnvelopeVol;
\r
+ int EnvelopeVol =
adsr->
EnvelopeVol;
\r
int ns = 0, val, rto, level;
\r
\r
int ns = 0, val, rto, level;
\r
\r
- if (
s_chan[ch].bStop) // should be stopped:
\r
- {
// do release
\r
- val = RateTableSub[
s_chan[ch].ADSRX.
ReleaseRate * 4];
\r
+ if (
adsr->State == ADSR_RELEASE)
\r
+ {
\r
+ val = RateTableSub[
adsr->
ReleaseRate * 4];
\r
\r
\r
- if (
s_chan[ch].ADSRX.
ReleaseModeExp)
\r
+ if (
adsr->
ReleaseModeExp)
\r
{
\r
for (; ns < ns_to; ns++)
\r
{
\r
{
\r
for (; ns < ns_to; ns++)
\r
{
\r
@@
-100,13
+100,13
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
goto done;
\r
}
\r
\r
goto done;
\r
}
\r
\r
- switch (
s_chan[ch].ADSRX.
State)
\r
+ switch (
adsr->
State)
\r
{
\r
{
\r
- case
0:
// -> attack
\r
+ case
ADSR_ATTACK:
// -> attack
\r
rto = 0;
\r
rto = 0;
\r
- if (
s_chan[ch].ADSRX.
AttackModeExp && EnvelopeVol >= 0x60000000)
\r
+ if (
adsr->
AttackModeExp && EnvelopeVol >= 0x60000000)
\r
rto = 8;
\r
rto = 8;
\r
- val = RateTableAdd[
s_chan[ch].ADSRX.
AttackRate + rto];
\r
+ val = RateTableAdd[
adsr->
AttackRate + rto];
\r
\r
for (; ns < ns_to; ns++)
\r
{
\r
\r
for (; ns < ns_to; ns++)
\r
{
\r
@@
-121,7
+121,7
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
if (EnvelopeVol < 0) // overflow
\r
{
\r
EnvelopeVol = 0x7fffffff;
\r
if (EnvelopeVol < 0) // overflow
\r
{
\r
EnvelopeVol = 0x7fffffff;
\r
-
s_chan[ch].ADSRX.State = 1
;
\r
+
adsr->State = ADSR_DECAY
;
\r
ns++; // sample is good already
\r
goto decay;
\r
}
\r
ns++; // sample is good already
\r
goto decay;
\r
}
\r
@@
-129,9
+129,9
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
\r
//--------------------------------------------------//
\r
decay:
\r
\r
//--------------------------------------------------//
\r
decay:
\r
- case
1:
// -> decay
\r
- val = RateTableSub[
s_chan[ch].ADSRX.
DecayRate * 4];
\r
- level =
s_chan[ch].ADSRX.
SustainLevel;
\r
+ case
ADSR_DECAY:
// -> decay
\r
+ val = RateTableSub[
adsr->
DecayRate * 4];
\r
+ level =
adsr->
SustainLevel;
\r
\r
for (; ns < ns_to; )
\r
{
\r
\r
for (; ns < ns_to; )
\r
{
\r
@@
-145,7
+145,7
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
\r
if (((EnvelopeVol >> 27) & 0xf) <= level)
\r
{
\r
\r
if (((EnvelopeVol >> 27) & 0xf) <= level)
\r
{
\r
-
s_chan[ch].ADSRX.State = 2
;
\r
+
adsr->State = ADSR_SUSTAIN
;
\r
goto sustain;
\r
}
\r
}
\r
goto sustain;
\r
}
\r
}
\r
@@
-153,8
+153,8
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
\r
//--------------------------------------------------//
\r
sustain:
\r
\r
//--------------------------------------------------//
\r
sustain:
\r
- case
2:
// -> sustain
\r
- if (
s_chan[ch].ADSRX.
SustainIncrease)
\r
+ case
ADSR_SUSTAIN:
// -> sustain
\r
+ if (
adsr->
SustainIncrease)
\r
{
\r
if (EnvelopeVol >= 0x7fff0000)
\r
{
\r
{
\r
if (EnvelopeVol >= 0x7fff0000)
\r
{
\r
@@
-163,9
+163,9
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
}
\r
\r
rto = 0;
\r
}
\r
\r
rto = 0;
\r
- if (
s_chan[ch].ADSRX.
SustainModeExp && EnvelopeVol >= 0x60000000)
\r
+ if (
adsr->
SustainModeExp && EnvelopeVol >= 0x60000000)
\r
rto = 8;
\r
rto = 8;
\r
- val = RateTableAdd[
s_chan[ch].ADSRX.
SustainRate + rto];
\r
+ val = RateTableAdd[
adsr->
SustainRate + rto];
\r
\r
for (; ns < ns_to; ns++)
\r
{
\r
\r
for (; ns < ns_to; ns++)
\r
{
\r
@@
-183,8
+183,8
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- val = RateTableSub[
s_chan[ch].ADSRX.
SustainRate];
\r
- if (
s_chan[ch].ADSRX.
SustainModeExp)
\r
+ val = RateTableSub[
adsr->
SustainRate];
\r
+ if (
adsr->
SustainModeExp)
\r
{
\r
for (; ns < ns_to; ns++)
\r
{
\r
{
\r
for (; ns < ns_to; ns++)
\r
{
\r
@@
-213,7
+213,7
@@
static int MixADSR(int ch, int ns_to) // MIX ADSR
}
\r
\r
done:
\r
}
\r
\r
done:
\r
-
s_chan[ch].ADSRX.
EnvelopeVol = EnvelopeVol;
\r
+
adsr->
EnvelopeVol = EnvelopeVol;
\r
return ns;
\r
}
\r
\r
return ns;
\r
}
\r
\r