I changed it to allow easier control:
set display mode 640,480,16 : sync on : sync rate 30 : autocam off : make object sphere 50000,4 : scale object 50000,100,100,200 : particle_nbr=360 : make matrix 1,360,360,10,10 : randomize matrix 1,25 : update matrix 1 : position camera 150,150,150 : point camera 0,0,0 : color backdrop 0
FOR sizey=100 to 50 step -1 : ink rgb((255/50)*(100-sizey),0,0),0 : box 0,100-sizey/2,200,100+sizey/2 : NEXT sizey : FOR sizey=50 to 0 step -1 : ink rgb(255,(255/50)*(50-rayon),(255/50)*(50-rayon)),0 : box 0,100-sizey/2,200,100+sizey/2 : NEXT sizey : get image 1,0,0,200,200,1 : make object cube 499,1 : position object 499,5000,5000,5000 : make object box 5000,360,360,360 : set object wireframe 5000,1
FOR a=1 to particle_nbr : make object plain a,12,12 : texture object a,1 : set object transparency a,4 : ghost object on a : set object light a,0 : if a MOD 3=0 : make object sphere 499+a/3,10*3 : position object 499+a/3,rnd(360),30+rnd(70),rnd(360) : color object 499+a/3,rgb(rnd(360),rnd(360),rnd(360)) : endif : NEXT a
DO : particle=wrapvalue(particle+1) : position object particle+1,object position x(50000),object position y(50000),object position z(50000) : move object 50000,spacekey()*2+2 : inc yang#,mousemovex() : inc xang#,mousemovey() : xang# = wrapvalue(xang#) : yang# = wrapvalue(yang#) : rotate object 50000,xang#,yang#,0 : position object 50000,wrapvalue(object position x(50000)),wrapvalue(object position y(50000)),wrapvalue(object position z(50000))
point object particle+1,object position x(50000),object position y(50000),object position z(50000) : EZro_Set object angle x(particle+1),object angle y(particle+1),object angle z(particle+1) : EZro_LX 90 : EZro_LZ 90 : ax#=EZro_GetX() : ay#=EZro_GetY() : az#=EZro_GetZ() : rotate object particle+1,ax#,ay#,az#
move object 50000,-100 : move object up 50000,20 : position camera object position x(50000),object position y(50000),object position z(50000) : move object down 50000,20 : move object 50000,100 : set camera to object orientation 50000 : pitch camera down 18 : FOR a=1 to 360 : if a MOD 3=0 and (object position x(50000)-object position x(499+a/3))^2+(object position y(50000)-object position y(499+a/3))^2+(object position z(50000)-object position z(499+a/3))^2<(object size x(500)/2)^2 : position object 499+a/3,rnd(360),30+rnd(70),rnd(360) : score=score+1 : endif : NEXT a
text 5,5,"SCORE : "+str$(score) : sync : LOOP
It should now be simple to control