// generic defines\r
/////////////////////////////////////////////////////////\r
\r
+#ifdef __GNUC__\r
+#define noinline __attribute__((noinline))\r
+#define unlikely(x) __builtin_expect((x), 0)\r
+#else\r
+#define noinline\r
+#define unlikely(x) x\r
+#endif\r
+\r
#define PSE_LT_SPU 4\r
#define PSE_SPU_ERR_SUCCESS 0\r
#define PSE_SPU_ERR -60\r
// spu defines\r
////////////////////////////////////////////////////////////////////////\r
\r
-// sound buffer sizes\r
-// 400 ms complete sound buffer\r
-#define SOUNDSIZE 70560\r
-// 137 ms test buffer... if less than that is buffered, a new upload will happen\r
-#define TESTSIZE 24192\r
-\r
// num of channels\r
#define MAXCHAN 24\r
\r
-// ~ 1 ms of data\r
+// ~ FRAG_MSECS ms of data\r
// note: must be even due to the way reverb works now\r
#define FRAG_MSECS 2\r
#define NSSIZE ((44100 * FRAG_MSECS / 1000 + 1) & ~1)\r
int spos;\r
int sinc;\r
\r
- unsigned char * pStart; // start ptr into sound mem\r
unsigned char * pCurr; // current pos in sound mem\r
unsigned char * pLoop; // loop ptr in sound mem\r
\r
unsigned int bStop:1; // is channel stopped (sample _can_ still be playing, ADSR Release phase)\r
unsigned int bReverb:1; // can we do reverb on this channel? must have ctrl register bit, to get active\r
- unsigned int bIgnoreLoop:1; // ignore loop bit, if an external loop address is used\r
unsigned int bRVBActive:1; // reverb active flag\r
unsigned int bNoise:1; // noise active flag\r
unsigned int bFMod:2; // freq mod (0=off, 1=sound channel, 2=freq channel)\r
+ unsigned int prevflags:3; // flags from previous block\r
\r
- int iActFreq; // current psx pitch\r
- int iUsedFreq; // current pc pitch\r
int iLeftVolume; // left volume\r
int iRightVolume; // right volume\r
ADSRInfoEx ADSRX;\r
\r
extern int iVolume;\r
extern int iXAPitch;\r
-extern int iUseTimer;\r
-extern int iSPUIRQWait;\r
-extern int iDebugMode;\r
-extern int iRecordMode;\r
extern int iUseReverb;\r
extern int iUseInterpolation;\r
// MISC\r
\r
-extern int iSpuAsyncWait;\r
+extern int had_dma;\r
+extern int decode_pos;\r
\r
extern SPUCHAN s_chan[];\r
extern REVERBInfo rvb;\r
extern unsigned short spuStat;\r
extern unsigned short spuIrq;\r
extern unsigned long spuAddr;\r
-extern int bEndThread; \r
-extern int bThreadEnded;\r
extern int bSpuInit;\r
extern unsigned int dwNewChannel;\r
extern unsigned int dwChannelOn;\r
extern uint32_t * XAStart;\r
extern uint32_t * XAEnd;\r
\r
-extern uint32_t XARepeat;\r
-extern uint32_t XALastVal;\r
-\r
extern uint32_t * CDDAFeed;\r
extern uint32_t * CDDAPlay;\r
extern uint32_t * CDDAStart;\r