From db31ecbe6faea1b1cb75ede6befb3d6ac3bf2886 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sun, 4 Oct 2015 21:19:17 -0700 Subject: [PATCH] GBA Memory: Fix bad BIOS Load16 on big endian --- CHANGES | 1 + src/gba/memory.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 756f305af..8f530d6de 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Bugfixes: - 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 Misc: - Qt: Remove useless help icons in dialogs - GBA: Attempting to save a screenshot-style savestate should be allowed without libpng diff --git a/src/gba/memory.c b/src/gba/memory.c index b97424130..19e048e2d 100644 --- a/src/gba/memory.c +++ b/src/gba/memory.c @@ -441,7 +441,7 @@ uint32_t GBALoad16(struct ARMCore* cpu, uint32_t address, int* cycleCounter) { LOAD_16(value, address, memory->bios); } else { GBALog(gba, GBA_LOG_GAME_ERROR, "Bad BIOS Load16: 0x%08X", address); - LOAD_16(value, address & 2, &memory->biosPrefetch); + value = (memory->biosPrefetch >> ((address & 2) * 8)) & 0xFFFF; } } else { GBALog(gba, GBA_LOG_GAME_ERROR, "Bad memory Load16: 0x%08X", address);