1 DIM GRID(28,6) 5 CLS 10 GOSUB 2000 20 PRINT @100,"T O T A L"; 30 PRINT @140,"C H A O S"; 40 PRINT @215,"By Chris Spry, 2002."; 50 FOR X=1000 TO 10000 STEP 100 60 SOUND X,1 70 NEXT 80 SOUND 10000,50 90 PRINT @215,"Press A Key To Play"; 95 DUMMY=RND(1) 100 IF INKEY$="" THEN 95 110 GOSUB 3000 115 GOSUB 2200 120 PRINT @41,"Player 1"; 125 PRINT @81," "; 130 PRINT @161,"Player 2"; 135 PRINT @201," "; 140 AL=20:BL=20:AP=50:BP=277:AI=0:BI=0 145 AX=1:AY=1:BX=28:BY=6:AD=0:BD=0 148 AS=0:BS=0 149 XS=0:YS=0 150 FOR X=1 TO 10 160 WL=INT(RND(1)*4)+1 170 WX=INT(RND(1)*(28-WL-2))+2 180 WY=INT(RND(1)*4)+2 190 FOR Y=1 TO WL 200 GRID(WX+Y,WY)=1 210 NEXT Y 220 NEXT X 230 FOR X=1 TO 10 240 WL=INT(RND(1)*4)+1 250 WX=INT(RND(1)*26)+2 260 WY=INT(RND(1)*(4-WL-1))+2 270 FOR Y=1 TO WL 280 GRID(WX,WY+Y)=1 290 NEXT Y 300 NEXT X 310 FOR X=1 TO 4 320 GOSUB 5100 380 NEXT X 385 GOSUB 2300 390 READ N,T 400 IF N=0 THEN 430 410 SOUND N,T 420 GOTO 390 430 GOSUB 2600 440 GOSUB 2620 450 IF MT=1 THEN MOTOR ON 500 GOSUB 2540:GOSUB 2560 502 IF AL<1 OR BL<1 THEN 6500 505 IF AD=1 AND AY>1 THEN AY=AY-1:AP=AP-40 510 IF AD=2 AND AY<6 THEN AY=AY+1:AP=AP+40 520 IF AD=3 AND AX>1 THEN AX=AX-1:AP=AP-1 530 IF AD=4 AND AX<28 THEN AX=AX+1:AP=AP+1 540 ON GRID(AX,AY) GOSUB 6000,6100 550 IF BD=1 AND BY>1 THEN BY=BY-1:BP=BP-40 560 IF BD=2 AND BY<6 THEN BY=BY+1:BP=BP+40 570 IF BD=3 AND BX>1 THEN BX=BX-1:BP=BP-1 580 IF BD=4 AND BX<28 THEN BX=BX+1:BP=BP+1 590 ON GRID(BX,BY) GOSUB 7000,7100 591 IF AS=0 THEN GOSUB 2500 ELSE GOSUB 2640 592 IF BS=0 THEN GOSUB 2520 ELSE GOSUB 2660 595 IF INT(RND(1)*30)=1 THEN GOSUB 5100:PRINT @(WY*40)+WX+9,"?"; 596 ON XS GOSUB 4000,4100,4200 597 ON YS GOSUB 4300,4400,4500 600 C$=INKEY$ 610 IF C$="w" THEN AD=1 620 IF C$="z" THEN AD=2 630 IF C$="a" THEN AD=3 640 IF C$="s" THEN AD=4 650 IF C$="q" THEN GOSUB 8000 655 IF P=1 THEN GOSUB 1000:GOTO 500 660 IF C$="[" THEN BD=1 670 IF C$="/" THEN BD=2 680 IF C$=";" THEN BD=3 690 IF C$="'" THEN BD=4 700 IF C$="p" THEN GOSUB 8500 710 GOTO 500 1000 IF BI=79 OR BI=241 THEN GOSUB 1200:GOTO 1005 1001 IF BI=158 THEN GOSUB 1300 1002 IF BI>0 THEN GOSUB 8500 1005 Y=0 1010 FOR X=1 TO 6 1020 IF GRID(BX,X)=2 THEN Y=X 1030 NEXT X 1035 IF Y=0 THEN 1060 1040 IF YBY THEN BD=2 1060 IF BD=0 THEN BD=3 1065 IF AX=BX THEN BD=INT(RND(1)*2)+3 1066 IF AY=BY THEN BD=INT(RND(1)*2)+1 1070 IF BD<>1 OR BY=1 THEN 1080 1075 IF GRID(BX,BY-1)=1 THEN BD=INT(RND(1)*4)+1 1078 GOTO 1110 1080 IF BD<>2 OR BY=6 THEN 1090 1085 IF GRID(BX,BY+1)=1 THEN BD=INT(RND(1)*4)+1 1088 GOTO 1110 1090 IF BD<>3 OR BX=1 THEN 1100 1095 IF GRID(BX-1,BY)=1 THEN BD=INT(RND(1)*4)+1 1098 GOTO 1110 1100 IF BD<>4 OR BX=28 THEN 1106 1105 IF GRID(BX+1,BY)=1 THEN BD=INT(RND(1)*4)+1 1106 IF BY=1 AND BD=1 THEN BD=INT(RND(1)*4)+1 1107 IF BY=6 AND BD=2 THEN BD=INT(RND(1)*4)+1 1108 IF BX=1 AND BD=3 THEN BD=INT(RND(1)*4)+1 1109 IF BX=28 AND BD=4 THEN BD=INT(RND(1)*4)+1 1110 RETURN 1200 IF BD=1 AND AX=BX AND AYBY THEN GOSUB 8500 1220 IF BD=3 AND AY=BY AND AXBX THEN GOSUB 8500 1240 RETURN 1300 IF BL<16 THEN GOSUB 8500 1310 RETURN 2000 PRINT @0,""; 2005 FOR X=0 TO 38 2010 PRINT CHR$(239); 2020 NEXT 2025 PRINT 2030 FOR X=1 TO 6 2040 FOR Y=1 TO 10 2050 PRINT CHR$(239); 2055 NEXT Y 2060 FOR Y=1 TO 28 2070 PRINT" "; 2080 NEXT Y 2090 PRINT CHR$(239); 2095 PRINT 2100 NEXT X 2110 FOR X=0 TO 38 2120 PRINT CHR$(239); 2130 NEXT 2140 RETURN 2200 FOR X=1 TO 6 2210 FOR Y=(X*40)+11 TO (X*40)+37 2220 PRINT @Y," "; 2230 NEXT Y 2240 NEXT X 2250 RETURN 2300 GP=9 2310 FOR X=1 TO 6 2320 GP=GP+40 2330 FOR Y=1 TO 28 2340 GP=GP+1 2345 IF GRID(Y,X)=0 THEN PRINT @GP," "; 2350 IF GRID(Y,X)=1 THEN PRINT @GP,CHR$(239); 2355 IF GRID(Y,X)=2 THEN PRINT @GP,"?"; 2360 NEXT Y 2370 GP=GP-28 2380 NEXT X 2390 RETURN 2500 PRINT @AP,CHR$(147); 2510 RETURN 2520 PRINT @BP,CHR$(148); 2530 RETURN 2540 PRINT @AP," "; 2550 RETURN 2560 PRINT @BP," "; 2570 RETURN 2600 PRINT @81,AL;" "; 2610 RETURN 2620 PRINT @201,BL;" "; 2630 RETURN 2640 PRINT @AP,CHR$(170); 2650 RETURN 2660 PRINT @BP,CHR$(171); 2670 RETURN 2680 PRINT @88,CHR$(AI) 2690 RETURN 2700 PRINT @208,CHR$(BI) 2710 RETURN 2720 PRINT @88," "; 2730 RETURN 2740 PRINT @208," "; 2750 RETURN 3000 GOSUB 2200 3010 PRINT @91,"How Many Players? (1/2)"; 3020 C$=INKEY$ 3030 IF C$="1" THEN P=1:GOTO 3060 3040 IF C$="2" THEN P=2:GOTO 3060 3050 GOTO 3020 3060 PRINT @131,"Do You Have A Music Tape?"; 3070 C$=INKEY$ 3080 IF C$="" THEN 3070 3090 IF C$="Y" OR C$="y" THEN MT=1 ELSE MT=0 3100 PRINT @171,"Do You Need Instructions?"; 3110 C$=INKEY$ 3120 IF C$="" THEN 3110 3130 IF C$<>"Y" AND C$<>"y" THEN RETURN 3140 GOSUB 2200 3150 PRINT @51,"Total Chaos Instructions"; 3160 PRINT @131,"The object of the game is"; 3170 PRINT @171,"to gather the [?] in the"; 3180 PRINT @211,"arena and use them against"; 3190 GOSUB 3900 3200 PRINT @51,"Your opponent or to help"; 3210 PRINT @91,"yourself. The first person"; 3220 PRINT @131,"to lose all their life"; 3230 PRINT @171,"points loses the match." 3240 GOSUB 3900 3250 PRINT @51,"The control keys are:" 3260 PRINT @91,"Player 1: W,A,S,Z,Q"; 3270 PRINT @131,"Player 2: [,;,',/,P"; 3280 PRINT @171,"Up,Left,Right,Down,Item"; 3290 GOSUB 3900 3300 PRINT @51,"The Items:"; 3310 PRINT @91,"O - Bowling Ball"; 3320 PRINT @131," - Life Charger"; 3330 PRINT @171," or - Armor (1 Hit)"; 3340 PRINT @211," - Crazy Car Driver"; 3350 GOSUB 3900 3360 PRINT @51,"* - Smart Bomb"; 3370 PRINT @91," - Lazer Beam"; 3380 PRINT @131," - Hot Coals"; 3390 PRINT @171," - Pet Monster"; 3400 GOSUB 3900 3410 RETURN 3900 PRINT @251,"--Press A Key--"; 3910 IF INKEY$="" THEN 3910 3920 GOSUB 2200 3930 RETURN 3999 GOTO 3999 4000 FOR X=1 TO 2 4010 PRINT @XP," "; 4020 OX=XX:OY=XY:OP=XP 4035 IF XD=1 AND XY=1 THEN 4050 4036 IF XD=2 AND XY=6 THEN 4050 4037 IF XD=3 AND XX=1 THEN 4050 4038 IF XD=4 AND XX=28 THEN 4050 4039 GOSUB 5200 4040 IF GRID(XX,XY)=0 THEN 4080 4050 XX=OX:XY=OY:XP=OP 4060 SOUND 10000,1 4070 XD=INT(RND(1)*4)+1 4080 PRINT @XP,"O"; 4081 GOSUB 5400 4082 IF XS=0 THEN X=2 4085 NEXT X 4090 RETURN 4100 PRINT @XP," "; 4110 OX=XX:OY=XY:OP=XP 4115 IF XX>BX AND XX>1 THEN XX=XX-1:XP=XP-1 4120 IF XXBY AND XY>1 THEN XY=XY-1:XP=XP-40 4130 IF XY1 THEN XX=XX-1:XP=XP-1:GOTO 4135 4144 IF CD=2 AND XX<28 THEN XX=XX+1:XP=XP+1:GOTO 4135 4145 IF CD=3 AND XY<6 THEN XY=XY+1:XP=XP+40:GOTO 4135 4146 IF CD=4 AND XY>1 THEN XY=XY-1:XP=XP-40:GOTO 4135 4147 SOUND 10000,1 4150 PRINT @XP,CHR$(132); 4155 GOSUB 5400 4160 RETURN 4200 PRINT @XP," "; 4205 IF XX>BX AND XX>1 THEN XX=XX-1:XP=XP-1 4210 IF XXBY AND XY>1 THEN XY=XY-1:XP=XP-40 4220 IF XYAX AND YX>1 THEN YX=YX-1:YP=YP-1 4420 IF YXAY AND YY>1 THEN YY=YY-1:YP=YP-40 4430 IF YY1 THEN YX=YX-1:YP=YP-1:GOTO 4435 4444 IF CD=2 AND YX<28 THEN YX=YX+1:YP=YP+1:GOTO 4435 4445 IF CD=3 AND YY<6 THEN YY=YY+1:YP=YP+40:GOTO 4435 4446 IF CD=4 AND YY>1 THEN YY=YY-1:YP=YP-40:GOTO 4435 4447 SOUND 10000,1 4450 PRINT @YP,CHR$(132); 4455 GOSUB 5500 4460 RETURN 4500 PRINT @YP," "; 4505 IF YX>AX AND YX>1 THEN YX=YX-1:YP=YP-1 4510 IF YXAY AND YY>1 THEN YY=YY-1:YP=YP-40 4520 IF YY0 THEN 5100 5130 IF WX=1 AND WY=1 THEN 5100 5140 IF WX=28 AND WY=6 THEN 5100 5150 GRID(WX,WY)=2 5160 IF P=2 THEN RETURN 5170 IF WX>BX THEN BD=4 5180 IF WX1 THEN XY=XY-1:XP=XP-40:RETURN 5210 IF XD=2 AND XY<6 THEN XY=XY+1:XP=XP+40:RETURN 5220 IF XD=3 AND XX>1 THEN XX=XX-1:XP=XP-1:RETURN 5230 IF XD=4 AND XX<28 THEN XX=XX+1:XP=XP+1:RETURN 5240 XD=INT(RND(4)*1)+1 5250 RETURN 5300 IF YD=1 AND YY>1 THEN YY=YY-1:YP=YP-40:RETURN 5310 IF YD=2 AND YY<6 THEN YY=YY+1:YP=YP+40:RETURN 5320 IF YD=3 AND YX>1 THEN YX=YX-1:YP=YP-1:RETURN 5330 IF YD=4 AND YX<28 THEN YX=YX+1:YP=YP+1:RETURN 5340 YD=INT(RND(1)*4)+1 5350 RETURN 5400 IF XX<>BX OR XY<>BY THEN RETURN 5402 IF XS=3 THEN FOR Y=1 TO 2 5405 IF BS=1 THEN SOUND 1000,30:BS=0:XS=0:RETURN 5410 FOR Z=10000 TO 12000 STEP 100 5412 SOUND Z,1 5415 NEXT Z 5420 BL=BL-3 5465 IF BL<0 THEN BL=0 5470 GOSUB 2620 5475 IF XS=3 THEN NEXT Y 5480 XS=0 5490 RETURN 5500 IF YX<>AX OR YY<>AY THEN RETURN 5502 IF YS=3 THEN FOR Y=1 TO 2 5505 IF AS=1 THEN SOUND 1000,30:AS=0:YS=0:RETURN 5510 FOR Z=10000 TO 12000 STEP 100 5512 SOUND Z,1 5515 NEXT Z 5520 AL=AL-3 5565 IF AL<0 THEN AL=0 5570 GOSUB 2600 5575 IF YS=3 THEN NEXT Y 5580 YS=0 5590 RETURN 5600 GRID(XX,XY)=0 5610 PRINT @XP," "; 5620 BM=INT(RND(1)*4)+1 5630 IF BM=1 AND XX>1 THEN GRID(XX-1,XY)=1:NP=XP-1 5640 IF BM=2 AND XX<28 THEN GRID(XX+1,XY)=1:NP=XP+1 5650 IF BM=3 AND XY>1 THEN GRID(XX,XY-1)=1:NP=XP-40 5660 IF BM=4 AND XY<6 THEN GRID(XX,XY+1)=1:NP=XP+40 5670 PRINT @NP,CHR$(239); 5680 FOR X=1 TO 3:SOUND 5000,2:FOR Y=1 TO 10:NEXT Y:NEXT X 5690 RETURN 5700 IF AX=XX THEN 5750 5710 IF AX1 THEN GRID(YX-1,YY)=1:NP=YP-1 5840 IF BM=2 AND YX<28 THEN GRID(YX+1,YY)=1:NP=YP+1 5850 IF BM=3 AND YY>1 THEN GRID(YX,YY-1)=1:NP=YP-40 5860 IF BM=4 AND YY<6 THEN GRID(YX,YY+1)=1:NP=YP+40 5870 GOTO 5670 5900 IF BX=YX THEN 5950 5910 IF BX"" THEN RUN ELSE NEXT Y 6600 PRINT @AP,CHR$(148); 6610 FOR Y=1 TO 100:IF INKEY$<>"" THEN RUN ELSE NEXT Y 6620 GOTO 6580 6630 PRINT @AP,CHR$(135); 6640 PRINT @13,"Player 2 Wins!"; 6650 READ N,T 6660 IF N=0 THEN 6690 6670 SOUND N,T 6680 GOTO 6650 6690 PRINT @294,"Press A Key"; 6700 PRINT @BP,CHR$(147); 6710 FOR Y=1 TO 200:IF INKEY$<>"" THEN RUN ELSE NEXT Y 6720 PRINT @BP,CHR$(148); 6730 FOR Y=1 TO 200:IF INKEY$<>"" THEN RUN ELSE NEXT Y 6740 GOTO 6700 7000 IF BD=1 THEN BY=BY+1:BP=BP+40 7010 IF BD=2 THEN BY=BY-1:BP=BP-40 7020 IF BD=3 THEN BX=BX+1:BP=BP+1 7030 IF BD=4 THEN BX=BX-1:BP=BP-1 7035 BD=0 7040 RETURN 7100 SOUND 1567,6:SOUND 1174,6 7110 GRID(BX,BY)=0 7120 GOSUB 5000 7130 IF IG=170 THEN IG=171 7140 BI=IG 7150 GOSUB 2700 7160 RETURN 8000 IF AI=0 THEN SOUND 10000,5:RETURN 8005 IF XS>0 THEN PRINT @XP," "; 8010 IF AI=79 THEN GOSUB 8100 8020 IF AI=158 THEN GOSUB 8150 8030 IF AI=170 THEN GOSUB 8200 8040 IF AI=132 THEN GOSUB 8250 8050 IF AI=42 THEN GOSUB 8300 8060 IF AI=241 THEN GOSUB 8350 8070 IF AI=255 THEN GOSUB 8400 8080 IF AI=144 THEN GOSUB 8450 8090 AI=0:GOSUB 2720:RETURN 8100 XS=1:XD=AD:XP=AP:XX=AX:XY=AY 8110 FOR Z=5000 TO 4000 STEP -100:SOUND Z,1:NEXT Z 8120 RETURN 8150 S=6000 8160 FOR X=1 TO 5 8170 S=S-1000 8175 SOUND S,5 8180 AL=AL+1 8182 IF AL=21 THEN AL=20:X=5 8185 GOSUB 2600 8190 NEXT X 8195 RETURN 8200 SOUND 3134,12:SOUND 3134,6:SOUND 3134,6:SOUND 2348,25 8210 AS=1 8220 RETURN 8250 XS=2:XD=AD:XP=AP:XX=AX:XY=AY 8260 FOR Y=1 TO 3 8270 FOR Z=12000 TO 11500 STEP -100 8275 SOUND Z,1 8280 NEXT Z 8285 NEXT Y 8290 RETURN 8300 FOR X=1 TO 10 8305 SOUND INT(RND(1)*500)+11000,1 8310 PRINT @BP,CHR$(INT(RND(1)*180)+40); 8315 NEXT X 8330 GOSUB 5405 8340 RETURN 8350 XX=AX:XY=AY:XP=AP:XD=AD 8351 FOR Y=1 TO 10:SOUND 2348,1:SOUND 2484,1:NEXT Y 8353 XS=1 8355 IF XD=0 THEN XD=INT(RND(1)*4)+1 8360 IF XD=1 AND XY=1 THEN 8388 8361 IF XD=2 AND XY=6 THEN 8388 8362 IF XD=3 AND XX=1 THEN 8388 8363 IF XD=4 AND XX=28 THEN 8388 8364 GOSUB 5200 8365 IF GRID(XX,XY)>0 THEN 8388 8370 IF XD<3 THEN PRINT @XP,CHR$(245); ELSE PRINT @XP,CHR$(241) 8375 GOSUB 5400 8380 IF XS=1 THEN GOTO 8360 8388 XS=0 8389 GOSUB 5700 8390 RETURN 8400 FOR X=1 TO 10 8405 XS=1:CL=INT(RND(1)*3)-1 8407 XP=BP+CL:XX=BX+CL:XY=BY 8410 SOUND INT(RND(1)*500)+8000,1 8415 IF XP<>BP THEN 8435 8418 IF BS=1 THEN BS=0:GOTO 8435 8420 BL=BL-1 8425 IF BL<0 THEN BL=0 8430 GOSUB 2620 8432 PRINT @XP,CHR$(255); 8435 FOR Y=1 TO 50:NEXT Y:PRINT @XP," "; 8436 IF XX=29 OR XX=0 THEN PRINT @XP,CHR$(230);:GOTO 8440 8437 IF GRID(XX,XY)=2 THEN PRINT @XP,"?"; 8438 IF GRID(XX,XY)=1 THEN PRINT @XP,CHR$(239); 8440 NEXT X 8443 XS=0 8445 RETURN 8450 XS=3:XD=AD:XP=AP:XX=AX:XY=AY 8460 SOUND 11172,50:SOUND 9952,12:SOUND 9394,25:SOUND 11172,25 8470 FOR Y=1 TO 4:SOUND 5918,5:SOUND 6269,5:NEXT Y 8480 SOUND 5586,50 8490 RETURN 8500 IF BI=0 THEN SOUND 10000,5:RETURN 8505 IF YS>0 THEN PRINT @YP," "; 8510 IF BI=79 THEN GOSUB 8600 8520 IF BI=158 THEN GOSUB 8650 8530 IF BI=171 THEN GOSUB 8700 8540 IF BI=132 THEN GOSUB 8750 8550 IF BI=42 THEN GOSUB 8800 8560 IF BI=241 THEN GOSUB 8850 8570 IF BI=255 THEN GOSUB 8900 8580 IF BI=144 THEN GOSUB 8950 8590 BI=0:GOSUB 2740:RETURN 8600 YS=1:YD=BD:YP=BP:YX=BX:YY=BY 8610 GOTO 8110 8650 S=6000 8660 FOR X=1 TO 5 8670 S=S-1000 8675 SOUND S,5 8680 BL=BL+1 8682 IF BL=21 THEN BL=20:X=5 8685 GOSUB 2620 8690 NEXT X 8695 RETURN 8700 SOUND 3134,12:SOUND 3134,6:SOUND 3134,6:SOUND 2348,25 8710 BS=1 8720 RETURN 8750 YS=2:YD=BD:YP=BP:YX=BX:YY=BY 8760 GOTO 8260 8800 FOR X=1 TO 10 8805 SOUND INT(RND(1)*500)+11000,1 8810 PRINT @AP,CHR$(INT(RND(1)*180)+40); 8815 NEXT X 8830 GOSUB 5505 8840 RETURN 8850 YX=BX:YY=BY:YP=BP:YD=BD 8851 FOR Y=1 TO 10:SOUND 2348,1:SOUND 2484,1:NEXT Y 8853 YS=1 8855 IF YD=0 THEN YD=INT(RND(1)*4)+1 8860 IF YD=1 AND YY=1 THEN 8888 8861 IF YD=2 AND YY=6 THEN 8888 8862 IF YD=3 AND YX=1 THEN 8888 8863 IF YD=4 AND YX=28 THEN 8888 8864 GOSUB 5300 8865 IF GRID(XX,YY)>0 THEN 8888 8870 IF YD<3 THEN PRINT @YP,CHR$(245); ELSE PRINT @YP,CHR$(241); 8875 GOSUB 5500 8880 IF YS=1 THEN GOTO 8860 8888 YS=0 8889 GOSUB 5900 8890 RETURN 8900 FOR X=1 TO 10 8905 YS=1:CL=INT(RND(1)*3)-1 8907 YP=AP+CL:YX=AX+CL:YY=AY 8910 SOUND INT(RND(1)*500)+8000,1 8915 IF YP<>AP THEN 8935 8918 IF AS=1 THEN AS=0:GOTO 8935 8920 AL=AL-1 8925 IF AL<0 THEN AL=0 8930 GOSUB 2600 8932 PRINT @YP,CHR$(255); 8935 FOR Y=1 TO 50:NEXT Y:PRINT @YP," "; 8936 IF YX=29 OR YX=0 THEN PRINT @YP,CHR$(230);:GOTO 8940 8937 IF GRID(YX,YY)=2 THEN PRINT @YP,"?"; 8938 IF GRID(YX,YY)=1 THEN PRINT @YP,CHR$(239); 8940 NEXT X 8943 YS=0 8945 RETURN 8950 YS=3:YD=BD:YP=BP:YX=BX:YY=BY 8960 GOTO 8460 9000 DATA 4697,6,4184,6,3728,6,3134,12,3728,6,3124,25,0,0 9010 DATA 932,12,1174,12,1567,50,1174,12,1174,12,0,0