100 init 110 randomize 120 dim map$(20),mx(200),my(200) 130 call initmap 140 call initplane 150 ccount=0 160 cmax=0 170 rem ######################## main 180 label main 190 ccount=ccount+1 200 if ccount>=cmax then 210 ccount=0 220 for i=1 to 200 230 my(i)=my(i)+0.5 240 if my(i)>223 then my(i)=my(i)-320 250 sprpos i,mx(i),my(i),0 260 next i 270 end if 280 call planemove 290 fsync 1 300 goto *main 310 rem ####################init map 320 sub initmap 330 mmax=20 340 for i=1 to mmax 350 read map$(i) 360 next i 370 k=0 380 yy=208 390 for i=mmax to 1 step -1 400 m$=map$(i) 410 for j=1 to 10 420 k=k+1 430 select case m$(j:j) 440 case "a" 450 sprtex k,7,288,0,320,32 460 case "b" 470 sprtex k,7,320,0,352,32 480 case "c" 490 sprtex k,7,352,0,384,32 500 case "d" 510 sprtex k,7,384,0,416,32 520 case "e" 530 sprtex k,7,416,0,448,32 540 case "f" 550 sprtex k,7,288,32,320,64 560 case "g" 570 sprtex k,7,320,32,352,64 580 case "h" 590 sprtex k,7,352,32,384,64 600 case "i" 610 sprtex k,7,384,32,416,64 620 case "j" 630 sprtex k,7,416,32,448,64 640 case "k" 650 sprtex k,7,320,156,352,188 660 case "l" 670 sprtex k,7,320,156,352,188 680 case "m" 690 sprtex k,7,352,156,384,188 700 case "n" 710 sprtex k,7,384,156,416,188 720 case "o" 730 sprtex k,7,416,156,448,188 740 case "p" 750 sprtex k,7,320,188,352,224 760 case "q" 770 sprtex k,7,352,188,384,224 780 case "r" 790 sprtex k,7,384,188,416,224 800 case "s" 810 sprtex k,7,416,188,448,224 820 case "t" 830 sprtex k,7,320,224,352,256 840 case "u" 850 sprtex k,7,352,224,384,256 860 case "v" 870 sprtex k,7,384,224,416,256 880 case "w" 890 sprtex k,7,416,224,448,256 900 end select 910 mx(k)=j*32 920 my(k)=yy 930 sprpos k,mx(k),my(k),0 940 sprpal k,7,7,1 950 sprdisp k 960 next j 970 yy=yy-16 980 next i 990 tilepos 1,0,0,31,223,1000 1000 tilepos 2,352,0,383,223,1000 1010 tilecol 1,0,0,0,128 1020 tilecol 2,0,0,0,128 1030 tiledisp 1 1040 tiledisp 2 1050 end sub 1060 rem ################## initplane 1070 sub initplane 1080 pmax=10 1090 dim px(pmax),py(pmax),pvx(pmax),pvy(pmax),pt(pmax) 1100 for i=1 to pmax 1110 py(i)=-20 1120 next i 1130 end sub 1140 rem ################# plane-move 1150 sub planemove 1160 i=int(rnd*pmax)+1 1170 if py(i)<=-20 and rnd<0.1 then 1180 pt(i)=int(rnd*5)+1 1190 px(i)=int(rnd*256)+32 1200 py(i)=-16 1210 pvx(i)=0 1220 pvy(i)=1 1230 sn=300+i 1240 sprtex sn,7,64,pt(i)*32,96,pt(i)*32+32 1250 sprpos sn,px(i),py(i),1 1260 sprpal sn,7,0,1 1270 sprdisp sn 1280 end if 1290 for i=1 to pmax 1300 if py(i)>-20 then 1310 px(i)=px(i)+pvx(i) 1320 py(i)=py(i)+pvy(i) 1330 sn=300+i 1340 sprpos sn,px(i),py(i),1 1350 if py(i)>223 or px(i)<0 or px(i)>352 then 1360 sproff sn 1370 py(i)=-20 1380 elseif py(i)>50 and rnd<0.01 then 1390 if pvx(i)=0 then 1400 if rnd<0.5 then 1410 pvx(i)=-0.5 1420 sprtex sn,7,192,pt(i)*32,224,pt(i)*32+32 1430 else 1440 pvx(i)=0.5 1450 sprtex sn,7,224,pt(i)*32,256,pt(i)*32+32 1460 end if 1470 elseif abs(pvx(i))<1 then 1480 if pvx(i)<0 then 1490 pvx(i)=-1 1500 sprtex sn,7,160,pt(i)*32,192,pt(i)*32+32 1510 else 1520 pvx(i)=1 1530 sprtex sn,7,256,pt(i)*32,288,pt(i)*32+32 1540 end if 1550 end if 1560 end if 1570 end if 1580 next i 1590 end sub 10000 rem #################### data 10010 data"fffffcbcae" 10020 data"efffffffcb" 10030 data"aededeffff" 10040 data"avwaaaefff" 10050 data"amswaaaeff" 10060 data"amfswaaaef" 10070 data"vrffoaaabf" 10080 data"mffptbcbff" 10090 data"uqfobfffff" 10100 data"amptefffff" 10110 data"autaaeffff" 10120 data"aaaaabffff" 10130 data"aabcaeffff" 10140 data"abfdaaefff" 10150 data"aefcaaaeff" 10160 data"abfdaaabff" 10170 data"bffcbcaeff" 10180 data"fffffdaaef" 10190 data"fffffcaabf" 10200 data"fffffdaaef"