`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