From 65baf033539957ce19579e8834eeb232399bb0be Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 18 Feb 2022 22:14:16 -0800 Subject: [PATCH] GBA: Fix expected entry point for multiboot ELFs (fixes #2450) --- CHANGES | 1 + src/gba/gba.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index bef73d4bb..ea22c7675 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ 0.9.4: (Future) Emulation fixes: - GB Serialize: Fix loading MBC1 states that affect bank 0 (fixes mgba.io/i/2402) + - GBA: Fix expected entry point for multiboot ELFs (fixes mgba.io/i/2450) - GBA I/O: Disable open bus behavior on invalid register 06A - GBA Video: Ignore horizontally off-screen sprite timing (fixes mgba.io/i/2391) - GBA Video: Fix rare crash in modes 3-5 diff --git a/src/gba/gba.c b/src/gba/gba.c index 6ca0cfa3f..ff1d473e2 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -579,7 +579,7 @@ bool GBAIsROM(struct VFile* vf) { uint32_t entry = ELFEntry(elf); bool isGBA = true; isGBA = isGBA && ELFMachine(elf) == EM_ARM; - isGBA = isGBA && (entry == BASE_CART0 || entry == BASE_WORKING_RAM); + isGBA = isGBA && (entry == BASE_CART0 || entry == BASE_WORKING_RAM + 0xC0); ELFClose(elf); return isGBA; } @@ -638,7 +638,7 @@ bool GBAIsMB(struct VFile* vf) { #ifdef USE_ELF struct ELF* elf = ELFOpen(vf); if (elf) { - bool isMB = ELFEntry(elf) == BASE_WORKING_RAM; + bool isMB = ELFEntry(elf) == BASE_WORKING_RAM + 0xC0; ELFClose(elf); return isMB; }