+ union {\r
+ unsigned char *spuMemC;\r
+ unsigned short *spuMem;\r
+ };\r
+ unsigned char * pSpuIrq;\r
+\r
+ unsigned char * pSpuBuffer;\r
+ short * pS;\r
+\r
+ SPUCHAN * s_chan;\r
+ REVERBInfo * rvb;\r
+\r
+ int * SSumLR;\r
+\r
+ void (CALLBACK *irqCallback)(int);\r
+ //void (CALLBACK *cddavCallback)(short, short);\r
+ void (CALLBACK *scheduleCallback)(unsigned int);\r
+\r
+ const xa_decode_t * xapGlobal;\r
+ unsigned int * XAFeed;\r
+ unsigned int * XAPlay;\r
+ unsigned int * XAStart;\r
+ unsigned int * XAEnd;\r
+\r
+ unsigned int * CDDAFeed;\r
+ unsigned int * CDDAPlay;\r
+ unsigned int * CDDAStart;\r
+ unsigned int * CDDAEnd;\r
+\r
+ unsigned short regArea[0x400];\r
+\r
+ sample_buf sb[MAXCHAN];\r
+ int interpolation;\r
+ sample_buf sb_thread[MAXCHAN];\r
+} SPUInfo;\r
+\r
+#define regAreaGet(offset) \\r
+ spu.regArea[((offset) - 0xc00)>>1]\r
+#define regAreaGetCh(ch, offset) \\r
+ spu.regArea[((ch<<4)|(offset))>>1]\r