OPEN WINDOW 640,512 PT=VAL(RIGHT$(time$,2)) DIM NAME$(4):DIM CDOWN$(4) DIM ENDPLAY$(4):DIM CNAM$(4) DIM C1(16):DIM C2(16) DIM DP(4):DIM DST(16) DIM ANG(16):DIM SP(4) DIM CPU(4):DIM CLR(4,3) DIM XV(16,4):DIM YV(16,4) DIM XP(4):DIM YP(4) DIM YM(8):DIM GP(4) DIM VP(4):DIM YLL(4) DIM YUL(4):DIM SD(4) DIM SHOT(4):DIM XS(16) DIM YS(16):DIM OB(120,100) AUTHOR$="NORTHERN LIGHTS PARTY PLAY 2002" LSTNXT$="L1 - LAST | L2 - NEXT" RESTORE CNAM FOR A=0 TO 3 READ CNAM$(A) NEXT A RESTORE TITLES FOR A=0 TO 3 READ NAME$(A) NEXT A RESTORE TTO FOR A=0 TO 3 READ CDOWN$(A) NEXT A RESTORE PCOLOUR FOR P=0 TO 3 FOR C=0 TO 2 READ CLR(P,C) NEXT C NEXT P 90 CLEAR WINDOW RESTORE BLAST FOR A=0 TO 2 READ DST(A) READ ANG(A) XV(A,1)=DST(A)*COS(ANG(A))+310 XV(A+3,1)=DST(A)*COS(-ANG(A))+310 YV(A,1)=DST(A)*SIN(ANG(A))+370 YV(A+3,1)=DST(A)*SIN(-ANG(A))+370 NEXT A SETRGB 1,0,255,0 FILL CIRCLE 310,370,15 CLEAR FILL TRIANGLE XV(0,1),YV(0,1) TO XV(1,1),YV(1,1) TO XV(2,1),YV(2,1) CLEAR FILL TRIANGLE XV(3,1),YV(3,1) TO XV(4,1),YV(4,1) TO XV(5,1),YV(5,1) SETRGB 1,128,128,255 RESTORE TANK FOR A=0 TO 15 READ DST(A):READ ANG(A) NEXT A FILL RECT 295,105 TO 305,145 FILL CIRCLE 310,125,5 SETRGB 1,255,255,0 FOR A=0 TO 15 XV(A,1)=1.5*DST(A)*COS(ANG(A)+(5*PI/8))+190 YV(A,1)=1.5*-DST(A)*SIN(ANG(A)+(5*PI/8))+250 NEXT A FOR A=0 TO 3 YM(A)=170 FILL TRIANGLE XV(A*4,1),YV(A*4,1) TO XV(A*4+1,1),YV(A*4+1,1) TO XV(A*4+2,1),YV(A*4+2,1) FILL TRIANGLE XV(A*4+1,1),YV(A*4+1,1) TO XV(A*4+2,1),YV(A*4+2,1) TO XV(A*4+3,1),YV(A*4+3,1) NEXT A SETRGB 1,255,0,0 FILL RECT 405,255 TO 410,270 FILL RECT 410,255 TO 450,260 FILL RECT 450,260 TO 455,225 RECT 225,95 TO 395,165 RECT 155,165 TO 225,335 RECT 395,165 TO 465,335 RECT 225,335 TO 395,405 RECT 199,39 TO 421,53 B=0:LM=0 TEXT 100,420,"USE LEFT AND RIGHT TO ROTATE THE TANK" TEXT 100,435,"USE L2 TO SHOOT THE GAME YOU WANT TO PLAY" TEXT 100,450,"USE START+SELECT TO EXIT THIS PROGRAM" TEXT 100,465,"USE START FOR A SET OF INSTRUCTIONS" TEXT 300,500,"PARSE TIME "+STR$(PT)+" SECONDS" 91 IF C1(3)=1 INST=1 IF INST=1 AND C1(3)=0 GOTO 1234 IF C1(8)=1 S=1 B=B+C1(7)-C1(5) IF B>15 B=0 IF B<0 B=15 CLEAR FILL RECT 226,166 TO 394,334 FOR A=0 TO 15 XV(A,0)=8*DST(A)*COS(ANG(A)+(B*PI/8))+310 YV(A,0)=-8*DST(A)*SIN(ANG(A)+(B*PI/8))+250 NEXT A FOR A=0 TO 3 FILL TRIANGLE XV(A*4,0),YV(A*4,0) TO XV(A*4+1,0),YV(A*4+1,0) TO XV(A*4+2,0),YV(A*4+2,0) FILL TRIANGLE XV(A*4+1,0),YV(A*4+1,0) TO XV(A*4+2,0),YV(A*4+2,0) TO XV(A*4+3,0),YV(A*4+3,0) NEXT A IF C<>B THEN CLEAR FILL RECT 200,40 TO 420,52 C=B FI GAME=INT((C+2)/4):IF GAME>3 GAME=0 IF S=1 THEN XS=(XV(5,0)+XV(7,0))/2 YS=(YV(5,0)+YV(7,0))/2 FOR A=0 TO 20 XS=XS+(4*COS(B*PI/8)) YS=YS+(-4*SIN(B*PI/8)) FILL CIRCLE XS,YS,10 WAIT 0.03 CLEAR FILL CIRCLE XS,YS,10 NEXT A S=0 92 IF GAME=0 GOTO 1 IF GAME=1 GOTO 2 IF GAME=2 GOTO 3 IF GAME=3 GOTO 4 FI TEXT 210,50,NAME$(GAME) GOSUB 901 GOTO 91 1 DIM SCP(4) SETRGB 1,128,128,128 10 CLEAR WINDOW GOSUB 904 RESTORE TRONINST GOSUB 908 SETRGB 1,128,128,128 TEXT 290,50,"TRON" TEXT 150,80,AUTHOR$ RECT 90,90 TO 500,210 TEXT 110,110,"WHO IS PLAYING?" TEXT 110,125,LSTNXT$ FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) TEXT 110+P*100,155,"MAN "+STR$(P+1)+"UP" TEXT 110+P*100,170,"CPU "+CNAM$(P) TEXT 110+P*100,185,"NO PLAY" NEXT P SETRGB 1,128,128,128 R=0:PL=3:LM=3 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 AND M>0 AND M+C>1 R=1 IF R=2 AND (M<1 OR M+C<2) R=0 C=0:M=0:DIF=0 FOR P=0 TO 3 CPU(P)=(YM(P)-155)/15 IF CPU(P)=1 THEN C=C+1:DIF=4 FI IF CPU(P)=0 M=M+1 NEXT P UNTIL(R=1 OR R=3) IF R=3 GOTO 90 11 LM=3:PL=0 IF DIF=4 THEN CLEAR FILL RECT 91,91 TO 499,209 YM(0)=170 TEXT 110,110,"PLEASE SELECT CPU EXPERIENCE" TEXT 110,125,LSTNXT$ TEXT 110,155,"D.BECKHAM - DIES ON SOME CORNERS" TEXT 110,170,"J.VEGAS - AVERAGE INTELLIGENCE" TEXT 110,185,"B.HILL - CHASES NEAREST OPPONENT" IF M=1 AND C=3 THEN TEXT 110,200,"V.RAPTOR - ATTACKS AS A PACK":LM=4 FI IF M>1 THEN TEXT 110,200,"CPU OFF - HUMANS ONLY":LM=4 FI R=0:PL=0 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 10 DIF=(YM(0)-155)/15 FI CLEAR FILL RECT 91,91 TO 499,209 YM(0)=170 TEXT 110,110,"PLEASE SELECT GAME DIFFICULTY" TEXT 110,125,LSTNXT$ TEXT 110,155,"EASY - SLOW ENOUGH FOR BEGINNERS" TEXT 110,170,"NORMAL - GO ON, YOU KNOW YOU WANT TO" TEXT 110,185,"HARD - FOR THE ENTHUSIAST" TEXT 110,200,"TRON - HARD CORE TRON PLAYERS ONLY" R=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 AND C=0 GOTO 10 IF R=3 AND C>0 THEN DIF=4:GOTO 11 FI SPD=9-((YM(0)-155)/7.5) FOR A=0 TO 119 FOR B=0 TO 99 OB(A,B)=0 NEXT B NEXT A FOR P=0 TO 3 12 OX=INT(RAN(119)):OY=INT(RAN(99)) XP(P)=OX*5+10:YP(P)=OY*5 IF 500-YP(P)=MIN(YP(P),500-YP(P)) AND 500-YP(P)<=MIN(XP(P)-10,610-XP(P)) DP(P)=1 IF YP(P)=MIN(YP(P),500-YP(P)) AND YP(P)<=MIN(XP(P)-10,610-XP(P)) DP(P)=2 IF 610-XP(P)=MIN(XP(P)-10,610-XP(P)) AND 610-XP(P)<=MIN(YP(P),500-YP(P)) DP(P)=3 IF XP(P)-10=MIN(XP(P)-10,610-XP(P)) AND XP(P)-10<=MIN(YP(P),500-YP(P)) DP(P)=4 IF CPU(P)=2 OR (CPU(P)=1 AND DIF=3 AND M>1) DP(P)=-1 IF DP(P)=-1 ENDPLAY$(P)="DID NOT PLAY" FOR Q=0 TO P IF P>Q AND XP(P)=XP(Q) AND YP(P)=YP(Q) GOTO 12 NEXT Q OB(OX,OY)=P+1 NEXT P GOSUB 902 QQ=4:RECT 10,0 TO 610,500:RR=0 REPEAT WAIT SPD/100 BA=PEEK("port1") BB=PEEK("port2") FOR A=0 TO 15 C1(A)=SIG(AND(BA,2^A)) C2(A)=SIG(AND(BB,2^A)) NEXT A IF C1(3)=1 OR C2(3)=1 RR=2 IF C1(3)=0 AND C1(3)=0 AND RR=2 RR=1 IF RR=1 THEN RR=0:GOSUB 905 FI FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) FILL RECT XP(P),YP(P) TO XP(P)+5,YP(P)+5 IF DP(P)<0 THEN QQ=0 FOR Q=0 TO 3 IF DP(Q)<0 THEN FOR A=0 TO 119 FOR B=0 TO 99 IF OB(A,B)=Q+1 THEN XX=A*5+10:YY=B*5 CLEAR FILL RECT XX,YY TO XX+5,YY+5 OB(A,B)=0 FI NEXT B NEXT A DP(Q)=0:XP(Q)=0:YP(Q)=0 IF CPU(Q)=0 M=M-1 FI QQ=ABS(SIG(DP(Q)))+QQ NEXT Q RECT 10,0 TO 610,500 FI IF DP(P)=0 GOTO 105 IF DIF>1 THEN FOR DS0=0 TO 5 DS1=2 IF DS0<5 DS1=1 IF DS0<3 DS1=0 DS2=3 IF DS0=1 OR DS0=3 DS2=2 IF DS0=0 DS2=1 DST(DS0)=(((XP(DS1)-XP(DS2))^2)+((YP(DS1)-YP(DS2))^2))^0.5 NEXT DS0 IF DP(0)=0 THEN DST(0)=999:DST(1)=999:DST(2)=999 FI IF DP(1)=0 THEN DST(0)=999:DST(3)=999:DST(4)=999 FI IF DP(2)=0 THEN DST(1)=999:DST(3)=999:DST(5)=999 FI IF DP(3)=0 THEN DST(2)=999:DST(4)=999:DST(5)=999 FI FI IF CPU(P)=1 THEN IF DIF=3 THEN FOR Q=0 TO 3 IF CPU(Q)=0 VP(P)=Q NEXT Q FI IF DIF=2 THEN IF P=0 THEN IF DST(0)1 THEN XMV=SIG(XP(VP(P))-XP(P)) YMV=SIG(YP(VP(P))-YP(P)) XDS=ABS(XP(VP(P))-XP(P)) YDS=ABS(YP(VP(P))-YP(P)) IF (DP(P)=1 AND YMV=1) OR (DP(P)=2 AND YMV=-1) GP(P)=3.5+XMV/2 IF (DP(P)=3 AND XMV=1) OR (DP(P)=4 AND XMV=-1) GP(P)=1.5+YMV/2 IF DP(P)<3 AND XDS>YDS GP(P)=3.5+XMV/2 IF DP(P)>2 AND XDS0 AND YP(P)<495 THEN IF OB((XP(P)-10)/5,SCP(R)/5)>0 SP(R)=0 FOR Q=0 TO 3 IF XP(P)=XP(Q) AND SCP(R)=YP(Q) AND Q<>P SP(R)=0 NEXT Q FI IF XP(P)>10 AND XP(P)<605 THEN IF OB((SCP(R+2)-10)/5,YP(P)/5)>0 SP(R+2)=0 FOR Q=0 TO 3 IF SCP(R+2)=XP(Q) AND YP(P)=YP(Q) AND Q<>P SP(R+2)=0 NEXT Q FI NEXT R IF DP(P)=1 SP(1)=0 IF DP(P)=2 SP(0)=0 IF DP(P)=3 SP(3)=0 IF DP(P)=4 SP(2)=0 IF SP(DP(P)-1)=0 AND DIF=0 THEN IF DP(P)<3 DG=3+INT(RAN(2)) IF DP(P)>2 DG=1+INT(RAN(2)) DP(P)=DG FI DT=0:DF=0:DG=0 IF DIF>0 THEN FOR DN=0 TO 3 IF DP(P)<>DN+1 AND SP(DN)=1 DT=DN+1 IF DP(P)=DN+1 AND SP(DN)=1 DF=DP(P) IF DIF>1 AND GP(P)=DN+1 AND SP(DN)=1 DG=GP(P) NEXT DN IF DIF=1 AND DF=0 DP(P)=DT IF DIF>1 AND DP(P)<>DG AND DG>0 DP(P)=DG IF DIF>1 AND DG=0 AND DF=0 AND DT>0 DP(P)=DT FI FI XS(0)=0 IF CPU(P)=0 THEN IF P=0 THEN IF DP(P)>2 THEN IF C1(4)=1 DP(P)=1 IF C1(6)=1 DP(P)=2 XS(0)=1 FI IF DP(P)<3 AND XS(0)=0 THEN IF C1(7)=1 DP(P)=3 IF C1(5)=1 DP(P)=4 FI FI IF P=1 THEN IF DP(P)>2 THEN IF C2(4)=1 DP(P)=1 IF C2(6)=1 DP(P)=2 XS(0)=1 FI IF DP(P)<3 AND XS(0)=0 THEN IF C2(7)=1 DP(P)=3 IF C2(5)=1 DP(P)=4 FI FI IF P=2 THEN IF DP(P)>2 THEN IF C1(12)=1 DP(P)=1 IF C1(14)=1 DP(P)=2 XS(0)=1 FI IF DP(P)<3 AND XS(0)=0 THEN IF C1(15)=1 DP(P)=3 IF C1(13)=1 DP(P)=4 FI FI IF P=3 THEN IF DP(P)>2 THEN IF C2(12)=1 DP(P)=1 IF C2(14)=1 DP(P)=2 XS(0)=1 FI IF DP(P)<3 AND XS(0)=0 THEN IF C2(15)=1 DP(P)=3 IF C2(13)=1 DP(P)=4 FI FI FI IF DP(P)=1 YP(P)=YP(P)-5 IF DP(P)=2 YP(P)=YP(P)+5 IF DP(P)=3 XP(P)=XP(P)-5 IF DP(P)=4 XP(P)=XP(P)+5 FOR Q=0 TO 3 IF XP(P)=XP(Q) AND YP(P)=YP(Q) AND P<>Q THEN DP(P)=-1:ENDPLAY$(P)="CRASHED INTO WALL" DP(Q)=-1:ENDPLAY$(Q)="CRASHED INTO WALL" FI NEXT Q IF YP(P)=-5 OR YP(P)=500 OR XP(P)=5 OR XP(P)=610 THEN DP(P)=-1 ENDPLAY$(P)="CRASHED INTO PERIMETER" FI IF DP(P)>-1 THEN IF OB((XP(P)-10)/5,YP(P)/5)>0 THEN DP(P)=-1:ENDPLAY$(P)="CRASHED INTO WALL" ELSE OB((XP(P)-10)/5,YP(P)/5)=P+1 FI FI 105 NEXT P UNTIL(QQ<2 OR M=0) FOR P=0 TO 3 IF DP(P)>0 THEN IF CPU(P)=0 THEN ENDPLAY$(P)="WINS THE GAME" ELSE ENDPLAY$(P)="CPU BEATS PLAYERS" FI FI NEXT P GOTO 903 2 DIM XAD(4):DIM YAD(4) 20 CLEAR WINDOW SETRGB 1,128,128,128 GOSUB 904 TEXT 230,50,NAME$(1) TEXT 150,80,AUTHOR$ RECT 90,90 TO 500,210 YM(0)=155 TEXT 110,110,"PLEASE SELECT THE MODE" TEXT 110,125,LSTNXT$ TEXT 110,155,"CLASSIC - 2 PLAYER TENNIS" TEXT 110,170,"TAG-TEAM - SIDE BY SIDE TEAMS" TEXT 110,185,"DOUBLES - 4 PLAYER TENNIS" TEXT 110,200,"4-WAY FURY - WINNER TAKES ALL" R=0:B=0:LM=4:PL=0 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 IF OR(C1(4),C1(6))=1 OR B=0 THEN CLEAR FILL RECT 0,211 TO 120,512 CLEAR FILL RECT 495,211 TO 640,512 RESTORE TTTINST1 IF YM(0)=155 RESTORE TTTINST0 IF YM(0)=200 RESTORE TTTINST2 GOSUB 908 FI SETRGB 1,128,128,128 UNTIL(R=1 OR R=3) IF R=3 GOTO 90 MD=(YM(0)-155)/15 21 YM(0)=170 CLEAR FILL RECT 91,91 TO 499,209 TEXT 110,110,"WHO IS PLAYING?" TEXT 110,125,LSTNXT$ IF MD>0 THEN PL=3:L=3 ELSE PL=1:L=1 ENDPLAY$(2)="DID NOT PLAY" ENDPLAY$(3)="DID NOT PLAY" FI FOR P=0 TO PL SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) TEXT 110+P*100,155,"MAN "+STR$(P+1)+"UP" TEXT 110+P*100,170,"CPU "+CNAM$(P) NEXT P SETRGB 1,128,128,128 R=0:LM=2 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 AND M>0 R=1 IF R=2 AND M<1 R=0 M=0 FOR P=0 TO L CPU(P)=(YM(P)-155)/15 IF CPU(P)=0 M=M+1 NEXT P UNTIL(R=1 OR R=3) IF R=3 GOTO 20 22 YM(0)=155 CLEAR FILL RECT 91,91 TO 499,209 TEXT 110,110,"SELECT WINNING SCORE" TEXT 110,125,LSTNXT$ FOR A=0 TO 3 TEXT 110,155+A*15,STR$(A*5+5) NEXT A R=0:PL=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 21 WS=(YM(0)-155)/3+5 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT GAME DIFFICULTY" TEXT 110,125,LSTNXT$ TEXT 110,155,"NORMAL - CLASSIC SPEED" TEXT 110,170,"HARD - FASTER AND MORE INTENSE" R=0:LM=2 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 22 SPD=5-((YM(0)-155)/7.5) XP(0)=40:YP(0)=250:XP(1)=580:YP(1)=250 XB=40:YB=250 FOR A=0 TO 3 YLL(A)=20:YUL(A)=480:SP(A)=0 NEXT A IF MD=1 THEN YP(0)=125:YP(1)=375:XP(2)=40:YP(2)=375:XP(3)=580:YP(3)=125:YLL(1)=270:YLL(2)=270:YUL(0)=230:YUL(3)=230 FI IF MD=2 THEN XP(2)=130:YP(2)=250:XP(3)=480:YP(3)=250 FI IF MD=3 THEN XP(0)=90:XP(1)=530:XP(2)=310:YP(2)=20:XP(3)=310:YP(3)=470:XB=90 FI GOSUB 902 WNR=4:BC=0:XSP=4:YSP=4 RECT 10,0 TO 610,500 IF MD>2 THEN SETRGB 1,255,255,0 LINE 60,0 TO 560,0 SETRGB 1,0,255,0 LINE 60,500 TO 560,500 SETRGB 1,255,0,0 LINE 60,0 TO 60,500 SETRGB 1,128,128,255 LINE 560,0 TO 560,500 FI RR=0 REPEAT BA=PEEK("port1") BB=PEEK("port2") FOR A=0 TO 15 C1(A)=SIG(AND(BA,2^A)) C2(A)=SIG(AND(BB,2^A)) NEXT A IF C1(3)=1 OR C2(3)=1 RR=2 IF C1(3)=0 AND C2(3)=0 AND RR=2 RR=1 IF RR=1 THEN RR=0:GOSUB 905 FI FOR P=0 TO L DP=0:XAD(P)=0:YAD(P)=0:PSP=1 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) IF P<2 OR MD<3 THEN IF CPU(P)=1 THEN IF YBYP(P) DP=2 FI IF CPU(P)=0 THEN IF P=0 THEN IF C1(4)=1 DP=1 IF C1(6)=1 DP=2 IF C1(5)=1 XAD(0)=1 IF C1(7)=1 XAD(0)=-1 PSP=2^C1(8) FI IF P=1 THEN IF C2(4)=1 DP=1 IF C2(6)=1 DP=2 IF C2(7)=1 XAD(1)=1 IF C2(5)=1 XAD(1)=-1 PSP=2^C2(8) FI IF P=2 THEN IF C1(12)=1 DP=1 IF C1(14)=1 DP=2 IF C1(15)=1 XAD(2)=1 IF C1(13)=1 XAD(2)=-1 PSP=2^C1(9) FI IF P=2 THEN IF C2(12)=1 DP=1 IF C2(14)=1 DP=2 IF C2(13)=1 XAD(3)=1 IF C2(15)=1 XAD(3)=-1 PSP=2^C2(9) FI FI IF DP>0 CLEAR FILL RECT XP(P)-4,YP(P)-19 TO XP(P)+5,YP(P)+20 IF DP=1 AND YP(P)>YLL(P) YP(P)=YP(P)-5*PSP IF DP=2 AND YP(P)1 AND MD=3 THEN IF CPU(P)=1 THEN IF XBXP(P) DP=4 FI IF CPU(P)=0 THEN IF P=2 THEN IF C1(15)=1 DP=3 IF C1(13)=1 DP=4 IF C1(12)=1 YAD(2)=-1 IF C1(14)=1 YAD(2)=1 PSP=2^C1(9) FI IF P=3 THEN IF C2(15)=1 DP=3 IF C2(13)=1 DP=4 IF C2(14)=1 YAD(3)=-1 IF C2(12)=1 YAD(3)=1 PSP=2^C2(9) FI FI IF DP>0 CLEAR FILL RECT XP(P)-19,YP(P)-4 TO XP(P)+20,YP(P)+5 IF DP=3 AND XP(P)>80 XP(P)=XP(P)-5*PSP IF DP=4 AND XP(P)<540 XP(P)=XP(P)+5*PSP FILL RECT XP(P)-19,YP(P)-4 TO XP(P)+20,YP(P)+5 FI IF P=0 THEN CLEAR FILL CIRCLE XB,YB,5 IF ABS(XSP)>10 XSP=10*SIG(XSP) IF ABS(YSP)>10 YSP=10*SIG(YSP) XB=XB+XSP YB=YB+YSP SETRGB 1,CLR(BC,0),CLR(BC,1),CLR(BC,2) FILL CIRCLE XB,YB,5 IF XBXP(1)+10 OR (MD>2 AND (YB<20 OR YB>480)) THEN SP(BC)=SP(BC)+1 IF MD<3 THEN SP(0)=MAX(SP(0),SP(2)) SP(1)=MAX(SP(1),SP(3)) SP(2)=MAX(SP(0),SP(2)) SP(3)=MAX(SP(1),SP(3)) ELSE YP(0)=250:YP(1)=250 XP(2)=310:XP(3)=310 FI FILL CIRCLE 13+(BC*150)+((SP(BC)-1)*7),504,5 WAIT 1 XB=XP(BC):XSP=SIG(XSP)*4 YB=YP(BC):YSP=SIG(YSP)*4 CLEAR FILL RECT 61,1 TO 559,499 IF MD<3 CLEAR FILL RECT 11,1 TO 609,499 FI FI IF SP(P)=WS WNR=P NEXT P IF MD<3 THEN IF YB>=490 YSP=ABS(YSP)*-1 IF YB<=10 YSP=ABS(YSP) FI FOR Q=0 TO L IF ((Q<2 OR MD<3) AND XB>=XP(Q)-4 AND XB<=XP(Q)+5 AND YB>=YP(Q)-19 AND YB<=YP(Q)+20) OR (Q>1 AND MD=3 AND XB>=XP(Q)-19 AND XB<=XP(Q)+20 AND YB>=YP(Q)-4 AND YB<=YP(Q)+5) THEN BC=Q IF Q<2 OR MD<3 THEN IF ABS(XSP)>1 AND XAD(Q)=-1 XSP=(SIG(XSP))*(ABS(XSP)-1) IF ABS(XSP)<10 AND XAD(Q)=1 XSP=(SIG(XSP))*(ABS(XSP)+1) IF BC=0 OR BC=2 XSP=ABS(XSP) IF BC=1 OR BC=3 XSP=ABS(XSP)*-1 IF XB>=XP(Q)-4 AND XB<=XP(Q)+5 AND YB>=YP(Q)-19 AND YB<=YP(Q)-9 YSP=YSP+1 IF XB>=XP(Q)-4 AND XB<=XP(Q)+5 AND YB>=YP(Q)+10 AND YB<=YP(Q)+20 YSP=YSP-1 FI IF Q>1 AND MD=3 THEN IF ABS(YSP)>1 AND YAD(Q)=-1 YSP=(SIG(YSP))*(ABS(YSP)-1) IF ABS(YSP)<10 AND YAD(Q)=1 YSP=(SIG(YSP))*(ABS(YSP)+1) IF BC=0 OR BC=2 XSP=ABS(XSP) IF BC=1 OR BC=3 XSP=ABS(XSP)*-1 IF YB>=YP(Q)-4 AND YB<=XP(Q)+5 AND XB>=XP(Q)-19 AND XB<=XP(Q)-9 XSP=XSP+1 IF YB>=YP(Q)-4 AND YB<=XP(Q)+5 AND XB>=XP(Q)+10 AND XB<=XP(Q)+20 XSP=XSP+1 FI FI NEXT Q WAIT SPD/100 UNTIL(WNR<4) FOR P=0 TO L IF WNR=P THEN ENDPLAY$(P)="WINS" ELSE ENDPLAY$(P)="SCORED "+STR$(SP(P)) FI NEXT P GOTO 903 3 REM NO UNIQUE ARRAYS 30 CLEAR WINDOW GOSUB 904 RESTORE T4TMINST GOSUB 908 SETRGB 1,128,128,128 TEXT 200,50,NAME$(2) TEXT 150,80,AUTHOR$ RECT 90,90 TO 500,210 TEXT 110,110,"WHO IS PLAYING?" TEXT 110,125,LSTNXT$ FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) TEXT 110+P*100,155,"MAN "+STR$(P+1)+"UP" TEXT 110+P*100,170,"NO PLAY" NEXT P SETRGB 1,128,128,128 R=0:PL=3:LM=2 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 AND M>1 R=1 IF R=2 AND M<2 R=0 M=0 FOR P=0 TO 3 CPU(P)=(YM(P)-155)/15 IF CPU(P)=0 THEN M=M+1 ELSE ENDPLAY$(P)="DID NOT PLAY" FI NEXT P UNTIL(R=1 OR R=3) IF R=3 GOTO 90 31 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT ARENA" TEXT 110,125,LSTNXT$ TEXT 110,155,"OPEN - OPEN FIELD" TEXT 110,170,"SPARSE - A FEW PLACES TO HIDE" TEXT 110,185,"DENSE - DEFLECTION PARADISE" TEXT 110,200,"MAZE - TANK WRAP" R=0:PL=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 30 MD=(YM(0)-155)/15 32 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT BOMB MODE" TEXT 110,125,LSTNXT$ TEXT 110,155,"NORMAL - STRAIT BOMBS" TEXT 110,170,"STEER - TURN TO STEER" TEXT 110,185,"BOUNCE - BOUNCY BOMBS" TEXT 110,200,"ARM BOUNCE - BOUNCE TO ARM" R=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 31 BM=(YM(0)-155)/15 33 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT GAME TIME/TYPE" TEXT 110,125,LSTNXT$ TEXT 110,155,"1 MINUTE - A QUICK BLAST" TEXT 110,170,"2 MINUTES - AVERAGE" TEXT 110,185,"3 MINUTES - TIME AND A HALF" TEXT 110,200,"FLAG TAG - GET ALL FLAGS" R=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 32 MINS=(YM(0)-140)/15 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT TANK SPEED" TEXT 110,125,LSTNXT$ TEXT 110,155,"PEDALS - SLOW ENOUGH FOR BEGINNERS" TEXT 110,170,"TURBO - FAST AND AGILE" R=0:LM=2 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 33 TIME=-1 SPD=(YM(0)-140)/15 FOR P=0 TO 3 FOR V=0 TO 15 XV(V,P)=0:YV(V,P)=0 NEXT V NEXT P XS(12)=50:YS(12)=250:DP(0)=0 XS(13)=570:YS(13)=250:DP(1)=8 XS(14)=310:YS(14)=40:DP(2)=12 XS(15)=310:YS(15)=460:DP(3)=4 IF MD=2 THEN YS(14)=70:YS(15)=430 FI FOR A=0 TO 3 XP(A)=XS(A+12):YP(A)=YS(A+12):XS(A)=0:YS(A)=0:XS(A+8)=XS(A+12):YS(A+8)=YS(A+12) NEXT A GOSUB 902 RECT 620,472 TO 630,290 SETRGB 1,255,0,128 OBS=3 RESTORE T4L0 FOR W=0 TO 3 SP(W)=0 FOR A=0 TO 3 READ OB(W,A) NEXT A NEXT W IF MD>0 THEN OBS=13 RESTORE T4L1 FOR W=4 TO 13 FOR A=0 TO 3 READ OB(W,A) NEXT A NEXT W FI IF MD=2 THEN OBS=25 RESTORE T4L2 FOR W=10 TO 25 FOR A=0 TO 3 READ OB(W,A) NEXT A NEXT W FI IF MD=3 THEN OBS=8 RESTORE T4L3 FOR W=2 TO 8 FOR A=0 TO 3 READ OB(W,A) NEXT A NEXT W FI FOR W=0 TO OBS FILL RECT OB(W,0)-OB(W,2),OB(W,1)-OB(W,3) TO OB(W,0)+OB(W,2),OB(W,1)+OB(W,3) NEXT W IF MINS<4 FILL RECT 621,471 TO 629,471-(MINS*60) RR=0 REPEAT IF MINS<4 THEN A$=RIGHT$(time$,1) IF A$<>B$ THEN B$=A$:TIME=TIME+1 CLEAR LINE 621,471-(MINS*60)+TIME TO 629,471-(MINS*60)+TIME FI FI BA=PEEK("port1") BB=PEEK("port2") FOR A=0 TO 15 C1(A)=SIG(AND(BA,2^A)) C2(A)=SIG(AND(BB,2^A)) NEXT A IF C1(3)=1 OR C2(3)=1 RR=2 IF C1(3)=0 AND C2(3)=0 AND RR=2 RR=1 IF RR=1 THEN RR=0:GOSUB 905 FI TT=6/SPD FOR T=0 TO TT FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) IF MINS=4 THEN IF P=0 TIME=60 TIME=TIME+CPU(P)*60 IF CPU(P)=0 THEN RECT XS(P+8),YS(P+8) TO XS(P+8)+1,YS(P+8)-20 FILL TRIANGLE XS(P+8),YS(P+8)-20 TO XS(P+8),YS(P+8)-10 TO XS(P+8)+6,YS(P+8)-15 IF T=TT CIRCLE XS(P+12),YS(P+12),20 FI FI IF CPU(P)>0 GOTO 310 FOR Q=0 TO 3 IF CPU(Q)=0 THEN IF XS(Q+8)<10 XS(Q+8)=610:IF XS(Q+8)>610 XS(Q+8)=10 DIST=((XS(Q+8)-XP(P))^2+(YS(Q+8)-YP(P))^2)^0.5 VP(Q)=4 IF DIST<15 THEN VP(Q)=P CLEAR RECT XS(Q+8),YS(Q+8) TO XS(Q+8)+1,YS(Q+8)-20 CLEAR FILL TRIANGLE XS(Q+8),YS(Q+8)-20 TO XS(Q+8),YS(Q+8)-10 TO XS(Q+8)+6,YS(Q+8)-15 IF P=Q THEN XS(Q+8)=XS(Q+12):YS(Q+8)=YS(Q+12) ELSE XS(Q+8)=XP(P):YS(Q+8)=YP(P) FI FI DIST=((XS(Q+8)-XS(P+12))^2+(YS(Q+8)-YS(P+12))^2)^0.5 IF DIST<15 AND P<>Q AND VP(Q)=P THEN CPU(Q)=1 XEXP=XP(Q):YEXP=YP(Q):GOSUB 907 ENDPLAY$(Q)="BLOWN UP BY "+STR$(P+1)+"UP" FI FI NEXT Q SPED=0 IF P=0 THEN IF T=0 DP(P)=DP(P)+(C1(7)-C1(5)) SPED=(OR(C1(10),C1(4))) IF SHOT(0)=0 SHOT(0)=C1(8)*(INT(BM/3)+1) FI IF P=1 THEN IF T=0 DP(P)=DP(P)+(C2(7)-C2(5)) SPED=(OR(C2(10),C2(4))) IF SHOT(1)=0 SHOT(1)=C2(8)*(INT(BM/3)+1) FI IF P=2 THEN IF T=0 DP(P)=DP(P)+(C1(15)-C1(13)) SPED=(OR(C1(11),C1(12))) IF SHOT(2)=0 SHOT(2)=C1(9)*(INT(BM/3)+1) FI IF P=3 THEN IF T=0 DP(P)=DP(P)+(C2(15)-C2(13)) SPED=(OR(C2(11),C2(12))) IF SHOT(3)=0 SHOT(3)=C2(9)*(INT(BM/3)+1) FI IF DP(P)<0 DP(P)=15 IF DP(P)>15 DP(P)=0 SETRGB 1,255,0,128:BNC=0 FOR W=0 TO OBS IF XS(P)OB(W,0)-OB(W,2) AND YS(P)OB(W,1)-OB(W,3) THEN IF BM>1 THEN IF BM=3 AND SHOT(P)=2 SHOT(P)=1 IF ABS(XS(P+4)-OB(W,0))>OB(W,2) AND BNC=0 THEN SD(P)=8-SD(P) IF SD(P)<0 SD(P)=16+SD(P) FI IF ABS(YS(P+4)-OB(W,1))>OB(W,3) AND BNC=0 SD(P)=16-SD(P) IF ABS(XS(P+4)-OB(W,0))>OB(W,2) OR ABS(YS(P+4)-OB(W,1))>OB(W,3) BNC=1 ELSE SHOT(P)=0:GP(P)=0 FI FILL RECT OB(W,0)-OB(W,2),OB(W,1)-OB(W,3) TO OB(W,0)+OB(W,2),OB(W,1)+OB(W,3) FI IF ABS(YP(P)-OB(W,1))OB(W,0)-OB(W,2)-15 AND XP(P)<=OB(W,0) AND (DP(P)<4 OR DP(P)>12) SPED=0 IF ABS(YP(P)-OB(W,1))=OB(W,0) AND DP(P)<12 AND DP(P)>4 SPED=0 IF ABS(XP(P)-OB(W,0))OB(W,1)-OB(W,3)-15 AND YP(P)<=OB(W,1) AND DP(P)>8 SPED=0 IF ABS(XP(P)-OB(W,0))=OB(W,1) AND DP(P)<8 SPED=0 IF ABS(XP(P)-OB(W,0))P AND CPU(Q)=0 THEN DIST=((XP(P)-XP(Q))^2+(YP(P)-YP(Q))^2)^0.5 IF DIST<=29.7 THEN IF XP(P)<=XP(Q) AND YP(P)<=YP(Q) AND (DP(P)>11 OR DP(P)=0) SPED=0 IF XP(P)<=XP(Q) AND YP(P)>=YP(Q) AND DP(P)<5 SPED=0 IF XP(P)>=XP(Q) AND YP(P)<=YP(Q) AND DP(P)>7 AND DP(P)<13 SPED=0 IF XP(P)>=XP(Q) AND YP(P)>=YP(Q) AND DP(P)>3 AND DP(P)<9 SPED=0 FI FI SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) NEXT Q CLEAR FILL RECT XP(P)-18,YP(P)-18 TO XP(P)+18,YP(P)+18 XP(P)=XP(P)+(SPED*2*SPD*COS(DP(P)*PI/8)) YP(P)=YP(P)+(-SPED*2*SPD*SIN(DP(P)*PI/8)) IF XP(P)<10 OR XP(P)>610 THEN IF XP(P)<10 XP(P)=610:IF XP(P)>610 XP(P)=10 FOR Q=0 TO 3 IF VP(Q)=P XS(Q+8)=XP(P) NEXT Q FI FOR A=0 TO 15 XV(A,P)=1.5*DST(A)*COS(ANG(A)+(DP(P)*PI/8))+XP(P) YV(A,P)=1.5*-DST(A)*SIN(ANG(A)+(DP(P)*PI/8))+YP(P) NEXT A FOR A=0 TO 3 FILL TRIANGLE XV(A*4,P),YV(A*4,P) TO XV(A*4+1,P),YV(A*4+1,P) TO XV(A*4+2,P),YV(A*4+2,P) FILL TRIANGLE XV(A*4+1,P),YV(A*4+1,P) TO XV(A*4+2,P),YV(A*4+2,P) TO XV(A*4+3,P),YV(A*4+3,P) NEXT A IF XS(P)=0 AND YS(P)=0 AND SHOT(P)>0 THEN XS(P)=(XV(5,P)+XV(7,P))/2 YS(P)=(YV(5,P)+YV(7,P))/2 FI XS(P+4)=XS(P):YS(P+4)=YS(P) CLEAR FILL RECT XS(P+4)-4,YS(P+4)-4 TO XS(P+4)+4,YS(P+4)+4 IF (XS(P)<>0 OR YS(P)<>0) AND CPU(P)=0 AND SHOT(P)>0 THEN IF BM=1 SD(P)=DP(P) GP(P)=GP(P)+1 XS(P)=XS(P)+(6*COS(SD(P)*PI/8)) YS(P)=YS(P)+(-6*SIN(SD(P)*PI/8)) IF XS(P)<10 XS(P)=610:IF XS(P)>610 XS(P)=10 FILL CIRCLE XS(P),YS(P),3 FI IF GP(P)>100 THEN CLEAR FILL RECT XS(P)-4,YS(P)-4 TO XS(P)+4,YS(P)+4:SHOT(P)=0 FI FOR Q=0 TO 3 IF P<>Q AND CPU(Q)=0 AND SHOT(P)=1 THEN DIST=((XS(P)-XP(Q))^2+(YS(P)-YP(Q))^2)^0.5 IF DIST<15 THEN SP(P)=SP(P)+1 DP(P)=DP(P)+1:IF DP>15 DP(P)=0 CLEAR FILL RECT XP(Q)-18,YP(Q)-18 TO XP(Q)+18,YP(Q)+18 XP(Q)=XP(Q)+(40*COS(SD(P)*PI/8)) YP(Q)=YP(Q)+(-40*SIN(SD(P)*PI/8)) FOR W=0 TO OBS IF ABS(XP(Q)-OB(W,0))<15+OB(W,2) AND ABS(YP(Q)-OB(W,1))<15+OB(W,3) THEN XP(Q)=XP(Q)+SIG(XP(Q)-OB(W,0))*(15+OB(W,2)) YP(Q)=YP(Q)+SIG(YP(Q)-OB(W,1))*(15+OB(W,3)) FI NEXT W IF XP(Q)<35 XP(Q)=585:IF XP(Q)>585 XP(Q)=35 IF YP(Q)<25 YP(Q)=475:IF YP(Q)>475 YP(Q)=25 SPIN=64+INT(RAN(15)) SETRGB 1,CLR(Q,0),CLR(Q,1),CLR(Q,2) FOR R=0 TO SPIN CLEAR FILL RECT XP(Q)-18,YP(Q)-18 TO XP(Q)+18,YP(Q)+18 DP(Q)=DP(Q)+1:IF DP(Q)>15 DP(Q)=0 FOR A=0 TO 15 XV(A,Q)=1.5*DST(A)*COS(ANG(A)+(DP(Q)*PI/8))+XP(Q) YV(A,Q)=1.5*-DST(A)*SIN(ANG(A)+(DP(Q)*PI/8))+YP(Q) NEXT A FOR A=0 TO 3 FILL TRIANGLE XV(A*4,Q),YV(A*4,Q) TO XV(A*4+1,Q),YV(A*4+1,Q) TO XV(A*4+2,Q),YV(A*4+2,Q) FILL TRIANGLE XV(A*4+1,Q),YV(A*4+1,Q) TO XV(A*4+2,Q),YV(A*4+2,Q) TO XV(A*4+3,Q),YV(A*4+3,Q) NEXT A WAIT 0.03 IF R<4 THEN CLEAR FILL RECT XS(R)-4,YS(R)-4 TO XS(R)+4,YS(R)+4 SHOT(R)=0:XS(R)=0:YS(R)=0:SD(R)=DP(R):GP(R)=0 FI NEXT R CLEAR FILL RECT 610,0 TO 640,75 FI FI NEXT Q IF SHOT(P)=0 THEN XS(P)=0:YS(P)=0:SD(P)=DP(P):GP(P)=0 FI TEXT 610,P*15+45,STR$(SP(P)) 310 NEXT P NEXT T UNTIL(TIME=MINS*60) FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) IF CPU(P)=0 TEXT 610,P*15+45,STR$(SP(P)) IF MINS=4 AND CPU(P)=0 ENDPLAY$(P)="WINS" IF MINS<4 AND CPU(P)=0 ENDPLAY$(P)="SCORED "+STR$(SP(P)) NEXT P GOTO 903 4 RESTORE BLAST FOR A=0 TO 2 READ DST(A):READ ANG(A) NEXT A 40 CLEAR WINDOW GOSUB 904 RESTORE BLASTINST GOSUB 908 SETRGB 1,128,128,128 TEXT 260,50,NAME$(3) TEXT 150,80,AUTHOR$ RECT 90,90 TO 500,210 TEXT 110,110,"WHO IS PLAYING?" TEXT 110,125,LSTNXT$ FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) TEXT 110+P*100,155,"MAN "+STR$(P+1)+"UP" TEXT 110+P*100,170,"NO PLAY" NEXT P SETRGB 1,128,128,128 R=0:PL=3:LM=2 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 AND M>1 R=1 IF R=2 AND M<2 R=0 M=0 FOR P=0 TO 3 CPU(P)=(YM(P)-155)/15 IF CPU(P)=0 THEN M=M+1 ELSE ENDPLAY$(P)="DID NOT PLAY" FI NEXT P UNTIL(R=1 OR R=3) IF R=3 GOTO 90 41 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=155 TEXT 110,110,"PLEASE SELECT BOMB MODE" TEXT 110,125,LSTNXT$ TEXT 110,155,"LONG RANGE - STRAIT SHOT" TEXT 110,170,"CHARGE - HOLD FOR MORE POWER" TEXT 110,185,"RAPID - SHORT RANGE RAPID FIRE" TEXT 110,200,"HOMING - AUTO-LOCK ON FUNCTION" R=0:PL=0:LM=4 REPEAT GOSUB 901 IF C1(8)=0 AND R=2 R=1 UNTIL(R=1 OR R=3) IF R=3 GOTO 40 BM=(YM(0)-155)/15 CLEAR FILL RECT 91,91 TO 499,209 YM(0)=2 TEXT 110,110,"PLEASE SELECT ASTEROID COUNT" TEXT 110,125,LSTNXT$ TEXT 110,155,"U - MORE | D - LESS" R=0:LM=0 REPEAT GOSUB 901 IF C1(8)=1 R=2 IF C1(8)=0 AND R=2 R=1 IF C1(10)=1 R=4 IF C1(10)=0 AND R=4 R=3 YM(0)=YM(0)+(C1(4)-C1(6)) IF YM(0)>10 YM(0)=2 IF YM(0)<2 YM(0)=10 CLEAR FILL RECT 110,173 TO 131,157 TEXT 110,170,STR$(YM(0)) UNTIL(R=1 OR R=3) IF R=3 GOTO 41 OBS=YM(0) FOR P=0 TO 3 FOR V=0 TO 15 XV(V,P)=0:YV(V,P)=0 NEXT V NEXT P XP(0)=50:YP(0)=250:DP(0)=0 XP(1)=570:YP(1)=250:DP(1)=8 XP(2)=310:YP(2)=40:DP(2)=12 XP(3)=310:YP(3)=460:DP(3)=4 FOR A=0 TO 3 XS(A)=0:YS(A)=0:OB(A+20,0)=0:OB(A+20,1)=0 NEXT A GOSUB 902 FOR A=4 TO 15 XS(A)=100 IF A<8 XS(A)=4000 YS(A)=1 NEXT A FOR W=0 TO 25 FOR A=0 TO 3 OB(W,A)=0 NEXT A IF W>0 AND W<=OBS THEN OB(W,0)=110+RAN(400):OB(W,1)=100+RAN(300):OB(W,2)=20:OB(W,3)=INT(RAN(15)) FI NEXT W RR=0 REPEAT A$=RIGHT$(time$,1) BA=PEEK("port1") BB=PEEK("port2") FOR A=0 TO 15 C1(A)=SIG(AND(BA,2^A)) C2(A)=SIG(AND(BB,2^A)) NEXT A IF C1(3)=1 OR C2(3)=1 RR=2 IF C1(3)=0 AND C2(3)=0 AND RR=2 RR=1 IF RR=1 THEN RR=0:GOSUB 905 FI SETRGB 1,128,128,128:TEXT 609,35,"ESH" FOR T=0 TO 6 FOR P=0 TO 3 IF P=0 OB(0,0)=0 OB(0,0)=OB(0,0)+OR(CPU(P),SIG(ABS(1-SIG(XS(P+4))))) IF A$<>B$ THEN XS(P+4)=XS(P+4)-5 IF P=3 B$=A$ FI IF XS(P+4)<1 ENDPLAY$(P)="RAN OUT OF ENERGY" IF XS(P+12)<1 AND CPU(P)=0 THEN CPU(P)=1 XEXP=XP(P):YEXP=YP(P):GOSUB 907 ENDPLAY$(P)="BLEW UP" FI IF SP(P)=0 AND T=6 AND XS(P+8)<100 AND XS(P+4)>0 THEN XS(P+4)=XS(P+4)-1:XS(P+8)=XS(P+8)+1 FI IF XS(P+8)=100 YS(P+8)=1 FOR B=1 TO 3 SETRGB 1,190,95,0 IF SP(P)=0 AND B=2 SETRGB 1,0,190,95 IF XS(P+B*4)<0 XS(P+B*4)=0 IF B=1 THEN CLEAR FILL RECT 611,41+P*105 TO 618,141+P*105-XS(P+4)/40 FILL RECT 611,141+P*105 TO 618,141+P*105-XS(P+4)/40 FI IF B>1 THEN CLEAR FILL RECT 601+B*10,41+P*105 TO 608+B*10,141+P*105-XS(P+B*4) FILL RECT 601+B*10,141+P*105 TO 608+B*10,141+P*105-XS(P+B*4) FI SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) RECT 600+B*10,40+P*105 TO 609+B*10,142+P*105 NEXT B IF CPU(P)>0 GOTO 410 SPED=0 IF P=0 THEN IF XS(4)>0 THEN IF C1(4)=1 OR C1(5)=1 OR C1(6)=1 OR C1(7)=1 OR (C1(8)=1 AND SHOT(0)=0) XS(4)=XS(4)-1 IF T=0 DP(P)=DP(P)+(C1(7)-C1(5)) SPED=(C1(4)-C1(6))/10 IF SHOT(0)=0 AND BM=1 AND OB(20,1)<30 THEN OB(20,1)=OB(20,1)+C1(8):FILL CIRCLE XV(0,0),YV(0,0),OB(20,1) FI FI FIRE=C1(8):SHIELD=C1(10) FI IF P=1 THEN IF XS(5)>0 THEN IF C2(4)=1 OR C2(5)=1 OR C2(6)=1 OR C2(7)=1 OR (C2(8)=1 AND SHOT(1)=0) XS(5)=XS(5)-1 IF T=0 DP(P)=DP(P)+(C2(7)-C2(5)) SPED=(C2(4)-C2(6))/10 IF SHOT(1)=0 AND BM=1 AND OB(21,1)<30 THEN OB(21,1)=OB(21,1)+C2(8):FILL CIRCLE XV(0,1),YV(0,1),OB(21,1) FI FI FIRE=C2(8):SHIELD=C2(10) FI IF P=2 THEN IF XS(6)>0 THEN IF C1(12)=1 OR C1(13)=1 OR C1(14)=1 OR C1(15)=1 OR (C1(9)=1 AND SHOT(2)=0) XS(6)=XS(6)-1 IF T=0 DP(P)=DP(P)+(C1(15)-C1(13)) SPED=(C1(12)-C1(14))/10 IF SHOT(2)=0 AND BM=1 AND OB(22,1)<30 THEN OB(22,1)=OB(22,1)+C1(9):FILL CIRCLE XV(0,2),YV(0,2),OB(22,1) FI FI FIRE=C1(9):SHIELD=C1(11) FI IF P=3 THEN IF XS(7)>0 THEN IF C2(12)=1 OR C2(13)=1 OR C2(14)=1 OR C2(15)=1 OR (C2(9)=1 AND SHOT(3)=0) XS(7)=XS(7)-1 IF T=0 DP(P)=DP(P)+(C2(15)-C2(13)) SPED=(C2(12)-C2(14))/10 IF SHOT(3)=0 AND BM=1 AND OB(23,1)<30 THEN OB(23,1)=OB(23,1)+C2(9):FILL CIRCLE XV(0,3),YV(0,3),OB(23,1) FI FI FIRE=C2(9):SHIELD=C2(11) FI IF XS(P+4)>0 THEN IF (FIRE=0 AND OB(20+P,1)>2) OR OB(20+P,1)=30 SHOT(P)=1 IF BM<>1 AND SHOT(P)=0 AND FIRE=1 THEN OB(20+P,1)=3:SHOT(P)=1 FI FI IF SHIELD=1 AND OB(20+P,0)=0 THEN IF SP(P)=0 AND XS(P+8)>0 YS(P+8)=1 IF SP(P)=1 YS(P+8)=0 OB(20+P,0)=1 FI SP(P)=YS(P+8) OB(20+P,0)=SHIELD IF DP(P)<0 DP(P)=15 IF DP(P)>15 DP(P)=0 OB(P+20,2)=OB(P+20,2)+SPED IF ABS(OB(P+20,2))>10 OB(P+20,2)=10*SIG(OB(P+20,2)) IF T/2=INT(T/2) THEN FOR W=1 TO OBS-1 FOR WW=W+1 TO OBS IF OB(W,2)>0 AND OB(WW,2)>0 THEN DIST=((OB(W,0)-OB(WW,2))^2+(OB(W,1)-OB(WW,1))^2)^0.5 IF DISTOB(WW,0) THEN ANGLE=ATAN(ABS((OB(W,1)-OB(WW,1))/(OB(W,0)-OB(WW,0)))) IF OB(W,0)>OB(WW,0) AND OB(W,1)>OB(WW,1) ANGLE=PI-ANGLE IF OB(W,0)>OB(WW,0) AND OB(W,1)OB(WW,1) ANGLE=3*ANGLE FI ANGLE=INT(16*ANGLE/(PI*2)) OB(WW,3)=ANGLE-OB(WW,3)+ANGLE IF OB(WW,3)<0 OB(WW,3)=OB(WW,3)+16 IF OB(WW,3)>15 OB(WW,3)=OB(WW,3)-16 OB(W,3)=ANGLE-OB(W,3)+ANGLE IF OB(W,3)<0 OB(W,3)=OB(W,3)+16 IF OB(W,3)>15 OB(W,3)=OB(W,3)-16 FI FI NEXT WW NEXT W FOR W=1 TO OBS DIST=((XS(P)-OB(W,0))^2+(YS(P)-OB(W,1))^2)^0.5 IF DISTOB(W,0) THEN ANGLE=ATAN(ABS((YS(P)-OB(W,1))/(XS(P)-OB(W,0)))) IF XS(P)>OB(W,0) AND YS(P)>OB(W,1) ANGLE=PI-ANGLE IF XS(P)>OB(W,0) AND YS(P)OB(W,1) ANGLE=3*ANGLE FI ANGLE=INT(16*ANGLE/(PI*2)) OB(W,3)=ANGLE-OB(W,3)+ANGLE IF OB(W,3)<0 OB(W,3)=OB(W,3)+16 IF OB(W,3)>15 OB(W,3)=OB(W,3)-16 CLEAR FILL RECT XS(P)-OB(P+20,1),YS(P)-OB(P+20,1) TO XS(P)+OB(P+20,1),YS(P)+OB(P+20,1) OB(W,2)=OB(W,2)-(OB(P+20,1)-2):SHOT(P)=0:OB(P+20,1)=2 FI DIST=((XP(P)-OB(W,0))^2+(YP(P)-OB(W,1))^2)^0.5 IF DIST<15+SP(P)*5+OB(W,2) THEN IF XP(P)<>OB(W,0) THEN ANGLE=ATAN(ABS((YP(P)-OB(W,1))/(XP(P)-OB(W,0)))) IF XP(P)>OB(W,0) AND YP(P)>OB(W,1) ANGLE=PI-ANGLE IF XP(P)>OB(W,0) AND YP(P)OB(W,1) ANGLE=3*ANGLE FI ANGLE=INT(16*ANGLE/(PI*2)) OB(W,3)=ANGLE-OB(W,3)+ANGLE IF OB(W,3)<0 OB(W,3)=OB(W,3)+16 IF OB(W,3)>15 OB(W,3)=OB(W,3)-16 DP(P)=ANGLE-DP(P)+ANGLE IF DP(P)<0 DP(P)=DP(P)+16 IF DP(P)>15 DP(P)=DP(P)-16 IF SP(P)=0 XS(P+12)=XS(P+12)-1 IF SP(P)=1 XS(P+8)=XS(P+8)-1 IF XS(P+8)<1 THEN SP(P)=0:XS(P+8)=0:YS(P+8)=0 FI OB(W,2)=OB(W,2)-1 FI SETRGB 1,64,64,64 CLEAR FILL RECT OB(W,0)-20,OB(W,1)-20 TO OB(W,0)+20,OB(W,1)+20 IF OB(W,2)>0 THEN OB(W,0)=OB(W,0)+(1+INT((21-OB(W,2))/5))*COS(OB(W,3)*PI/8) OB(W,1)=OB(W,1)-(1+INT((21-OB(W,2))/5))*SIN(OB(W,3)*PI/8) IF OB(W,0)<0 OB(W,0)=610:IF OB(W,0)>610 OB(W,0)=0 IF OB(W,1)<0 OB(W,1)=500:IF OB(W,1)>500 OB(W,1)=0 FILL RECT OB(W,0)-OB(W,2),OB(W,1)-OB(W,2)*0.35 TO OB(W,0)+OB(W,2),OB(W,1)+OB(W,2)*0.35 FILL RECT OB(W,0)-OB(W,2)*0.35,OB(W,1)-OB(W,2) TO OB(W,0)+OB(W,2)*0.35,OB(W,1)+OB(W,2) FILL RECT OB(W,0)-OB(W,2)*0.7,OB(W,1)-OB(W,2)*0.7 TO OB(W,0)+OB(W,2)*0.7,OB(W,1)+OB(W,2)*0.7 ELSE OB(W,0)=1000:OB(W,1)=1000 FI NEXT W FI FOR Q=0 TO 3 IF Q<>P AND CPU(Q)=0 THEN DIST=((XP(P)-XP(Q))^2+(YP(P)-YP(Q))^2)^0.5 IF DIST<=30+SP(P)*5+SP(Q)*5 THEN IF XP(P)<>XP(Q) THEN ANGLE=ATAN(ABS((YP(P)-YP(Q))/(XP(P)-XP(Q)))) IF XP(P)>XP(Q) AND YP(P)>=YP(Q) ANGLE=PI-ANGLE IF XP(P)>XP(Q) AND YP(P)<=YP(Q) ANGLE=PI+ANGLE IF XP(P)YP(Q) ANGLE=3*ANGLE FI ANGLE=INT(16*ANGLE/(PI*2)) DP(Q)=ANGLE-DP(Q)+ANGLE IF DP(Q)<0 DP(Q)=DP(Q)+16 IF DP(Q)>15 DP(Q)=DP(Q)-16 DP(P)=ANGLE-DP(P)+ANGLE IF DP(P)<0 DP(P)=DP(P)+16 IF DP(P)>15 DP(P)=DP(P)-16 IF SP(P)=0 XS(P+12)=XS(P+12)-1 IF SP(P)=1 XS(P+8)=XS(P+8)-1 IF XS(P+8)<=0 THEN SP(P)=0:XS(P+8)=0:YS(P+8)=0 FI IF SP(Q)=0 XS(Q+12)=XS(Q+12)-1 IF SP(Q)=1 XS(Q+8)=XS(Q+8)-1 IF XS(Q+8)<=0 THEN SP(Q)=0:XS(Q+8)=0:YS(Q+8)=0 FI FI FI SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) NEXT Q CLEAR FILL RECT XP(P)-22,YP(P)-22 TO XP(P)+22,YP(P)+22 CLEAR FILL RECT XV(0,P)-OB(P+20,1),YV(0,P)-OB(P+20,1) TO XV(0,P)+OB(P+20,1),YV(0,P)+OB(P+20,1) XP(P)=XP(P)+OB(P+20,2)*COS(DP(P)*PI/8) YP(P)=YP(P)-OB(P+20,2)*SIN(DP(P)*PI/8) IF XP(P)<0 XP(P)=600:IF XP(P)>600 XP(P)=0 IF YP(P)<0 YP(P)=500:IF YP(P)>500 YP(P)=0 FOR A=0 TO 2 XV(A,P)=DST(A)*COS(ANG(A)+(DP(P)*PI/8))+XP(P) YV(A,P)=-DST(A)*SIN(ANG(A)+(DP(P)*PI/8))+YP(P) XV(A+3,P)=DST(A)*COS(-ANG(A)+(DP(P)*PI/8))+XP(P) YV(A+3,P)=-DST(A)*SIN(-ANG(A)+(DP(P)*PI/8))+YP(P) NEXT A IF SP(P)=1 CIRCLE XP(P),YP(P),20 FILL CIRCLE XP(P),YP(P),15 CLEAR FILL TRIANGLE XV(0,P),YV(0,P) TO XV(1,P),YV(1,P) TO XV(2,P),YV(2,P) CLEAR FILL TRIANGLE XV(3,P),YV(3,P) TO XV(4,P),YV(4,P) TO XV(5,P),YV(5,P) IF BM=3 THEN FOR Q=0 TO 3 DST(Q+6)=10000 IF CPU(Q)=0 AND P<>Q THEN DST(Q+6)=((XS(P)-XP(Q))^2+(YS(P)-YP(Q))^2)^0.5 FI NEXT Q FOR Q=0 TO 3 FOR QQ=0 TO 3 IF Q<>QQ AND DST(6+Q)XP(VP(P)) THEN ANGLE=ATAN(ABS((YS(P)-YS(VP(P)))/(XS(P)-XP(VP(P))))) IF XS(P)>XP(VP(P)) AND YS(P)>YP(VP(P)) ANGLE=PI-ANGLE IF XS(P)>XP(VP(P)) AND YS(P)YP(VP(P)) ANGLE=3*ANGLE FI ANGLE=INT(16*ANGLE/(2*PI)) IF ABS(ANGLE-SD(P))>8 SD(P)=SD(P)-SIG(ANGLE-SD(P)) IF ABS(ANGLE-SD(P))<8 SD(P)=SD(P)+SIG(ANGLE-SD(P)) IF SD(P)<0 SD(P)=SD(P)+16 IF SD(P)>16 SD(P)=SD(P)-16 FI IF XS(P)=0 AND YS(P)=0 AND SHOT(P)>0 THEN XS(P)=XV(0,P):YS(P)=YV(0,P) FI CLEAR FILL RECT XS(P)-OB(P+20,1),YS(P)-OB(P+20,1) TO XS(P)+OB(P+20,1),YS(P)+OB(P+20,1) IF (XS(P)<>0 OR YS(P)<>0) AND CPU(P)=0 AND SHOT(P)>0 THEN GP(P)=GP(P)+1 XS(P)=XS(P)+(12*COS(SD(P)*PI/8)) YS(P)=YS(P)+(-12*SIN(SD(P)*PI/8)) IF XS(P)<0 XS(P)=600:IF XS(P)>600 XS(P)=0 IF YS(P)<0 YS(P)=500:IF YS(P)>500 YS(P)=0 FILL CIRCLE XS(P),YS(P),OB(P+20,1) FI IF GP(P)>50 OR (BM=2 AND GP(P)>15) THEN CLEAR FILL RECT XS(P)-OB(P+20,1),YS(P)-OB(P+20,1) TO XS(P)+OB(P+20,1),YS(P)+OB(P+20,1):SHOT(P)=0 FI FOR Q=0 TO 3 IF P<>Q AND CPU(Q)=0 AND SHOT(P)=1 THEN DIST=((XS(P)-XP(Q))^2+(YS(P)-YP(Q))^2)^0.5 IF DIST<15+SP(Q)*5+OB(P+20,1) THEN CLEAR FILL RECT XS(P)-OB(P+20,1),YS(P)-OB(P+20,1) TO XS(P)+OB(P+20,1),YS(P)+OB(P+20,1):SHOT(P)=0 IF BM<>1 THEN IF SP(Q)=0 XS(Q+12)=XS(Q+12)-5 IF SP(Q)=1 XS(Q+8)=XS(Q+8)-5 ELSE IF SP(Q)=0 XS(Q+12)=XS(Q+12)-(OB(P+20,1)-2) IF SP(Q)=1 XS(Q+8)=XS(Q+8)-(OB(P+20,1)-2) FI OB(P+20,1)=2 IF XS(Q+8)<=0 THEN SP(Q)=0:XS(Q+12)=XS(Q+12)+XS(Q+8):XS(Q+8)=0:YS(Q+8)=0 FI FI FI NEXT Q IF SHOT(P)=0 THEN XS(P)=0:YS(P)=0:SD(P)=DP(P):IF GP(P)>0 OB(P+20,1)=2:GP(P)=0 FI 410 NEXT P NEXT T UNTIL(OB(0,0)>2) FOR P=0 TO 3 IF ENDPLAY$(P)="RAN OUT OF ENERGY" CPU(P)=1 IF CPU(P)=0 ENDPLAY$(P)="WINS" NEXT P GOTO 903 1234 CLEAR WINDOW INST=2 SETRGB 1,128,0,255 TEXT 20,30,"TO EXIT THESE INSTRUCTIONS AT ANY STAGE PRESS START" RESTORE ALLINST 1235 PAGE=PAGE+1:NXT=0 CLEAR FILL RECT 20,46 TO 640,512 TEXT 20,75,"L2 - NEXT" TEXT 20,60,"PAGE "+STR$(PAGE) GOSUB 906 REPEAT GOSUB 901 IF C1(3)=1 INST=1 IF INST=1 AND C1(3)=0 INST=0 IF C1(8)=1 NXT=1 IF PAGE<8 AND NXT=1 AND C1(8)=0 GOTO 1235 UNTIL(INST=0) PAGE=0:GOTO 90 901 BA=PEEK("port1") BB=PEEK("port2") FOR A=0 TO 15 C1(A)=SIG(AND(BA,2^A)) C2(A)=SIG(AND(BB,2^A)) NEXT A WAIT 0.15 IF LM>0 THEN IF C1(8)=1 R=2 IF C1(10)=1 R=4 IF C1(10)=0 AND R=4 R=3 FOR P=0 TO PL YM(P+4)=YM(P) IF P=0 YM(P)=YM(P)+(C1(6)-C1(4))*15 IF P=1 YM(P)=YM(P)+(C2(6)-C2(4))*15 IF P=2 YM(P)=YM(P)+(C1(14)-C1(12))*15 IF P=3 YM(P)=YM(P)+(C2(14)-C2(12))*15 IF YM(P)>140+LM*15 YM(P)=155 IF YM(P)<155 YM(P)=140+LM*15 CLEAR FILL RECT (P+1)*100,YM(P+4) TO (P+1)*100+5,YM(P+4)-10 FILL RECT (P+1)*100,YM(P) TO (P+1)*100+5,YM(P)-10 NEXT P FI RETURN 902 CLEAR WINDOW RECT 300,230 TO 370,260 FOR A=0 TO 3 TEXT 310,250,CDOWN$(A) WAIT 1 CLEAR FILL RECT 310,231 TO 369,259 NEXT A CLEAR WINDOW RETURN 903 SETRGB 1,128,128,128 CLEAR FILL RECT 140,230 TO 510,320 RECT 140,230 TO 510,320 TEXT 150,250,"START TO PLAY AGAIN, SELECT TO QUIT" FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) TEXT 150,265+P*15,STR$(P+1)+"UP "+ENDPLAY$(P) NEXT P 953 LM=0 GOSUB 901 IF C1(3)=1 OR C2(3)=1 GOTO 92 IF C1(0)=1 OR C2(0)=1 GOTO 90 GOTO 953 904 SETRGB 1,128,128,128 FOR B=0 TO 1 RESTORE PAD RECT 200,400-B*150 TO 400,450-B*150 FOR A=0 TO 1 READ XX:READ YY:READ CC CLEAR FILL CIRCLE XX,YY-B*150,CC CIRCLE XX,YY-B*150,CC NEXT A FOR A=0 TO 5 READ XX:READ YY:READ A$ TEXT XX,YY-B*150,A$ NEXT A NEXT B RETURN 905 LM=0 REPEAT GOSUB 901 IF C1(3)=1 OR C2(3)=1 RR=2 IF C1(3)=0 AND C2(3)=0 AND RR=2 RR=1 UNTIL(RR=1) RR=0 RETURN 906 A=-1 REPEAT A=A+1 READ INST$ TEXT 20,90+A*15,INST$ UNTIL(INST$="" OR A=28) RETURN 907 FOR A=2 TO 255 FOR D=0 TO 59 SETRGB 1,257-A,129-A/2,255 CLEAR DOT XEXP+(A-1)*COS(0.10472*D),YEXP+(A-1)*SIN(0.10472*D) DOT XEXP+(A)*COS(0.10472*D),YEXP+(A)*SIN(0.10472*D) NEXT D NEXT A RETURN 908 FOR P=0 TO 3 SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2) FOR B=0 TO 6 READ A$ TEXT 20+SIG(AND(P,2))*480,250+AND(P,1)*150+B*15,A$ NEXT B NEXT P RETURN LABEL TITLES DATA "TRON","TAG-TEAM TENNIS","TANKS 4 THE MEMORIES","BLASTEROIDS" LABEL TANK DATA 9.9,2.36,8.06,1.05,7.62,2.74,5,0.64,2.24,2.68,7.07,0.14,2.24,-2.68,7.07,-0.14,7.62,-2.74,5,-0.64,9.9,-2.36,8.06,-1.05,7.28,1.85,7.28,1.29,7.28,-1.85,7.28,-1.29 LABEL PCOLOUR DATA 255,0,0,128,128,255,255,255,0,0,255,0 LABEL T4L0 DATA 310,4,300,4,310,495,300,4,14,250,4,250,605,250,4,250 LABEL T4L1 DATA 76,172,12,6,76,328,12,6,544,172,12,6,544,328,12,6,82,250,6,84,538,250,6,84,202,250,30,18,418,250,30,18,310,106,18,30,310,394,18,30 LABEL T4L2 DATA 166,250,18,30,454,250,18,30,310,27,18,18,310,473,18,18,100,64,24,6,100,436,24,6,520,64,24,6,520,436,24,6,232,88,24,6,232,412,24,6,388,88,24,6,388,412,24,6,214,106,6,24,214,394,6,24,406,106,6,24,406,394,6,24 LABEL T4L3 DATA 13,250,4,125,607,250,4,125,310,250,150,4,457,130,4,123,163,370,4,123,168,128,150,4,452,372,150,4 LABEL BLAST DATA 16,0,17,0.8,10,2 LABEL PAD DATA 200,425,50,400,425,50,195,400,"U",195,460,"D",165,430,"L R",395,400,"T",395,460,"X",365,430,"S O" LABEL TRONINST DATA "1UP","L2=N/A","L1=N/A","U =UP","L =LEFT","R =RIGHT","D =DOWN","2UP","L2=N/A","L1=N/A","U =UP","L =LEFT","R =RIGHT","D =DOWN","3UP","R2=N/A","R1=N/A","T =UP","S =LEFT","O =RIGHT","X =DOWN","4UP","R2=N/A","R1=N/A","T =UP","S =LEFT","O =RIGHT","X =DOWN" LABEL TTTINST0 DATA "1UP","L2=FASTER","L1=N/A","U =UP","L =SOFT","R =SMASH","D =DOWN","2UP","L2=FASTER","L1=N/A","U =UP","L =SMASH","R =SOFT","D =DOWN","3UP","R2=N/A","R1=N/A","T =N/A","S=N/A","O =N/A","X =N/A","4UP","R2=N/A","R1=N/A","T =N/A","S =N/A","O =N/A","X =N/A" LABEL TTTINST1 DATA "1UP","L2=FASTER","L1=N/A","U =UP","L =SOFT","R =SMASH","D =DOWN","2UP","L2=FASTER","L1=N/A","U =UP","L =SMASH","R =SOFT","D =DOWN","3UP","R2=FASTER","R1=N/A","T =UP","S =SOFT","O =SMASH","X =DOWN","4UP","R2=FASTER","R1=N/A","T =UP","S =SMASH","O =SOFT","X =DOWN" LABEL TTTINST2 DATA "1UP","L2=FASTER","L1=N/A","U =UP","L =SOFT","R =SMASH","D =DOWN","2UP","L2=FASTER","L1=N/A","U =UP","L =SMASH","R =SOFT","D =DOWN","3UP","R2=FASTER","R1=N/A","T =SOFT","S =LEFT","O =RIGHT","X =SMASH","4UP","R2=FASTER","R1=N/A","T =SMASH","S =LEFT","O =RIGHT","X =SOFT" LABEL T4TMINST DATA "1UP","L2=FIRE","L1=DRIVE","U =DRIVE","L =TURN","R =TURN","D =N/A","2UP","L2=FIRE","L1=DRIVE","U =DRIVE","L =TURN","R =TURN","D =N/A","3UP","R2=FIRE","R1=DRIVE","T =DRIVE","S =TURN","O =TURN","X =N/A","4UP","R2=FIRE","R1=DRIVE","T =DRIVE","S =TURN","O =TURN","X =N/A" LABEL BLASTINST DATA "1UP","L2=FIRE","L1=SHIELD","U =BOOST","L =TURN","R =TURN","D =RETRO","2UP","L2=FIRE","L1=SHIELD","U =BOOST","L =TURN","R =TURN","D =RETRO","3UP","R2=FIRE","R1=SHIELD","T =BOOST","S =TURN","O =TURN","X =RETRO","4UP","R2=FIRE","R1=SHIELD","T =BOOST","S =TURN","O =TURN","X =RETRO" LABEL ALLINST DATA "THIS IS THE 4IN1 VOLUME 1 INSTRUCTION MANUAL." DATA "4IN1 IS A SELECTION OF GAMES PROGRAMMED FOR THE" DATA "PLAYSTATION 2, DESIGNED TO RUN WITH THE USE OF THE" DATA "SUPPLIED DEMO DISK AND A MEMORY CARD (8MB) (FOR" DATA "PLAYSTATION 2). THESE GAMES ARE BASED ON 1970'S AND" DATA "1980'S ARCADE HITS, AND ALTHOUGH THE GRAPHICS ARE" DATA "LESS THAN THE PLAYSTATION 2 IS CAPABLE OF, WE HOPE" DATA "YOU APPRECIATE THE GAME PLAY." DATA "" DATA "THE MAIN MENU ALLOWS YOU TO SELECT WHICH GAME YOU" DATA "WOULD LIKE TO PLAY. USE LEFT AND RIGHT TO STEER THE" DATA "TANK, AND PRESS R2 TO FIRE A SHOT AND START THE" DATA "GAME. EACH GAME IS REPRESENTED BY A SYMBOL, AND THE" DATA "NAME OF THE GAME YOU ARE AIMING AT IS DISPLAYED AT" DATA "THE TOP OF THE SCREEN." DATA "THE MENUS ARE NAVIGATED BY USING THE L BUTTONS ON" DATA "JOY-PAD 1. L1 GOES BACKWARDS, AND L2 PROGRESSES." DATA "IF IT ONLY HAS ONE OPTION TO CHANGE, USE UP AND" DATA "DOWN ON PAD 1 TO CHANGE THE OPTION. IF THERE ARE" DATA "FOUR OPTIONS, EACH PLAYER CAN CHANGE THEM WITH UP" DATA "AND DOWN BUTTONS FOR PLAYERS ONE AND TWO, TRIANGLE" DATA "AND CROSS BUTTONS FOR PLAYERS THREE AND FOUR." DATA "" DATA "FOUR WAY PLAY" DATA "TO GET FOUR PLAYERS ON EACH GAME WITHOUT A MULTI-" DATA "TAP, THE JOY-PADS ARE SPLIT IN TWO. PLAYER ONE USES" DATA "THE D-PAD AND L BUTTONS ON PAD 1. PLAYER TWO USES" DATA "THE D-PAD AND L BUTTONS ON PAD 2. PLAYER THREE USES" DATA "THE TSOX AND R BUTTONS ON PAD 1. PLAYER FOUR USES" DATA "THE TSOX AND R BUTTONS ON PAD 2." DATA "TSOX STANDS FOR TRIANGLE, SQUARE, CIRCLE, CROSS." DATA "THE USE OF TSOX BUTTONS IS SUPPOSED TO BE LIKENED" DATA "TO THE USE OF THE D-PAD." DATA "TRIANGLE IS UP, SQUARE IS LEFT, CIRCLE IS RIGHT," DATA "AND CROSS IS DOWN." DATA "IN EACH GAME, PLAYER ONE IS RED, PLAYER TWO IS" DATA "BLUE, PLAYER THREE IS YELLOW, AND PLAYER FOUR IS" DATA "GREEN" DATA "" DATA "TRON" DATA "THE BASIC IDEA BEHIND TRON IS TO RIDE AROUND THE" DATA "ARENA WHILE BUILDING A WALL ON YOUR MOTORBIKE. IF" DATA "YOU HIT A WALL OR THE PERIMETER, YOU ARE OUT, AND" DATA "YOUR WALL IS SMASHED." DATA "YOU CAN PLAY ALONE AGAINST THE CPU OR YOUR FRIENDS" DATA "TO SEE WHO IS THE BEST." DATA "THE GAME STARTS WITH EACH PERSON IN A RANDOM" DATA "POSITION, FACING AWAY FROM THE WALL." DATA "USE UP, DOWN, LEFT AND RIGHT TO STEER." DATA "THE CPU HAS THREE LEVELS OF DIFFICULTY." DATA "D.BECKHAM IS EASY. IT MAY DIE IF IT HITS A TURN." DATA "J.VEGAS IS MEDIUM. KILL IT WITH A DEAD END." DATA "B.HILL WILL CHASE YOU - BE AFRAID..." DATA "ONE PLAYER VS THREE CPUS REVEALS A HIDDEN CHALLENGE" DATA "IN THE FORM OF V.RAPTOR. THEY ATTACK YOU TOGETHER," DATA "SO TRY HARD NOT TO CRASH!" DATA "" DATA "TAG-TEAM TENNIS" DATA "CLASSIC STYLE BAT AND BALL ACTION FOR UP TO FOUR" DATA "PLAYERS. CLASSIC MODE IS FOR TWO, WHILE TAG-TEAM," DATA "DOUBLES, AND FOUR-WAY FURY CAN BE PLAYED BY UP TO" DATA "FOUR. CLASSIC IS A STANDARD GAME OF TENNIS." DATA "TAG-TEAM IS A SIDE-BY SIDE VARIATION OF DOUBLES." DATA "EACH PLAYER MAY DEFEND ONLY HALF A SIDE!" DATA "DOUBLES IS THE STANDARD DOUBLES MATCH. WE RECCOMEND" DATA "THREE OR FOUR PEOPLE FOR THIS, AS A CPU PARTNER CAN" DATA "BE IRRITATING. 4-WAY FURY IS AN ALL OUT BATTLE TO" DATA "BE CHAMPION." DATA "IN MOST MODESUP AND DOWN ARE USED TO MOVE, BUT IN" DATA "4-WAY FURY PLAYERS THREE AND FOUR USE LEFT AND" DATA "RIGHT. YOU CAN SLOW THE BALL DOWN BY PRESSING THE" DATA "DIRECTION AWAY FROM THE MIDDLE OF THE COURT AS YOU" DATA "HIT IT. TO SPEED THE BALL UP, PRESS TOWARDS THE" DATA "MIDDLE OF THE COURT. YOU CAN CHANGE THE ANGLE OF" DATA "BOUNCE ON THE BALL BY HITTING IT WITH THE END OF" DATA "YOUR PADDLE. MASTERING THESE ABILITIES IS THE KEY" DATA "TO DEFEATING THE CPU. L2 OR R2 WILL SPEED YOU UP." DATA "" DATA "TANKS 4 THE MEMORIES" DATA "WHO IS THE BEST TANK DRIVER? RE-LIVE THE TANK" DATA "BALLTES OF COMBAT (R) AS YOU SHOOT YOUR FRIENDS TO" DATA "SCORE POINTS. ALL THREE ORIGINAL LEVELS, PLUS AN" DATA "ALL NEW LEVEL TO GET YOU GOING! BOUNCY BOMBS AND" DATA "STEERABLE BOMBS ALSO MAKE A COMEBACK, AND A NEW" DATA "STYLE OF PLAY HAS BEEN ADDED - FLAG-TAG! STEAL" DATA "YOUR OPPONENT'S FLAGS AND RETURN THEM TO BASE TO" DATA "DESTROY THEM! IF YOU SHOOT A TANK HOLDING FLAGS, IT" DATA "DROPS THEM. TOUCH YOUR OWN TO RETURN IT TO BASE." DATA "STEER WITH LEFT AND RIGHT, AND USE UP OR L1 OR R1" DATA "TO MOVE FORWARDS. SHOOT USING L2 OR R2." DATA "" DATA "BLASTEROIDS" DATA "SPACE BATTLES ARE DANGEROUS AMONGST ASTEROIDS, SO" DATA "CONVERVE YOUR ENERGY AND BLOW UP YOUR FRIENDS. LAST" DATA "SHIP IN ONE PIECE WINS. TURNING, ACCELERATING," DATA "BRAKING, AND SHOOTING USE UP ENERGY. CHARGING UP" DATA "YOUR SHIELD AND LIFE SUPPORT ALSO USE UP ENERGY, SO" DATA "BE CAREFUL, OR YOU WILL END UP DRIFTING. SHOOT THE" DATA "ASTEROIDS TO MAKE THEM SMALLER, BUT ALWAYS" DATA "REMEMBER TO WATCH YOUR BACK." DATA "USE LEFT AND RIGHT TO STEER, UP TO ACCELERATE, AND" DATA "DOWN TO BRAKE. L1 OR R1 SWITCHES YOUR SHIELD ON AND" DATA "OFF, WHILE L2 OR R2 MAKE YOU SHOOT. YOUR SHIELD" DATA "CANNOT BE SWITCHED OFF AT FULL CHARGE, AND WILL" DATA "SWITCH OFF AT NO CHARGE." DATA "" DATA "CREDITS" DATA " RESEARCHER - ANTHONY BLACK" DATA " GAME DESIGN - ANTHONY BLACK" DATA " PROGRAMMER - ANTHONY BLACK" DATA " GRAPHICS - ANTHONY BLACK" DATA " TESTERS - KENNETH BLACK" DATA " - MICHELLE KNIGHT" DATA " - ALEX MCGUINNESS" DATA "SPECIAL THANKS TO - PLAYTIME MULTIMEDIA" DATA " - SONY" DATA " - WWW.YABASIC.CO.UK" DATA "" LABEL TTO DATA "THREE","TWO","ONE","GO!" LABEL CNAM DATA "RON","BOB","YAN","GAV"