gigatron/rom/Contrib/at67/gbas/graphics/Circles.gbas
2025-01-28 19:17:01 +03:00

80 lines
1.6 KiB
Plaintext

_runtimePath_ "../runtime"
_codeRomType_ ROMv1
cls
loop:
set FG_COLOUR, rnd(0) AND &h3F
circle rnd(100) + (- 50 + 80), rnd(60) + (- 30 + 60), rnd(30) + 1
goto &loop
end
'ch0=0 : ch1=ch0 : ch2=ch1 : ch3=ch2
'
'loop:
' cx = rnd(100) + (- 50 + 80)
' cy = rnd(60) + (- 30 + 60 + 8)
' r = rnd(30) + 1
' c = rnd(0) AND &h3F
' gosub circle
' goto loop
'
'end
'
'circle:
' d = 1 - r
' x = 0
' y = r
'
' repeat
' ch0.hi = cy + y
' ch1.hi = cy - y
' ch2.hi = cy + x
' ch3.hi = cy - x
'
' a = cx + x + ch0 : poke a, c
' a = cx - x + ch0 : poke a, c
' a = cx + x + ch1 : poke a, c
' a = cx - x + ch1 : poke a, c
' a = cx + y + ch2 : poke a, c
' a = cx - y + ch2 : poke a, c
' a = cx + y + ch3 : poke a, c
' a = cx - y + ch3 : poke a, c
'
' if d &&< 0
' d = d + (x LSL 2) + 3
' else
' d = d + ((x - y) LSL 2) + 5
' y = y - 1
' endif
'
' inc x
' until x &> y
'return
'circle:
' d = r
' x = r
' y = 0
'
' repeat
' ch0.hi = cy + y
' ch1.hi = cy - y
' ch2.hi = cy + x
' ch3.hi = cy - x
'
' a = cx + x + ch0 : poke a, c
' a = cx - x + ch0 : poke a, c
' a = cx + x + ch1 : poke a, c
' a = cx - x + ch1 : poke a, c
' a = cx + y + ch2 : poke a, c
' a = cx - y + ch2 : poke a, c
' a = cx + y + ch3 : poke a, c
' a = cx - y + ch3 : poke a, c
'
' inc y
' d = d - y
' if d &&< 0 then x = x - 1 : d = d + x
' until y &>= x
'return