FLIGHT OF THE
CONDOR
by Jack Chung |
"Flight of the Condor" is a futuristic, strategic, and arcade action machine language game. The game requires one joystick and an Atari 400/800 computer.
When the game is run, it asks you a number of questions before you begin playing. The first is how many refuelling castles you want. This can be from one to ten, depending how lucky you feel. If you pick zero, you will still have one because in the top left hand corner of the strategic screen there is always a refuelling castle. The next question asks you how many Vulture squadrons you wish to fight, where ten is the hardest, and one is the easiest. The third question that needs to be resolved is the Vulture Difficulty. This is from one to seven, where one is the easiest, and seven is the most difficult. This skill level makes the Vultures fly higher (easy level), or lower (difficult level), depending on the skill level chosen. The last question that the computer asks you is what you want the Doom's-Day Hour to be. This can be from one to ninety-nine, depending on how difficult you want to make it for yourself. The Doom's-Day Hour, or Ultimatum Hour, is the amount of turns you have before the Vultures overrun your planet.
The game is actually two games in one. The first screen which appears is called the strategic screen and contains 162 squares or sectors. In each one is either nothing, a refuelling castle, or a Vulture. By moving your Condor with the joystick you can examine each sector. Each time you move one square you lose one energy point. If your energy points go below one, your game is over. To make this game a little easier, you have a scanner in which you can look at the contents of a sector without actually moving to it. Your scanner is activated by pressing your space bar. A cross will appear on the screen, and you can now move it to whichever sector that you wish to examine. Once it's on the sector you wish to look at, press your button. This will then tell you what is in it. To use your scanner will cost only one energy point, so you can check sectors that are far away without it being too costly.
If, when moving your bird, you encounter another bird figure, you will enter into what I call the Tactical phase of the game. This is where the combat takes place between you and the Vultures. Your bird appears at the bottom of the screen while the Vulture swoops down from above, dropping boulders, trying to hit you. Whatever your energy was before you entered the sector determines the amount of hits you can take before being destroyed. You are able to move your Condor left and right to dodge the Vulture fire. To fire back at the Vulture, press your joystick button and direct your bullets by moving your joystick either left or right. The only way to leave an enemy sector is either by destroying the enemy or by being killed.
The game is won when you have killed all of the Vultures or lost when your energy level runs out. The game is quite enjoyable, and I hope you have a good time playing it.
It uses redefined characters to draw all the graphics in the strategic screen. In the Tactical screen, animated player/missile graphics are used. Also, a short assembly language subroutine is used to speed up the graphics in the Tactical phase of the game. The game is split up into four programs. The first program loads in the character set, the second program is the machine code in the form of data statements, and the third is the initialization and main part of the game. Save the first one as LCHAR.BAS, the second as LMAIN.BAS, and the third as MAIN. Then TYPE `D:LCHAR.BAS` and it will run the program. If you have a cassette, change line 20 from RUN 'D:' to RUN `C:` in program one and two. You have to save it also as SAVE `C:` and then to run it type RUN `C:`. The fourth listing is the assembler code. You Don't need this to run the program. It is only listed so you can have a better understanding of what the program is doing.
This game can be acquired by sending $3.00 U.S. and a blank disk or cassette to:
ROM MAGAZINE
P.O. BOX 160
Maple Ridge, B.C.
V2X 7G1
P.O. BOX 160
Maple Ridge, B.C.
V2X 7G1
10 REM READ IN CHARACTER SET
20 FOR I=34816 TO 35848:READ X:POKE I,X:NEXT I:RUN "D:LMAXN.BAS"
1000 DATA 0,0,0,0,0,0,8,0,0,24,24,24,24,0,24,0,0,102,102,182,0,0,8,8
1010 DATA 0,102,255,102,102,255,102,0,24,62,96,60,6,124,24,0,0,182,188,24,48,102,70,0
1020 DATA 28,54,28,56,111,182,59,0,0,24,24,24,0,0,0,0,0,14,28,24,24,28,14,0
1030 DATA 8,112,56,24,24,56,112,0,0,102,60,255,68,182,8,8,0,24,24,126,24,24,0,0
1040 DATA 8,0,0,8,0,24,24,48,0,0,0,126,0,0,0,0,0,0,0,0,0,24,24,0
1050 DATA 0,6,12,24,48,96,64,0,8,60,102,118,118,102,60,0,0,24,56,24,24,24,126,0
1060 DATA 0,60,102,12,24,48,126,0,0,126,12,24,12,102,60,0,8,12,28,68,108,126,12, 0
1070 DATA 0,126,96,124,6,102,60,8,8,68,96,124,102,182,60,8,8,126,6,12,24,48,48,0
1080 DATA 0,60,102,68,102,102,68,0,8,68,102,62,6,12,56,0,0,8,24,24,8,24,24,0
1090 DATA 8,0,24,24,8,24,24,48,6,12,24,48,2d,12,6,B,B,B,126,0,0,126,8,0
1100 DATA 96,48,24,12,24,48,96,0,0,60,102,12,24,0,24,8,0,68,102,110,110,96,62,0
1110 DATA 48,120,284,252,204,204,238,8,252,102,102,124,182,182,252,8,124,198,192,192,192,198,124,0
1120 DATA 252,102,102,182,182,182,252,0,254,102,96,120,96,102,254,0,254,102,96,120,96,96,240,0
1130 DATA 124,198,192,,192,206,198,124,0,238,204,284,252,284,204,238,0,126,90,24,24,24,90,126,0
1140 DATA 30,12,12,12,12,204,120,0,115,54,60,56,60,54,115,0,120,48,48,48,48,54,126,0
1150 DATA 198,238,254,214,198,198,231,0,204,236,252,228,204,204,238,8,124,198,198,198,198,198,124,8
1160 DATA 252,102,102,182,124,96,224,0,124,198,198,198,198,204,118,0,252,102,102,124,120,108,230,0
1170 DATA 124,198,192,124,6,198,124,0,255,iSS,24,24,24,24,60,8,238,204,284,204,204,204,120,0
1180 DATA 238,204,284,204,204,128,48,8,231,198,198,214,254,238,198,0,195,182,60,24,60,102,195,0
1190 DATA 238,284,204,120,48,45,120,0,254,198,12,24,48,182,254,8,0,30,24,24,24,24,30,0
1200 DATA 0,64,96,48,24,12,6,0,0,128,24,24,24,24,120,0,8,8,28,54,99,8,8,8
1210 DATA 0,8,8,8,0,0,255,0,0,54,127,127,62,28,8,0,21,16,24,26,38,26,26,26
1220 DATA 85,1,137,169,237,169,169,169,26,26,27,27,27,27,21,0,169,169,249,249,249,249,85,8
1238 DATA 21,31,31,31,30,27,26,30,85,253,253,189,189,185,169,173,31,31,38,30,31,31,21,0
1240 DATA 189,189,173,237,253,253,85,0,21,18,24,18,24,18,24,18,85,33,137,33,137,33,137,33
1250 DATA 24,18,24,18,24,18,21,0,137,33,137,33,137,33,85,0,42,32,32,33,32,36,36,37
1260 DATA 170,2,194,66,66,70,70,214,37,37,33,32,33,36,42,8,214,214,218,66,18,6,170,0
1278 DATA 2,2,2,2,2,2,42,47,160,224,224,224,224,224,234,254,42,2,2,2,2,2,2,0
1280 DATA 234,224,224,224,224,224,160,0,192,192,48,48,12,12,3,3,3,3,12,12,48,48,192,192
1298 DATA 3,3,12,12,4$,48,192,192,192,192,d8,48,12,12,3,3,240,240,240,240,240,240,240,240
1300 DATA 24,24,24,31,31,8,0,0,128,96,120,96,126,24,30,0,8,24,60,126,24,24,24,8
1310 DATA 0,24,24,24,126,60,24,0,0,24,48,126,48,24,0,0,0,24,12,126,12,24,8,8
1320 DATA 8,24,60,126,126,60,24,0,0,0,60,6,62,182,62,8,0,112,96,124,182,182,124,0
1330 DATA 8,0,68,96,96,96,60,8,8,14,6,62,102,102,62,0,0,0,60,102,126,96,68,8
1340 DATA 8,14,24,62,24,24,68,0,0,0,62,102,102,62,6,124,8,112,96,124,102,182,119,0
1350 DATA 0,24,0,56,24,24,68,0,0,12,0,28,12,12,12,120,8,112,96,188,128,188,102,0
1360 DATA 0,56,24,24,24,24,60,0,0,0,102,127,127,107,99,8,0,0,124,1B2,102,182,102,0
1370 DATA 0,0,60,102,102,102,68,0,0,8,124,102,102,124,96,112,0,0,62,102,102,62,6,14
1380 DATA 0,0,124,102,96,96,96,0,8,0,62,96,60,6,124,0,0,24,126,24,24,24,14,0
1390 DATA 0,8,102,102,102,102,62,0,0,0,102,102,102,60,24,0,0,0,99,107,127,62,54,0
1400 DATA 8,0,102,60,24,68,102,0,0,0,102,102,182,62,12,120,0,0,126,12,24,48,126,8
1410 DATA 0,24,60,126,126,24,60,0,24,24,24,24,24,24,24,24,0,126,120,124,110,102,6,0
1420 DATA 8,24,56,128,56,24,8,8,16,24,28,30,28,24,16,0,0
10 REM READ IN MACHINE LANGUAGE PROGRAM
20 FOR I=20480 TO 21341:READ X:POKE Z,X :NEXT I:RUN "D:MAIN"
1000 DATA 104,173,1,6,141,199,2,173,8,6,19,10,10,10,24,105,8,141,192,2,141,193,2,141
1010 DATA 2,6,173,0,6,iB,10,iO,10,141,182,82,162,158,142,3,288,169,1,141,77,82,169,112
1020 DATA 141,190,81,169,iBB,141,191,81,160,153,162,80,169,7,32,92,228,169,192,141,14,212,169,58
1030 DATA 141,47,2,369,3,141,29,208,169,96,141,7,212,168,9,152,153,0,188,153,8,101,153,0
1040 DATA 99,153,0,182,153,8,103,200,208,238,160,200,162,8,189,45,83,153,0,102,189,61,83,153
1050 DATA 0,183,200,232,224,16,144,238,169,1,141,111,2,159,120,141,13,82,173,1,6,208,1,96
1060 DATA 173,2,6,16,1,96,76,138,80,173,252,2,201,33,208,3,76,98,228,238,186,81,173,186
1070 DATA 81,285,182,82,144,19,169,0,141,186,81,169,3,32,61,82,24,105,1,141,77,82,76,196
1080 DATA 80,32,18,81,32,106,81,32,14,82,173,183,82,248,6,32,185,82,76,237,50,173,132,2
1090 DATA 208,19,169,1,141,183,82,173,13,82,24,105,8,141,5,208,169,190,141,184,82,173,181,82
1100 DATA 248,6,32,92,82,76,15,81,169,1,141,181,82,173,190,81,24,105,8,141,4,208,173,191
1110 DATA 81,24,105,9,141,180,82,76,98,228,174,77,82,224,1,208,13,173,191,81,201,40,144,6
1120 DATA 56,233,2,141,191,81,224,2,208,13,173,191,81,201,180,176,6,24,185,2,141,191,81,224
1130 DATA 3,208,21,173,190,81,201,50,176,8,169,200,141,190,81,76,80,81,56,233,1,141,198,81
1140 DATA 224,4,208,21,173,190,81,201,200,144,8,169,50,141,190,81,76,185,81,24,105,1,141,198
1150 DATA 81,96,173,190,81,161,8,208,24,105,8,141,1,205,172,191,81,174,187,81,238,188,81,173
1160 DATA 188,81,201,30,144,22,169,0,141,188,81,224,16,208,8,162,0,142,187,81,76,156,81,162
1170 DATA 16,142,187,81,189,205,81,153,0,100,189,237,81,153,0,101,200,232,238,189,81,173,189,81
1180 DATA 201,16,144,232,169,0,141,189,81,96,1,0,21,0,142,106,0,0,0,129,66,36,24,24
1190 DATA 36,66,129,0,0,0,0,8,3,15,63,127,195,93,15,31,12,0,0,8,0,0,8,0
1200 DATA 0,0,0,0,0,29,15,31,111,63,31,0,0,0,0,0,192,230,239,228,252,248,240,187
1210 DATA 4,8,0,0,8,0,8,8,0,6,15,28,124,248,240,251,228,280,0,0,8,145,174,0
1220 DATA 211,138,41,4,208,9,173,13,82,56,233,1,141,13,82,138,41,8,208,9,173,13,52,24
1230 DATA 185,1,141,13,82,173,13,82,141,2,208,24,105,8,141,3,288,141,5,208,96,141,76,82
1240 DATA 238,76,82,173,18,210,205,76,82,176,248,96,4,2,169,8,160,0,153,0,188,153,8,101
1250 DATA 200,208,247,96,.173,8,208,248,29,169,0,141,181,82,169,1,141,30,208,169,0,168,153,0
1260 DATA 99,208,208,258,286,1,6,173,16,141,199,2,96,173,180,82,24,189,8,6,105,1,141
1270 DATA 180,82,162,8,172,180,52,192,240,144,6,169,0,141,181,52,96,169,0,162,0,153,0,99
1288 DATA 208,232,224,8,144,247,162,0,200,169,2,153,8,99,232,224,8,144,245,96,159,1,16,0
1290 DATA 7,173,9,208,240,41,169,0,141,183,82,168,153,0,99,200,208,250,169,1,141,38,208,173
1300 DATA 2,6,248,233,16,141,2,6,141,192,2,141,193,2,169,0,141,0,210,141,1,210,96,173
1310 DATA 184,82,141,0,218,173,184,82,141,1,218,162,8,172,184,82,192,10,176,12,169,8,141,183
1320 DATA 82,141,0,210,141,1,210,96,169,0,162,A,153,0,99,200,232,224,10,144,247,173,184,82
1330 DATA 56,233,3,141,184,82,168,162,0,200,169,4,153,0,99,232,224,8,144,245,96,0,1,35
1340 DATA 114,38,39,29,62,115,119,255,231,195,199,141,141,128,128,196,78,100,228,184,124,110,238,255
1350 DATA 231,195,227,177,177,0,0,8,8,0,0,0,8,0,0,0,0,0,0,0,0,0
1 DIM I$(1),POS(162,2)
2 XP=1:VP=I:FOR I=1 TO 162:POS(I,1)=0:POS(I,2)=0:NEXT I
3 GOSUB 20000:POKE 764,25S:POKE 752,0:POS(1,1)=1
5 ? "# REFUEL CASTLES (0-10) ";:INPUT NCASTLE
6 ? "# VULTURE SQUADS (1-10) ";:INPUT NFELCOM
7 ? "VULTURE DIFFICULTY (1-7) ";:INPUT DIF
8 ? "DOOMS DAY HOUR (1-99) ";:INPUT HOUR
9 ENERGY=15
20 FOR I=X TO NCASTLE:W=INT(161*RND(0)+13
21 W=INT(161*RND(0)+13
22 IF POS(W,1)=0 THEN POS(W,1)=INT(2*RND(0)):GOTO 24
23 GOTO 21
24 NEXT I
30 FOR I=1 TO NFELCON:W=INT(161*RND(0)+1)
31 W=INT (161*RND(0)+1)
40 IF POS(W,1)=0 AND POS(W,2)=0 THEN P05(W,2)=IHT(DIF*RND(0)+1):GOTO 50
41 GOTO 31
50 NEXT I:X=2:Y=2
60 GRAPHICS 0:? " FLIGHT OF THE CONDOR":? :POKE 752,1
70 POKE 7S6,PEEK (106)-24:POKE 54281,PEEK(106)-24
80 SETCOLOR 0,0,0:SETCOLOR 1,7,2:SETCOLOR 2,2,6:SETCOLOR 4,0,10
90 POKE 53270,0:POKE 53271,7*16+2:POKE 53272,2*16+6:POKE 63274,0*16+10
100 A=PEEK(560)+256,*PEEK(561)+5
110 FOR I=1 TO 20:POKE A+I,4:NEXT I
120 FOR I=1 TO 9
130 ? ""
140 ? ""
149 NEXT I
150 POSITION X,Y:? ""
151 POSITION 2,21:? "";ENERGY;" !":POSITION 20,21:? "";HOUR
200 S=5TICK(0):TX=X:TY=Y:TXP=XP:IF PEEK(764)=33 THEN POKE 764,255:GOTO 3000
210 IF S=15 THEN 200
220 IF S=X4 THEN Y=Y-2:XP=XP-X8
230 IF S=X3 THEN Y=Y+2:XP=XP+18
240 IF S=7 THEN X=X+2:XP=XP+1
250 IF S=11 THEN X=X-2:XP=XP-1
251 IF X>36 THEN X=36:XP=XP-1
252 IF X<2 THEN X=2:XP=XP+1
253 IF Y>18 THEN Y=18:XP=XP-18
254 IF Y<2 THEN Y=2:XP=XP+18
256 FOR P=X TO 50:S0UND 0,200,10,4:NEXT P:SOUND 0,0,0,0
260 IF POS(XP,1)>0 THEN 500
261 IF POS(XP,2)>0 THEN 1000
269 POSITION TX,TY:? ""
270 POSITION X, Y : ? ""
272 ENERGY=ENERGY-X:HOUR=HOUR-1
273 IF ENERGY=0 THEN 10000
274 IF HOUR=0 THEN 10000
280 POSITION 15,21:? ENERGY;" ":POSITION 33,21:? HOUR
300 GOTO 200
500 POSITION X,Y:? "":XP=TX:Y=TY:XP=TXP
501 IF ENERGY=X5 THEN 272
502 POSITION 11,22:? "":FOR I=ENERGY TO 15
503 ENERGY=ENERGY+X:IF ENERGY=0 THEN 10000
505 P0SITION 15,21:? X;" ":FOR T=X TO 40:NEXT T:SOUND 0,I,10,8:NEXT I:SOUND 0,0,0,0
510 POSITION 11,22:? " "
520 GOTO 251
1000 POSITION X,Y:? "":FOR T-1 TO 200:SOUND 0,T,12,8:NEXT T:SOUND 0,0,0,0:POKE 1537,ENERGY
1010 GRAPHICS 0:POKE 559,0:SETCOLOR 2,0,8:POKE 752,1:A=PEEK(560)+256 PEEK(561)+5:POKE 53260,1:SETCOLOR 4,0,0
l011 POKE A-2,68:POKE A+X,6:POKE A+2,6:FOR I=3 TO X9:POKE A+I,4:NEXT I:POKE 756, PEEK(106)-24:POKE A+20,2
1012 POKE A+2X,2:POKE A+22,2:SETCOLOR 0,7,4:POSITXON 6,1:? "TACTICAL"
1013 FOR I=1 TO 8
1014 ? ""
1015 ? "":NEXT I
1018 FOR NSQUAD=X TO POS(XP,2)
1019 D2=INT(DIF*RND(0)+1)
1020 POKE 1536,DI:POKE 559,62
1040 U=USR(20480):POKE 53252,0:POKE 53253,0
1050 IF PEEK(1537)=0 THEN 10000
1060 IF PEEK(1538)>144 THEN 2000
1070 NEXT NSQUAD:POS(XP,2)-0:ENERGY-PEEK(1537):NFELCON=NFELCON-1:IF NFELCON=0 THEN 11000
1090 POKE 54286,0:POKE 548,5:POKE 549,233:POKE 54286,192:GOTO 60
2000 FOR I=16 TO 0 STEP -0.2:SOUND 0,I,0,I:POKE 53266,I:POKE 53267,I:NEXT I
2001 POKE 54286,128:POKE 53252,0:POKE 53253,0:FOR T=X TO 200:NEXT T
2005 FOR I=0 TO 3:POKE 53248+I,0:NEXT I
2010 GOTO 1070
3000 POSITION 2,21:? " "
3010 ? " ":SX=X:SY=Y:XP1=XP
3020 SOUND 0,200,10,8:SOUND 1,202,10,8
3100 S=STICK(0):TX=SX:TY=SY:IF STRIG(0)=0 THEN 4000
3110 IF S=15 THEN 3100
3120 IF S=14 THEN SY=SY-2:XP1-XP1-18
3130 IF S=13 THEN SY=SY+2:XP1-XP1+18
3140 IF S=7 THEN SX=SX+2:XP1-XP1+l
3150 IF S=11 THEN SX=SX-2:XP1-XP1-1
3160 IF SX>36 THEN SX=36:XP1-XP1-1
3170 IF SX<2 THEN SX=2:XP1-XP1+1
3180 IF SY>18 THEN SY=18:XP1=XP1-18
3190 IF SY<2 THEN SY=2:XP1-XP1+18
3200 POSITION TX,TY:? ""
3205 POSITION X,Y:? ""
3210 POSITION SX,SY:? ""
3220 GOTO 3100
4000 IF POS(XP1,1)>0 THEN POSITION SX,SY:? "":GOTO 4030
4010 IF POS(XP1,2)>0 THEN POSITION SX,SV:? "":GOTO 4030
4020 P0SITION SX,SY? "":ENERGY=ENERGY-1
4020 POSITION 2,21:? " "
4100 SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 150
10000 XP=TXP:POKE 54286,0:POKE 548,S:POKE 549,233:POKE 54286,192
10001 FOR I=0 TO 7:POKE 53248+I,0:NEXT I
10002 GRAPHICS 0:SETCOLOR 2,0,0:POKE 752,X:SETCOLOR 1,0,0:POKE 756,PEEK(106)-24
l0010 IF ENERGY=0 THEN POSITION 8,10:? "YOU RAN OUT OF ENERGY ":GOSUB 32000
10012 IF HOUR=0 THEN POSITION 8,1.0:? " THERE WAS A BIG EXPLOSION":GOSUB 32000
10020 POSITION 8,10:? "AND YOUR SHIP CONDOR ":GOSUB 32000
10030 POSITION 8,10:? "CRASHED.BUT BY LUCK ":GOSUB 32000
10040 P0SXTXON 8,10:? "YOU WERE RESCUED ":GOSUB 32000
10050 POSITION 8,10:? " BY THE STAR FLEET ":GO5UB 32000
10060 POSITION 8,10:? "STAR PATROL AND NOW ":GOSUB 32000
10070 POSITION 8,10:? "READY AGAIN TO WASTE ":GOSUB 32000
10080 POSITION 8,10:? "OUR ENEMY,THE RAVEN! ":GOSUB 32000
10090 POSITION 8,10:? "PRESS ANY KEY TO START":GOSUB 32000:SETCOLOR 1,0,8
10100 IF PEEK(764)=255 THEN 10108
10200 GOTO 2
11000 XP=TXP:POKE 54286,0:POKE 548,5:POKE 549,233:POKE 54286,192
11001 FOR I=0 TO 7:POKE 53248+I,0:NEXT I
11002 GRAPHICS 0:SETCOLOR 2,0,0:POKE 752,1:SETCOLOR 1,0,0:POKE 756,PEEK(106)-24
11010 POSITION 8,10:? "VERY WELL DONE. ":GOSUB 32000
11020 POSITION 8,10:? "YOU DESTOVED THE ":GOSUB 32000
11030 POSITION 8,10:? "FLEET AND SAVE OUR ":GOSUB 32000
11040 POSITION 8,10:? "WORLD. NO REWARD ":GOSUB 32000
11050 POSITION 8,10:? "CAN REPRESENT OUR ":GOSUB 32000
11060 POSITION 8,10:? "APPRECIATION SO ":GOSUB 32000
11070 POSITION 8,10:? "ALL I CAN DO IS SAY ":GOSUB 32000
11080 POSITION 8,10:? "THANKS! ":GOSUB 32000
11090 POSITION 8,10:? "PRESS ANY KEY TO START":GOSUB 32000
11100 IF PEEK(764)=255 THEN 11100
11110 GOTO 2
20000 GRAPHICS 0:SETCOLOR 2,0,0:POKE 752,1:SETCOLOR 1,0,0:POKE 756,PEEK(106)-24
20010 POSITION 5,10:? " FLIGHT OF THE CONDOR":GOSUB 32000
20020 P05XTXON 5,10:? " BY JACK CHUNG ":GOSUB 32000
20030 POSITION 5,10:? " ":SETCOLOR 1,0,8:RETURN
32000 FOR I=0 TO 15 STEP 0.1:SETCOLOR 1,0,I:NEXT I:FOR T=1 TO 200:NEXT T:SET COLOR 1,0,0:RETURN
Check Data
0 REM CHECK DATA FOR PROGRAM ONE OF THE FLIGHT OF THE CONDOR
10 DATA 6725,964,131,425,333,844,22,243,45,125,103,866,635,44,6,799,833,307
1150 DATA 8950,130,15,718,888,409,755,795,707,476,619,232,335,893,484,573,36,885
1320 DATA 3979,127,905,180,73,176,209,916,116,100,231,946
0 REM CHECK DATA FOR PROGRAM TWO OF THE FLIGHT OF THE CONDOR
10 DATA 10524,734,778,292,417,957,508,723,560,528,568,504,764,548,605,675,640,723
1150 DATA 9515,768,707,910,268,641,81,830,390,477,478,701,387,554,540,701,358,724
1320 DATA 1463,617,447,175,224
0 REM CHECK DATA FOR PROGRAM THREE OF THE FLIGHT OF THE CONDOR
1 DATA 11015,339,531,926,918,969,813,712,865,645,393,275,732,713,641,394,416,733
50 DATA 9091,227,541,872,70,983,855,256,64,840,913,769,587,849,879,268,61,57
240 DATA 11444,955,3,939,826,999,886,379,724,770,750,590,262,693,554,452,825,837
501 DATA 8146,655,100,816,145,37,835,791,565,283,334,113,930,485,34,610,813,600
1050 DATA 8824,859,920,824,846,609,47,454,927,2,992,253,391,368,375,371,269,317
3160 DATA 10638,253,140,313,208,786,639,817,927,638,656,914,645,494,919,501,903,893
10012 DATA 12372,917,823,730,665,645,755,765,768,736,965,825,920,502,904,426,508,518
11040 DATA 7498,471,544,482,466,141,787,967,826,902,722,451,668,71
Assembler
Listing
00010 .LI OFF
00011 *************************
00012 * FLIGHT OF THE CONDOR *
00013 * BY JACK CHUNG *
00014 * *
00015 * CO. 1985 *
00017 * ASSEMBLY LANGUAGE *
00018 * SUBROUTINE *
00019 *************************
00050 RANDOM .EQ $D20A
00060 SOUND .E0 $D200
00070 VERTI .EQ $200
00080 DMACTL .EQ $22F
00090 DEST .EQ $230
00100 GRACTL .ED $D01D
00110 PMBASE .EQ $D407
00120 COLPMO .EQ $D012
00130 HPOSPO .EQ $D000
00140 STICK .EQ $D300
00150 TRIGO .EQ $D010
00160 NMIEN .EQ $D40E
00170
00180 ADR .EQ $80
00190
00200 .OR 55000
00210 RIGHT .EQ $8
00220 LEFT .EQ $4
00230 D014M .EQ $2
00240 UP .EQ $1
00250 HSPEED .EQ 1
00260 VSPEED .EO 2
00270 LEVEL .EQ 1536
00280
00290 PLAYER .EQ $6000
00300
00320 START PLA
00340 LDA YOURCOLOR
00350 STA 711
00360 LDA LEVEL
00380 ASL
00390 ASL
00400 ASL
00410 ASL
00420 CLC
00430 ADC #8
00440 STA 704
00450 STA 705
00460 STA EAGLECOLOR
00470 LDA LEVEL
00480 ASL
00490 ASL
00500 ASL
00510 ASL
00520 STA DISTMAX
00530 LDX #158
00540 STX 53251
00541 LDA 521
00542 STA DIR
00543 LDA #112
00544 STA OX
00545 LDA #100
00546 STA OY
00620 LDY #MAIN
00630 LDX /MAIN
00640 LDA #$07
00650 JSR $E45C
00660 LDA #192
00670 STA #MIEN
00680 LDA #$3A
00690 STA DMACTL
00700 LDA #$03
00710 STA GRACTL
00720 LDA /PLAYER
00730 STA PMBASE
00740 LDY #0
00750 TYA
00760 .1 STA PLAYER+$400,Y
00770 STA PLAYER+$500,Y
00780 STA PLAYER+$300,Y
00790 STA PLAYER+$600,Y
00800 STA PLAYER+$700,Y
00810 INY
00820 BNE .1
00830 LDY #200
00840 LDX #0
00850 .2 LDA YOURSHAPE,X
00860 STA PLAYER+$600,Y
00870 LDA YOURSHAPE1,X
00880 STA PLAYER+$700,Y
00890 INY
00900 INX
00910 CPX #16
00920 BCC .2
00930 LDA #l
00940 STA 623
00950 LDA #120
00960 STA MX
00970 LOOP LDA YOURCOLOR
00971 BNE NOTDEAD
00972 RTS
00973 NOTDEAD LDA EAGLECOLOR
00974 BPL EALIVE
00975 RTS
00980 EALIVE JMP LOOP
00990
01060 MAIM LDA 764
01061 CMP #33
01062 BNE N0STOP
01063 JMP $E462
01069 NOSTOP INC DISTANCE
01070 LDA DISTANCE
01080 CMP DISTMAX
01090 BCC .1
01100 LDA #0
01110 STA DISTANCE
01120 LDA #3
01130 JSR RND
01140 CLC
O1150 ADC #1
01160 STA DIR
01170 JMP .2
01180 .1 JSR RSTICK
01190 .2 JSR MOVE
01200 JSR YSTICK
01210 LDA YMISSLEON
01220 BEQ .22
01230 JSR YMISSLE
01240 JMP .33
01250 .22 LDA 644
01260 BNE .33
01270 LDA #1
01280 STA YMISSLEON
01290 LDA MX
01300 CLC
01310 ADC #8
01320 STA 53253
01330 LDA #190
01340 STA YMISSLEY
01350 .33 LDA MISSLEON
01360 BEQ .3
01370 JSR MISSLE
01380 JMP .4
01390 .3 LDA #1
01400 STA MISSLEON
01410 LDA OX
01420 CLC
01430 ADC #8
01440 STA 53252
01450 LDA OY
01460 CLC
01470 ADC #9
01480 STA MISSLEY
01490 .4 JMP $E462
01560
01570 RSTICK LDX DIR
01580 CPX #1
01590 BNE .1
01600 LDA OY
01610 CMP #40
01620 BCC .1
01630 SEC
01640 SBC #VSPEED
01650 STA OY
01660 .1 CPX #2
01670 BNE .2
01680 LDA OY
01690 CMP #180
01700 BCS .2
01710 CLC
01720 ADC #VSPEED
01730 STA OY
01740 .2 CPX #3
01750 BNE .3
01760 LDA OX
01770 CMP #50
01780 BCS .33
01790 LDA #200
01800 STA OX
01810 JMP .3
01820 .33 SEC
01830 SBC #HSPEED
01840 STA OX
01850 .3 CPX #4
01860 BNE .4
01870 LDA OX
01880 CMP #200
01890 BCC .44
01900 LDA #50
01910 STA OX
01920 JMP .4
01930 .44 CLC
01940 ADC #HSPEED
01950 STA OX
01960 .4 RTS
01970
01980 MOVE LDA OX
01990 STA HPOSP0
02000 CLC
02010 ADC #8
02020 STA HPOSP0+1
02030 LDY OY
02040 LDX WSHAPE
02050 INC SLOW
02060 LDA SLOW
02070 CMP #30
02080 BCC MO0
02090 LDA #0
02100 STA SLOW
02110 CPX #16
02120 BNE TAR
02130 LDX #0
02140 STX WSHAPE
02150 JMP MO0
02160 TAR LDX #16
02170 STX WSHAPE
02180 MO0 LDA EAGLESHAPE,X
02190 STA PLAYER+$400,V
02200 LDA EAGLESHAPE1,X
02210 STA PLAYER+$500,Y
02220 INY
02230 INX
02240 INC COUNT
02250 LDA COUNT
02260 CMP #16
02270 BCC MO0
02280 LDA #0
02290 STA COUNT
02300 RTS
02310
02320 DISTANCE .DA #0
02330 WSHAPE .DA #0
02340 SLOW .DA #0
02350 COUNT .DA #0
02360 OX .DA #112
02370 OY .DA #100
02380 FRAME .HS 00
02390 SHAPE .HS 000081422418182442818000
02400 SLEW .EQ *-SHAPE-1
02410 EAGLESHAPE
02420 DA #0,#0,#0,#3,#15,#63,#127,#195,#93,#15,#31,#12,#0,#0,#0,#0
02430 DA #0,#0,#0,#0,#0,#0,#0,#0,#29,#15,#31,#111,#63,#3131,#0,#0
02440 EAGLESHAPE1
02450 .DA #0,#0,#0,#192,#230,#239,#220,#252,#248,#240,#187,#4,#8,#0,#0,#0
02460 .DA #0,#0,#0,#0,#6,#15,#28,#124,#248,#240,#251,#228,#200,#0,#0,#0
02470 ;
02480 ;
02490 MX .DA #0
02500
02510 YSTICK LDX STICK
02520 .2 TXA
02530 AND #LEFT
02540 BNE .3
02550 LDA MX
02560 SEC
02570 SBC #HSPEED
02580 STA MX
02590 .3 TXA
02600 AND #RIGHT
02610 BNE .4
02620 LDA MX
02630 CLC
02640 ADC #HSPEED
02650 STA MX
02660 .4 LDA MX
02670 STA 53250
02680 CLC
02690 ADC #8
02700 STA 53251
02701 STA 53253
02710 RTS
02720 RND STA RTEMP
02730 INC RTEMP
02740 RNDWAIT LDA RANDOM
02750 CMP RTEMP
02760 BCS RNDWAIT
02770 RTS
02780 RTEMP .DA #0
02790 DIR .DA #1
02800 ;
02810 ;
02820 CLEAR LDA #0
02830 LDY #0
02840 CLEARP STA PLAYER+$400,Y
02850 STA PLAYER+$500,Y
02860 INY
02870 BNE CLEARP
02880 RTS
02890 MISSLE LDA 53256
02900 BEQ FU1
02910 LDA #0
02920 STA MISSLEON
02930 LDA #1
02940 STA 53278
02950 LDA #0
02960 TAY
02970 CL1 STA PLAYER+$380,Y
02980 INY
02990 BHE CL1
02991 DEC YOURCOLOR
02992 LDA YOURCOLOR
02993 STA 711
03000 RTS
03010 FU1 LDA MISSLEY
03020 CLC
03030 ADC LEVEL
03040 ADC #1
03050 STA MISSLEY
03060 LDX #0
03070 LDY MISSLEY
03080 CPY #240
03090 BCC .1
03100 LDA #0
03110 STA MISSLEON
03120 RTS
03130 .1 LDA #0
03140 LDX #0
03150 .11 STA PLAYER+$300,Y
03160 INY
03170 INX
03180 CPX #8
03190 BCC .11
03200 LDX #0
03210 .2 INY
03220 LDA #2
03230 STA PLAVER+$300,Y
83240 INX
03250 CPX #8
83260 BCC .2
03270 RTS
03280
03290 MISSLEY .DA #0
03300 MISSLEON .DA #0
03310 DISTMAX .DA #0
03320 YMISSLEON .DA #0
03330 YMISSLEY .DA #0
03340 ;
03350 ;
03360 ;
03370 YMIS5LE LDA 53257
03380 BEQ NOTHIT
03390 LDA #0
03400 STA YMISSLEON
03410 TAY
03420 CLEARY STA PLAYER+$300,Y
03430 INY
03440 BHE CLEARY
03450 LDA #1
63460 STA 53278
03470 LDA EAGLECOLOR
03480 SED
03490 SBC #16
03500 STA EAGLECOLOR
03510 STA 704
03520 STA 705
83521 LDA #0
03522 STA SOUND
03523 STA SOUND+1
03530 RTS
03540 NOTHIT LDA YMISSLEY
03541 STA SOUND
03542 LDA YMISSLEY
03543 STA SOUND+1
83549 LDX #0
83550 LDY YMISSLEY
83560 CPY #10
03570 BCS .1
03580 LDA #0
83590 STA YMISSLEON
03591 STA SOUND
03592 STA SOUND+1
03600 RTS
03610 .1 LDA #0
03620 LDX #0
03630 .11 STA PLAVER+$388,Y
83640 INY
03650 INX
03660 CPX #10
03670 BCC .11
83680 LDA YMISSLEY
03690 SEC
03700 SBC #3
03710 STA YMISSLEY
03720 TAY
03730 LDX #0
03740 .2 INY
03750 LDA #4
03760 STA PLAYER*$388,Y
03770 INX
03780 CPX #8
03790 BCC .2
03800 RTS
03810 EAGLECOLOR .EQ 1538
03820 YOURCOLOR .EQ 1537
31000 YOURSHAPE
32000 .DA #0,#1,#35,#114,#38,#39,#29,#62,#118,#119,#255,#231,#195,#199,#141,#141
32001 YOURSHAPE1
32010 .DA #128,#128,#196,#78,#100,#228,#184,#124,#110,#238,#255,#231,#195,#227,#177,#177