aboutsummaryrefslogtreecommitdiff
path: root/plugins/dfsound/externals.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dfsound/externals.h')
-rw-r--r--plugins/dfsound/externals.h121
1 files changed, 54 insertions, 67 deletions
diff --git a/plugins/dfsound/externals.h b/plugins/dfsound/externals.h
index 9096399..7935cb9 100644
--- a/plugins/dfsound/externals.h
+++ b/plugins/dfsound/externals.h
@@ -166,95 +166,82 @@ typedef struct
} REVERBInfo;
///////////////////////////////////////////////////////////
-// SPU.C globals
-///////////////////////////////////////////////////////////
-
-#ifndef _IN_SPU
// psx buffers / addresses
-extern unsigned short regArea[];
-extern unsigned short spuMem[];
-extern unsigned char * spuMemC;
-extern unsigned char * pSpuIrq;
-extern unsigned char * pSpuBuffer;
+typedef struct
+{
+ unsigned short spuCtrl;
+ unsigned short spuStat;
-#define regAreaGet(ch,offset) \
- regArea[((ch<<4)|(offset))>>1]
+ unsigned int spuAddr;
+ unsigned char * spuMemC;
+ unsigned char * pSpuIrq;
-// user settings
+ unsigned int cycles_played;
+ int decode_pos;
+ int decode_dirty_ch;
+ unsigned int bSpuInit:1;
+ unsigned int bSPUIsOpen:1;
-extern int iVolume;
-extern int iXAPitch;
-extern int iUseReverb;
-extern int iUseInterpolation;
-// MISC
+ unsigned int dwNoiseVal; // global noise generator
+ unsigned int dwNoiseCount;
+ unsigned int dwNewChannel; // flags for faster testing, if new channel starts
+ unsigned int dwChannelOn; // not silent channels
+ unsigned int dwChannelDead; // silent+not useful channels
-extern int decode_pos;
+ unsigned char * pSpuBuffer;
+ short * pS;
-extern SPUCHAN s_chan[];
-extern REVERBInfo rvb;
+ void (CALLBACK *irqCallback)(void); // func of main emu, called on spu irq
+ void (CALLBACK *cddavCallback)(unsigned short,unsigned short);
+ void (CALLBACK *scheduleCallback)(unsigned int);
-extern unsigned short spuCtrl;
-extern unsigned short spuStat;
-extern unsigned short spuIrq;
-extern unsigned int spuAddr;
-extern int bSpuInit;
-extern unsigned int dwNewChannel;
-extern unsigned int dwChannelOn;
-extern unsigned int dwPendingChanOff;
-extern unsigned int dwChannelDead;
+ int * sRVBStart;
-extern int SSumR[];
-extern int SSumL[];
-extern short * pS;
+ xa_decode_t * xapGlobal;
+ unsigned int * XAFeed;
+ unsigned int * XAPlay;
+ unsigned int * XAStart;
+ unsigned int * XAEnd;
-extern void (CALLBACK *cddavCallback)(unsigned short,unsigned short);
+ unsigned int * CDDAFeed;
+ unsigned int * CDDAPlay;
+ unsigned int * CDDAStart;
+ unsigned int * CDDAEnd;
-extern unsigned int cycles_played;
+ unsigned int XARepeat;
+ unsigned int XALastVal;
-void do_samples(unsigned int cycles_to);
-void schedule_next_irq(void);
-
-#define do_samples_if_needed(c) \
- do { \
- if ((int)((c) - cycles_played) >= 16 * 768) \
- do_samples(c); \
- } while (0)
+ int iLeftXAVol;
+ int iRightXAVol;
-#endif
+ int pad[32];
+ unsigned short regArea[0x400];
+ unsigned short spuMem[256*1024];
+} SPUInfo;
///////////////////////////////////////////////////////////
-// XA.C globals
+// SPU.C globals
///////////////////////////////////////////////////////////
-#ifndef _IN_XA
+#ifndef _IN_SPU
-extern xa_decode_t * xapGlobal;
+extern SPUInfo spu;
+extern SPUCHAN s_chan[];
+extern REVERBInfo rvb;
-extern uint32_t * XAFeed;
-extern uint32_t * XAPlay;
-extern uint32_t * XAStart;
-extern uint32_t * XAEnd;
+void do_samples(unsigned int cycles_to);
+void schedule_next_irq(void);
-extern uint32_t * CDDAFeed;
-extern uint32_t * CDDAPlay;
-extern uint32_t * CDDAStart;
-extern uint32_t * CDDAEnd;
+#define regAreaGet(ch,offset) \
+ spu.regArea[((ch<<4)|(offset))>>1]
-extern int iLeftXAVol;
-extern int iRightXAVol;
+#define do_samples_if_needed(c) \
+ do { \
+ if ((int)((c) - spu.cycles_played) >= 16 * 768) \
+ do_samples(c); \
+ } while (0)
#endif
-///////////////////////////////////////////////////////////
-// REVERB.C globals
-///////////////////////////////////////////////////////////
-
-#ifndef _IN_REVERB
-
-extern int * sRVBPlay;
-extern int * sRVBEnd;
-extern int * sRVBStart;
-
-#endif