A.N.A.L.O.G. ISSUE 54 / MAY 1987 / PAGE 67
The crew was ecstatic—after four years of searching, an inhabitable star system had been found for the Earth’s refugees. As the fleet passed each of the ten planets of the system, scanners showed more signs of the ancient civilization that once prospered here. There were even some energy readings. A landing party was dispatched to investigate. Its members returned with reports of gigantic pyramids, huge underground cities, massive nuclear furnaces, giant radioactive waste dumps—and no signs of life.
The star system was soon brought back to life. People moved into the underground cities and activated the reactors. The advanced technology of the civilization was harnessed, to create impenetrable defense screens of artificial asteroids called Rocks, to protect each planet from the aliens who had destroyed the colonists’ home. Everything seemed to be progressing very well, until the day the colony discovered what had happened to the former inhabitants of the system.
The reactors were in full operation, producing 24 tons of waste each day—waste which was dumped in each planet’s massive waste dump, waste which was still active in some strange way. The radiation at each dump continued to increase until it reached the now-critical levels. Something had to be done to prevent disaster.
You’ve been assigned to the radiation dispersal team working to save as many of the planets as possible from total destruction by the mysterious radiation. To accomplish this task, you’ve been given three remote-controlled shuttle pods. You must carefully navigate a pod through the Rocks and land on the disposal pad, where a canister of waste will be automatically loaded onto your pod. Next, you must pilot your ship back through the Rocks and teleport the canister into one of the passing fleet ships, which will transport it to deep space, to be harmlessly dispersed.
Although this may sound simple, it’s not. Any collision between your pod and another object will result in the loss of the pod. Any attempt to land on the rough ground—or with a canister on board—will crash the pod. When the radiation level gets high enough, strange discharges may destroy your pod.
To further complicate matters, enemy spy satellites have been reported scouting the area. These satellites will explode on contact, also destroying your pod. Finally, if you manage to remove five canisters from a dump, you’ll move to the next planet and be given another spare pod. If the radiation level gets too high, the planet will be devastated—and your services will no longer be required.
Listing 1 is the BASIC data used to create your copy of Rocks! Please see M/L Editor on page 10 for typing instructions.
Rocks! is a game for one player, and requires one joystick and 24K of memory on any 8-bit Atari computer. The starting level is selected at the beginning of the game on the title screen, by pressing the SELECT key.
The game will begin when the START key is pressed. If you want to abort a game and start a new game, you may press START during play. If you’d like to change the starting level during a game, you may press SELECT to abort the current game and return to the title screen, where a new level may be chosen.
You start the game above the first planet, with the fleet passing above you and the Rocks immediately below you. Beneath the Rocks lies the planet’s atmosphere; below that is the waste dump. The bottom of the screen displays the instruments aboard your pod. These instruments include: C, the number of canisters yet to be moved; RADS, your radiation meter; FUEL, your fuel gauge; and, finally, P, the number of pods you have.
You move in space by pushing your joystick in any of the eight standard directions. The pod will move in that direction. When you head into the atmosphere, the planet’s gravity starts to pull on your pod, so you can move left or right normally, but must use upward thrust to decelerate a fall and to accelerate upward.
To land, you must center your pod above the disposal pad and thrust upward to slow your fall. You must be falling slowly at the point of contact with the pad, or you’ll crash. Do not attempt to land with a canister on board your pod, because the shock will detonate the unstable waste.
Pushing the joystick button when a canister is on your pod will activate the teleport beam. If this beam makes contact with one of the fleet ships, the canister will teleport aboard that ship, and the radiation level will decrease. If the beam expends itself, or contacts an object, the canister will disperse, but the radiation will remain.
As above, when five canisters have been removed from a dump, you’ll move on to the next planet, advance one level and be given another spare pod. When all five canisters have been removed from each of the ten planets, you’ll return to the first planet to continue the task. At this point, you will have reached the highest difficulty and will remain at this level.
The game is lost if the radiation level reaches maximum and destroys the current planet, or if you lose all of your pods. Good luck, and watch out for the Rocks!
Douglas Engel has an A.A.S. in Electrical Technology and has been a computer enthusiast since 1981. He owns an Atari 2600, 600XL, 800XL and 520ST, and numerous peripherals. Rocks! is his first assembly language game. His other interests include art, animation and automobiles (especially classic T-Birds).
1000 DATA 255,255,0,32,246,47,169,3,141,15,210,169,22,141,8,2,2781 1010 DATA 169,38,141,9,2,169,29,141,19 5,2,169,0,141,8,210,133,4926 1020 DATA 204,133,206,173,244,2,133,20 5,169,64,133,207,160,64,162,1,8133 1030 DATA 177,204,145,206,200,208,249, 230,205,230,207,202,16,242,169,64,4706 1040 DATA 141,244,2,160,0,162,0,189,21 6,70,141,26,80,142,27,80,4019 1050 DATA 162,7,173,26,80,10,141,26,80 ,144,4,169,73,208,2,169,4331 1060 DATA 0,153,224,59,200,202,16,234, 174,27,80,232,224,25,208,215,1792 1070 DATA 169,64,141,14,212,169,0,141, 47,2,160,98,162,228,169,7,6372 1080 DATA 32,92,228,169,136,141,48,2,1 69,61,141,49,2,169,11,141,3617 1090 DATA 0,2,169,38,141,1,2,169,192,1 41,14,212,32,41,36,32,1708 1100 DATA 68,37,133,77,141,200,2,169,2 ,141,196,2,169,4,141,197,6348 1110 DATA 2,169,6,141,198,2,169,134,14 1,199,2,173,95,71,141,201,8206 1120 DATA 60,169,34,141,47,2,173,31,20 8,201,7,240,249,133,77,201,199 1130 DATA 5,208,17,238,201,60,173,201, 60,201,26,208,20,169,16,141,7192 1140 DATA 201,60,208,13,201,6,208,222, 173,31,208,201,7,208,249,240,3555 1150 DATA 36,141,95,71,162,64,160,0,20 0,208,253,202,208,250,162,112,3864 1160 DATA 160,0,173,57,80,200,208,250, 173,31,208,201,7,240,183,202,3118 1170 DATA 208,240,76,192,32,169,0,141, 47,2,141,96,71,133,77,162,4834 1180 DATA 7,169,16,157,87,71,202,16,25 0,169,19,141,218,59,173,95,8220 1190 DATA 71,141,201,60,141,97,71,169, 80,160,0,162,1,32,17,37,1094 1200 DATA 32,68,37,32,41,36,169,5,141, 129,66,141,134,66,169,168,6117 1210 DATA 141,165,66,169,21,141,183,59 ,141,37,80,169,3,141,29,208,5582 1220 DATA 169,80,141,7,212,169,0,162,1 67,157,168,61,202,16,250,169,327 1230 DATA 83,160,0,162,5,32,17,37,169, 83,133,205,169,0,133,204,6643 1240 DATA 169,41,168,169,128,145,204,2 30,204,145,204,198,204,152,24,105,2175 1250 DATA 8,144,239,162,215,189,0,83,9 ,5,157,0,83,232,224,224,8913 1260 DATA 208,243,162,10,173,10,210,24 0,251,157,32,62,173,10,210,240,1099 1270 DATA 251,157,56,62,202,16,237,169 ,48,160,0,162,9,32,17,37,1756 1280 DATA 162,2,169,51,133,205,169,0,1 33,204,32,137,37,201,6,144,6157 1290 DATA 38,24,105,64,160,0,145,204,3 2,137,37,141,57,80,32,79,2756 1300 DATA 37,141,58,80,169,13,56,237,5 8,80,24,109,57,80,24,101,2055 1310 DATA 204,176,61,133,204,144,211,1 41,26,80,165,204,201,254,176,202,4408 1320 DATA 173,26,80,41,254,105,64,160, 0,145,204,24,105,1,200,145,6258 1330 DATA 204,32,137,37,141,57,80,32,7 9,37,141,58,80,169,14,56,1860 1340 DATA 237,58,80,24,109,57,80,24,10 1,204,176,4,133,204,144,154,7810 1350 DATA 230,205,230,205,202,16,143,1 69,49,133,205,169,0,133,204,160,495 1360 DATA 0,169,208,145,204,200,169,81 ,145,204,200,32,131,37,24,105,7143 1370 DATA 3,141,26,80,169,82,145,204,2 00,204,26,80,208,248,169,83,1162 1380 DATA 145,204,200,169,212,145,204, 200,152,24,101,204,133,204,32,137,591 1390 DATA 37,109,201,60,109,201,60,105 ,32,24,101,204,176,6,133,204,7217 1400 DATA 201,240,144,187,162,3,169,0, 133,204,169,49,133,205,160,0,7955 1410 DATA 177,204,230,205,145,204,198, 205,200,192,48,208,243,230,205,230,835 8 1420 DATA 205,202,16,234,169,2,141,169 ,61,169,3,141,217,61,162,4,6342 1430 DATA 173,10,210,41,3,240,249,201, 3,240,245,157,168,61,201,1,298 1440 DATA 208,7,169,4,157,240,61,208,5 ,169,0,157,240,61,169,0,6629 1450 DATA 157,8,62,232,224,11,208,216, 162,4,32,137,37,105,1,157,5079 1460 DATA 216,61,173,10,210,201,48,144 ,5,41,3,157,216,61,232,224,9199 1470 DATA 11,208,231,169,48,141,48,2,1 69,61,141,49,2,32,57,36,879 1480 DATA 169,158,141,0,2,169,37,141,1 ,2,160,30,162,38,169,7,2233 1490 DATA 32,92,228,169,63,141,47,2,20 8,47,173,43,80,240,2,208,7091 1500 DATA 40,173,31,208,201,7,208,22,1 73,30,80,162,0,142,30,80,3889 1510 DATA 201,5,208,3,76,106,32,201,6, 208,6,76,15,33,141,30,1569 1520 DATA 80,173,35,80,240,212,76,49,3 3,32,85,37,32,68,37,169,2390 1530 DATA 48,141,62,80,169,126,141,28, 80,32,31,36,173,17,80,240,4518 1540 DATA 20,206,218,59,173,218,59,201 ,16,208,10,162,18,32,247,36,6297 1550 DATA 169,255,141,25,80,169,87,141 ,41,80,169,152,141,22,80,169,6800 1560 DATA 125,141,53,80,169,108,141,19 3,2,169,149,141,192,2,32,143,6801 1570 DATA 37,141,38,80,141,17,80,141,2 4,80,141,14,80,141,44,80,2507 1580 DATA 141,16,80,141,43,80,141,10,8 0,169,255,141,21,80,169,1,5170 1590 DATA 141,20,80,141,36,80,173,201, 60,24,105,192,141,223,60,173,8916 1600 DATA 201,60,201,25,208,12,169,209 ,141,249,60,169,208,141,250,60,2426 1610 DATA 208,11,24,105,193,141,250,60 ,169,208,141,249,60,173,25,80,9370 1620 DATA 208,20,162,6,32,247,36,169,0 ,141,64,80,169,255,141,37,7172 1630 DATA 80,169,180,141,63,80,32,179, 36,76,20,35,172,34,80,216,4695 1640 DATA 174,12,80,189,87,71,24,105,1 ,201,26,176,12,157,87,71,3915 1650 DATA 136,208,237,169,255,141,36,8 0,96,24,233,9,157,87,71,202,7933 1660 DATA 16,225,76,20,35,169,84,160,0 ,162,2,32,17,37,96,162,2288 1670 DATA 17,169,0,157,0,208,202,16,25 0,96,69,79,37,78,96,162,5965 1680 DATA 119,189,80,62,157,200,62,157 ,64,63,224,70,240,12,224,46,8234 1690 DATA 240,8,224,22,240,4,202,16,23 2,96,160,10,173,97,71,41,5728 1700 DATA 15,10,10,10,10,77,97,71,10,4 1,247,93,80,62,157,200,5360 1710 DATA 62,157,64,63,202,136,16,228, 48,199,169,0,133,224,169,68,9061 1720 DATA 133,225,169,12,133,226,169,6 8,133,227,96,173,10,210,41,24,7274 1730 DATA 72,29,0,84,157,0,84,104,29,0 ,85,157,0,85,238,23,2609 1740 DATA 80,238,23,80,96,173,10,210,1 72,18,80,192,1,208,5,41,4521 1750 DATA 3,76,138,36,41,192,76,138,36 ,173,28,80,141,0,208,141,5987 1760 DATA 1,208,24,105,3,141,6,208,174 ,62,80,202,169,0,157,0,5278 1770 DATA 84,157,0,85,232,160,0,177,22 4,157,0,84,177,226,157,0,8458 1780 DATA 85,232,200,192,12,208,240,17 3,36,80,240,16,162,7,189,87,8456 1790 DATA 71,157,8,48,202,16,247,169,0 ,141,36,80,96,160,0,189,5856 1800 DATA 112,61,153,88,61,232,200,192 ,6,208,244,96,169,0,162,25,8475 1810 DATA 157,116,87,202,16,250,96,133 ,205,132,204,169,0,168,145,204,1812 1820 DATA 200,208,251,230,205,202,208, 246,96,141,26,80,32,125,37,208,9339 1830 DATA 21,173,26,80,141,26,80,142,2 7,80,162,7,42,110,26,80,1817 1840 DATA 202,16,249,174,27,80,173,26, 80,96,169,0,162,7,157,1,3665 1850 DATA 210,202,16,250,96,173,201,60 ,41,15,96,174,62,80,232,232,9698 1860 DATA 160,35,169,207,61,0,83,157,0 ,83,202,136,208,244,169,0,8906 1870 DATA 141,5,80,141,4,80,141,6,80,1 41,32,80,141,7,210,32,3395 1880 DATA 116,36,96,173,10,210,41,1,96 ,173,10,210,41,7,96,173,4716 1890 DATA 10,210,41,15,96,169,0,141,31 ,80,141,0,80,141,3,80,2094 1900 DATA 141,2,80,96,72,138,72,166,20 2,141,10,212,189,160,63,141,9469 1910 DATA 26,208,189,240,61,141,4,212, 141,10,212,189,88,63,141,23,7232 1920 DATA 208,189,112,63,141,24,208,18 9,136,63,141,25,208,189,64,63,7934 1930 DATA 141,22,208,189,32,62,240,16, 141,10,212,141,7,208,189,32,7578 1940 DATA 62,24,125,56,62,141,10,212,1 41,7,208,230,202,189,9,71,8501 1950 DATA 141,10,212,141,27,208,224,2, 208,6,173,2,208,141,33,80,6590 1960 DATA 224,11,208,9,173,48,80,32,52 ,36,141,21,208,104,170,104,5840 1970 DATA 64,72,169,54,32,52,36,141,22 ,208,104,64,173,9,210,141,6724 1980 DATA 252,2,104,64,173,43,80,240,3 ,76,138,47,169,0,133,202,6700 1990 DATA 141,18,80,173,37,80,240,3,76 ,138,47,173,25,80,240,13,5378 2000 DATA 173,132,2,208,5,104,104,76,1 5,33,76,211,47,173,13,80,3601 2010 DATA 208,3,76,211,38,238,15,80,17 3,15,80,201,56,144,18,201,6888 2020 DATA 224,144,61,162,18,142,25,80, 32,247,36,32,68,37,76,138,3408 2030 DATA 47,162,3,32,43,36,162,12,189 ,40,63,24,105,1,41,15,9515 2040 DATA 9,112,157,40,63,157,160,63,1 41,0,210,105,32,141,2,210,6404 2050 DATA 169,207,141,1,210,141,3,210, 232,224,19,208,219,76,138,47,423 2060 DATA 162,119,173,42,80,41,15,93,2 00,62,157,200,62,157,64,63,6161 2070 DATA 169,15,141,1,210,141,3,210,1 69,143,141,5,210,141,7,210,9024 2080 DATA 173,15,80,141,0,210,10,141,2 ,210,10,141,4,210,73,255,7632 2090 DATA 141,6,210,202,16,204,76,138, 47,162,23,189,168,61,240,103,9471 2100 DATA 189,192,61,221,216,61,144,92 ,169,0,157,192,61,189,168,61,9417 2110 DATA 201,2,240,43,169,3,56,253,8, 62,157,240,61,254,8,62,7246 2120 DATA 189,8,62,201,4,208,64,157,24 0,61,169,0,157,8,62,142,6271 2130 DATA 27,80,189,241,70,170,254,48, 61,174,27,80,76,65,39,254,7473 2140 DATA 8,62,189,8,62,157,240,61,201 ,4,208,27,169,0,157,240,9144 2150 DATA 61,157,8,62,142,27,80,189,24 1,70,170,222,48,61,174,27,7664 2160 DATA 80,76,65,39,254,192,61,202,1 6,145,238,54,80,173,54,80,7620 2170 DATA 201,128,208,12,162,10,222,32 ,62,202,16,250,232,142,54,80,8827 2180 DATA 238,55,80,173,55,80,201,28,2 40,14,201,30,240,17,201,58,8018 2190 DATA 240,20,201,60,240,28,208,41, 169,13,141,129,66,208,122,169,9519 2200 DATA 5,141,129,66,208,115,169,13, 141,134,66,169,184,141,165,66,9415 2210 DATA 208,103,169,5,141,134,66,169 ,168,141,165,66,169,0,141,55,7195 2220 DATA 80,238,8,80,173,8,80,201,40, 240,6,201,60,240,12,208,9087 2230 DATA 23,169,2,141,113,63,141,114, 63,208,62,169,40,141,113,63,6557 2240 DATA 141,114,63,169,0,141,8,80,23 8,9,80,173,9,80,201,56,5352 2250 DATA 240,6,201,72,240,17,208,33,1 69,127,141,244,67,169,247,141,2883 2260 DATA 202,67,141,206,67,208,18,169 ,63,141,244,67,169,243,141,202,3315 2270 DATA 67,141,206,67,169,0,141,9,80 ,173,17,80,240,3,76,148,5676 2280 DATA 41,173,31,80,208,122,173,62, 80,201,192,208,3,76,219,40,8925 2290 DATA 205,53,80,176,3,76,26,41,238 ,24,80,173,24,80,201,10,4471 2300 DATA 208,59,169,0,141,24,80,173,1 4,80,240,4,169,255,208,3,8475 2310 DATA 173,120,2,77,20,80,41,1,208, 12,206,59,80,208,30,169,5984 2320 DATA 1,141,59,80,208,23,238,59,80 ,173,59,80,201,16,208,13,6640 2330 DATA 169,15,141,59,80,173,20,80,7 3,1,141,20,80,173,59,80,3491 2340 DATA 238,0,80,205,0,80,240,2,176, 13,169,0,141,0,80,173,5188 2350 DATA 20,80,240,6,238,62,80,76,55, 41,206,62,80,76,55,41,3504 2360 DATA 173,32,80,208,20,238,2,80,20 8,29,169,255,141,2,80,173,8761 2370 DATA 120,2,41,1,240,3,76,109,41,1 69,14,141,59,80,141,32,3662 2380 DATA 80,32,143,37,141,20,80,174,3 ,80,189,33,71,205,2,80,4283 2390 DATA 240,3,76,109,41,189,69,71,14 1,1,210,189,51,71,141,0,5319 2400 DATA 210,24,165,224,105,24,133,22 4,169,0,101,225,133,225,24,165,652 2410 DATA 226,105,24,133,226,169,0,101 ,227,133,227,238,3,80,76,109,9171 2420 DATA 41,173,20,80,208,3,76,18,40, 173,59,80,201,11,144,42,4219 2430 DATA 173,32,80,208,37,173,28,80,2 01,129,176,30,169,124,205,28,8649 2440 DATA 80,176,23,169,6,141,12,80,14 1,31,80,32,79,37,141,34,2264 2450 DATA 80,238,34,80,32,246,35,76,10 9,41,238,17,80,76,109,41,4525 2460 DATA 169,1,141,20,80,169,8,141,59 ,80,173,14,80,208,33,173,6349 2470 DATA 120,2,41,1,240,29,173,120,2, 41,2,240,28,173,14,80,3872 2480 DATA 208,14,173,120,2,41,4,240,22 ,173,120,2,41,8,240,25,3836 2490 DATA 76,109,41,206,62,80,76,55,41 ,238,62,80,76,55,41,206,5553 2500 DATA 28,80,169,1,141,18,80,208,10 ,238,28,80,169,2,141,18,4602 2510 DATA 80,208,0,173,62,80,201,37,17 6,5,169,37,141,62,80,173,6797 2520 DATA 28,80,201,38,176,5,169,38,14 1,28,80,169,209,205,28,80,7604 2530 DATA 176,5,169,209,141,28,80,32,1 79,36,173,45,80,208,113,238,9617 2540 DATA 46,80,240,3,76,134,42,32,125 ,37,240,3,76,134,42,32,3389 2550 DATA 125,37,240,7,169,1,141,49,80 ,208,5,169,254,141,49,80,7901 2560 DATA 32,131,37,240,251,141,52,80, 173,10,210,9,8,141,48,80,5183 2570 DATA 32,137,37,205,96,71,176,2,14 4,3,173,96,71,10,10,10,1715 2580 DATA 170,160,0,189,200,69,153,126 ,87,232,200,192,8,208,244,169,4306 2590 DATA 0,141,47,80,141,7,80,141,60, 80,169,255,141,45,80,32,6202 2600 DATA 131,37,208,7,169,255,141,56, 80,208,5,169,0,141,56,80,6244 2610 DATA 238,47,80,173,47,80,205,52,8 0,208,113,173,50,80,208,80,8729 2620 DATA 173,29,80,56,233,128,16,5,73 ,255,24,105,1,141,60,80,4298 2630 DATA 169,255,56,237,60,80,74,74,7 4,74,74,141,60,80,238,7,5809 2640 DATA 80,173,7,80,201,11,144,26,20 1,12,144,7,169,0,141,7,3715 2650 DATA 80,240,29,169,160,13,60,80,1 41,3,210,169,16,141,2,210,7120 2660 DATA 208,14,173,60,80,74,9,128,14 1,3,210,169,16,141,2,210,6795 2670 DATA 169,0,141,47,80,173,29,80,24 ,109,49,80,141,29,80,141,4231 2680 DATA 3,208,208,8,169,0,141,45,80, 141,3,210,173,56,80,240,8703 2690 DATA 3,238,48,80,238,39,80,173,39 ,80,201,56,208,18,169,0,6526 2700 DATA 141,39,80,238,40,80,173,40,8 0,201,255,208,3,141,13,80,7841 2710 DATA 173,40,80,201,128,144,36,173 ,66,80,208,31,32,125,37,13,4130 2720 DATA 42,80,208,23,173,10,210,201, 38,176,2,144,247,201,209,144,2957 2730 DATA 2,176,241,141,2,208,169,255, 141,66,80,173,31,80,208,28,8828 2740 DATA 238,23,80,173,23,80,201,113, 144,18,169,0,141,23,80,206,6848 2750 DATA 21,80,208,8,141,1,210,169,25 5,141,14,80,173,13,80,240,9410 2760 DATA 12,173,41,80,24,105,32,141,4 ,208,76,68,45,173,40,80,4318 2770 DATA 74,74,74,24,109,41,80,141,4, 208,173,14,80,240,14,174,7370 2780 DATA 22,80,202,142,5,208,169,0,14 1,53,80,240,13,173,21,80,6337 2790 DATA 74,74,74,24,109,22,80,141,5, 208,173,31,80,208,20,173,7115 2800 DATA 32,80,240,15,173,17,80,208,1 0,173,132,2,208,5,169,255,9648 2810 DATA 141,5,80,173,5,80,208,3,76,1 14,44,238,4,80,173,4,4873 2820 DATA 80,201,1,240,3,76,56,44,169, 0,141,4,80,173,10,208,5540 2830 DATA 41,8,240,34,238,50,80,169,5, 141,12,80,173,56,80,240,7765 2840 DATA 3,206,12,80,32,79,37,141,34, 80,238,34,80,32,246,35,5502 2850 DATA 76,26,44,76,32,44,173,62,80, 201,136,176,246,173,2,208,861 2860 DATA 240,241,173,33,80,240,121,16 9,5,141,12,80,169,1,141,16,5401 2870 DATA 80,169,54,141,61,80,32,79,37 ,141,34,80,238,34,80,32,4014 2880 DATA 246,35,173,40,80,24,105,224, 141,40,80,176,5,169,0,141,6294 2890 DATA 40,80,206,183,59,173,183,59, 201,16,208,68,173,218,59,201,2001 2900 DATA 25,240,3,238,218,59,173,201, 60,201,25,240,3,238,201,60,1680 2910 DATA 173,96,71,201,15,240,3,238,9 6,71,174,97,71,232,224,26,331 2920 DATA 208,2,162,16,142,97,71,32,68 ,37,141,64,80,169,120,141,6490 2930 DATA 10,80,141,63,80,141,37,80,16 2,12,32,247,36,76,138,47,5168 2940 DATA 32,85,37,76,142,44,238,6,80, 169,42,141,7,210,173,6,6531 2950 DATA 80,141,6,210,201,32,208,6,32 ,85,37,76,142,44,174,62,5392 2960 DATA 80,232,232,169,207,61,0,83,1 57,0,83,202,172,6,80,200,8411 2970 DATA 169,207,224,35,208,6,32,85,3 7,76,142,44,61,0,83,141,3822 2980 DATA 26,80,169,48,45,10,210,240,2 49,13,26,80,157,0,83,202,7675 2990 DATA 136,208,221,169,207,61,0,83, 173,12,208,13,13,208,41,12,4955 3000 DATA 208,15,173,62,80,201,128,176 ,11,173,5,208,13,4,208,240,9480 3010 DATA 3,238,17,80,32,137,37,9,171, 141,194,2,173,17,80,240,7807 3020 DATA 3,76,68,45,173,31,80,208,102 ,173,14,80,240,3,76,68,5986 3030 DATA 45,173,120,2,41,15,201,15,24 0,85,41,3,201,2,240,6,5445 3040 DATA 201,1,240,19,208,28,173,62,8 0,24,105,9,170,32,133,36,4406 3050 DATA 232,32,133,36,76,220,44,174, 62,80,232,32,133,36,202,32,7358 3060 DATA 133,36,173,18,80,240,10,173, 62,80,24,105,5,170,32,159,5501 3070 DATA 36,173,1,80,73,255,141,1,80, 208,34,173,44,80,201,8,6750 3080 DATA 240,3,238,44,80,141,1,210,16 9,24,141,0,210,208,14,173,9081 3090 DATA 44,80,240,9,206,44,80,173,44 ,80,141,1,210,238,19,80,7674 3100 DATA 173,19,80,201,64,208,7,169,0 ,141,19,80,240,28,201,48,7198 3110 DATA 176,24,172,62,80,200,200,173 ,2,80,205,34,71,176,6,205,8720 3120 DATA 33,71,144,1,200,169,66,153,0 ,85,173,50,80,208,3,76,5997 3130 DATA 217,45,169,0,141,56,80,169,3 1,141,48,80,32,6,37,238,4937 3140 DATA 51,80,173,51,80,201,56,144,2 5,32,6,37,169,0,141,3,2639 3150 DATA 208,141,29,80,141,50,80,141, 51,80,141,45,80,141,3,210,6509 3160 DATA 240,93,173,10,210,41,24,168, 162,7,173,51,80,201,16,144,7394 3170 DATA 11,201,40,176,7,169,1,141,11 ,208,208,33,169,64,237,51,8918 3180 DATA 80,141,2,210,169,8,141,3,210 ,169,0,141,11,208,185,72,8546 3190 DATA 70,32,35,37,157,126,87,200,2 02,16,243,48,34,169,80,56,7458 3200 DATA 237,51,80,141,2,210,169,15,1 41,3,210,138,10,170,185,72,8618 3210 DATA 70,32,35,37,157,118,87,157,1 19,87,200,202,202,16,239,173,2723 3220 DATA 66,80,208,3,76,109,46,238,65 ,80,173,65,80,201,108,208,212 3230 DATA 25,169,0,141,5,210,141,65,80 ,141,66,80,141,2,208,170,8466 3240 DATA 157,122,86,232,224,96,208,24 8,240,105,201,54,176,46,169,42,2171 3250 DATA 141,5,210,169,80,56,237,65,8 0,141,26,80,32,137,37,77,5119 3260 DATA 26,80,141,4,210,173,10,210,4 1,12,168,162,4,185,104,70,7326 3270 DATA 32,35,37,157,202,86,200,202, 208,243,240,55,173,65,80,56,1510 3280 DATA 233,32,141,4,210,169,0,141,2 05,86,141,206,86,169,79,141,861 3290 DATA 5,210,170,173,10,210,41,31,1 68,185,120,70,157,123,86,157,9849 3300 DATA 124,86,157,125,86,157,126,86 ,200,152,41,31,168,202,202,202,2926 3310 DATA 202,16,230,173,50,80,208,8,1 73,15,208,240,3,238,50,80,9452 3320 DATA 173,16,80,240,34,201,1,208,2 2,206,61,80,173,61,80,240,9804 3330 DATA 14,74,74,9,64,141,7,210,169, 32,141,6,210,208,8,169,8575 3340 DATA 0,141,16,80,141,7,210,173,17 ,80,208,3,76,134,47,238,8245 3350 DATA 38,80,169,48,24,109,38,80,14 1,0,210,173,38,80,201,24,6595 3360 DATA 144,28,201,48,176,3,76,28,47 ,201,80,144,59,201,120,144,8735 3370 DATA 5,169,255,141,43,80,169,0,14 1,1,210,76,134,47,32,179,7165 3380 DATA 36,169,10,141,1,210,173,10,2 10,41,24,168,174,62,80,232,9526 3390 DATA 169,7,141,11,80,185,72,70,32 ,35,37,32,138,36,232,200,7021 3400 DATA 206,11,80,16,240,76,134,47,3 2,31,36,160,3,206,44,80,4679 3410 DATA 240,13,136,16,248,173,44,80, 74,74,74,74,141,1,210,76,6695 3420 DATA 134,47,169,15,141,1,210,169, 0,141,44,80,169,15,141,192,8196 3430 DATA 2,141,193,2,173,28,80,56,233 ,4,141,0,208,24,105,8,4773 3440 DATA 141,1,208,169,0,141,11,80,17 3,62,80,56,233,4,170,173,8578 3450 DATA 10,210,41,48,168,185,152,70, 157,0,84,232,200,238,11,80,267 3460 DATA 173,11,80,201,16,208,238,173 ,10,210,41,48,168,142,27,80,8151 3470 DATA 185,152,70,141,26,80,32,46,3 7,174,27,80,173,26,80,157,5590 3480 DATA 0,85,202,200,206,11,80,173,1 1,80,208,225,169,0,133,77,9407 3490 DATA 141,30,208,173,64,80,208,40, 206,63,80,208,60,169,180,141,1545 3500 DATA 63,80,141,64,80,162,0,32,247 ,36,173,10,80,240,12,169,7920 3510 DATA 0,141,64,80,169,255,141,35,8 0,208,5,169,0,141,37,80,6638 3520 DATA 173,252,2,201,33,208,18,32,6 8,37,173,37,80,73,255,141,8274 3530 DATA 37,80,208,5,162,119,32,57,36 ,169,255,141,252,2,173,10,9145 3540 DATA 210,141,42,80,173,37,80,13,2 5,80,240,14,162,119,189,200,9869 3550 DATA 62,32,52,36,157,64,63,202,16 ,244,76,98,228,0,58,223,9200 3560 DATA 59,127,127,127,127,127,127,1 27,127,127,127,127,127,127,127,127,764 3570 DATA 85,90,92,89,127,127,127,127, 127,127,127,127,127,127,127,127,469 3580 DATA 127,127,127,127,127,127,127, 87,91,92,88,127,127,127,127,127,9429 3590 DATA 127,127,127,127,127,127,127, 127,127,85,91,92,88,127,87,91,7943 3600 DATA 94,96,98,98,92,88,87,89,127, 127,127,127,85,91,92,89,7398 3610 DATA 127,127,127,127,127,86,90,94 ,96,98,100,92,88,86,91,92,6646 3620 DATA 89,92,89,85,90,92,88,86,91,9 5,96,98,97,101,102,93,6500 3630 DATA 94,96,100,97,105,106,95,99,9 2,89,86,90,94,96,100,99,6616 3640 DATA 92,88,127,85,90,95,94,95,96, 97,99,105,106,93,96,98,6938 3650 DATA 98,105,106,93,96,105,106,94, 95,93,96,97,100,99,98,103,7061 3660 DATA 104,96,105,106,94,93,94,98,1 05,106,93,95,96,96,97,99,6964 3670 DATA 98,97,101,102,93,93,95,96,96 ,105,106,94,95,94,96,97,6880 3680 DATA 99,107,107,108,107,107,108,1 08,108,107,108,109,110,111,110,111,849 1 3690 DATA 109,108,108,107,108,107,108, 110,107,108,108,107,107,108,109,111,84 14 3700 DATA 110,111,111,109,107,108,108, 107,108,107,108,108,107,107,108,109,83 75 3710 DATA 111,112,114,113,114,112,113, 114,112,114,114,113,114,112,114,112,90 94 3720 DATA 114,112,114,113,114,112,113, 114,112,113,114,112,114,113,112,113,90 85 3730 DATA 112,114,112,114,112,113,114, 112,114,113,114,112,114,112,114,114,91 32 3740 DATA 112,115,116,117,115,116,125, 115,116,115,116,117,116,115,117,115,95 51 3750 DATA 125,115,117,115,116,117,115, 116,115,126,126,115,117,116,117,125,98 92 3760 DATA 116,116,115,117,116,117,116, 116,116,117,115,125,115,115,116,117,96 39 3770 DATA 125,125,119,120,125,118,125, 125,118,125,125,125,119,120,125,125,47 9 3780 DATA 125,120,118,125,120,125,125, 121,122,123,124,121,125,125,125,120,50 6 3790 DATA 125,125,125,125,125,125,118, 125,125,125,125,119,125,125,125,125,66 9 3800 DATA 125,125,125,125,125,125,125, 125,125,125,125,125,125,125,125,125,80 0 3810 DATA 125,125,125,125,125,125,125, 125,125,126,126,125,125,125,125,125,83 1 3820 DATA 125,125,125,125,125,125,125, 125,125,125,125,125,125,125,125,125,82 0 3830 DATA 125,0,0,0,0,0,35,26,16,0,50, 33,36,51,7,1,6801 3840 DATA 3,4,3,5,3,4,3,6,0,0,38,53,37 ,44,7,1,6260 3850 DATA 3,4,3,5,3,4,3,6,0,48,26,16,0 ,0,0,0,4956 3860 DATA 0,168,60,167,61,192,192,226, 249,192,228,239,245,231,236,225,2749 3870 DATA 243,192,229,238,231,229,236, 192,192,0,0,0,0,0,0,44,4285 3880 DATA 37,54,37,44,26,0,16,0,0,0,0, 0,0,192,192,192,3194 3890 DATA 192,192,192,192,192,236,229, 246,229,236,218,192,208,192,192,192,22 24 3900 DATA 192,192,192,192,192,192,192, 192,192,192,237,245,236,244,233,240,38 26 3910 DATA 236,233,229,242,218,192,208, 208,192,192,192,192,192,192,192,192,82 9 3920 DATA 192,192,192,192,231,225,237, 229,192,192,239,246,229,242,192,192,33 82 3930 DATA 192,192,192,192,192,192,192, 192,192,236,229,246,229,236,192,227,31 94 3940 DATA 239,237,240,236,229,244,229, 228,192,192,192,192,192,176,112,112,88 49 3950 DATA 214,0,48,16,212,0,49,212,128 ,48,212,128,48,212,64,55,8403 3960 DATA 212,192,53,212,64,51,212,192 ,53,212,64,51,212,192,55,212,2783 3970 DATA 0,53,212,128,48,212,128,48,2 12,128,48,212,0,58,132,132,9180 3980 DATA 132,132,132,132,132,132,32,8 2,176,59,65,48,61,212,128,128,8826 3990 DATA 212,128,128,214,208,60,214,2 32,60,214,24,61,212,128,48,214,2820 4000 DATA 0,61,212,128,48,112,112,112, 112,112,68,224,59,4,4,4,4373 4010 DATA 4,112,134,112,112,112,112,11 2,6,112,112,112,112,112,112,112,8246 4020 DATA 112,112,65,136,61,80,62,199, 62,202,164,164,2,2,2,2,4372 4030 DATA 2,2,2,2,2,50,50,50,50,50,50, 50,50,50,50,50,110 4040 DATA 2,36,162,162,4,4,4,4,4,4,4,4 ,4,4,52,52,7240 4050 DATA 52,52,52,52,52,52,52,52,10,6 ,6,6,6,6,6,6,6558 4060 DATA 6,6,6,6,6,6,54,54,54,54,54,5 4,54,54,54,54,396 4070 DATA 80,64,142,142,64,64,64,64,64 ,64,64,64,64,72,72,64,3568 4080 DATA 64,64,64,64,64,64,64,143,143 ,0,0,0,0,0,0,0,8303 4090 DATA 0,0,0,0,0,128,130,132,134,13 6,138,140,142,30,30,30,5784 4100 DATA 80,0,64,63,64,0,0,0,0,0,0,0, 0,0,0,192,8016 4110 DATA 192,192,192,204,255,0,0,0,0, 0,0,0,0,0,0,0,7353 4120 DATA 0,0,192,204,255,0,0,0,0,192, 192,204,255,0,0,0,6582 4130 DATA 192,192,192,204,255,0,12,222 ,204,192,192,192,192,0,0,30,381 4140 DATA 0,0,0,0,0,0,66,97,71,0,3,15, 47,59,59,47,9304 4150 DATA 5,0,64,144,164,228,228,144,6 4,0,15,59,31,62,59,61,4440 4160 DATA 15,0,84,229,121,249,249,229, 84,0,12,63,190,238,254,62,3265 4170 DATA 10,0,0,64,80,80,144,80,64,0, 20,233,249,249,233,20,1094 4180 DATA 0,0,16,228,228,228,16,0,0,0, 0,32,228,228,228,32,8232 4190 DATA 0,0,40,249,121,249,249,185,3 7,0,244,249,249,164,16,0,2406 4200 DATA 0,0,0,0,0,13,9,5,0,0,0,0,53, 57,45,41,7199 4210 DATA 5,0,0,56,57,41,36,16,0,0,56, 56,36,0,0,0,7106 4220 DATA 0,0,0,8,57,57,41,37,5,0,5,5, 0,0,5,5,5777 4230 DATA 0,192,84,90,170,170,84,84,19 2,12,42,170,149,149,170,42,9951 4240 DATA 12,3,10,169,169,170,170,10,3 ,0,128,96,88,168,168,128,8750 4250 DATA 0,0,0,0,0,0,3,14,62,0,0,0,0, 0,3,15,5226 4260 DATA 59,0,0,0,0,0,3,15,61,0,0,0,0 ,64,80,148,9473 4270 DATA 89,0,0,0,0,64,80,148,85,0,3, 14,63,254,254,187,8630 4280 DATA 238,0,3,15,61,255,247,191,25 4,64,80,148,85,85,89,149,1275 4290 DATA 86,190,235,190,234,190,187,2 38,187,254,255,254,238,187,234,238,485 0 4300 DATA 170,254,251,222,238,187,250, 238,186,186,250,190,250,235,238,251,52 75 4310 DATA 174,153,165,165,166,166,106, 153,154,166,153,169,150,105,165,153,48 37 4320 DATA 85,89,150,101,89,150,105,86, 101,89,150,89,101,85,89,153,9008 4330 DATA 102,64,83,155,85,85,89,85,86 ,251,186,255,234,126,90,86,3589 4340 DATA 101,126,95,151,89,85,89,149, 101,250,238,255,254,123,94,150,6273 4350 DATA 101,153,169,149,101,149,151, 95,189,89,151,95,126,239,255,190,6317 4360 DATA 255,255,190,239,255,187,255, 190,255,254,191,251,191,238,255,251,59 57 4370 DATA 191,170,186,255,238,255,251, 191,255,170,170,238,255,251,191,239,47 23 4380 DATA 254,170,170,251,255,191,254, 239,187,255,187,255,255,238,255,255,65 01 4390 DATA 239,255,191,255,251,191,255, 254,239,191,254,255,255,251,255,239,73 43 4400 DATA 254,255,255,235,255,255,255, 250,255,175,255,255,255,250,255,255,80 89 4410 DATA 255,255,255,255,235,255,255, 255,175,255,255,239,187,239,255,255,69 70 4420 DATA 255,255,175,255,255,255,251, 238,251,255,255,251,255,255,255,239,83 56 4430 DATA 255,255,255,243,255,255,255, 243,255,255,255,253,213,214,213,245,70 32 4440 DATA 255,255,213,89,89,170,89,89, 85,255,255,95,85,165,85,87,2342 4450 DATA 127,255,255,255,255,255,255, 255,255,255,251,255,255,63,255,255,627 0 4460 DATA 255,0,0,0,0,0,0,0,0,0,36,126 ,126,36,36,0,9305 4470 DATA 0,24,0,0,0,0,0,0,0,0,0,60,12 6,66,66,231,2486 4480 DATA 0,0,0,36,126,126,36,36,0,0,2 4,0,0,0,0,0,6814 4490 DATA 0,0,0,0,60,126,66,231,0,0,36 ,126,126,36,36,0,2446 4500 DATA 0,24,0,0,0,0,0,0,0,0,0,60,12 6,66,66,231,2516 4510 DATA 0,0,36,126,126,36,36,0,0,0,0 ,0,0,0,0,0,6220 4520 DATA 0,0,0,36,102,66,66,231,0,0,3 6,126,126,36,36,0,2470 4530 DATA 0,0,0,0,0,0,0,0,0,0,0,36,66, 66,66,231,1430 4540 DATA 0,0,36,126,126,36,36,0,0,0,0 ,24,0,0,0,0,6538 4550 DATA 0,0,0,36,66,66,66,255,0,0,36 ,126,126,36,36,0,2512 4560 DATA 0,0,24,24,0,0,0,0,0,0,0,36,6 6,66,90,255,2372 4570 DATA 0,0,36,126,126,36,36,0,0,24, 24,8,0,0,0,0,6880 4580 DATA 0,0,0,36,66,90,90,231,0,0,36 ,126,126,36,36,0,2662 4590 DATA 24,24,8,16,0,0,0,0,0,0,0,36, 90,90,66,231,2298 4600 DATA 0,0,36,126,126,36,36,24,24,8 ,16,8,0,0,0,0,7070 4610 DATA 0,0,0,60,90,66,66,231,0,0,36 ,126,126,36,60,24,3340 4620 DATA 8,16,8,16,0,0,0,0,0,0,24,60, 66,66,66,231,2200 4630 DATA 0,0,36,126,126,60,60,8,16,8, 16,8,0,0,0,0,7212 4640 DATA 0,24,24,36,66,66,66,231,0,0, 36,126,126,60,60,0,3226 4650 DATA 8,16,8,16,0,0,0,0,0,24,24,36 ,66,66,66,231,2182 4660 DATA 0,0,36,126,126,60,60,0,0,8,1 6,8,0,0,0,0,7034 4670 DATA 0,24,24,36,66,66,66,231,0,0, 36,126,126,60,60,0,3256 4680 DATA 0,0,8,16,0,0,0,0,0,24,24,36, 66,66,66,231,2172 4690 DATA 0,0,36,126,126,60,60,0,0,0,0 ,8,0,0,0,0,6808 4700 DATA 0,24,24,36,66,66,66,231,0,0, 36,126,126,60,60,0,3286 4710 DATA 0,0,0,0,0,0,0,0,0,24,24,36,6 6,66,66,231,2114 4720 DATA 0,0,36,126,126,60,60,0,0,0,0 ,0,0,0,0,0,6742 4730 DATA 0,24,24,36,102,66,66,231,0,0 ,36,126,126,60,60,0,3496 4740 DATA 0,24,0,0,0,0,0,0,0,24,24,60, 126,66,66,231,3260 4750 DATA 0,0,68,40,16,56,56,56,16,14, 206,100,63,63,100,206,6617 4760 DATA 14,54,73,28,62,62,28,42,73,3 4,28,28,127,127,8,8,1745 4770 DATA 20,8,28,28,28,8,62,8,20,0,25 5,24,255,24,24,36,3548 4780 DATA 0,7,7,164,127,164,7,7,0,40,1 6,16,56,56,16,16,9971 4790 DATA 40,0,0,60,153,126,153,60,0,1 6,84,56,124,56,84,16,3810 4800 DATA 40,0,0,26,188,127,188,26,0,1 6,56,18,60,60,18,56,1948 4810 DATA 16,16,16,124,56,16,84,56,84, 129,90,60,102,102,60,90,5664 4820 DATA 129,0,28,62,85,62,28,0,0,0,0 ,0,219,126,24,0,1245 4830 DATA 0,0,36,8,24,72,2,16,0,0,66,4 0,52,16,68,0,8790 4840 DATA 16,4,64,40,20,57,60,80,2,128 ,37,30,44,154,33,72,3158 4850 DATA 2,64,49,132,0,131,90,0,4,68, 132,65,18,130,44,17,3005 4860 DATA 64,4,8,16,16,16,32,64,128,64 ,64,32,16,8,8,4,9316 4870 DATA 2,2,4,8,16,16,8,4,4,2,1,1,2, 4,8,8,5593 4880 DATA 4,1,0,40,2,4,31,38,15,21,15, 75,5,19,0,66,8398 4890 DATA 0,32,0,68,1,18,5,139,27,78,1 1,6,35,0,0,1,8173 4900 DATA 0,128,0,17,0,10,5,27,7,43,13 ,39,11,6,64,0,7826 4910 DATA 2,0,10,16,0,85,0,5,2,139,5,3 ,35,1,128,8,9572 4920 DATA 0,7,142,57,39,160,4,81,69,72 ,32,7,145,65,135,32,4528 4930 DATA 4,81,69,64,128,4,78,57,47,32 ,4,8,11,14,17,20,9022 4940 DATA 23,26,29,32,35,38,41,44,47,5 0,53,56,59,62,65,68,2148 4950 DATA 71,75,34,34,34,34,34,34,34,3 4,34,34,34,34,34,33,9677 4960 DATA 33,33,33,33,33,33,33,33,49,4 9,10,20,56,64,80,88,1661 4970 DATA 96,104,112,120,128,136,144,1 52,160,168,200,208,32,32,0,56,9346 4980 DATA 48,95,93,91,89,88,88,89,91,9 3,95,48,56,0,136,128,6348 4990 DATA 0,72,72,40,40,40,40,40,40,40 ,40,40,40,72,72,0,838 5000 DATA 16,16,16,16,16,16,16,16,16,0 ,0,226,2,227,2,0,1666 5010 DATA 32,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,5042
; ********************* ; * ROCKS! * ; * * ; * BY DOUGLAS ENGEL * ; * * ; ********************* ; ; OS EQUATES ; ATRACT = $4D AUDC1 = $D201 AUDC2 = $D203 AUDC3 = $D205 AUDC4 = $D207 AUDCTL = $D208 AUDF1 = $D200 AUDF2 = $D202 AUDF3 = $D204 AUDF4 = $D206 CH = $02FC CHBAS = $02F4 COLOR0 = $02C4 COLOR4 = $02C8 COLPF0 = $D016 COLPM0 = $D012 COLRSH = $4F CONSOL = $D01F DRKMSK = $4E GRACTL = $D01D HITCLR = $D01E HPOSP0 = $D000 HPOSP1 = $D001 HPOSP2 = $D002 HPOSP3 = $D003 HPOSM0 = $D004 HSCROL = $D404 KBCODE = $D209 M2PF = $D002 M2PL = $D00A NMIEN = $D40E P0PF = $D004 P0PL = $D00C P1PF = $D005 P1PL = $D00D P3PL = $D00F PCOLR0 = $02C0 PMBASE = $D407 PRIOR = $D01B RANDOM = $D20A RUNAD = $02E0 SDLSTL = $0230 SDMCTL = $022F SETVBV = $E45C SIZEP0 = $D008 SKCTL = $D20F STICK0 = $0278 STRIG0 = $0284 VDSLST = $0200 VKEYBD = $0208 WSYNC = $D40A XITVBV = $E462 ; ; PROGRAM EQUATES ; MISSLES = PMTABL+768 ;PM missles PLAYER0 = PMTABL+1024 ;PM players 0 & 1 PLAYER1 = PMTABL+1280 PMSATS = PMTABL+1918 ;PM for sats PMTABL = $5000 ;Loc. of table PMZAP = PMSATS-180 ;PM for zap SCOREBOARD = SCREEN+$08 ;Print score here SCREEN = $3000 ;Screen mem. ; ; PROGRAM VARIABLES ; *= PMTABL ACCOUNT *= *+1 ;Velocity counter ALT *= *+1 ;1/30 sec counter ANIMATE *= *+1 ;Animation counter ANIPTR *= *+1 ;Offset to frame values BEAMDLAY *= *+1 ;Delay counter BEAMFLG *= *+1 ;Flags beam on BEAMPOS *= *+1 ;Beam length BLEEP *= *+1 ;Decay BLINK *= *+1 ;Light counter BLINK1 *= *+1 ;Ditto COMPLETED *= *+1 ;Level done flag COWNTER *= *+1 ;Explosion counter DIGIT *= *+1 ;Current score dig. DOOM *= *+1 ;Doom flag EMPTY *= *+1 ;No fuel flag ENDCNTR *= *+1 ;Doom counter ETC. *= *+1 ;Misc. sound flag EXPLOSION *= *+1 ;Flag FD *= *+1 ;Flame dir. FLASHME *= *+1 ;Light counter FLIP *= *+1 ;Direction mask FUEL *= *+1 ;Amount of fuel FUELMTR *= *+1 ;Offset to needle FUELUSE *= *+1 ;Rate of use GRAVITY *= *+1 ;Counter for veloc. change G.O *= *+1 ;Game over flag HOLDA *= *+1 ;Temp accumulator HOLDX *= *+1 ;Temp index reg. HPOSME *= *+1 ;My horiz. HPOSSAT *= *+1 ;Sat horiz. KONSOL *= *+1 ;Former consol val. LANDFLAG *= *+1 ;Flag landing LOADED *= *+1 ;Flag loaded MISS *= *+1 ;M2PF shadow (sort of) MULTIPLY *= *+1 ;Multiplier NEWLEV *= *+1 ;Next level flag NEWSC *= *+1 ;Flag show score PAUSED *= *+1 ;Pause flag POWNTER *= *+1 ;Explosion counter RADCOUNT *= *+1 ;Rate of rad increase RADS *= *+1 ;Amount of rads RADSMTR *= *+1 ;Offset to needle RAND1 *= *+1 ;Saved random # RESET *= *+1 ;Set up me flag ROAR *= *+1 ;Rocket decay SAT? *= *+1 ;Active sat flag SATCNT *= *+1 ;Time between sats counter SATCNT1 *= *+1 ;Sat move counter SATCOLR *= *+1 ;Color of sat SATDIR *= *+1 ;Move direction SATEXP *= *+1 ;Sat explosion flag SATFRAME *= *+1 ;Sat explosion counter SATSPD *= *+1 ;Speed of sat SKY *= *+1 ;Where fall happens STARCNT *= *+1 ;Star move counter STROBE *= *+1 ;Light counter SUPER *= *+1 ;Super sat flag TEMPA *= *+1 ;Temporary TEMPB *= *+1 ;Temporary VELOCITY *= *+1 ;Fall veloc. VOL *= *+1 ;Decay VOL4 *= *+1 ;Decay VPOSME *= *+1 ;My vert. WAITCNTR *= *+1 ;Message delay WAITING *= *+1 ;Message flag ZAPCNT *= *+1 ;Zap counter ZAPFLAG *= *+1 ;Flags zap ; ; ZERO PAGE EQUATES ; LINENO = $CA ;Current DL mode line SHAPEA = $E0 ;Player 0 bit pattern SHAPEB = $E2 ;same for Player 1 ZEROPA = $CC ;General usage ZEROPB = $CE ;same here ; ; PROGRAM ; *= $2000 START LDA #$03 ;Init serial port STA SKCTL LDA #<INKEY ;Steal KB vector STA VKEYBD LDA #>INKEY STA VKEYBD+1 LDA #$1D ;Star color STA PCOLR0+3 LDA #$00 ;Init sound STA AUDCTL ; ; Move portion of chars ; STA ZEROPA ;Clear these STA ZEROPB LDA CHBAS ;Point to chars STA ZEROPA+1 LDA #>CHARS ;Point to mine STA ZEROPB+1 LDY #$40 ;16 already defined LDX #$01 CHLOOP LDA (ZEROPA),Y ;Move 'em STA (ZEROPB),Y INY BNE CHLOOP INC ZEROPA+1 INC ZEROPB+1 DEX BPL CHLOOP LDA #>CHARS ;Tell OS where they went STA CHBAS ; ; Draw title ; LDY #$00 LDX #$00 BITBLT LDA BITS,X ;Grab title byte STA HOLDA ;Save it STX HOLDX ;Save x LDX #$07 ;Rotate byte 8 times SHFT LDA HOLDA ASL A STA HOLDA BCC CC ;See if 0 falls out LDA #$49 ;No, load Rock char BNE PLOT ;Always CC LDA #$00 ;Space char PLOT STA TITLE,Y ;Store in screen mem. INY DEX BPL SHFT LDX HOLDX ;Get next byte INX CPX #$19 BNE BITBLT ;Go back until done SETUP LDA #$40 ;DLI off STA NMIEN LDA #$00 ;DMA off STA SDMCTL LDY #<XITVBV ;VBI off LDX #>XITVBV LDA #$07 JSR SETVBV LDA #<DLIST1 ;New DL vectors STA SDLSTL LDA #>DLIST1 STA SDLSTL+1 CDLI1 LDA #<DLI1 ;New DLI vector STA VDSLST LDA #>DLI1 STA VDSLST+1 LDA #$C0 ;DLI on STA NMIEN JSR INITPM ;Clear PM regs. JSR SILENT ;No sound STA ATRACT ;No attract STA COLOR0+4 ;Black LDA #$02 STA COLOR0 ;Dk grey LDA #$04 STA COLOR0+1 ;Grey LDA #$06 STA COLOR0+2 ;Lt grey LDA #$86 STA COLOR0+3 ;Blue LDA SLEVEL ;Use start level STA LEVEL LDA #$22 ;Screen DMA on STA SDMCTL ; INPUT LDA CONSOL ;Consol input CMP #$07 ;No key, try again BEQ INPUT STA ATRACT ;Off SEL CMP #$05 ;Select? BNE STA INC LEVEL ;Update level LDA LEVEL CMP #$1A ;Insure wrap at 10 BNE DEBOUNCE LDA #$10 STA LEVEL BNE DEBOUNCE ;Always STA CMP #$06 ;Start? BNE INPUT LG LDA CONSOL ;Wait for release CMP #$07 BNE LG BEQ UNPRESS ;Always DEBOUNCE STA SLEVEL ;New start level LDX #$40 ;Debounce delay LDY #$00 ASIA INY BNE ASIA DEX BNE ASIA BOINK LDX #$70 ;Wait for release LDY #$00 PRESSED LDA TEMPA ;Waste time INY BNE PRESSED LDA CONSOL ;Let go, go back CMP #$07 BEQ INPUT DEX BNE PRESSED JMP INPUT ;go back now ; UNPRESS LDA #$00 STA SDMCTL STA TOTAL ;Levels done=0 STA ATRACT ;Off CLRSCR LDX #$07 ;Put ATASCII 0's in score LDA #$10 GEM STA SCORE,X DEX BPL GEM LDA #$13 ;ATASCII 3 ships STA SHIPS LDA SLEVEL ;Start at start level STA LEVEL STA PAINT ;Planet color mask ; INIT LDA #>PMTABL ;Clear all those vars LDY #<PMTABL LDX #$01 JSR CLEER ;Use this routine JSR SILENT ;Sound off JSR INITPM ;Reset PM regs. LDA #$05 ;Make sure that we STA CHARS+641 ;Start with original STA CHARS+646 ;Char shapes LDA #$A8 STA CHARS+677 LDA #$15 STA CANISTERS STA PAUSED ;Start paused ACROSS LDA #$03 ;PM on STA GRACTL LDA #>PMTABL ;Tell OS where pm is STA PMBASE LDA #$00 ;Clear scroll tables LDX #$A7 CLR STA SCRLST,X DEX BPL CLR LDA #>MISSLES ;Clear PM area LDY #<MISSLES LDX #$05 JSR CLEER LDA #>MISSLES ;Put stars in missile 3 STA ZEROPA+1 LDA #<MISSLES STA ZEROPA LDA #$29 ;Starting line SPOT TAY LDA #$80 ;Put $80 STA (ZEROPA),Y ; on 2 consecutive INC ZEROPA ; bytes STA (ZEROPA),Y DEC ZEROPA TYA CLC ADC #$08 ;Then skip 8 bytes BCC SPOT ; and put in more ; LDX #$D7 ;Draw guage needles NEEDLE LDA MISSLES,X ORA #$05 ;Missiles 0 & 1 STA MISSLES,X INX CPX #$E0 BNE NEEDLE ; LDX #$0A ;Create random distances STARS LDA RANDOM ; between the horiz. BEQ STARS ; positions of the consecutive STA MPOS,X ; star bits. OFS LDA RANDOM BEQ OFS STA OFFSET,X DEX BPL STARS ; FIELDCLR LDA #>SCREEN ;Clear asteroid field LDY #<SCREEN LDX #$09 JSR CLEER ; ; Put rock chars on screen ; LDX #$02 LDA #>SCREEN+768 ;Start location STA ZEROPA+1 ROCKS LDA #$00 STA ZEROPA ;Start at 0 ASTRO JSR R16 ;Random # CMP #$06 ;<6? BCC DOUBLE ;Yes, make big rock CLC ADC #$40 ;Offset to char code LDY #$00 STA (ZEROPA),Y ;Put in char JSR R16 ;Find spacing for next rock STA TEMPA JSR GETLEV ;Based on level STA TEMPB LDA #$0D ;By subtracting level from 14 SEC SBC TEMPB CLC ADC TEMPA ; and adding random # CLC ADC ZEROPA ;Point to new spot BCS COMPLE ;Done at page end STA ZEROPA BCC ASTRO ;Always DOUBLE STA HOLDA ;Save LDA ZEROPA ;See if near page end CMP #$FE BCS ASTRO ;Too close try again LDA HOLDA ;Get char code AND #$FE ;Make even ADC #$40 ;Char offset LDY #$00 STA (ZEROPA),Y ;Put in mem CLC ADC #$01 ;Next char INY STA (ZEROPA),Y ; goes in next byte JSR R16 ;Random spacing by level again. STA TEMPA JSR GETLEV STA TEMPB LDA #$0E SEC SBC TEMPB CLC ADC TEMPA CLC ADC ZEROPA BCS COMPLE STA ZEROPA BCC ASTRO COMPLE INC ZEROPA+1 ;Point to next page INC ZEROPA+1 DEX BPL ROCKS ;Do more ; ; Put fleet on screen LDA #>SCREEN+256 ;Set addr. STA ZEROPA+1 LDA #<SCREEN+256 STA ZEROPA PUTSHP LDY #$00 ;Set index LDA #$D0 ;Rear char code STA (ZEROPA),Y ;Place INY ;Next byte LDA #$51 ;Engines char STA (ZEROPA),Y ;Place INY ;Next JSR R07 ;Random # <=7 but >3 CLC ADC #$03 STA HOLDA LDA #$52 ;Pod back char SHIP STA (ZEROPA),Y INY ;Next CPY HOLDA ;Done enough? BNE SHIP LDA #$53 ;Bridge char STA (ZEROPA),Y INY ;Next LDA #$D4 ;Nose char STA (ZEROPA),Y INY TYA CLC ADC ZEROPA ;Start addr is now at STA ZEROPA ;Front of ship JSR R16 ;Spacing = 2*level+Rnd ADC LEVEL ADC LEVEL ADC #$20 ;+ $20 CLC ADC ZEROPA ;Add to start BCS OVER ;Page done? STA ZEROPA ;See if too close to CMP #$F0 ;Page boundary BCC PUTSHP ; ; Copy for scroll wrap ; OVER LDX #$03 ;# of pages LDA #<SCREEN+256 Set up STA ZEROPA LDA #>SCREEN+256 STA ZEROPA+1 WRAP LDY #$00 ;# of bytes moved COPY LDA (ZEROPA),Y ;Get one INC ZEROPA+1 ;Put on next page STA (ZEROPA),Y DEC ZEROPA+1 ;Point to ogir. page INY CPY #$30 BNE COPY ;Done? INC ZEROPA+1 ;Skip a page INC ZEROPA+1 DEX ;Done? BPL WRAP ; ;Random scroll directions and speeds ; LDA #$02 STA SCRLST+1 ;Fleet dir LDA #$03 STA LIMIT+1 ;Fleet speed LDX #$04 SETDIR LDA RANDOM ;Random rock dir AND #$03 BEQ SETDIR ;no 0's CMP #$03 ;no 3's BEQ SETDIR STA SCRLST,X CMP #$01 ;Set counter BNE RD ; to right value LDA #$04 ; for left STA CURR,X BNE ZC ;Always RD LDA #$00 ;Also for right STA CURR,X ZC LDA #$00 ;Set 0 color clocks STA COLCKS,X INX CPX #$0B ;Done? BNE SETDIR SPEED LDX #$04 ;Set 5 (speed) counters SETSPD JSR R16 ;Random # 1-16 ADC #$01 STA LIMIT,X ;Store it LDA RANDOM ;Bias the speeds CMP #$30 ; if <$30 BCC CONTIN AND #$03 ;High speed STA LIMIT,X CONTIN INX CPX #$0B ;Done? BNE SETSPD ; LDA #<DLIST ;New DL vector STA SDLSTL LDA #>DLIST STA SDLSTL+1 JSR OLDC ;Set color table CDLI LDA #<DLI ;New DLI vector STA VDSLST LDA #>DLI STA VDSLST+1 LDY #<VBLANK ;New VBI vector LDX #>VBLANK LDA #$07 JSR SETVBV FAT LDA #$3F ;Wide screen DMA STA SDMCTL BNE RESETME ;Always ; ; PROGRAM LOOP ; LOOP LDA RESET ;Reset flag? BEQ SPCLKEYS ;No, check consol BNE RESETME ;Yes, reset SPCLKEYS LDA CONSOL ;Get consol CMP #$07 ;Any pressed BNE AAAAAC ;Yes, go ahead LDA KONSOL ;No, get former LDX #$00 STX KONSOL ;Clear it SEL1 CMP #$05 ;Select? BNE STA1 JMP SETUP ;Go to title screen STA1 CMP #$06 ;Start? BNE AAAAAB JMP UNPRESS ;Restart game AAAAAC STA KONSOL ;Save Console in former AAAAAB LDA NEWLEV ;Check for new level BEQ LOOP JMP INIT ;Start new level ; RESETME JSR BEAMOFF ;No beam JSR SILENT ;No sound LDA #$30 ;Init my positions STA VPOSME LDA #$7E STA HPOSME JSR CLRME ;Erase me LDA EXPLOSION ;See if I exploded BEQ RS232 ;No? skip this SUBTRACT DEC SHIPS ;Another on bites the dust LDA SHIPS ;Any left? CMP #$10 BNE RS232 ;Yes skip this LDX #$12 ;Game over message and flag JSR DLPRINT LDA #$FF STA G.O RS232 LDA #$57 ;Reset all variables STA RADSMTR LDA #$98 STA FUELMTR LDA #$7D STA SKY LDA #$6C STA PCOLR0+1 LDA #$95 STA PCOLR0 JSR FLAGS ;Reset landed flags STA POWNTER STA EXPLOSION STA GRAVITY STA EMPTY STA ROAR STA ETC. STA RESET STA COMPLETED LDA #$FF ;Fill 'er up STA FUEL LDA #$01 STA FLIP STA NEWSC ;Flag new score LDA LEVEL ;Get right ATASCII value CLC ; for displaying level ADC #$C0 STA PLEVEL LDA LEVEL ;Find multiplier CMP #$19 ;If level<9 then BNE ONEDIGIT ;Mult. <10 LDA #$D1 ;Mult must be 10 STA PMULT ;Show "1" LDA #$D0 STA PMULT+1 ;Show "0" BNE THX1138 ;Always ONEDIGIT CLC ;Mult. = level+1 ADC #$C1 ;+$C0 for correct ATASCII STA PMULT+1 LDA #$D0 STA PMULT ;" " in second digit THX1138 LDA G.O ;See if game over BNE NEO LDX #$06 ;Yes, show message JSR DLPRINT LDA #$00 STA WAITING LDA #$FF ;Permanent pause STA PAUSED LDA #$B4 STA WAITCNTR NEO JSR SHOW ;Show me JMP LOOP ;Back to main ; ; SUBROUTINE LIBRARY ; ; routine to find score ; MATH LDY MULTIPLY ;# of iterations CLD STEP LDX DIGIT ;Digit to operate on ADDNUM LDA SCORE,X ;Current val CLC ADC #$01 ;+1 for each iteration CMP #$1A ;Over 10? BCS NEXTPLACE ;Yes, next digit FIN STA SCORE,X ;New val DEY ;Next BNE STEP ;Another iteration LDA #$FF STA NEWSC ;Flag score RTS ;Done! NEXTPLACE CLC ;Sub 9 from val SBC #$09 STA SCORE,X ;Save DEX ;Next higher digit BPL ADDNUM ;Always EGG JMP LOOP ;Easter egg could go here ; ;Routine to clear me form PM table ; CLRME LDA #>PLAYER0 LDY #<PLAYER0 LDX #$02 JSR CLEER RTS ; ; PM register clear routine ; INITPM LDX #$11 ;17 registers INITP LDA #$00 ;Entry point if other than 17 IPM STA HPOSP0,X DEX BPL IPM RTS ; ; Routine for color attracting ; MIXUP EOR COLRSH AND DRKMSK RTS ; ; Routint to initialize color tables ; OLDC LDX #$77 SETCOLR LDA COLTAB,X ;Orig color STA ACOLTAB,X ;Attract table STA DCOLTAB,X ;Display table CPX #$46 BEQ CHANGE ;Test to see if color in question CPX #$2E BEQ CHANGE ; is a planet color CPX #$16 BEQ CHANGE ; and alter it DEX BPL SETCOLR ;Done? RTS ;Return CHANGE LDY #$0A ;Change next 11 SILLY LDA PAINT ;Get mask AND #$0F ;Make lower bits high ASL A ASL A ASL A ASL A EOR PAINT ;Scramble it ASL A ;Scramble more AND #$F7 ;Mask high intensity EOR COLTAB,X ;Use it to scramble colors STA ACOLTAB,X STA DCOLTAB,X DEX DEY BPL SILLY ;All done? BMI SETCOLR ;NO, go back ; ; Routine to set my PM shape pointers ; SETSHAPE LDA #<SHAPE1A ;Player 0 STA SHAPEA LDA #>SHAPE1A STA SHAPEA+1 LDA #<SHAPE1B ;Player 1 STA SHAPEB LDA #>SHAPE1B STA SHAPEB+1 RTS ; ; Routine to put flames on ship ; BURN LDA RANDOM ;Bits for top and bottom AND #$18 ;Flames here PUT PHA ;Entry point from side routine ORA PLAYER0,X ;"OR" into player 0 STA PLAYER0,X PLA ORA PLAYER1,X ;Ditto STA PLAYER1,X INC FUELUSE ;Rockets use fuel INC FUELUSE RTS ; BURN1 LDA RANDOM ;Bits for side flames LDY FD ;Mov.ng left or right CPY #$01 BNE RF ;Right. skip this AND #$03 ;Mask bits JMP PUT ;Show them RF AND #$C0 ;Mask bits JMP PUT ;Show them ; ; Routine to show me ; SHOW LDA HPOSME ;Set horiz. regs. STA HPOSP0 STA HPOSP1 CLC ADC #$03 ;+3 for beam horiz. STA HPOSM0+2 LDX VPOSME ;My vert DEX LDA #$00 STA PLAYER0,X ;Erase flames above STA PLAYER1,X INX LDY #$00 LPRINT LDA (SHAPEA),Y ;Move shape data STA PLAYER0,X LDA (SHAPEB),Y ;For both players STA PLAYER1,X INX INY CPY #$0C ;12 bytes? BNE LPRINT LDA NEWSC ;See if score updated BEQ AAAAAD ;No, skip this LDX #$07 ;Yes, Put score in screen mem RMK LDA SCORE,X STA SCOREBOARD,X DEX BPL RMK LDA #$00 ;Clear flag STA NEWSC AAAAAD RTS ;Return ; ; Routine to display messages ; by altering Display list ; DLPRINT LDY #$00 ;Counter LLLLLL LDA DLTABL,X ;New DL val STA DLIST+40,Y ;Store INX INY CPY #$06 ;6 vals altered BNE LLLLLL ;No, do,it again RTS ; ; Routine to clear satellites form PM table ; CSAT LDA #$00 LDX #$19 ;Zero 64 bytes RUB STA PMSATS-10,X DEX BPL RUB RTS ; ; General purpose clearing routine ; CLEER STA ZEROPA+1 ;Save high byte STY ZEROPA ;Save low byte LDA #$00 ;X reg. is # of pages TAY CLEAN STA (ZEROPA),Y ;Clear INY BNE CLEAN INC ZEROPA+1 DEX BNE CLEAN ;Do until done RTS ; ; Routine to mirror bits in a byte ; MYRNA STA HOLDA ;Entry point for random mirror JSR R01 BNE RET ;Don't mirror LDA HOLDA MIRROR STA HOLDA ;Entry point for mirror always STX HOLDX ;Save x LDX #$07 ;8 bits MM ROL A ;Rotate bit in carry ROR HOLDA ;Rotate out reverse DEX BPL MM ;Do all 8 LDX HOLDX ;Restore X & A RET LDA HOLDA RTS ;Done! ; ; Routine to turn off sound ; SILENT LDA #$00 ;No explanation needed LDX #$07 HUH STA AUDC1,X DEX BPL HUH RTS ; ; Routine to get actual level ; GETLEV LDA LEVEL AND #$0F RTS ; ; Routine to erase beam ; BEAMOFF LDX VPOSME ;Beam starts at me+2 INX INX LDY #$23 ;Erase this much OFFLOOP LDA #$CF AND MISSLES,X STA MISSLES,X DEX DEY BNE OFFLOOP ;Do it all LDA #$00 ;Clear all beam flags STA BEAMFLG STA BEAMDLAY STA BEAMPOS STA LOADED STA AUDC4 JSR SETSHAPE ;Set original shape RTS ; ; Random number routines ; R01 LDA RANDOM AND #$01 RTS R07 LDA RANDOM AND #$07 RTS R16 LDA RANDOM AND #$0F RTS ; ; Landing flag clearing routine ; FLAGS LDA #$00 STA LANDFLAG STA ACCOUNT STA ANIPTR STA ANIMATE RTS ; ; DISPLAY LIST INTERRUPT ROUTINE ; FOR GAME SCREEN ; DLI PHA ;Save 6502 regs. TXA PHA LDX LINENO ;Current mode line STA WSYNC LDA DCOLTAB+96,X ;Background color STA COLPF0+4 LDA CURR,X ;Current HSCROL val STA HSCROL STA WSYNC LDA DCOLTAB+24,X ;Color1 STA COLPF0+1 LDA DCOLTAB+48,X ;Color2 STA COLPF0+2 LDA DCOLTAB+72,X ;Color3 STA COLPF0+3 LDA DCOLTAB,X ;Color0 STA COLPF0 LDA MPOS,X ;Stars on this line? BEQ NOSTAR ;No? skip this STA WSYNC STA HPOSM0+3 ;Horiz. pos. of star LDA MPOS,X ;Find pos. of star next line CLC ADC OFFSET,X STA WSYNC ;Wait for next line NOSTAR STA HPOSM0+3 ;Save pos for it INC LINENO LDA PRITAB,X ;Set priority this line STA WSYNC STA PRIOR CPX #$02 ;Is it line #2? BNE NADA ;No, skip LDA M2PF ;Hold collisions for line STA MISS NADA CPX #$0B ;Line 11 yet? BNE NAY ;No, skip LDA SATCOLR ;Change color for sats JSR MIXUP ;Attract them first STA COLPM0+3 NAY PLA ;Restore 6502 TAX PLA RTI ; ; DISPLAY LIST INTERRUPT ROUTINE ; FOR TITLE SCREEN ; DLI1 PHA ;Save LDA #$36 ;Red JSR MIXUP ;Attract STA COLPF0 ;Color0 PLA ;Restore RTI ; ; KEYBOARD INTERRUPT ROUTINE ; INKEY LDA KBCODE ;Key code (A saved by OS) STA CH ;Save PLA ;Restore RTI ; ; COMMON LABELS ; ACOLTAB = $3EC8 BITS = $46D8 CANISTERS = $3BB7 CHARS = $4000 COLCKS = $3E08 COLTAB = $3E50 CURR = $3DF0 DCOLTAB = $3F40 DLIST = $3D30 DLIST1 = $3D88 DLTABL = $3D70 LEVEL = $3CC9 LIMIT = $3DD8 MPOS = $3E20 OFFSET = $3E38 PAINT = $4761 PLEVEL = $3CDF PMULT = $3CF9 PRITAB = $4709 SCORE = $4757 SCRLST = $3DA8 SHAPE1A = $4400 SHAPE1B = $440C SHIPS = $3BDA SLEVEL = $475F TITLE = $3BE0 TOTAL = $4760 VBLANK = $261E .END
; ROCKS! VERTICAL BLANK ; ROUTINE AND DATA TABLES ; By: Douglas Engel ; ; OS EQUATES ; ATRACT = $4D AUDC1 = $D201 AUDC2 = $D203 AUDC3 = $D205 AUDC4 = $D207 AUDCTL = $D208 AUDF1 = $D200 AUDF2 = $D202 AUDF3 = $D204 AUDF4 = $D206 CH = $02FC HITCLR = $D01E HPOSP0 = $D000 HPOSP1 = $D001 HPOSP2 = $D002 HPOSP3 = $D003 HPOSM0 = $D004 M2PF = $D002 M2PL = $D00A P0PF = $D004 P0PL = $D00C P1PF = $D005 P1PL = $D00D P3PL = $D00F PCOLR0 = $02C0 PRIOR = $D01B RANDOM = $D20A RUNAD = $02E0 SIZEP0 = $D008 STICK0 = $0278 STRIG0 = $0284 XITVBV = $E462 ; ;COMMON LABELS AND VARIABLES ;SEE PART 1 FOR DESCRIPTIONS ; ACCOUNT = $5000 ALT = $5001 ANIMATE = $5002 ANIPTR = $5003 BEAMDLAY = $5004 BEAMFLG = $5005 BEAMOFF = $2555 BEAMPOS = $5006 BLEEP = $5007 BLINK = $5008 BLINK1 = $5009 BURN = $2485 BURN1 = $249F CLRME = $241F COMPLETED = $500A COWNTER = $500B CSAT = $2506 DIGIT = $500C DLPRINT = $24F7 DOOM = $500D EMPTY = $500E ENDCNTR = $500F ETC. = $5010 EXPLOSION = $5011 FD = $5012 FLAGS = $258F FLASHME = $5013 FLIP = $5014 FUEL = $5015 FUELMTR = $5016 FUELUSE = $5017 GETLEV = $254F GRAVITY = $5018 G.O = $5019 HOLDA = $501A HOLDX = $501B HPOSME = $501C HPOSSAT = $501D INITP = $242B KONSOL = $501E LANDFLAG = $501F LINENO = $CA LOADED = $5020 MATH = $23F6 MIRROR = $252E MIXUP = $2434 MISS = $5021 MISSLES = PMTABL+768 MULTIPLY = $5022 MYRNA = $2523 NEWLEV = $5023 NEWSC = $5024 OLDC = $2439 PAUSED = $5025 PLAYER0 = PMTABL+1024 PLAYER1 = PMTABL+1280 PMSATS = PMTABL+1918 PMTABL = $5000 PMZAP = PMSATS-180 POWNTER = $5026 PUT = $248A R01 = $257D R07 = $2583 R16 = $2589 RADCOUNT = $5027 RADS = $5028 RADSMTR = $5029 RAND1 = $502A RESETFLAG = $502B ROAR = $502C SAT? = $502D SATCNT = $502E SATCNT1 = $502F SATCOLR = $5030 SATDIR = $5031 SATEXP = $5032 SATFRAME = $5033 SATSPD = $5034 SHAPEA = $E0 SHAPEB = $E2 SHOW = $24B3 SILENT = $2544 SKY = $5035 STARCNT = $5036 START = $2000 STROBE = $5037 SUPER = $5038 UNPRESS = $210F VELOCITY = $503B VOL = $503C VOL4 = $503D VPOSME = $503E WAITCNTR = $503F WAITING = $5040 ZAPCNT = $5041 ZAPFLAG = $5042 ; *= $261E ;Byte after Part 1 ; ; VERTICAL BLANK ROUTINE ; VBLANK LDA RESETFLAG ;Skip most during reset BEQ READY JMP TESTCH READY LDA #$00 STA LINENO ;Point to !st line STA FD ;Clear LDA PAUSED ;Skip most if paused BEQ FIN? JMP TESTCH FIN? LDA G.O ;Skip ahead if not over BEQ DOOMSDAY LDA STRIG0 ;Trigger restarts BNE BUSY PLA ;This breaks out of routine, PLA ; so, pull ret. addr. JMP UNPRESS ; and jump back BUSY JMP CLRCH ; ; Planet destruction routine ; DOOMSDAY LDA DOOM ;Test for doom BNE QW JMP MOVEMENT ;No, skip this QW INC ENDCNTR ;Count LDA ENDCNTR ;Test and branch to CMP #$38 ; appropriate part of explosion BCC PY0 CMP #$E0 ;Maximum val? BCC PY1 ;No, skip LDX #$12 ;Set game over flags STX G.O JSR DLPRINT ;Print message JSR SILENT ;Sound off JMP TESTCH ;Skip rest PY0 LDX #$03 ;0 all HPOS regs. JSR INITP LDX #$0C ;Increment sky colors G LDA ACOLTAB+96,X CLC ADC #$01 AND #$0F ;Make them only blue ORA #$70 STA ACOLTAB+96,X STA DCOLTAB+96,X STA AUDF1 ;Use val for sounds ADC #$20 STA AUDF2 LDA #$CF ;Set audio control STA AUDC1 STA AUDC2 INX CPX #$13 ;Do all sky lines BNE G JMP TESTCH PY1 LDX #$77 ;Flash all colors G1 LDA RAND1 ;Random mask AND #$0F ;Only intensity bits EOR ACOLTAB,X STA ACOLTAB,X STA DCOLTAB,X LDA #$0F ;Audio controls STA AUDC1 STA AUDC2 LDA #$8F STA AUDC3 STA AUDC4 LDA ENDCNTR ;Use counter for freq. STA AUDF1 ASL A ;Freq *2 STA AUDF2 ASL A ;Freq *2 STA AUDF3 EOR #$FF ;Inverse STA AUDF4 ;Use as freq. DEX BPL G1 ;Do all colors JMP TESTCH ;Skip ahead ; ; Scrolling routine ; MOVEMENT LDX #$17 ;Scrolling 24 lines SCROLL LDA SCRLST,X ;Direction BEQ NXTLIN ;0?, don't LDA COUNT,X ;Speed counter CMP LIMIT,X ;Is it max? BCC INCCNT ;No, skip LDA #$00 STA COUNT,X ;0 count LDA SCRLST,X ;Check dir. CMP #$02 BEQ RIGHT LEFT LDA #$03 ;Find #of color clocks SEC SBC COLCKS,X STA CURR,X ;Put in table INC COLCKS,X LDA COLCKS,X ;See if too many CMP #$04 BNE NXTLIN STA CURR,X ;Reset table LDA #$00 STA COLCKS,X STX HOLDX LDA POINTR,X ;Find DL byte to change TAX INC DLIST,X ;Change LDX HOLDX JMP NXTLIN ;Next line RIGHT INC COLCKS,X ;Next color clock LDA COLCKS,X ;Update table STA CURR,X CMP #$04 ;See if too many BNE NXTLIN LDA #$00 ;Reset table STA CURR,X STA COLCKS,X STX HOLDX LDA POINTR,X ;DL byte to alter TAX DEC DLIST,X ;Alter LDX HOLDX JMP NXTLIN ;Next INCCNT INC COUNT,X ;Inc. counter NXTLIN DEX ;Do rest of lines BPL SCROLL SKYLON INC STARCNT ;Star counter LDA STARCNT ;Test max. CMP #$80 BNE FLASH ;Not yet, skip LDX #$0A TIME DEC MPOS,X ;Change star pos. DEX BPL TIME ;Do all lines INX STX STARCNT ; ; Light flashing routines ; FLASH INC STROBE ;Light counter LDA STROBE CMP #$1C ;Branch at each of these BEQ YES1 CMP #$1E BEQ NO1 CMP #$3A BEQ YES CMP #$3C BEQ NO BNE RUNING ;None of them, skip YES1 LDA #$0D ;On, alter char STA CHARS+641 BNE MOVEME NO1 LDA #$05 ;Off alter char STA CHARS+641 BNE MOVEME YES LDA #$0D ;On, alter these STA CHARS+646 LDA #$B8 STA CHARS+677 BNE MOVEME NO LDA #$05 ;Off, alter these STA CHARS+646 LDA #$A8 STA CHARS+677 LDA #$00 STA STROBE RUNING INC BLINK ;Other light counter LDA BLINK ;Branch at right vals. CMP #$28 BEQ OFF CMP #$3C BEQ ON BNE BASE OFF LDA #$02 ;Off, dark color STA DCOLTAB+49 STA DCOLTAB+50 BNE MOVEME ON LDA #$28 ;On, light color STA DCOLTAB+49 STA DCOLTAB+50 LDA #$00 STA BLINK ;Clear count BASE INC BLINK1 ;Base light counter LDA BLINK1 ;Branch at these CMP #$38 BEQ DARK CMP #$48 BEQ LIGHT BNE MOVEME DARK LDA #$7F ;Off, alter chars STA CHARS+1012 LDA #$F7 STA CHARS+970 STA CHARS+974 BNE MOVEME LIGHT LDA #$3F ;On, alter chars STA CHARS+1012 LDA #$F3 STA CHARS+970 STA CHARS+974 LDA #$00 STA BLINK1 ; ; Movement within atmosphere routine ; MOVEME LDA EXPLOSION ;Skip if exploding BEQ LUKE JMP SPOCK LUKE LDA LANDFLAG ;Skip if landed BNE LANDED LDA VPOSME ;Ground level? CMP #$C0 BNE ABOVE JMP GROUND ABOVE CMP SKY ;In space? BCS RISING JMP SPACE RISING INC GRAVITY ;Inc. count LDA GRAVITY CMP #$0A ;Max val? BNE FALL LDA #$00 ;Yes, clear STA GRAVITY LDA EMPTY ;No fuel, no stick BEQ JOY1 LDA #$FF BNE NOJOY1 ;Always JOY1 LDA STICK0 NOJOY1 EOR FLIP ;Change stick for AND #$01 ;Up or down accel. BNE DECEL ACCEL DEC VELOCITY ;Move faster BNE FALL ;Can't be <1 LDA #$01 STA VELOCITY BNE FALL ;Always DECEL INC VELOCITY ;Move slower LDA VELOCITY CMP #$10 BNE FALL ;At this slow we are LDA #$0F ; reversing direction STA VELOCITY LDA FLIP EOR #$01 ;Flip to reverse dir. STA FLIP FALL LDA VELOCITY ;Counter INC ACCOUNT CMP ACCOUNT BEQ OOOOOH BCS JUMPIT OOOOOH LDA #$00 ;Clear them STA ACCOUNT LDA FLIP ;See if going up or down BEQ DECRE INCRE INC VPOSME ;Move down and jump JUMPIT JMP SLEFT DECRE DEC VPOSME ;Move up and jump JMP SLEFT ; ; Landing routines ; LANDED LDA LOADED ;Landed? Then skip BNE BLASTOFF INC ANIMATE ;Count BNE NOSTK ;Not max LDA #$FF ;Reset count STA ANIMATE LDA STICK0 ;Wait for stick AND #$01 BEQ BLASTOFF JMP PRINT BLASTOFF LDA #$0E ;Set vel. STA VELOCITY STA LOADED ;All loaded JSR FLAGS ;Clear land flags STA FLIP NOSTK LDX ANIPTR ;Find frame val LDA ANITAB,X ;There yet? CMP ANIMATE BEQ NEWFRAME ;Yes JMP PRINT NEWFRAME LDA NOIZE,X ;Get sound vals STA AUDC1 LDA FREQ,X STA AUDF1 CLC LDA SHAPEA ;Point to next frame ADC #$18 STA SHAPEA ;Player0 LDA #$00 ;+ carry ADC SHAPEA+1 STA SHAPEA+1 CLC LDA SHAPEB ;Same, player1 ADC #$18 STA SHAPEB LDA #$00 ADC SHAPEB+1 STA SHAPEB+1 INC ANIPTR ;Counter JMP PRINT GROUND LDA FLIP ;Up, or down motion? BNE FALLING JMP RISING FALLING LDA VELOCITY ;Too fast, we crash CMP #$0B BCC CRASHED LDA LOADED ;Crash if loaded BNE CRASHED LDA HPOSME ;Not on pad, crash CMP #$81 BCS CRASHED LDA #$7C CMP HPOSME BCS CRASHED LDA #$06 ;Landed! set flags STA DIGIT STA LANDFLAG JSR GETLEV ;Give score STA MULTIPLY INC MULTIPLY JSR MATH JMP PRINT CRASHED INC EXPLOSION ;Flag <> 0 JMP PRINT ; ; Movement in space routine ; SPACE LDA #$01 ;In space? reset Vars. STA FLIP LDA #$08 STA VELOCITY ; ;Test joystick for movement in space ; SUP LDA EMPTY ;No fuel, no stick BNE CCC LDA STICK0 ;Up? AND #$01 BEQ MUP SDOWN LDA STICK0 ;Down? AND #$02 BEQ MDOWN SLEFT LDA EMPTY ;Out of fuel? BNE CCC LDA STICK0 ;Left? AND #$04 BEQ MLEFT SRIGHT LDA STICK0 ;Right AND #$08 BEQ MRIGHT CCC JMP PRINT ;No stick, skip MUP DEC VPOSME ;Up. JMP SLEFT ;Test for sideways MDOWN INC VPOSME ;Down JMP SLEFT ;Test for sideways MLEFT DEC HPOSME ;Left LDA #$01 ;Flame direction flag STA FD BNE PRINT MRIGHT INC HPOSME ;Right. LDA #$02 STA FD BNE PRINT PRINT LDA VPOSME ;Test screen bounds CMP #$25 BCS TESTL LDA #$25 STA VPOSME TESTL LDA HPOSME CMP #$26 BCS TESTR LDA #$26 STA HPOSME TESTR LDA #$D1 CMP HPOSME BCS DISPLAY LDA #$D1 STA HPOSME DISPLAY JSR SHOW ;Now we can show ship ; ; Sattelite creation routine ; SPOCK LDA SAT? ;Move sat? BNE SATMOV INC SATCNT ;Delay between sats BEQ T1 JMP NODIFF T1 JSR R01 ;Random # BEQ T2 ;No sat this time JMP NODIFF T2 JSR R01 ;Dir to move BEQ MINMAY LDA #$01 ;Right STA SATDIR BNE SDF1 MINMAY LDA #$FE ;Left STA SATDIR SDF1 JSR R07 ;Speed BEQ SDF1 ;<> 0 STA SATSPD LDA RANDOM ;Color ORA #$08 STA SATCOLR JSR R16 ;Random sat CMP TOTAL ;Based on complete levels BCS THAT BCC THIS THAT LDA TOTAL ;Use this for sat THIS ASL A ;Otherwise Random ASL A ASL A TAX LDY #$00 SATLP LDA ASATS,X ;Move shape to PM STA PMSATS,Y INX INY CPY #$08 BNE SATLP LDA #$00 ;Set flags and counters STA SATCNT1 STA BLEEP STA VOL LDA #$FF STA SAT? JSR R07 ;Is sat super BNE WIMPY ;No, skip LDA #$FF STA SUPER BNE SATMOV ;Always WIMPY LDA #$00 ;Not super STA SUPER ; ; Sattelite movement ; SATMOV INC SATCNT1 ;Count to speed LDA SATCNT1 CMP SATSPD BNE NODIFF LDA SATEXP ;Exploding? skip BNE NSO LDA HPOSSAT ;Sound for sat SEC SBC #$80 ;Louder at mid screen BPL DIV EOR #$FF CLC ADC #$01 DIV STA VOL ;save LDA #$FF ;Sub, since higher # is louder SEC SBC VOL LSR A ;Div to get ony vol bits LSR A LSR A LSR A LSR A STA VOL INC BLEEP ;Beep count LDA BLEEP CMP #$0B ;Beep between $0B & $0C BCC NBL CMP #$0C BCC YBL LDA #$00 STA BLEEP ;Clear BEQ NSO ; Always YBL LDA #$A0 ;Beep sound ORA VOL STA AUDC2 LDA #$10 STA AUDF2 BNE NSO ;Always NBL LDA VOL ;Rocket sound LSR A ORA #$80 STA AUDC2 LDA #$10 STA AUDF2 NSO LDA #$00 STA SATCNT1 ;Clear LDA HPOSSAT CLC ADC SATDIR ;Move STA HPOSSAT STA HPOSP3 BNE NODIFF ;All the way across? LDA #$00 STA SAT? ;Reset STA AUDC2 NODIFF LDA SUPER ;Super? BEQ WIERD ;No skip INC SATCOLR ;Flash color ; ; Fuel and radiation routines ; WIERD INC RADCOUNT ;Counter LDA RADCOUNT CMP #$38 ;Max? BNE THESAME LDA #$00 STA RADCOUNT ;Clear INC RADS ;More rads LDA RADS CMP #$FF ;Too many? BNE THESAME STA DOOM ;End of planet? THESAME LDA RADS ;Enough rads to zap? CMP #$80 BCC TWOMUCH LDA ZAPFLAG ;Zap in progress? BNE TWOMUCH JSR R01 ;Randomly zap ORA RAND1 BNE TWOMUCH RPO LDA RANDOM ;Get random spot CMP #$26 ;Within bounds? BCS R.T BCC RPO R.T CMP #$D1 BCC BATMAN BCS RPO BATMAN STA HPOSP2 ;Use this pos. LDA #$FF STA ZAPFLAG ;Do zap TWOMUCH LDA LANDFLAG ;Landed? skip BNE GUAGES INC FUELUSE ;Use fuel LDA FUELUSE CMP #$71 ;Limit? BCC GUAGES LDA #$00 STA FUELUSE ;Clear DEC FUEL ;Move needle BNE GUAGES ;Fuel left? skip STA AUDC1 ;No sound LDA #$FF STA EMPTY ;Flag empty ; ; Display guages routine ; GUAGES LDA DOOM ;Test doom BEQ R LDA RADSMTR ;Pin the needle CLC ADC #$20 STA HPOSM0 ;Show needle JMP BANGTEST R LDA RADS ;Divide to get needle val LSR A LSR A LSR A CLC ADC RADSMTR ;+ offset STA HPOSM0 TANK LDA EMPTY ;Empty? BEQ F LDX FUELMTR ;Zero needle DEX STX HPOSM0+1 ;Show needle LDA #$00 ;Raise sky so ship falls STA SKY BEQ N F LDA FUEL ;Div. to get needle val LSR A LSR A LSR A CLC ADC FUELMTR ;Add offset STA HPOSM0+1 ; ; Transporter routine ; N LDA LANDFLAG ;Landed? skip BNE XPORTER BUTTON LDA LOADED ;Not loaded? skip BEQ XPORTER LDA EXPLOSION ;Exploding? skip BNE XPORTER LDA STRIG0 ;No button? skip BNE XPORTER LDA #$FF STA BEAMFLG ;Flag beam XPORTER LDA BEAMFLG ;Beaming in progress? BNE ALREADY JMP HITME ALREADY INC BEAMDLAY ;Delay LDA BEAMDLAY CMP #$01 ;Only 1/60 sec BEQ PSPS JMP NOACTION PSPS LDA #$00 STA BEAMDLAY ;Clear LDA M2PL ;Hit a sat? AND #$08 BEQ SORRY ;No, skip INC SATEXP ;Flag <>0 LDA #$05 ;Give points STA DIGIT LDA SUPER BEQ ASDFG DEC DIGIT ASDFG JSR GETLEV ;Based on level STA MULTIPLY INC MULTIPLY JSR MATH JMP NOTSHIP JMPTAB JMP EXTEND ;Jump table SORRY LDA VPOSME CMP #$88 ;If this low, it hit a mountain BCS JMPTAB LDA M2PF ;Hit anything? BEQ JMPTAB LDA MISS ;Was a hit on line 2? BEQ NOTSHIP LDA #$05 ;If it gets here it hit fleet STA DIGIT ; so give score LDA #$01 STA ETC. LDA #$36 STA VOL4 JSR GETLEV ;Based on level STA MULTIPLY INC MULTIPLY JSR MATH LDA RADS ;And decrease rads CLC ADC #$E0 STA RADS BCS MISFITS ;Can't be <0 LDA #$00 STA RADS ;So, make it 0 MISFITS DEC CANISTERS ;1 less can. LDA CANISTERS ;All gone? CMP #$10 BNE NOTSHIP LDA SHIPS ;Level done, so give ship CMP #$19 ;But no more than 9 BEQ ENUF INC SHIPS ENUF LDA LEVEL ;Next level CMP #$19 ;No more than 9 BEQ CMPL INC LEVEL CMPL LDA TOTAL ;Inc total levels CMP #$0F ;Not more than 15 BEQ ZYX INC TOTAL ZYX LDX PAINT ;Next planet color INX CPX #$1A ;Wrap at 10 BNE XYZ LDX #$10 XYZ STX PAINT JSR SILENT ;No sound STA WAITING ;Message delay on LDA #$78 STA COMPLETED ;Flag done STA WAITCNTR ; & wait STA PAUSED ; & pause LDX #$0C JSR DLPRINT ;Print message JMP TESTCH NOTSHIP JSR BEAMOFF ;No valid hit JMP LUMINATE ;Skip EXTEND INC BEAMPOS ;Extend beam LDA #$2A ;Beam sound STA AUDC4 LDA BEAMPOS STA AUDF4 CMP #$20 ;Beam limit? BNE NOACTION JSR BEAMOFF ;Yes, off JMP LUMINATE NOACTION LDX VPOSME ;Draw beam at top+2 INX INX LDA #$CF AND MISSLES,X ;clear end STA MISSLES,X DEX LDY BEAMPOS INY BEAMLOOP LDA #$CF ;Beam mask CPX #$23 ;Hit top of screen BNE NOT2HIGH JSR BEAMOFF ;Yes, off JMP LUMINATE NOT2HIGH AND MISSLES,X ;Clear STA HOLDA ;Save NOTZERO LDA #$30 ;Ok, random beam AND RANDOM BEQ NOTZERO ORA HOLDA STA MISSLES,X ;Draw it DEX DEY BNE BEAMLOOP ;Do all of it LDA #$CF AND MISSLES,X ;Clear end ; ; Ship collision detection ; HITME LDA P0PL ;My collision detection ORA P1PL ;Sats and zaps detect AND #$0C BNE KAPOW ;Yes, explode LDA VPOSME ;If this low, I hit mountain CMP #$80 BCS LUMINATE LDA P1PF ;Rocks and ships detect ORA P0PF BEQ LUMINATE ;No, skip KAPOW INC EXPLOSION ;Flag <>0 LUMINATE JSR R16 ;Random blue Zap & beam ORA #$AB STA PCOLR0+2 ; ; Rocket flames routine ; JETS LDA EXPLOSION ;No jets if exploded BEQ DARTH JMP BANGTEST DARTH LDA LANDFLAG ;No jets if landed BNE NOFL LDA EMPTY ;No fuel, no jets BEQ XVXV JMP BANGTEST XVXV LDA STICK0 ;Stick determines dir. AND #$0F CMP #$0F BEQ NOFL ;No sticks? skip AND #$03 CMP #$02 ;Test for up BEQ UF CMP #$01 ;Test for down BEQ DF BNE SIDES ;Neither, try sides UF LDA VPOSME ;Loc. to put flame CLC ADC #$09 TAX JSR BURN ;Show flame INX JSR BURN JMP SIDES DF LDX VPOSME ;Loc. to put flame INX JSR BURN ;Show flame DEX JSR BURN SIDES LDA FD ;Side flame dir. flag BEQ EFX ;No dir? skip LDA VPOSME ;Location to put flame CLC ADC #$05 TAX JSR BURN1 ;Show it EFX LDA ALT ;Flip 1/30 sec counter EOR #$FF STA ALT BNE MYLT ;Skip every other VBLANK LDA ROAR ;Test rocket sound CMP #$08 ;Not too loud BEQ SO INC ROAR ;Update and sound on SO STA AUDC1 LDA #$18 STA AUDF1 BNE MYLT ;Always NOFL LDA ROAR ;No flames? Quiet sound BEQ MYLT ; until silent DEC ROAR LDA ROAR STA AUDC1 MYLT INC FLASHME ;Light counter LDA FLASHME ;Branch at right time CMP #$40 BNE TBIRD LDA #$00 STA FLASHME ;Reset count BEQ BANGTEST TBIRD CMP #$30 ;Turn off time BCS BANGTEST ;Yes, skip LDY VPOSME ;Pos. of lights INY INY LDA ANIMATE ;Less if landing CMP ANITAB+1 BCS TALL CMP ANITAB BCC TALL INY TALL LDA #$42 ;Light Bit pattern STA PLAYER1,Y ;Turn on ; ; Satellite explosion routines ; BANGTEST LDA SATEXP ;Sat exploding BNE YESSAT JMP NOTASAT ;No, skip YESSAT LDA #$00 STA SUPER ;Turn off supersat LDA #$1F STA SATCOLR ;Yellow explosion JSR CSAT ;Clear sat INC SATFRAME ;Explosion count LDA SATFRAME CMP #$38 ;Branch if less than BCC P1 JSR CSAT ;Explosion done. Clear it LDA #$00 ;Set pos to 0 STA HPOSP3 STA HPOSSAT STA SATEXP ;Clear flags STA SATFRAME STA SAT? STA AUDC2 ;Sound off BEQ NOTASAT ;Always P1 LDA RANDOM ;Make random explosion AND #$18 ;Mask wrong bits TAY LDX #$07 ;8 bytes of data EXPLP1 LDA SATFRAME ;Test counter CMP #$10 BCC SMALLER ;If less do small shape CMP #$28 BCS SMALLER ;If greater, do small LDA #$01 ;If between, make larger STA SIZEP0+3 ;Double width BNE BIGGER ;Branch always SMALLER LDA #$40 ;Get sound in range SBC SATFRAME ; by subtracting from 64 STA AUDF2 ;Set audio LDA #$08 STA AUDC2 LDA #$00 STA SIZEP0+3 ;Make it narrow TINY LDA EXPL1,Y ;Get byte JSR MYRNA ;Random mirror STA PMSATS,X ;Place it INY DEX BPL TINY ;Do 8 BMI NOTASAT ;Always BIGGER LDA #$50 ;Get sound in range SEC ; by subtracting from 80 SBC SATFRAME STA AUDF2 ;Set audio LDA #$0F STA AUDC2 TXA ;Multiply X*2 ASL A TAX ; and put it back LARGER LDA EXPL1,Y ;Get byte JSR MYRNA ;Randomly mirror STA PMSATS-8,X ;Put on 2 lines STA PMSATS-7,X ; for double height INY DEX ;Update twice for double lines DEX BPL LARGER ;Do 16 lines ; ; Zap routine ; NOTASAT LDA ZAPFLAG ;Do a zap? BNE ZZZZT JMP NOZAP ;No, skip ZZZZT INC ZAPCNT ;Counter LDA ZAPCNT ;Test max val. CMP #$6C BNE HUNTER ;No, skip LDA #$00 ;Zap is done, clear STA AUDC3 ; sound STA ZAPCNT ; & flags STA ZAPFLAG STA HPOSP2 ; & pos. TAX ; & clear PM zap area PILL STA PMZAP-$50,X INX CPX #$60 BNE PILL BEQ NOZAP ;Always HUNTER CMP #$36 ;Test branches BCS STRIKE ;>$36, skip LDA #$2A ;Set for noise STA AUDC3 LDA #$50 ;Find freq. SEC SBC ZAPCNT STA HOLDA JSR R16 ;Randomize it EOR HOLDA STA AUDF3 ;Sound it LDA RANDOM ;Make random sparks AND #$0C ;Set pointer TAY LDX #$04 ;4 lines of them SPKLP LDA SPARKS,Y JSR MYRNA ;Randomly mirror STA PMZAP,X INY DEX BNE SPKLP ;Do all 4 BEQ NOZAP ;Always STRIKE LDA ZAPCNT ;Now make bolt SEC SBC #$20 ;Find sound freq. STA AUDF3 LDA #$00 ;Clear remaining sparks STA PMZAP+3 STA PMZAP+4 LDA #$4F STA AUDC3 ;Set audio TAX ;Save X for later routine LDA RANDOM ;Random starting pt. AND #$1F ;Mask bits TAY STRILP LDA BOLTS,Y STA PMZAP-79,X ;Make 4 same lines STA PMZAP-78,X STA PMZAP-77,X STA PMZAP-76,X INY TYA AND #$1F ;Make y wrap at 32 TAY DEX DEX DEX DEX BPL STRILP ;Do 78 lines NOZAP LDA SATEXP ;Sat exploding? BNE SATOK ;Yes, skip LDA P3PL ;Sat zapped? BEQ SATOK INC SATEXP ;Yes, Flag it ; ; Misc. sound routine ; SATOK LDA ETC. ;Test misc sound flag BEQ TE ;0?, skip CMP #$01 ;Branch to right place BNE UE DEC VOL4 ;This is Boing sound decay LDA VOL4 BEQ UE ;Until 0 LSR A LSR A ORA #$40 ;Set distortion STA AUDC4 ;Use it LDA #$20 STA AUDF4 ;This freq. BNE TE ;Always UE LDA #$00 STA ETC. ;Clear flag STA AUDC4 ;Off sound ; ; Ship explosion routine ; TE LDA EXPLOSION ;Test my exp. flag BNE SHABOOM JMP NOATR ;No, Skip SHABOOM INC POWNTER ;Counter LDA #$30 ;Get freq. range CLC ADC POWNTER ; by adding $30 STA AUDF1 LDA POWNTER ;Test branches CMP #$18 BCC OVERLAP CMP #$30 BCS TA JMP ENGULF TA CMP #$50 BCC CATCHUP CMP #$78 ;No branches? BCC SLNT LDA #$FF STA RESETFLAG ;Done? reset me SLNT LDA #$00 ;My sound off STA AUDC1 JMP NOATR OVERLAP JSR SHOW ;Show me LDA #$0A ;Set audio STA AUDC1 LDA RANDOM ;Find rand. expl. data AND #$18 TAY LDX VPOSME ;My position INX LDA #$07 STA COWNTER HINKLEY LDA EXPL1,Y ;Get byte JSR MYRNA ;Random mirror JSR PUT ;"OR" it on me INX INY DEC COWNTER BPL HINKLEY ;Do 8 JMP NOATR CATCHUP JSR CLRME ;Erase LDY #$03 D DEC ROAR ;Fade sound BEQ OW ;Unless 0 DEY BPL D LDA ROAR LSR A LSR A LSR A LSR A STA AUDC1 OW JMP NOATR ENGULF LDA #$0F ;Big explosion sound STA AUDC1 LDA #$00 STA ROAR ;Clear sound fade LDA #$0F ;Bright white expl. STA PCOLR0 STA PCOLR0+1 LDA HPOSME ;Center Plyrs on my horiz. SEC SBC #$04 STA HPOSP0 CLC ADC #$08 STA HPOSP1 LDA #$00 STA COWNTER ;Clear count LSIDE LDA VPOSME ;Draw random left exp. SEC SBC #$04 TAX LDA RANDOM ;Rand byte AND #$30 ;Point to data TAY AUTOMAN LDA EXPME,Y ;Xfer data STA PLAYER0,X INX INY INC COWNTER LDA COWNTER CMP #$10 BNE AUTOMAN ;Do 16 lines RSIDE LDA RANDOM ;Draw right side AND #$30 ;Point to data TAY ORBOTS STX HOLDX ;Save count LDA EXPME,Y ;Get Left side data STA HOLDA JSR MIRROR ;Mirror for right LDX HOLDX ;Get count LDA HOLDA STA PLAYER1,X ;Place byte DEX INY DEC COWNTER LDA COWNTER BNE ORBOTS ;Do 16 lines ; ; Pause routine and cleanup ; NOATR LDA #$00 STA ATRACT ;Attract mode off TESTCH STA HITCLR ;Clr collisions LDA WAITING ;Are we waiting? BNE INCH ;No, skip DEC WAITCNTR ;Count down BNE CLRCH ;Not 0 yet? skip LDA #$B4 ;Reset count to 3 sec STA WAITCNTR STA WAITING ;Flag not waiting LDX #$00 JSR DLPRINT ;Erase messages LDA COMPLETED ;Level done? BEQ NNLEV ;No, skip LDA #$00 ;Flag wait STA WAITING LDA #$FF STA NEWLEV ;Flag new level BNE INCH ;Always NNLEV LDA #$00 STA PAUSED ;Pause off INCH LDA CH ;Test KB for space bar CMP #$21 BNE CLRCH ;No? skip JSR SILENT ;Sound off LDA PAUSED ;Toggle pause EOR #$FF STA PAUSED BNE CLRCH ;Pause on? skip LDX #$77 JSR OLDC ; restore colors CLRCH LDA #$FF STA CH ;Reset KB shadow LDA RANDOM STA RAND1 ;Set constant random # ATR LDA PAUSED ;If paused... ORA G.O ; or game over... BEQ EXIT LDX #$77 ; do attracting AC LDA ACOLTAB,X JSR MIXUP STA DCOLTAB,X DEX BPL AC EXIT JMP XITVBV ;End or routine ; ; PROGRAM DATA TABLES ; ; ; Mountain range data ; *= $3A00 .SBYTE +$40,"_______________5:<9___________________7;<8______" .SBYTE +$40,"________5;<8_7;>@BB<879____5;<9_____6:>@BD<86;<9" .SBYTE +$40,"<95:<86;?@BAEF=>@DAIJ?C<96:>@DC<8_5:?>?@ACIJ=@BB" .SBYTE +$40,"IJ=@IJ>?=@ADCBGH@IJ>=>BIJ=?@@ACBAEF==?@@IJ>?>@AC" .SBYTE +$40,"KKLKKLLLKLMNONOMLLKLKLNKLLKKLMONOOMKLLKLKLLKKLMO" .SBYTE +$40,"PRQRPQRPRRQRPRPRPRQRPQRPQRPRQPQPRPRPQRPRQRPRPRRP" .SBYTE +$40,"STUST]STSTUTSUS]SUSTUSTS^^SUTU]TTSUTUTTTUS]SSTU]" .SBYTE +$40,"]WX]V]]V]]]WX]]]XV]X]]YZ[\Y]]]X]]]]]]V]]]]W]]]]]" .SBYTE +$40,"]]]]]]]]]]]]]]]]]]]]]]]]^^]]]]]]]]]]]]]]]]]]]]]]" BOT .SBYTE " C:0 RADS'!#$#%#$#& FUEL'!#$#%#$#& P:0 " CANISTERS = *-$29 ;# canisters left SHIPS = *-$06 ;# ships left ; ; Title screen text ; TITLE *= *+$C8 .SBYTE +$C0," BY DOUGLAS ENGEL " .SBYTE " LEVEL: 0 " LEVEL = *-$07 ; ; Message text ; LEVLLINE .SBYTE +$C0," LEVEL: 0 " PLEVEL = *-$09 MULTLINE .SBYTE +$C0," MULTIPLIER: 00 " PMULT = *-$07 MESSLINE .SBYTE +$C0," GAME OVER " COMPLINE .SBYTE +$C0," LEVEL COMPLETED " ; ; Game display list ; DLIST .BYTE $B0,$70,$70,$D6,$00,$30,$10,$D4,$00,$31 .BYTE $D4,$80,$30,$D4,$80,$30,$D4,$40,$37,$D4 .BYTE $C0,$35,$D4,$40,$33,$D4,$C0,$35,$D4,$40 .BYTE $33,$D4,$C0,$37,$D4,$00,$35,$D4,$80,$30 .BYTE $D4,$80,$30,$D4,$80,$30,$D4,$00,$3A .BYTE $84,$84,$84,$84,$84,$84,$84,$84 .BYTE $20,$52,<BOT,>BOT,$41,<DLIST,>DLIST ; ; Alternate DL lines for messages ; DLTABL .BYTE $D4,$80,$80,$D4,$80,$80 .BYTE $D6,<LEVLLINE,>LEVLLINE,$D6,<MULTLINE,>MULTLINE .BYTE $D6,<COMPLINE,>COMPLINE,$D4,$80,$30 .BYTE $D6,<MESSLINE,>MESSLINE,$D4,$80,$30 ; ; Title screen display list ; DLIST1 .BYTE $70,$70,$70,$70,$70,$44,<TITLE,>TITLE,$04,$04,$04,$04,$70,$86 .BYTE $70,$70,$70,$70,$70,$06,$70,$70,$70,$70,$70,$70,$70,$70,$70 .BYTE $41,<DLIST1,>DLIST1 ; ; Scroll tables ; SCRLST *= *+24 ;Direction COUNT *= *+24 ;Speed counter LIMIT *= *+24 ;Maximum count CURR *= *+24 ;Current HSCROL value COLCKS *= *+24 ;Scrolled color clocks MPOS *= *+24 ;Star missile positions OFFSET *= *+24 ;Offset between stars ; ; COLOR TABLES ; ; ;Actual colors ; COLTAB .BYTE $CA,$A4,$A4,$02,$02,$02,$02,$02,$02,$02,$02,$02 .BYTE $32,$32,$32,$32,$32,$32,$32,$32,$32,$32,$32,$02 .BYTE $24,$A2,$A2,$04,$04,$04,$04,$04,$04,$04,$04,$04 .BYTE $04,$34,$34,$34,$34,$34,$34,$34,$34,$34,$34,$0A .BYTE $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06 .BYTE $06,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$50 .BYTE $40,$8E,$8E,$40,$40,$40,$40,$40,$40,$40,$40,$40 .BYTE $48,$48,$40,$40,$40,$40,$40,$40,$40,$40,$8F,$8F .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .BYTE $80,$82,$84,$86,$88,$8A,$8C,$8E,$1E,$1E,$1E,$50 ; ACOLTAB *= *+120 ;Attracted table ; DCOLTAB *= *+120 ;Displayed table ; ; Character set data ; *= $4000 ;First 8 chars CHARS .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$C0,$C0,$C0,$CC,$FF .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$CC,$FF .BYTE $00,$00,$00,$00,$C0,$C0,$CC,$FF,$00,$00,$00,$C0,$C0,$C0,$CC,$FF .BYTE $00,$0C,$DE,$CC,$C0,$C0,$C0,$C0,$00,$00,$1E,$00,$00,$00,$00,$00 *= CHARS+$0200 ;Last 64 chars .BYTE $00,$03,$0F,$2F,$3B,$3B,$2F,$05,$00,$40,$90,$A4,$E4,$E4,$90,$40 .BYTE $00,$0F,$3B,$1F,$3E,$3B,$3D,$0F,$00,$54,$E5,$79,$F9,$F9,$E5,$54 .BYTE $00,$0C,$3F,$BE,$EE,$FE,$3E,$0A,$00,$00,$40,$50,$50,$90,$50,$40 .BYTE $00,$14,$E9,$F9,$F9,$E9,$14,$00,$00,$10,$E4,$E4,$E4,$10,$00,$00 .BYTE $00,$00,$20,$E4,$E4,$E4,$20,$00,$00,$28,$F9,$79,$F9,$F9,$B9,$25 .BYTE $00,$F4,$F9,$F9,$A4,$10,$00,$00,$00,$00,$00,$00,$0D,$09,$05,$00 .BYTE $00,$00,$00,$35,$39,$2D,$29,$05,$00,$00,$38,$39,$29,$24,$10,$00 .BYTE $00,$38,$38,$24,$00,$00,$00,$00,$00,$00,$08,$39,$39,$29,$25,$05 .BYTE $00,$05,$05,$00,$00,$05,$05,$00,$C0,$54,$5A,$AA,$AA,$54,$54,$C0 .BYTE $0C,$2A,$AA,$95,$95,$AA,$2A,$0C,$03,$0A,$A9,$A9,$AA,$AA,$0A,$03 .BYTE $00,$80,$60,$58,$A8,$A8,$80,$00,$00,$00,$00,$00,$00,$03,$0E,$3E .BYTE $00,$00,$00,$00,$00,$03,$0F,$3B,$00,$00,$00,$00,$00,$03,$0F,$3D .BYTE $00,$00,$00,$00,$40,$50,$94,$59,$00,$00,$00,$00,$40,$50,$94,$55 .BYTE $00,$03,$0E,$3F,$FE,$FE,$BB,$EE,$00,$03,$0F,$3D,$FF,$F7,$BF,$FE .BYTE $40,$50,$94,$55,$55,$59,$95,$56,$BE,$EB,$BE,$EA,$BE,$BB,$EE,$BB .BYTE $FE,$FF,$FE,$EE,$BB,$EA,$EE,$AA,$FE,$FB,$DE,$EE,$BB,$FA,$EE,$BA .BYTE $BA,$FA,$BE,$FA,$EB,$EE,$FB,$AE,$99,$A5,$A5,$A6,$A6,$6A,$99,$9A .BYTE $A6,$99,$A9,$96,$69,$A5,$99,$55,$59,$96,$65,$59,$96,$69,$56,$65 .BYTE $59,$96,$59,$65,$55,$59,$99,$66,$40,$53,$9B,$55,$55,$59,$55,$56 .BYTE $FB,$BA,$FF,$EA,$7E,$5A,$56,$65,$7E,$5F,$97,$59,$55,$59,$95,$65 .BYTE $FA,$EE,$FF,$FE,$7B,$5E,$96,$65,$99,$A9,$95,$65,$95,$97,$5F,$BD .BYTE $59,$97,$5F,$7E,$EF,$FF,$BE,$FF,$FF,$BE,$EF,$FF,$BB,$FF,$BE,$FF .BYTE $FE,$BF,$FB,$BF,$EE,$FF,$FB,$BF,$AA,$BA,$FF,$EE,$FF,$FB,$BF,$FF .BYTE $AA,$AA,$EE,$FF,$FB,$BF,$EF,$FE,$AA,$AA,$FB,$FF,$BF,$FE,$EF,$BB .BYTE $FF,$BB,$FF,$FF,$EE,$FF,$FF,$EF,$FF,$BF,$FF,$FB,$BF,$FF,$FE,$EF .BYTE $BF,$FE,$FF,$FF,$FB,$FF,$EF,$FE,$FF,$FF,$EB,$FF,$FF,$FF,$FA,$FF .BYTE $AF,$FF,$FF,$FF,$FA,$FF,$FF,$FF,$FF,$FF,$FF,$EB,$FF,$FF,$FF,$AF .BYTE $FF,$FF,$EF,$BB,$EF,$FF,$FF,$FF,$FF,$AF,$FF,$FF,$FF,$FB,$EE,$FB .BYTE $FF,$FF,$FB,$FF,$FF,$FF,$EF,$FF,$FF,$FF,$F3,$FF,$FF,$FF,$F3,$FF .BYTE $FF,$FF,$FD,$D5,$D6,$D5,$F5,$FF,$FF,$D5,$59,$59,$AA,$59,$59,$55 .BYTE $FF,$FF,$5F,$55,$A5,$55,$57,$7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .BYTE $FF,$FB,$FF,$FF,$3F,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00 ; ; PLAYER MISSILE BIT MAPS ; ; ;Data for my ship ; SHAPE1A .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$18,$00,$00,$00 SHAPE1B .BYTE $00,$00,$00,$00,$00,$00,$3C,$7E,$42,$42,$E7,$00 .BYTE $00,$00,$24,$7E,$7E,$24,$24,$00,$00,$18,$00,$00 .BYTE $00,$00,$00,$00,$00,$00,$00,$3C,$7E,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$18,$00,$00,$00 .BYTE $00,$00,$00,$00,$00,$00,$3C,$7E,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$00,$00,$00,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$66,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$00,$00,$00,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$00,$00,$18,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$42,$42,$42,$FF,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$00,$18,$18,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$42,$42,$5A,$FF,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$00,$18,$18,$08,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$42,$5A,$5A,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$00,$18,$18,$08,$10,$00 .BYTE $00,$00,$00,$00,$00,$00,$24,$5A,$5A,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$24,$18,$18,$08,$10,$08,$00 .BYTE $00,$00,$00,$00,$00,$00,$3C,$5A,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$24,$3C,$18,$08,$10,$08,$10,$00 .BYTE $00,$00,$00,$00,$00,$18,$3C,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$08,$10,$08,$10,$08,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$08,$10,$08,$10,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$08,$10,$08,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$00,$08,$10,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$00,$00,$08,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$00,$00,$00,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$42,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$00,$00,$00,$00 .BYTE $00,$00,$00,$00,$18,$18,$24,$66,$42,$42,$E7,$00 .BYTE $00,$24,$7E,$7E,$3C,$3C,$00,$00,$18,$00,$00,$00 .BYTE $00,$00,$00,$00,$18,$18,$3C,$7E,$42,$42,$E7,$00 ; ;Sattelite data ; ASATS .BYTE $00,$44,$28,$10,$38,$38,$38,$10,$0E,$CE,$64,$3F,$3F,$64,$CE,$0E .BYTE $36,$49,$1C,$3E,$3E,$1C,$2A,$49,$22,$1C,$1C,$7F,$7F,$08,$08,$14 .BYTE $08,$1C,$1C,$1C,$08,$3E,$08,$14,$00,$FF,$18,$FF,$18,$18,$24,$00 .BYTE $07,$07,$A4,$7F,$A4,$07,$07,$00,$28,$10,$10,$38,$38,$10,$10,$28 .BYTE $00,$00,$3C,$99,$7E,$99,$3C,$00,$10,$54,$38,$7C,$38,$54,$10,$28 .BYTE $00,$00,$1A,$BC,$7F,$BC,$1A,$00,$10,$38,$12,$3C,$3C,$12,$38,$10 .BYTE $10,$10,$7C,$38,$10,$54,$38,$54,$81,$5A,$3C,$66,$66,$3C,$5A,$81 .BYTE $00,$1C,$3E,$55,$3E,$1C,$00,$00,$00,$00,$00,$DB,$7E,$18,$00,$00 ; ;Sattelite explosion data ; EXPL1 .BYTE $00,$24,$08,$18,$48,$02,$10,$00,$00,$42,$28,$34,$10,$44,$00,$10 .BYTE $04,$40,$28,$14,$39,$3C,$50,$02,$80,$25,$1E,$2C,$9A,$21,$48,$02 ; ;Spark data ; SPARKS .BYTE $40,$31,$84,$00,$83,$5A,$00,$04,$44,$84,$41,$12,$82,$2C,$11,$40 ; ;Bolt data ; BOLTS .BYTE $04,$08,$10,$10,$10,$20,$40,$80,$40,$40,$20,$10,$08,$08,$04,$02 .BYTE $02,$04,$08,$10,$10,$08,$04,$04,$02,$01,$01,$02,$04,$08,$08,$04 ; ;My explosion data ; EXPME .BYTE $01,$00,$28,$02,$04,$1F,$26,$0F,$15,$0F,$4B,$05,$13,$00,$42,$00 .BYTE $20,$00,$44,$01,$12,$05,$8B,$1B,$4E,$0B,$06,$23,$00,$00,$01,$00 .BYTE $80,$00,$11,$00,$0A,$05,$1B,$07,$2B,$0D,$27,$0B,$06,$40,$00,$02 .BYTE $00,$0A,$10,$00,$55,$00,$05,$02,$8B,$05,$03,$23,$01,$80,$08,$00 ; ; MISCELLANEOUS DATA TABLES ; ; ;Title screen bitmap ; BITS .BYTE $07,$8E,$39,$27,$A0,$04,$51,$45,$48,$20,$07,$91,$41,$87,$20 .BYTE $04,$51,$45,$40,$80,$04,$4E,$39,$2F,$20 ; ;DL modification pointers ; POINTR .BYTE $04,$08,$0B,$0E,$11,$14,$17,$1A,$1D,$20,$23,$26 .BYTE $29,$2C,$2F,$32,$35,$38,$3B,$3E,$41,$44,$47,$4B ; ;Priority table ; PRITAB .BYTE $22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22 .BYTE $22,$21,$21,$21,$21,$21,$21,$21,$21,$21,$31,$31 ; ;Animation frame pointers ; ANITAB .BYTE $0A,$14,$38,$40,$50,$58,$60,$68,$70 .BYTE $78,$80,$88,$90,$98,$A0,$A8,$C8,$D0 ; ;Frequency table ; FREQ .BYTE $20,$20,$00,$38,$30,$5F,$5D,$5B,$59 .BYTE $58,$58,$59,$5B,$5D,$5F,$30,$38,$00 ; ;Distortion table ; NOIZE .BYTE $88,$80,$00,$48,$48,$28,$28,$28,$28 .BYTE $28,$28,$28,$28,$28,$28,$48,$48,$00 ; ; Other locations ; SCORE .SBYTE "00000000" ;Score in memory SLEVEL .SBYTE "0" ;Starting level TOTAL .BYTE $00 ;Total # levels done PAINT .BYTE $00 ;Planet color mask ; ; *= RUNAD .WORD START .END