From a794890f86a971d0896dcae36f02f40fe21e7453 Mon Sep 17 00:00:00 2001 From: squall-leonhart Date: Tue, 23 Sep 2008 23:56:02 +0000 Subject: [PATCH] applied Chrono GB-Multiple-LCDC-interrupt-fix --- src/dmg/GB.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/dmg/GB.cpp b/src/dmg/GB.cpp index 7f86e579..58ff3664 100644 --- a/src/dmg/GB.cpp +++ b/src/dmg/GB.cpp @@ -1091,20 +1091,10 @@ void gbWriteMemory(register u16 address, register u8 value) // (value & 0x7c); gbMemory[0xff41] = register_STAT = (value & 0xf8) | (register_STAT & 0x07); // fix ? // GB bug from Devrs FAQ - // Corrected : it happens if Lcd Mode<2, but also if LY == LYC whatever - // Lcd Mode is, and if !gbInt48Signal in all cases. The screen being off - // doesn't matter (the bug will still happen). - // That fixes 'Satoru Nakajima - F-1 Hero' crash bug. + // proper fix + gbInt48Signal &= ((register_STAT>>3) & 0xF); - if((gbHardware & 5) && (((!gbInt48Signal) && (gbLcdMode<2) && (register_LCDC & 0x80)) || - (register_LY == register_LYC))) - { - gbMemory[0xff0f] = register_IF |=2; - } - - gbInt48Signal &= ((register_STAT>>3) & 0xF); - - if((register_LCDC & 0x80)) { + if((register_LCDC & 0x80)) { if ((register_STAT & 0x08) && (gbLcdMode == 0)) { if (!gbInt48Signal)