You meant
http://ezzers.tripod.com/20lines.txt for the code.
or:
dim ht(50,50):hide mouse:sync on:randomize timer():make matrix 1,50000,50000,50,50
autocam off : dim spectx(1000) : dim specty(1000) : for lp = 1 to 7500
if lp < 2501 then col = rnd(255) else col = int((ht((lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50))) + ht(1+(lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50))) + ht((lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),1+(int(((lp-int(lp/2500)*2500))/50))) + ht(-1+(lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50))) + ht((lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),-1+(int(((lp-int(lp/2500)*2500))/50))))/5)
ht((lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),int(((lp-int(lp/2500)*2500))/50)) = col:if (lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50) > 1 and (lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50) < 49 and (int(((lp-int(lp/2500)*2500))/50)) > 1 and (int(((lp-int(lp/2500)*2500))/50)) < 49 then set matrix height 1,(lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50)),ht((lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50))) * 10 else set matrix height 1,(lp-(int(lp/2500)*2500))-(int((lp-(int(lp/2500)*2500))/50)*50),(int(((lp-int(lp/2500)*2500))/50)),10000
next lp
color backdrop rgb(128,128,128):fog on:fog color rgb(128,128,128):fog distance 25000:set camera range 1,25000:position camera camera position x(),camera position y(),camera position z() + 20000
load image "grass2.bmp",1:prepare matrix texture 1,1,1,1:update matrix 1
for lev = 50 to 1000 step 50 : randomize timer() : for lp = 1 to lev : spectx(lp) = rnd(30000) + 10000 : specty(lp) = rnd(30000) + 10000
if spectx(lp) < 10000 then spectx(lp) = 10000 else if spectx(lp) > 45000 then spectx(lp) = 45000 : if specty(lp) < 10000 then specty(lp) = 10000 else if specty(lp) > 45000 then specty(lp) = 45000 : if specty(lp) < 10000 then end
make object sphere 100 + lp,50 : position object 100+lp,spectx(lp),get ground height(1,spectx(lp),specty(lp)) + 20,specty(lp) : next lp : sl = lev : tim = timer()
do
if upkey() then move camera 10 else if downkey() then move camera -5 else if leftkey() then rotate camera camera angle x(), wrapvalue(camera angle y() - 5), camera angle z() else if rightkey() then rotate camera camera angle x(), wrapvalue(camera angle y() + 5), camera angle z()
if mouseclick() > 0 : make object cube 1,10 : scale object 1, 100,100,50000 : color object 1, rgb(0,0,128) : set object to camera orientation 1
position object 1, camera position x(), camera position y() - 10, camera position z() : if object collision(1,0) > 100 : delete object object collision (1,0) : sl = sl - 1 : if sl = 0 :
center text 320,240,"Level " + str$(lev/50) + " Complete!" : wait 5000 : delete object 1 : exit : endif
endif : sync : delete object 1 : endif : rotate camera 0,wrapvalue(camera angle x() + mousemovey()),wrapvalue(camera angle y() + mousemovex() / 2),camera angle z()
position camera camera position x(), get ground height(1,camera position x(), camera position z()) + 50, camera position z()
if get ground height(1,newxvalue(camera position x(),camera angle y(),50),newzvalue(camera position z(),camera angle y(),50)) > get ground height(1, camera position x(),camera position z()) + 100 then move camera -5
text 1,1, "Balls remaining: " + str$(sl) : text 1,20, "Time remaining: " + str$(int((tim + (10000 * (lev + (500-lev))) - timer())/1000)): if timer() > tim + (10000 * (lev + (500-lev))) then end
sync : loop : next lev