From 3c9c3c01c0e525178846eefeb6155d09af0cf7ac Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 3 Mar 2019 18:07:10 -0800 Subject: [PATCH] GB I/O: Alternate fix for #1329 that doesn't break tests --- src/gb/gb.c | 2 +- src/gb/io.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gb/gb.c b/src/gb/gb.c index 038401c83..fc3c174b0 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -630,7 +630,7 @@ void GBDetectModel(struct GB* gb) { } void GBUpdateIRQs(struct GB* gb) { - int irqs = gb->memory.ie & gb->memory.io[REG_IF]; + int irqs = gb->memory.ie & gb->memory.io[REG_IF] & 0x1F; if (!irqs) { gb->cpu->irqPending = false; return; diff --git a/src/gb/io.c b/src/gb/io.c index c5f138b60..84b3a35bc 100644 --- a/src/gb/io.c +++ b/src/gb/io.c @@ -465,7 +465,7 @@ void GBIOWrite(struct GB* gb, unsigned address, uint8_t value) { } break; case REG_IE: - gb->memory.ie = value & 0x1F; + gb->memory.ie = value; GBUpdateIRQs(gb); return; default: @@ -578,7 +578,7 @@ uint8_t GBIORead(struct GB* gb, unsigned address) { case REG_JOYP: return _readKeysFiltered(gb); case REG_IE: - return gb->memory.ie | 0xE0; + return gb->memory.ie; case REG_WAVE_0: case REG_WAVE_1: case REG_WAVE_2: