From ba11b8aa0cd8dca77efcd12913bbbfa74f69b04d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 13 May 2020 20:11:10 -0700 Subject: [PATCH] GB MBC: Support 4MB MBC30 ROMs (fixes #1713) --- CHANGES | 1 + src/gb/mbc.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 70f9592fa..512bbfdce 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,6 @@ 0.8.2: (Future) - GB: Fix GBC game registers after skipping BIOS + - GB MBC: Support 4MB MBC30 ROMs (fixes mgba.io/i/1713) - GB Video: Fix BGPS value after skipping BIOS (fixes mgba.io/i/1717) - GBA: Add missing RTC overrides for Legendz games - GBA SIO: Fix Multiplayer busy bit diff --git a/src/gb/mbc.c b/src/gb/mbc.c index 6efe8b64d..be03f1511 100644 --- a/src/gb/mbc.c +++ b/src/gb/mbc.c @@ -518,7 +518,7 @@ static uint8_t _GBMBC2Read(struct GBMemory* memory, uint16_t address) { void _GBMBC3(struct GB* gb, uint16_t address, uint8_t value) { struct GBMemory* memory = &gb->memory; - int bank = value & 0x7F; + int bank = value; switch (address >> 13) { case 0x0: switch (value) { @@ -536,6 +536,9 @@ void _GBMBC3(struct GB* gb, uint16_t address, uint8_t value) { } break; case 0x1: + if (gb->memory.romSize < GB_SIZE_CART_BANK0 * 0x80) { + bank &= 0x7F; + } if (!bank) { ++bank; }