Something I wrote way back in the day. One of my first things I think, tis why the code is structured so inefficientlly.
+ Code Snippetrandomize timer()
REM VARIABLES
depth#=400
screenwidth#=800
screenheight#=600
color as dword
color = rgb(205,255,255)
newColorDelayAmount as integer = 3000
newColorDelay as integer
total2=40
dim x2#(total2)
dim y2#(total2)
dim a2#(total2)
x2#=rnd(screenwidth#)
y2#=rnd(screenheight#)
f3=rnd(1)
f4=rnd(1)
total3=total2
dim x3#(total3)
dim y3#(total3)
dim a3#(total3)
x3#=rnd(screenwidth#)
y3#=rnd(screenheight#)
f5=rnd(1)
f6=rnd(1)
REM VARIABLES CALCULATIONS
width#=(depth#/10)*16
height#=(depth#/10)*12
even#=screenwidth#/1.6
prop#=depth#/even#
REM SETUP
set display mode screenwidth#,screenheight#,32
position camera width#/2,height#/-2,0
sync on
autocam off
hide mouse
backdrop on
`color backdrop 0
REM OBJECTS
for t=1 to total2
make object plain t+100,100,20
color object t+100,rgb(0,0,(total-t)*6)
ghost object on t+100
next t
for t=1 to total3
make object plain t+200,100,20
color object t+200,rgb(0,(total-t)*6,0)
ghost object on t+200
next t
sync rate 60
DO
a2#(1)=wrapvalue(a2#(1)-4)
a3#(1)=wrapvalue(a3#(1)+6)
if newColorDelay + newColorDelayAmount < timer()
tr = rnd(255)
tg = rnd(255)
tb = rnd(255)
newColorDelay = timer()
endif
color = getFadedValue(cr,cg,cb,tr,tg,tb)
ink color,0
cr = rgbr(color)
cg = rgbg(color)
cb = rgbb(color)
gosub get_new_positions_blue
gosub get_new_positions_green
for t=1 to total2
position object t+100,x2#(t),y2#(t),depth#
ttr=cr-(t-1)*6
ttg=cg-(t-1)*6
ttb=cb-(t-1)*6
if ttr<0 then ttr=0
if ttg<0 then ttg=0
if ttb<0 then ttb=0
color object t+100, rgb(ttr,ttg,ttb)
zrotate object t+100, a2#(t)
position object t+200,x3#(t),y3#(t),depth#
color object t+200, rgb(ttr,ttg,ttb)
`color object t+200,color
zrotate object t+200, a3#(t)
next t
sync
loop
get_new_positions_blue:
for t=total2 to 2 step -1
x2#(t)=x2#(t-1)
next t
for t=total2 to 2 step -1
y2#(t)=y2#(t-1)
next t
for t=total2 to 2 step -1
a2#(t)=a2#(t-1)
next t
if f3=1 then inc x2#,9
if f3=0 then dec x2#,9
if x2#>800 then f3=0
if x2#<0 then f3=1
if f4=1 then inc y2#,9
if f4=0 then dec y2#,9
if y2#>600 then f4=0
if y2#<0 then f4=1
x2#(1)=x2#*prop#
y2#(1)=y2#*prop#*-1
RETURN
get_new_positions_green:
for t=total3 to 2 step -1
x3#(t)=x3#(t-1)
next t
for t=total3 to 2 step -1
y3#(t)=y3#(t-1)
next t
for t=total3 to 2 step -1
a3#(t)=a3#(t-1)
next t
if f5=1 then inc x3#,6
if f5=0 then dec x3#,6
if x3#>800 then f5=0
if x3#<0 then f5=1
if f6=1 then inc y3#,6
if f6=0 then dec y3#,6
if y3#>600 then f6=0
if y3#<0 then f6=1
x3#(1)=x3#*prop#
y3#(1)=y3#*prop#*-1
RETURN
function getFadedValue(currentR,currentG,currentB,targetR, targetG, targetB) as dword
if currentR > targetR then dec currentR,1
if currentR < targetR then inc currentR,1
if currentG > targetG then dec currentG,1
if currentG < targetG then inc currentG,1
if currentB > targetB then dec currentB,1
if currentB < targetB then inc currentB,1
color = rgb(currentR, currentB, currentB)
endfunction color