10 REM Helicopter Holocaust Setup Program 20 REM By Steven Flintham 30 MODE 7 40 VDU 23;8202;0;0;0; 50 *FX229,1 60 *FX4,2 70 ON ERROR GOTO 90 80 *SHADOW 1 90 PROCinstructions 100 MODE 4 110 VDU 23;8202;0;0;0; 120 PROCget_data(&C00,75,"HELICOPTER 1 RIGHT") 130 PROCget_data(&C50,75,"HELICOPTER 1 LEFT") 140 PROCget_data(&CA0,75,"HELICOPTER 2 RIGHT") 150 PROCget_data(&A00,75,"HELICOPTER 2 LEFT") 160 PROCget_data(&A50,7,"BULLETS") 170 PROCget_data(&AA0,47,"FUEL") 180 PROCget_data(&5000,75,"FUEL HELICOPTER") 190 ENVELOPE 1,5,16,16,16,2,2,2,127,0,0,-127,126,126 200 PROCassemble 210 CHAIN "HELI2" 220 END 230 DEF PROCget_data(at%,length%,char$) 240 data%=at% 250 FOR read%=0 TO length% 260 READ data%?read% 270 NEXT 280 ENDPROC 290 DEF PROCassemble 300 start%=&70 310 start2%=&72 320 cols%=&74 330 rows%=&76 340 data%=&78 350 col_loop%=&7A 360 loop8%=&7C 370 loop82%=&7E 380 flag%=&7F 390 FOR opt%=0 TO 2 STEP 2 400 P%=&4F00 410 [OPT opt% 420 .sprite_print 430 LDA start%:STA start2% 440 LDA start%+1:STA start2%+1 450 LDA #0:STA col_loop% 460 .loop1 470 LDA #0:STA loop8%:STA loop82% 480 .loop2 490 LDA #0 500 CLC 510 ADC loop82% 520 LDY rows% 530 .mult_loop 540 ADC col_loop% 550 DEY 560 BNE mult_loop 570 TAY 580 LDA (data%),Y 590 LDY loop8% 600 EOR (start%),Y 610 STA (start%),Y 620 INC loop8% 630 INC loop82% 640 LDA loop8%:CMP #8:BEQ add_140:.sprite2 650 LDA loop82%:CMP rows%:BNE loop2 660 CLC 670 LDA start2%:ADC #8:STA start% 680 LDA start2%+1:ADC #0:STA start%+1 690 LDA start%:STA start2% 700 LDA start%+1:STA start2%+1 710 INC col_loop% 720 LDA col_loop%:CMP cols%:BNE loop1 730 RTS 740 .add_140 750 CLC 760 LDA start%:ADC #64:STA start% 770 LDA start%+1:ADC #1:STA start%+1 780 LDA #0:STA loop8% 790 JMP sprite2 800 .collision 810 LDA start%:STA start2% 820 LDA start%+1:STA start2%+1 830 LDA #0:STA col_loop% 840 STA flag% 850 .loop1 860 LDA #0:STA loop8%:STA loop82% 870 .loop2 880 LDA #0 890 CLC 900 ADC loop82% 910 LDY rows% 920 .mult_loop 930 ADC col_loop% 940 DEY 950 BNE mult_loop 960 TAY 970 LDA (data%),Y 980 LDY loop8% 990 EOR (start%),Y 1000 CMP #0:BNE set_flag 1010 INC loop8% 1020 INC loop82% 1030 LDA loop8%:CMP #8:BEQ add_140_2:.collision2 1040 LDA loop82%:CMP rows%:BNE loop2 1050 CLC 1060 LDA start2%:ADC #8:STA start% 1070 LDA start2%+1:ADC #0:STA start%+1 1080 LDA start%:STA start2% 1090 LDA start%+1:STA start2%+1 1100 INC col_loop% 1110 LDA col_loop%:CMP cols%:BNE loop1 1120 RTS 1130 .add_140_2 1140 CLC 1150 LDA start%:ADC #64:STA start% 1160 LDA start%+1:ADC #1:STA start%+1 1170 LDA #0:STA loop8% 1180 JMP collision2 1190 .set_flag 1200 LDA #255:STA flag% 1210 RTS 1220 ] 1230 NEXT 1240 ENDPROC 1250 REM HELI1R 1260 REM rows=19/columns=4 1270 DATA 51,0,0,0,0,68,238,68,174,174 1280 DATA 159,71,35,17,0,0,0,0,0,255 1290 DATA 17,51,50,50,116,116,248,248 1300 DATA 248,124,63,15,15,143,119,17 1310 DATA 34,255,255,0,136,196,226,177 1320 DATA 208,224,240,240,240,255,15 1330 DATA 15,15,255,34,17,255,136,0,0 1340 DATA 0,0,0,136,196,226,243,215,159 1350 DATA 31,46,76,136,0,0,204 1360 REM HELI1L 1370 REM rows=19/columns=4 1380 DATA 17,0,0,0,0,0,17,50,116,252 1390 DATA 190,159,143,71,35,17,0,0,51 1400 DATA 255,0,17,50,116,248,240,240 1410 DATA 240,240,240,255,15,15,15,255 1420 DATA 68,136,255,255,136,204,196 1430 DATA 196,226,226,241,241,241,227 1440 DATA 207,15,15,31,238,136,68,255 1450 DATA 204,0,0,0,0,34,119,34,87,87 1460 DATA 159,46,76,136,0,0,0,0,0 1470 REM HELI2R 1480 REM rows=19/columns=4 1490 DATA 51,0,0,0,0,68,238,68,170,170 1500 DATA 153,68,34,17,0,0,0,0,0,255 1510 DATA 17,51,50,50,116,116,248,248 1520 DATA 248,116,51,0,0,136,119,17,34 1530 DATA 255,255,0,136,196,226,177,208 1540 DATA 224,240,240,240,255,0,0,0,255 1550 DATA 34,17,255,136,0,0,0,0,0,136 1560 DATA 196,226,243,213,153,17,34,68 1570 DATA 136,0,0,204 1580 REM HELI2L 1590 REM rows=19/columns=4 1600 DATA 17,0,0,0,0,0,17,50,116,252 1610 DATA 186,153,136,68,34,17,0,0,51 1620 DATA 255,0,17,50,116,248,240,240 1630 DATA 240,240,240,255,0,0,0,255,68 1640 DATA 136,255,255,136,204,196,196 1650 DATA 226,226,241,241,241,226,204 1660 DATA 0,0,17,238,136,68,255,204,0 1670 DATA 0,0,0,34,119,34,85,85,153,34 1680 DATA 68,136,0,0,0,0,0 1690 REM BULLETS 1700 REM rows=2/columns=4 1710 DATA 255,255,51,51,204,204,255,255 1720 REM FUEL 1730 REM rows=12/columns=4 1740 DATA 15,12,11,11,11,12,15,15,11 1750 DATA 12,15,15,15,15,7,15,15,12,7 1760 DATA 7,7,15,15,15,15,14,14,14,14 1770 DATA 2,14,14,14,14,15,15,15,1,15 1780 DATA 15,15,3,15,15,15,15,15,15 1790 REM FUELHEL 1800 REM rows=19/columns=4 1810 DATA 51,0,0,0,0,68,238,68,238,238 1820 DATA 255,119,51,17,0,0,0,0,0,255 1830 DATA 17,51,50,50,116,116,248,248 1840 DATA 248,252,255,255,255,255,119 1850 DATA 17,34,255,255,0,136,196,226 1860 DATA 177,208,224,240,240,240,255 1870 DATA 255,255,255,255,34,17,255,136 1880 DATA 0,0,0,0,0,136,196,226,243,247 1890 DATA 255,255,238,204,136,0,0,204 1900 DATA 72,101,108,105,99,111,112,116,101,114,32,72,111,108,111,99,97,117,115,116,32 1910 DATA 66,121,32,83,116,101,118,101,110,32,70,108,105,110,116,104,97,109,46 1920 DEF PROCinstructions 1930 PRINTTAB(7,0);CHR$132;CHR$157;TAB(32,0);CHR$156 1940 PRINTTAB(6,1);CHR$141;CHR$132;CHR$157;CHR$131;"Helicopter Holocaust ";CHR$156 1950 PRINTTAB(6,2);CHR$141;CHR$132;CHR$157;CHR$131;"Helicopter Holocaust ";CHR$156 1960 PRINTTAB(7,3);CHR$132;CHR$157;TAB(32,3);CHR$156 1970 PRINTTAB(8,5);CHR$132;CHR$157;CHR$131;"by Steven Flintham ";CHR$156 1980 VDU 28,0,24,39,6 1990 PRINT'" In this two player game, you must try"'"to shoot down your opponent's"'"helicopter." 2000 PRINT'" Note that you cannot fire if some of"'"your bullets are already in the air." 2010 PRINT'" Each helicopter has a limited fuel"'"supply, and if one runs out the other"'"player wins automatically." 2020 PRINT'" Moving up and firing use more fuel"'"than moving down, left and right." 2030 PROCspace 2040 CLS 2050 PRINT'" From time to time, a supply helicopterwill fly across the screen and drop a"'"fuel cannister, enabling you to increaseyour fuel level." 2060 PRINT'" To pick up the fuel, simply fly into"'"it before your opponent does." 2070 PRINT'" The controls are shown when the game"'"has loaded." 2080 PROCspace 2090 ENDPROC 2100 DEF PROCspace 2110 PRINTTAB(11,17);CHR$132;CHR$157;CHR$131;"Press SPACE ";CHR$156; 2120 *FX21,0 2130 REPEAT UNTIL GET=32 2140 ENDPROC