From 07719860c34840a1f7b969e38dd6bfbcd04c246e Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 17 Nov 2015 19:48:10 -0800 Subject: [PATCH] GBA BIOS: Fix misaligned RLUnCompReadNormalWrite* --- CHANGES | 1 + src/gba/bios.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index a2dddfa9c..e67377176 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,7 @@ Bugfixes: - GBA Hardware: Fix Game Boy Player rumble in Pokemon Pinball - OpenGL: Fix fast-forward on some OpenGL drivers where it may block early - GBA BIOS: Fix Sqrt sign + - GBA BIOS: Fix misaligned RLUnCompReadNormalWrite* Misc: - GBA Audio: Implement missing flags on SOUNDCNT_X register diff --git a/src/gba/bios.c b/src/gba/bios.c index 76790e1ab..9e604686d 100644 --- a/src/gba/bios.c +++ b/src/gba/bios.c @@ -476,8 +476,8 @@ static void _unHuffman(struct GBA* gba) { static void _unRl(struct GBA* gba, int width) { struct ARMCore* cpu = gba->cpu; - uint32_t source = cpu->gprs[0] & 0xFFFFFFFC; - int remaining = (cpu->memory.load32(cpu, source, 0) & 0xFFFFFF00) >> 8; + uint32_t source = cpu->gprs[0]; + int remaining = (cpu->memory.load32(cpu, source & 0xFFFFFFFC, 0) & 0xFFFFFF00) >> 8; int padding = (4 - remaining) & 0x3; // We assume the signature byte (0x30) is correct int blockheader;