From faeca8f2551a01abbcbc0e790e94555300d796eb Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 14 Jan 2025 11:40:22 +0100 Subject: amiga/agnus_copper.cpp: 0x5c is actual h blank minimum position --- src/mame/amiga/agnus_copper.cpp | 7 ++++--- src/mame/amiga/amiga_m.cpp | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/mame/amiga/agnus_copper.cpp b/src/mame/amiga/agnus_copper.cpp index a4c74d4e802..0af24767947 100644 --- a/src/mame/amiga/agnus_copper.cpp +++ b/src/mame/amiga/agnus_copper.cpp @@ -324,8 +324,9 @@ int agnus_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy, return xpos; } // delay write to the next available DMA slot if not in blanking area - // - bchvolly (title), suprfrog & abreed (bottom playfield rows) - const bool horizontal_blank = xpos < 0x47; + // - suprfrog & abreed (bottom playfield rows). + // - beast, biochall and cd32 bios wants this to be 0x5c + const bool horizontal_blank = xpos <= 0x5c; const int move_offset = horizontal_blank ? 0 : std::max(num_planes - 4, 0); m_pending_offset = word0; @@ -358,7 +359,7 @@ int agnus_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy, /* handle a wait */ if ((word1 & 1) == 0) { - const bool horizontal_blank = xpos < 0x47; + const bool horizontal_blank = xpos <= 0x5c; const int wait_offset = horizontal_blank ? 0 : std::max(num_planes - 4, 0) + 1; LOGINST(" WAIT %04x & %04x (currently %04x, num planes %d +%d)\n", diff --git a/src/mame/amiga/amiga_m.cpp b/src/mame/amiga/amiga_m.cpp index e0e2118c7ae..2f59fc4bbba 100644 --- a/src/mame/amiga/amiga_m.cpp +++ b/src/mame/amiga/amiga_m.cpp @@ -1241,6 +1241,11 @@ void amiga_state::aga_map(address_map &map) void amiga_state::custom_chip_reset() { + // TODO: not entirely correct + // - OCS Denise returns open bus + // - ECS Denise should return 0xff << 8 | ID + // - AGA Lisa bits 15-10 are jumper selectable (at least on A4000), returns 0xfc << 8 | ID + // cfr. https://eab.abime.net/showpost.php?p=627136&postcount=59 CUSTOM_REG(REG_DENISEID) = m_denise_id; CUSTOM_REG(REG_VPOSR) = m_agnus_id << 8; CUSTOM_REG(REG_DDFSTRT) = 0x18; @@ -1367,7 +1372,8 @@ uint16_t amiga_state::custom_chip_r(offs_t offset) temp = CUSTOM_REG(REG_CLXDAT); if (!machine().side_effects_disabled()) CUSTOM_REG(REG_CLXDAT) = 0; - // - "Barney [& Freddy] Mouse" requires bit 15 high all the time + // Undocumented bit 15 always high + // - "Barney [& Freddy] Mouse" will always detect a player-enemy hit out of iframe cycles otherwise return temp | (1 << 15); case REG_DENISEID: -- cgit v1.2.3