diff options
author | 2025-01-14 11:40:22 +0100 | |
---|---|---|
committer | 2025-01-14 11:40:31 +0100 | |
commit | faeca8f2551a01abbcbc0e790e94555300d796eb (patch) | |
tree | 757ba651d15b0037b1141b2cdc658a6dd90b9549 | |
parent | ed86f1d725cf77247f0b37c1c7e58fe2b82cad59 (diff) |
amiga/agnus_copper.cpp: 0x5c is actual h blank minimum position
-rw-r--r-- | src/mame/amiga/agnus_copper.cpp | 7 | ||||
-rw-r--r-- | 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: |