From 3d54fb6d02d4ca4ec6cf44ffd33710acb999f320 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 31 Mar 2021 21:57:03 -0700 Subject: [PATCH] GBA Video: Don't attempt to copy invalid registers when switching renderer --- CHANGES | 1 + src/gba/video.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 86fae6ac9..bab7a61cb 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ Other fixes: - GBA: Fix crash when ROM loading fails - GBA e-Reader: Fix bitmap short strip scanning - GBA Video: Fix mode 5 frame 1 caching (fixes mgba.io/i/2075) + - GBA Video: Don't attempt to copy invalid registers when switching renderer Misc: - Core: Truncate preloading ROMs that slightly exceed max size (fixes mgba.io/i/2093) - GBA: Default-enable VBA bug compat for Ruby and Emerald ROM hacks diff --git a/src/gba/video.c b/src/gba/video.c index 102aa4b32..10baa7dae 100644 --- a/src/gba/video.c +++ b/src/gba/video.c @@ -130,7 +130,10 @@ void GBAVideoAssociateRenderer(struct GBAVideo* video, struct GBAVideoRenderer* 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) { + for (address = REG_BG0CNT; address < 0x56; address += 2) { + if (address == 0x4E) { + continue; + } renderer->writeVideoRegister(renderer, address, video->p->memory.io[address >> 1]); } }