From 9c7a8fdb1bf2e2fdf09aa2f0831ff406107ff271 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Wed, 26 Feb 2020 22:24:08 +0200 Subject: [PATCH] WY is tested every cycle --- Core/display.c | 1 + Core/memory.c | 5 ++++- Core/sm83_cpu.c | 9 ++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Core/display.c b/Core/display.c index c9ca8ce..908c551 100644 --- a/Core/display.c +++ b/Core/display.c @@ -382,6 +382,7 @@ void GB_lcd_off(GB_gameboy_t *gb) gb->ly_for_comparison = 0; gb->accessed_oam_row = -1; + gb->wy_triggered = false; } static void add_object_from_index(GB_gameboy_t *gb, unsigned index) diff --git a/Core/memory.c b/Core/memory.c index e1dd2d1..631b71f 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -645,6 +645,10 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) if (addr < 0xFF80) { /* Hardware registers */ switch (addr & 0xFF) { + case GB_IO_WY: + if (value == gb->current_line) { + gb->wy_triggered = true; + } case GB_IO_WX: case GB_IO_IF: case GB_IO_SCX: @@ -652,7 +656,6 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) case GB_IO_BGP: case GB_IO_OBP0: case GB_IO_OBP1: - case GB_IO_WY: case GB_IO_SB: case GB_IO_UNKNOWN2: case GB_IO_UNKNOWN3: diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 49115c7..b0e28f4 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -31,7 +31,6 @@ static const GB_conflict_t cgb_conflict_map[0x80] = { [GB_IO_OBP0] = GB_CONFLICT_PALETTE_CGB, [GB_IO_OBP1] = GB_CONFLICT_PALETTE_CGB, - /* Todo: most values not verified, and probably differ between revisions */ }; @@ -46,9 +45,9 @@ static const GB_conflict_t dmg_conflict_map[0x80] = { [GB_IO_BGP] = GB_CONFLICT_PALETTE_DMG, [GB_IO_OBP0] = GB_CONFLICT_PALETTE_DMG, [GB_IO_OBP1] = GB_CONFLICT_PALETTE_DMG, - + [GB_IO_WY] = GB_CONFLICT_READ_OLD, + /* Todo: these were not verified at all */ - [GB_IO_WY] = GB_CONFLICT_READ_NEW, [GB_IO_WX] = GB_CONFLICT_READ_NEW, [GB_IO_SCX] = GB_CONFLICT_READ_NEW, }; @@ -64,9 +63,9 @@ static const GB_conflict_t sgb_conflict_map[0x80] = { [GB_IO_BGP] = GB_CONFLICT_READ_NEW, [GB_IO_OBP0] = GB_CONFLICT_READ_NEW, [GB_IO_OBP1] = GB_CONFLICT_READ_NEW, - + [GB_IO_WY] = GB_CONFLICT_READ_OLD, + /* Todo: these were not verified at all */ - [GB_IO_WY] = GB_CONFLICT_READ_NEW, [GB_IO_WX] = GB_CONFLICT_READ_NEW, [GB_IO_SCX] = GB_CONFLICT_READ_NEW, };