From 2aa8716cc95d380adcfa83131ad4d2aa3e071eaa Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 27 May 2018 15:00:21 -0700 Subject: [PATCH] GBA Video: Start timing mid-scanline when skipping BIOS --- CHANGES | 1 + src/gba/video.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 6174d43e7..0e60c1fd5 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Bugfixes: - GBA Hardware: Fix RTC overriding light sensor (fixes mgba.io/i/1069) - GBA Savedata: Fix savedata modified time updating when read-only - GB Video: Fix enabling window when LY > WY (fixes mgba.io/i/409) + - GBA Video: Start timing mid-scanline when skipping BIOS Misc: - GBA Timer: Use global cycles for timers - GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722) diff --git a/src/gba/video.c b/src/gba/video.c index 069e79555..544c9f7da 100644 --- a/src/gba/video.c +++ b/src/gba/video.c @@ -78,16 +78,18 @@ void GBAVideoInit(struct GBAVideo* video) { } void GBAVideoReset(struct GBAVideo* video) { + int32_t nextEvent = VIDEO_HDRAW_LENGTH; if (video->p->memory.fullBios) { video->vcount = 0; } else { - // TODO: Verify exact scanline hardware + // TODO: Verify exact scanline on hardware video->vcount = 0x7E; + nextEvent = 170; } video->p->memory.io[REG_VCOUNT >> 1] = video->vcount; video->event.callback = _startHblank; - mTimingSchedule(&video->p->timing, &video->event, VIDEO_HDRAW_LENGTH); + mTimingSchedule(&video->p->timing, &video->event, nextEvent); video->frameCounter = 0; video->frameskipCounter = 0;