diff --git a/compiler/res/prog8lib/c64/graphics.p8 b/compiler/res/prog8lib/c64/graphics.p8 index bb30e81ab..e2eaec21b 100644 --- a/compiler/res/prog8lib/c64/graphics.p8 +++ b/compiler/res/prog8lib/c64/graphics.p8 @@ -34,7 +34,6 @@ graphics { sub line(uword @zp x1, ubyte @zp y1, uword @zp x2, ubyte @zp y2) { ; Bresenham algorithm. ; This code special-cases various quadrant loops to allow simple ++ and -- operations. - ; TODO there are some slight errors at the first/last pixels in certain slopes...?? if y1>y2 { ; make sure dy is always positive to have only 4 instead of 8 special cases swap(x1, x2) @@ -62,8 +61,8 @@ graphics { dx = -dx positive_ix = false } - dx *= 2 - dy *= 2 + word @zp dx2 = dx*2 + word @zp dy2 = dy*2 internal_plotx = x1 if dx >= dy { @@ -73,10 +72,10 @@ graphics { if internal_plotx==x2 return internal_plotx++ - d += dy + d += dy2 if d > dx { y1++ - d -= dx + d -= dx2 } } } else { @@ -85,10 +84,10 @@ graphics { if internal_plotx==x2 return internal_plotx-- - d += dy + d += dy2 if d > dx { y1++ - d -= dx + d -= dx2 } } } @@ -100,10 +99,10 @@ graphics { if y1 == y2 return y1++ - d += dx + d += dx2 if d > dy { internal_plotx++ - d -= dy + d -= dy2 } } } else { @@ -112,10 +111,10 @@ graphics { if y1 == y2 return y1++ - d += dx + d += dx2 if d > dy { internal_plotx-- - d -= dy + d -= dy2 } } } diff --git a/examples/test.p8 b/examples/test.p8 index eea8e3969..bbe15a292 100644 --- a/examples/test.p8 +++ b/examples/test.p8 @@ -1,39 +1,32 @@ -%import textio +%import graphics %import floats -%import test_stack -%zeropage dontuse main { sub start() { + + graphics.enable_bitmap_mode() + uword xx - float fl - float fltotal=0.0 - ubyte ub = 22 + ubyte yy - ub = 22 - fl = ub as float - floats.print_f(fl) - txt.nl() - ub = 255 - fl = ub as float - floats.print_f(fl) - txt.nl() - xx = 123 - fl = xx as float - floats.print_f(fl) - txt.nl() - xx = 55555 - fl = xx as float - floats.print_f(fl) - txt.nl() + graphics.line(150,50,150,50) - fltotal=0.0 - for xx in 1 to 255 { - fl = xx as float - fltotal = fl * fl + for yy in 0 to 199-60 step 16 { + + for xx in 0 to 319-50 step 16 { + graphics.line(30+xx, 10+yy, 50+xx, 30+yy) + graphics.line(49+xx, 30+yy, 10+xx, 30+yy) + graphics.line(11+xx, 29+yy, 29+xx, 11+yy) + + ; triangle 2, counter-clockwise + graphics.line(30+xx, 40+yy, 10+xx, 60+yy) + graphics.line(11+xx, 60+yy, 50+xx, 60+yy) + graphics.line(49+xx, 59+yy, 31+xx,41+yy) + } } - test_stack.test() + repeat { + } } }