From 558171d949725cd3abd0e9b14e51d1b46c92b6ca Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Mon, 4 Nov 2019 20:37:38 -0500 Subject: [PATCH] GBHawk: Fix a regression --- BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs | 6 +++--- .../Consoles/Nintendo/GBHawk/GBC_PPU_GB.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs index 989ff73d3b..59fa917b3f 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs @@ -126,20 +126,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk LCDC = value; break; case 0xFF41: // STAT - // note that their is no stat interrupt bug in GBC + // note that their is no stat interrupt bug in GBC STAT = (byte)((value & 0xF8) | (STAT & 7) | 0x80); - if (((STAT & 3) == 0) && STAT.Bit(3)) { HBL_INT = true; } else { HBL_INT = false; } if (((STAT & 3) == 1) && STAT.Bit(4)) { VBL_INT = true; } else { VBL_INT = false; } // OAM not triggered? // if (((STAT & 3) == 2) && STAT.Bit(5)) { OAM_INT = true; } else { OAM_INT = false; } - if (value.Bit(6)) + if (value.Bit(6) && LCDC.Bit(7)) { if (LY == LYC) { LYC_INT = true; } else { LYC_INT = false; } } + if (!STAT.Bit(6)) { LYC_INT = false; } break; case 0xFF42: // SCY scroll_y = value; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU_GB.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU_GB.cs index 292e6bb50f..886d0738f7 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU_GB.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU_GB.cs @@ -133,17 +133,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk // note that their is no stat interrupt bug in GBC STAT = (byte)((value & 0xF8) | (STAT & 7) | 0x80); - if (((STAT & 3) == 0) && STAT.Bit(3)) { HBL_INT = true; } else { HBL_INT = false; } if (((STAT & 3) == 1) && STAT.Bit(4)) { VBL_INT = true; } else { VBL_INT = false; } // OAM not triggered? // if (((STAT & 3) == 2) && STAT.Bit(5)) { OAM_INT = true; } else { OAM_INT = false; } - if (value.Bit(6)) + if (value.Bit(6) && LCDC.Bit(7)) { if (LY == LYC) { LYC_INT = true; } else { LYC_INT = false; } } + if (!STAT.Bit(6)) { LYC_INT = false; } break; case 0xFF42: // SCY scroll_y = value;