Permalink
Browse files

GB: Trust ROM header for number of SRAM banks (fixes #726)

  • Loading branch information...
endrift committed Jun 14, 2017
1 parent 6558074 commit 34647ffdca68da94f4fb5b51df4a8dc43758ad77
Showing with 6 additions and 1 deletion.
  1. +1 −0 CHANGES
  2. +5 −1 src/gb/mbc.c
View
@@ -133,6 +133,7 @@ Misc:
- Core: Move savestate creation time to extdata
- Debugger: Add mDebuggerRunFrame convenience function
- GBA Memory: Remove unused prefetch cruft
+ - GB: Trust ROM header for number of SRAM banks (fixes mgba.io/i/726)
0.5.2: (2016-12-31)
Bugfixes:
View
@@ -79,7 +79,11 @@ static bool _isMulticart(const uint8_t* mem) {
void GBMBCSwitchSramBank(struct GB* gb, int bank) {
size_t bankStart = bank * GB_SIZE_EXTERNAL_RAM;
- GBResizeSram(gb, (bank + 1) * GB_SIZE_EXTERNAL_RAM);
+ if (bankStart + GB_SIZE_EXTERNAL_RAM > gb->sramSize) {
+ mLOG(GB_MBC, GAME_ERROR, "Attempting to switch to an invalid RAM bank: %0X", bank);
+ bankStart &= (gb->sramSize - 1);
+ bank = bankStart / GB_SIZE_EXTERNAL_RAM;
+ }
gb->memory.sramBank = &gb->memory.sram[bankStart];
gb->memory.sramCurrentBank = bank;
}

0 comments on commit 34647ff

Please sign in to comment.