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; }