56 lines
1.2 KiB
Plaintext
56 lines
1.2 KiB
Plaintext
_runtimePath_ "../runtime"
|
|
_codeRomType_ ROMv1
|
|
|
|
' draw random ellipses, not mathematically correct because of cheat avoiding overflows!
|
|
|
|
cls
|
|
|
|
loop:
|
|
color = rnd(0) AND &h3F
|
|
a = rnd(39) + 1 : b = rnd(39) + 1
|
|
if a &&> b
|
|
t = a
|
|
else
|
|
t = b
|
|
endif
|
|
mx = rnd(160 - (t LSL 1)) + t
|
|
my = rnd(120 - (t LSL 1)) + t
|
|
gosub ellipse
|
|
goto loop
|
|
|
|
end
|
|
|
|
|
|
ellipse:
|
|
pixel.lo = mx : pixel.hi = my + 8
|
|
poke pixel + a, color
|
|
poke pixel - a, color
|
|
|
|
mx1 = mx - a : my1 = my
|
|
mx2 = mx + a : my2 = my
|
|
|
|
' should be aa=a*a and bb=b*b, but we're avoiding overflows as we only want pretty pixels
|
|
aa = a : dx = aa LSL 1
|
|
bb = b : dy = bb LSL 1
|
|
r = a * bb : rx = r LSL 1
|
|
ry = 0
|
|
x = a
|
|
|
|
while x &> 0
|
|
if r &> 0
|
|
inc my1 : dec my2
|
|
ry = ry + dx : r = r - ry
|
|
else
|
|
dec x : inc mx1 : dec mx2
|
|
rx = rx - dy : r = rx + r
|
|
endif
|
|
|
|
pixel.hi = my1 + 8
|
|
pixel.lo = mx1 : poke pixel, color
|
|
pixel.lo = mx2 : poke pixel, color
|
|
|
|
pixel.hi = my2 + 8
|
|
pixel.lo = mx1 : poke pixel, color
|
|
pixel.lo = mx2 : poke pixel, color
|
|
wend
|
|
return |