diff options
-rw-r--r-- | plugins/dfsound/dsoundoss.h | 1 | ||||
-rw-r--r-- | plugins/dfsound/externals.h | 2 | ||||
-rw-r--r-- | plugins/dfsound/gauss_i.h | 2 | ||||
-rw-r--r-- | plugins/dfsound/registers.c | 80 | ||||
-rw-r--r-- | plugins/dfsound/spu.c | 4 | ||||
-rw-r--r-- | plugins/dfsound/xa.c | 2 |
6 files changed, 5 insertions, 86 deletions
diff --git a/plugins/dfsound/dsoundoss.h b/plugins/dfsound/dsoundoss.h index 3702312..543b297 100644 --- a/plugins/dfsound/dsoundoss.h +++ b/plugins/dfsound/dsoundoss.h @@ -19,4 +19,3 @@ void SetupSound(void); void RemoveSound(void); unsigned long SoundGetBytesBuffered(void); void SoundFeedStreamData(unsigned char* pSound,long lBytes); -unsigned long timeGetTime_spu(); diff --git a/plugins/dfsound/externals.h b/plugins/dfsound/externals.h index fbf9d18..28dab57 100644 --- a/plugins/dfsound/externals.h +++ b/plugins/dfsound/externals.h @@ -21,7 +21,7 @@ // generic defines
/////////////////////////////////////////////////////////
-#if 0 //def __GNUC__
+#ifdef __GNUC__
#define noinline __attribute__((noinline))
#define unlikely(x) __builtin_expect((x), 0)
#else
diff --git a/plugins/dfsound/gauss_i.h b/plugins/dfsound/gauss_i.h index 5a3a676..4405e57 100644 --- a/plugins/dfsound/gauss_i.h +++ b/plugins/dfsound/gauss_i.h @@ -18,7 +18,7 @@ #ifndef GAUSS_H
#define GAUSS_H
-const int gauss[]={
+static const short gauss[]={
0x172, 0x519, 0x176, 0x000, 0x16E, 0x519, 0x17A, 0x000,
0x16A, 0x518, 0x17D, 0x000, 0x166, 0x518, 0x181, 0x000,
0x162, 0x518, 0x185, 0x000, 0x15F, 0x518, 0x189, 0x000,
diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 54e4000..b9c1256 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -22,24 +22,6 @@ #include "externals.h"
#include "registers.h"
-/*
-// adsr time values (in ms) by James Higgs ... see the end of
-// the adsr.c source for details
-
-#define ATTACK_MS 514L
-#define DECAYHALF_MS 292L
-#define DECAY_MS 584L
-#define SUSTAIN_MS 450L
-#define RELEASE_MS 446L
-*/
-
-// we have a timebase of 1.020408f ms, not 1 ms... so adjust adsr defines
-#define ATTACK_MS 494L
-#define DECAYHALF_MS 286L
-#define DECAY_MS 572L
-#define SUSTAIN_MS 441L
-#define RELEASE_MS 437L
-
static void SoundOn(int start,int end,unsigned short val);
static void SoundOff(int start,int end,unsigned short val);
static void FModOn(int start,int end,unsigned short val);
@@ -89,35 +71,6 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) s_chan[ch].ADSRX.DecayRate=(lval>>4) & 0x000f;
s_chan[ch].ADSRX.SustainLevel=lval & 0x000f;
//---------------------------------------------//
-#if 0
- if(!iDebugMode) break;
- //---------------------------------------------// stuff below is only for debug mode
-
- s_chan[ch].ADSR.AttackModeExp=(lval&0x8000)?1:0; //0x007f
-
- lx=(((lval>>8) & 0x007f)>>2); // attack time to run from 0 to 100% volume
- lx=min(31,lx); // no overflow on shift!
- if(lx)
- {
- lx = (1<<lx);
- if(lx<2147483) lx=(lx*ATTACK_MS)/10000L; // another overflow check
- else lx=(lx/10000L)*ATTACK_MS;
- if(!lx) lx=1;
- }
- s_chan[ch].ADSR.AttackTime=lx;
-
- s_chan[ch].ADSR.SustainLevel= // our adsr vol runs from 0 to 1024, so scale the sustain level
- (1024*((lval) & 0x000f))/15;
-
- lx=(lval>>4) & 0x000f; // decay:
- if(lx) // our const decay value is time it takes from 100% to 0% of volume
- {
- lx = ((1<<(lx))*DECAY_MS)/10000L;
- if(!lx) lx=1;
- }
- s_chan[ch].ADSR.DecayTime = // so calc how long does it take to run from 100% to the wanted sus level
- (lx*(1024-s_chan[ch].ADSR.SustainLevel))/1024;
-#endif
}
break;
//------------------------------------------------// adsr times with pre-calcs
@@ -132,39 +85,6 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) s_chan[ch].ADSRX.ReleaseModeExp = (lval&0x0020)?1:0;
s_chan[ch].ADSRX.ReleaseRate = lval & 0x001f;
//----------------------------------------------//
-#if 0
- if(!iDebugMode) break;
- //----------------------------------------------// stuff below is only for debug mode
-
- s_chan[ch].ADSR.SustainModeExp = (lval&0x8000)?1:0;
- s_chan[ch].ADSR.ReleaseModeExp = (lval&0x0020)?1:0;
-
- lx=((((lval>>6) & 0x007f)>>2)); // sustain time... often very high
- lx=min(31,lx); // values are used to hold the volume
- if(lx) // until a sound stop occurs
- { // the highest value we reach (due to
- lx = (1<<lx); // overflow checking) is:
- if(lx<2147483) lx=(lx*SUSTAIN_MS)/10000L; // 94704 seconds = 1578 minutes = 26 hours...
- else lx=(lx/10000L)*SUSTAIN_MS; // should be enuff... if the stop doesn't
- if(!lx) lx=1; // come in this time span, I don't care :)
- }
- s_chan[ch].ADSR.SustainTime = lx;
-
- lx=(lval & 0x001f);
- s_chan[ch].ADSR.ReleaseVal =lx;
- if(lx) // release time from 100% to 0%
- { // note: the release time will be
- lx = (1<<lx); // adjusted when a stop is coming,
- if(lx<2147483) lx=(lx*RELEASE_MS)/10000L; // so at this time the adsr vol will
- else lx=(lx/10000L)*RELEASE_MS; // run from (current volume) to 0%
- if(!lx) lx=1;
- }
- s_chan[ch].ADSR.ReleaseTime=lx;
-
- if(lval & 0x4000) // add/dec flag
- s_chan[ch].ADSR.SustainModeDec=-1;
- else s_chan[ch].ADSR.SustainModeDec=1;
-#endif
}
break;
//------------------------------------------------// adsr volume... mmm have to investigate this
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index 69d6217..bbbe1e3 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -243,7 +243,7 @@ INLINE void InterpolateDown(int ch) // helpers for gauss interpolation #define gval0 (((short*)(&s_chan[ch].SB[29]))[gpos]) -#define gval(x) (((short*)(&s_chan[ch].SB[29]))[(gpos+x)&3]) +#define gval(x) ((int)((short*)(&s_chan[ch].SB[29]))[(gpos+x)&3]) #include "gauss_i.h" @@ -386,7 +386,7 @@ INLINE int iGetInterpolationVal(int ch, int spos) int vl, vr;int gpos; vl = (spos >> 6) & ~3; gpos = s_chan[ch].SB[28]; - vr=(gauss[vl]*gval0)&~2047; + vr=(gauss[vl]*(int)gval0)&~2047; vr+=(gauss[vl+1]*gval(1))&~2047; vr+=(gauss[vl+2]*gval(2))&~2047; vr+=(gauss[vl+3]*gval(3))&~2047; diff --git a/plugins/dfsound/xa.c b/plugins/dfsound/xa.c index af78acb..1c5425e 100644 --- a/plugins/dfsound/xa.c +++ b/plugins/dfsound/xa.c @@ -104,7 +104,7 @@ INLINE void MixXA(void) // small linux time helper... only used for watchdog //////////////////////////////////////////////////////////////////////// -unsigned long timeGetTime_spu() +static unsigned long timeGetTime_spu() { struct timeval tv; gettimeofday(&tv, 0); // well, maybe there are better ways |