GB: mVL-related fixes

This commit is contained in:
Vicki Pfau 2019-06-02 17:21:44 -07:00
parent 00e8b9877f
commit ff735e35b7
2 changed files with 7 additions and 5 deletions

View File

@ -984,6 +984,7 @@ static void _GBVLPStartFrameCallback(void *context) {
GBVideoProxyRendererUnshim(&gb->video, &gbcore->proxyRenderer);
mVideoLogContextRewind(gbcore->logContext, core);
GBVideoProxyRendererShim(&gb->video, &gbcore->proxyRenderer);
gb->earlyExit = true;
}
}
@ -999,6 +1000,7 @@ static bool _GBVLPInit(struct mCore* core) {
gbcore->logCallbacks.videoFrameStarted = _GBVLPStartFrameCallback;
gbcore->logCallbacks.context = core;
core->addCoreCallbacks(core, &gbcore->logCallbacks);
core->videoLogger = gbcore->proxyRenderer.logger;
return true;
}

View File

@ -343,19 +343,19 @@ void _updateFrameCount(struct mTiming* timing, void* context, uint32_t cyclesLat
mTimingSchedule(timing, &video->frameEvent, 4 - ((video->p->cpu->executionState + 1) & 3));
return;
}
if (!GBRegisterLCDCIsEnable(video->p->memory.io[REG_LCDC])) {
mTimingSchedule(timing, &video->frameEvent, GB_VIDEO_TOTAL_LENGTH);
}
GBFrameEnded(video->p);
mCoreSyncPostFrame(video->p->sync);
--video->frameskipCounter;
if (video->frameskipCounter < 0) {
video->renderer->finishFrame(video->renderer);
video->frameskipCounter = video->frameskip;
}
GBFrameEnded(video->p);
mCoreSyncPostFrame(video->p->sync);
++video->frameCounter;
if (!GBRegisterLCDCIsEnable(video->p->memory.io[REG_LCDC])) {
mTimingSchedule(timing, &video->frameEvent, GB_VIDEO_TOTAL_LENGTH);
}
GBFrameStarted(video->p);
}