diff options
| author | SND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-02-05 00:00:32 +0000 |
|---|---|---|
| committer | SND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-02-05 00:00:32 +0000 |
| commit | 0d30978127f92b0d3501e2388fdc8cdf8b872778 (patch) | |
| tree | 3f781ad5441f0ee2cb57a5c29121f83b84c36fd6 /plugins | |
| parent | dda4b7bc4e1e5d0d39e7a4d4fac805303254427f (diff) | |
| download | pcsxr-0d30978127f92b0d3501e2388fdc8cdf8b872778.tar.gz | |
dfsound
-adsr.c- fix attack (exp inc),sustain (exp inc) fractional math
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@62930 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/dfsound/adsr.c | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/plugins/dfsound/adsr.c b/plugins/dfsound/adsr.c index a70639ec..56a10777 100644 --- a/plugins/dfsound/adsr.c +++ b/plugins/dfsound/adsr.c @@ -199,15 +199,20 @@ INLINE int MixADSR(int ch) // MIX ADSR {
if(s_chan[ch].ADSRX.AttackModeExp)
{
- if(EnvelopeVol>=0x6000)
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.AttackRate + 8];
- else
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.AttackRate + 0];
+ if(EnvelopeVol>=0x6000) {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.AttackRate + 8];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.AttackRate + 8];
+ }
+ else {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.AttackRate + 0];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.AttackRate + 0];
+ }
}
- else
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.AttackRate + 0];
+ else {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.AttackRate + 0];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.AttackRate + 0];
+ }
- EnvelopeVol_f += RateTableAdd_f[ s_chan[ch].ADSRX.AttackRate ];
if( EnvelopeVol_f >= RateTable_denom ) {
EnvelopeVol_f -= RateTable_denom;
EnvelopeVol++;
@@ -260,15 +265,20 @@ INLINE int MixADSR(int ch) // MIX ADSR {
if(s_chan[ch].ADSRX.SustainModeExp)
{
- if(EnvelopeVol>=0x6000)
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.SustainRate + 8];
- else
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.SustainRate + 0];
+ if(EnvelopeVol>=0x6000) {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.SustainRate + 8];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.SustainRate + 8];
+ }
+ else {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.SustainRate + 0];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.SustainRate + 0];
+ }
}
- else
- EnvelopeVol+=RateTableAdd[s_chan[ch].ADSRX.SustainRate + 0];
+ else {
+ EnvelopeVol+=RateTableAdd[ch->ADSRX.SustainRate + 0];
+ EnvelopeVol_f += RateTableAdd_f[ ch->ADSRX.SustainRate + 0];
+ }
- EnvelopeVol_f += RateTableAdd_f[ s_chan[ch].ADSRX.SustainRate ];
if( EnvelopeVol_f >= RateTable_denom ) {
EnvelopeVol_f -= RateTable_denom;
EnvelopeVol++;
|
