GBA Memory: Fix bad Load8 on big endian

This commit is contained in:
Jeffrey Pfau 2015-10-06 21:25:45 -07:00
parent 19453933df
commit 4db61f400b
2 changed files with 4 additions and 3 deletions

View File

@ -17,6 +17,7 @@ Bugfixes:
- GBA Video: Fix OBJ semitransparency improperly interacting with other blending ops
- GBA: Fix autodetect problems with some bad dumps of Super Mario Advance 2
- GBA Memory: Fix bad BIOS Load16 on big endian
- GBA Memory: Fix bad Load8 on big endian
Misc:
- Qt: Window size command line options are now supported
- Qt: Increase usability of key mapper

View File

@ -535,12 +535,12 @@ uint32_t GBALoad8(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
value = ((uint8_t*) memory->bios)[address];
} else {
GBALog(gba, GBA_LOG_GAME_ERROR, "Bad BIOS Load8: 0x%08X", address);
value = ((uint8_t*) &memory->biosPrefetch)[address & 3];
value = (memory->biosPrefetch >> ((address & 3) * 8)) & 0xFF;
}
} else {
GBALog(gba, GBA_LOG_GAME_ERROR, "Bad memory Load8: 0x%08x", address);
LOAD_BAD;
value = ((uint8_t*) &value)[address & 3];
value = (value >> ((address & 3) * 8)) & 0xFF;
}
break;
case REGION_WORKING_RAM:
@ -602,7 +602,7 @@ uint32_t GBALoad8(struct ARMCore* cpu, uint32_t address, int* cycleCounter) {
default:
GBALog(gba, GBA_LOG_GAME_ERROR, "Bad memory Load8: 0x%08x", address);
LOAD_BAD;
value = ((uint8_t*) &value)[address & 3];
value = (value >> ((address & 3) * 8)) & 0xFF;
break;
}