GB Memory: Prevent accessing empty SRAM (fixes #831)

This commit is contained in:
Vicki Pfau 2017-07-29 15:31:29 -07:00
parent ab5e392bbc
commit aa9994a486
2 changed files with 4 additions and 3 deletions

View File

@ -9,6 +9,7 @@ Bugfixes:
- GB Video: Fix 16-bit screenshots (fixes mgba.io/i/826)
- GB Core: Fix palette loading when loading a foreign config
- Qt: Fix LOG argument order
- GB Memory: Prevent accessing empty SRAM (fixes mgba.io/i/831)
Misc:
- Qt: Don't rebuild library view if style hasn't changed

View File

@ -220,7 +220,7 @@ uint8_t GBLoad8(struct LR35902Core* cpu, uint16_t address) {
return memory->rtcRegs[memory->activeRtcReg];
} else if (memory->mbcRead) {
return memory->mbcRead(memory, address);
} else if (memory->sramAccess) {
} else if (memory->sramAccess && memory->sram) {
return memory->sramBank[address & (GB_SIZE_EXTERNAL_RAM - 1)];
} else if (memory->mbcType == GB_HuC3) {
return 0x01; // TODO: Is this supposed to be the current SRAM bank?
@ -289,7 +289,7 @@ void GBStore8(struct LR35902Core* cpu, uint16_t address, int8_t value) {
case GB_REGION_EXTERNAL_RAM + 1:
if (memory->rtcAccess) {
memory->rtcRegs[memory->activeRtcReg] = value;
} else if (memory->sramAccess) {
} else if (memory->sramAccess && memory->sram) {
memory->sramBank[address & (GB_SIZE_EXTERNAL_RAM - 1)] = value;
} else if (memory->mbcType == GB_MBC7) {
GBMBC7Write(memory, address, value);
@ -387,7 +387,7 @@ uint8_t GBView8(struct LR35902Core* cpu, uint16_t address, int segment) {
if (memory->rtcAccess) {
return memory->rtcRegs[memory->activeRtcReg];
} else if (memory->sramAccess) {
if (segment < 0) {
if (segment < 0 && memory->sram) {
return memory->sramBank[address & (GB_SIZE_EXTERNAL_RAM - 1)];
} else if ((size_t) segment * GB_SIZE_EXTERNAL_RAM < gb->sramSize) {
return memory->sram[(address & (GB_SIZE_EXTERNAL_RAM - 1)) + segment *GB_SIZE_EXTERNAL_RAM];