Fix CD volume issue in Star Wars - Dark Forces. (#232)
[pcsx_rearmed.git] / plugins / dfsound / externals.h
index 4832fac..5ec9415 100644 (file)
 #define noinline\r
 #define unlikely(x) x\r
 #endif\r
+#if defined(__GNUC__) && !defined(_TMS320C6X)\r
+#define preload __builtin_prefetch\r
+#else\r
+#define preload(...)\r
+#endif\r
 \r
 #define PSE_LT_SPU                  4\r
 #define PSE_SPU_ERR_SUCCESS         0\r
@@ -105,7 +110,7 @@ typedef struct
  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
+ unsigned int      bIgnoreLoop:1;                      // Ignore loop\r
  int               iLeftVolume;                        // left volume\r
  int               iRightVolume;                       // right volume\r
  ADSRInfoEx        ADSRX;\r
@@ -121,8 +126,6 @@ typedef struct
 \r
  int VolLeft;\r
  int VolRight;\r
- int iRVBLeft;\r
- int iRVBRight;\r
 \r
  int FB_SRC_A;       // (offset)\r
  int FB_SRC_B;       // (offset)\r
@@ -159,14 +162,8 @@ typedef struct
 \r
  int dirty;          // registers changed\r
 \r
- // normalized offsets\r
- int nIIR_DEST_A0, nIIR_DEST_A1, nIIR_DEST_B0, nIIR_DEST_B1,\r
-       nACC_SRC_A0, nACC_SRC_A1, nACC_SRC_B0, nACC_SRC_B1, \r
-       nIIR_SRC_A0, nIIR_SRC_A1, nIIR_SRC_B0, nIIR_SRC_B1,\r
-       nACC_SRC_C0, nACC_SRC_C1, nACC_SRC_D0, nACC_SRC_D1,\r
-       nMIX_DEST_A0, nMIX_DEST_A1, nMIX_DEST_B0, nMIX_DEST_B1;\r
  // MIX_DEST_xx - FB_SRC_x\r
- int nFB_SRC_A0, nFB_SRC_A1, nFB_SRC_B0, nFB_SRC_B1;\r
+ int FB_SRC_A0, FB_SRC_A1, FB_SRC_B0, FB_SRC_B1;\r
 } REVERBInfo;\r
 \r
 ///////////////////////////////////////////////////////////\r
@@ -192,6 +189,7 @@ typedef struct
  int             decode_dirty_ch;\r
  unsigned int    bSpuInit:1;\r
  unsigned int    bSPUIsOpen:1;\r
+ unsigned int    bMemDirty:1;          // had external write to SPU RAM\r
 \r
  unsigned int    dwNoiseVal;           // global noise generator\r
  unsigned int    dwNoiseCount;\r
@@ -203,7 +201,7 @@ typedef struct
  short         * pS;\r
 \r
  void (CALLBACK *irqCallback)(void);   // func of main emu, called on spu irq\r
- void (CALLBACK *cddavCallback)(unsigned short,unsigned short);\r
+ void (CALLBACK *cddavCallback)(short, short);\r
  void (CALLBACK *scheduleCallback)(unsigned int);\r
 \r
  xa_decode_t   * xapGlobal;\r
@@ -224,15 +222,19 @@ typedef struct
  int             iRightXAVol;\r
 \r
  SPUCHAN       * s_chan;\r
int           * SB;\r
REVERBInfo    * rvb;\r
 \r
- int           * RVB;\r
+ // buffers\r
+ int           * SB;\r
  int           * SSumLR;\r
 \r
  int             pad[29];\r
  unsigned short  regArea[0x400];\r
 } SPUInfo;\r
 \r
+#define regAreaGet(ch,offset) \\r
+  spu.regArea[((ch<<4)|(offset))>>1]\r
+\r
 ///////////////////////////////////////////////////////////\r
 // SPU.C globals\r
 ///////////////////////////////////////////////////////////\r
@@ -240,14 +242,10 @@ typedef struct
 #ifndef _IN_SPU\r
 \r
 extern SPUInfo spu;\r
-extern REVERBInfo rvb;\r
 \r
 void do_samples(unsigned int cycles_to, int do_sync);\r
 void schedule_next_irq(void);\r
 \r
-#define regAreaGet(ch,offset) \\r
-  spu.regArea[((ch<<4)|(offset))>>1]\r
-\r
 #define do_samples_if_needed(c, sync) \\r
  do { \\r
   if (sync || (int)((c) - spu.cycles_played) >= 16 * 768) \\r