From 458fd58985a23210cd288cc8c988b6b8707f8c14 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Wed, 24 Aug 2016 12:18:51 -0700 Subject: [PATCH] GBA: Fix losing IRQs when CPSR I bit isn't cleared --- CHANGES | 1 + src/gba/gba.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 56c2a2284..b6755a8e4 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,7 @@ Bugfixes: - PSP2: Fix mapping/unmapping from not at 0 - Wii: Fix garbage flash at startup - VFS: Fix uninitialized varaible reading from 7z + - GBA: Fix losing IRQs when CPSR I bit isn't cleared Misc: - 3DS: Use blip_add_delta_fast for a small speed improvement - OpenGL: Log shader compilation failure diff --git a/src/gba/gba.c b/src/gba/gba.c index 4bfdfd905..ccdf28dd6 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -217,7 +217,7 @@ static void GBAProcessEvents(struct ARMCore* cpu) { gba->bus |= cpu->prefetch[1] << 16; } - if (gba->springIRQ) { + if (gba->springIRQ && !cpu->cpsr.i) { ARMRaiseIRQ(cpu); gba->springIRQ = 0; }