In the last issue we heard of the trouble on Clarexa, the planet that was so over-populated that the people had to live in the clouds. On Nexa, thirty-three light years away, lives an entire population underwater. The reason for this was, the air on the surface became so polluted that it wasn't safe for any human life form. This was when the people moved to the sea.
The Sea World was working out fine until the people divided up into four separate groups. Each group had their own name: The Spartans, the Neptunes, the Troutens, and the Octopans. As time went on, fish and sea kelp became more and more scarce, making war inevitable. Instead of having an all out underwater war, the Sea People decided to have their best warriors fight it out. Each group would receive points for each submarine that was destroyed. If your ship was destroyed by an enemy craft, you would float to the surface and a new submarine would appear.
This game, "Depth Warrior", which is a sequel to last issue's "Sky Warrior", places two to four underwater submarines in a battle of skill and strategy. The Ocean depths contain four different levels, each with a different shade of blue. The same is for the four submarines. This makes it easy for enemy submarines to hide from one another at different levels.
Your submarine can maneuver in any of the eight joystick directions. The same goes for the torpedoes, they can be fired in any direction by pushing the firing button. By moving your submarine into water of the same color you are able to sneak up on enemy craft. This makes it difficult to fire at something which you can't see.
The object of the game, as I said in the opening paragraph, is to shoot enemy submarines. This is done by maneuvering your craft into the right position so as to get a good shot at another one's craft. Once a submarine has been shot, it will once again be restored to running condition, enabling another warrior to go back into combat.
Each of the four water levels give different points for shooting enemy submarines. The more points that are accumulated, the lower the level at which your vessel is in the water. So, if you were at the bottom level and shot a submarine, you would get about three times more points than if you were at the top. At the top of the screen is a red level. This, called the surface level, is to where ships float when destroyed. If you shoot an enemy submarine while on this level you will receive negative points. The amount of points required to win the game can be decided upon at the start. The score to win is then displayed at the bottom of the screen.
Within the ocean there are five power lines. These power lines can be passed over without doing any damage to your sub. If they are then shot at and hit, your submarine's torpedos will be disabled until you move up a level in the water. These lines can be an advantage to a player who wants to hide behind one, because a torpedo will usually not pass through. These lines can be quite frustrating if you have an enemy craft all lined up ready to destroy.
Strategies-The way of playing this game is somewhat like that of "Hide & Seek". By keeping your ship in the level of your same color, it is possible to hide from enemy submarines. Then, when you think you know where it is (the enemy) let a torpedo go. This will also give you some bearing on where you ship is at the time. Another plan of attack is to try and destroy your opponent while on lower levels, for this will give you the greatest amount of points.
The game listing is in three different parts. The first program redefines the character set, the second one loads in the main program (machine code), and the third part loads in the basic set up of the game. When typing in the program, name the first program as CHAR.DAT, the second MAIN.DAT, and the third BASIC. This will then run all three programs when you run CHAR.DAT, because it calls each program from your disk. If you're a cassette user, save each program by typing SAVE `C:'. Then, at line 20 in program one, change it to RUN `C:' and line 20 in program two, do the same thing. Then make sure the programs are saved in the right order on your cassette.
This game runs on 48K and can be played by 2 to 4 players with joysticks. This game can be acquired by sending $3.00 and a blank disk or 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
5 REM THIS IS PART 1 OF THE PROGRAM
6 REM IT LOADS IN THE CHARACTER SET!
7 REM
10 FOR I=34816 TO 35840:READ X:POKE I,X:NEXT I
15 REM RUN THE NEXT PART
20 RUN "D:MAIN.DAT"
10000 DATA 0,0,0,0,0,0,0,0,48,48,48,48,0,48,48,0,108,108,72,0,0,0,0,0
10010 DATA 0,104,236,104,104,236,104,0,16,124,144,120,20,248,16,0,236,172,232,16,32,92,212,220
10020 DATA 60,64,64,124,128,128,124,0,48,48,32,0,0,0,0,0,12,16,32,32,32,16,12,0
10030 DATA 96,16,8,8,8,16,96,0,0,168,112,216,112,168,0,0,0,16,16,124,16,16,0,0
10040 DATA 0,0,0,0,0,48,48,32,0,0,0,124,0,0,0,0,0,0,0,0,0,48,48,0
10050 DATA 12,12,8,16,32,96,96,0,124,140,148,164,196,132,120,0,24,40,8,8,8,8,8,0
10060 DATA 248,4,4,120,128,0,252,0,252,8,0,56,4,4,248,0,24,32,64,252,0,24,24,0
10070 DATA 252,0,0,248,4,4,248,0,32,32,64,80,136,136,112,0,252,0,8,16,16,32,32,0
10080 DATA 120,132,132,72,132,132,120,0,56,68,68,40,8,16,16,0,0,0,48,48,0,48,48,0
10090 DATA 0,0,48,48,0,48,48,32,0,36,72,144,72,36,0,0,0,0,248,0,248,0,0,0
10100 DATA 0,144,72,36,72,144,0,0,120,4,4,8,16,0,16,0,0,0,8,108,168,168,116,0
10110 DATA 16,16,40,40,68,68,124,0,252,2,2,252,130,130,252,0,60,64,128,128,128,64,60,0
10120 DATA 240,8,132,132,132,136,240,0,254,0,0,254,128,128,254,0,254,0,0,254,128,128,128,0
10130 DATA 60,64,128,156,128,68,56,0,132,132,132,244,132,132,132,0,56,0,16,16,16,16,56,0
10140 DATA 28,0,8,8,8,8,112,0,132,136,144,160,144,136,132,0,128,128,128,128,128,128,252,0
10150 DATA 252,130,146,146,146,146,146,0,248,132,132,132,132,132,132,0,120,132,132,132,132,132,120,0
10160 DATA 248,4,4,248,128,128,128,0,120,132,132,132,132,132,64,60,248,4,4,248,4,4,4,0
10170 DATA 64,64,32,16,8,8,240,0,252,0,128,128,128,128,124,0,132,132,132,132,132,132,124,0
10180 DATA 132,132,132,72,72,48,8,0,164,164,148,148,72,72,72,0,68,40,16,16,16,40,68,0
10190 DATA 132,132,132,120,0,48,48,0,252,0,8,16,32,64,252,0,60,32,32,32,32,32,32,60
10200 DATA 192,192,64,32,16,8,12,12,120,8,8,8,8,8,8,120,0,16,40,124,0,0,0,0
10210 DATA 0,0,0,0,0,0,0,255,0,54,127,127,62,28,8,0,7,6,7,3,3,3,127,127
10220 DATA 192,192,192,128,128,128,252,252,3,195,195,195,243,63,151,128,134,134,134,158,248,224,0
10230 DATA 0,0,0,0,0,12,14,202,0,0,0,0,0,48,176,163,42,46,42,46,42,202 14,12
10240 DATA 168,184,168,184,168,163,176,48,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0
10250 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
10260 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
10270 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
10280 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
10290 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
10300 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
10310 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
10320 DATA 0,24,60,126,126,60,24,0,0,0,124,132,132,132,100,0,128,128,184,132,132,132,248,0
10330 DATA 0,0,124,128,128,128,124,0,4,4,116,132,132,132,124,0,0,0,124,136,144,128,124,0
10340 DATA 56,64,64,120,64,64,64,0,0,0,120,132,132,100,4,248,128,128,184,132,132,132,132,0
10350 DATA 32,0,32,32,32,32,32,0,8,0,8,8,8,8,8,48,128,128,132,136,176,136,132,0
10360 DATA 32,32,32,32,32,32,32,0,0,0,216,164,164,164,164,0,0,0,248,132,132,132,132,0
10370 DATA 0,0,120,132,132,132,120,0,0,0,248,132,132,184,128,128,0,0,124,132,132,132,116,4
10380 DATA 0,0,112,128,128,128,128,0,0,0,124,128,120,4,248,0,128,128,240,128,128,128,112,0
10390 DATA 0,0,132,132,132,132,120,0,0,0,136,136,136,80,32,0,0,0,148,148,148,148,108,0
10400 DATA 0,0,136,80,32,80,136,0,0,0,184,132,132,72,48,224,0,0,252,8,48,64,252,0
10410 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
10420 DATA 8,24,56,120,56,24,8,0,16,24,28,30,28,24,16,0,0
5 REM THIS IS PART TWO OF THE PROGRAM
6 REM IT LOADS IN THE MAIN PROGRAM
10 FOR I=16384 TO 18450:READ X:POKE I,X:NEXT I
20 RUN "D:BASIC"
20000 DATA 104,169,0,141,48,2,169,70,141,49,2,165,88,141,4,70,165,89,141,5,70,169,58,141
20010 DATA 47,2,169,3,141,29,208,169,96,141,7,212,169,8,141,111,2,169,192,141,14,212,169,33
20020 DATA 141,0,2,169,70,141,1,2,160,0,152,153,0,100,153,0,101,153,0,102,153,0,103,153
20030 DATA 0,99,200,208,238,169,0,141,210,68,141,178,68,141,198,2,169,118,141,192,2,169,116,141
20040 DATA 193,2,169,114,141,194,2,169,112,141,195,2,169,40,141,0,210,169,175,141,169,68,160,0
20050 DATA 169,140,32,153,68,24,105,60,153,201,68,169,140,32,153,68,24,105,60,153,205,68,169,0
20060 DATA 153,197,68,153,173,68,200,192,4,144,221,169,0,133,204,169,100,133,205,173,10,210,141,199
20070 DATA 2,172,210,68,185,173,68,240,6,32,5,68,76,241,64,32,30,65,32,140,67,172,210,68
20080 DATA 32,10,66,172,210,68,185,197,68,240,38,32,58,67,32,61,66,185,0,208,240,3,32,117
20090 DATA 67,173,177,68,240,19,172,210,68,140,0,6,185,205,68,141,1,6,169,0,141,177,68,96
20100 DATA 104,238,210,68,230,205,32,83,68,173,210,68,201,4,144,169,169,0,141,210,68,32,72,68
20110 DATA 174,178,68,138,24,105,16,141,178,68,201,64,208,5,169,0,141,178,68,76,155,64,172,210
20120 DATA 68,185,120,2,170,138,41,1,208,13,185,205,68,201,50,144,6,56,233,2,153,205,68,138
20130 DATA 41,2,208,13,185,205,68,201,230,176,6,24,105,1,153,205,68,138,41,4,208,18,185,201
20140 DATA 68,56,233,1,153,201,68,201,50,176,5,169,200,153,201,68,138,41,8,208,18,185,201,68
20150 DATA 24,105,1,153,201,68,201,200,144,5,169,50,153,201,68,185,197,68,208,47,185,132,2,208
20160 DATA 42,169,1,153,197,68,185,201,68,24,105,3,153,181,68,185,205,68,24,105,4,153,185,68
20170 DATA 185,120,2,201,15,240,12,201,14,208,9,169,1,153,193,68,76,171,65,96,201,13,208,8
20180 DATA 169,2,153,193,68,76,0,66,201,7,208,8,169,4,153,193,68,76,0,66,201,11,208,8
20190 DATA 169,3,153,193,68,76,0,66,201,6,208,8,169,5,153,193,68,76,0,66,201,5,208,8
20200 DATA 169,6,153,193,68,76,0,66,201,9,208,8,169,7,153,193,68,76,0,66,201,10,208,8
20210 DATA 169,8,153,193,68,76,0,66,96,169,0,153,193,68,153,197,68,96,172,210,68,185,201,68
20220 DATA 153,0,208,172,210,68,152,10,10,10,10,10,10,24,109,178,68,170,185,205,68,168,189,92
20230 DATA 70,145,204,200,232,238,180,68,173,180,68,201,16,144,239,169,0,141,180,68,96,172,210,68
20240 DATA 185,181,68,141,4,210,169,136,141,5,210,162,0,169,1,141,31.,208,232,208,248,185,193,68
20250 DATA 170,224,1,208,16,185,185,68,56,233,2,153,185,68,201,50,176,3,76,117,67,224,2,208
20260 DATA 16,185,185,68,24,105,2,153,185,68,201,230,144,3,76,117,67,224,3,208,16,185,181,68
20270 DATA 56,233,4,153,181,68,201,40,176,3,76,117,67,224,4,208,16,185,181,68,24,105,4,153
20280 DATA 181,68,201,200,144,3,76,117,67,224,5,208,32,185,185,68,56,233,2,153,185,68,201,50
20290 DATA 176,3,76,117,67,185,181,68,24,105,4,153,181,68,201,200,144,3,76,117,67,224,6,208
20300 DATA 32,185,185,68,24,105,2,153,185,68,201,230,144,3,76,117,67,185,181,68,24,105,4,153
20310 DATA 181,68,201,200,144,3,76,117,67,224,7,208,30,185,181,68,56,233,4,153,181,68,201,40
20320 DATA 176,3,76,117,67,185,185,68,24;105,2,153,185,68,201,230,144,3,76,117,67,224,8,208
20330 DATA 32,185,181,68,56,233,4,153,181,68,201,40,176,3,76,117,67,185,185,68,56,233,2,153
20340 DATA 185,68,201,30,176,3,76,117,67,96,172,210,68,162,0,169,1,141,31,208,232,208,248,185
20350 DATA 181,68,153,4,208,174,210,68,185,185,68,168,169,0,136,153,0,99,136,153,0,99,200,200
20360 DATA 189,227,68,153,0,99,200,153,0,99,200,169,0,153,0,99,200,153,0,99,96,169,0,172
20370 DATA 210,68,153,197,68,141,4,210,141,5,210,169,0,153,0,99,200,208,250,96,172,210,68,185
20380 DATA 8,208,208,5,185,12,208,240,107,141,179,68,169,1,141,30,208,173,179,68,41,1,201,1
20390 DATA 208,16,169,0,205,210,68,240,83,169,1,141,173,68,141,177,68,96,173,179,68,41,2,201
20400 DATA 2,208,16,169,1,205,210,68,240,58,169,1,141,174,68,141,177,68,96,173,179,68,41,4
20410 DATA 201,4,208,16,169,2,205,210,68,240,33,169,1,141,175,68,141,177,68,96,173,179,68,41
20420 DATA 8,201,8,208,15,169,3,205,210,68,240,8,169,1,141,176,68,141,177,68,96,172,210,68
20430 DATA 32,140,67,172,210,68,169,72,141,3,210,185,205,68,56,233,1,153,205,68,141,2,210,168
20440 DATA 162,0,189,211,68,145,204,200,232,224,16,144,245,172,210,68,185,205,68,201,50,176,16,169
20450 DATA 50,153,205,68,169,0,153,173,68,141,2,210,141,3,210,96,169,0,133,20,165,20,201,5
20460 DATA 144,250,96,238,171,68,173,171,68,201,5,144,59,169,0,141,171,68,173,170,68,240,26,238
20470 DATA 172,68,173,172,68,201,5,144,39,169,0,141,172,68,141,170,68,169,175,141,169,68,76,152
20480 DATA 68,206,169,68,169,40,141,0,210,173,169,68,141,1,210,201,160,208,5,169,1,141,170,68
20490 DATA 96,141,168,68,238,168,68,173,10,210,205,168,68,176,248,96,0,175,0,0,0,0,0,0
20500 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,1,2,3,4,0,0,0
20510 DATA 0,60,100,140,180,60,100,140,180,0,0,0,128,64,2,4,64,1,46,16,128,1,64,2
20520 DATA 8,0,0,3,12,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
20530 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
20540 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
20550 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
20560 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
20570 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
20580 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
20590 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
20600 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
20610 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
20620 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
20630 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
20640 DATA 112,112,240,66,0,0,130,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132
20650 DATA 132,132,130,130,130,65,0,70,0,72,138,72,238,32,70,174,32,70,189,67,70,141,10,212
20660 DATA 141,24,208,141,26,208,224,24,208,5,169,0,141,32,70,104,170,104,64,56,54,52,118,118
20670 DATA 116,116,116,116,114,114,114,114,114,114,112,112,112,112,112,112,50,50,50,50,0,7,8,208
20680 DATA 224,192,192,240,125,143,77,56,0,0,0,0,0,0,1,194,252,192,192,240,124,143,76,56
20690 DATA 0,0,0,0,0,0,0,192,224,208,200,247,125,143,77,56,0,0,0,0,0,0,0,192
20700 DATA 252,194,193,240,124,143 85,57,17,0,0,0
20710 DATA 0,0,0,0,0,0,40,17,109,167,109,17,40,0,0,0,0,0,0,0,0,0,16,56
20720 DATA 84,167,84,56,16,0,0,0,0,0,0,0,0,0,40,17,109,167,109,17,40,0,0,0
20730 DATA 0,0,0,0,0,57,109,63,22,18,32,64,128,0,0,0,0,0,0,0,0,56,109,63
20740 DATA 22,18,16,16,16,0,0,0,0,0,0,0,0,56,108,63,22,18,8,4,2,0,0,0
20750 DATA 0,0,0,0,0,56,108,63,23,18,16,16,16,0,0,0,0,0,0,0,0,112,49,123
20760 DATA 127,255,214,253,253,255,121,1,0,0,0,0,0,112,49,123,127,255,214,252,253,255,121,0
20770 DATA 0,0,0,0,0,112,49,123,127,255,214,252,252,255,120,0,0,0,0,0,0,112,49,123
20780 DATA 127,255,214,252,253,255,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
20790 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
20800 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
20810 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
20820 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
20830 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
20840 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
20850 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
20860 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,0,0,0
20850 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,
5 DIM SCORE(4)
7 GOSUB 1000
8 FOR I=1 TO 4:SCORE(I)=O:NEXT I
10 GRAPHICS 0:POKE 752,1:POKE 559,0:POKE 756,PEEK(106)-24:SETCOLOR 1,0,0
20 ? "AAAA AAAA AAAA AAAA"
22 ? " Depth Warrior "
23 FOR X=3 TO 35 STEP 8
25 Y=INT(15*RND(0)+5)
30 POSITION X,Y: ? "↓←← "FOR Y1=Y+2 TO 21:POSITION X,Yl:? "":NEXT Yl:NEXT X
40 POSITION 8,22:? "WINNING SCORE IS ";MAXSCORE
100 U=USR(16384)
110 A=PEEK(1536):A=A+1:SCORE(A)=SCORE(A)+(PEEK(1537)-50)
120 POSITION ((A-1)*10)+2,0:? SCORE(A)
130 IF SCORE(A)>MAXSCORE THEN 3000
200 U=USR(16624)
210 GOTO 110
1000 GRAPHICS 2:SETCOLOR 2,0,0:POKE 756,PEEK(106)-24
1010 ? #6;" PREPARE"
1020 ? #6;" FOR THE BATTLE"
1030 ? #6;" OF YOUR"
1040 ? #6;" LIFE!"
1050 FOR I=255 TO 0 STEP -0.5:POKE 708,I:SOUND O,I,8,10:NEXT I:SETCOLOR 0,7,4
1060 SOUND 0,250,10,8:SOUND 1,252,10,8
1070 POSITION 4,6:? #6;"DEPTH WARRIOR"
1080 FOR T=1 TO 500:NEXT T
1090 POSITION 4,8:? #6;"BY JACK CHUNG"
1100 FOR T=1 TO 500:NEXT T
1900 SOUND 0,0,0,0:SOUND 1,0,0,0
2000 TRAP 2000:? "isWhat is the score to win ";:INPUT MAXSCORE
2001 TRAP 49999
2010 RETURN
3000 FOR I=0 TO 3:SOUND I,0,0,0:NEXT I
3010 GRAPHICS O:POKE 559,62:SETCOLOR 2,0,0:FOR I=0 TO 7:POKE 53248+I,0:NEXT I:POKE 756,PEEK(106)-24:POKE 752,1
3020 ? :? :? :? "PLAYER ";A;" YOU ARE THE NEW DEPTH WARRIOR"
3030 POSITION 0,10:? " PRESS *START* TO BEGIN "
3031 POSITION 0,11:? " PRESS *OPTION* TO SET WIN SCORE"
3032 SOUND 0,250,10,8:SOUND 1,252,10,8
3035 SETCOLOR 4,INT(16*RND(0)+1),6
3040 IF PEEK(53279)=6 THEN SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 8
3045 IF PEEK(53279)=3 THEN SOUND 0,0,0,0:SOUND 1,0,0,0:GOTO 3060
3050 GOTO 3035
3060 POSITION 2,14:? "WHAT IS THE SCORE TO WIN ";:INPUT MAXSCORE
3070 GOTO 8
DATA
CHECK
1 REM * CHECK DATA: DEPTH.CHAR *
5 DATA 7267,430,487,502,972,745,312,533,786,42,19,306,134,9,107,170,761,952
10110 DATA 9746,413,603,521,577,82,423,607,451,251,856,649,61,873,755,753,934,937
10280 DATA 7232,635,489,84,933,582,484,606,80,337,574,605,393,157,279,994,82,423,607,451,251,856,649,61,873,755,753,934,937
10280 DATA 7232,635,489,84,933,582,484,606,80,337,574,605,30
0 REM * CHECK DATA: DEPTH.MAN *
5 DATA 10604,631,394,970,110,559,701,411,906,842,846,87,557,612,625,792,873,688
20130 DATA 10981,679,750,844,776,641,423,380,424,759,784,6,898,712,768,659,761,717
20300 DATA 11940,758,748,722,727,813,822,570,799,701,775,676,769,669,792,47,622,930
20470 DATA 13504,942,801,463,932,138,144,915,916,917,918,919,920,921,913,914,915,916
20640 DATA 10600,113,673,783,881,533,884,131,567,798,689,536,678,657,181,658,923,915
20810 DATA 5579,916,917,918,919,920,989
0 REM * CHECK DATA: DEPTH.BAS *
5 DATA 6005,3,851,151,462,881,34,518,353,317,208,71,404,319,270,69,825,269
1010 DATA 9701,411,753,402,240,777,265,522,714,444,707,946,661,5,894,419,748,793
3030 DATA 5371,527,877,266,145,699,846,935,286,790
Assembler
Listing
00010 .LI OFF
00020 *************************
00030 * DEPTH WARRIOR *
00040 * BY JACK CHUNG *
00050 * FOR ATARI WITH *
00060 * 48 K *
00061 * *
00062 * This is the second *
00063 * game of the warrior *
00064 * series. *
00065 * *
00070 *************************
00080 ;
00090 ;
00100 ;
00110 ;
00120 RANDOM .EQ $D20A
00130 VERTI .EQ $200
00140 DMACTL .EQ $22F
00150 DLST .EQ $230
00160 GRACTL .EQ $D01D
00170 PMBASE .EQ $D407
00180 COLPMO .EQ $02CO
00190 HPOSPO .EQ $D000
00200 STICK .EQ $0278
00210 TRIGO .EQ $DO10
00220 NMIEN .EQ $D40E
00230 PRIOR .EQ $026F
00240 SOUND .EQ $D200
00250 SCREEN .EQ 560
00260 LDM .EQ $84
00270 JVB .EQ $41
00280 WSYNC .EQ $D40A
00290
00300 ADR .EQ $80
00310
00320 .OR $4000
00330 RIGHT .EQ $8
00340 LEFT .EQ $4
00350 DOWN .EQ $2
00360 UP .EQ $1
00370 HSPEED .EQ 4
00380 VSPEED .EQ 2
00390
00400 PLAYER .EQ $6000
00410 SPRITE .EQ $CC
00420
00430 START PLA
00440 LDA #DSP ;Tell THE COMPUTER WHERE IS
00450 STA 560 ;THE DISPLAY LIST
00460 LDA /DSP
00470 STA 561
00480 LDA 88
00490 STA DSP+4
00500 LDA 89
00510 STA DSP+5
00520 LDA #$3A ;SET UP
00530 STA DMACTL ;PLAYER
00540 LDA #$03 ;MISSLE
00550 STA GRACTL ;SHAPES
00560 LDA /PLAYER
00570 STA PMBASE
00580 LDA #8
00590 STA PRIOR
00600 LDA #$CO
00610 STA NMIEN
00620 LDA #DLI ;TELL THE COMPUTER WHERE
00630 STA 512 ;IS THE DISPLAY LIST INTERUPT ROUTINE
00640 LDA /DLI
00650 STA 513
00660 LDY #0 ;CLEAN UP
00670 TYA ;PLAYER MISSLE MEMORY
00680 .1 STA PLAYER+$400,Y
00690 STA PLAYER+$500,Y
00700 STA PLAYER+$600,Y
00710 STA PLAYER+$700,Y
00720 STA PLAYER+$300,Y
00730 INY
00740 BNE .1
00750 LDA #$00
00751 STA MAN
00752 STA SH
00760 STA $2C6
00770 LDA #$76 ;SET PLAYER
00780 STA COLPMO ;COLORS
00790 LDA #$74
00800 STA COLPMO+1
00810 LDA #$72
00820 STA COLPMO+2
00830 LDA #$70
00840 STA COLPMO+3
00850 LDA #40 ;SOUND 0
00860 STA SOUND ;40,10,14
00870 LDA #$AF
00880 STA VOLUME
00890 LDY #0
00900 .2 LDA #140
00910 JSR RND
00920 CLC
00930 ADC #60
00940 STA OX,Y
00950 LDA #140
00960 JSR RND
00970 CLC
00980 ADC #60
00990 STA OY,Y
00991 LDA #0
00992 STA MISSLEON,Y
00993 STA PHIT,Y
01000 INY
01010 CPY #4
01020 BCC .2
01030 MAIN LDA #$00 ;START
01040 STA SPRITE
01050 LDA #$64
01060 STA SPRITE+1
01070 LDA RANDOM
01080 STA 711
01090 OK LDY MAN
01100 LDA PHIT,Y
01110 BEQ OK1
01120 JSR KILL
01130 JMP TT
01140 OK1 JSR RSTICK
01150 JSR HIT
01160 LDY MAN
01170 .11 JSR MOVE
01180 LDY MAN
01190 LDA MISSLEON,Y
01200 BEQ TT
01210 JSR MDRAW
01220 JSR MISSLE
01230 LDA 53248,Y
01240 BEQ CONT1
01250 JSR FINISH
01260 CONT1 LDA JUMPOUT
01270 BEQ TT
01280 LDY MAN
01290 STY TEMP1
01300 LDA OY,Y
01310 STA TEMP2
01320 LDA #0
01330 STA JUMPOUT
01340 RTS ;RTS
01350 TTT PLA
01360 TT INC MAN
01370 INC SPRITE+1
01380 JSR PING
01390 LDA MAN
01400 CMP #4
01410 BCC OK
01420 LDA #0
01430 STA MAN
01440 JSR DELAY
01450 LDX SH ;THIS IS
01460 TXA
01470 CLC
01480 ADC #16 ;NEXT SHAPE
01490 STA SH ;CONFUSING
01500 CMP #64
01510 BNE M01
01520 LDA #0
01530 STA SH
01540 M01 JMP MAIN
01550
01560 ;
01570 ;CHECK JOYSTICKS AND MOVE
01580 ;THE PLAYERS
01590 ;
01600 RSTICK LDY MAN
01610 LDA STICK,Y
01620 TAX
01630 TXA
01640 AND #UP
01650 BNE .1
01660 LDA OY,Y
01670 CMP #50
01680 BCC .1
01690 SEC
01700 SBC #2
01710 STA OY,Y
01720 .1 TXA
01730 AND #DOWN
01740 BNE .2
01750 LDA OY,Y
01760 CMP #230
01770 BCS .2
01780 CLC
01790 ADC #1
01800 STA OY,Y
01810 .2 TXA
01820 AND #LEFT
01830 BNE .3
01840 LDA OX,Y
01850 SEC
01860 SBC #1
01870 STA OX,Y
01880 CMP #50
01890 BCS .3
01900 LDA #200
01910 STA OX,Y
01920 .3 TXA
01930 AND #RIGHT
01940 BNE .4
01950 LDA OX,Y
01960 CLC
01970 ADC #1
01980 STA OX,Y
01990 CMP #200
02000 BCC .4
02010 LDA #50
02020 STA OX,Y
02030 .4 LDA MISSLEON,Y
02040 BNE RETURN1
02050 LDA 644,Y
02060 BNE RETURN1
02070 LDA #1
02080 STA MISSLEON,Y
02090 LDA OX,Y
02100 CLC
02110 ADC #3
02120 STA MX,Y
02130 LDA OY,Y
02140 CLC
02150 ADC #4
02160 STA MY,Y
02170 LDA 632,Y
02180 CMP #15
02190 BEQ RETURN1
02200 CMP #14
02210 BNE A1
02220 LDA #1
02230 STA DIR,Y
02240 JMP RETURN1
02250 ;
02260 RETURN1 RTS
02270 ;
02280 A1 CMP #13
02290 BNE A2
02300 LDA #2
02310 STA DIR,Y
02320 JMP FINI
02330 ;
02340 A2 CMP #7
02350 BNE A3
02360 LDA #4
02370 STA DIR,Y
02380 JMP FINI
02390 ;
02400 A3 CMP #11
02410 BNE A4
02420 LDA #3
02430 STA DIR,Y
02440 JMP FINI
02450 ;
02460 A4 CMP #6
02470 BNE A5
02480 LDA #5
02490 STA DIR,Y
02500 JMP FIN I
02510 ;
02520 A5 CMP #5
02530 BNE A6
02540 LDA #6
02550 STA DIR,Y
02560 JMP FINI
02570 ;
02580 A6 CMP #9
02590 BNE A7
02600 LDA #7
02610 STA DIR,Y
02620 JMP FINI
02630 ;
02640 A7 CMP #10
02650 BNE FINI
02660 LDA #8
02670 STA DIR,Y
02680 JMP FINI
02690 FINI RTS
02700 ;
02710 ;
02720 ;
02730 ;
02740 FINI1 LDA #0
02750 STA DIR,Y
02760 STA MISSLEON,Y
02770 RTS
02780 ;
02790 ;
02800 ;DRAW PROPER SHAPES FOR
02810 ;THE FOUR VEHICLES
02820 ;
02830 MOVE LDY MAN
02840 LDA OX,Y
02850 STA HPOSPO,Y
02860 LDY MAN
02870 TYA
02880 ASL ;*2
02890 ASL ;*4
02900 ASL ;*8
02910 ASL ;*16
02920 ASL ;*32
02930 ASL ;*64
02940 CLC
02950 ADC SH
02960 TAX
02970 LDA OY,Y
02980 TAY
02990 MOO LDA SHAPE,X
03000 STA (SPRITE),Y
03010 INY
03020 INX
03030 INC COUNT
03040 LDA COUNT
03050 CMP #16
03060 BCC MOO
03070 LDA #0
03080 STA COUNT
03090 RTS
03100 ;
03110 ;
03120 ;MOVE THE MISSLES IN THE
03130 ;PROPER DIRECTION AND ADD SOUND
03140 ;
03150 MISSLE LDY MAN
03160 LDA MX,Y
03170 STA SOUND+4.
03180 LDA #$88
03190 STA SOUND+5
03200 LDX #0
03210 LOOP2 LDA #1
03220 STA 53279
03230 INX
03240 BNE LOOP2
03250 LDA DIR,Y
03260 TAX
03270 CPX #1
03280 BNE .1
03290 LDA MY,Y
03300 SEC
03310 SBC #VSPEED
03320 STA MY,Y
03330 CMP #50
03340 BCS .1
03350 JMP FINISH
03360 .1 CPX #2
03370 BNE .2
03380 LDA MY,Y
03390 CLC
03400 ADC #VSPEED
03410 STA MY,Y
03420 CMP #230
03430 BCC .2
03440 JMP FINISH
03450 .2 CPX #3
03460 BNE .3
03470 LDA MX,Y
03480 SEC
03490 SBC #HSPEED
03500 STA MX,Y
03510 CMP #40
03520 BCS .3
03530 JMP FINISH
03540 .3 CPX #4
03550 BNE .4
03560 LDA MX,Y
03570 CLC
03580 ADC #HSPEED
03590 STA MX,Y
03600 CMP #200
03610 BCC .4
03620 JMP FINISH
03630 .4 CPX #5
03640 BNE .5
03650 LDA MY,Y
03660 SEC
03670 SBC #VSPEED
03680 STA MY,Y
03690 CMP #50
03700 BCS .55
03710 JMP FINISH
03720 .55 LDA MX,Y
03730 CLC
03740 ADC #HSPEED
03750 STA MX,Y
03760 CMP #200
03770 BCC .5
03780 JMP FINISH
03790 .5 CPX #6
03800 BNE .6
03810 LDA MY,Y
03820 CLC
03830 ADC #VSPEED
03840 STA MY,Y
03850 CMP #230
03860 BCC .66
03870 JMP FINISH
03880 .66 LDA MX,Y
03890 CLC
03900 ADC #HSPEED
03910 STA MX,Y
03920 CMP #200
03930 BCC .6
03940 JMP FINISH
03950 .6 CPX #7
03960 BNE .7
03970 LDA MX,Y
03980 SEC
03990 SBC #HSPEED
04000 STA MX,Y
04010 CMP #40
04020 BCS .77
04030 JMP FINISH
04040 .77 LDA MY,Y
04050 CLC
04060 ADC #VSPEED
04070 STA MY,Y
04080 CMP #230
04090 BCC .7
04100 JMP FINISH
04110 .7 CPX #8
04120 BNE .8
04130 LDA MX,Y
04140 SEC
04150 SBC #HSPEED
04160 STA MX,Y
04170 CMP #40
04180 BCS .88
04190 JMP FINISH
04200 .88 LDA MY,Y
04210 SEC
04220 SBC #VSPEED
04230 STA MY,Y
04240 CMP #30
04250 BCS .8
04260 JMP FINISH
04270 .8 RTS
04280 ;
04290 ;DRAW MISSLE SHAPES
04300 ;
04310 MDRAW LDY MAN
04320 LDX #0
04330 LOOP LDA #1
04340 STA 53279
04350 INX
04360 BNE LOOP
04370 LDA MX,Y
04380 STA $D004,Y
04390 LDX MAN
04400 LDA MY,Y
04410 TAY
04420 LDA #0
04430 DEY
04440 STA PLAYER+$300,Y
04450 DEY
04460 STA PLAYER+$300,Y
04470 INY
04480 INY
04490 LDA MSHAPE,X
04500 STA PLAYER+$300,Y
04510 INY
04520 STA PLAYER+$300,Y
04530 INY
04540 LDA #0
04550 STA PLAYER+$300,Y
04560 INY
04570 STA PLAYER+$300,Y
04580 RTS
04590 ;
04600 ;CLEAN UP
04610 ;
04620 FINISH LDA #0
04630 LDY MAN
04640 STA MISSLEON,Y ;STOP MISSLE
04650 STA SOUND+4 ;SHUT OFF SOUND
04660 STA SOUND+5
04670 LDA #0
04680 CLEAN STA PLAYER+$300,Y
04690 INY
04700 BNE CLEAN
04710 RTS
04720 ;
04730 ;DETERMINE WHICH PLAYER IS
04740 ;
04750 HIT LDY MAN
04760 LDA 53256,Y
04770 BNE CONT
04780 LDA 53260,Y
04790 BEQ RETURN
04800 CONT STA TEMP
04810 LDA #1
04820 STA 53278
04830 LDA TEMP
04840 AND #1
04850 CMP #1
04860 BNE B1
04870 LDA #0
04880 CMP MAN
04890 BEQ RETURN
04900 LDA #1
04910 STA PHIT
04920 STA JUMPOUT
04930 RTS
04940 ;
04950 B1 LDA TEMP
04960 AND #2
04970 CMP #2
04980 BNE B2
04990 LDA #1
05000 CMP MAN
05010 BEQ RETURN
05020 LDA #1
05030 STA PHIT+1
05040 STA JUMPOUT
05050 RTS
05060 ;
05070 B2 LDA TEMP
05080 AND #4
05090 CMP #4
05100 BNE B3
05110 LDA #2
05120 CMP MAN
05130 BEQ RETURN
05140 LDA #1
05150 STA PHIT+2
05160 STA JUMPOUT
05170 RTS
05180 ;
05190 B3 LDA TEMP
05200 AND #8
05210 CMP #8
05220 BNE RETURN
05230 LDA #3
05240 CMP MAN
05250 BEQ RETURN
05260 LDA #1
05270 STA PHIT+3
05280 STA JUMPOUT
05290 RETURN RTS
05300 ;
05310 ;FLOATING DEBRIS ROUTINE
05320 ;
05330 KILL LDY MAN
05340 JSR HIT
05350 LDY MAN
05360 LDA #$48
05370 STA SOUND+3
05380 LDA OY,Y
05390 SEC
05400 SBC #1
05410 STA OY,Y
05420 STA SOUND+2
05430 TAY
05440 LDX #0
05450 L1 LDA DSHAPE,X
05460 STA (SPRITE),Y
05470 INY
05480 INX
05490 CPX #16
05500 BCC L1
05510 LDY MAN
05520 LDA OY,Y
05530 CMP #50
05540 BCS SKIP
05550 LDA #50
05560 STA OY,Y
05570 LDA #0
05580 STA PHIT,Y
05590 STA SOUND+2
05600 STA SOUND+3
05610 SKIP RTS
05620 ;
05630 ;
05640 ;
05650 DELAY LDA #0
05660 STA 20
05670 .1 LDA 20
05680 CMP #5
05690 BCC .1
05700 RTS
05710 ;
05720 ;MAKE THE PING SOUND FOR
05730 ;SFX
05740 ;
05750 PING INC TIMER
05760 LDA TIMER ;TIMER
05770 CMP #5 ;LOOP
05780 BCC EXIT
05790 LDA #0
05800 STA TIMER
05810 LDA SILENT
05820 BEQ CONTINUE
05830 INC TIMERI
05840 LDA TIMER1
05850 CMP #5
05860 BCC EXIT
05870 LDA #0
05880 STA TIMER1
05890 STA SILENT
05900 LDA #$AF
05910 STA VOLUME
05920 JMP EXIT
05930 CONTINUE DEC VOLUME ;FOR I=15
05940 LDA #40
05950 STA SOUND
05960 LDA VOLUME ;TO 0 STEP
05970 STA SOUND+1
05980 CMP #$AO ;-.2
05990 BNE EXIT
06000 LDA #1 ;FOR I=1
06010 STA SILENT ;TO 400
06000 LDA #1 ;FOR I=1
06010 STA SILENT ;TO 400
06020 EXIT RTS
06030 ;
06040 ;RANDOM NUMBER GENERATOR
06050 ;
06060 RND STA RTEMP
06070 INC RTEMP
06080 RNDWAIT LDA RANDOM
06090 CMP RTEMP
06100 BCS RNDWAIT
06110 RTS
06120 ;
06130 ;
06140 ;
06150 ;
06160 RTEMP .DA #0
06170 VOLUME .DA #$AF
06180 SILENT .DA #0
06190 TIMER .DA #0
06200 TIMER1 .DA #0
06210 PHIT .DA #0,#0,#0,#0
06220 JUMPOUT .DA #0
06230 SH .DA #0
06240 TEMP .DA #0
06250 TEMP1 .EQ $600
06260 TEMP2 .EQ $601
06270 COUNT .DA #0
06280 MX .DA #0,#0,#0,#0
06290 MY .DA #0,#0,#0,#0
06300 MDIR .DA #1,#2,#3,#4
06310 DIR .DA #1,#2,#3,#4
06320 MISSLEON .DA #0,#0,#0,#0
06330 OX .DA #60,#100,#140,#180
06340 OY .DA #60,#100,#140,#180
06350 FRAME .HS 00
06360 MAN .DA #0
06370 ;
06380 DSHAPE
06390 .DA #0,#128,#64,#2,#4,#64,#1,#46,#16,#128,#1,#64,#2,#8,#0,#0
06400 MSHAPE .DA #3,#12,#48,#192
06410 ;
06420 .OR $4600
06430 DSP .HS 7070FO
06440 .DA #$42
06450 .DA #0
06460 .DA #0
06470 .DA #$82 1
06480 .DA #LDM 2
06490 .DA #LDM 3
06500 .DA #LDM 4
06510 .DA #LDM 5
06520 .DA #LDM 6
06530 .DA #LDM 7
06540 .DA #LDM 8
06550 .DA #LDM 9
06560 .DA #LDM 10
06570 .DA #LDM 11
06580 .DA #LDM 12
06590 .DA #LDM 13
06600 .DA #LDM 14
06610 .DA #LDM 15
06620 .DA #LDM 16
06630 .DA #LDM 17
06640 .DA #LDM 18
06650 .DA #LDM 19
06660 .DA #LDM 20
06670 .DA #$82 21
06680 .DA #$82 22
06690 .DA #$82 23
06700 .DA #JVB
06710 .DA DSP
06720 COUNTR .DA #0
06730 ;
06740 ;DISPLAY LIST INTERUPT ROUTINE
06750 ;
06760 ;
06770 DLI
06780 PHA
06790 TXA
06800 PHA
06810 INC COUNTR
06820 LDX COUNTR
06830 LDA COLBAK,X
06840 STA WSYNC
06850 STA $D018
06860 STA $D01A
06870 CPX #24
06880 BNE ENDDLI
06890 LDA #$00
06900 STA COUNTR
06910 ENDDLI PLA
06920 TAX
06930 PLA
06940 RTI
06950 ;
06960 ;
06970 ;
06980 COLBAK .DA #$38,#$36,#$34,#$76,#$76,#$74,#$74
06990 .DA #$74,#$74,#$72,#$72,#$72,#$72,#$72,#$72,#$70
07000 .DA #$70,#$70,#$70,#$70,#$70,#$32,#$32,#$32,#$32
07010 ;
07020 ;
07030 ;
07040 SHAPE
07050 .DA #0,#7,#8,#208,#224,#192,#192,#240,#125,#143,#77,#56,#0,#0,#0,#0
07060 .DA #0,#0,#1,#194,#252,#192,#192,#240,#124,#143,#76,#56,#0,#0,#0,#0
07070 .DA #0,#0,#0,#192,#224,#208,#200,#247,#125,#143,#77,#56,#0,#0,#0,#0
07080 .DA #0,#0,#0,#192,#252,#194,#193,#240,#124,#143,#76,#56,#0,#0,#0,#0
07090 .DA #0,#0,#17,#57,#85,#167,#85,#57,#17,#0,#0,#0,#0,#0,#0,#0
07100 .DA #0,#0,#40,#17,#109,#167,#109,#17,#40,#0,#0,#0,#0,#0,#0,#0
07110 .DA #0,#0,#16,#56,#84,#167,#84,#56,#16,#0,#0,#0,#0,#0,#0,#0
07120 .DA #0,#0,#40,#17,#109,#167,#109,#17,#40,#0,#0,#0,#0,#0,#0,#0
07130 .DA #0,#57,#109,#63,#22,#18,#32,#64,#128,#0,#0,#0,#0,#0,#0,#0
07140 .DA #0,#56,#109,#63,#22,#18,#16,#16,#16,#0,#0,#0,#0,#0,#0,#0
07150 .DA #0,#56,#108,#63,#22,#18,#8,#4,#2,#0,#0,#0,#0,#0,#0,#0
07160 .DA #0,#56,#108,#63,#23,#18,#16,#16,#16,#0,#0,#0,#0,#0,#0,#0
07170 .DA #0,#112,#49,#123,#127,#255,#214,#253,#253,#255,#121,#1,#0,#0,#0,#0
07180 .DA #0,#112,#49,#123,#127,#255,#214,#252,#253,#255,#121,#0,#0,#0,#0,#0
07190 .DA #0,#112,#49,#123,,#127,#255,#214,#252,#252,#255,#120,#0,#0,#0,#0,#0
07200 .DA #0,#112,#49,#123,#127,#255,#214,#252,#253,#255,#121,#0,#0,#0,#0,#07,#255,#214,#252,#252,#255,#120,#0,#0,#0,#0,#0