SKY
WARRIOR
By JACK CHUNG
By JACK CHUNG
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
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