Here's my variation on it.
#constant SCREENWIDTH 1024
#constant SCREENHEIGHT 768
sync on
sync rate 0
sync sleep 1
hide mouse
randomize timer()
set display mode SCREENWIDTH, SCREENHEIGHT, 32
` Generate images for each character that actually displays something (ish)
for i = 1 to 255
tw=text width(chr$(i))
if tw > 0
th=text height(chr$(i))
box 0,0,tw,th,rgb(0,0,0),rgb(0,0,0),rgb(0,0,0),rgb(0,0,0)
text 0, 0, chr$(i)
get image i, 0, 0, tw, th
LastValidImage = i
endif
next
cls
` Disable backsave
sprite 1, 0, 0, LastValidImage
set sprite 1, 0, 1
` Generate initial stars
starnum = 300
speed = 1
dim starx#(starnum)
dim stary#(starnum)
dim starangle(starnum)
dim starvalue(starnum)
dim starcolor(starnum)
for i = 1 to starnum
GenerateStar(i)
next i
` Spread the stars out a little
for f = 1 to starnum
starx#(f) = starx#(f)+sin(starangle(f))*f*2
stary#(f) = stary#(f)-cos(starangle(f))*f*2
next f
`Create slightly transparent black box
make memblock 1,140
write memblock dword 1,0,1
write memblock dword 1,4,1
write memblock dword 1,8,32
write memblock dword 1,12,rgb(0,0,0)
write memblock byte 1,15,10
make image from memblock LastValidImage+1,1
delete memblock 1
sprite starnum+1,0,0,LastValidImage+1
set sprite starnum+1,0,1
size sprite starnum+1,SCREENWIDTH,SCREENHEIGHT
do
for b = 1 to starnum
Dis = sqrt((starx#(b)-(SCREENWIDTH/2.0))^2+(stary#(b)-(SCREENHEIGHT/2.0))^2)
starx#(b) = starx#(b)+sin(starangle(b))*speed*Dis/100.0
stary#(b) = stary#(b)-cos(starangle(b))*speed*Dis/100.0
if starx#(b) < 0 OR starx#(b) > screen width() OR stary#(b) < 0 OR stary#(b) > screen height()
GenerateStar(b)
Dis = sqrt((starx#(b)-(SCREENWIDTH/2.0))^2+(stary#(b)-(SCREENHEIGHT/2.0))^2) `<- Distance is needed later, so the value has to be updated
endif
` Draw the text as a sprite
sprite b, starx#(b),stary#(b),starvalue(b)
` Adjust the colour from pure white to a shade of green
set sprite diffuse b, 0, starcolor(b), 0
`change sprite size
s# = sqrt(Dis)+1
size sprite b, s#,s#
next b
paste sprite starnum+1,0,0
sync
loop
function GenerateStar(b)
` Generate a position slightly off-centre
repeat
starx#(b) = (screen width()/2)+rnd(10)-5
stary#(b) = (screen height()/2)+rnd(10)-5
until starx#(b)<>(SCREENWIDTH/2.0) or stary#(b)<>(SCREENHEIGHT/2.0)
` Travelling angle
starangle(b) = rnd(359)
` Pick an image that actually exists
repeat
starvalue(b) = rnd(255)+1
until image exist( starvalue(b) ) = 1
` Shade of green
starcolor(b) = rnd(200)+55
endfunction