amiga/amiga_m.cpp: CLXDAT bit 15 is always high

This commit is contained in:
angelosa 2025-01-13 11:37:23 +01:00
parent aa0c4f914f
commit 4dab319804
2 changed files with 7 additions and 4 deletions

View File

@ -312,13 +312,14 @@ int agnus_copper_device::execute_next(int xpos, int ypos, bool is_blitter_busy,
if (word0 >= m_cdang_setting)
{
// SKIP applies to valid MOVEs only
// - apocalyps (gameplay)
// - apocalyps (gameplay, chain of SKIPs & WAIT)
// - rbisland (loading screen at least, tries to SKIP a CDANG MOVE)
if (m_state_skipping)
{
LOGINST(" (Ignored)\n");
m_state_skipping = false;
// TODO: verify timings
// may depend on num of planes enabled (move_offset) or opcode fetch above is enough.
// may depend on num of planes enabled (move_offset) or opcode fetch above is enough.
xpos += COPPER_CYCLES_TO_PIXELS(2);
return xpos;
}

View File

@ -1365,8 +1365,10 @@ uint16_t amiga_state::custom_chip_r(offs_t offset)
case REG_CLXDAT:
temp = CUSTOM_REG(REG_CLXDAT);
CUSTOM_REG(REG_CLXDAT) = 0;
return temp;
if (!machine().side_effects_disabled())
CUSTOM_REG(REG_CLXDAT) = 0;
// - "Barney [& Freddy] Mouse" requires bit 15 high all the time
return temp | (1 << 15);
case REG_DENISEID:
return CUSTOM_REG(REG_DENISEID);