ROM Computer Magazine Archive ROM MAGAZINE ISSUE 6 — JUNE/JULY 1984 / PAGE 16

SKY WARRIOR
By JACK CHUNG

screen shot

    On the planet Clarexa, people have resorted to living in the clouds, due to the large population on the planet's surface. With this movement to the clouds many small wars have been started between citizens that live on the surface and want the cloud people to leave. This squabble has caused dissention in four different races. Each race has sent their top pilots to battle it out in the clouds. The combat takes place in the clouds with each combatant inside his or her own sky rider. These ships can fly in eight different directions in order to do combat. Once combat begins, there is no stopping the battle. Warriors can hide behind clouds to evade its pursuing enemies and vice versa. This can also be a good tactic when wanting a surprise attack.
    Since each race has its own type of flying machine, it is able to tell the four apart when in close combat. Each pilot tries to manuever his own craft into position so that he can blast the other one's ship. The type of weapons that are used are very primitive, since the colonies before this time had been very peaceful. For this reason their bullets, when shot, will fall in an arc, due to gravity. If this shot hits any one of its foes vessels, the ship will be destroyed. The ship will only stayed destroy for a minute before another member of that same race is back in another ship. Each colony has agreed on the way the combat should take place.
    There will be no suicide missions in that no one can deliberately run into another ones' craft. This is enforced by installing a special radar device in each craft, making it impossible to accomplish such a feat. Also, only a small designated area will be used for the combat, so as not to harm any of the citizens. This combat zone cannot be flown out of due to a special forcefield surrounding the area. With this in mind each pilot must be able to dodge enemy bullets in order to survive. To become the champion, one must shoot down the largest number of "flyers". This amount is decided upon by the players at the beginning of the game. The winner of the combat is the one who will lead the cloud people in their fight against the surface people.
    The story above gives a brief outline on how the game "Sky Warrior" is played. Each player(up to four) controls his own "flyer" by moving it around the screen with a joystick. It can be flown in all eight directions. To fire bullets, just push the red fire button on the joystick and move in the direction that you wish to fire. The game is based on points, in that at the beginning of the game you choose how many points are needed to win. This can make for either a long or short game depending on the players. This game was written in assembler language through the use of the Synassembler. Each ship was animated through the use of player/missile graphics. The clouds and scoring were produced through character graphics in Basic.
    To play the game, you only need to type in the Basic listing. The assembler listing is printed for those people wishing to see how the program was actually made. If typed in and assembled, it will produce the same game as the basic listing, without the re-defined character set. This game runs on 48K and can be played by 2 to 4 players with joysticks. This game can be acquired by sending in $3.00 and a blank disk and cassette to:

ROM MAGAZINE
P.O. BOX 252
Maple Ridge,B.C.
Canada
V2X 7G1


Basic Listing

1 REM ***SKY WARRIOR*****REQUIRES
2 REM ***BY JACK CHUNG***48K and Joystick
3 REM ***ROM ISSUE 6*******
4 DIM SCORE(4):POKE 755,1
5 GOSUB 9000
6 FOR I=1 TO 4:SCORE(I)=0:NEXT I
10 GOSUB 1000
19 GRAPHICS 0:POKE 559,0:POKE 752,1:POKE 756,PEEK(106)-24
20 ? :?
30 ? " Player Player Player Player"
32 ? "   1      2      3      4   "
34 ? "                            "
36 ? "    MAXIMUM SCORE=";MAX
40 FOR I=1 TO 10:X=INT(30*RND(1)+5):Y=INT(10*RND(1)+6):A=INT(3*RND(1)+1)
50 IF A=1 THEN ? CHR$(2);CHR$(29);CHR$(30);CHR$(30);CHR$(30);CHR$(30);CHR$(3);CHR$(4);CHR$(3);CHR$(4);CHR$(1)
55 IF A=1 THEN POSITION X,Y:? CHR$(2);CHR$(29);CHR$(30);CHR$(30);CHR$(30);CHR$(30);CHR$(1)
60 IF A=2 THEN POSITION X,Y:? CHR$(5);CHR$(4);CHR$(5);CHR$(29);CHR$(30);CHR$(30);CHR$(7);CHR$(8);CHR$(7)
90 NEXT I:POKE 559,62
100 U=USR(24576)
102 A=PEEK(1536):A=A+1:SCORE(A)=SCORE(A)+10
103 POSITION ((A-1)*9)+4,4:? SCORE(A)
104 IF SCORE(A)>=MAX THEN 2000
110 U=USR(24761)
120 GOTO 102
1000 GRAPPHICS 0:SETCOLOR 2,0,0:POKE 752,1:SETCOLOR 0,7,4:SETCOLOR 1,8,8:POKE 756,PEEK(106)-24:TRAP 1000
1010 A=PEEK(560)+256*PEEK(561)+5
1020 POKE A+1,7:POKE A+2,7:POKE A+3,6:POKE A+4,6
1100 POSITION 4,1:? "SKY WARRIOR"
1110 POSITION 3,2:? "By Jack Chung"
1200 FOR I=1 TO 4:FOR T=0 TO 15:SETCOLOR 0,3,T:SETCOLOR 2,7,T:NEXT T:NEXT I
1300 POSITION 2,4:? "What is the maximum score to win";:INPUT MAX
1400 RETURN
2000 GRAPPHICS 0:SETCOLOR 2,0,0:POKE 559,62:FOR I=0 TO 7:POKE 53248+I,0:NEXT I:POKE 756,PEEK(106)-24
2001 SOUND 0,0,0,0:SOUND 1,0,0,0:SOUND 2,0,0,0
2010 POKE 752,1:SETCOLOR 0,7,4:SETCOLOR 1,8,8
2020 ? :? "PLAYER ";A;". CONGRATULATIONS SKY WARRIOR!"
2021 ? "YOU ARE THE NEW EMPEROR OF THE CLOUD PEOPLE"
2023 ? "YOU RULE THE PLANET CLAREXA!"
2030 ? :? "Press START to begin"
2040 IF PEEK(53279)=6 THEN 6
2050 GOTO 2040
9000 ? "PLEASE WAIT A MINUTE..."
9005 RESTORE 10000:FOR 1=24576 TO 26112:READ X:POKE I,X:NEXT I
9010 RESTORE 20000:FOR I=34816 TO 35840:READ X:POKE I,X:NEXT I:RETURN
10000 DATA 104,169,0,141,48,2,169,100,141,49,2,165,88,141,4,100,165,89,141,5,100,169,58,141
10010 DATA 47,2,169,3,141,29,208,169,112,141,7,212,169,1,141,111,2,169,192,141,14,212,169,33
10020 DATA 141,0,2,169,100,141,1,2,160,0,152,153,0,116,153,0,117,153,0,118,153,0,119,153
10030 DATA 0,115,200,208,238,169,0,141,198,2,169,116,141,192,2,169,52,141,193,2,169,84,141,194
10040 DATA 2,169,132,141,195,2,169,0,133,204,169,116,133,205,172,78,99,185,41,99,240,6,32,230
10050 DATA 98,76,186,96,32,249,96,172,78,99,185,53,99,24,105,1,153,53,99,185,73,99,24,105
10060 DATA 1,153,73,99,32,157,97,172,78,99,185,65,99,240,27,32,49,98,32,206,97,32,114,98
10070 DATA 173,45,99,240,13,172,78,99,140,0,6,169,0,141,45,99,96,104,238,78,99,230,205,173
10080 DATA 78,99,201,4,144,168,169,0,141,78,99,32,30,99,174,46,99,224,64,208,18,162,0,142
10090 DATA 46,99,162,10,142,0,210,162,132,142,1,210,76,246,96,162,64,142,46,99,162,0,142,0
10100 DATA 210,162,10,142,1,210,76,102,96,172,78,99,185,120,2,170,138,41,1,208,26,185,73,99
10110 DATA 56,233,2,153,73,99,76,31,97,138,41,2,208,9,185,73,99,24,105,1,153,73,99,138
10120 DATA 41,4,208,9,185,69,99,56,233,1,153,69,99,138,41,8,208,9,185,69,99,24,105,1
10130 DATA 153,69,99,185,65,99,208,83,185,132,2,208,78,169,1,153,65,99,185,69,99,24,105,3
10140 DATA 153,49,99,185,73,99,24,105,4,153,53,99,185,120,2,201,15,240,48,201,14,208,8,169
10150 DATA 1,153,61,99,76,147,97,201,13,208,8,169,2,153,61,99,76,147,97,201,7,208,8,169
10160 DATA 4,153,61,99,76,147,97,201,11,208,9,169,3,153,61,99,76,147,97,96,169,0,153,61
10170 DATA 99,153,65,99,96,172,78,99,185,69,99,153,0,208,172,78,99,152,10,10,10,10,24,109
10180 DATA 46,99,170,185,73,99,168,189,95,99,145,204,200,232,238,48,99,173,48,99,201,16,144,239
10190 DATA 169,0,141,48,99,96,172,78,99,185,49,99,141,4,210,169,136,141,5,210,185,61,99,170
10200 DATA 224,1,208,16,185,53,99,56,233,4,153,53,99,201,30,176,3,76,94,98,224,2,208,16
10210 DATA 185,53,99,24,105,4,153,53,99,201,230,144,3,76,94,98,224,3,208,16,185,49,99,56
10220 DATA 233,4,153,49,99,201,40,176,3,76,94,98,224,4,208,16,185,49,99,24,105,4,153,49
10230 DATA 99,201,200,144,3,76,9498,96,172,78,99,169,1,141,31,208,185,49,99,153,4,208,174
10240 DATA 78,99,185,53,99,168,169,0,136,153,0,115,200,189,223,99,153,0,115,200,153,0,115,200
10250 DATA 169,0,153,0,115,96,169,0,153,65,99,141,4,210,141,5,210,169,0,153,0,115,200,208
10260 DATA 250,96,172,78,99,185,8,208,240,107,141,47,99,169,1,141,30,208,173,47,99,41,1,201
10270 DATA 1,208,16,169,0,205,78,99,240,83,169,1,141,41,99,141,45,99,96,173,47,99,41,2
10280 DATA 201,2,208,16,169,1,205,78,99,240,58,169,1,141,42,99,141,45,99,96,173,47,99,41
10290 DATA 4,201,4,208,16,169,2,205,78,99,240,33,169,1,141,43,99,141,45,99,96,173,47,99
10300 DATA 41,8,201,8,208,15,169,3,205,78,99,240,8,169,1,141,44,99,141,45,99,96,172,78
10310 DATA 99,169,168,141,3,210,185,73,99,24,105,1,153,73,99,141,2,210,168,162,0,189,79,99
10320 DATA 145,204,200,232,224,16,144,245,172,78,99,185,73,99,201,250,144,11,169,0,153,41,99,141
10330 DATA 2,210,141,3,210,96,169,0,133,20,165,20,201,2,144,250,96,0,0,0,0,0,0,0
10340 DATA 0,0,0,0,0,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,0,112,120,130
10350 DATA 140,127,137,147,167,0,0,0,60,86,171,213,255,66,66,36,36,24,0,24,24,0,0,0
10360 DATA 255,24,0,189,129,189,129,153,24,24,24,0,0,0,0,0,110,60,66,126,126,66,0,60
10370 DATA 24,0,0,0,0,0,0,0,254,16,68,56,124,198,198,124,56,0,0,0,0,0,0,0
10380 DATA 255,0,60,153,255,153,0,255,0,0,0,0,0,0,0,0,60,24,0,189,129,189,129,153
10390 DATA 24,24,24,0,0,0,0,0,118,60,0,126,126,0,0,60,24,0,0,0,0,0,0,0
10400 DATA 56,16,68,56,124,198,198,124,56,0,0,0,0,0,0,0,24,0,60,153,255,153,0,24
10410 DATA 0,0,0,0,0,0,0,3,12,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0
10420 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,112,240,66,64,188,130,130
10430 DATA 130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,65,0,100
10440 DATA 0,72,138,72,238,32,100,174,32,100,189,67,100,141,10,212,141,24,208,141,26,208,224,24
10450 DATA 208,5,169,0,141,32,100,104,170,104,64,125,122,120,118,116,114,112,112,112,112,112,112,112
10460 DATA 112,112,112,112,112,112,112,112,112,112,112,112,0,0,0,0,0,0,0,0,0,0,0,0
10470 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10480 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10490 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10500 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10510 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10520 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10530 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10540 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10550 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10560 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10570 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10580 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10590 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10600 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10610 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10620 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10630 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10640 DATA 112,112,240,66,0,0,130,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10650 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10660 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10670 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10680 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10690 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10700 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10710 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10720 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10730 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10740 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10750 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10760 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10770 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10780 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10790 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
10800 DATA 0,0,0,0,0
20000 DATA 0,0,0,0,0,0,0,0,56,56,56,56,24,0,24,0,102,102,102,0,0,0,0,0
20010 DATA 102,255,102,102,255,102,0,0,24,62,96,60,6,124,24,0,0,102,108,24,48,102,70,0
20020 DATA 28,54,28,56,111,102,59,0,24,24,24,0,0,0,0,0,30,24,24,56,56,56,62,0
20030 DATA 120,24,24,28,28,28,124,0,0,102,60,255,60,102,0,0,0,24,24,126,24,24,0,0
20040 DATA 0,0,0,0,0,24,24,48,0,0,0,126,0,0,0,0,0,0,0,0,0,24,24,0
20050 DATA 3,6,12,24,48,96,64,0,127,99,99,99,99,99,127,0,56,24,24,24,62,62,62,0
20060 DATA 127,3,3,127,96,96,127,0,126,6,6,127,7,7,127,0,112,112,112,119,119,127,7,0
20070 DATA 127,96,96,127,7,7,127,0,124,108,96,127,99,99,127,0,127,3,3,31,24,24,24,0
20080 DATA 62,54,54,127,119,119,127,0,127,99,99,127,7,7,7,0,0,24,24,0,24,24,0,0
20090 DATA 0,24,24,0,24,24,48,0,6,12,24,48,24,12,6,0,0,126,0,0,126,0,0,0
20100 DATA 96,48,24,12,24,48,96,0,127,99,3,31,28,0,28,0,127,99,111,111,111,96,127,0
20110 DATA 63,51,51,127,115,115,115,0,126,102,102,127,103,103,127,0,127,103,103,96,99,99,127,0
20120 DATA 126,102,102,119,119,119,127,0,127,96,96,127,112,112,127,0,127,96,96,127,112,112,112,0
20130 DATA 127,99,96,111,103,103,127,0,115,115,115,127,115,115,115,0,24,24,24,24,24,24,24,24
20140 DATA 12,12,12,14,14,110,126,0,102,102,108,127,103,103,103,0,48,48,48,112,112,112,126,0
20150 DATA 103,127,127,119,103,103,103,0,103,119,127,111,103,103,103,0,127,99,99,103,103,103,127,0
20160 DATA 127,99,99,127,112,112,112,0,127,99,99,103,103,103,127,7,126,102,102,127,119,119,119,0
20170 DATA 127,96,127,3,115,115,127,0,127,28,28,28,28,28,28,0,103,103,103,103,103,103,127,0
20180 DATA 103,103,103,103,111,62,28,0,103,103,103,111,127,127,103,0,115,115,115,62,103,103,103,0
20190 DATA 103,103,103,127,28,28,28,0,127,102,108,24,55,103,127,0,30,24,24,24,24,24,30,0
20200 DATA 64,96,48,24,12,6,3,0,120,24,24,24,24,24,120,0,0,8,28,54,99 0,0,0
20210 DATA 0,0,0,0,0,0,255,0,0,54,127,127,62,28,8,0,56,124,254,247,243,255,218,207
20220 DATA 0,0,96,240,252,254,126,255,127,247,121,127,63,28,0,0,223,191,255,252,48,0,0,0
20230 DATA 0,22,62,127,60,0,0,0,0,0,0,0,0,0,48,120,1,7,15,7,0,0,0,0
20240 DATA 240,176,96,128,0,0,0,0,0,254,254,198,198,198,254,254,128,192,224,240,248,252,254,255
20250 DATA 15,15,15,15,0,0,0,0,240,240,240,240,0,0,0,0,255,255,0,0,0,0,0,0
20260 DATA 0,0,0,0,0,0,255,255,0,0,0,0,240,240,240,240,0,28,28,119,119,8,28,0
20270 DATA 0,0,0,31,31,24,24,24,0,0,0,255,255,0,0,0,24,24,24,255,255,24,24,24
20280 DATA 0,0,60,126,126,126,60,0,0,0,0,0,255,255,255,255,192,192,192,192,192,192,192,192
20290 DATA 0,0,0,255,255,24,24,24,24,24,24,255,255,0,0,0,240,240,240,240,240,240,240,240
20300 DATA 24,24,24,31,31,0,0,0,120,96,120,96,126,24,30,0,0,24,60,126,24,24,24,0
20310 DATA 0,24,24,24,126,60,24,0,0,24,48,126,48,24,0,0,0,24,12,126,12,24,0,0
20320 DATA 0,24,60,126,126,60,24,0,0,0,63,3,127,103,127,0,0,96,96,127,115,115,127,0
20330 DATA 0,0,127,96,96,96,127,0,0,3,3,127,103,103,127,0,0,0,127,99,127,112,127,0
20340 DATA 0,30,24,126,24,56,56,0,0,0,127,99,99,127,7,127,0,96,96,127,115,115,115,0
20350 DATA 0,12,0,12,12,28,28,0,0,12,0,12,12,14,14,126,0,48,48,118,124,118,115,0
20360 DATA 0,24,24,24,56,56,56,0,0,0,102,127,127,107,99,0,0,0,63,51,115,115,115,0
20370 DATA 0,0,63,51,115,115,127,0,0,0,63,51,115,127,112,112,0,0,127,99,99,127,7,7
20380 DATA 0,0,63,51,112,112,112,0,0,0,127,96,127,7,127,0,0,12,127,12,28,28,28,0
20390 DATA 0,0,51,51,115,115,127,0,0,0,99,99,99,54,28,0,0,0,99,107,127,62,54,0
20400 DATA 0,0,102,60,24,60,102,0,0,0,51,51,115,127,3,15,0,0,126,12,24,48,126,0
20410 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
20420 DATA 8,24,56,120,56,24,8,0,16,24,28,30,28,24,16,0,2
0 REM * CHECK DATA
1 DATA 7304,285,24,667,649,857,149,893,529,533,285,645,573,111,336,216,367,185
90 DATA 9168,420,73,693,286,951,70,826,415,904,924,237,538,891,194,896,102,748
2010 DATA 10928,878,564,503,464,463,736,929,67,954,527,684,730,480,847,806,679,617
10070 DATA 10689,689,640,635,694,485,398,668,668,542,549,653,976,755,517,587,533,700
10240 DATA 8558,803,573,729,491,594,543,488,686,955,75,440,273,324,746,162,558,118
10410 DATA 12064,133,645,169,861,70,116,917,918,919,911,912,913,914,915,916,917,918
10580 DATA 15141,919,920,912,913,914,915,478,917,918,919,920,921,913,914,915,916,917
10750 DATA 8926,918,919,920,921,922,166,548,382,955,129,292,138,333,313,92,684,294
20110 DATA 12646,811,922,707,668,988,939,665,905,497,861,212,520,408,916,754,935,938
20280 DATA 4806,636,490,85,934,254,216,294,86,156,218,99,41,20,280,997

Assembler Listing
 
00010          .LI OFF
00020 *********************
00030 * SKY WARRIOR       *
00040 * BY JACK CHUNG     *
00050 * FOR ATARI WITH    *
00060 * 48 K              *
00070 *********************
00080 ;
00090 ;
00100 ;
00110 ;
00120 VERTI    .EQ $200
00130 DMACTL   .EQ $22F
00140 DLST     .EQ $230
00150 GRACTL   .EQ $DO1D
00160 PMBASE   .EQ $D407
00170 COLPMO   .EQ $02CO
00180 HPOSPO   .EQ $D000
00190 STICK    .EQ $0278
00200 TRIGO    .EQ $DO10
00210 NMIEN    .EQ $D40E
00220 PRIOR    .EQ $026F
00230 SOUND    .EQ $D200
00240 SCREEN   .EQ 560
00250 LDM      .EQ $82
00260 JVB      .EQ $41
00270 WSYNC    .EQ $D40A
00280
00290 ADR      .EQ $80
00300
00310          .OR $6000
00320 RIGHT    .EQ $8
00330 LEFT     .EQ $4
00340 DOWN     .EQ $2
00350 UP       .EQ $1
00360 HSPEED   .EQ 4
00370 VSPEED   .EQ 4
00380
00390 PLAYER   .EQ $7000
00400 SPRITE   .EQ $CC
00410
00420 START  PLA
00430        LDA #DSP
00440        STA 560
00450        LDA /DSP
00460        STA 561
00470        LDA 88
00480        STA DSP+4
00490        LDA 89
00500        STA DSP+5
00510        LDA #$3A
00520        STA DMACTL
00530        LDA #$03
00540        STA GRACTL
00550        LDA /PLAYER
00560        STA PMBASE
00570        LDA #1
00580        STA PRIOR
00590        LDA #$CO
00600        STA NMIEN
00610        LDA #DLI
00620        STA 512
00630        LDA /DLI
00640        STA 513
00650        LDY #0
00660        TYA
00670 .1     STA PLAYER+$400,Y
00680        STA PLAYER+$500,Y
00690        STA PLAYER+$600,Y
00700        STA PLAYER+$700,Y
00710        STA PLAYER+$300,Y
00720        INY
00730        BNE .1
00740        LDA #$00
00750        STA $2C6
00760        LDA #$74
00770        STA COLPMO
00780        LDA #$34
00790        STA COLPMO+1
00800        LDA #$54
00810        STA COLPMO+2
00820        LDA #$84
00830        STA COLPMO+3
00840 MAIN   LDA #$00
00850        STA SPRITE
00860        LDA #$74
00870        STA SPRITE+1
00880 OK     LDY MAN
00890        LDA PHIT,Y
00900        BEQ OK1
00910        JSR KILL
00920        JMP TT
00930 OK1    JSR RSTICK
00940        LDY MAN
00950        LDA MY,Y
00960        CLC
00970        ADC #1
00980        STA MY,Y
00990        LDA OY,Y
01000        CLC
01010        ADC #1
01020        STA OY,Y
01030        JSR MOVE
01040        LDY MAN
01050        LDA MISSLEON,Y
01060        BEQ TT
01070        JSR MDRAW
01080        JSR MISSLE
01090        JSR HIT
01091        LDA JUMPOUT
01092        BEQ TT
01100        LDY MAN
01101        STY TEMP1
01102        LDA #0
01103        STA JUMPOUT
01104        RTS
01110 TTT    PLA
01120 TT     INC MAN
01130        INC SPRITE+1
01140        LDA MAN
01150        CMP #4
01160        BCC OK
01170        LDA #0
01180        STA MAN
01190        JSR DELAY
01200        LDX SH
01210        CPX #64
01220        BNE .11
01230        LDX #0
01240        STX SH
01250        LDX #10
01260        STX SOUND
01270        LDX #$84
01280        STX SOUND+1
01290        JMP MO1
01300 .11    LDX #64
01310        STX SH
01320        LDX #0
01330        STX SOUND
01340        LDX #10
01350        STX SOUND+1
01360 M01    JMP MAIN
01370
01380 RSTICK LDY MAN
01390        LDA STICK ,y
01400        TAX
01410        TXA
01420        AND #UP
01430        BNE .1
01440        LDA OY,Y
01450        SEC
01460        SBC #2
01470        STA OY,Y
01480        JMP .1
01490        TXA
01500        AND #DOWN
01510        BNE .1
01520        LDA OY,Y
01530        CLC
01540        ADC #1
01550        STA OY,Y
01560 .1     TXA
01570        AND #LEFT
01580        BNE .3
01590        LDA OX,Y
01600        SEC
01610        SBC #1
01620        STA OX,Y
01630 .3     TXA
01640        AND #RIGHT
01650        BNE .4
01660        LDA OX,Y
01670        CLC
01680        ADC #1
01690        STA OX,Y
01700 .4     LDA MISSLEON,Y
01710        BNE FINI
01720        LDA 644,Y
01730        BNE FINI
01740        LDA #1
01750        STA MISSLEON,Y
01760        LDA OX,Y
01770        CLC
01780        ADC #3
01790        STA MX,Y
01800        LDA OY,Y
01810        CLC
01820        ADC #4
01830        STA MY,Y
01840        LDA 632,Y
01850        CMP #15
01860        BEQ FINI
01870        CMP #14
01880        BNE A1
01890        LDA #1
01900        STA DIR,Y
01910        JMP FINI
01920 ;
01930 A1     CMP #13
01940        BNE A2
01950        LDA #2
01960        STA DIR,Y
01970        JMP FINI
01980 ;
01990 A2     CMP #7
02000        BNE A3
02010        LDA #4
02020        STA DIR,Y
02030        JMP FINI
02040 ;
02050 A3     CMP #11
02060        BNE FINI1
02070        LDA #3
02080        STA DIR,Y
02090        JMP FINI
02100 FINI   RTS
02110 ;
02120 ;
02130 ;
02140 ;
02150 FINI1  LDA #0
02160        STA DIR,Y
02170        STA MISSLEON,Y
02180        RTS
02190 ;
02200 ;
02210 ;
02220 ;
02230 ;
02240 MOVE   LDY MAN
02250        LDA OX,Y
02260        STA HPOSPO,Y
02270        LDY MAN
02280        TYA
02290        ASL    ;*2
02300        ASL    ;*4
02310        ASL    ;*8
02320        ASL    ;*16
02330        CLC
02340        ADC SH
02350        TAX
02360        LDA OY,Y
02370        TAY
02380 MOO    LDA SHAPE,X
02390        STA (SPRITE),Y
02400        INY
02410        INX
02420        INC COUNT
02430        LDA COUNT
02440        CMP #16
02450        BCC M00
02460        LDA #0
02470        STA COUNT
02480        RTS
02490 ;
02500 ;
02510 ;
02520 ;
02530 ;
02540 MISSLE LDY MAN
02550        LDA MX,Y
02560        STA SOUND+4
02570        LDA #$88
02580        STA SOUND+5
02590        LDA DIR,Y
02600        TAX
02610        CPX #1
02620        BNE .1
02630        LDA MY,Y
02640        SEC
02650        SBC #VSPEED
02660        STA MY,Y
02670        CMP #30
02680        BCS .1
02690        JMP FINISH
02700 .1     CPX #2
02710        BNE .2
02720        LDA MY,Y
02730        CLC
02740        ADC #VSPEED
02750        STA MY,Y
02760        CMP #230
02770        BCC .2
02780        JMP FINISH
02790 .2     CPX #3
02800        BNE .3
02810        LDA MX,Y
02820        SEC
02830        SBC #HSPEED
02840        STA MX,Y
02850        CMP #40
02860        BCS .3
02870        JMP FINISH
02880 .3     CPX #4
02890        BNE .4
02900        LDA MX,Y
02910        CLC
02920        ADC #HSPEED
02930        STA MX,Y
02940        CMP #200
02950        BCC .4
02960        JMP FINISH
02970 .4     RTS
02980 ;
02990 ;
03000 MDRAW  LDY MAN
03010        LDA #1
03020        STA 53279
03030        LDA MX,Y
03040        STA $DO04,Y
03050        LDX MAN
03060        LDA MY,Y
03070        TAY
03080        LDA #0
03090        DEY
03100        STA PLAYER+$300,Y
03110        INY
03120        LDA MSHAPE,X
03130        STA PLAYER+$300,Y
03140        INY
03150        STA PLAYER+$300,Y
03160        INY
03170        LDA #0
03180        STA PLAYER+$300,Y
03190        RTS
03200 ;
03210 ;
03220 ;
03230 FINISH LDA #0
03240        STA MISSLEON,Y
03250        STA SOUND+4
03260        STA SOUND+5
03270        LDA #0
03280 CLEAN  STA PLAYER+$300,Y
03290        INY
03300        BNE CLEAN
03310        RTS
03320 ;
03330 ;
03340 HIT    LDY MAN
03350        LDA 53256,Y
03360        BEQ RETURN
03370        STA TEMP
03380        LDA #1
03390        STA 53278
03400        LDA TEMP
03410        AND #1
03420        CMP #1
03430        BNE B1
03440        LDA #0
03450        CMP MAN
03460        BEQ RETURN
03470        LDA #1
03480        STA PHIT
03481        STA JUMPOUT
03490        RTS
03500 ;
03510 B1     LDA TEMP
03520        AND #2
03530        CMP #2
03540        BNE B2
03550        LDA #1
03560        CMP MAN
03570        BEQ RETURN
03580        LDA #1
03590        STA PHIT+1
03591        STA JUMPOUT
03600        RTS
03610 ;
03620 B2     LDA TEMP
03630        AND #4
03640        CMP #4
03650        BNE B3
03660        LDA #2
03670        CMP MAN
03680        BEQ RETURN
03690        LDA #1
03700        STA PHIT+2
03705        STA JUMPOUT
03710        RTS
03720 ;
03730 B3     LDA TEMP
03740        AND #8
03750        CMP #8
03760        BNE RETURN
03770        LDA #3
03780        CMP MAN
03790        BEQ RETURN
03800        LDA #1
03810        STA PHIT+3
03811        STA JUMPOUT
03820 RETURN RTS
03830 ;
03840 KILL   LDY MAN
03850        LDA #$A8
03860        STA SOUND+3
03870        LDA OY,Y
03880        CLC
03890        ADC #1
03900        STA OY,Y
03910        STA SOUND+2
03920        TAY
03930        LDX #0
03940 L1     LDA DSHAPE,X
03950        STA (SPRITE),Y
03960        INY
03970        INX
03980        CPX #16
03990        BCC L1
04000        LDY MAN
04010        LDA OY,Y
04020        CMP #250
04030        BCC SKIP
04040        LDA #0
04050        STA PHIT,Y
04060        STA SOUND+2
04070        STA SOUND+3
04080 SKIP   RTS
04090 ;
04100 ;
04110 DELAY  LDA #0
04120        STA 20
04130 .1     LDA 20
04140        CMP #2
04150        BCC .1
04160        RTS
04170 ;
04180 PHIT    .DA #0,#0,#0,#0
04181 JUMPOUT .DA #0
04190 SH      .DA #0
04200 TEMP    .DA #0
04201 TEMP1   .EQ $600
04210 COUNT   .DA #0
04220 MX      .DA #0,#0,#0,#0
04230 MY      .DA #0,#0,#0,#0
04240 MDIR    .DA #1,#2,#3,#4
04250 DIR     .DA #0,#0,#0,#0
04260 MISSLEON .DA #0,#0,#0,#0
04270 OX      .DA #112,#120,#130
#140
04280 OY      .DA #100,#110,#120
#140
04290 FRAME   .HS 00
04300 MAN     .DA #0
04310 ;
04320 DSHAPE
04330    .DA #0,#60,#86,#171,#213,#255,#66,#66,#36,#36,#24,#0,#24,#24,#0,#0
04340 SHAPE
04350    .DA #0,#255,#24,#0,#189,#129,#189,#129,#153,#24,#24,#24,#0,#0,#0,#0
04360    .DA #0,#110,#60,#66,#126,#126,#66,#0,#60,#24,#0,#0,#0,#0,#0,#0
04370    .DA #0,#254,#16,#68,#56,#124,#198,#198,#124,#56,#0,#0,#0,#0,#0,#0
04380    .DA #0,#255,#0,#60,#153,#255,#153,#0,#255,#0,#0,#0,#0,#0,#0,#0
04390    .DA #0,#60,#24,#0,#189,#129,#189,#129,#153,#24,#24,#24,#0,#0,#0,#0
04400    .DA #0,#118,#60,#0,#126,#126,#0,#0,#60,#24,#0,#0,#0,#0,#0,#0
04410    .DA #0,#56,#16,#68,#56,#124,#198,#198,#124,#56,#0,#0,#0,#0,#0,#0
04420    .DA #0,#24,#0,#60,#153,#255,#153,#0,#24,#0,#0,#0,#0,#0,#0,#0
04430 MSHAPE  .DA #3,#12,#48,#192
04431         .OR $6400
04440 DSP     .HS 7070FO
04450         .DA #$42
04460         .DA #0
04470         .DA #0
04480         .DA #LDM    1
04490         .DA #LDM    2
04500         .DA #LDM    3
04510         .DA #LDM    4
04520         .DA #LDM    5
04530         .DA #LDM    6
04540         .DA #LDM    7
04550         .DA #LDM    8
04560         .DA #LDM    9
04570         .DA #LDM    10
04580         .DA #LDM    11
04590         .DA #LDM    12
04600         .DA #LDM    13
04610         .DA #LDM    14
04620         .DA #LDM    15
04630         .DA #LDM    16
04640         .DA #LDM    17
04650         .DA #LDM    18
04660         .DA #LDM    19
04670         .DA #LDM    20
04680         .DA #LDM    21
04690         .DA #LDM    22
04700         .DA #LDM    23
04710         .DA #JVB
04720         .DA DSP
04730 COUNTR  .DA #0
04740 DLI
04750         PHA
04760         TXA
04770         PHA
04780         INC COUNTR
04790         LDX COUNTR
04800         LDA COLBAK,X
04810         STA WSYNC
04820         STA $D018
04830         STA $D01A
04840         CPX #24
04850         BNE ENDDLI
04860         LDA #$00
04870         STA COUNTR
04880 ENDDLI  PLA
04890         TAX
04900         PLA
04910         RTI
04920 COLBAK  .DA #$7D,#$7A,#$78,#$76,#$74,#$72,#$70
04930         .DA #$70,#$70,#$70,#$70,#$70,#$70,#$70,#$70,#$70
04940         .DA #$70,#$70,#$70,#$70,#$70,#$70,#$70,#$70,#$70