From 6a7e80c969740a73dcc0b7b41786bf71844aedea Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 5 Dec 2020 18:34:49 -0800 Subject: [PATCH] GBA Video: Fix I/O registers when switching renderer (fixes #1967) --- src/gba/video.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gba/video.c b/src/gba/video.c index adaf008a8..102aa4b32 100644 --- a/src/gba/video.c +++ b/src/gba/video.c @@ -126,6 +126,13 @@ void GBAVideoAssociateRenderer(struct GBAVideo* video, struct GBAVideoRenderer* renderer->vram = video->vram; renderer->oam = &video->oam; video->renderer->init(video->renderer); + video->renderer->reset(video->renderer); + renderer->writeVideoRegister(renderer, REG_DISPCNT, video->p->memory.io[REG_DISPCNT >> 1]); + renderer->writeVideoRegister(renderer, REG_GREENSWP, video->p->memory.io[REG_GREENSWP >> 1]); + int address; + for (address = REG_BG0CNT; address < REG_SOUND1CNT_LO; address += 2) { + renderer->writeVideoRegister(renderer, address, video->p->memory.io[address >> 1]); + } } void _midHblank(struct mTiming* timing, void* context, uint32_t cyclesLate) {