#ifndef PEOPS2_EXTERNALS
#define PEOPS2_EXTERNALS
#include "ao.h"
typedef int8 s8;
typedef int16 s16;
typedef int32 s32;
typedef int64 s64;
typedef uint8 u8;
typedef uint16 u16;
typedef uint32 u32;
typedef uint64 u64;
#if LSB_FIRST
static INLINE u16 BFLIP16(u16 x)
{
return x;
}
#else
static INLINE u16 BFLIP16(u16 x)
{
return( ((x>>8)&0xFF)| ((x&0xFF)<<8) );
}
#endif
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#define SOUNDSIZE 76800
#define TESTSIZE 26304
#define MAXCHAN 48
#define HLFCHAN 24
#define NSSIZE 1
typedef struct
{
int AttackModeExp;
long AttackTime;
long DecayTime;
long SustainLevel;
int SustainModeExp;
long SustainModeDec;
long SustainTime;
int ReleaseModeExp;
unsigned long ReleaseVal;
long ReleaseTime;
long ReleaseStartTime;
long ReleaseVol;
long lTime;
long lVolume;
} ADSRInfo;
typedef struct
{
int State;
int AttackModeExp;
int AttackRate;
int DecayRate;
int SustainLevel;
int SustainModeExp;
int SustainIncrease;
int SustainRate;
int ReleaseModeExp;
int ReleaseRate;
int EnvelopeVol;
long lVolume;
long lDummy1;
long lDummy2;
} ADSRInfoEx;
#define FLAG_MUTE 1
#define FLAG_IPOL0 2
#define FLAG_IPOL1 4
typedef struct
{
int bNew;
int iSBPos; int spos;
int sinc;
int SB[32+32]; int sval;
unsigned char * pStart; unsigned char * pCurr; unsigned char * pLoop;
int iStartAdr;
int iLoopAdr;
int iNextAdr;
int bOn; int bStop; int bEndPoint; int bReverbL; int bReverbR;
int bVolumeL; int bVolumeR;
int iActFreq; int iUsedFreq; int iLeftVolume; int iLeftVolRaw; int bIgnoreLoop; int iMute; int iRightVolume; int iRightVolRaw; int iRawPitch; int iIrqDone; int s_1; int s_2;
int bRVBActive; int bNoise; int bFMod; int iOldNoise; ADSRInfo ADSR; ADSRInfoEx ADSRX;
} SPUCHAN;
typedef struct
{
int StartAddr; int EndAddr; int CurrAddr;
int VolLeft;
int VolRight;
int iLastRVBLeft;
int iLastRVBRight;
int iRVBLeft;
int iRVBRight;
int iCnt;
int FB_SRC_A; int FB_SRC_B; int IIR_ALPHA; int ACC_COEF_A; int ACC_COEF_B; int ACC_COEF_C; int ACC_COEF_D; int IIR_COEF; int FB_ALPHA; int FB_X; int IIR_DEST_A0; int IIR_DEST_A1; int ACC_SRC_A0; int ACC_SRC_A1; int ACC_SRC_B0; int ACC_SRC_B1; int IIR_SRC_A0; int IIR_SRC_A1; int IIR_DEST_B0; int IIR_DEST_B1; int ACC_SRC_C0; int ACC_SRC_C1; int ACC_SRC_D0; int ACC_SRC_D1; int IIR_SRC_B1; int IIR_SRC_B0; int MIX_DEST_A0; int MIX_DEST_A1; int MIX_DEST_B0; int MIX_DEST_B1; int IN_COEF_L; int IN_COEF_R; } REVERBInfo;
#ifdef _WINDOWS
#endif
#ifndef _IN_SPU
extern unsigned short regArea[];
extern unsigned short spuMem[];
extern unsigned char * spuMemC;
extern unsigned char * pSpuIrq[];
extern unsigned char * pSpuBuffer;
extern int iUseXA;
extern int iVolume;
extern int iXAPitch;
extern int iUseTimer;
extern int iSPUIRQWait;
extern int iDebugMode;
extern int iRecordMode;
extern int iUseReverb;
extern int iUseInterpolation;
extern int iDisStereo;
extern SPUCHAN s_chan[];
extern REVERBInfo rvb[];
extern unsigned long dwNoiseVal;
extern unsigned short spuCtrl2[];
extern unsigned short spuStat2[];
extern unsigned long spuIrq2[];
extern unsigned long spuAddr2[];
extern unsigned long spuRvbAddr2[];
extern unsigned long spuRvbAEnd2[];
extern int bEndThread;
extern int bThreadEnded;
extern int bSpuInit;
extern int SSumR[];
extern int SSumL[];
extern int iCycle;
extern short * pS;
extern unsigned long dwNewChannel2[];
extern unsigned long dwEndChannel2[];
extern int iSpuAsyncWait;
#ifdef _WINDOWS
#endif
extern void (CALLBACK *cddavCallback)(unsigned short,unsigned short);
#endif
#ifndef _IN_CFG
#ifndef _WINDOWS
extern char * pConfigFile;
#endif
#endif
#ifndef _IN_DSOUND
#ifdef _WINDOWS
extern unsigned long LastWrite;
extern unsigned long LastPlay;
#endif
#endif
#ifndef _IN_RECORD
#ifdef _WINDOWS
extern int iDoRecord;
#endif
#endif
#ifndef _IN_XA
extern xa_decode_t * xapGlobal;
extern unsigned long * XAFeed;
extern unsigned long * XAPlay;
extern unsigned long * XAStart;
extern unsigned long * XAEnd;
extern unsigned long XARepeat;
extern unsigned long XALastVal;
extern int iLeftXAVol;
extern int iRightXAVol;
#endif
#ifndef _IN_REVERB
extern int * sRVBPlay[];
extern int * sRVBEnd[];
extern int * sRVBStart[];
#endif
#endif