diff --git a/Machines/Amiga/Copper.cpp b/Machines/Amiga/Copper.cpp index d53c0beb1..01d6b30e9 100644 --- a/Machines/Amiga/Copper.cpp +++ b/Machines/Amiga/Copper.cpp @@ -21,10 +21,12 @@ using namespace Amiga; namespace { bool satisfies_raster(uint16_t position, uint16_t blitter_status, uint16_t *instruction) { + // Return immediately if: (i) wait-for-Blitter is not disabled; and (ii) the Blitter is busy. + if(!(instruction[1] & 0x8000) && (blitter_status & 0x4000)) return false; + + // Otherwise, test the raster position against the instruction's value and mask. const uint16_t mask = 0x8000 | (instruction[1] & 0x7ffe); - return - (position & mask) >= (instruction[0] & mask) && - (!(blitter_status & 0x4000) || (instruction[1] & 0x8000)); + return (position & mask) >= (instruction[0] & mask); } }