0 REM ***************** 1 REM * * 2 REM * MAGIC FIRE * 3 REM * * 4 REM * (c) 11.2.1985 * 5 REM * * 6 REM * by Jens Berke * 7 REM * * 8 REM ***************** 9 POKE 580,1:POKE 539,0:? "}":POKE 710,0:POSITION 10,10:? "BITTE WARTEN!" 100 DIM A$(44),B$(5),FX(5),FY(5),CH(15):CH1=(PEEK(106)-8)*256:CH2=CH1-8*256 105 CH(14)=193:CH(13)=195:CH(11)=197:CH(7)=199:CH(10)=CH(11):CH(9)=CH(11):CH(5)=CH(7):CH(6)=CH(7) 106 SC=0:LE=3 110 IF PEEK(203)=CH1/256 THEN 1000 120 FOR A=1 TO 44:READ B:A$(A)=CHR$(B):NEXT A 130 DATA 104,201,3,208,254,162,6,104,149,211,202,208,250,230,212,230,213,198,212,208,4,198 140 DATA 213,240,18,161,216,129,214,230,216,208,2,230,217,230,214,208,234,230,215,208,230,96 150 X=USR(ADR(A$),57344,CH1,1024):X=USR(ADR(A$),57344,CH2,1024):RESTORE 32000 160 READ B:IF B=-1 THEN POKE 203,CH1/256:POKE 204,CH2/256:GOTO 180 170 FOR A=0 TO 7:READ C:POKE CH1+B*8+A,C:POKE CH2+B*8+A,C:NEXT A:GOTO 160 180 READ B:IF B=-2 THEN 1000 190 FOR A=0 TO 7:READ C:POKE CH2+B*8+A,C:NEXT A:GOTO 180 200 B$=STR$(SC):A$(7-LEN(B$))=B$ 210 RESTORE 230:FOR A=1 TO 7:READ B:? CHR$(B);:NEXT A:? A$;:? CHR$(127);CHR$(127);CHR$(127); 220 ? CHR$(30);CHR$(30);LE;:RETURN 230 DATA 155,28,127,31,31,31,31 999 REM *** Vorbereitung *** 1000 GRAPHICS 1:POKE 708,250:POKE 709,0:POKE 710,10:POKE 711,56:POKE 712,146:POKE 752,1:? CHR$(125) 1005 A$="000000":B$="000000" 1010 RESTORE 1020:FOR A=1536 TO 1607:READ B:POKE A,B:NEXT A 1020 DATA 72,138,72,152,72,32,42,6,173,11,212,56,233,80,48,20,169,224,141,9,212,166,205,202 1030 DATA 202,224,242,208,2,162,250,134,205,142,24,208,104,168,104,170,104,64,165,20,208,25 1040 DATA 173,244,2,197,203,208,5,165,204,76,60,6,165,203,141,244,2,169,240,133,20,169,0,133,77,96 1050 DL=PEEK(560)+256*PEEK(561) 1060 POKE DL+28,130:POKE DL+29,130:POKE DL+25,194:POKE DL+24,134 1070 POKE 205,244:POKE 512,0:POKE 513,6:POKE 20,250:POKE 54286,192 1075 GOSUB 15000:GOSUB 16000 1080 AS=4:AF=4:BI=BI+1:IF BI=6 THEN BI=1 1085 ON BI GOSUB 10000,11000,12000,13000,14000 1090 ? "Punkte : ";A$;" Leben : ";LE 1100 ? :? "MAGIC FIRE Eine JB'85 Produktion" 1110 ? " Geschrieben von Jens Berke";CHR$(28);CHR$(28);CHR$(28);:FOR A=1 TO 7:? CHR$(31);:NEXT A 1130 FOR A=1 TO 4 1140 X=INT(RND(0)*19):Y=INT(RND(0)*18)+1:LOCATE X,Y,Z:IF Z<>32 THEN 1140 1150 Y1=1 1160 LOCATE X,Y+Y1,Z:IF Z=32 THEN 1180 1170 IF Y1=1 THEN Y1=-1:GOTO 1160 1175 GOTO 1140 1180 COLOR 203:PLOT X,Y:COLOR 233:PLOT X,Y+Y1:FX(A)=X:FY(A)=Y+Y1:NEXT A 1190 RX=10:RY=10:RX1=RX:RY1=RY:CH(15)=193:COLOR 193:PLOT RX,RY 1999 REM *** Feuerknopfabfrage *** 2000 IF STRIG(0) THEN 3000 2010 ST=STICK(0):SOUND 1,0,0,5:COLOR CH(ST)+1:PLOT RX,RY:FOR A=1 TO 50:NEXT A 2020 X=RX+(ST<8)-(ST>8 AND ST<12) 2030 Y=RY+(ST=13)-(ST=14) 2031 IF X<0 THEN X=19 2032 IF X>19 THEN X=0 2033 IF Y<0 THEN Y=19 2034 IF Y>19 THEN Y=0 2040 LOCATE X,Y,Z:IF Z<>233 THEN SOUND 1,0,0,0:GOTO 2090 2050 COLOR 234:PLOT X,Y:FOR A=0 TO 100 STEP 10:SOUND 1,A,10,5:NEXT A:SOUND 1,0,0,0 2060 FOR A=1 TO 4:IF FX(A)=X AND FY(A)=Y THEN 2075 2070 NEXT A 2075 POP :FOR B=A TO AF-1:FX(B)=FX(B+1):FY(B)=FY(B+1):NEXT B:AF=AF-1:FN=0 2080 FOR A=1 TO 30:NEXT A:SC=SC+10:GOSUB 200:COLOR 32:PLOT X,Y 2090 COLOR CH(15):PLOT RX,RY 2999 REM *** Stickabfrage *** 3000 ST=STICK(0):IF ST=15 THEN 4000 3010 RX1=RX1+(ST<8)-(ST<12 AND ST>8) 3020 RY1=RY1+(ST=13)-(ST=14) 3030 IF RX1<0 THEN RX1=19 3040 IF RX1>19 THEN RX1=0 3050 IF RY1<0 THEN RY1=19 3060 IF RY1>19 THEN RY1=0 3070 LOCATE RX1,RY1,Z:IF Z<>32 THEN 3500 3080 COLOR 32:PLOT RX,RY:SOUND 0,0,10,5:SOUND 0,0,0,0 3090 RX=RX1:RY=RY1:COLOR CH(ST):PLOT RX,RY:CH(15)=CH(ST):GOTO 4000 3500 IF Z=233 AND STRIG(0) THEN 5100 3510 IF Z=203 THEN 5000 3520 IF Z=109 THEN 5200 3600 RX1=RX:RY1=RY 3999 REM *** Bewegung der Feinde *** 4000 IF AF=0 THEN 2000 4010 FN=FN+1:IF FN>AF THEN FN=1 4020 FX=SGN(RX-FX(FN)):FY=SGN(RY-FY(FN)) 4030 LOCATE FX(FN)+FX,FY(FN)+FY,Z:IF Z>192 AND Z<201 THEN 4070 4040 IF Z<>32 THEN 2000 4050 COLOR 32:PLOT FX(FN),FY(FN):FX(FN)=FX(FN)+FX:FY(FN)=FY(FN)+FY:COLOR 233:PLOT FX(FN),FY(FN) 4060 GOTO 2000 4070 X1=FX(FN)+FX:Y1=FY(FN)+FY 4080 COLOR 211:PLOT X1,Y1:COLOR 32:PLOT FX(FN),FY(FN) 4090 FOR A=20 TO 100 STEP 10:FOR B=9 TO 0 STEP -0.8:SOUND 0,A+B,10,5:NEXT B:NEXT A:SOUND 0,0,0,0 4092 FOR A=1 TO AF:IF FX(A)+FX=X1 AND FY(A)+FY=Y1 THEN 4096 4094 NEXT A 4096 FOR B=A TO AF-1:FX(B)=FX(B+1):FY(B)=FY(B+1):NEXT B:AF=AF-1:FN=0 4100 COLOR 32:PLOT X1,Y1 4110 LE=LE-1:GOSUB 200:IF LE=0 THEN 7000 4120 COLOR CH(15):PLOT RX,RY:GOTO 2000 4999 REM *** Schatz eingesammelt *** 5000 COLOR 202:PLOT RX1,RY1 5010 FOR A=200 TO 20 STEP -10:SOUND 0,A,10,5:SOUND 0,0,0,0:SOUND 0,A,10,5:NEXT A:SOUND 0,0,0,0 5020 SC=SC+10:GOSUB 200:COLOR 32:PLOT RX1,RY1 5030 AS=AS-1:IF AS=0 THEN 6000 5040 RX1=RX:RY1=RY:GOTO 3000 5100 COLOR 211:PLOT RX1,RY1:COLOR 32:PLOT RX,RY 5110 FOR A=20 TO 100 STEP 10:FOR B=9 TO 0 STEP -0.8:SOUND 0,A+B,10,5:NEXT B:NEXT A:SOUND 0,0,0,0 5120 LE=LE-1:GOSUB 200 5130 FOR A=1 TO 4:IF FX(A)=RX1 AND FY(A)=RY1 THEN 5145 5140 NEXT A 5145 FOR B=A TO AF-1:FX(B)=FX(B+1):FY(B)=FY(B+1):NEXT B:AF=AF-1:FN=0 5150 COLOR 32:PLOT RX1,RY1:IF LE=0 THEN 7000 5160 COLOR CH(15):RX=RX1:RY=RY1:PLOT RX,RY:GOTO 2000 5200 COLOR 110:PLOT RX1,RY1:COLOR 32:PLOT RX,RY 5210 FOR A=0 TO 255 STEP 5:SOUND 0,A,10,5:NEXT A:SOUND 0,0,0,0 5220 LE=LE-1:GOSUB 200 5230 FOR A=1 TO 100:NEXT A:COLOR 32:PLOT RX1,RY1:IF LE=0 THEN 7000 5240 RX=RX1:RY=RY1:COLOR CH(15):PLOT RX,RY:GOTO 2000 5999 REM *** Alle Schaetze geholt *** 6000 SC=SC+100:GOSUB 200 6010 FOR A=200 TO 0 STEP -1:SOUND 0,A,10,5:SOUND 0,0,0,0:NEXT A 6020 ? CHR$(125);:GOTO 1080 6999 REM *** Alle Leben verloren *** 7000 ? CHR$(155);CHR$(29);"Druecke START fuer ein neues Spiel...":? CHR$(156);CHR$(156); 7010 IF PEEK(53279)<>6 THEN 7010 7020 RUN 10000 ? #6;CHR$(125):? #6;" oQ" 10010 ? #6;" qQ" 10020 ? #6;" qQ m" 10030 ? #6;"oQQQQQQQQ" 10040 ? #6;"qqqqqqqqr oQQQQQ"; 10050 ? #6;" qQqqqr"; 10060 ? #6;" qQ" 10070 ? #6;" qQ" 10080 ? #6;" qQ" 10090 ? #6;" oQQQQQQQQ";CHR$(193);"oQQQQ" 10100 ? #6;" qqqqqqqqQ qqqqr" 10110 ? #6;" qQ" 10120 ? #6;" qQ" 10130 ? #6;" qQQQQQQQQQQQ"; 10140 ? #6;" m qQqqqqqqqqqr"; 10150 ? #6;" qQ" 10160 ? #6;" qQ" 10170 ? #6;" qQ m" 10180 ? #6;" qQ" 10190 RETURN 11000 ? #6;CHR$(125):? #6:? #6;" oQQQQQ oQQQQQ "; 11010 ? #6;" qQqqqr m qqqqqQ "; 11020 ? #6;" qQ qQ "; 11030 ? #6;" qQ qQ "; 11040 ? #6;" qQ oQQQQQ qQ "; 11050 ? #6;" qr qqqqqr qr "; 11060 ? #6:? #6:? #6;" m ";CHR$(193);" m" 11070 ? #6:? #6;" oQ oQQQQQ oQ "; 11080 ? #6;" qQ qqqqqr qQ "; 11090 ? #6;" qQ qQ "; 11100 ? #6;" qQ qQ "; 11110 ? #6;" qQQQQQ oQQQQQ "; 11120 ? #6;" qqqqqQ m qQqqqr "; 11130 ? #6;" qQ qQ "; 11140 ? #6;" qQ qQ "; 11150 RETURN 12000 ? #6;CHR$(125);"oQQQ oQ oQQQ"; 12010 ? #6;"qQqr qQ qqqQ"; 12020 ? #6;"qQ qQ qQ"; 12030 ? #6;"qr qQ qr"; 12040 ? #6;" qQ" 12050 ? #6;" m qQ m" 12060 ? #6;" qQ" 12070 ? #6;" qr" 12080 ? #6:? #6:? #6;"oQQQQQQQ ";CHR$(193);" oQQQQQQQ"; 12090 ? #6;"qqqqqqqr qqqqqqqr"; 12100 ? #6:? #6;" oQ" 12110 ? #6;" qQ" 12120 ? #6;" m qQ m" 12130 ? #6;" qQ" 12140 ? #6;"oQ qQ oQ"; 12150 ? #6;"qQ qQ qQ"; 12160 ? #6;"qQQQ qQ oQQQ"; 12170 RETURN 13000 ? #6;CHR$(125):? #6 13010 ? #6;" oQ oQ "; 13020 ? #6;" qQ qQ "; 13030 ? #6;" qQ m qQ "; 13040 ? #6;" qQ qQ "; 13050 ? #6;"oQQQQQQQQ oQQQQQQQ"; 13060 ? #6;"qqqqqqqqr qqqqqqqr"; 13070 ? #6:? #6:? #6;" m ";CHR$(193);" m" 13080 ? #6:? #6:? #6:? #6;"oQQQQQQQQ oQQQQQQQ"; 13090 ? #6;"qqqqqqQqr qqqQqqqr"; 13100 ? #6;" qQ qQ "; 13110 ? #6;" qQ m qQ "; 13120 ? #6;" qQ qQ "; 13130 ? #6;" qQ qQ "; 13140 RETURN 14000 ? #6;CHR$(125);" oQ oQ"; 14010 ? #6;" qQ qQ"; 14020 ? #6;" qQ qQ"; 14030 ? #6;" m qQ qQ"; 14040 ? #6;" qQ qQ"; 14050 ? #6;" qQ qQ"; 14060 ? #6;"oQQQQQQQQQQQ m qQ"; 14070 ? #6;"qqqqqqqqqqqr qr"; 14080 ? #6:? #6:? #6;" ";CHR$(193) 14090 ? #6:? #6:? #6;"oQQQQQQQQ oQQQQQQ "; 14100 ? #6;"qQqqqqqqQ qQqqqqr "; 14110 ? #6;"qQ qQ qQ "; 14120 ? #6;"qQ qQ qQ "; 14130 ? #6;"qQ m qQ qQ m "; 14140 ? #6;"qQ qQ qr "; 14150 ? #6;"qQ qQ" 14160 RETURN 15000 ? #6;CHR$(125):? #6:? #6:? #6 15010 ? #6;"oQQoQQoQQQoQQQoQoQQQ"; 15020 ? #6;"qQqQqQqQqQqQqrqQqQqr"; 15030 ? #6;"qQqrqQqQQQqQoQqQqQ" 15040 ? #6;"qQ qQqQqQqQQQqQqQQQ"; 15050 ? #6;"qr qrqrqrqqqrqrqqqr"; 15060 ? #6:? #6;" oQQQoQoQQQQoQQQ" 15070 ? #6;" qQqrqQqQqqQqQqr" 15080 ? #6;" qQQ qQqQQQQqQQ" 15090 ? #6;" qQr qQqQqQrqQr" 15100 ? #6;" qQ qQqQqqQqQQQ" 15110 ? #6;" qr qrqr qrqqqr" 15120 RETURN 16000 ? CHR$(125);" (c) 11. Februar 1985 by Jens Berke":FOR T=1 TO 500:NEXT T 16010 ? :? " Zum Start Feuerknopf druecken..." 16011 ? " Fuer MENU die RESET-Taste" 16020 IF STRIG(0) THEN 16020 16030 RETURN 32000 DATA 33,0,32,34,50,254,252,184,8 32010 DATA 34,16,16,16,124,198,254,124,56 32020 DATA 35,32,58,126,254,152,136,8,0 32030 DATA 36,56,124,254,198,124,16,16,16 32040 DATA 37,0,56,12,15,30,126,12,14 32050 DATA 38,0,12,30,23,247,23,30,12 32060 DATA 39,0,112,48,126,120,240,48,28 32070 DATA 40,0,48,120,232,239,232,120,48 32080 DATA 41,36,20,217,62,124,155,40,36 32090 DATA 42,0,39,111,235,107,107,78,0 32100 DATA 43,63,67,133,253,133,181,134,252 32110 DATA 45,0,4,32,0,2,0,16,0 32120 DATA 46,60,126,255,255,255,255,126,60 32130 DATA 47,1,3,7,15,31,63,127,255 32140 DATA 49,255,255,255,255,255,255,255,255 32150 DATA 50,255,254,252,248,240,224,192,128 32160 DATA 51,146,84,40,198,40,84,146,0 32200 DATA -1 32210 DATA 33,0,8,136,152,254,126,58,32 32220 DATA 35,8,184,252,254,50,34,32,0 32230 DATA 37,0,14,12,126,30,15,12,56 32240 DATA 39,0,28,48,240,120,126,48,112 32250 DATA 41,18,202,44,121,158,52,83,72 32260 DATA 45,0,0,0,0,0,0,0,0 32300 DATA -2