all repos — mgba @ 2c7bb64adab1a274018df59741f1e957019096da

mGBA Game Boy Advance Emulator

GBA Memory: Fix bad Load8 on big endian
Jeffrey Pfau jeffrey@endrift.com
Tue, 06 Oct 2015 21:25:45 -0700
commit

2c7bb64adab1a274018df59741f1e957019096da

parent

42b011a68ba30aa5720ef6601efc72e256a2de9a

2 files changed, 4 insertions(+), 3 deletions(-)

jump to
M CHANGESCHANGES

@@ -16,6 +16,7 @@ - GBA Video: Fix objwin and blending interaction on sprites

- 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: Remove useless help icons in dialogs - GBA: Attempting to save a screenshot-style savestate should be allowed without libpng
M src/gba/memory.csrc/gba/memory.c

@@ -534,12 +534,12 @@ if (memory->activeRegion == REGION_BIOS) {

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:

@@ -601,7 +601,7 @@ break;

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