From b7b13e20d14ac51f8d0d4f1ec72787e112f2dd5c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 29 Sep 2021 22:49:35 -0400 Subject: [PATCH] Single column blits should use both masks. --- Machines/Amiga/Blitter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Machines/Amiga/Blitter.cpp b/Machines/Amiga/Blitter.cpp index 4a63254bd..3191e647e 100644 --- a/Machines/Amiga/Blitter.cpp +++ b/Machines/Amiga/Blitter.cpp @@ -152,6 +152,8 @@ bool Blitter::advance() { while(height_--) { if(draw_) { + // TODO: patterned lines. Unclear what to do with the bit that comes out of b. + // Probably extend it to a full word? c_ = ram_[pointer_[3] & ram_mask_]; ram_[pointer_[3] & ram_mask_] = apply_minterm(a_ >> shifts_[0], b_, c_, minterms_); @@ -202,10 +204,6 @@ bool Blitter::advance() { // Copy mode. printf("!!! Copy [%d %d%d%d] %08x\n", int32_t(direction_), inclusive_fill_, exclusive_fill_, fill_carry_, pointer_[3]); - if(pointer_[3] == 0x0008ad2) { - printf(""); - } - // Quick hack: do the entire action atomically. Isn't life fabulous? for(int y = 0; y < height_; y++) { for(int x = 0; x < width_; x++) { @@ -227,7 +225,9 @@ bool Blitter::advance() { } if(channel_enables_[3]) { - const uint16_t a_mask = (x == 0) ? a_mask_[0] : ((x == width_ - 1) ? a_mask_[1] : 0xffff); + uint16_t a_mask = 0xffff; + if(x == 0) a_mask &= a_mask_[0]; + if(x == width_ - 1) a_mask &= a_mask_[1]; ram_[pointer_[3] & ram_mask_] = apply_minterm(