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) \
DIRECT_GPU(GPUwriteDataMem),
DIRECT_GPU(GPUdmaChain),
DIRECT_GPU(GPUfreeze),
+ DIRECT_GPU(GPUvBlank),
DUMMY_GPU(GPUdisplayText),
/*
DIRECT_GPU(GPUshowScreenPic),
*/
// DIRECT_GPU(GPUclearDynarec),
-// DIRECT_GPU(GPUvBlank),
};
void *plugin_link(enum builtint_plugins_e id, const char *sym)
BOOL bDoLazyUpdate=FALSE;
uint32_t lGPUInfoVals[16];
static int iFakePrimBusy=0;
+static uint32_t vBlank=0;
////////////////////////////////////////////////////////////////////////
// some misc external display funcs
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?
if(PSXDisplay.Interlaced) // interlaced mode?
{
+ lGPUstatusRet^=0x80000000; // odd/even bit?
+
if(bDoVSyncUpdate && PSXDisplay.DisplayMode.x>0 && PSXDisplay.DisplayMode.y>0)
{
updateDisplay();
GPUIsReadyForCommands;
}
}
- return lGPUstatusRet;
+ return lGPUstatusRet | vBlank;
}
////////////////////////////////////////////////////////////////////////
return 1;
}
+
+void CALLBACK GPUvBlank(int val)
+{
+ vBlank=val?0x80000000:0;
+}
+