10 REM Killaballs
20 REM By D.L.Lau 30 REM --------- CPC ------------- 40 REM *** Once only initialisation *** 50 MEMORY &7FFF:SPEED KEY 8,1 60 x=&8504:y=&8503:dir=&8505:disp=&8362:flag=&860B 70 CLS:INK 0,0:BORDER 0:INK 15,2,6:INK 9,3,3 80 LOCATE 14,13:PRINT"Please wait ......" 90 FOR f=&8021 TO &8032:READ a:POKE f,a:NEXT 100 DATA 0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0 110 FOR f=&8020 TO &819D STEP 20:POKE f,1:POKE f+19,1:NEXT 120 FOR f=&819D TO &81B0:POKE f,1:NEXT 130 ENT 3,100,5,1,50,2,2:ENV 1,19,-1,30,26,-3,10:ENT -1,50,-1,3:ENV 5,8,8,25 140 FOR f=0 TO 8:READ a:POKE f+&A000,a:NEXT 150 DATA 3,0,0,50,0,0,7,2,0 160 REM ******** Characters' data ****** 170 FOR f=&8200 TO &82DF:READ a:POKE f,a:NEXT 180 DATA 4,12,12,8,76,12,28,44,76,12,44,12,12,204,44,12,12,28,204,12,12,28,12,140,28,44,12,140,4,12,12,8 190 DATA 4,12,204,8,12,76,12,12,44,76,12,12,44,76,60,44,28,60,140,28,12,12,140,28,12,12,140,12,4,204,12,8 200 DATA 17,51,252,34,51,118,51,51,57,118,51,51,57,118,51,51,57,118,60,57,54,60,185,54,51,51,185,51,17,252,51,34 210 DATA 17,51,51,34,118,51,54,57,118,51,57,51,51,252,57,51,51,54,252,51,51,54,51,185,54,57,51,185,17,51,51,34 220 DATA 69,195,252,168,68,237,207,203,199,207,237,222,237,12,201,214,237,237,146,220,233,204,48,214,237,204,195,204,84,252,252,136 230 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,16,32,0,0,16,32,0,0,0,0,0,0,0,0,0,0,0,0,0, 240 DATA 0,64,128,0,85,234,213,170,85,234,213,170,193,144,96,192,192,144,96,192,85,234,213,170,85,234,213,170,0,64,128,0 250 GOTO 1970 260 REM ******************************** 270 lev=1:sc=0:li=5:scr=1:ball=1:POKE &8605,1 280 REM ********* print screen ********* 290 POKE &8600,0:FOR f=&854A TO &854E:POKE f,0:NEXT 300 FOR f=&8551 TO &855A:POKE f,0:NEXT 310 MODE 0:ON scr GOSUB 670,880,1090,1300,1510 320 ad=&8035:FOR g=1 TO 18:READ a$:FOR f=1 TO 18:POKE ad,VAL(MID$(a$,f,1)):ad=ad+1 330 NEXT:ad=ad+2:NEXT 340 PEN 1:LOCATE 2,25:PRINT STRING$(18,CHR$(154)) 350 FOR f=2 TO 24:LOCATE 1,f:PRINT CHR$(149):LOCATE 20,f:PRINT CHR$(149):NEXT 360 LOCATE 3,2:PEN 12:PRINT"Hi Sc":LOCATE 3,3:PEN 10:PRINT"Level" 370 LOCATE 20,25:PRINT CHR$(153):LOCATE 1,1:PRINT CHR$(11):LOCATE 1,25::PRINT CHR$(147):LOCATE 1,1:PRINT CHR$(150):LOCATE 20,1:PRINT CHR$(156) 380 PEN 1:LOCATE 2,1:PRINT STRING$(18,CHR$(154)) 390 MOVE 20,345:DRAWR 596,0,3:MOVER 0,-2:DRAWR -596,0 400 PEN 4:LOCATE 5,2:PRINT hi:FOR f=1 TO li:CALL &8362,f+13,3,&8200:NEXT 410 CALL &8320 420 PEN 13:LOCATE 8,3:PRINT lev 430 REM ********** reset ************** 440 POKE x,2:POKE y,5:POKE dir,3:POKE &8501,&82:POKE &8500,0:POKE &8507,&21:POKE &8508,&80:POKE flag,0 450 CALL disp,2,5,&8200 460 REM ********* main loop *********** 470 SOUND 2,478,200,7,5:FOR f=1 TO 700:INK 2,6,26:NEXT:INK 2,20 480 CALL &9500: 490 FOR f=1 TO (sp-1)*30:NEXT 500 CALL &9000:PEN 3:LOCATE 14,2:PRINT PEEK(&8600)+sc:ON PEEK(flag) GOTO 520,580 510 GOTO 480 520 REM ********** killed ************* 530 SOUND 1,50,110,6,0,3 540 FOR f=1 TO 4:CALL &8362,PEEK(x),PEEK(y),&8200:FOR g=1 TO 150:NEXT 550 LOCATE PEEK(x),PEEK(y):PRINT" ":FOR g=1 TO 140:NEXT:NEXT 560 LOCATE li+13,3:PRINT" ":li=li-1:IF li=0 THEN 1910 570 GOTO 430 580 REM **** completion of screen ***** 590 SOUND 4,478,450,0,1,1:INK 0,0,26:FOR f=1 TO 3000:NEXT:INK 0,0 600 LOCATE 1,25:FOR f=1 TO 25:SOUND 1,300-(f*10),2,5:PRINT:NEXT 610 sc=sc+PEEK(&8600):lev=lev+1 620 IF lev=16 THEN MODE 1:LOCATE 2,12:PRINT" you cheated! there is no way you can complete this game without cheating.":FOR f=1 TO 2000:NEXT:GOTO 1930 630 scr=scr+1:IF scr=6 THEN scr=1:ball=ball+2 640 POKE &8605,ball 650 li=5 660 GOTO 280 670 REM ********** screen 1 *********** 680 RESTORE 690 690 DATA 222222222222222222 700 DATA 211121111212111112 710 DATA 222222222222222222 720 DATA 211121211211121112 730 DATA 222322222222222222 740 DATA 112221112111112112 750 DATA 222222222222232222 760 DATA 211221212111222111 770 DATA 222211212122222222 780 DATA 211222212121211112 790 DATA 211112222221222222 800 DATA 222222111111211212 810 DATA 212212222222212212 820 DATA 212112111112112222 830 DATA 212222222222222112 840 DATA 222212211212112112 850 DATA 112212222212222112 860 DATA 113222222222222222 870 POKE &8601,214:RETURN 880 REM ********** screen 2 *********** 890 RESTORE 900 900 DATA 222222222222222222 910 DATA 211221121112211112 920 DATA 211222222222212222 930 DATA 222211121121212112 940 DATA 111222222222222112 950 DATA 222212111212112112 960 DATA 211212222212222222 970 DATA 211222121213212111 980 DATA 222222321222212222 990 DATA 121112222221211212 1000 DATA 222222121111222222 1010 DATA 211122122222212212 1020 DATA 212222221121112112 1030 DATA 222111321122222222 1040 DATA 212122222223222211 1050 DATA 212222112221211222 1060 DATA 222112222211222222 1070 DATA 112222222222222231 1080 POKE &8601,218:RETURN 1090 REM ********* screen 3 ************ 1100 RESTORE 1110 1110 DATA 222222222222111222 1120 DATA 211221112222111212 1130 DATA 212222222122222222 1140 DATA 222122111222111211 1150 DATA 222222222222222222 1160 DATA 211321111211121112 1170 DATA 222222222212222222 1180 DATA 321222122222222123 1190 DATA 221211121112112122 1200 DATA 222222222222222112 1210 DATA 111123222111212222 1220 DATA 222221222222222322 1230 DATA 212122112121221121 1240 DATA 222222222222222222 1250 DATA 312212211221112112 1260 DATA 222222212222212222 1270 DATA 113211222112222221 1280 DATA 222222222222222311 1290 POKE &8601,227:RETURN 1300 REM ********* screen 4 ************ 1310 RESTORE 1320 1320 DATA 222212212222111222 1330 DATA 221212212112222222 1340 DATA 221222222112111211 1350 DATA 211233222222122222 1360 DATA 222221111222222112 1370 DATA 222122222222222222 1380 DATA 112122221122121122 1390 DATA 222221111222121122 1400 DATA 211122231211123322 1410 DATA 212222222222222212 1420 DATA 212211221222222222 1430 DATA 222222221211112122 1440 DATA 111223111222222221 1450 DATA 322222222212321221 1460 DATA 221211212222222222 1470 DATA 221211221121121122 1480 DATA 211222223222222222 1490 DATA 222222222222231111 1500 POKE &8601,223:RETURN 1510 REM ********** screen 5 *********** 1520 RESTORE 1530 1530 DATA 222222211112222222 1540 DATA 211112213312211112 1550 DATA 212223212212322212 1560 DATA 212222222222222212 1570 DATA 222121212212121222 1580 DATA 222222212212222222 1590 DATA 111221112211122111 1600 DATA 222222222222222222 1610 DATA 221121211112121122 1620 DATA 223221223322122322 1630 DATA 122211222222112221 1640 DATA 122222211112222221 1650 DATA 221122222222221122 1660 DATA 221321123321123122 1670 DATA 211221122221122112 1680 DATA 211222222222222112 1690 DATA 222212212212212222 1700 DATA 113222222222222311 1710 POKE &8601,216:RETURN 1720 REM *********** Title ************* 1730 GOSUB 670:ad=&8035:FOR g=1 TO 18:READ a$:FOR f=1 TO 18:POKE ad,VAL(MID$(a$,f,1)):ad=ad+1:NEXT:ad=ad+2:NEXT 1740 POKE &8600,0:FOR f=&854A TO &854E:POKE f,0:NEXT:POKE x,0:POKE y,0 1750 MODE 0:PEN 1:PRINT"K I L L A B A L L S" 1760 PEN 2:LOCATE 6,3:PRINT"By D.L.Lau":PEN 12:LOCATE 3,7 1770 PRINT"Steer your ball":PRINT:PRINT" left or right to":PRINT:PRINT"collect white dots." 1780 PEN 4:PRINT:PRINT" Avoid your enemies":PRINT:PRINT"and flashing objects" 1790 PEN 3:PRINT:PRINT" Use left and right":PRINT:PRINT"cursors or joystick" 1800 PRINT:PRINT" for steering." 1810 PEN 7:PRINT:PRINT" Space Bar to start." 1820 POKE &8605,5 1830 CALL &9500:IF INKEY(47)<>0 THEN 1830 1840 FOR f=1 TO 25:LOCATE 1,1:PRINT CHR$(11):NEXT 1850 MODE 1:LOCATE 8,10:PRINT"Input speed level (1 to 10)" 1860 PRINT:PEN 2:PRINT" 1 is super impossibly fast" 1870 PRINT" 10 is super boringly slow" 1880 PEN 1:LOCATE 20,16:INPUT sp 1890 IF sp<1 OR sp>10 THEN LOCATE 20,16:PRINT SPACE$(20):GOTO 1880 1900 GOTO 270 1910 REM ********** Game over ********** 1920 PEN 14:LOCATE 7,14:PRINT"GAME OVER" 1930 sc=sc+PEEK(&8600) 1940 IF sc>hi THEN hi=sc 1950 FOR f=1 TO 1500:NEXT:GOTO 1740 1960 REM 1970 REM ** m/c for printing screen *** 1980 RESTORE 1990:FOR f=&8320 TO &838A:READ a$:POKE f,VAL("&"+a$):NEXT 1990 DATA 21,21,80,e,5,6,2,7e,c5 2000 DATA e5,69,60,fe,1,28,1a,fe,2,28 2010 DATA 1e,fe,3,28,22,e1,23,c1,4,78 2020 DATA fe,14,20,e6,c,79,fe,19,c8,23 2030 DATA 23,18,db,11,80,82,cd,6e,83,18 2040 DATA e6,11,a0,82,cd,6e,83,18,de,11 2050 DATA c0,82,cd,6e,83,18,d6,dd,5e,0 2060 DATA dd,56,1,dd,6e,2,dd,66,4,25 2070 DATA 2d,cd,1a,bc,6,4,e,8,c5,e5 2080 DATA 1a,ae,77,23,13,10,f9,e1,1,0 2090 DATA 8,9,c1,d,c2,77,83,c9 2100 REM ********* Ball m/c ************ 2110 adr=&8FFF:FOR f=1 TO 56 2120 READ byte$ 2130 FOR g=1 TO 20 STEP 2 2140 POKE adr,VAL("&"+MID$(byte$,g,2)) 2150 adr=adr+1:NEXT:NEXT 2160 DATA 003E00320D86CD1BBBFE 2170 DATA F32811FEF22814CD24BB 2180 DATA FE082806FE042809180C 2190 DATA 3E02320D8618053E0432 2200 DATA 0D863A0585FE04CA0191 2210 DATA FE02CA8E90FE03CACA90 2220 DATA 3A0D86FE02CC3D913A0D 2230 DATA 86FE04CC51913A0385FE 2240 DATA 06CA629111ECFFCDC591 2250 DATA 2A07867EFE01CA6291FE 2260 DATA 03CA2092FE02CC6E912A 2270 DATA 07862207852A03857D3D 2280 DATA 320385ED5B0085CD6E83 2290 DATA CDB2912A0385ED5B0085 2300 DATA C36E832A078511140019 2310 DATA 7EFE00CAEF91FE02CAEF 2320 DATA 91110100CDC5912A0786 2330 DATA 7EFE01CC5191FE03CA20 2340 DATA 92FE02CC78912A078622 2350 DATA 07852A03857C3C320485 2360 DATA C37A903A0D86FE02CC3D 2370 DATA 913A0D86FE04CC519111 2380 DATA 1400CDC5912A07867EFE 2390 DATA 01CA6891FE03CA2092FE 2400 DATA 02CC82912A0786220785 2410 DATA 2A03857D3CC377902A07 2420 DATA 85111400197EFE00CA04 2430 DATA 92FE02CA049211FFFFCD 2440 DATA C5912A07867EFE01CC3D 2450 DATA 91FE03CA2092FE02CC8C 2460 DATA 912A07862207852A0385 2470 DATA 7C3D320485C37A902A07 2480 DATA 85237EFE01C8FE03CA1F 2490 DATA 923E02320585E1C92A07 2500 DATA 852B7EFE01C8FE03CA1F 2510 DATA 923E0418EA3E03320585 2520 DATA C93E01320585C92A0385 2530 DATA 2DE511ECFF181E2A0385 2540 DATA 24E511010018142A0385 2550 DATA 2CE5111400180A2A0385 2560 DATA 25E511FFFF18002A0785 2570 DATA 19AF77E13A0186473A00 2580 DATA 863CB8CA199232008611 2590 DATA A082C36E833A0085FE00 2600 DATA 28063E00320085C93E20 2610 DATA 320085C93A0586320A86 2620 DATA 2A078519220786215185 2630 DATA E55E23562A0786BFED52 2640 DATA E1CA1F9223233A0A863D 2650 DATA C8320A8618E63A0D86FE 2660 DATA 02C262912A0785237EFE 2670 DATA 01CA6291C3A0903A0D86 2680 DATA FE04C262912A07852B7E 2690 DATA FE01CA6291C313913E02 2700 DATA 320B86C9E13E01320B86 2710 DATA C9C9E13E01320B86C900 2720 REM ********* enemy m/c *********** 2730 adr=&94FF:FOR f=1 TO 59 2740 READ byte$ 2750 FOR g=1 TO 20 STEP 2 2760 POKE adr,VAL("&"+MID$(byte$,g,2)) 2770 adr=adr+1:NEXT:NEXT 2780 DATA 003A05863D320A86214A 2790 DATA 85856F7EFE002817FE02 2800 DATA CA8D95FE03CA1096FE04 2810 DATA CA94963A0A86FE00C818 2820 DATA DBED5F2E05FE1E380EFE 2830 DATA 50381426132210862132 2840 DATA 80181226082210862127 2850 DATA 801808260D221086212C 2860 DATA 802212862120853A0A86 2870 DATA CB27856F364023368211 2880 DATA 0F0019ED5B1086D57323 2890 DATA 7211200019ED5B128673 2900 DATA 2372214A853A0A86856F 2910 DATA 3603114082E1CD6E83C3 2920 DATA 2095213085CD3C97ED53 2930 DATA 108614CD9D9518262A03 2940 DATA 85BFED52CA1F92215185 2950 DATA CD3C97ED531286211400 2960 DATA 197EFE02CACF96FE00CA 2970 DATA CF962A1286C9237EFE01 2980 DATA CAEE96CDCF951820FE03 2990 DATA CA1197212085CD3C97ED 3000 DATA 5307862A1086CD6E8321 3010 DATA 30853A0A86CB27856FC9 3020 DATA 5E2334CDF795181256EB 3030 DATA E5CDF696E1CD6E832151 3040 DATA 85CD3C972BC913732372 3050 DATA C32095213085CD3C97ED 3060 DATA 5310861C2A0385BFED52 3070 DATA CA2092215185CD3C97ED 3080 DATA 531286131AFE02CAB996 3090 DATA FE00CAB9961B1B1AFE02 3100 DATA CAC496FE00CAC4962A12 3110 DATA 86111400197EFE01CAE8 3120 DATA 96FE03CA1297212085CD 3130 DATA 3C97ED5307862A1086CD 3140 DATA 6E832130853A0A86CB27 3150 DATA 856F345E2356EBE5CDF6 3160 DATA 96E1CD6E83215185CD3C 3170 DATA 972BE521140019EBE173 3180 DATA 2372C32095213085CD3C 3190 DATA 97ED53108615CD9D952B 3200 DATA 7EFE01CAF296CDCF955E 3210 DATA 2335CDF7951B732372C3 3220 DATA 2095ED5FFE280602381A 3230 DATA C33A96ED5FFE3C060438 3240 DATA 0FC34796ED5FFE3C0603 3250 DATA 3803C3BF95E13A0A8621 3260 DATA 4A85856F7877C32095ED 3270 DATA 5FFE3C3804060418E906 3280 DATA 0218E53A0786FE402810 3290 DATA 1E402120853A0A86CB27 3300 DATA 856F731682C91E6018EE 3310 DATA E1213085CD3C97D52120 3320 DATA 85CD3C97E1CD6E83214A 3330 DATA 853A0A86856FAF772151 3340 DATA 853A0A86CB27856F3600 3350 DATA C320953A0A86CB27856F 3360 DATA 5E2356C9000000000000 3370 GOTO 1720 |