10 GOTO 9000 100 A=STICK(0)ORSTICK(1):IFY<12ANDR=1THEN2000 120 Q=VPEEK(6144+((Y+12)\8)*32+((X+8)\8)):IFQ=132ORQ=133THENGOSUB500 150 X=X+2*((X>2AND(A>5ANDA<9))-(X<232AND(A>1ANDA<5))):Y=Y+(R=0AND(A=1ORA=2ORA=8))-(R=1AND(A>3ANDA<7))+2*((R=1)-(R=0)):IFY>172THEN5100 180 FORI=6917TO6937STEP4:Q=VPEEK(I):Q=Q+C:IFQ>236THENQ=2:GOTO200 195 IFQ<2THENQ=236 200 VPOKEI,Q:NEXT 210 FORI=6941TO6953STEP4:Q=VPEEK(I):Q=Q-C:IFQ>236THENQ=2:GOTO230 225 IFQ<2THENQ=236 230 VPOKEI,Q:NEXT:VPOKE6912,Y:VPOKE6913,X:GOTO100 300 R=0:IF INT(RND(1)*10)<5 THEN D=2 ELSE D=-2 310 X=X+D 320 IF X=8 OR X=236 THEN D=-D 330 VPOKE6912,Y:VPOKE6913,X 340 FOR I=6917 TO 6937 STEP 4 350 Q=VPEEK(I):Q=Q+C 360 IF Q>236 THEN Q=2:GOTO 380 370 IF Q<2 THEN Q=236 380 VPOKE I,Q 390 NEXT 400 FOR I=6941 TO 6953 STEP 4 410 Q=VPEEK(I):Q=Q-C 420 IF Q>236 THEN Q=2:GOTO 440 430 IF Q<2 THEN Q=236 440 VPOKE I,Q 450 NEXT 460 A=STICK(0)ORSTICK(1):IF A>3 AND A<8 THEN RETURN 480 FOR I=1 TO 50:NEXT 490 GOTO 310 500 R=1:A=STICK(0)ORSTICK(1):IF A=1 OR A=2 OR A=8 THEN 640 510 FOR I=6917 TO 6937 STEP 4 520 Q=VPEEK(I):Q=Q+C 530 IF Q>236 THEN Q=2:GOTO 550 540 IF Q<2 THEN Q=236 550 VPOKE I,Q 560 NEXT 570 FOR I=6941 TO 6953 STEP 4 580 Q=VPEEK(I):Q=Q-C 590 IF Q>236 THEN Q=2:GOTO 610 600 IF Q<2 THEN Q=236 610 VPOKE I,Q 620 NEXT 630 FOR I=1 TO 70:NEXT:GOTO 500 640 SC=SC+10*P:IF SC>50000! THEN SC=0 650 IF SC>HI THEN HI=SC 660 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC 670 LOCATE 12,0:PRINT"Hi-":LOCATE 15,0:PRINT USING"#####";SC 680 RETURN 2000 GOSUB 6600:LOCATE 11,11:PRINT"Well done!" 2005 I=USR3(0):FORI=0TO255:SOUND8,15:SOUND0,I:NEXT:I=USR3(0) 2010 FOR I=1 TO 3000:NEXT 2020 P=P+1 2030 SC=SC+20*P:IF SC>30000! THEN SC=0 2040 IF SC>HI THEN HI=SC 2050 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC 2060 GOTO 3000 3000 I=USR1(0):GOSUB 6500:GOSUB 6000 3010 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3010 3020 PUT SPRITE 1,(I,40),C,1 3030 PUT SPRITE 2,(Q+128,40),C,1 3040 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3040 3050 PUT SPRITE 3,(I,88),C,1 3060 PUT SPRITE 4,(Q+128,88),C,1 3070 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3070 3080 PUT SPRITE 5,(I,136),C,1 3090 PUT SPRITE 6,(Q+128,136),C,1 3100 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3100 3110 PUT SPRITE 7,(I,64),C,1 3120 PUT SPRITE 8,(Q+128,64),C,1 3130 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3130 3140 PUT SPRITE 9,(I,112),C,1 3150 PUT SPRITE 10,(Q+128,112),C,1 3190 I=INT(RND(1)*3)+1 3200 IF I=1 THEN C=6144+(22*32)+4:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135 3210 IF I=2 THEN C=6144+(22*32)+14:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135 3220 IF I=3 THEN C=6144+(22*32)+25:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135 3230 I=INT(RND(1)*10)+1:IF I<6 THEN C=1 ELSE C=-1 3240 IF P<4 THEN C=C*P ELSE C=C*3 3250 X=128:Y=10 3260 VPOKE6912,Y:VPOKE6913,X:SPRITEON:I=USR2(0) 3265 I=USR3(0):SOUND7,62:SOUND8,15:FORI=48TO112:SOUND0,I:NEXT:I=USR3(0) 3270 GOSUB 300 3280 GOTO 100 4000 I=USR1(0):GOSUB 6500:SC=0:P=1:CLS 4010 LOCATE 0,2:PRINT" จ จจจจจจจจจจจจจจจจ" 4020 LOCATE 0,3:PRINT" จจ จจจ จจ จจ " 4030 LOCATE 0,4:PRINT" จ จ จจจจจจจจจจจจจจจจ" 4040 LOCATE 0,5:PRINT" จ จจ จจ จ จ" 4050 LOCATE 0,6:PRINT" จ จจ จจ จจจจจจจ" 4060 LOCATE 1,8:PRINT"จ จจจจจจ จจจจจ จจจจจจจจจจ" 4070 LOCATE 1,9:PRINT"จ จ จจจ จจ จจ จ จ" 4080 LOCATE1,10:PRINT"จ จจจจจจ จ จจ จจจจ จจจจจ" 4090 LOCATE1,11:PRINT"จ จ จจ จจจ จจ จ จ " 4100 LOCATE1,12:PRINT"จจจจจจ จจ จจจจจจจจจจจจ จจ" 4110 LOCATE 6,16:PRINT"Press FIRE to start" 4120 LOCATE 3,21:PRINT"Made by Crappysoft for the":LOCATE 8,22:PRINT"MSX BASIC contest" 4130 I=USR2(0):I=13:TIME=0 4200 IF STRIG(0)=-1 OR STRIG(1)=-1 THEN 4300 4205 IF TIME>15 THEN TIME=0:I=I+1:IF I=15 THEN I=2 ELSE VPOKE 8213,I*8+1 4210 A=RND(-TIME):GOTO 4200 4300 I=USR1(0):CLS 4310 LOCATE 0,2:PRINT"Your mission:recollect data fromthe surface of Mars. An asteroidwith valuable resources crashedon it." 4320 LOCATE 0,7:PRINT"Please choose your civilization:"; 4330 LOCATE 4,10:PRINT"Second hand human landing":LOCATE 4,11:PRINT"module" 4340 LOCATE 4,14:PRINT"Venusian interstellar":LOCATE 4,15:PRINT"garbage collector" 4350 LOCATE 4,18:PRINT"Ganimedian state-of-the-art":LOCATE 4,19:PRINT"interceptor" 4360 PUT SPRITE 0,(8,10*8),14,0 4370 PUT SPRITE 1,(8,14*8),14,5 4380 PUT SPRITE 2,(8,18*8),14,6 4390 I=USR2(0) 4400 I=1:A=1 4410 X=STICK(0):Y=STRIG(0)ORSTRIG(1) 4415 IF Y<>0 THEN 4480 4420 IF X=1 THEN I=I-1:IF I=0 THEN I=3 4430 IF X=5 THEN I=I+1:IF I=4 THEN I=1 4435 FOR C=1 TO 50:NEXT 4440 ON I GOTO 4450,4460,4470 4450 VPOKE 6915,10:VPOKE 6919,14:VPOKE 6923,14:A=1:GOTO 4410 4460 VPOKE 6915,14:VPOKE 6919,10:VPOKE 6923,14:A=2:GOTO 4410 4470 VPOKE 6915,14:VPOKE 6919,14:VPOKE 6923,10:A=3:GOTO 4410 4480 I=USR1(0):GOSUB 6600:VPOKE 6914,0*(A=1)-20*(A=2)-24*(A=3):VPOKE 6915,-14*(A=1)-2*(A=2)-7*(A=3):GOTO 3000 4500 IF STRIG(0)=0 THEN 4500 ELSE 3000 5000 RETURN 5100 5100 SPRITE OFF 5105 I=USR3(0):SOUND6,0:SOUND7,7:SOUND8,16:SOUND9,16:SOUND10,16:SOUND12,56:SOUND13,0 5110 FOR I=1 TO 12 5120 PUT SPRITE 0,(X,Y),11,3 5130 FOR R=1 TO 50:NEXT 5140 PUT SPRITE 0,(X,Y),8,2 5150 FOR R=1 TO 50:NEXT 5160 NEXT 5170 GOSUB 6600:LOCATE 12,11:PRINT"Game Over" 5180 FOR I=1 TO 3000:NEXT:GOTO 4000 6000 CLS 6010 RESTORE 6100 6020 FOR I=6144+(21*32) TO 6144+(23*32)+31:READ X:VPOKE I,X:NEXT 6030 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC 6040 LOCATE 12,0:PRINT"Hi-":LOCATE 15,0:PRINT USING"#####";SC 6050 LOCATE 24,0:PRINT"Stage-":LOCATE 30,0:PRINT USING"##";P; 6060 VPOKE 6144+(10*32)+5,144:VPOKE 6144+(14*32)+20,144:VPOKE 6144+(4*32)+12,144:VPOKE 6144+(20*32)+29,144 6070 VPOKE 6144+(11*32)+1,152:VPOKE 6144+(17*32)+23,152:VPOKE 6144+(7*32)+16,152:VPOKE 6144+(19*32)+24,152 6080 VPOKE 6144+(3*32)+30,160:VPOKE 6144+(3*32)+31,161:VPOKE 6144+(4*32)+30,162:VPOKE 6144+(4*32)+31,163:PUT SPRITE 13,(30*8,3*8-1),2,4 6090 RETURN 6100 DATA 136,140,141,137,0,0,0,0,0,136,137,0,0,0,0,0,0,0,0,0,0,136,137,0,0,0,0,0,136,140,141,137 6110 DATA 138,142,143,139,128,129,128,129,128,138,139,128,129,128,129,128,129,128,129,128,129,138,139,128,129,128,129,128,138,142,143,139 6120 DATA 130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131 6500 FOR I=6912 TO 6912+(13*4) STEP 4:VPOKE I,209:NEXT:RETURN 6600 SPRITEOFF:FOR I=6916 TO 6952 STEP 4:VPOKE I,209:NEXT:RETURN 7000 RESTORE 7100:FOR I=14336 TO 14336+31:READ A:VPOKE I,A:NEXT 7010 FOR I=14336+32 TO 14336+63:READ A$:VPOKE I,VAL("&H"+A$):NEXT 7020 FOR I=14336+(32*2) TO 14336+(32*5)-1:READ A:VPOKE I,A:NEXT 7030 FOR I=14336+(32*5) TO 14336+(32*7)-1:READ A$:VPOKE I,VAL("&H"+A$):NEXT 7090 RETURN 7095 ' ovni 7100 DATA 0,0,1,26,123,252,127,159 7110 DATA 224,255,117,31,32,64,224,0 7120 DATA 0,0,128,88,222,63,254,249 7130 DATA 7,255,174,248,4,2,7,0 7135 ' asteroide 7140 DATA 00,00,00,05,3e,77,ab,f7 7150 DATA b9,c6,a9,46,38,07,00,00 7160 DATA 00,00,a0,b4,76,cb,b4,7b 7170 DATA 85,49,32,1c,e0,00,00,00 7175 ' explosion grande 7180 DATA 4,6,5,4,248,64,34,17 7190 DATA 8,16,32,124,2,1,0,0 7200 DATA 0,0,64,160,32,30,132,8 7210 DATA 144,16,72,168,144,128,128,0 7215 ' explosion chica 7220 DATA 0,0,0,0,1,14,4,2 7230 DATA 4,14,1,0,0,0,0,0 7240 DATA 0,0,0,128,64,64,32,16 7250 DATA 56,64,64,192,64,0,0,0 7255 ' tierra 7260 DATA 0,3,3,24,60,60,113,65 7270 DATA 72,97,51,51,17,8,0,0 7280 DATA 0,128,48,120,252,124,206,162 7290 DATA 14,238,252,240,240,240,192,0 7295 ' alien 1 7300 DATA 07,18,20,4b,45,8d,b7,c1 7310 DATA 83,ec,f3,6c,13,2d,40,e0 7320 DATA e0,18,04,d2,a2,b1,ed,83 7330 DATA c1,37,cf,36,c8,b4,02,07 7335 ' alien 2 7340 DATA 00,00,00,03,8c,53,25,43 7350 DATA 9c,a3,dc,6f,16,21,40,e0 7360 DATA 00,00,00,c0,31,ca,a4,c2 7370 DATA 39,c5,3b,f6,68,84,02,07 8000 RESTORE 8200 8010 FOR I=168*8 TO 168*8+7:READ A:VPOKE I,A:NEXT 8020 FOR I=144*8 TO 144*8+7:READ A:VPOKE I,A:NEXT:' estrella blanca 8030 FOR I=152*8 TO 152*8+7:READ A:VPOKE I,A:NEXT:' estrella negra 8040 FOR I=160*8 TO 163*8+7:READ A:VPOKE I,A:NEXT:' tierra 8080 VPOKE 8208,&H81:VPOKE 8209,&H81:VPOKE 8210,&HF1:VPOKE 8211,&HE1:VPOKE 8212,&H41:VPOKE 8213,&HD1 8090 RETURN 8195 ' logo 8200 DATA 0,126,126,126,126,126,126,0 8205 ' estrella blanca 8210 DATA 0,0,0,16,0,0,0,0 8215 ' estrella negra 8220 DATA 0,8,0,0,0,0,0,0 8225 ' tierra 8230 DATA 0,3,15,31,63,63,127,127 8240 DATA 0,192,240,248,252,252,254,254 8250 DATA 127,127,63,63,31,15,3,0 8260 DATA 254,254,252,252,248,240,192,0 8500 RESTORE 8500:FOR I=128*8 TO 143*8+7:READ A$:VPOKE I,VAL("&H"+A$):NEXT:RETURN 8510 DATA 00,0c,9b,cf,b4,7b,fe,fd 8520 DATA 00,30,7b,b5,ce,75,bb,df 8530 DATA aa,55,aa,55,eb,94,08,30 8540 DATA aa,55,aa,5d,a2,41,20,10 8545 ' 8550 DATA 0f,10,24,47,64,30,df,ef 8560 DATA f0,08,24,e2,26,0c,fb,f7 8570 DATA a0,55,aa,55,eb,94,08,30 8580 DATA 0a,55,aa,5d,a2,41,20,10 8585 ' 8590 DATA 00,00,00,00,01,03,03,07 8600 DATA 00,00,00,00,80,40,40,20 8610 DATA 07,0f,9f,de,bd,73,eb,dd 8620 DATA 20,10,8b,85,82,c1,dc,e7 8625 ' 8630 DATA 01,07,0f,1f,be,59,57,2f 8640 DATA 80,40,20,18,05,0b,0b,97 8650 DATA 2e,15,8b,85,82,c1,dc,e7 8660 DATA d7,ef,df,de,bd,73,eb,dd 9000 DEFUSR1=&H41:DEFUSR2=&H44:I=USR1(0):DEFUSR3=&H90:SCREEN 1,2,0:WIDTH 32:KEY OFF:COLOR 15,1,1:DEFINT A-Z 9010 GOSUB 7000:GOSUB 8000:GOSUB 8500 9020 HI=3000 9030 ON SPRITE GOSUB 5000 9090 GOTO 4000