GBA Memory: Fix misaligned BIOS reads
Jeffrey Pfau jeffrey@endrift.com
Tue, 11 Oct 2016 21:59:57 -0700
2 files changed,
6 insertions(+),
2 deletions(-)
M
src/gba/memory.c
→
src/gba/memory.c
@@ -352,7 +352,7 @@
#define LOAD_BIOS \ if (address < SIZE_BIOS) { \ if (memory->activeRegion == REGION_BIOS) { \ - LOAD_32(value, address, memory->bios); \ + LOAD_32(value, address & -4, memory->bios); \ } else { \ mLOG(GBA_MEM, GAME_ERROR, "Bad BIOS Load32: 0x%08X", address); \ value = memory->biosPrefetch; \@@ -479,7 +479,7 @@ switch (address >> BASE_OFFSET) {
case REGION_BIOS: if (address < SIZE_BIOS) { if (memory->activeRegion == REGION_BIOS) { - LOAD_16(value, address, memory->bios); + LOAD_16(value, address & -2, memory->bios); } else { mLOG(GBA_MEM, GAME_ERROR, "Bad BIOS Load16: 0x%08X", address); value = (memory->biosPrefetch >> ((address & 2) * 8)) & 0xFFFF;