dfxvideo: use bit31 handling from pcsxr-svn
authornotaz <notasas@gmail.com>
Tue, 1 Mar 2011 21:24:30 +0000 (23:24 +0200)
committernotaz <notasas@gmail.com>
Tue, 1 Mar 2011 21:25:44 +0000 (23:25 +0200)
frontend/plugin.c
plugins/dfxvideo/gpu.c

index 33efbf0..bc42f04 100644 (file)
@@ -75,6 +75,7 @@ extern void GPUreadDataMem(uint32_t *, int);
 extern long GPUdmaChain(uint32_t *,uint32_t);
 extern void GPUupdateLace(void);
 extern long GPUfreeze(uint32_t, void *);
+extern void GPUvBlank(int);
 
 
 #define DUMMY(id, name) \
@@ -166,6 +167,7 @@ static const struct {
        DIRECT_GPU(GPUwriteDataMem),
        DIRECT_GPU(GPUdmaChain),
        DIRECT_GPU(GPUfreeze),
+       DIRECT_GPU(GPUvBlank),
 
        DUMMY_GPU(GPUdisplayText),
 /*
@@ -178,7 +180,6 @@ static const struct {
        DIRECT_GPU(GPUshowScreenPic),
 */
 //     DIRECT_GPU(GPUclearDynarec),
-//     DIRECT_GPU(GPUvBlank),
 };
 
 void *plugin_link(enum builtint_plugins_e id, const char *sym)
index 50d45d5..8e36f8e 100644 (file)
@@ -59,6 +59,7 @@ long              lSelectedSlot=0;
 BOOL              bDoLazyUpdate=FALSE;
 uint32_t          lGPUInfoVals[16];
 static int        iFakePrimBusy=0;
+static uint32_t   vBlank=0;
 
 ////////////////////////////////////////////////////////////////////////
 // some misc external display funcs
@@ -384,8 +385,8 @@ static void updateDisplayIfChanged(void)                      // UPDATE DISPLAY
 
 void CALLBACK GPUupdateLace(void)                      // VSYNC
 {
- if(!(dwActFixes&1))
-  lGPUstatusRet^=0x80000000;                           // odd/even bit
//if(!(dwActFixes&1))
// lGPUstatusRet^=0x80000000;                           // odd/even bit
 
  //pcsx-rearmed: removed, this is handled by core
  //if(!(dwActFixes&32))                                  // std fps limitation?
@@ -393,6 +394,8 @@ void CALLBACK GPUupdateLace(void)                      // VSYNC
 
  if(PSXDisplay.Interlaced)                             // interlaced mode?
   {
+   lGPUstatusRet^=0x80000000;                          // odd/even bit?
+
    if(bDoVSyncUpdate && PSXDisplay.DisplayMode.x>0 && PSXDisplay.DisplayMode.y>0)
     {
      updateDisplay();
@@ -450,7 +453,7 @@ uint32_t CALLBACK GPUreadStatus(void)             // READ STATUS
      GPUIsReadyForCommands;
     }
   }
- return lGPUstatusRet;
+ return lGPUstatusRet | vBlank;
 }
 
 ////////////////////////////////////////////////////////////////////////
@@ -1103,3 +1106,9 @@ long CALLBACK GPUfreeze(uint32_t ulGetFreezeData,GPUFreeze_t * pF)
 
  return 1;
 }
+
+void CALLBACK GPUvBlank(int val)
+{
+ vBlank=val?0x80000000:0;
+}
+