+#ifndef __P_SPU_H__\r
+#define __P_SPU_H__\r
+\r
+struct SPUFreeze;\r
+struct xa_decode;\r
+\r
+long CALLBACK SPUopen(void);\r
+long CALLBACK SPUinit(void);\r
+long CALLBACK SPUshutdown(void);\r
+long CALLBACK SPUclose(void);\r
+void CALLBACK SPUwriteRegister(unsigned long, unsigned short, unsigned int);\r
+unsigned short CALLBACK SPUreadRegister(unsigned long, unsigned int);\r
+void CALLBACK SPUregisterCallback(void (*cb)(int));\r
+void CALLBACK SPUregisterScheduleCb(void (*cb)(unsigned int));\r
+long CALLBACK SPUfreeze(unsigned int, struct SPUFreeze *, unsigned int);\r
+void CALLBACK SPUasync(unsigned int, unsigned int);\r
+\r
+void CALLBACK SPUreadDMAMem(unsigned short * pusPSXMem,int iSize,unsigned int cycles);\r
+void CALLBACK SPUwriteDMAMem(unsigned short * pusPSXMem,int iSize,unsigned int cycles);\r
+\r
+void CALLBACK SPUplayADPCMchannel(struct xa_decode *xap, unsigned int cycle, int is_start);\r
+int CALLBACK SPUplayCDDAchannel(short *pcm, int bytes, unsigned int cycle, int is_start);\r
+void CALLBACK SPUsetCDvol(unsigned char ll, unsigned char lr,\r
+ unsigned char rl, unsigned char rr, unsigned int cycle);\r
+\r
+// internal\r