From 7aa1a497f7ca5282da71976f6245f8fd915b059f Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Tue, 30 Jun 2020 17:15:00 -0400 Subject: [PATCH] GBHawk: only latch new window y value if greater then current line (fixes pokemon crystal artifact) --- .../Consoles/Nintendo/GBHawk/GBC_GB_PPU.cs | 2 +- .../Consoles/Nintendo/GBHawk/GBC_PPU.cs | 11 ++--------- .../Consoles/Nintendo/GBHawk/GB_PPU.cs | 4 ++-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_GB_PPU.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_GB_PPU.cs index 6e2cf65d8b..eee91cc4e0 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_GB_PPU.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_GB_PPU.cs @@ -189,7 +189,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk break; case 0xFF4A: // WY window_y = value; - if (!window_started) + if (!window_started && (!LCDC.Bit(7) || (value > LY))) { window_y_latch = window_y; window_y_tile = 0; diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs index 16ed4e8651..2b94918079 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBC_PPU.cs @@ -185,7 +185,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk break; case 0xFF4A: // WY window_y = value; - if (!window_started) + if (!window_started && (!LCDC.Bit(7) || (value > LY))) { window_y_latch = window_y; window_y_tile = 0; @@ -732,14 +732,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk if (stat_line && !stat_line_old) { if (Core.REG_FFFF.Bit(1)) { Core.cpu.FlagI = true; } - Core.REG_FF0F |= 0x02; - - //if (LY == 46) - //{ - //Console.Write(VBL_INT + " " + LYC_INT + " " + HBL_INT + " " + OAM_INT + " " + LY + " "); - //Console.Write(render_offset + " " + scroll_x + " " + total_counter + " "); - //Console.WriteLine(STAT + " " + cycle + " " + Core.cpu.TotalExecutedCycles); - //} + Core.REG_FF0F |= 0x02; } stat_line_old = stat_line; diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GB_PPU.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GB_PPU.cs index 68cf45bc3f..ef144ac24e 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GB_PPU.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GB_PPU.cs @@ -120,8 +120,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk break; case 0xFF4A: // WY window_y = value; - if (!window_started) - { + if (!window_started && (!LCDC.Bit(7) || (value > LY))) + { window_y_latch = window_y; window_y_tile = 0; window_y_tile_inc = 0;