bring GPUvBlank back
authornotaz <notasas@gmail.com>
Tue, 3 Jan 2012 18:05:54 +0000 (20:05 +0200)
committernotaz <notasas@gmail.com>
Tue, 3 Jan 2012 18:05:54 +0000 (20:05 +0200)
to be used for interlace emulation

frontend/plugin.c
libpcsxcore/plugins.h
libpcsxcore/psxcounters.c
plugins/gpu_neon/gpu.c
plugins/gpu_neon/gpu.h

index a5f9830..b0cbc67 100644 (file)
@@ -75,7 +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 long GPUdmaChain(uint32_t *,uint32_t);
 extern void GPUupdateLace(void);
 extern long GPUfreeze(uint32_t, void *);
-extern void GPUvBlank(int, uint32_t *, uint32_t *);
+extern void GPUvBlank(int, int);
 extern void GPUrearmedCallbacks(const struct rearmed_cbs *cbs);
 
 
 extern void GPUrearmedCallbacks(const struct rearmed_cbs *cbs);
 
 
@@ -168,7 +168,7 @@ static const struct {
        DIRECT_GPU(GPUwriteDataMem),
        DIRECT_GPU(GPUdmaChain),
        DIRECT_GPU(GPUfreeze),
        DIRECT_GPU(GPUwriteDataMem),
        DIRECT_GPU(GPUdmaChain),
        DIRECT_GPU(GPUfreeze),
-//     DIRECT_GPU(GPUvBlank), // unused
+       DIRECT_GPU(GPUvBlank),
        DIRECT_GPU(GPUrearmedCallbacks),
 
        DUMMY_GPU(GPUdisplayText),
        DIRECT_GPU(GPUrearmedCallbacks),
 
        DUMMY_GPU(GPUdisplayText),
index f7f6248..dfa8722 100644 (file)
@@ -94,7 +94,7 @@ typedef long (CALLBACK* GPUfreeze)(uint32_t, GPUFreeze_t *);
 typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);\r
 typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);\r
 typedef void (CALLBACK* GPUclearDynarec)(void (CALLBACK *callback)(void));\r
 typedef long (CALLBACK* GPUgetScreenPic)(unsigned char *);\r
 typedef long (CALLBACK* GPUshowScreenPic)(unsigned char *);\r
 typedef void (CALLBACK* GPUclearDynarec)(void (CALLBACK *callback)(void));\r
-typedef void (CALLBACK* GPUvBlank)(int);\r
+typedef void (CALLBACK* GPUvBlank)(int, int);\r
 \r
 // GPU function pointers\r
 extern GPUupdateLace    GPU_updateLace;\r
 \r
 // GPU function pointers\r
 extern GPUupdateLace    GPU_updateLace;\r
@@ -119,7 +119,7 @@ extern GPUfreeze        GPU_freeze;
 extern GPUgetScreenPic  GPU_getScreenPic;\r
 extern GPUshowScreenPic GPU_showScreenPic;\r
 extern GPUclearDynarec  GPU_clearDynarec;\r
 extern GPUgetScreenPic  GPU_getScreenPic;\r
 extern GPUshowScreenPic GPU_showScreenPic;\r
 extern GPUclearDynarec  GPU_clearDynarec;\r
-extern GPUvBlank        GPU_vBlank; // unused\r
+extern GPUvBlank        GPU_vBlank;\r
 \r
 // CD-ROM Functions\r
 typedef long (CALLBACK* CDRinit)(void);\r
 \r
 // CD-ROM Functions\r
 typedef long (CALLBACK* CDRinit)(void);\r
index 5056c70..8b8fea8 100644 (file)
@@ -291,7 +291,7 @@ void psxRcntUpdate()
         if( hSyncCount == VBlankStart )
         {
             HW_GPU_STATUS &= ~PSXGPU_LCF;
         if( hSyncCount == VBlankStart )
         {
             HW_GPU_STATUS &= ~PSXGPU_LCF;
-
+            GPU_vBlank( 1, 0 );
             setIrq( 0x01 );
 
             EmuUpdate();
             setIrq( 0x01 );
 
             EmuUpdate();
@@ -307,6 +307,7 @@ void psxRcntUpdate()
             gpuSyncPluginSR();
             if( (HW_GPU_STATUS & PSXGPU_ILACE_BITS) == PSXGPU_ILACE_BITS )
                 HW_GPU_STATUS |= frame_counter << 31;
             gpuSyncPluginSR();
             if( (HW_GPU_STATUS & PSXGPU_ILACE_BITS) == PSXGPU_ILACE_BITS )
                 HW_GPU_STATUS |= frame_counter << 31;
+            GPU_vBlank( 0, HW_GPU_STATUS >> 31 );
         }
 
         // Schedule next call, in hsyncs
         }
 
         // Schedule next call, in hsyncs
index a18e05f..02dd372 100644 (file)
@@ -533,4 +533,8 @@ long GPUfreeze(uint32_t type, struct GPUFreeze *freeze)
   return 1;
 }
 
   return 1;
 }
 
+void GPUvBlank(int is_vblank, int lcf)
+{
+}
+
 // vim:shiftwidth=2:expandtab
 // vim:shiftwidth=2:expandtab
index 227aaaa..6aa933e 100644 (file)
@@ -118,6 +118,7 @@ long GPUfreeze(uint32_t type, struct GPUFreeze *freeze);
 void GPUupdateLace(void);
 long GPUopen(void **dpy);
 long GPUclose(void);
 void GPUupdateLace(void);
 long GPUopen(void **dpy);
 long GPUclose(void);
+void GPUvBlank(int is_vblank, int lcf);
 void GPUrearmedCallbacks(const struct rearmed_cbs *cbs_);
 
 #ifdef __cplusplus
 void GPUrearmedCallbacks(const struct rearmed_cbs *cbs_);
 
 #ifdef __cplusplus