
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(20,4):DIM YV(20,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 POW(4)
DIM XS(16):DIM YS(16)
DIM OB(35,4)
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
SETRGB 1,0,255,0
FILL CIRCLE 310,370,15
LINE 310,370 TO 330,350
RESTORE BIPLANE
FOR A=0 TO 15
READ ANG(A):READ DST(A)
NEXT A
FOR A=0 TO 19
IF A<16 THEN
XV(A,1)=DST(A)*COS(ANG(A))+430
YV(A,1)=-DST(A)*SIN(ANG(A))+250
ELSE
XV(A,1)=DST(A-4)*COS(2*PI-ANG(A-4))+430
YV(A,1)=-DST(A-4)*SIN(2*PI-ANG(A-4))+250
FI
NEXT A
SETRGB 1,255,0,0
FOR A=0 TO 4
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,128,128,255
RESTORE CLOWN
FOR A=0 TO 9
READ DST(A):READ ANG(A)
NEXT A
FOR A=0 TO 4
XV(A*2,1)=DST(A*2):YV(A*2,1)=ANG(A*2)
XV(A*2+1,1)=DST(A*2+1):YV(A*2+1,1)=ANG(A*2+1)
FILL RECT 305+XV(A*2,1),125+YV(A*2,1) TO 305+XV(A*2+1,1),125+YV(A*2+1,1)
IF A<4 YM(A)=170
NEXT A
RESTORE JETPLANE
FOR A=0 TO 8
READ ANG(A):READ DST(A)
NEXT A
SETRGB 1,255,255,0
FILL TRIANGLE 190,235 TO 180,250 TO 200,250
SETRGB 1,255,0,0
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 JET"
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 8
XV(A,0)=5.3*DST(A)*COS(ANG(A)+(B*PI/8))+310
YV(A,0)=-5.3*DST(A)*SIN(ANG(A)+(B*PI/8))+250
NEXT A
FOR A=0 TO 2
IF A<2 THEN
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)
ELSE
FILL TRIANGLE XV(A*4-2,0),YV(A*4-2,0) TO XV(A*4-1,0),YV(A*4-1,0) TO XV(A*4,0),YV(A*4,0)
FI
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(1,0)+XV(3,0))/2
YS=(YV(1,0)+YV(3,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 REM "NO UNIQUE ARRAYS"
10 CLEAR WINDOW
SETRGB 1,128,128,128
GOSUB 904
TEXT 250,50,NAME$(0)
TEXT 150,80,AUTHOR$
RECT 90,90 TO 500,210
YM(0)=155
TEXT 110,110,"PLEASE SELECT THE PLANE"
TEXT 110,125,LSTNXT$
TEXT 110,155,"BI-PLANE - SIDE ON VIEW"
TEXT 110,170,"JETPLANE - OVERHEAD VIEW"
R=0:B=0:PL=0:LM=2
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 495,211 TO 640,512
CLEAR FILL RECT 0,211 TO 120,512
IF YM(0)=155 RESTORE DOGFINST0
IF YM(0)=170 RESTORE DOGFINST1
GOSUB 908
FI
SETRGB 1,128,128,128
UNTIL(R=1 OR R=3)
IF R=3 GOTO 90
AC=(YM(0)-155)/15
IF AC=0 THEN
RESTORE BIPLANE
FOR A=0 TO 15
READ ANG(A):READ DST(A)
NEXT A
ELSE
RESTORE JETPLANE
FOR A=0 TO 8
READ ANG(A):READ DST(A)
NEXT A
FI
11 SETRGB 1,128,128,128
CLEAR FILL RECT 91,91 TO 499,209
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 10
12 CLEAR FILL RECT 91,91 TO 499,209
YM(0)=155
TEXT 110,110,"PLEASE SELECT BOMB TYPE"
TEXT 110,125,LSTNXT$
TEXT 110,155,"NORMAL - STRAIT SHOTS"
TEXT 110,170,"STEER  - PLAYER GUIDED"
IF AC=0 TEXT 110,185,"RAPID  - MACHINE GUN"
IF AC=1 TEXT 110,185,"HOMING - HEAT SEEKING"
R=0:PL=0:LM=3
REPEAT
GOSUB 901
IF C1(8)=0 AND R=2 R=1
UNTIL(R=1 OR R=3)
IF R=3 GOTO 11
BM=(YM(0)-155)/15
13 CLEAR FILL RECT 91,91 TO 499,209
YM(0)=155
TEXT 110,110,"PLEASE SELECT WEATHER"
TEXT 110,125,LSTNXT$
TEXT 110,155,"CLEAR  - EMPTY SKY"
TEXT 110,170,"CLOUDY - CLOUDS TO HIDE IN"
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 12
MD=(YM(0)-155)/15
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,"TARGETS   - HIT THE TARGETS"
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 13
MINS=(YM(0)-140)/15
SETRGB 0,0,0,255
CLEAR WINDOW
TIME=-1
YP(0)=250:YP(1)=150:YP(2)=50:YP(3)=450
FOR P=0 TO 3
FOR V=0 TO 15
XV(V,P)=0:YV(V,P)=0
NEXT V
DP(P)=0:XP(P)=50+P*100
SP(P)=0:XS(P)=0:YS(P)=0:OB(P*5,1)=YP(P)
FOR W=0 TO 4
OB(P*5+W,0)=XP(P)-(30+14*W)
NEXT W
NEXT P
FOR A=0 TO 25
OB(A,2)=1
NEXT A
SETRGB 1,255,255,0
GOSUB 902
RR=0
REPEAT
SETRGB 1,0,0,0
RECT 620,472 TO 630,290
IF MINS<4 THEN
A$=right$(time$,1)
IF A$<>B$ THEN
B$=A$:TIME=TIME+1
FILL RECT 621,471 TO 629,471-(MINS*60)+TIME
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 C1(3)=0 AND RR=2 RR=1
IF RR=1 THEN
RR=0:GOSUB 905
FI
FOR T=0 TO 6
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
FI
IF CPU(P)>0 GOTO 110
OBS=0
FOR W=0 TO 4
OBS=OBS+OB(P*5+W,2)
NEXT W
IF OBS=0 THEN
CPU(P)=1
XEXP=XP(P):YEXP=YP(P):GOSUB 907
ENDPLAY$(P)="WAS BLOWN UP"
GOTO 110
FI
SPED=0
IF P=0 THEN
IF SHOT(0)=0 SHOT(0)=C1(8)
IF AC=0 THEN
IF T=0 DP(P)=DP(P)+C1(6)-C1(4)
SPED=(OR(C1(10),C1(5)))-C1(7)
ELSE
IF T=0 DP(P)=DP(P)+C1(7)-C1(5)
SPED=(OR(C1(10),C1(4)))-C1(6)
FI
FI
IF P=1 THEN
IF SHOT(1)=0 SHOT(1)=C2(8)
IF AC=0 THEN
IF T=0 DP(P)=DP(P)+C2(6)-C2(4)
SPED=(OR(C2(10),C2(5)))-C2(7)
ELSE
IF T=0 DP(P)=DP(P)+C2(7)-C2(5)
SPED=(OR(C2(10),C2(4)))-C2(6)
FI
FI
IF P=2 THEN
IF SHOT(2)=0 SHOT(2)=C1(9)
IF AC=0 THEN
IF T=0 DP(P)=DP(P)+C1(14)-C1(12)
SPED=(OR(C1(11),C1(13)))-C1(15)
ELSE
IF T=0 DP(P)=DP(P)+C1(15)-C1(13)
SPED=(OR(C1(11),C1(12)))-C1(14)
FI
FI
IF P=3 THEN
IF SHOT(3)=0 SHOT(3)=C2(9)
IF AC=0 THEN
IF T=0 DP(P)=DP(P)+C2(14)-C2(12)
SPED=(OR(C2(11),C2(13)))-C2(15)
ELSE
IF T=0 DP(P)=DP(P)+C2(15)-C2(13)
SPED=(OR(C2(11),C2(12)))-C2(14)
FI
FI
IF DP(P)<0 DP(P)=15
IF DP(P)>15 DP(P)=0
SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2)
CLEAR FILL RECT XP(P)-17,YP(P)-17 TO XP(P)+17,YP(P)+17
IF MINS=4 CLEAR FILL RECT XP(P)-21,YP(P)-21 TO XP(P)+21,YP(P)+21
XP(P)=XP(P)+((SPED+2)*COS(DP(P)*PI/8))
YP(P)=YP(P)-((SPED+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
IF T=6 AND MINS=4 THEN
FOR W=4 TO 0 STEP -1
IF W=4 CLEAR FILL RECT OB(P*5+W,0)-2,OB(P*5+W,1)-2 TO OB(P*5+W,0)+2,OB(P*5+W,1)+2
IF W=0 THEN
OB(P*5+W,0)=-30*COS(DP(P)*PI/8)+XP(P)
OB(P*5+W,1)=30*SIN(DP(P)*PI/8)+YP(P)
ELSE
OB(P*5+W,0)=OB(P*5+W-1,0)
OB(P*5+W,1)=OB(P*5+W-1,1)
FI
IF OB(P*5+W,2)=1 THEN
FILL RECT OB(P*5+W,0)-2,OB(P*5+W,1)-2 TO OB(P*5+W,0)+2,OB(P*5+W,1)+2
ELSE
CLEAR FILL RECT OB(P*5+W,0)-2,OB(P*5+W,1)-2 TO OB(P*5+W,0)+2,OB(P*5+W,1)+2
FI
NEXT W
FI
IF MD=0 OR XP(P)<150 OR YP(P)<215 OR XP(P)>450 OR YP(P)>285 OR (XP(P)>250 AND XP(P)<350) THEN
IF AC=0 THEN
FOR A=0 TO 19
IF A<16 THEN
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)
ELSE
XV(A,P)=DST(A-4)*COS(2*PI-ANG(A-4)+(DP(P)*PI/8))+XP(P)
YV(A,P)=-DST(A-4)*SIN(2*PI-ANG(A-4)+(DP(P)*PI/8))+YP(P)
FI
NEXT A
FOR A=0 TO 4
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
ELSE
FOR A=0 TO 8
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)
NEXT A
FOR A=0 TO 2
IF A<2 THEN
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)
ELSE
FILL TRIANGLE XV(A*4-2,P),YV(A*4-2,P) TO XV(A*4-1,P),YV(A*4-1,P) TO XV(A*4,P),YV(A*4,P)
FI
NEXT A
FI
FI
IF MD=1 THEN
SETRGB 1,190,190,190
FOR A=0 TO 1
FILL RECT 200*(A+1)-50,242 TO 200*(A+1)+50,258
FILL RECT 200*(A+1)-42,234 TO 200*(A+1)+42,266
FILL RECT 200*(A+1)-26,226 TO 200*(A+1)+26,274
NEXT A
FI
IF XS(P)=0 AND YS(P)=0 AND SHOT(P)>0 THEN
XS(P)=XP(P)
YS(P)=YP(P)
FI
XS(P+4)=XS(P):YS(P+4)=YS(P)
CLEAR FILL RECT XS(P+4)-5,YS(P+4)-5 TO XS(P+4)+5,YS(P+4)+5
IF (XS(P)<>0 OR YS(P)<>0) AND CPU(P)=0 AND SHOT(P)>0 THEN
IF BM=1 SD(P)=DP(P)
IF BM=2 AND AC=1 THEN
FOR Q=0 TO 3
YS(Q+8)=10000
IF CPU(Q)=0 AND P<>Q THEN
YS(Q+8)=((XS(P)-XP(Q))^2+(YS(P)-YP(Q))^2)^0.5
FI
NEXT Q
IF YS(8)<YS(9) AND YS(8)<YS(10) AND YS(8)<YS(11) VP(P)=0
IF YS(9)<YS(8) AND YS(9)<YS(10) AND YS(9)<YS(11) VP(P)=1
IF YS(10)<YS(8) AND YS(10)<YS(9) AND YS(10)<YS(11) VP(P)=2
IF YS(11)<YS(8) AND YS(11)<YS(9) AND YS(11)<YS(10) VP(P)=3
IF XS(P)<>XP(VP(P)) THEN
ANGLE=ATAN(ABS((YS(P)-YP(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=PI+ANGLE
IF XS(P)<XP(VP(P)) AND YS(P)<YP(VP(P)) ANGLE=PI*2-ANGLE
ELSE
ANGLE=PI/2
IF 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)>15 SD(P)=SD(P)-16
FI
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)<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),5
FI
IF GP(P)>100 OR (GP(P)>20 AND AC=0 AND BM=2) THEN
CLEAR FILL RECT XS(P)-5,YS(P)-5 TO XS(P)+5,YS(P)+5:SHOT(P)=0
FI
FOR Q=0 TO 3
IF MINS<4 THEN
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(P)>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))
IF XP(Q)<0 XP(Q)=600:IF XP(Q)>600 XP(Q)=0
IF YP(Q)<0 YP(Q)=500:IF YP(Q)>500 YP(Q)=0
CLEAR FILL RECT XS(P+4)-3,YS(P+4)-3 TO XS(P+4)+3,YS(P+4)+3
SPIN=64+INT(RAN(15))
CLEAR FILL RECT XS(P)-5,YS(P)-5 TO XS(P)+5,YS(P)+5
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
IF AC=0 THEN
FOR A=0 TO 19
IF A<16 THEN
XV(A,Q)=DST(A)*COS(ANG(A)+(DP(Q)*PI/8))+XP(Q)
YV(A,Q)=-DST(A)*SIN(ANG(A)+(DP(Q)*PI/8))+YP(Q)
ELSE
XV(A,Q)=DST(A-4)*COS(ANG(A-4)+(DP(Q)*PI/8))+XP(Q)
YV(A,Q)=-DST(A-4)*SIN(ANG(A-4)+(DP(Q)*PI/8))+YP(Q)
FI
NEXT A
FOR A=0 TO 4
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
ELSE
FOR A=0 TO 8
XV(A,Q)=DST(A)*COS(ANG(A)+(DP(Q)*PI/8))+XP(Q)
YV(A,Q)=-DST(A)*SIN(ANG(A)+(DP(Q)*PI/8))+YP(Q)
NEXT A
FOR A=0 TO 2
IF A<2 THEN
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)
ELSE
FILL TRIANGLE XV(A*4-2,Q),YV(A*4-2,Q) TO XV(A*4-1,Q),YV(A*4-1,Q) TO XV(A*4,Q),YV(A*4,Q)
FI
NEXT A
FI
WAIT 0.03
IF R<4 THEN
CLEAR FILL RECT XS(R)-5,YS(R)-5 TO XS(R)+5,YS(R)+5
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
ELSE
FOR W=0 TO 4
IF P<>Q AND CPU(Q)=0 AND OB(Q*5+W,2)=1 AND SHOT(P)=1 THEN
DIST=((XS(P)-OB(Q*5+W,0))^2+(YS(P)-OB(Q*5+W,1))^2)^0.5
IF DIST<7 THEN
OB(Q*5+W,2)=0
SHOT(P)=0:SD(P)=DP(P):GP(P)=0:CLEAR FILL RECT XS(P)-5,YS(P)-5 TO XS(P)+5,YS(P)+5:XS(P)=0:YS(P)=0
FI
FI
NEXT W
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))
110 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
SETRGB 0,0,0,0
GOTO 903

2 DIM TT$(3)
RESTORE TARGETS
FOR A=0 TO 2
READ TT$(A)
NEXT A
RESTORE CLOWN
FOR A=0 TO 9
READ DST(A):READ ANG(A)
NEXT A
20 CLEAR WINDOW
SETRGB 1,128,128,128
GOSUB 904
RESTORE SESWINST
GOSUB 908
SETRGB 1,128,128,128
TEXT 230,50,NAME$(1)
TEXT 150,80,AUTHOR$
RECT 90,90 TO 500,210
YM(0)=155
TEXT 110,110,"PLEASE SELECT MODE"
TEXT 110,125,LSTNXT$
TEXT 110,155,"ENDURANCE - 1 PLAYER, NO EXTRA CLOWNS"
TEXT 110,170,"SOLO      - 1 PLAYER, 5-20 CLOWNS"
TEXT 110,185,"MULTI     - 1-4 PLAYERS, 5-20 CLOWNS"
R=0:LM=3:PL=0
REPEAT
GOSUB 901
IF C1(8)=0 AND R=2 R=1
UNTIL(R=1 OR R=3)
IF R=3 GOTO 90
MD=(YM(0)-155)/15
21 FOR P=0 TO 3
YM(P)=185
NEXT P
CLEAR FILL RECT 91,91 TO 499,209
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 ((MD<2 AND M=1 AND C=0) OR (MD=2 AND M>0 AND M+C>1)) 
R=1
IF R=2 AND ((MD<2 AND (M<>1 OR C>0)) OR (MD=2 AND (M=0 OR M+C<2))) R=0
M=0:C=0:DIF=5
FOR P=0 TO 3
CPU(P)=(YM(P)-155)/15
IF CPU(P)=0 M=M+1
IF CPU(P)=1 C=C+1
IF CPU(P)=2 ENDPLAY$(P)="DID NOT PLAY"
NEXT P
UNTIL(R=1 OR R=3)
IF C>0 DIF=4
IF R=3 GOTO 20
FOR A=0 TO 3
YLL(A)=40+A*85
YUL(3-A)=560-A*85
NEXT A
FOR A=0 TO 3
IF CPU(A)=2 THEN
IF A>0 THEN
FOR B=0 TO A-1
YUL(B)=YUL(B)+85
NEXT B
FI
IF A<3 THEN
FOR B=A+1 TO 3
YLL(B)=YLL(B)-85
NEXT B
FI
FI
NEXT A
22 PL=0:LM=2
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,"F.GUMP     - SIMPLE TACTICS"
TEXT 110,170,"A.EINSTEIN - CALCULATED MOVES"
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 21
DIF=(YM(0)-155)/15
FI
23 YM(0)=155
IF MD>0 THEN
CLEAR FILL RECT 91,91 TO 499,209
TEXT 110,110,"SELECT EXTRA CLOWNS"
TEXT 110,125,LSTNXT$
FOR A=0 TO 3
TEXT 110,155+A*15,STR$((A+1)*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 AND C=0 GOTO 21
IF R=3 AND C>0 THEN
DIF=4:GOTO 22
FI
WS=(YM(0)-155)/3+5
FI
CLEAR FILL RECT 91,91 TO 499,209
YM(0)=155
IF MD>1 THEN
TEXT 110,110,"PLEASE SELECT TARGET TYPE"
TEXT 110,125,LSTNXT$
TEXT 110,155,"PARALYSIS    - PLAYER CAN'T MOVE"
TEXT 110,170,"CONFUSION    - MIXED UP CONTROLS"
TEXT 110,185,"DECAPITATION - SCORE SHARE"
TEXT 110,200,"RANDOM       - ANY OF THE ABOVE"
R=0:LM=4:RNDM=0
REPEAT
GOSUB 901
IF C1(8)=0 AND R=2 R=1
UNTIL(R=1 OR R=3)
IF R=3 GOTO 23
TT=(YM(0)-155)/15
IF TT=3 RNDM=1
FI
IF MD=0 WS=0
XB=100:YB=200:PLYRS=0
FOR A=0 TO 3
XP(A)=120*A+100:YP(A)=480:SP(A)=0
IF CPU(A)<2 PLYRS=PLYRS+1
NEXT A
FOR W=0 TO 23
OB(W,2)=1
NEXT W
GOSUB 902
WNR=4:BC=0:XSP=0:YSP=0:PMAX=0:TX=0:TD=1:PARA=4:CONF=4
RR=0
FOR A=0 TO 7
FOR B=0 TO 2
OB(A+B*8,0)=48+A*75:OB(A+B*8,1)=50+B*30
IF B=0 SETRGB 1,0,0,255
IF B=1 SETRGB 1,0,255,0
IF B=2 SETRGB 1,255,0,0
FILL RECT OB(A+B*8,0),OB(A+B*8,1) TO OB(A+B*8,0)+10,OB(A+B*8,1)+10
NEXT B
NEXT A
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
CLEAR FILL RECT 0,400 TO 640,512
FOR P=0 TO 3
DP=0:PSP=1
IF CPU(P)<2 THEN
SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2)
IF PARA<>P THEN
IF CPU(P)=1 THEN
IF DIF=0 AND ABS(XB-XP(P))>40 DP=SIG(XB-XP(P))
IF DIF=1 DP=SIG(XB-(XP(P)-39*SIG(XS(P)-0.5)))
FI
IF CPU(P)=0 THEN
IF P=0 THEN
DP=(C1(5)-C1(7))
IF C1(10)=1 AND XS(4)=0 THEN
IF XS(0)=0 YS(0)=1
IF XS(0)=1 YS(0)=0
XS(4)=1
FI
PSP=2^C1(8)
XS(4)=C1(10)
FI
IF P=1 THEN
DP=(C2(5)-C2(7))
IF C2(10)=1 AND XS(5)=0 THEN
IF XS(1)=0 YS(1)=1
IF XS(1)=1 YS(1)=0
XS(5)=1
FI
PSP=2^C2(8)
XS(5)=C2(10)
FI
IF P=2 THEN
DP=(C1(13)-C1(15))
IF C1(11)=1 AND XS(6)=0 THEN
IF XS(2)=0 YS(2)=1
IF XS(2)=1 YS(2)=0
XS(6)=1
FI
PSP=2^C1(9)
XS(6)=C1(11)
FI
IF P=3 THEN
DP=(C2(13)-C2(15))
IF C2(11)=1 AND XS(7)=0 THEN
IF XS(3)=0 YS(3)=1
IF XS(3)=1 YS(3)=0
XS(7)=1
FI
PSP=2^C2(9)
XS(7)=C2(11)
FI
FI
FI
XS(P)=YS(P)
IF CONF=P DP=-1*DP
FOR Q=0 TO 3
IF P<>Q AND CPU(Q)<2 THEN
IF ABS(XP(P)-XP(Q))<90 XP(P)=SIG(P-Q)*90+XP(Q)
FI
IF SP(Q)>SP(PMAX) PMAX=Q
NEXT Q
XP(P)=XP(P)+DP*5*PSP
XP(P)=MIN(XP(P),YUL(P)):XP(P)=MAX(XP(P),YLL(P))
FOR A=0 TO 4
XV(A*2,P)=DST(A*2):YV(A*2,P)=ANG(A*2)
XV(A*2+1,P)=DST(A*2+1):YV(A*2+1,P)=ANG(A*2+1)
FILL RECT SIG(XS(P)-0.5)*25+XP(P)+XV(A*2,P),YP(P)+YV(A*2,P) TO SIG(XS(P)-0.5)*25+XP(P)+XV(A*2+1,P),YP(P)+YV(A*2+1,P)
NEXT A
FILL TRIANGLE XP(P),YP(P) TO XP(P)-40,YP(P)-15*XS(P) TO XP(P)+40,YP(P)-15*(1-XS(P))
IF XB<=XP(P)+40 AND XB>=XP(P)-40 AND YB>465 THEN
YS(P)=1-YS(P)
YSP=-15-ABS(XB-XP(P))/2
XB=XP(P)-SIG(YS(P)-0.5)*40
BC=P:IF XSP=0 XSP=XSP-SIG(YS(P)-0.5)
FI
TEXT 100+P*100,30,STR$(SP(P))
FI
NEXT P
IF RNDM=1 TT=INT(RAN(3))
IF TT=3 TT=0
IF TIME=0 TXT=PMAX
IF MD=2 THEN
CLEAR FILL RECT TX-10,35 TO TX+10,50
IF TX>640 TD=-1:IF TX<0 TD=1
SETRGB 1,CLR(PMAX,0),CLR(PMAX,1),CLR(PMAX,2)
TX=TX+SIG(TD)*2
FILL RECT TX-10,40 TO TX+10,50
FI
IF CONF<>PARA THEN
TIME=TIME+0.03
FI
IF TIME>10 THEN
CONF=4:PARA=4:TIME=0:CLEAR FILL RECT 0,38 TO 320,50
FI
CLEAR FILL RECT XB-10,YB-23 TO XB+10,YB
YSP=YSP+1
IF YSP>20 YSP=20
XB=XB+XSP
YB=YB+YSP
IF XB<=0 XSP=ABS(XSP):IF XB>=600 XSP=ABS(XSP)*-1
SETRGB 1,CLR(BC,0),CLR(BC,1),CLR(BC,2)
IF XB-10<TX+10 AND XB+10>TX-10 AND YB<73 AND YB>40 AND MD>1 THEN
SETRGB 1,128,128,128
TEXT 20,48,"PLAYER "+STR$(TXT+1)+TT$(TT)
YSP=10*SIG(YB-57)
IF TT<2 THEN
IF TIME=0 AND TT=0 PARA=PMAX
IF TIME=0 AND TT=1 CONF=PMAX
ELSE
CLEAR FILL RECT 0,0 TO 640,35
SP(PMAX)=INT(SP(PMAX)/2)
FOR Q=0 TO 3
IF CPU(Q)<2 AND Q<>PMAX SP(Q)=SP(Q)+INT(SP(PMAX)/(PLYRS-1))
NEXT Q
FI
FI
FOR A=0 TO 4
XV(A*2+7,0)=DST(A*2):YV(A*2+7,0)=ANG(A*2)
XV(A*2+8,0)=DST(A*2+1):YV(A*2+8,0)=ANG(A*2+1)
FILL RECT XB+XV(A*2+7,0),YB+YV(A*2+7,0) TO XB+XV(A*2+8,0),YB+YV(A*2+8,0)
NEXT A
FOR A=0 TO 2
FOR B=0 TO 7
IF B=0 OC=0
OC=OC+OB(B+A*8,2)
IF B=7 AND OC=0 THEN
FOR C=0 TO 7
OB(C+A*8,2)=1
IF A=0 SETRGB 1,0,0,255
IF A=1 SETRGB 1,0,255,0
IF A=2 SETRGB 1,255,0,0
FILL RECT OB(C+A*8,0),OB(C+A*8,1) TO OB(C+A*8,0)+10,OB(C+A*8,1)+10
NEXT C
FI
IF (XB-OB(B+A*8,0))>=-10 AND (XB-OB(B+A*8,0))<=20 AND (YB-OB(B+A*8,1))>=0 AND (YB-OB(B+A*8,1))<=34 AND OB(B+A*8,2)=1 THEN
CLEAR FILL RECT 0,0 TO 640,35
SP(BC)=SP(BC)+10^(2-A)
IF ABS(XSP)<1 THEN
XSP=SIG(XB-OB(B+A*8,0))
ELSE
XSP=0
FI
YSP=10*SIG(YB-12-OB(B+A*8,1))
OB(B+A*8,2)=0:CLEAR FILL RECT OB(B+A*8,0),OB(B+A*8,1) TO OB(B+A*8,0)+10,OB(B+A*8,1)+10
FI
NEXT B
NEXT A
IF YB>500 THEN
SETRGB 1,255,255,0
FOR A=0 TO 650 STEP 5
CLEAR FILL CIRCLE A-5,500,12
FILL CIRCLE A,500,12
CLEAR FILL TRIANGLE A,500 TO A+12,500+10*FRAC(A/50) TO A+12,500-10*FRAC(A/50)
WAIT 0.03
NEXT A
CLEAR FILL RECT 0,0 TO 640,35
WS=WS-1
XB=XP(BC)
YB=125:XSP=0
CLEAR FILL RECT 0,400 TO 640,512
FI
WAIT 0.03
SETRGB 1,128,128,128
IF WS>-1 TEXT 50,30,STR$(WS)
UNTIL(WS<0)
FOR P=0 TO 3
SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2)
IF CPU(P)<2 THEN
TEXT 100+P*100,30,STR$(SP(P))
ENDPLAY$(P)="SCORED "+STR$(SP(P))
FI
NEXT P
GOTO 903

3 DIM LVS(4)
30 CLEAR WINDOW
SETRGB 1,128,128,128
GOSUB 904
RESTORE EXOSINST
GOSUB 908
SETRGB 1,128,128,128
TEXT 230,50,NAME$(2)
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   - 1-4 PLAYERS"
TEXT 110,170,"ENDURANCE - 1 PLAYER, 1 LIFE"
TEXT 110,185,"SHOW OFF  - 1-4 PLAYERS, 1 LIFE EACH"
R=0:LM=3:PL=0
REPEAT
GOSUB 901
IF C1(8)=0 AND R=2 R=1
UNTIL(R=1 OR R=3)
IF R=3 GOTO 90
MD=(YM(0)-155)/15
31 CLEAR FILL RECT 91,91 TO 499,209
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 ((MD<>1 AND M>0) OR (MD=1 AND M=1)) R=1
IF R=2 AND ((MD<>1 AND M=0) OR (MD=1 AND M<>1)) 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 30
GOSUB 902
FOR A=0 TO 3
XP(A)=120*A+100:YP(A)=480:SP(A)=0:LVS(A)=1:POW(A)=0
IF MD=0 LVS(A)=3
NEXT A
FOR WAVE=0 TO 7
FOR ROUND=0 TO 3
CLEAR WINDOW
TEXT 270,150,"WAVE "+STR$(WAVE+1)+", ROUND "+STR$(ROUND+1)
FOR A=0 TO 3
XS(A+12)=0:YS(A)=480:XP(A)=120*A+100
NEXT A
WAIT 3:CLEAR WINDOW
MXROW=5:MXCOL=5:MNROW=0:MNCOL=0:AL=36:TXSP=1:TX=31:ALSPD=1
COLS=6:MSHIP=1:XMS=0:MSD=1
FOR A=0 TO 35
OB(A,0)=31:OB(A,1)=0:OB(A,2)=1
NEXT A
RR=0
TY=50+ROUND*70
REPEAT
IF MSHIP=1 THEN
SETRGB 1,128,0,255
CLEAR FILL RECT XMS-20,35 TO XMS+20,45
XMS=XMS+MSD:IF XMS<=0 OR XMS>=640 MSD=0-MSD
FILL TRIANGLE XMS,35 TO XMS-20,40 TO XMS+20,40
FILL TRIANGLE XMS,45 TO XMS-20,40 TO XMS+20,40
FOR P=0 TO 3
IF (ABS(XS(P)-XMS)<=20 AND ABS(YS(P)-40)<=10) OR (ABS(XS(P+4)-XMS)<=20 AND ABS(YS(P+4)-40)<=10) THEN
MSHIP=0:SP(P)=SP(P)+200:POW(P)=INT(RAN(3))+1
CLEAR FILL RECT 0,0 TO 640,45
FI
NEXT P
FI
SETRGB 1,128,128,128
FOR S=0 TO 3
IF XS(S+12)=1 THEN
CLEAR LINE XS(S+8),YS(S+8)-5 TO XS(S+8),YS(S+8)+5
YS(S+8)=YS(S+8)+10*(1+(AND(WAVE,1)))
XS(S+8)=XS(S+8)+((AND(WAVE,2))*2)*(INT(RAN(3))-1)
LINE XS(S+8),YS(S+8)-5 TO XS(S+8),YS(S+8)+5
IF YS(S+8)>=480 THEN
XS(S+12)=0
CLEAR LINE XS(S+8),YS(S+8)-5 TO XS(S+8),YS(S+8)+5
FI
FI
FOR P=0 TO 3
IF CPU(P)=0 AND YS(S+8)>=460 AND ((POW(P)<>1 AND ABS(XS(S+8)-XP(P))<=20) OR (POW(P)=1 AND ABS(XS(S+8)-XP(P))<=10)) THEN
IF POW(P)=2 THEN
POW(P)=0:XS(S+12)=0
CLEAR LINE XS(S+8),YS(S+8)-5 TO XS(S+8),YS(S+8)+5
FI
IF XS(S+12)=1 THEN
XEXP=XP(P):YEXP=YP(P):GOSUB 907
CLEAR WINDOW
FOR A=0 TO 3
XS(A+12)=0:YS(A)=480:YS(A+4)=480
NEXT A
LVS(P)=LVS(P)-1
XP(P)=120*P+100
IF LVS(P)=0 THEN
ENDPLAY$(P)="SCORED "+STR$(SP(P))+" REACHING WAVE "+STR$(WAVE+1+(ROUND/4))
CPU(P)=1:M=M-1
FI
FI
FI
NEXT P
NEXT S
RD=191*AND(WAVE,1)
GN=191*AND(WAVE,2)/2
BU=191*AND(WAVE,4)/4
SETRGB 1,64+RD,64+GN,64+BU
TX=TX+TXSP*ALSPD
IF AND(WAVE,4)>0 TX=TX+TXSP*ALSPD
LANDED=0
FOR ROW=MNROW TO MXROW
FOR COL=MNCOL TO MXCOL
CLEAR FILL RECT OB(COL+ROW*6,0)-10,OB(COL+ROW*6,1)-5 TO OB(COL+ROW*6,0)+10,OB(COL+ROW*6,1)+5
IF (TXSP=-1 AND OB(COL+ROW*6,0)<=30 AND OB(COL+ROW*6,2)=1) OR (TXSP=1 AND OB(COL+ROW*6,0)>=610 AND OB(COL+ROW*6,2)=1) THEN
TXSP=-1*TXSP
BNC=1
TY=TY+10
FI
IF OB(COL+ROW*6,1)>=480 AND OB(COL+ROW*6,2)=1 LANDED=1
OB(COL+ROW*6,0)=TX+COL*75:OB(COL+ROW*6,1)=TY+ROW*30
IF OB(COL+ROW*6,2)=1 THEN
FILL TRIANGLE OB(COL+ROW*6,0),OB(COL+ROW*6,1)-5 TO OB(COL+ROW*6,0)-10,OB(COL+ROW*6,1) TO OB(COL+ROW*6,0)+10,OB(COL+ROW*6,1)
FILL TRIANGLE OB(COL+ROW*6,0),OB(COL+ROW*6,1)+5 TO OB(COL+ROW*6,0)-10,OB(COL+ROW*6,1) TO OB(COL+ROW*6,0)+10,OB(COL+ROW*6,1)
FI
NEXT COL
NEXT ROW
BNC=0
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 3
DP=0:PSP=1
IF CPU(P)=0 THEN
SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2)
IF P=0 THEN
DP=(C1(5)-C1(7))
IF C1(8)=1 AND YS(0)=480 THEN
XS(0)=XP(0):YS(0)=470
FI
PSP=2^C1(10)
FI
IF P=1 THEN
DP=(C2(5)-C2(7))
IF C2(8)=1 AND YS(1)=480 THEN
XS(1)=XP(1):YS(1)=470
FI
PSP=2^C2(10)
FI
IF P=2 THEN
DP=(C1(13)-C1(15))
IF C1(9)=1 AND YS(2)=480 THEN
XS(2)=XP(2):YS(2)=470
FI
PSP=2^C1(11)
FI
IF P=3 THEN
DP=(C2(13)-C2(15))
IF C2(9)=1 AND YS(3)=480 THEN
XS(3)=XP(3):YS(3)=470
FI
PSP=2^C2(11)
FI
CLEAR FILL RECT XP(P)-27,YP(P)-20 TO XP(P)+27,YP(P)
XP(P)=XP(P)+DP*5*PSP
XP(P)=MIN(XP(P),610):XP(P)=MAX(XP(P),30)
IF POW(P)=1 THEN
FILL TRIANGLE XP(P),YP(P)-15 TO XP(P)-10,YP(P) TO XP(P)+10,YP(P)
ELSE
IF POW(P)=2 TRIANGLE XP(P),YP(P)-20 TO XP(P)-25,YP(P)-1 TO XP(P)+25,YP(P)-1
FILL TRIANGLE XP(P),YP(P)-15 TO XP(P)-20,YP(P) TO XP(P)+20,YP(P)
FI
TEXT 100+P*100,30,STR$(SP(P))
TEXT 70+P*100,30,STR$(LVS(P))
FI
CLEAR LINE XS(P),YS(P)-5 TO XS(P),YS(P)+5
IF YS(P)<480 THEN
YS(P)=YS(P)-10
IF POW(P)=3 YS(P)=YS(P)-10
FI
IF YS(P)<=0 YS(P)=480
SETRGB 1,128,128,128
IF YS(P)<480 LINE XS(P),YS(P)-5 TO XS(P),YS(P)+5
MNCOLCOUNT=0:MXCOLCOUNT=0
FOR ROW=MNROW TO MXROW
FOR COL=MNCOL TO MXCOL
IF (COL+ROW*6-MNCOL)/6=INT(COL+ROW*6-MNCOL)/6 THEN
MNCOLCOUNT=MNCOLCOUNT+OB(COL+ROW*6,2)
IF MNCOLCOUNT=0 AND COL+ROW*6>29 MNCOL=MNCOL+1
FI
IF (COL+ROW*6-MXCOL)/6=INT(COL+ROW*6-MXCOL)/6 THEN
MXCOLCOUNT=MXCOLCOUNT+OB(COL+ROW*6,2)
IF MXCOLCOUNT=0 AND COL+ROW*6>29 MXCOL=MXCOL-1
FI
COLS=MXCOL+1-MNCOL
ALFIRE=MNCOL+INT(RAN(COLS))
A=INT(RAN(256))
IF A<4 THEN
IF XS(A+12)=0 THEN
FOR RW=0 TO 5
IF OB(ALFIRE+(5-RW)*6,2)=1 THEN
XS(A+12)=1:XS(A+8)=OB(ALFIRE+(5-RW)*6,0)
YS(A+8)=OB(ALFIRE+(5-RW)*6,1)
FI
NEXT RW
FI
FI
IF ABS(XS(P)-OB(COL+ROW*6,0))<=10 AND ABS(YS(P)-OB(COL+ROW*6,1))<=10 AND OB(COL+ROW*6,2)=1 THEN
CLEAR FILL RECT 0,0 TO 640,35
CLEAR LINE XS(P),YS(P)-5 TO XS(P),YS(P)+5
AL=AL-1
SP(P)=SP(P)+5*(6-ROW)
IF MD=0 AND SP(P)>=1000 THEN
LVS(P)=LVS(P)+1
SP(P)=SP(P)-1000
FI
YS(P)=480
OB(COL+ROW*6,2)=0
CLEAR LINE XS(P),YS(P)-5 TO XS(P),YS(P)+5
FI
IF AL=20 ALSPD=2
IF AL=8 ALSPD=3
IF AL=4 ALSPD=4
IF AL=3 ALSPD=5
IF AL=2 ALSPD=6
IF AL=1 ALSPD=7
NEXT COL
NEXT ROW
NEXT P
WAIT 0.03
UNTIL(AL=0 OR LANDED=1 OR M=0)
IF LANDED=1 OR M=0 THEN
ROUND=3:WAVE=7
CLEAR WINDOW
IF M=0 TEXT 200,135,"YOU HAVE BEEN DESTROYED."
TEXT 120,150,"THE ALIENS HAVE LANDED. YOU HAVE FAILED."
WAIT 3
FI
NEXT ROUND
NEXT WAVE
IF LANDED=0 AND M<>0 THEN
CLEAR WINDOW
TEXT 120,150,"CONGRATULATIONS. YOU HAVE SAVED THE WORLD."
WAIT 3
FI
FOR P=0 TO 3
SETRGB 1,CLR(P,0),CLR(P,1),CLR(P,2)
IF CPU(P)=0 THEN
TEXT 100+P*100,30,STR$(SP(P))
TEXT 70+P*100,30,STR$(LVS(P))
ENDPLAY$(P)="SCORED "+STR$(SP(P))+" AND CONQUERED ALL"
FI
NEXT P
GOTO 903

4 DIM BOARD(6,16,5)
DIM BOMBS(7,4)
40 CLEAR WINDOW
SETRGB 1,128,128,128
GOSUB 904
RESTORE BOMBINST
GOSUB 908
SETRGB 1,128,128,128
TEXT 310-(LEN(NAME$(3))*5),50,NAME$(3)
TEXT 70,65,"TO EXIT GAMEPLAY AT ANY TIME PRESS L3 + R3 ON PAD 1"
TEXT 150,80,AUTHOR$
RECT 90,90 TO 500,210
YM(0)=155
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>0 R=1
IF R=2 AND M=0 R=0
M=0
FOR P=0 TO 3
CPU(P)=(YM(P)-155)/7.5
IF CPU(P)=0 M=M+1
NEXT P
UNTIL(R=1 OR R=3)
IF R=3 GOTO 90
41 CLEAR FILL RECT 91,91 TO 499,209
TEXT 110,110,"PLEASE SELECT THE DIFFICULTY"
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,"EASY"
TEXT 110+P*100,170,"NORMAL"
TEXT 110+P*100,185,"HARD"
NEXT P
SETRGB 1,128,128,128
R=0:PL=3:LM=3
REPEAT
GOSUB 901
IF C1(8)=0 AND R=2 R=1
FOR P=0 TO 3
VP(P)=(YM(P)-95)/15
NEXT P
UNTIL(R=1 OR R=3)
IF R=3 GOTO 40
GOSUB 902
CLEAR WINDOW
FOR A=0 TO 3
XP(A)=2:YP(A)=10:YS(A)=0:SD(A)=50:POW(A)=0:GP(A)=0
RECT A*160,0 TO A*160+159,512
RECT A*160+5,186 TO A*160+155,512
FOR B=0 TO 5
FOR C=0 TO 12
BOARD(B,C,A)=0
IF C<7 BOMBS(C,A)=0
NEXT C
NEXT B
NEXT A
FOR A=0 TO 7
XS(A)=0:XS(A+8)=1
NEXT A
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 3
IF CPU(P)=0 THEN
SETRGB 1,160,160,160
TEXT P*160+20,20,"LV "+STR$(XS(P+8))
TEXT P*160+20,35,"BM "+STR$(XS(P+4))
TEXT P*160+20,50,"SC "+STR$(XS(P))
POW(P)=POW(P)+1
DP=0:PSP=1
IF P=0 THEN
IF C1(5)=C1(7) YS(8)=0
IF YS(8)=0 DP=(C1(5)-C1(7))
IF C1(4)=0 AND C1(8)=0 AND C1(10)=0 YS(4)=0
IF (C1(4)=1 OR C1(8)=1 OR C1(10)=1) AND YS(4)=0 GP(0)=GP(0)+2
IF C1(6)=1 POW(0)=POW(0)+20
FI
IF P=1 THEN
IF C2(5)=C2(7) YS(9)=0
IF YS(9)=0 DP=(C2(5)-C2(7))
IF C2(4)=0 AND C2(8)=0 AND C2(10)=0 YS(5)=0
IF (C2(4)=1 OR C2(8)=1 OR C2(10)=1) AND YS(5)=0 GP(1)=GP(1)+2
IF C2(6)=1 POW(1)=POW(1)+20
FI
IF P=2 THEN
IF C1(13)=C1(15) YS(10)=0
IF YS(10)=0 DP=(C1(13)-C1(15))
IF C1(9)=0 AND C1(11)=0 AND C1(12)=0 YS(6)=0
IF (C1(9)=1 OR C1(11)=1 OR C1(12)=1) AND YS(6)=0 GP(2)=GP(2)+2
IF C1(14)=1 POW(2)=POW(2)+20
FI
IF P=3 THEN
IF C2(13)=C2(15) YS(11)=0
IF YS(11)=0 DP=(C2(13)-C2(15))
IF C2(9)=0 AND C2(11)=0 AND C2(12)=0 YS(7)=0
IF (C2(9)=1 OR C2(11)=1 OR C2(12)=1) AND YS(7)=0 GP(3)=GP(3)+2
IF C2(14)=1 POW(3)=POW(3)+20
FI
IF YP(P)>9.5 THEN
SETRGB 1,128,128,128
LINE P*160+5,186 TO P*160+155,186
FOR A=4 TO 6
BOMBS(A,P)=INT(RAN(VP(P)))+1
RED=AND(BOMBS(A,P),1)*128
GRN=AND(BOMBS(A,P),2)*64
BLU=AND(BOMBS(A,P),4)*32
SETRGB 1,RED,GRN,BLU
FILL CIRCLE (P*160+67.5),270-A*25,12.5
NEXT A
FI
IF AND(GP(P),13)=0 THEN
FOR A=0 TO 2
BOARD(XP(P),YP(P)+A,P)=BOMBS(A,P)
BOMBS(A,P)=BOMBS(A+4,P)
NEXT A
XS(P+12)=1
GP(P)=GP(P)+8:YP(P)=13:XP(P)=2
FI
IF AND(GP(P),2)>0 THEN
BOMBS(3,P)=BOMBS(0,P)
FOR A=0 TO 2
BOMBS(A,P)=BOMBS(A+1,P)
NEXT A
GP(P)=GP(P)-2
YS(P+4)=1
FI
IF AND(GP(P),8)>0 THEN
DROP=0
FOR XB=0 TO 5
FOR YB=1 TO 15
IF BOARD(XB,YB,P)>0 AND BOARD(XB,YB-1,P)=0 THEN
BOARD(XB,YB-1,P)=BOARD(XB,YB,P)
CLEAR FILL RECT XB*25+P*160+5,512-YB*25 TO XB*25+P*160+30,512-(YB+1)*25
RED=AND(BOARD(XB,YB,P),1)*255
GRN=AND(BOARD(XB,YB,P),2)*127.5
BLU=AND(BOARD(XB,YB,P),4)*63.75
BOARD(XB,YB,P)=0
SETRGB 1,RED,GRN,BLU
FILL CIRCLE XB*25+17.5+P*160,499.5-(YB-1)*25,12.5
DROP=1
FI
NEXT YB
NEXT XB
IF DROP=0 GP(P)=GP(P)-4
FI
IF AND(GP(P),4)>0 THEN
DEFUSE=0
FOR CHEK=0 TO 4
YCHK=0:XCHK=0
IF CHEK<2 XCHK=1:IF CHEK=3 XCHK=-1
IF CHEK>0 YCHK=1
FOR XB=0 TO 5
FOR YB=0 TO 12
IF ((XB=0 OR XB=5) AND (YB=0 OR YB=12)) THEN
REM THIS IS A CORNER!
ELSE
IF (XB>0 AND XB<5 AND YB>0 AND YB<12 AND CHEK<4) OR ((XB=0 OR XB=5) AND CHEK=2) OR ((YB=0 OR YB=12) AND CHEK=0) THEN
IF BOARD(XB,YB,P)>0 AND BOARD(XB,YB,P)=BOARD(XB+XCHK,YB+YCHK,P) AND BOARD(XB,YB,P)=BOARD(XB-XCHK,YB-YCHK,P) THEN
BOARD(XB,YB,4)=1
BOARD(XB+XCHK,YB+YCHK,4)=1:BOARD(XB-XCHK,YB-YCHK,4)=1
FI
FI
FI
IF CHEK=4 AND BOARD(XB,YB,4)=1 THEN
BOARD(XB,YB,4)=0:BOARD(XB,YB,P)=0
CLEAR FILL RECT XB*25+P*160+5,512-YB*25 TO XB*25+P*160+30,512-(YB+1)*25
DEFUSE=DEFUSE+1
FI
NEXT YB
NEXT XB
NEXT CHEK
IF DEFUSE=0 THEN
FOR XB=0 TO 5
IF BOARD(XB,13,P)>0 CPU(P)=2
NEXT XB
XS(P+12)=1
GP(P)=GP(P)-4+1
ELSE
XS(P+4)=XS(P+4)+DEFUSE
IF SD(P)<=XS(P+4) THEN
SD(P)=SD(P)+50
XS(P+8)=XS(P+8)+1
FOR XB=0 TO 5
FOR YB=0 TO 15
IF BOARD(XB,YB,P)>0 YS(P)=YB
NEXT YB
NEXT XB
FI
XS(P)=XS(P)+10*DEFUSE*XS(P+12)*XS(P+8)
CLEAR FILL RECT P*160+1,1 TO P*160+159,100
XS(P+12)=XS(P+12)+1
GP(P)=GP(P)+4
FI
FI
IF ((DP=1 AND XP(P)<5) OR (DP=-1 AND XP(P)>0)) THEN
IF BOARD(XP(P)+DP,INT(YP(P)),P)=0 THEN
XP(P)=XP(P)+DP
YS(P+8)=1
FI
ELSE
DP=0
FI
IF YP(P)<13.5 CLEAR FILL RECT (XP(P)-DP)*25+P*160+5,512-(YP(P)+3.5)*25 TO (XP(P)-DP)*25+P*160+30,512-YP(P)*25
FOR BM=0 TO 2
RED=AND(BOMBS(BM,P),1)*255
GRN=AND(BOMBS(BM,P),2)*127.5
BLU=AND(BOMBS(BM,P),4)*63.75
SETRGB 1,RED,GRN,BLU
FILL CIRCLE XP(P)*25+17.5+P*160,499.5-YP(P)*25-BM*25,12.5
NEXT BM
IF YP(P)=INT(YP(P)) THEN
IF YP(P)=0 THEN
GP(P)=GP(P)-1
ELSE
IF BOARD(XP(P),YP(P)-1,P)>0 AND AND(GP(P),12)=0 GP(P)=GP(P)-1
FI
FI
IF AND(GP(P),1)>0 AND AND(GP(P),12)=0 AND POW(P)>(20-YS(P)) THEN
POW(P)=0
YP(P)=YP(P)-0.5
FI
ELSE
IF CPU(P)=1 THEN
SETRGB 1,128,128,128
YM(P+4)=YM(P):DP=0:PSP=0
IF P=0 THEN
PSP=C1(10)
IF C1(6)=C1(4) YS(4)=0
IF YS(4)=0 DP=(C1(6)-C1(4))*15
FI
IF P=1 THEN
PSP=C2(10)
IF C2(6)=C2(4) YS(5)=0
IF YS(5)=0 DP=(C2(6)-C2(4))*15
FI
IF P=2 THEN
PSP=C1(11)
IF C1(14)=C1(12) YS(6)=0
IF YS(6)=0 DP=(C1(14)-C1(12))*15
FI
IF P=3 THEN
PSP=C2(11)
IF C2(14)=C2(12) YS(7)=0
IF YS(7)=0 DP=(C2(14)-C2(12))*15
FI
IF DP<>0 THEN
YM(P)=YM(P)+DP
YS(P+4)=1
FI
YM(P)=MAX(YM(P),370)
YM(P)=MIN(YM(P),400)
CLEAR FILL RECT P*160+5,YM(P+4) TO P*160+10,YM(P+4)-10
FILL RECT P*160+5,YM(P) TO P*160+10,YM(P)-10
IF PSP=1 THEN
VP(P)=(YM(P)-310)/15:CPU(P)=0
CLEAR FILL RECT P*160+6,187 TO P*160+154,512
FI
FI
IF CPU(P)=2 THEN
XP(P)=2:YP(P)=10:YS(P)=0:SD(P)=50:POW(P)=0:GP(P)=0
FOR B=0 TO 5
FOR C=0 TO 15
BOARD(B,C,P)=0
IF C<7 BOMBS(C,P)=0
NEXT C
NEXT B
FOR A=0 TO 1
XS(A*4)=0:XS(A*4+8)=1
NEXT A
SETRGB 1,255,0,0
SETRGB 2,255,255,0
FOR A=1 TO 325
FOR B=0 TO 1
SETRGB 3,255,255*B,0
GTRIANGLE P*160+5+B*150,512 TO P*160+5,512-A TO P*160+155,512-A*B
NEXT B
NEXT A
CPU(P)=1
SETRGB 1,128,128,128
CLEAR FILL RECT P*160+5,340 TO P*160+155,410
TEXT P*160+20,355,"L1/R1 TO PLAY"
TEXT P*160+20,370,"EASY"
TEXT P*160+20,385,"NORMAL"
TEXT P*160+20,400,"HARD"
FI
FI
NEXT P
WAIT 0.03
UNTIL(C1(1)=1 AND C1(2)=1)
CLEAR WINDOW
GOTO 90

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 "DOGFIGHT","SAVAGE SEESAW","EXOSPHERE","TNT"
LABEL PCOLOUR
DATA 255,0,0,128,128,255,255,255,0,0,255,0
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 BIPLANE
DATA 2.86,13.29,0.29,13.29,3.34,13.29,6,13.29,2.42,17,2.28,14.89,3.43,13.29,3.51,10.45,1.37,11.47,1.13,12.41,4.91,11.47,5.15,12.41,1.7,11.35,0.9,14.41,1.75,8.39,0.74,12.21
LABEL JETPLANE
DATA 3.02,12.84,0.12,12.84,3.26,12.84,6.17,12.84,2.19,15.61,4.1,15.61,1.96,13.79,4.32,13.79,0,7.5
LABEL DOGFINST0
DATA "1UP","L2=FIRE","L1=FASTER","U =DIVE","L =SLOWER","R =FASTER","D =CLIMB","2UP","L2=FIRE","L1=FASTER","U =DIVE","L =SLOWER","R =FASTER","D =CLIMB","3UP","R2=FIRE","R1=FASTER","T =DIVE","S =SLOWER","O =FASTER","X =CLIMB","4UP","R2=FIRE","R1=FASTER","T =DIVE","S =SLOWER","O =FASTER","X =CLIMB"
LABEL DOGFINST1
DATA "1UP","L2=FIRE","L1=FASTER","U =FASTER","L =TURN","R =TURN","D =SLOWER","2UP","L2=FIRE","L1=FASTER","U =FASTER","L =TURN","R =TURN","D =SLOWER","3UP","R2=FIRE","R1=FASTER","T =FASTER","S =TURN","O =TURN","X =SLOWER","4UP","R2=FIRE","R1=FASTER","T =FASTER","S =TURN","O =TURN","X =SLOWER"
LABEL CLOWN
DATA -4,-14,-2,0,4,-14,2,0,-10,-14,10,-12,-1,-23,1,-6,-4,-20,4,-18
LABEL SESWINST
DATA "1UP","L2=FASTER","L1=SWITCH","U =N/A","L =LEFT","R =RIGHT","D =N/A","2UP","L2=FASTER","L1=SWITCH","U =N/A","L =LEFT","R =RIGHT","D =N/A","3UP","R2=FASTER","R1=SWITCH","T =N/A","S =LEFT","O =RIGHT","X =N/A","4UP","R2=FASTER","R1=SWITCH","T =N/A","S =LEFT","O =RIGHT","X =N/A"
LABEL TARGETS
DATA " PARALYSED"," CONFUSED"," SCORE DECAPITATED"
LABEL EXOSINST
DATA "1UP","L2=FIRE","L1=FASTER","U =N/A","L =LEFT","R =RIGHT","D =N/A","2UP","L2=FIRE","L1=FASTER","U =N/A","L =LEFT","R =RIGHT","D =N/A","3UP","R2=FIRE","R1=FASTER","T =N/A","S =LEFT","O =RIGHT","X =N/A","4UP","R2=FIRE","R1=FASTER","T =N/A","S =LEFT","O =RIGHT","X =N/A"
LABEL BOMBINST
DATA "1UP","L2=ROTATE","L1=ROTATE","U =ROTATE","L =LEFT","R =RIGHT","D =DROP","2UP","L2=ROTATE","L1=ROTATE","U =ROTATE","L =LEFT","R =RIGHT","D =DROP","3UP","R2=ROTATE","R1=ROTATE","T =ROTATE","S =LEFT","O =RIGHT","X =DROP","4UP","R2=ROTATE","R1=ROTATE","T =ROTATE","S =LEFT","O =RIGHT","X =DROP"
LABEL ALLINST
DATA "THIS IS THE 4IN1 VOLUME 2 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 "DOGFIGHT"
DATA "IF YOU LIKE COMBAT (R) IN THE AIR, YOU HAVE COME TO"
DATA "THE RIGHT PLACE. SHOOT IT OUT IN BI-PLANES OR"
DATA "JETPLANES TO GAIN AIR SUPERIORITY AND SCORE POINTS."
DATA "FLY OFF THE SIDE OF THE SCREEN, AND YOU WILL ALWAYS"
DATA "RETURN TO BATTLE."
DATA "YOU MAY ALSO TRY THE TARGET SHOT MODE, IN WHICH YOU"
DATA "DETONATE A TAIL-BOMB BY SHOOTING THE FIVE TRAILING"
DATA "TARGETS ON THE TAIL OF THE ENEMY. SHOOT EACH OUT"
DATA "AND BOOM!"
DATA "THE BI-PLANES FLY WITH UP TO DIVE AND DOWN TO"
DATA "CLIMB. LEFT SLOWS YOU DOWN, AND RIGHT OR L1 OR R1"
DATA "SPEEDS YOU UP. L2 OR R2 FIRE."
DATA "THE JETPLANE USES UP TO FLY FASTER, AND DOWN TO"
DATA "SLOW DOWN. LEFT AND RIGHT STEER. L1 OR R1 ALSO"
DATA "INCREASE SPEED, WHILE L2 OR R2 SHOOT."
DATA ""
DATA "SAVAGE SEESAW"
DATA "BOUNCE CLOWNS INTO THE AIR TO POP BALOONS. THE LOW"
DATA "BALOONS SCORE 1 POINT, MIDDLE BALOONS SCORE 10, AND"
DATA "TOP BALOONS GET YOU 100 POINTS! BOUNCE THE CLOWN"
DATA "OFF THE VERY END OF THE SEESAW TO GET IT TO BOUNCE"
DATA "SUPER HIGH. IF YOU MISS, YOUR CLOWN WILL HIT THE"
DATA "GROUND, AND HURT HIMSELF. WHEN YOU RUN OUT OF EXTRA"
DATA "CLOWNS, THE GAME ENDS."
DATA "LEFT AND RIGHT MOVE YOUR SEESAW, AND L1 OR R1 CAN"
DATA "TURN IT. L2 OR R2 SPEED UP YOUR SEESAW. SEE HOW"
DATA "MANY POINTS YOU CAN SCORE WITH ONLY ONE CLOWN!"
DATA ""
DATA "EXOSPHERE"
DATA "HOSTILE ALIENS ARE TRYING TO LAND, AND YOU MUST"
DATA "DEFEND THE WORLD. HIT THE MOTHER SHIP FOR A RANDOM"
DATA "POWER-UP. AS YOU HIT MORE ALIENS, PEOPLE GIVE YOU"
DATA "MORE FUNDING. THE HIGHER YOU HIT THE MORE THEY PAY,"
DATA "AND WHEN YOU HAVE 1000, YOU CAN BUY EXTRA TURRETS."
DATA "FAST SHOTS, NARROW TURRETS, AND EVEN SHIELDS ARE UP"
DATA "FOR GRABS. USE LEFT AND RIGHT TO MOVE, L1 OR R1 TO"
DATA "MOVE FASTER, AND L2 OR R2 TO SHOOT."
DATA ""
DATA "TNT"
DATA "BOMBS OF VARIOUS COLOURS DROP FROM THE SKY IN THIS"
DATA "4-WAY PUZZLE GAME. COMPETE TO GET A HIGH SCORE."
DATA "GET THREE OR MORE IN A ROW HORIZONTALLY,"
DATA "VERTICALLY, OR DIAGONALLY TO DEFUSE THEM."
DATA "LEFT AND RIGHT MOVE THE BOMBS SIDE-WAYS, DOWN MAKES"
DATA "THE BOMBS DROP FASTER, AND UP, L1, L2, R1 OR R2"
DATA "ROTATE THE BOMBS."
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"



