`screen capture adapted from code by Jukuma
SET WINDOW LAYOUT 0, 0, 0
sync on
sync rate 100
hide mouse
 
#CONSTANT user32 = 1
#CONSTANT gdi32  = 2
 
LOAD DLL "user32.dll", user32
LOAD DLL "gdi32.dll", gdi32
 
HIDE WINDOW
 
  hDsk  = CALL DLL(user32, "GetDesktopWindow")
  hDC   = CALL DLL(user32, "GetWindowDC", hDsk)
  DskW  = CALL DLL(gdi32, "GetDeviceCaps", hDC, 8)
  DskH  = CALL DLL(gdi32, "GetDeviceCaps", hDC, 10)
 
set display mode DskW, DskH, 32
CC as dword
 
create bitmap 2, 1024, 768
 
set current bitmap 2
lock pixels
 for y=1 to DskH
 for x=1 to DskW
   CC = CALL DLL(gdi32, "GetPixel", hDC, X, Y)
   DOT X, Y, RGB(RGBB(CC), RGBG(CC), RGBR(CC))
 next x
 next y
unlock pixels
 
set current bitmap 0
cls
 
CALL DLL user32, "ReleaseDC", hDsk, hDC
 
DELETE DLL user32
DELETE DLL gdi32
 
RESTORE WINDOW
`end screen capture
 
 
create bitmap 1, 1024, 768
 
 
#constant numdots   5000
#constant itterations 20
#constant times 12
 
 
sync on
sync rate 100
 
type mytype
  x as float
  y as float
  endx as integer
  endy as integer
  itt as integer
endtype
 
dim dots(numdots) as mytype
dim inuse(numdots) as integer
dim num(times) as integer
 
 
for d=0 to numdots
  inuse(d) =1
next d
 
do
  copy bitmap 1, 0
  x=mousex()
  y=mousey()
 
for a=1 to times
  num(a)=getfree()
  if num(a)>=0
    inuse(num(a))=1
    dots(num(a)).x=x+cos(rnd(360))*rnd(200)
    dots(num(a)).y=y+sin(rnd(360))*rnd(200)
    dots(num(a)).endx=x+rnd(20)-10
    dots(num(a)).endy=y+rnd(20)-10
    dots(num(a)).itt=1
  endif
next a
 
set current bitmap 1
  for d=1 to numdots
    if inuse(d)=1
 
      dots(d).x=curvevalue(dots(d).endx, dots(d).x, itterations)
      dots(d).y=curvevalue(dots(d).endy, dots(d).y, itterations)
      inc dots(d).itt
      if abs(dots(d).x-dots(d).endx)<.5 and abs(dots(d).y-dots(d).endy)<.5
        inuse(d)=0
      copy bitmap 2,dots(d).endx-5, dots(d).endy-5,dots(d).endx+5,dots(d).endy+5, 1, dots(d).endx-5, dots(d).endy-5,dots(d).endx+5,dots(d).endy+5
 
      endif
    endif
  next d
 
set current bitmap 0
  for d=1 to numdots
    if inuse(d)=1
      copy bitmap 2,dots(d).endx-5, dots(d).endy-5,dots(d).endx+5,dots(d).endy+5, 0, dots(d).x-5, dots(d).y-5,dots(d).x+5,dots(d).y+5
 
    endif
  next d
 
  sync
loop
 
 
 
function getfree()
  free=-1
    for x=0 to numdots
      if inuse(x)=0 then free=x
    next x
endfunction free