From 36de596fdbe9190a52ab40318a02b9d37806ce35 Mon Sep 17 00:00:00 2001 From: Douglas Christman Date: Thu, 29 Mar 2018 11:11:18 +0800 Subject: [PATCH] GB: Fix GBC games running on GBA with BIOS GBC games can detect if they are running on a GBA by checking if the low bit of register B is set to 1. B is set in `GBSkipBIOS`, but B was not updated when loading a real BIOS. Load 1 into B after unmapping the BIOS if the model is set to GBA. --- src/gb/gb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gb/gb.c b/src/gb/gb.c index 4d404e83c..b932e9eda 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -555,6 +555,10 @@ void GBUnmapBIOS(struct GB* gb) { free(gb->memory.romBase); gb->memory.romBase = gb->memory.rom; } + // XXX: Force AGB registers for AGB-mode + if (gb->model == GB_MODEL_AGB && gb->cpu->pc == 0x100) { + gb->cpu->b = 1; + } } void GBDetectModel(struct GB* gb) {