From cb460de94d0694bd80e1227bb93895c9537fc55c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 27 Sep 2021 22:06:00 -0400 Subject: [PATCH] Makes bad first attempt at a Bresenham inner loop. --- Machines/Amiga/Blitter.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Machines/Amiga/Blitter.cpp b/Machines/Amiga/Blitter.cpp index 10c88cf47..c5e45271f 100644 --- a/Machines/Amiga/Blitter.cpp +++ b/Machines/Amiga/Blitter.cpp @@ -143,10 +143,35 @@ bool Blitter::advance() { int error = int(pointer_[0]) * line_sign_; while(height_--) { - ram_[pointer_[3] & ram_mask_] = 0x8000 >> shifts_[0]; - // Assumed for now: quadrant 0. + // plot(x, y) + c_ = ram_[pointer_[3] & ram_mask_]; + ram_[pointer_[3] & ram_mask_] = + apply_minterm( + a_ >> shifts_[0], + 0xffff, // TODO: b_ & (0x8000 >> shifts_[1]) but not that. + c_, minterms_); + shifts_[1] = (shifts_[1] + 1) & 15; + // Assumed for now: direction 0. + pointer_[3] += modulos_[2]; + if(error > 0) { + ++shifts_[0]; + if(shifts_[0] == 16) { + shifts_[0] = 0; + ++pointer_[3]; + } + + error -= modulos_[0] - modulos_[1]; + } + error += modulos_[1]; + + // plot(x, y) + // if error > 0 { + // ++y + // error -= 2*dx + // } + // d += 2*dy } // ram_[pointer_[3] & ram_mask_] = 0xffff; } else {