From 5f71ec4974343b3ab5132807f1cbdb8100724698 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 26 Jul 2024 14:04:41 +0300 Subject: [PATCH] Slightly more accurate --- Core/display.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Core/display.c b/Core/display.c index 7b2e6d4..40a7d4a 100644 --- a/Core/display.c +++ b/Core/display.c @@ -1739,7 +1739,15 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (!gb->wx_triggered && gb->wy_triggered && (gb->io_registers[GB_IO_LCDC] & GB_LCDC_WIN_ENABLE)) { bool should_activate_window = false; if (unlikely(gb->io_registers[GB_IO_WX] == 0)) { - should_activate_window = (gb->position_in_line == (uint8_t)-16 && (gb->io_registers[GB_IO_SCX] & 7)) || (gb->position_in_line == (uint8_t)-7); + if (gb->position_in_line == (uint8_t)-7) { + should_activate_window = true; + } + else if (gb->position_in_line == (uint8_t)-16 && (gb->io_registers[GB_IO_SCX] & 7)) { + should_activate_window = true; + } + else if (gb->position_in_line >= (uint8_t)-15 && gb->position_in_line <= (uint8_t)-8) { + should_activate_window = true; + } } else if (gb->io_registers[GB_IO_WX] < 166 + GB_is_cgb(gb)) { if (gb->io_registers[GB_IO_WX] == (uint8_t) (gb->position_in_line + 7)) {