In the style of the originals
set display mode 1680,1050,32
sync on : sync rate 60
Randomize Timer()
dim cols(6000)
dim rf(16)
dim gf(16)
dim bf(16)
rf(0)=8:gf(0)=8:bf(0)=8
rf(1)=8:gf(1)=0:bf(1)=0
rf(2)=8:gf(2)=8:bf(2)=0
rf(3)=0:gf(3)=8:bf(3)=0
rf(4)=0:gf(4)=0:bf(4)=8
rf(5)=0:gf(5)=8:bf(5)=8
rf(6)=8:gf(6)=0:bf(6)=8
k=0
y=-128
y1=0
gosub ttt
for f=0 to 832
p=point(10,f)
cols(f)=p
cols(f+832)=p
cols(f+(832*2))=p
cols(f+(832*3))=p
cols(f+(832*4))=p
cols(f+(832*5))=p
next f
m=1800*1300
dim scr(m)
a=0
for f=0 to m
scr(f)=rnd(0xffff)
next f
scr(0)=0xffffff
scr(8)=0xffffff
scr(8*1680)=0xffffff
scr(8*1680+8)=0xffffff
s=32
b=32
xy5=1680*4
xy4=1680*3
xy2=1680*2
sz2=225
st1=1
h1=255
h2=125
h3=205
h4=22
adhf=1
adh=5
cls
`````````````````````````````````
do
dec ple:if ple<0
ple=7
gosub plasma
else
gosub show2
endif
sync
loop
`````````````````````````````````````````````````
plasma:
sz2=500+rnd(5600)
st1=8
ad=0
y=0
sz=sz2
hox1:
start=st1
gog:
x3=start*1680
d1=start/2
y2=d1*1680
yy=y*1680
`x1=x2
x=1
hox:
xy=x+yy
gosub dstep
start=st1/2
x3=start*1680
d1=start/2
y2=d1*1680
sz=sz*0.94
gosub dstep
ad=4
gosub dstep
ad=1680*d1
gosub dstep
inc ad,4
gosub sstep
start=start/2
x3=start*1680
d1=start/2
y2=d1*1680
sz=sz*0.9
ad=0
gosub dstep
inc ad
gosub sstep
inc ad
gosub sstep
inc ad
gosub sstep
ad=1680*d1
gosub dstep
inc ad
gosub sstep
inc ad
gosub sstep
inc ad
gosub sstep
if sz<40 then sz=10+rnd(20)
x=x+3:if x<1677 then goto hox
y=y+1:if y<719 then goto hox1
return
`````````````````````````````````````
show2:
inc oft,8:if oft>832 then oft=oft-832
for y=5 to 510 `max as is -710 ish
yy=y*1680
for x=2 to 670 `max 1670 ish
xy=x+yy
d=scr(xy)>>4
d=d and 8191
d=d*0.65
d=d+oft
cc=cols(d)
ink cc
x1=x:y1=250+y
dot x1,y1
next x
next y
return
````````````````````````````
dstep:
`diamond step
a=scr(xy+ad)+scr(xy+start+ad)+scr(xy+x3+ad)+scr(xy+x3+start+ad)
a=a/4
b=a
scr(xy+y2+d1+ad)=a+4+rnd(sz)
``````````````````````````
sstep:
`square step
`a=scr(xy+d1+ad)+scr(xy+x3+d1+ad)+scr(xy+y2+ad)+scr(xy+x2+start+ad)
`a=a/4+rnd(sz)
c=b+1+rnd(sz)
scr(xy+d1+ad)=c
scr(xy+y2+ad)=c
scr(xy+y2+start+ad)=c
scr(xy+x3+d1+ad)=c
return
``````````````````````````
ttt:
t=32
r=0:g=0:b=0
fff:
ink rgb(r,g,b)
k=32-t
box 0,y+k,30,y+k+1
box 0,y+t+31,30,y+t+32
z=0
r=r+rf(a):if r>255 then r=0:z=1
g=g+gf(a):if g>255 then g=0:z=1
b=b+bf(a):if b>255 then b=0:z=1
dec t:if t>0 then goto fff
a=a+z:if a>6 then a=0
k=0
t=31:inc a:if a>6 then a=0:r=0:g=0:b=0
inc y,64:if y>1049 then y=y1:dec y1,4:a=0:r=0:g=0:b=0
r=0:g=0:b=0
if y-4<>y1 then goto ttt
return