100 ! AUTHOR MICHAEL OEHMAN WITH SPECIAL THANKS TO TOMMY ARELL STHLM SWEDEN 830228 110 ! PRE-SCAN 120 GOTO 160 :: CALL COLOR :: CALL MAGNIFY :: CALL CLEAR :: CALL SCREEN :: CALL SPRITE :: CALL HCHAR :: CALL POSITION :: CALL SOUND :: CALL COINC 130 CALL CHAR :: CALL KEY :: CALL MOTION :: CALL PATTERN :: CALL DELSPRITE :: CALL CHARSET :: CALL LOCATE :: CALL JOYST 140 U1,PA,X$,X,V,J,U,N,O,P,M,A,B$,E,R,D,B,F,G,T,Y,Z,SKILL,HIGH,Q,C,D,J,K,L 150 !@P- 160 CALL CHAR(64,"00423C424242423C") 170 CALL CHAR(36,"78787810D6FFFEFFFFFEFFD6107878783838381216F63FDFDF3FF61612383838") 180 CALL CHAR(40,"00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF007F7F7F7F7F7F7F7F") 190 CALL CHAR(44,"0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0000000000000000") 200 CALL CHAR(87,"080C0EFF0E0C08") 210 CALL CHAR(96,"78787830367FFEFF7F7E7F36307878783838381012F23FDFDF3FF21210383838") 220 CALL CHAR(100,"78787810D6FFFEFFFFFEFFD6107878780E0E040406F63FDFDF3FF64604040E0E") 230 CALL CHAR(104,"00081B14152E6B546655323D17140900000D20848CCB44A8C2E52441448A83") 240 CALL CHAR(108,"0003020D19761D3D2D1A0D16150800000040B018F0986A58E8947AC88") 250 CALL CHAR(112,"0FEFFFFFE70F0F05050506C7FFC71F07F0F7FFFFE7F0F0A0A0A060E3FFE3F8E") 260 CALL CHAR(116,"00000F0F223F3F3F3F3F321202000C0C060F1F0600E0E0C4C4447C383A7E3A00") 270 CALL CHAR(122,"FFFFFFFFFFFFFFFF0000185A245A81") 280 CALL CHAR(128,"0") 290 CALL CHAR(136,"071FC7FFC7060505050F0FE7FFFFEF0FE0F8E3FFE360A0A0A0F0F0E7FFFFF7F") 300 CALL CHAR(140,"3838105050FFFCFBFBFCFF50501038381E1E1E0C6FFF7FFFFF7FFF6F0C1E1E1E") 310 CALL MAGNIFY(3) :: GOSUB 850 :: V,J,U,N=0 :: CALL CLEAR :: RANDOMIZE :: O,P=3 :: M=150 :: CALL COLOR(1,3,3,8,14,15) 320 FOR A=3 TO 7 :: CALL COLOR(A,2,3) :: NEXT A 330 CALL COLOR(13,2,3,12,15,1,2,12,2) :: CALL CLEAR :: CALL SCREEN(5) :: RESTORE 340 DATA 1,32,2,40,3,41,4,42,18,40,19,41,20,42,21,128,22,128,23,128,24,128 350 CALL HCHAR(5,1,122,416) :: FOR A=1 TO 11 :: READ B,C :: CALL HCHAR(B,1,C,32) :: NEXT A 360 DISPLAY AT(1,5):"STOCKHOLM COMPETITION" 370 CALL SPRITE(#1,36,14,77,25,#2,96,2,77,1,0,17,#3,100,5,107,120,0,4,#20,96,7,47,250,0,8) 380 CALL SPRITE(#4,108,13,13,1,0,-20,#5,108,13,13,80,0,-20,#6,104,13,13,160,0,-20) 390 CALL SPRITE(#7,108,13,140,20,0,-20,#8,104,3,140,100,0,-20,#9,108,13,140,180,0,-20) 400 DISPLAY AT(22,6):"RELEASE ALPHALOCK" :: FOR D=1 TO 30 STEP 2 :: CALL SOUND(-100,523,D) :: NEXT D 410 DISPLAY AT(22,6):" GO GO GO GO GO" :: FOR D=1 TO 30 STEP 2 :: CALL SOUND(-100,698,D) :: NEXT D :: DISPLAY AT(22,1) 420 GOSUB 1480 :: CALL COINC(ALL,Z) :: IF Z=-1 THEN 1030 ELSE CALL KEY(1,A,B) :: IF A=18 AND F>15 THEN GOSUB 1390 430 IF G=0 THEN V=V+10 ELSE V=V+20 440 U=U+1 :: IF U/100=INT(U/100)THEN GOSUB 1450 :: GOTO 440 450 IF RND<.25-(SKILL/100)AND F>15 THEN CALL MOTION(#2,0,RND*30-40,#3,0,RND*30-40) :: CALL SOUND(-50,800,5) 460 CALL COINC(ALL,Z) :: IF Z=-1 THEN 1030 ELSE GOSUB 1480 :: CALL KEY(1,A,B) :: IF A=18 AND F>15 THEN GOSUB 1390 470 CALL POSITION(#1,T,Y) :: CALL COINC(ALL,Z) :: IF Z=-1 THEN 1030 480 IF T<32 THEN CALL MOTION(#1,20,0) :: CALL SOUND(100,-5,5) ELSE IF T>122 THEN CALL MOTION(#1,-20,0) :: CALL SOUND(100,-5,5) 490 GOSUB 1480 :: CALL COINC(ALL,Z) :: IF Z=-1 THEN 1030 500 F=F+1 :: IF G=0 AND F=8 THEN 520 510 IF Y>210 THEN 550 ELSE 420 520 CALL MOTION(#1,0,0) 530 FOR A=4 TO 9 :: CALL MOTION(#A,0,-70) :: NEXT A 540 CALL MOTION(#2,0,RND*30-40,#3,0,RND*30-40,#20,0,RND*30-40) :: G=1 :: GOTO 420 550 CALL MOTION(#1,0,0) 560 FOR A=1 TO 9 :: CALL MOTION(#A,0,-70) :: NEXT A :: CALL MOTION(#20,0,-70) :: V=V+500 :: N=N+1 570 CALL SOUND(100,700,10) :: DISPLAY AT(22,1):"BONUS 500 PNT" :: FOR A=4 TO 9 :: CALL MOTION(#A,0,-FA) :: NEXT A 580 CALL MOTION(#1,0,0,#2,0,RND*30-30,#3,0,RND*30-30,#20,0,RND*30-30) :: G=1 :: DISPLAY AT(22,1) :: GOTO 420 590 CALL COLOR(2,9,16,12,11,1) :: DISPLAY AT(23,1):"POINTS AT 300 KM:";V :: CALL COLOR(#2,5,#3,13,#20,2) 600 FOR A=4 TO 9 :: CALL COLOR(#A,16) :: NEXT A :: RETURN 610 CALL COLOR(12,2,1,2,5,16) 620 DISPLAY AT(23,1):"POINTS AT 500 KM:";V :: CALL COLOR(#2,11,#3,16,#20,13) :: CALL SCREEN(2) 630 FOR A=4 TO 9 :: CALL COLOR(#A,16) :: CALL PATTERN(#A,44) :: NEXT A :: RETURN 640 FOR A=4 TO 9 :: CALL PATTERN(#A,104) :: NEXT A :: P=.5 :: O=1 650 DISPLAY AT(23,1):"POINTS AT 800KM:";V :: CALL COLOR(12,16,1,2,6,2) 660 CALL COLOR(#2,5,#3,13,#20,7) :: CALL SCREEN(11) :: FOR A=4 TO 9 :: CALL COLOR(#A,16) :: NEXT A :: RETURN 670 DISPLAY AT(23,1):"POINTS AT 1200 KM:";V :: CALL COLOR(12,8,1,2,2,12) :: CALL SCREEN(7) 680 CALL COLOR(#2,5,#3,7,#20,16) :: FOR A=4 TO 9 :: CALL COLOR(#A,14) :: NEXT A :: RETURN 690 CALL COLOR(12,15,1,2,12,2) :: CALL SCREEN(5) :: DISPLAY AT(23,1):"POINTS AT 1500 KM:";V 700 CALL COLOR(#2,2,#3,16,#20,5) :: FOR A=4 TO 9 :: CALL COLOR(#A,4) :: NEXT A :: P,O=2 :: RETURN 710 CALL DELSPRITE(ALL) :: CALL CLEAR 720 IF U=600 THEN DISPLAY AT(18,7):"MAGNETA MADE IT" 730 FOR A=3 TO 7 :: CALL COLOR(A,2,3) :: NEXT A :: CALL SCREEN(12) 740 IF V<0 THEN V=0 750 DISPLAY AT(9,5):"SCORE :";V :: FOR A=1 TO 14 :: CALL COLOR(A,2,3) :: NEXT A :: CALL SCREEN(12) 760 CALL COLOR(0,16,1) :: IF HIGH770 IF HIGH780 DISPLAY AT(21,1):::"PRESS REDO TO RESTART":"PRESS BACK FOR TITEL" 790 DISPLAY AT(5,5):"HIGH SCORE :";HIGH 800 DISPLAY AT(7,5):"NAME :";X$ 810 DISPLAY AT(11,5):"CAR CRASHES :";J 820 DISPLAY AT(13,5):"FRONT TOUCHES :";N 830 V,J,U,N=0 840 CALL KEY(0,K,L) :: IF L=0 THEN 840 ELSE IF K=6 THEN 320 ELSE IF K=15 THEN 300 ELSE 840 850 CALL CLEAR :: CALL SCREEN(4) :: CALL DELSPRITE(ALL) :: FOR A=1 TO 8 :: CALL COLOR(A,2,1) :: NEXT A 860 DISPLAY AT(5,5):"STOCKHOLM COMPETITION"::" AUTHOR MICHAEL @HMAN" 870 DISPLAY AT(11,3):"PRESS":" 1 SKILL LEVEL 1 BEGINNER":" 2 SKILL LEVEL 2 MASTER":" 3 SKILL LEVEL 3 PRO" 880 CALL COLOR(2,2,1) 890 CALL KEY(0,K,L) :: IF L=0 THEN 890 ELSE IF K=49 THEN SKILL=20 ELSE IF K=50 THEN SKILL=10 ELSE IF K=51 THEN SKILL=5 ELSE 890 900 CALL HCHAR(K-37,5,87) 910 DISPLAY AT(24,4):"PRESS ANY KEY TO BEGIN" 920 CALL COLOR(13,2,1,1,2,1) 930 CALL SPRITE(#1,140,16,62,256,0,-7,#2,36,2,62,1,0,7) 940 A=262 :: B=311 :: C=392 950 FOR E=1 TO 4 :: FOR D=3 TO 30 STEP 6 :: CALL SOUND(-100,A,D,B,D,C,D) :: CALL KEY(0,K,L) :: IF L<>0 THEN 1010 960 NEXT D :: IF F=1 AND E=2 THEN A=294 :: B=233 :: C=196 970 NEXT E :: F=F+1 :: IF F<2 THEN A=262 :: B=311 :: C=208 :: GOTO 950 980 CALL MOTION(#1,0,0,#2,0,0) :: CALL PATTERN(#1,112,#2,136) 990 CALL KEY(0,K,L) :: CALL KEY(1,A,B) 1000 IF L<>0 OR A=18 THEN 1010 ELSE 990 1010 CALL CLEAR :: CALL DELSPRITE(ALL) 1020 RETURN 1030 G=0 :: F=0 1040 J=J+1 1050 IF J=SKILL THEN 1320 1060 CALL MOTION(#1,0,0) 1070 B=0 :: FOR A=1 TO 30 STEP 2 1080 CALL SOUND(-100,44000,30,44000,30,450*(31-A),30,-8,A) 1090 B=B+1 :: IF B=1 THEN PA=136 ELSE IF B=2 THEN PA=140 ELSE IF B=3 THEN PA=112 ELSE PA=36 :: B=0 1100 CALL PATTERN(#1,PA) 1110 NEXT A 1120 CALL SOUND(300,-5,1) 1130 CALL POSITION(#1,E,R) 1140 CALL SPRITE(#12,116,14,E,R) 1150 CALL LOCATE(#1,192,1) :: CALL MOTION(#1,0,0) 1160 FOR D=1 TO 100 :: NEXT D 1170 CALL DELSPRITE(#12) 1180 CALL MOTION(#2,0,INT(RND*20)+3,#3,0,INT(RND*20)+3,#20,0,INT(RND*20)+3) 1190 FOR A=4 TO 9 :: CALL MOTION(#A,0,-20) :: NEXT A 1200 CALL LOCATE(#1,1,35) :: CALL MOTION(#1,15,0) 1210 DISPLAY AT(22,1):"CAR NUMBER:";J+1 1220 FOR A=2000 TO 110 STEP-50 1230 CALL SOUND(-100,A,5) 1240 CALL POSITION(#1,E,R) :: IF E>75 THEN CALL MOTION(#1,0,0) :: CALL LOCATE(#1,77,35) :: GOTO 1260 1250 NEXT A 1260 CALL KEY(1,K,L) :: CALL KEY(0,A,B) 1270 CALL PATTERN(#1,36) 1280 IF A=15 THEN 710 1290 IF K<>18 THEN 1260 1300 DISPLAY AT(22,1) 1310 GOTO 420 1320 CALL CLEAR 1330 CALL SCREEN(3) 1340 CALL DELSPRITE(ALL) 1350 FOR A=5 TO 8 :: CALL COLOR(A,2,3) :: NEXT A 1360 DISPLAY AT(24,1):"YOU MUST BREAK" 1370 FOR A=1 TO 400 :: NEXT A 1380 GOTO 710 1390 FOR A=4 TO 9 :: CALL JOYST(1,K,L) :: CALL MOTION(#A,0,-20,#1,-L*0,K*P) :: NEXT A 1400 CALL POSITION(#4,E,R) :: R=100 :: CALL LOCATE(#4,E,R,#5,E,R+100,#6,E,R-99) 1410 CALL POSITION(#7,E,R) :: R=100 :: CALL LOCATE(#7,E,R,#8,E,R+100,#9,E,R-99) 1420 CALL MOTION(#2,0,INT(RND*20)+10,#3,0,INT(RND*20)+10,#20,0,INT(RND*20)+10) 1430 F,G=0 1440 RETURN 1450 U1=U/100 1460 ON U1 GOSUB 590,610,670,640,690,710 1470 RETURN 1480 CALL JOYST(1,K,L) 1490 CALL POSITION(#1,E,R) :: IF R<20 AND K=-4 THEN K=0 1500 CALL MOTION(#1,-L*P,K*0) 1510 RETURN