gpulib: clear fb when display is blanked
[pcsx_rearmed.git] / plugins / dfsound / registers.c
index 2493a1e..54e4000 100644 (file)
@@ -176,7 +176,6 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val)
        break;\r
      //------------------------------------------------//\r
     }\r
-   iSpuAsyncWait=0;\r
    return;\r
   }\r
 \r
@@ -213,6 +212,9 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val)
          {\r
           rvb.StartAddr=(unsigned long)val<<2;\r
           rvb.CurrAddr=rvb.StartAddr;\r
+          // sync-with-decode-buffers hack..\r
+          if(rvb.StartAddr==0x3ff00)\r
+            rvb.CurrAddr+=decode_pos/2;\r
          }\r
        }\r
       rvb.dirty = 1;\r
@@ -343,8 +345,6 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val)
 \r
  if ((r & ~0x3f) == H_Reverb)\r
   rvb.dirty = 1; // recalculate on next update\r
-\r
- iSpuAsyncWait=0;\r
 }\r
 \r
 ////////////////////////////////////////////////////////////////////////\r
@@ -355,8 +355,6 @@ unsigned short CALLBACK SPUreadRegister(unsigned long reg)
 {\r
  const unsigned long r=reg&0xfff;\r
         \r
- iSpuAsyncWait=0;\r
-\r
  if(r>=0x0c00 && r<0x0d80)\r
   {\r
    switch(r&0x0f)\r
@@ -429,6 +427,7 @@ static void SoundOn(int start,int end,unsigned short val)
      s_chan[ch].bStop=0;\r
      s_chan[ch].pCurr=spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned\r
      s_chan[ch].pLoop=spuMemC+((regAreaGet(ch,14)&~1)<<3);\r
+     s_chan[ch].prevflags=2;\r
 \r
      dwNewChannel|=(1<<ch);                            // bitfield for faster testing\r
      dwChannelOn|=1<<ch;\r