From b782d902e63e7046b2a0f6b32cb129ef328fe9c2 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sun, 7 Feb 2016 09:16:25 -0800 Subject: [PATCH] GB Memory: Fix bank switching overflow case --- src/gb/memory.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gb/memory.c b/src/gb/memory.c index e85062663..9103dd9e8 100644 --- a/src/gb/memory.c +++ b/src/gb/memory.c @@ -314,7 +314,8 @@ static void _switchBank(struct GBMemory* memory, int bank) { size_t bankStart = bank * GB_SIZE_CART_BANK0; if (bankStart + GB_SIZE_CART_BANK0 > memory->romSize) { mLOG(GB_MBC, GAME_ERROR, "Attempting to switch to an invalid ROM bank: %0X", bank); - return; + bankStart &= (GB_SIZE_CART_BANK0 - 1); + bank /= GB_SIZE_CART_BANK0; } memory->romBank = &memory->rom[bankStart]; memory->currentBank = bank;