A.N.A.L.O.G. ISSUE 69 / FEBRUARY 1989 / PAGE 74
Star Rider is an all-machine-code, 3-D arcade-action space game for any Atari 8-bit computer with a minimum 32K RAM, controlled by a joystick in Port 1.
It is many centuries into our future, and all the countries of the Earth are currently united in an extensive colonization program involving the creation of new civilizations on distant planets. However, the entire program is under threat from the Xylons, a massive alien empire that for years has been trying to gain supremacy of the universe.
It has taken you many years of intense training, but you’ve finally graduated as a Star Rider. Armed with the latest in photon weaponry, your craft orbits one of the colonization planets, and you are all that stands between this planet’s destruction by the Xylons.
To create your copy of Star Rider, type in Listing 1 using the M/L Editor found elsewhere in this issue. Create the game file under the filename STARRIDE.OBJ, or, if you want the program to load automatically, use the filename AUTORUN.SYS.
START: Begin game at Level 1.
1,2,3,4,5: Begin game at Levels 10, 20, 30, 40, 50, respectively.
C: Continue game from previous level.
T: Toggle vertical control.
SPACEBAR: Pause/resume game.
ESC: Abort game.
When you start a game, you will be presented with a cockpit view from your spacecraft. In the viewport you can see the planet surface below with the attacking Xylon crafts appearing from over the horizon. You will also see your photon-gun sights in the viewport. These are controlled by a joystick in Port 1, and photons are fired by hitting the trigger. Note two points: First, the left photon is always fired first, and the right photon is only fired if the left’s already been fired! Second, the vertical control of the sights can be toggled by the T key.
At the bottom of the screen, you can see the control panel displaying your score, shields and the attack wave which you are on. For every Xylon craft which you destroy, five points are added to your score, and your shields are increased by an amount depending upon the attack wave (more for higher waves). Note that your shields cannot increase above 100% . However, if a Xylon craft is not destroyed, and instead shoots past you, deflecfing off your shields, then 4% is deducted from your shields. If your shields fall below 0%, the game ends.
When the game is over, if your score is high enough, you will be able to enter your name on the high-score board. Moving the joystick left and right will move the cursor in the appropriate direction, and moving the joystick up and down will move through the characters. When you have finished entering your name, press the trigger. Note that on subsequent high scores, the previously entered name will appear (in order to save having to enter the same name over again).
Full use is made of the excellent graphics features of the Atari, utilizing player/missile graphics, custom display lists, GTIA modes, display-list interrupts, multiple character sets, load memory scans and so on.
The Xylon ships are drawn in 16-luminance mode, GTIA 9, which gives an excellent metallic effect. Actually, character graphics are used behind GTIA, giving characters of resoludon two by eight in 16 luminances. The scrolling terrain is drawn in high-resolution ANTIC F (animated as part of the DLI), and the control panel is done in ANTIC 2. Players are used for the photons and sights, and a single missile is used for the scrolling stars (in both the game and title screen). The metallic text effects on the control panel and on the title screen are done by altering color register luminances from light to dark. The sound on the title screen uses 15KHz clocking and a high-pass filter in Channel 1. Finally note that no OS routines are used at all.
1000 DATA 255,255,253,31,198,61,76,215,38,0,0,0,0,0,0,0,6598 1010 DATA 0,0,0,0,0,48,243,255,255,0,4 8,60,60,255,255,255,837 1020 DATA 255,0,0,0,12,12,207,207,255, 0,0,0,11,10,138,121,1096 1030 DATA 105,0,12,212,221,228,238,244 ,255,204,201,215,213,231,233,255,814 1040 DATA 249,204,156,125,93,126,158,2 55,159,0,192,77,221,78,238,79,298 1050 DATA 255,0,0,0,176,160,168,151,15 0,89,89,80,96,112,128,144,6748 1060 DATA 153,244,15,4,14,0,0,0,0,247, 245,231,233,221,13,0,6087 1070 DATA 0,127,95,126,158,221,208,0,0 ,79,240,64,224,0,0,0,2795 1080 DATA 0,149,149,5,6,7,8,9,153,0,0, 0,0,12,13,174,6569 1090 DATA 159,0,0,10,187,204,13,238,15 ,0,0,160,187,204,208,238,9713 1100 DATA 240,0,0,0,0,192,208,234,249, 143,126,128,144,160,187,0,9330 1110 DATA 0,255,13,204,11,0,0,0,0,255, 208,204,176,0,0,0,2104 1120 DATA 0,248,231,8,9,10,187,0,0,0,1 3,0,159,128,157,160,2672 1130 DATA 187,204,221,238,255,238,221, 204,0,0,208,0,249,8,217,10,8274 1140 DATA 187,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,1327 1150 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1150 1160 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1160 1170 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1170 1180 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1180 1190 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1190 1200 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1200 1210 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1210 1220 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1220 1230 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1230 1240 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1240 1250 DATA 0,0,0,0,0,0,0,0,0,131,129,13 0,129,129,131,129,3051 1260 DATA 129,130,131,129,130,129,131, 129,131,129,129,130,129,130,131,129,89 05 1270 DATA 131,129,129,129,131,129,129, 129,130,129,131,129,131,130,129,131,89 29 1280 DATA 129,255,255,0,0,3,255,255,25 5,0,0,1,255,255,255,0,9544 1290 DATA 0,1,255,255,255,0,0,1,255,25 5,255,0,0,1,255,255,9929 1300 DATA 255,0,0,1,255,255,255,128,0, 255,252,0,0,15,255,255,610 1310 DATA 254,0,0,7,255,255,254,0,0,1, 255,255,255,0,0,1,5381 1320 DATA 255,255,255,128,0,0,255,255, 255,192,0,0,127,255,255,240,4288 1330 DATA 0,255,224,0,0,127,255,255,24 8,0,0,15,255,255,252,0,176 1340 DATA 0,3,255,255,255,0,0,0,255,25 5,255,192,0,0,63,255,9385 1350 DATA 255,240,0,0,31,255,255,254,0 ,255,0,0,1,255,255,255,1625 1360 DATA 224,0,0,63,255,255,248,0,0,3 ,255,255,255,0,0,0,5587 1370 DATA 255,255,255,224,0,0,31,255,2 55,252,0,0,3,255,255,255,2382 1380 DATA 224,248,0,0,7,255,255,255,12 8,0,0,127,255,255,240,0,651 1390 DATA 0,7,255,255,255,0,0,0,127,25 5,255,240,0,0,7,255,8027 1400 DATA 255,255,0,0,0,255,255,255,25 2,192,0,0,63,255,255,254,3986 1410 DATA 0,0,0,255,255,255,224,0,0,7, 255,255,255,0,0,0,6053 1420 DATA 127,255,255,248,0,0,3,255,25 5,255,192,0,0,31,255,255,1171 1430 DATA 255,0,0,0,255,255,255,248,0, 0,3,255,255,255,192,0,1117 1440 DATA 0,15,255,255,255,0,0,0,63,25 5,255,252,0,0,1,255,7571 1450 DATA 255,255,240,0,0,7,255,255,25 5,0,0,7,255,255,255,224,3475 1460 DATA 0,0,7,255,255,255,128,0,0,15 ,255,255,255,0,0,0,5532 1470 DATA 63,255,255,254,0,0,0,127,255 ,255,252,0,0,0,255,255,362 1480 DATA 255,0,0,31,255,255,255,128,0 ,0,31,255,255,255,0,0,7759 1490 DATA 0,31,255,255,255,0,0,0,31,25 5,255,255,0,0,0,63,4314 1500 DATA 255,255,255,0,0,0,63,255,255 ,0,0,255,255,255,254,0,1561 1510 DATA 0,0,63,255,255,254,0,0,0,31, 255,255,255,0,0,0,5008 1520 DATA 31,255,255,255,128,0,0,15,25 5,255,255,192,0,0,7,255,8745 1530 DATA 255,0,3,255,255,255,248,0,0, 0,255,255,255,252,0,0,63 1540 DATA 0,63,255,255,255,0,0,0,15,25 5,255,255,192,0,0,7,5884 1550 DATA 255,255,255,240,0,0,1,255,25 5,0,31,255,255,255,224,0,2028 1560 DATA 0,1,255,255,255,248,0,0,0,63 ,255,255,255,0,0,0,5920 1570 DATA 15,255,255,255,224,0,0,1,255 ,255,255,252,0,0,0,63,6690 1580 DATA 255,0,127,255,255,255,128,0, 0,7,255,255,255,240,0,0,9547 1590 DATA 0,127,255,255,255,0,0,0,7,25 5,255,255,240,0,0,0,6502 1600 DATA 255,255,255,255,0,0,0,15,255 ,1,255,255,255,254,0,0,9311 1610 DATA 0,15,255,255,255,224,0,0,0,1 27,255,255,255,0,0,0,6494 1620 DATA 7,255,255,255,248,0,0,0,63,2 55,255,255,192,0,0,1,6656 1630 DATA 255,15,255,255,255,248,0,0,0 ,63,255,255,255,192,0,0,8961 1640 DATA 0,255,255,255,255,0,0,0,3,25 5,255,255,252,0,0,0,6928 1650 DATA 31,255,255,255,240,0,0,0,127 ,63,255,255,255,224,0,0,9265 1660 DATA 0,127,255,255,255,128,0,0,0, 255,255,255,255,0,0,0,7472 1670 DATA 3,255,255,255,254,0,0,0,7,25 5,255,255,248,0,0,0,6940 1680 DATA 15,255,255,255,255,192,0,0,0 ,255,255,255,255,128,0,0,9939 1690 DATA 1,255,255,255,255,0,0,0,1,25 5,255,255,254,0,0,0,6987 1700 DATA 3,255,255,255,254,0,0,0,3,25 5,255,255,255,0,0,0,7025 1710 DATA 3,255,255,255,255,0,0,0,1,25 5,255,255,255,0,0,0,7022 1720 DATA 1,255,255,255,255,0,0,0,1,25 5,255,255,255,128,0,0,8822 1730 DATA 0,255,255,255,252,0,0,0,7,25 5,255,255,254,0,0,0,7065 1740 DATA 3,255,255,255,255,0,0,0,0,25 5,255,255,255,128,0,0,8835 1750 DATA 0,127,255,255,255,224,0,0,0, 255,255,255,240,0,0,0,7943 1760 DATA 31,255,255,255,252,0,0,0,3,2 55,255,255,255,0,0,0,7103 1770 DATA 0,255,255,255,255,192,0,0,0, 63,255,255,255,248,0,0,9774 1780 DATA 0,255,255,255,192,0,0,0,63,2 55,255,255,248,0,0,0,7241 1790 DATA 7,255,255,255,255,0,0,0,0,12 7,255,255,255,224,0,0,8953 1800 DATA 0,15,255,255,255,254,0,0,0,2 55,255,255,0,0,0,0,4829 1810 DATA 255,255,255,255,240,0,0,0,7, 255,255,255,255,0,0,0,7353 1820 DATA 0,127,255,255,255,240,0,0,0, 7,255,255,255,255,128,0,1314 1830 DATA 0,255,255,252,0,0,0,1,255,25 5,255,255,224,0,0,0,7743 1840 DATA 15,255,255,255,255,0,0,0,0,6 3,255,255,255,248,0,0,8707 1850 DATA 0,1,255,255,255,255,224,0,0, 255,255,240,0,0,0,7,6357 1860 DATA 255,255,255,255,192,0,0,0,15 ,255,255,255,255,0,0,0,7235 1870 DATA 0,63,255,255,255,252,0,0,0,0 ,255,255,255,255,248,0,3038 1880 DATA 0,255,255,192,0,0,0,15,255,2 55,255,255,128,0,0,0,6417 1890 DATA 31,255,255,255,255,0,0,0,0,3 1,255,255,255,254,0,0,8537 1900 DATA 0,0,63,255,255,255,254,0,0,2 55,255,0,0,0,0,63,4055 1910 DATA 255,255,255,255,0,0,0,0,31,2 55,255,255,255,0,0,0,6469 1920 DATA 0,31,255,255,255,255,0,0,0,0 ,31,255,255,255,255,128,2731 1930 DATA 0,255,252,0,0,0,0,127,255,25 5,255,254,0,0,0,0,4910 1940 DATA 63,255,255,255,255,0,0,0,0,1 5,255,255,255,255,128,0,393 1950 DATA 0,0,7,255,255,255,255,224,0, 255,240,0,0,0,0,255,8643 1960 DATA 255,255,255,252,0,0,0,0,63,2 55,255,255,255,0,0,0,6795 1970 DATA 0,15,255,255,255,255,192,0,0 ,0,3,255,255,255,255,248,5705 1980 DATA 0,255,192,0,0,0,3,255,255,25 5,255,248,0,0,0,0,5753 1990 DATA 127,255,255,255,255,0,0,0,0, 7,255,255,255,255,224,0,1867 2000 DATA 0,0,1,255,255,255,255,254,0, 255,0,0,0,0,7,255,6380 2010 DATA 255,255,255,240,0,0,0,0,127, 255,255,255,255,0,0,0,7373 2020 DATA 0,7,255,255,255,255,240,0,0, 0,0,127,255,255,255,255,4618 2030 DATA 128,252,0,0,0,0,31,255,255,2 55,255,224,0,0,0,0,5257 2040 DATA 255,255,255,255,255,0,0,0,0, 3,255,255,255,255,248,0,2365 2050 DATA 0,0,0,63,255,255,255,255,224 ,48,48,112,240,66,104,41,9560 2060 DATA 66,0,116,2,2,2,2,2,2,2,2,2,2 ,2,2,2,2734 2070 DATA 68,144,33,79,184,33,15,15,15 ,15,15,15,15,15,15,15,5684 2080 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,4120 2090 DATA 15,15,15,15,0,66,144,41,0,2, 2,0,2,65,144,38,7718 2100 DATA 169,90,133,2,169,56,133,3,16 9,2,133,9,169,0,141,68,3504 2110 DATA 2,141,235,0,141,236,0,133,21 2,169,1,141,226,0,169,3,7106 2120 DATA 141,15,210,141,29,208,169,72 ,141,8,2,169,48,141,9,2,2801 2130 DATA 169,64,141,14,210,169,120,14 1,7,212,169,128,141,14,212,169,429 2140 DATA 62,141,0,212,32,120,49,32,9, 52,32,80,48,32,55,40,9261 2150 DATA 169,0,141,0,212,169,144,141, 2,212,169,38,141,3,212,169,9164 2160 DATA 95,141,0,2,169,40,141,1,2,16 9,222,141,19,208,169,60,7121 2170 DATA 141,20,208,169,140,141,21,20 8,32,152,54,162,4,189,10,40,4842 2180 DATA 157,22,208,202,16,247,32,107 ,49,169,0,141,254,0,141,255,9775 2190 DATA 0,141,8,210,162,2,157,208,0, 202,16,250,169,255,141,244,3903 2200 DATA 0,141,249,0,141,230,0,141,23 2,0,169,120,141,242,0,141,9306 2210 DATA 243,0,169,16,141,243,41,141, 244,41,162,4,157,231,41,202,160 2220 DATA 16,250,169,17,141,242,41,169 ,4,141,15,40,32,55,40,169,3688 2230 DATA 62,141,0,212,173,226,0,141,2 27,0,32,43,40,32,61,40,2205 2240 DATA 32,55,40,32,84,43,32,15,46,3 2,61,40,32,55,40,32,7835 2250 DATA 67,40,32,58,44,32,206,46,32, 61,40,32,55,40,32,15,8664 2260 DATA 46,32,177,47,32,183,48,32,61 ,40,32,55,40,32,67,40,9513 2270 DATA 32,58,44,32,206,46,32,61,40, 173,227,0,208,194,32,55,6063 2280 DATA 40,32,18,40,173,226,0,201,25 5,240,169,24,105,1,141,226,379 2290 DATA 0,208,161,0,12,0,70,0,0,68,7 4,162,1,189,254,41,4302 2300 DATA 24,105,1,201,26,240,4,157,25 4,41,96,169,16,157,254,41,8847 2310 DATA 202,16,234,96,162,0,32,18,43 ,232,236,226,0,208,247,96,976 2320 DATA 173,11,212,208,251,96,173,11 ,212,240,251,96,174,15,40,232,2118 2330 DATA 224,5,208,16,173,16,40,72,17 3,17,40,141,16,40,104,141,3512 2340 DATA 17,40,162,1,142,15,40,96,72, 138,72,152,72,162,139,142,6980 2350 DATA 10,212,142,24,208,202,224,13 1,208,245,169,65,162,32,141,10,9964 2360 DATA 212,141,27,208,142,9,212,173 ,111,120,72,162,110,189,0,120,8330 2370 DATA 141,10,212,141,4,208,157,1,1 20,142,18,208,202,208,238,104,2072 2380 DATA 141,1,120,169,0,141,10,212,1 41,4,208,169,1,141,10,212,7325 2390 DATA 141,27,208,162,8,142,10,212, 202,208,250,173,16,40,172,17,8859 2400 DATA 40,141,23,208,140,24,208,174 ,15,40,142,10,212,202,208,250,2236 2410 DATA 141,24,208,140,23,208,162,5, 142,10,212,202,208,250,141,23,1141 2420 DATA 208,140,24,208,162,6,142,10, 212,202,208,250,141,24,208,140,2477 2430 DATA 23,208,162,7,142,10,212,202, 208,250,141,23,208,140,24,208,1804 2440 DATA 162,8,142,10,212,202,208,250 ,174,15,40,224,4,240,14,141,9534 2450 DATA 24,208,140,23,208,142,10,212 ,232,224,4,208,248,169,12,141,1954 2460 DATA 10,212,141,23,208,162,139,16 9,224,141,10,212,142,24,208,141,1384 2470 DATA 9,212,202,142,10,212,142,24, 208,202,224,131,208,245,169,0,3182 2480 DATA 141,10,212,141,23,208,162,20 3,142,10,212,142,24,208,142,10,8890 2490 DATA 212,202,224,195,208,242,169, 12,141,10,212,141,23,208,162,139,1587 2500 DATA 142,10,212,142,24,208,202,22 4,131,208,245,104,168,104,170,104,3496 2510 DATA 64,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,2574 2520 DATA 214,246,233,229,247,240,239, 242,244,194,0,0,0,0,0,0,5261 2530 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,2530 2540 DATA 0,0,0,0,0,214,227,239,238,24 4,242,239,236,128,240,225,9497 2550 DATA 238,229,236,194,0,0,0,0,0,0, 0,0,0,0,0,0,4730 2560 DATA 0,0,0,0,0,0,0,0,51,99,111,11 4,101,0,0,0,7911 2570 DATA 0,0,51,104,105,101,108,100,1 15,0,0,0,0,0,55,97,9238 2580 DATA 118,101,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,2900 2590 DATA 16,16,16,16,16,0,0,0,0,0,0,1 7,16,16,0,5,3546 2600 DATA 0,0,0,0,0,0,0,16,17,0,0,0,0, 0,0,0,2881 2610 DATA 0,0,0,0,0,0,0,0,0,0,48,114,1 11,103,114,97,653 2620 DATA 109,109,101,100,0,34,121,0,4 8,97,117,108,0,44,97,121,2693 2630 DATA 0,0,0,0,0,0,0,0,0,138,72,169 ,0,133,205,165,4407 2640 DATA 241,10,38,205,10,38,205,10,3 8,205,133,206,166,205,134,207,2305 2650 DATA 10,38,205,10,38,205,24,101,2 06,133,204,165,205,101,207,133,2507 2660 DATA 205,165,204,24,101,240,133,2 04,144,2,230,205,165,204,24,105,1758 2670 DATA 0,133,204,165,205,105,116,13 3,205,104,170,96,32,48,42,169,8068 2680 DATA 9,24,109,255,0,160,5,145,204 ,56,233,1,136,16,248,169,9626 2690 DATA 15,24,109,255,0,160,45,145,2 04,56,233,1,136,192,39,208,9875 2700 DATA 246,96,32,48,42,169,19,24,10 9,255,0,160,3,145,204,56,6451 2710 DATA 233,1,136,16,248,169,23,24,1 09,255,0,160,43,145,204,56,8020 2720 DATA 233,1,136,192,39,208,246,96, 32,48,42,169,26,24,109,255,7711 2730 DATA 0,160,2,145,204,56,233,1,136 ,16,248,96,169,0,72,32,5684 2740 DATA 48,42,104,160,5,145,204,136, 16,251,160,45,145,204,136,192,2042 2750 DATA 39,208,249,96,169,0,72,32,48 ,42,104,160,3,145,204,136,7162 2760 DATA 16,251,160,43,145,204,136,19 2,39,208,249,96,169,0,72,32,8478 2770 DATA 48,42,104,160,2,145,204,136, 16,251,96,173,10,210,41,63,7729 2780 DATA 201,35,16,247,157,199,61,169 ,14,157,199,62,169,255,157,199,3780 2790 DATA 63,169,32,157,199,64,173,10, 210,41,127,157,199,65,96,208,431 2800 DATA 3,76,3,43,201,1,208,3,76,235 ,42,76,211,42,208,3,6534 2810 DATA 76,191,42,201,1,208,3,76,153 ,42,76,115,42,162,0,142,5179 2820 DATA 231,0,189,199,64,201,3,48,98 ,41,16,208,29,189,199,64,7341 2830 DATA 41,32,240,15,222,199,65,208, 10,169,0,157,199,64,169,9,7964 2840 DATA 157,199,65,232,236,226,0,208 ,217,96,222,199,65,48,31,169,1147 2850 DATA 23,141,255,0,189,199,61,133, 240,189,199,62,133,241,189,199,5655 2860 DATA 64,41,3,32,69,43,169,0,141,2 55,0,76,122,43,189,199,7867 2870 DATA 61,133,240,189,199,62,133,24 1,189,199,64,41,3,32,54,43,5771 2880 DATA 169,3,157,199,64,206,227,0,7 6,122,43,189,199,61,133,240,1388 2890 DATA 189,199,62,133,241,189,199,6 4,32,54,43,222,199,65,208,29,9485 2900 DATA 169,9,157,199,65,254,199,64, 189,199,64,201,3,48,14,32,6348 2910 DATA 106,47,169,4,141,230,0,32,18 ,43,76,122,43,189,199,62,6048 2920 DATA 24,125,199,63,157,199,62,133 ,241,141,231,0,208,5,169,1,8965 2930 DATA 157,199,63,173,10,210,201,25 ,176,10,189,199,61,240,22,222,1469 2940 DATA 199,61,16,17,173,10,210,201, 25,176,10,189,199,61,201,34,8743 2950 DATA 240,3,254,199,61,189,199,61, 133,240,189,199,64,32,69,43,9141 2960 DATA 76,122,43,173,16,208,208,26, 173,254,0,240,24,169,0,141,9004 2970 DATA 254,0,173,244,0,16,3,76,19,4 5,173,249,0,16,6,76,2486 2980 DATA 137,45,141,254,0,160,15,174, 243,0,169,0,157,0,125,232,8777 2990 DATA 136,16,249,173,0,211,41,15,1 33,204,174,235,0,240,18,162,463 3000 DATA 0,134,239,74,38,239,74,38,23 9,165,204,41,252,5,239,133,2323 3010 DATA 204,70,204,176,9,173,243,0,5 6,233,8,141,243,0,70,204,9541 3020 DATA 176,9,173,243,0,24,105,8,141 ,243,0,70,204,176,9,173,8206 3030 DATA 242,0,56,233,8,141,242,0,70, 204,176,9,173,242,0,24,7687 3040 DATA 105,8,141,242,0,173,242,0,20 1,48,176,7,169,48,141,242,449 3050 DATA 0,16,9,201,201,144,5,169,200 ,141,242,0,173,243,0,201,1908 3060 DATA 40,176,7,169,40,141,243,0,16 ,9,201,177,144,5,169,176,8758 3070 DATA 141,243,0,160,15,174,243,0,1 85,3,45,157,0,125,232,136,8637 3080 DATA 16,246,173,242,0,141,1,208,1 41,208,0,96,0,84,146,146,7795 3090 DATA 16,16,16,238,238,16,16,16,14 6,146,84,0,165,242,56,233,9463 3100 DATA 48,74,74,74,141,245,0,169,17 6,56,229,243,74,74,74,141,284 3110 DATA 246,0,169,8,141,244,0,169,48 ,141,247,0,169,176,141,248,2719 3120 DATA 0,169,4,141,232,0,76,109,45, 173,244,0,16,1,96,160,5639 3130 DATA 15,174,248,0,169,0,157,0,126 ,232,136,16,249,173,247,0,687 3140 DATA 24,109,245,0,141,247,0,173,2 48,0,56,237,246,0,141,248,2661 3150 DATA 0,206,244,0,48,27,160,15,174 ,248,0,185,255,45,45,10,6982 3160 DATA 210,157,0,126,232,136,16,243 ,173,247,0,141,2,208,141,209,2336 3170 DATA 0,96,169,200,56,229,242,74,7 4,74,141,250,0,169,176,56,468 3180 DATA 229,243,74,74,74,141,251,0,1 69,8,141,249,0,169,200,141,1148 3190 DATA 252,0,169,176,141,253,0,169, 4,141,232,0,76,227,45,173,9835 3200 DATA 249,0,16,1,96,160,15,174,253 ,0,169,0,157,0,127,232,8232 3210 DATA 136,16,249,173,252,0,56,237, 250,0,141,252,0,173,253,0,1407 3220 DATA 56,237,251,0,141,253,0,206,2 49,0,48,27,160,15,174,253,415 3230 DATA 0,185,255,45,45,10,210,157,0 ,127,232,136,16,243,173,252,3247 3240 DATA 0,141,3,208,141,210,0,96,24, 60,126,126,126,255,255,255,3923 3250 DATA 255,255,255,126,126,126,60,2 4,32,96,46,32,151,46,32,64,3531 3260 DATA 45,76,182,45,56,233,40,74,74 ,74,141,225,0,173,224,0,8172 3270 DATA 56,233,48,74,74,56,253,199,6 1,24,105,1,48,35,72,189,5475 3280 DATA 199,64,168,104,217,90,46,16, 24,173,225,0,56,253,199,62,9270 3290 DATA 24,105,1,48,12,217,93,46,16, 7,169,8,141,233,0,56,4260 3300 DATA 96,24,96,3,4,6,1,2,2,165,244 ,240,1,96,162,0,4842 3310 DATA 189,199,64,201,3,48,7,232,23 6,226,0,208,243,96,165,247,4911 3320 DATA 133,224,165,248,32,27,46,144 ,20,32,233,46,32,70,47,189,5924 3330 DATA 199,64,9,16,157,199,64,169,8 ,157,199,65,96,76,110,46,6836 3340 DATA 165,249,240,1,96,162,0,189,1 99,64,201,3,48,7,232,236,347 3350 DATA 226,0,208,243,96,165,252,133 ,224,165,253,32,27,46,144,20,9778 3360 DATA 32,233,46,32,70,47,189,199,6 4,9,16,157,199,64,169,8,6543 3370 DATA 157,199,65,96,76,165,46,162, 0,173,10,210,41,3,168,189,7971 3380 DATA 32,32,57,229,46,157,216,32,2 32,224,182,208,236,96,0,15,981 3390 DATA 240,255,173,242,41,201,17,24 0,73,165,226,56,233,1,41,248,2168 3400 DATA 74,74,74,201,4,48,2,169,3,16 8,185,62,47,141,228,0,6813 3410 DATA 185,66,47,141,229,0,173,244, 41,24,109,228,0,201,26,48,7256 3420 DATA 6,238,229,0,56,233,10,141,24 4,41,173,243,41,24,109,229,1058 3430 DATA 0,201,26,48,14,169,17,141,24 2,41,169,16,141,243,41,141,9178 3440 DATA 244,41,96,141,243,41,96,2,5, 0,0,0,0,1,2,160,9416 3450 DATA 4,185,231,41,24,105,5,201,26 ,48,19,56,233,10,153,231,7829 3460 DATA 41,136,48,14,185,231,41,24,1 05,1,201,26,16,237,153,231,9758 3470 DATA 41,96,96,160,2,185,242,41,56 ,233,4,201,16,16,19,24,4164 3480 DATA 105,10,153,242,41,136,48,14, 185,242,41,56,233,1,201,16,8023 3490 DATA 48,237,153,242,41,96,169,16, 141,242,41,141,243,41,141,244,3115 3500 DATA 41,32,196,54,32,74,49,162,3, 169,0,157,64,48,157,68,5200 3510 DATA 48,202,16,247,162,0,154,76,3 3,39,174,230,0,48,27,189,6956 3520 DATA 21,48,141,144,38,189,26,48,1 41,0,210,141,64,48,189,31,6632 3530 DATA 48,141,1,210,141,68,48,206,2 30,0,173,231,0,141,2,210,9909 3540 DATA 141,65,48,141,3,210,141,69,4 8,174,232,0,48,21,189,36,6386 3550 DATA 48,141,4,210,141,66,48,189,4 1,48,141,5,210,141,70,48,6663 3560 DATA 206,232,0,174,233,0,48,21,18 9,46,48,141,6,210,141,67,7181 3570 DATA 48,189,55,48,141,7,210,141,7 1,48,206,233,0,96,48,32,6455 3580 DATA 64,16,80,0,128,176,208,224,0 ,130,132,134,136,0,160,140,9628 3590 DATA 120,48,0,138,140,142,198,0,2 40,230,220,210,200,190,180,170,7376 3600 DATA 0,136,138,140,140,142,142,14 2,140,0,0,0,0,0,0,0,9788 3610 DATA 0,173,9,210,141,234,0,104,64 ,32,120,52,32,6,55,169,4633 3620 DATA 255,133,234,173,31,208,201,6 ,208,4,162,0,240,34,165,234,1902 3630 DATA 201,45,208,11,173,235,0,73,2 55,141,235,0,76,86,48,201,9866 3640 DATA 18,240,30,162,5,221,159,48,2 40,6,202,208,248,76,90,48,1068 3650 DATA 189,165,48,133,226,189,171,4 8,141,255,41,189,177,48,141,254,4380 3660 DATA 41,169,255,133,234,76,74,49, 255,31,30,26,24,29,1,10,2012 3670 DATA 20,30,40,50,17,16,16,16,16,1 6,16,17,18,19,20,21,6311 3680 DATA 165,234,201,28,208,3,76,152, 47,201,45,208,11,165,235,73,404 3690 DATA 255,133,235,169,255,133,234, 96,201,33,208,118,32,74,49,32,8613 3700 DATA 55,40,169,133,141,2,212,169, 49,141,3,212,169,64,141,27,8495 3710 DATA 208,169,224,141,26,208,162,2 ,169,0,157,1,208,202,16,250,1052 3720 DATA 169,255,133,234,169,5,141,8, 210,169,166,141,1,210,141,5,9906 3730 DATA 210,169,128,141,0,210,169,64 ,141,4,210,32,192,49,165,234,1585 3740 DATA 201,33,208,247,32,55,40,169, 144,141,2,212,169,38,141,3,7905 3750 DATA 212,169,1,141,27,208,169,0,1 41,26,208,162,2,189,208,0,8986 3760 DATA 157,1,208,202,16,247,169,255 ,133,234,169,0,141,8,210,32,1139 3770 DATA 85,49,96,162,7,169,0,157,0,2 10,202,16,250,96,162,3,8780 3780 DATA 160,6,189,64,48,153,0,210,18 9,68,48,153,1,210,202,136,517 3790 DATA 136,16,239,96,169,0,133,222, 169,116,133,223,162,4,76,138,941 3800 DATA 54,169,0,133,222,169,104,133 ,223,162,8,76,138,54,112,112,9289 3810 DATA 112,79,0,104,15,15,15,15,15, 15,15,15,15,15,15,15,6386 3820 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,5860 3830 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,5870 3840 DATA 15,15,15,15,15,15,65,133,49, 32,55,40,162,13,189,81,3939 3850 DATA 50,133,237,189,95,50,133,238 ,189,157,50,141,226,49,189,171,3951 3860 DATA 50,141,227,49,138,72,162,0,1 60,0,189,255,255,145,237,165,5444 3870 DATA 237,24,105,40,133,237,144,2, 230,238,232,224,24,208,235,104,5844 3880 DATA 170,202,16,202,162,13,189,66 ,50,157,67,50,202,208,247,166,3305 3890 DATA 236,224,48,208,4,162,0,134,2 36,189,109,50,141,67,50,230,628 3900 DATA 236,162,13,189,67,50,48,17,1 89,81,50,24,125,67,50,157,5536 3910 DATA 81,50,144,20,254,95,50,208,1 5,189,81,50,24,125,67,50,5840 3920 DATA 157,81,50,176,3,222,95,50,20 2,16,216,96,0,0,0,0,3011 3930 DATA 0,0,0,0,0,0,0,0,0,0,61,62,63 ,64,65,66,9091 3940 DATA 67,68,69,70,71,72,73,74,106, 106,106,106,106,106,106,106,7120 3950 DATA 106,106,106,106,106,106,0,0, 0,40,40,40,40,216,216,216,7736 3960 DATA 216,0,0,40,40,40,80,80,120,1 36,176,176,216,216,216,0,1536 3970 DATA 0,0,40,80,120,136,176,216,0, 0,40,40,40,40,40,40,2026 3980 DATA 136,176,216,0,0,0,185,209,23 3,1,25,49,73,97,121,145,7495 3990 DATA 169,193,217,241,50,50,50,51, 51,51,51,51,51,51,51,51,2568 4000 DATA 51,51,0,0,0,0,136,153,170,18 7,204,221,238,255,255,238,8922 4010 DATA 221,204,187,170,153,0,0,0,0, 0,0,0,0,0,136,153,1133 4020 DATA 170,187,0,13,14,0,15,14,13,1 2,187,170,153,0,0,0,1226 4030 DATA 0,0,0,0,0,0,136,153,170,187, 204,13,14,255,255,238,3391 4040 DATA 221,204,187,170,153,0,0,0,0, 0,0,0,0,0,136,153,1163 4050 DATA 170,187,192,13,14,0,15,14,13 ,12,187,170,153,0,0,0,1832 4060 DATA 0,0,0,0,0,0,136,153,170,187, 204,13,14,15,15,14,2877 4070 DATA 13,12,187,170,153,0,0,0,0,0, 0,0,0,0,136,153,601 4080 DATA 170,187,12,13,14,15,15,14,13 ,0,187,170,153,0,0,0,1292 4090 DATA 0,0,0,0,0,0,136,153,170,187, 12,13,14,15,15,14,795 4100 DATA 13,12,187,170,153,0,0,0,0,0, 0,0,0,0,136,153,631 4110 DATA 170,187,0,13,14,0,255,238,22 1,0,187,170,153,0,0,0,6540 4120 DATA 0,0,0,0,0,0,136,153,170,187, 12,221,238,15,15,14,6233 4130 DATA 13,12,187,170,153,0,0,0,0,0, 0,0,0,0,136,153,661 4140 DATA 170,187,0,13,14,0,15,14,13,0 ,187,170,153,0,0,0,1226 4150 DATA 0,0,0,0,0,0,136,153,170,187, 12,221,238,255,255,238,6807 4160 DATA 221,12,187,170,153,0,0,0,0,0 ,0,0,0,0,136,153,899 4170 DATA 170,187,0,13,14,15,15,14,13, 0,187,170,153,0,0,0,1346 4180 DATA 0,0,0,0,0,0,136,153,170,187, 204,13,14,15,15,14,2997 4190 DATA 13,204,187,170,153,0,0,0,0,0 ,0,0,0,0,136,153,1105 4200 DATA 170,187,204,221,238,255,255, 238,221,204,187,170,153,0,0,0,2764 4210 DATA 0,0,169,0,133,222,169,80,133 ,223,162,11,32,138,54,162,9628 4220 DATA 5,189,96,52,133,220,189,102, 52,133,221,189,108,52,133,222,3399 4230 DATA 189,114,52,133,223,138,72,20 1,4,48,4,162,15,16,2,162,4935 4240 DATA 39,160,5,177,220,145,222,136 ,16,249,165,220,24,105,6,133,1023 4250 DATA 220,144,2,230,221,165,222,24 ,105,40,133,222,144,2,230,223,3915 4260 DATA 202,16,222,104,170,202,16,18 5,96,71,55,39,23,7,103,57,4731 4270 DATA 58,59,60,61,61,88,14,20,106, 23,29,80,80,80,80,87,3176 4280 DATA 87,32,74,49,32,55,40,169,201 ,141,2,212,169,52,141,3,7844 4290 DATA 212,169,210,141,0,2,169,53,1 41,1,2,169,208,141,24,208,9348 4300 DATA 169,140,141,25,208,169,5,141 ,8,210,169,170,141,1,210,141,1813 4310 DATA 3,210,169,166,141,5,210,141, 7,210,169,0,141,219,0,169,862 4320 DATA 39,141,220,0,169,1,141,195,5 4,32,152,54,169,0,141,195,9257 4330 DATA 54,96,112,112,240,79,0,80,15 ,15,15,15,15,15,15,15,9174 4340 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,6380 4350 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,6390 4360 DATA 15,15,15,15,15,15,15,15,15,1 5,15,15,15,15,15,15,6400 4370 DATA 15,15,15,15,112,66,30,53,112 ,6,112,6,112,6,112,6,1798 4380 DATA 112,6,112,2,65,201,52,0,0,0, 0,0,0,0,0,0,6743 4390 DATA 0,0,0,0,0,0,40,41,39,40,0,51 ,35,47,50,37,8816 4400 DATA 51,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,4451 4410 DATA 0,0,97,110,97,108,111,103,0, 0,0,16,17,16,16,16,9008 4420 DATA 0,0,0,0,0,0,97,110,97,108,11 1,103,0,0,0,16,645 4430 DATA 16,21,16,16,0,0,0,0,0,0,97,1 10,97,108,111,103,3073 4440 DATA 0,0,0,16,16,18,21,16,0,0,0,0 ,0,0,97,110,8182 4450 DATA 97,108,111,103,0,0,0,16,16,1 7,16,16,0,0,0,0,6318 4460 DATA 0,0,97,110,97,108,111,103,0, 0,0,16,16,16,21,16,9120 4470 DATA 0,0,0,0,0,0,0,0,0,0,0,0,48,1 14,111,103,3 4480 DATA 114,97,109,109,101,100,0,34, 121,0,48,97,117,108,0,44,3446 4490 DATA 97,121,0,0,0,0,0,0,0,0,0,72, 138,72,162,224,4509 4500 DATA 169,65,141,10,212,142,26,208 ,141,27,208,162,60,189,0,120,137 4510 DATA 141,10,212,141,4,208,142,18, 208,222,0,120,138,74,144,3,8847 4520 DATA 222,0,120,202,208,231,142,10 ,212,142,26,208,169,1,141,27,278 4530 DATA 208,162,109,138,10,141,10,21 2,141,23,208,24,105,64,141,22,7406 4540 DATA 208,189,60,120,141,4,208,142 ,18,208,222,60,120,138,74,144,1417 4550 DATA 3,222,60,120,202,208,220,142 ,4,208,206,219,0,16,40,174,1209 4560 DATA 220,0,224,40,208,2,162,0,189 ,98,54,141,0,210,24,105,7745 4570 DATA 1,141,2,210,74,141,4,210,24, 105,1,141,6,210,232,142,362 4580 DATA 220,0,169,7,141,219,0,104,17 0,104,64,72,110,74,111,72,7607 4590 DATA 110,74,111,64,126,66,127,64, 126,66,127,72,110,74,111,72,7202 4600 DATA 110,74,111,64,126,66,127,64, 126,66,127,64,74,84,94,62,6373 4610 DATA 72,82,92,160,0,152,145,222,2 00,208,251,230,223,202,208,246,1649 4620 DATA 96,169,0,133,222,169,125,133 ,223,162,3,32,138,54,162,0,8673 4630 DATA 173,10,210,172,195,54,208,8, 201,47,144,244,201,207,176,240,7742 4640 DATA 157,0,120,169,1,157,0,123,23 2,208,229,96,0,169,200,133,3097 4650 DATA 211,141,10,212,173,10,210,41 ,112,141,144,38,160,64,162,3,8656 4660 DATA 173,10,210,157,4,208,157,18, 208,202,16,244,141,12,208,141,2995 4670 DATA 17,208,41,7,170,173,10,210,4 1,239,157,0,210,136,208,222,4684 4680 DATA 198,211,208,205,169,48,141,1 44,38,169,0,141,12,208,96,165,888 4690 DATA 212,240,46,169,82,133,213,16 9,53,133,214,162,0,160,0,177,1424 4700 DATA 213,217,231,41,144,24,208,5, 200,192,5,208,242,165,213,24,3870 4710 DATA 105,20,133,213,144,2,230,214 ,232,224,5,208,224,96,76,59,3379 4720 DATA 55,230,212,96,134,217,169,13 0,133,213,169,53,133,214,169,4,3596 4730 DATA 56,229,217,170,240,36,165,21 3,24,105,20,133,215,165,214,105,3927 4740 DATA 0,133,216,160,19,177,213,145 ,215,136,16,249,165,213,56,233,6256 4750 DATA 20,133,213,176,2,198,214,202 ,16,218,169,73,133,213,169,53,3844 4760 DATA 133,214,165,217,10,10,72,24, 101,213,133,213,144,2,230,214,3322 4770 DATA 104,10,10,24,101,213,133,213 ,144,2,230,214,160,7,185,82,2117 4780 DATA 56,170,189,45,56,145,213,136 ,16,244,165,213,24,105,9,133,652 4790 DATA 215,165,214,105,0,133,216,16 0,4,185,231,41,145,215,136,16,2097 4800 DATA 248,160,0,32,27,56,169,255,1 45,213,32,27,56,185,82,56,8745 4810 DATA 170,189,45,56,145,213,173,16 ,208,240,67,173,0,211,41,15,9953 4820 DATA 201,7,208,9,200,192,8,48,218 ,160,0,16,214,201,11,208,1130 4830 DATA 7,136,16,207,160,7,16,203,20 1,13,208,12,185,82,56,56,8223 4840 DATA 233,1,16,20,169,36,16,16,201 ,14,208,183,185,82,56,24,7714 4850 DATA 105,1,201,37,48,2,169,0,153, 82,56,76,186,55,173,16,6907 4860 DATA 208,240,251,96,32,55,40,32,6 1,40,32,55,40,32,61,40,2195 4870 DATA 32,55,40,76,61,40,0,97,98,99 ,100,101,102,103,104,105,6949 4880 DATA 106,107,108,109,110,111,112, 113,114,115,116,117,118,119,120,121,65 6 4890 DATA 122,80,81,82,83,84,85,86,87, 88,89,0,0,0,0,0,587 4900 DATA 0,0,0,169,0,141,0,212,141,14 ,210,141,14,212,141,8,8922 4910 DATA 210,169,3,141,15,210,169,169 ,141,2,212,169,56,141,3,212,1689 4920 DATA 169,120,141,9,212,169,12,141 ,23,208,169,0,141,24,208,169,1213 4930 DATA 35,141,0,212,169,14,141,1,21 0,141,3,210,162,1,142,0,8122 4940 DATA 210,232,142,2,210,162,127,17 3,10,210,157,0,120,202,16,247,2840 4950 DATA 48,243,66,231,56,2,66,231,56 ,2,66,231,56,2,66,231,8672 4960 DATA 56,2,66,231,56,2,66,231,56,2 ,66,231,56,2,66,231,8208 4970 DATA 56,2,66,231,56,2,66,231,56,2 ,66,231,56,2,66,231,8218 4980 DATA 56,2,66,231,56,2,66,231,56,2 ,66,231,56,65,169,56,7855 4990 DATA 0,1,2,3,4,5,6,7,8,9,10,11,12 ,13,14,15,6350 5000 DATA 0,1,2,3,4,5,6,7,8,9,10,11,12 ,13,14,15,6360 5010 DATA 0,1,2,3,4,5,6,7,8,9,10,11,12 ,13,14,15,6370 5020 DATA 8,9,10,11,12,13,14,15,0,1,2, 3,4,5,6,7,5868 5030 DATA 8,9,10,11,12,13,14,15,0,1,2, 3,4,5,6,7,5878 5040 DATA 8,9,10,11,12,13,14,15,0,1,2, 3,4,5,6,7,5888 5050 DATA 15,255,255,255,255,80,255,25 5,255,255,255,245,255,255,255,255,8320 5060 DATA 255,245,255,255,255,255,255, 245,238,238,238,238,238,230,238,238,78 28 5070 DATA 238,238,238,230,238,238,238, 238,238,230,238,238,238,238,238,230,71 98 5080 DATA 221,221,221,221,221,215,221, 221,221,221,221,215,221,221,112,13,65 5090 DATA 221,215,221,221,112,13,221,2 15,204,204,128,0,0,0,204,204,2801 5100 DATA 128,0,0,0,204,204,128,0,0,0, 204,204,128,0,0,0,4724 5110 DATA 187,187,187,187,187,144,187, 187,187,187,187,185,187,187,187,187,26 0 5120 DATA 187,185,187,187,187,187,187, 185,170,170,170,170,170,170,170,170,88 32 5130 DATA 170,170,170,170,170,170,170, 170,170,170,10,170,170,170,170,170,649 0 5140 DATA 0,0,0,9,153,155,0,0,0,9,153, 155,0,0,0,9,648 5150 DATA 153,155,0,0,0,9,153,155,136, 136,192,8,136,140,136,136,714 5160 DATA 192,8,136,140,136,136,136,13 6,136,140,136,136,136,136,136,140,3576 5170 DATA 119,119,119,119,119,126,119, 119,119,119,119,126,119,119,119,119,14 80 5180 DATA 119,126,119,119,119,119,119, 126,102,102,102,102,102,111,102,102,98 60 5190 DATA 102,102,102,111,102,102,102, 102,102,111,6,102,102,102,102,240,340 5200 DATA 255,255,255,255,255,246,255, 255,255,255,255,246,255,255,255,255,97 18 5210 DATA 255,246,255,255,255,255,255, 246,238,238,238,238,238,231,238,238,80 02 5220 DATA 238,238,238,231,238,238,238, 238,238,231,238,238,238,238,238,231,73 78 5230 DATA 221,221,221,221,221,216,221, 221,221,221,221,216,221,128,221,216,38 14 5240 DATA 13,216,0,0,221,216,0,0,0,0,2 04,201,0,0,0,0,2742 5250 DATA 204,201,0,0,0,0,204,201,0,0, 0,0,204,201,0,0,4358 5260 DATA 0,0,187,186,0,0,0,0,187,186, 0,0,0,0,187,186,5889 5270 DATA 0,0,0,0,187,186,0,0,0,0,170, 171,0,0,0,0,1243 5280 DATA 170,171,0,0,0,0,170,171,0,0, 0,0,170,171,0,0,2954 5290 DATA 0,0,153,156,0,0,0,0,153,156, 0,0,0,0,153,156,4101 5300 DATA 0,0,0,0,153,156,0,0,0,0,136, 141,0,0,0,0,189 5310 DATA 136,141,0,0,0,0,136,141,0,0, 0,0,136,141,0,0,1550 5320 DATA 0,0,119,126,0,0,0,0,119,126, 0,0,0,0,119,126,2313 5330 DATA 0,0,0,0,119,126,0,0,0,0,102, 111,0,0,0,0,9135 5340 DATA 102,111,0,0,0,0,102,111,0,0, 0,0,102,111,0,0,146 5350 DATA 15,255,255,255,255,96,15,255 ,255,255,255,96,255,255,255,255,5248 5360 DATA 255,246,255,255,255,255,255, 246,238,238,238,238,238,231,238,238,81 52 5370 DATA 238,238,238,231,238,238,238, 238,238,231,238,238,238,238,238,231,75 28 5380 DATA 221,221,221,221,221,216,221, 221,221,221,221,216,221,221,128,13,623 5390 DATA 221,216,221,221,128,13,221,2 16,204,204,144,12,204,201,204,204,8977 5400 DATA 144,12,204,201,204,204,144,1 2,204,201,204,204,144,12,204,201,7186 5410 DATA 187,187,160,11,187,186,187,1 87,160,11,187,186,187,187,160,11,4815 5420 DATA 187,186,187,187,160,11,187,1 86,170,170,170,170,170,171,170,170,796 5 5430 DATA 170,170,170,171,170,170,170, 170,170,171,170,170,170,170,170,171,85 80 5440 DATA 153,153,192,9,153,156,153,15 3,192,9,153,156,153,153,192,9,3035 5450 DATA 153,156,153,153,192,9,153,15 6,136,136,208,8,136,141,136,136,3245 5460 DATA 208,8,136,141,136,136,208,8, 136,141,136,136,208,8,136,141,2546 5470 DATA 119,119,224,7,119,126,119,11 9,224,7,119,126,119,119,224,7,1255 5480 DATA 119,126,119,119,224,7,119,12 6,102,102,240,6,102,111,102,102,379 5490 DATA 240,6,102,111,102,102,240,6, 102,111,102,102,240,6,102,111,226 5500 DATA 255,255,255,255,255,96,255,2 55,255,255,255,96,255,255,255,255,7318 5510 DATA 255,246,255,255,255,255,255, 246,238,238,238,238,238,231,238,238,83 02 5520 DATA 238,238,238,231,238,238,238, 238,238,231,238,238,238,238,238,231,76 78 5530 DATA 221,221,221,221,221,216,221, 221,221,221,221,216,221,221,128,13,773 5540 DATA 221,216,221,221,128,13,221,2 16,204,204,144,12,204,201,204,204,9127 5550 DATA 144,12,204,201,204,204,144,1 2,204,201,204,204,144,12,204,201,7336 5560 DATA 187,187,160,11,187,186,187,1 87,160,11,187,186,187,187,160,11,4965 5570 DATA 187,186,187,187,160,11,187,1 86,170,170,170,170,170,176,170,170,818 5 5580 DATA 170,170,171,0,170,170,170,17 0,171,0,170,170,170,170,170,176,6428 5590 DATA 153,153,192,9,153,156,153,15 3,192,9,153,156,153,153,192,9,3185 5600 DATA 153,156,153,153,192,9,153,15 6,136,136,208,8,136,141,136,136,3395 5610 DATA 208,8,136,141,136,136,208,8, 136,141,136,136,208,8,136,141,2696 5620 DATA 119,119,224,7,119,126,119,11 9,224,7,119,126,119,119,224,7,1405 5630 DATA 119,126,119,119,224,7,119,12 6,102,102,240,6,102,111,102,102,529 5640 DATA 240,6,102,111,102,102,240,6, 102,111,102,102,240,6,102,111,376 5650 DATA 8,136,136,136,136,136,153,15 3,153,153,153,153,170,170,170,170,6959 5660 DATA 170,170,187,187,187,187,187, 187,192,12,192,0,192,12,208,208,5413 5670 DATA 221,13,208,208,224,224,238,1 4,224,224,240,15,255,15,240,240,9656 5680 DATA 240,240,255,15,240,240,224,2 24,238,14,224,224,208,208,221,13,9798 5690 DATA 208,208,192,192,192,0,192,12 ,187,187,187,187,187,187,170,170,8231 5700 DATA 170,170,170,170,153,153,153, 153,153,153,8,136,136,136,136,136,3893 5710 DATA 136,136,136,136,0,0,153,153, 153,153,144,0,170,170,170,170,3716 5720 DATA 160,0,187,187,187,187,176,0, 192,0,192,12,192,0,208,221,3614 5730 DATA 208,208,208,0,224,238,224,22 4,224,0,240,15,240,15,240,0,4652 5740 DATA 240,255,240,240,240,0,224,23 8,224,224,224,0,208,221,208,208,1808 5750 DATA 208,0,192,0,192,192,192,0,18 7,187,187,187,176,0,170,170,5402 5760 DATA 170,170,160,0,153,153,153,15 3,144,0,136,136,136,136,0,0,8824 5770 DATA 226,2,227,2,253,31,0,0,0,0,0 ,0,0,0,0,0,8140
org $1FFD
begining
JMP start
; redefined character set data
character_set
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,48,243,255,255
DB 0,48,60,60,255,255,255,255
DB 0,0,0,12,12,207,207,255
big_ship
DB 0,0,0,11,10,138,121,105
DB 0,12,212,221,228,238,244,255
DB 204,201,215,213,231,233,255,249
DB 204,156,125,93,126,158,255,159
DB 0,192,77,221,78,238,79,255
DB 0,0,0,176,160,168,151,150
DB 89,89,80,96,112,128,144,153
DB 244,15,4,14,0,0,0,0
DB 247,245,231,233,221,13,0,0
DB 127,95,126,158,221,208,0,0
DB 79,240,64,224,0,0,0,0
DB 149,149,5,6,7,8,9,153
medium_ship
DB 0,0,0,0,12,13,174,159
DB 0,0,10,187,204,13,238,15
DB 0,0,160,187,204,208,238,240
DB 0,0,0,0,192,208,234,249
DB 143,126,128,144,160,187,0,0
DB 255,13,204,11,0,0,0,0
DB 255,208,204,176,0,0,0,0
DB 248,231,8,9,10,187,0,0
small_ship
DB 0,13,0,159,128,157,160,187
DB 204,221,238,255,238,221,204,0
DB 0,208,0,249,8,217,10,187
fade_away
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0
; landscape data
horizon
DB 131,129,130,129,129,131,129,129
DB 130,131,129,130,129,131,129,131
DB 129,129,130,129,130,131,129,131
DB 129,129,129,131,129,129,129,130
DB 129,131,129,131,130,129,131,129
terrain_data
DB 255,255,0,0,3,255,255,255
DB 0,0,1,255,255,255,0,0
DB 1,255,255,255,0,0,1,255
DB 255,255,0,0,1,255,255,255
DB 0,0,1,255,255,255,128,0
DB 255,252,0,0,15,255,255,254
DB 0,0,7,255,255,254,0,0
DB 1,255,255,255,0,0,1,255
DB 255,255,128,0,0,255,255,255
DB 192,0,0,127,255,255,240,0
DB 255,224,0,0,127,255,255,248
DB 0,0,15,255,255,252,0,0
DB 3,255,255,255,0,0,0,255
DB 255,255,192,0,0,63,255,255
DB 240,0,0,31,255,255,254,0
DB 255,0,0,1,255,255,255,224
DB 0,0,63,255,255,248,0,0
DB 3,255,255,255,0,0,0,255
DB 255,255,224,0,0,31,255,255
DB 252,0,0,3,255,255,255,224
DB 248,0,0,7,255,255,255,128
DB 0,0,127,255,255,240,0,0
DB 7,255,255,255,0,0,0,127
DB 255,255,240,0,0,7,255,255
DB 255,0,0,0,255,255,255,252
DB 192,0,0,63,255,255,254,0
DB 0,0,255,255,255,224,0,0
DB 7,255,255,255,0,0,0,127
DB 255,255,248,0,0,3,255,255
DB 255,192,0,0,31,255,255,255
DB 0,0,0,255,255,255,248,0
DB 0,3,255,255,255,192,0,0
DB 15,255,255,255,0,0,0,63
DB 255,255,252,0,0,1,255,255
DB 255,240,0,0,7,255,255,255
DB 0,0,7,255,255,255,224,0
DB 0,7,255,255,255,128,0,0
DB 15,255,255,255,0,0,0,63
DB 255,255,254,0,0,0,127,255
DB 255,252,0,0,0,255,255,255
DB 0,0,31,255,255,255,128,0
DB 0,31,255,255,255,0,0,0
DB 31,255,255,255,0,0,0,31
DB 255,255,255,0,0,0,63,255
DB 255,255,0,0,0,63,255,255
DB 0,0,255,255,255,254,0,0
DB 0,63,255,255,254,0,0,0
DB 31,255,255,255,0,0,0,31
DB 255,255,255,128,0,0,15,255
DB 255,255,192,0,0,7,255,255
DB 0,3,255,255,255,248,0,0
DB 0,255,255,255,252,0,0,0
DB 63,255,255,255,0,0,0,15
DB 255,255,255,192,0,0,7,255
DB 255,255,240,0,0,1,255,255
DB 0,31,255,255,255,224,0,0
DB 1,255,255,255,248,0,0,0
DB 63,255,255,255,0,0,0,15
DB 255,255,255,224,0,0,1,255
DB 255,255,252,0,0,0,63,255
DB 0,127,255,255,255,128,0,0
DB 7,255,255,255,240,0,0,0
DB 127,255,255,255,0,0,0,7
DB 255,255,255,240,0,0,0,255
DB 255,255,255,0,0,0,15,255
DB 1,255,255,255,254,0,0,0
DB 15,255,255,255,224,0,0,0
DB 127,255,255,255,0,0,0,7
DB 255,255,255,248,0,0,0,63
DB 255,255,255,192,0,0,1,255
DB 15,255,255,255,248,0,0,0
DB 63,255,255,255,192,0,0,0
DB 255,255,255,255,0,0,0,3
DB 255,255,255,252,0,0,0,31
DB 255,255,255,240,0,0,0,127
DB 63,255,255,255,224,0,0,0
DB 127,255,255,255,128,0,0,0
DB 255,255,255,255,0,0,0,3
DB 255,255,255,254,0,0,0,7
DB 255,255,255,248,0,0,0,15
DB 255,255,255,255,192,0,0,0
DB 255,255,255,255,128,0,0,1
DB 255,255,255,255,0,0,0,1
DB 255,255,255,254,0,0,0,3
DB 255,255,255,254,0,0,0,3
DB 255,255,255,255,0,0,0,3
DB 255,255,255,255,0,0,0,1
DB 255,255,255,255,0,0,0,1
DB 255,255,255,255,0,0,0,1
DB 255,255,255,255,128,0,0,0
DB 255,255,255,252,0,0,0,7
DB 255,255,255,254,0,0,0,3
DB 255,255,255,255,0,0,0,0
DB 255,255,255,255,128,0,0,0
DB 127,255,255,255,224,0,0,0
DB 255,255,255,240,0,0,0,31
DB 255,255,255,252,0,0,0,3
DB 255,255,255,255,0,0,0,0
DB 255,255,255,255,192,0,0,0
DB 63,255,255,255,248,0,0,0
DB 255,255,255,192,0,0,0,63
DB 255,255,255,248,0,0,0,7
DB 255,255,255,255,0,0,0,0
DB 127,255,255,255,224,0,0,0
DB 15,255,255,255,254,0,0,0
DB 255,255,255,0,0,0,0,255
DB 255,255,255,240,0,0,0,7
DB 255,255,255,255,0,0,0,0
DB 127,255,255,255,240,0,0,0
DB 7,255,255,255,255,128,0,0
DB 255,255,252,0,0,0,1,255
DB 255,255,255,224,0,0,0,15
DB 255,255,255,255,0,0,0,0
DB 63,255,255,255,248,0,0,0
DB 1,255,255,255,255,224,0,0
DB 255,255,240,0,0,0,7,255
DB 255,255,255,192,0,0,0,15
DB 255,255,255,255,0,0,0,0
DB 63,255,255,255,252,0,0,0
DB 0,255,255,255,255,248,0,0
DB 255,255,192,0,0,0,15,255
DB 255,255,255,128,0,0,0,31
DB 255,255,255,255,0,0,0,0
DB 31,255,255,255,254,0,0,0
DB 0,63,255,255,255,254,0,0
DB 255,255,0,0,0,0,63,255
DB 255,255,255,0,0,0,0,31
DB 255,255,255,255,0,0,0,0
DB 31,255,255,255,255,0,0,0
DB 0,31,255,255,255,255,128,0
DB 255,252,0,0,0,0,127,255
DB 255,255,254,0,0,0,0,63
DB 255,255,255,255,0,0,0,0
DB 15,255,255,255,255,128,0,0
DB 0,7,255,255,255,255,224,0
DB 255,240,0,0,0,0,255,255
DB 255,255,252,0,0,0,0,63
DB 255,255,255,255,0,0,0,0
DB 15,255,255,255,255,192,0,0
DB 0,3,255,255,255,255,248,0
DB 255,192,0,0,0,3,255,255
DB 255,255,248,0,0,0,0,127
DB 255,255,255,255,0,0,0,0
DB 7,255,255,255,255,224,0,0
DB 0,1,255,255,255,255,254,0
DB 255,0,0,0,0,7,255,255
DB 255,255,240,0,0,0,0,127
DB 255,255,255,255,0,0,0,0
DB 7,255,255,255,255,240,0,0
DB 0,0,127,255,255,255,255,128
DB 252,0,0,0,0,31,255,255
DB 255,255,224,0,0,0,0,255
DB 255,255,255,255,0,0,0,0
DB 3,255,255,255,255,248,0,0
DB 0,0,63,255,255,255,255,224
title_memory = $5000
pause_memory = $6800
screen_memory = $7400
pmbase = $7800
play1 = pmbase+$0500
play2 = pmbase+$0600
play3 = pmbase+$0700
starfield = pmbase
display_list
DB $30,$30,$70,$F0
; space
DB $42
DW viewport
DB $42
DW screen_memory
DB $02,$02,$02,$02,$02,$02,$02,$02
DB $02,$02,$02,$02,$02
; horizon
DB $44
DW horizon
; landscape
scroll_area
DB $4F
DW terrain_data
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$00
; control panel
DB $42
DW control_panel
DB $00,$02,$02,$00,$02
DB $41
DW display_list
start
LDA #LOW busted
STA $02
LDA #HIGH busted
STA $03
LDA #$02
STA $09
LDA #$00
STA $244
STA toggle
STA pointer
STA $D4
LDA #$01
STA number_of_ships
LDA #$03
STA $D20F
STA $D01D
LDA #LOW kb_int
STA $0208
LDA #HIGH kb_int
STA $0209
LDA #$40
STA $D20E
LDA #HIGH pmbase
STA $D407
LDA #$80
STA $D40E
LDA #$3E
STA $D400
JSR clr_pause_display
JSR set_up_letters
main_program
JSR wait_for_start
JSR vb_wait
LDA #$00
STA $D400
LDA #LOW display_list
STA $D402
LDA #HIGH display_list
STA $D403
LDA #LOW dli
STA $200
LDA #HIGH dli
STA $201
LDA #$DE
STA $D013
LDA #$3C
STA $D014
LDA #$8C
STA $D015
JSR pm_init
LDX #$04
loop1
LDA colours,X
STA $D016,X
DEX
BPL loop1
JSR clr_screen
LDA #$00
STA released
STA chr_offset
STA $D208
LDX #$02
horiz_init
STA p1x,X
DEX
BPL horiz_init
LDA #$FF
STA left_frame
STA right_frame
STA shakin
STA tons
LDA #$78
STA x_cursor
STA y_cursor
LDA #$10
STA shields+$01
STA shields+$02
LDX #$04
loop70
STA score,X
DEX
BPL loop70
LDA #$11
STA shields
LDA #$04
STA llength
JSR vb_wait
LDA #$3E
STA $D400
set_level
LDA number_of_ships
STA alive_ships
JSR init_fleet
JSR vb_waste
loop3
JSR vb_wait
JSR handle_ship
JSR move_missiles
JSR vb_waste
JSR vb_wait
JSR move_land
JSR move_cursor
JSR fade_em
JSR vb_waste
JSR vb_wait
JSR move_missiles
JSR effects
JSR play_keys
JSR vb_waste
JSR vb_wait
JSR move_land
JSR move_cursor
JSR fade_em
JSR vb_waste
LDA alive_ships
BNE loop3
JSR vb_wait
JSR up_wave
LDA number_of_ships
CMP #$FF
BEQ set_level
CLC
ADC #$01
STA number_of_ships
BNE set_level
colours
DB $00,$0C,$00,$46,$00
llength
DB $00
lcol_1
DB $44
lcol_2
DB $4A
up_wave
LDX #$01
wave_loop
LDA wave,X
CLC
ADC #$01
CMP #$1A
BEQ next_wave_digit
STA wave,X
RTS
next_wave_digit
LDA #$10
STA wave,X
DEX
BPL wave_loop
RTS
init_fleet
LDX #$00
init1loop
JSR init_ship
INX
CPX number_of_ships
BNE init1loop
RTS
vb_wait
LDA $D40B
BNE vb_wait
RTS
vb_waste
LDA $D40B
BEQ vb_waste
RTS
move_land
LDX llength
INX
CPX #$05
BNE set_llength
LDA lcol_1
PHA
LDA lcol_2
STA lcol_1
PLA
STA lcol_2
LDX #$01
set_llength
STX llength
RTS
dli
PHA
TXA
PHA
TYA
PHA
LDX #$8B
loop6
STX $D40A
STX $D018
DEX
CPX #$83
BNE loop6
LDA #$41
LDX #HIGH character_set
STA $D40A
STA $D01B
STX $D409
LDA starfield+$6F
PHA
LDX #$6E
loop4
LDA starfield,X
STA $D40A
STA $D004
STA starfield+$01,X
STX $D012
DEX
BNE loop4
PLA
STA starfield+$01
LDA #$00
STA $D40A
STA $D004
LDA #$01
STA $D40A
STA $D01B
LDX #$08
loop8
STX $D40A
DEX
BNE loop8
LDA lcol_1
LDY lcol_2
STA $D017
STY $D018
LDX llength
lloop_1
STX $D40A
DEX
BNE lloop_1
STA $D018
STY $D017
LDX #$05
lloop_2
STX $D40A
DEX
BNE lloop_2
STA $D017
STY $D018
LDX #$06
lloop_3
STX $D40A
DEX
BNE lloop_3
STA $D018
STY $D017
LDX #$07
lloop_4
STX $D40A
DEX
BNE lloop_4
STA $D017
STY $D018
LDX #$08
lloop_5
STX $D40A
DEX
BNE lloop_5
LDX llength
CPX #$04
BEQ lskip_1
STA $D018
STY $D017
lloop_6
STX $D40A
INX
CPX #$04
BNE lloop_6
lskip_1
LDA #$0C
STA $D40A
STA $D017
LDX #$8B
LDA #$E0
STA $D40A
STX $D018
STA $D409
DEX
loop7
STX $D40A
STX $D018
DEX
CPX #$83
BNE loop7
LDA #$00
STA $D40A
STA $D017
LDX #$CB
loop9
STX $D40A
STX $D018
STX $D40A
DEX
CPX #$C3
BNE loop9
LDA #$0C
STA $D40A
STA $D017
LDX #$8B
loop11
STX $D40A
STX $D018
DEX
CPX #$83
BNE loop11
PLA
TAY
PLA
TAX
PLA
RTI
viewport
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 214,246,233,229,247
DB 240,239,242,244,194
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
control_panel
DB 0,0,0,0,0,0,0,0,0,0,0,0
DB 214,227,239,238,244,242,239,236
DB 128,240,225,238,229,236,194
DB 0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0
DB 51,'core',0,0,0,0,0
DB 51,'hields',0,0,0,0,0
DB 55,'ave'
DB 0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0
DB 16,16,16,16,16,0,0,0,0,0
DB 0,17,16,16,0,5,0,0,0,0,0,0
DB 0,16,17,0
DB 0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0
DB 48,'rogrammed',0,34,'y',0
DB 48,'aul',0,44,'ay'
DB 0,0,0,0,0,0,0,0,0
score = control_panel+87
shields = control_panel+98
wave = control_panel+110
evaluate_address
; take the coordinates x,y in $F0,$F1
; and return the screen address in
; $CC,$CD
TXA
PHA
; first evaluate 40*y
LDA #$00
STA $CD
LDA $F1
ASL A ; 2*y
ROL $CD
ASL A ; 4*y
ROL $CD
ASL A ; 8*y
ROL $CD
STA $CE ; save 8*y
LDX $CD
STX $CF
ASL A ; 16*y
ROL $CD
ASL A ; 32*y
ROL $CD
CLC ; add 32*y and 8*y
ADC $CE
STA $CC
LDA $CD
ADC $CF
STA $CD
; now add in x
LDA $CC
CLC
ADC $F0
STA $CC
BCC skip2
INC $CD
skip2
; and add screen memory
LDA $CC
CLC
ADC #LOW screen_memory
STA $CC
LDA $CD
ADC #HIGH screen_memory
STA $CD
PLA
TAX
; and return
RTS
draw_big_ship
; draw a big space ship at
; coordinates x,y specified in $F0,
; $F1
JSR evaluate_address
LDA #$09
CLC
ADC chr_offset
LDY #$05
loop20
STA ($CC),Y
SEC
SBC #$01
DEY
BPL loop20
LDA #$0F
CLC
ADC chr_offset
LDY #$2D
loop21
STA ($CC),Y
SEC
SBC #$01
DEY
CPY #$27
BNE loop21
RTS
draw_medium_ship
; draw a medium space ship at
; coordinates x,y specified in $F0,
; $F1
JSR evaluate_address
LDA #$13
CLC
ADC chr_offset
LDY #$03
loop22
STA ($CC),Y
SEC
SBC #$01
DEY
BPL loop22
LDA #$17
CLC
ADC chr_offset
LDY #$2B
loop23
STA ($CC),Y
SEC
SBC #$01
DEY
CPY #$27
BNE loop23
RTS
draw_small_ship
; draw a small space ship at
; coordinates x,y specified in $F0,
; $F1
JSR evaluate_address
LDA #$1A
CLC
ADC chr_offset
LDY #$02
loop24
STA ($CC),Y
SEC
SBC #$01
DEY
BPL loop24
RTS
erase_big_ship
LDA #$00
over_big_write
PHA
JSR evaluate_address
PLA
LDY #$05
loop30
STA ($CC),Y
DEY
BPL loop30
LDY #$2D
loop31
STA ($CC),Y
DEY
CPY #$27
BNE loop31
RTS
erase_middle_ship
LDA #$00
over_middle_write
PHA
JSR evaluate_address
PLA
LDY #$03
loop32
STA ($CC),Y
DEY
BPL loop32
LDY #$2B
loop33
STA ($CC),Y
DEY
CPY #$27
BNE loop33
RTS
erase_small_ship
LDA #$00
over_small_write
PHA
JSR evaluate_address
PLA
LDY #$02
loop34
STA ($CC),Y
DEY
BPL loop34
RTS
init_ship
LDA $D20A
AND #$3F
CMP #$23
BPL init_ship
STA ship_x,X
LDA #$0E
STA ship_y,X
LDA #$FF
STA ship_direction,X
LDA #$20
STA ship_stage,X
LDA $D20A
AND #$7F
STA ship_counter,X
RTS
wipe_ship
BNE test1
JMP erase_small_ship
test1
CMP #$01
BNE test2
JMP erase_medium_ship
test2
JMP erase_big_ship
draw_ship
BNE test3
JMP draw_small_ship
test3
CMP #$01
BNE test4
JMP draw_medium_ship
test4
JMP draw_big_ship
handle_ship
LDX #$00
STX wings
main_loop
LDA ship_stage,X
CMP #$03
BMI move_ship
AND #$10
BNE dying
LDA ship_stage,X
AND #$20
BEQ next_ship
DEC ship_counter,X
BNE next_ship
LDA #$00
STA ship_stage,X
LDA #$09
STA ship_counter,X
next_ship
INX
CPX number_of_ships
BNE main_loop
RTS
dying
DEC ship_counter,X
BMI dead
LDA #$17
STA chr_offset
LDA ship_x,X
STA $F0
LDA ship_y,X
STA $F1
LDA ship_stage,X
AND #$03
JSR draw_ship
LDA #$00
STA chr_offset
JMP next_ship
dead
LDA ship_x,X
STA $F0
LDA ship_y,X
STA $F1
LDA ship_stage,X
AND #$03
JSR wipe_ship
LDA #$03
STA ship_stage,X
DEC alive_ships
JMP next_ship
move_ship
LDA ship_x,X
STA $F0
LDA ship_y,X
STA $F1
LDA ship_stage,X
JSR wipe_ship
DEC ship_counter,X
BNE skip10
LDA #$09
STA ship_counter,X
INC ship_stage,X
LDA ship_stage,X
CMP #$03
BMI skip10
JSR down_shields
LDA #$04
STA shakin
JSR init_ship
JMP next_ship
skip10
LDA ship_y,X
CLC
ADC ship_direction,X
STA ship_y,X
STA $F1
STA wings
BNE skip11
LDA #$01
STA ship_direction,X
skip11
LDA $D20A
CMP #$19
BCS skip12
LDA ship_x,X
BEQ draw_it
DEC ship_x,X
BPL draw_it
skip12
LDA $D20A
CMP #$19
BCS draw_it
LDA ship_x,X
CMP #$22
BEQ draw_it
INC ship_x,X
draw_it
LDA ship_x,X
STA $F0
LDA ship_stage,X
JSR draw_ship
JMP next_ship
move_cursor
LDA $D010
BNE no_fire
LDA released
BEQ proceed
LDA #$00
STA released
try_left
LDA left_frame
BPL try_right
JMP fire_left_missile
try_right
LDA right_frame
BPL proceed
JMP fire_right_missile
no_fire
STA released
proceed
LDY #$0F
LDX y_cursor
LDA #$00
loop50
STA play1,X
INX
DEY
BPL loop50
LDA $D300
AND #$0F
STA $CC
LDX toggle
BEQ try0
LDX #$00
STX $EF
LSR A
ROL $EF
LSR A
ROL $EF
LDA $CC
AND #$FC
ORA $EF
STA $CC
try0
LSR $CC
BCS try1
LDA y_cursor
SEC
SBC #$08
STA y_cursor
try1
LSR $CC
BCS try2
LDA y_cursor
CLC
ADC #$08
STA y_cursor
try2
LSR $CC
BCS try3
LDA x_cursor
SEC
SBC #$08
STA x_cursor
try3
LSR $CC
BCS check1
LDA x_cursor
CLC
ADC #$08
STA x_cursor
check1
LDA x_cursor
CMP #$30
BCS check2
LDA #$30
STA x_cursor
BPL check3
check2
CMP #$C9
BCC check3
LDA #$C8
STA x_cursor
check3
LDA y_cursor
CMP #$28
BCS check4
LDA #$28
STA y_cursor
BPL draw_cursor
check4
CMP #$B1
BCC draw_cursor
LDA #$B0
STA y_cursor
draw_cursor
LDY #$0F
LDX y_cursor
loop51
LDA cross_hair,Y
STA play1,X
INX
DEY
BPL loop51
LDA x_cursor
STA $D001
STA p1x
RTS
cross_hair
DB 0,84,146,146,16,16,16,238
DB 238,16,16,16,146,146,84,0
x_cursor = $F2
y_cursor = $F3
fire_left_missile
LDA x_cursor
SEC
SBC #$30
LSR A
LSR A
LSR A
STA left_x_inc
LDA #$B0
SEC
SBC y_cursor
LSR A
LSR A
LSR A
STA left_y_dec
set_left_fire
LDA #$08
STA left_frame
LDA #$30
STA x_left
LDA #$B0
STA y_left
LDA #$04
STA tons
JMP draw_left_missile
move_left_missile
LDA left_frame
BPL left_is_live
RTS
left_is_live
LDY #$0F
LDX y_left
LDA #$00
loop60
STA play2,X
INX
DEY
BPL loop60
LDA x_left
CLC
ADC left_x_inc
STA x_left
LDA y_left
SEC
SBC left_y_dec
STA y_left
DEC left_frame
BMI left_burned_out
draw_left_missile
LDY #$0F
LDX y_left
loop61
LDA photon,Y
AND $D20A
STA play2,X
INX
DEY
BPL loop61
LDA x_left
STA $D002
STA p2x
left_burned_out
RTS
left_frame = $F4
left_x_inc = $F5
left_y_dec = $F6
x_left = $F7
y_left = $F8
fire_right_missile
LDA #$C8
SEC
SBC x_cursor
LSR A
LSR A
LSR A
STA right_x_dec
LDA #$B0
SEC
SBC y_cursor
LSR A
LSR A
LSR A
STA right_y_dec
LDA #$08
STA right_frame
LDA #$C8
STA x_right
LDA #$B0
STA y_right
LDA #$04
STA tons
JMP draw_right_missile
move_right_missile
LDA right_frame
BPL right_is_live
RTS
right_is_live
LDY #$0F
LDX y_right
LDA #$00
loop62
STA play3,X
INX
DEY
BPL loop62
LDA x_right
SEC
SBC right_x_dec
STA x_right
LDA y_right
SEC
SBC right_y_dec
STA y_right
DEC right_frame
BMI right_burned_out
draw_right_missile
LDY #$0F
LDX y_right
loop63
LDA photon,Y
AND $D20A
STA play3,X
INX
DEY
BPL loop63
LDA x_right
STA $D003
STA p3x
right_burned_out
RTS
right_frame = $F9
right_x_dec = $FA
right_y_dec = $FB
x_right = $FC
y_right = $FD
released = $FE
photon
DB 24,60,126,126,126,255,255,255
DB 255,255,255,126,126,126,60,24
move_missiles
JSR test_left_missile
JSR test_right_missile
JSR move_left_missile
JMP move_right_missile
check_missile_hit
SEC
SBC #$28
LSR A
LSR A
LSR A
STA y_missile
LDA x_missile
SEC
SBC #$30
LSR A
LSR A
SEC
SBC ship_x,X
CLC
ADC #$01
BMI no_hit
PHA
LDA ship_stage,X
TAY
PLA
CMP x_ranges,Y
BPL no_hit
LDA y_missile
SEC
SBC ship_y,X
CLC
ADC #$01
BMI no_hit
CMP y_ranges,Y
BPL no_hit
a_hit
LDA #$08
STA hitz
SEC
RTS
no_hit
CLC
RTS
x_ranges
DB $03,$04,$06
y_ranges
DB $01,$02,$02
x_missile = $E0
y_missile = $E1
test_left_missile
LDA left_frame
BEQ left1test
RTS
left1test
LDX #$00
left1loop
LDA ship_stage,X
CMP #$03
BMI left2test
left1next
INX
CPX number_of_ships
BNE left1loop
RTS
left2test
LDA x_left
STA x_missile
LDA y_left
JSR check_missile_hit
BCC left_miss
left_hit
JSR up_shields
JSR up_score
LDA ship_stage,X
ORA #$10
STA ship_stage,X
LDA #$08
STA ship_counter,X
RTS
left_miss
JMP left1next
test_right_missile
LDA right_frame
BEQ right1test
RTS
right1test
LDX #$00
r1loop
LDA ship_stage,X
CMP #$03
BMI right2test
r1next
INX
CPX number_of_ships
BNE r1loop
RTS
right2test
LDA x_right
STA x_missile
LDA y_right
JSR check_missile_hit
BCC right_miss
right_hit
JSR up_shields
JSR up_score
LDA ship_stage,X
ORA #$10
STA ship_stage,X
LDA #$08
STA ship_counter,X
RTS
right_miss
JMP r1next
chr_offset = $FF
fade_em
LDX #$00
fade_loop
LDA $D20A
AND #$03
TAY
LDA character_set+$0020,X
AND mask,Y
STA character_set+$00D8,X
INX
CPX #$B6
BNE fade_loop
RTS
mask
DB $00,$0F,$F0,$FF
number_of_ships = $E2
alive_ships = $E3
up_shields
LDA shields
CMP #$11
BEQ done1
LDA number_of_ships
SEC
SBC #$01
AND #$F8
LSR A
LSR A
LSR A
CMP #$04
BMI found_boost
LDA #$03
found_boost
TAY
LDA lo_boosts,Y
STA lo_add
LDA hi_boosts,Y
STA hi_add
LDA shields+$02
CLC
ADC lo_add
CMP #$1A
BMI skip80
INC hi_add
SEC
SBC #$0A
skip80
STA shields+$02
LDA shields+$01
CLC
ADC hi_add
CMP #$1A
BMI skip81
LDA #$11
STA shields
LDA #$10
STA shields+$01
STA shields+$02
done1
RTS
skip81
STA shields+$01
RTS
lo_add = $E4
hi_add = $E5
lo_boosts
DB $02,$05,$00,$00
hi_boosts
DB $00,$00,$01,$02
up_score
LDY #$04
LDA score,Y
CLC
ADC #$05
CMP #$1A
BMI done3
loop83
SEC
SBC #$0A
STA score,Y
DEY
BMI overflow
LDA score,Y
CLC
ADC #$01
CMP #$1A
BPL loop83
done3
STA score,Y
RTS
overflow
RTS
down_shields
LDY #$02
LDA shields,Y
SEC
SBC #$04
CMP #$10
BPL done2
loop82
CLC
ADC #$0A
STA shields,Y
DEY
BMI no_shields
LDA shields,Y
SEC
SBC #$01
CMP #$10
BMI loop82
done2
STA shields,Y
RTS
no_shields
LDA #$10
STA shields
STA shields+$01
STA shields+$02
game_over
JSR time_to_die
JSR off_sound
LDX #$03
LDA #$00
off_saves
STA freqs,X
STA dists,X
DEX
BPL off_saves
LDX #$00
TXS
JMP main_program
effects
LDX shakin
BMI no_shakin
LDA shake_lines,X
STA display_list
LDA shake_freq,X
STA $D200
STA freq1
LDA shake_dist,X
STA $D201
STA dist1
DEC shakin
no_shakin
LDA wings
STA $D202
STA freq2
STA $D203
STA dist2
LDX tons
BMI no_tons
LDA pho_freq,X
STA $D204
STA freq3
LDA pho_dist,X
STA $D205
STA dist3
DEC tons
no_tons
LDX hitz
BMI no_hitz
LDA hit_freq,X
STA $D206
STA freq4
LDA hit_dist,X
STA $D207
STA dist4
DEC hitz
no_hitz
RTS
shakin = $E6
wings = $E7
tons = $E8
hitz = $E9
shake_lines
DB $30,$20,$40,$10,$50
shake_freq
DB $00,$80,$B0,$D0,$E0
shake_dist
DB $00,$82,$84,$86,$88
pho_freq
DB 0,160,140,120,48
pho_dist
DB 0,$8A,$8C,$8E,$C6
hit_freq
DB 0,240,230,220,210,200,190,180
DB 170
hit_dist
DB $00,$88,$8A,$8C,$8C,$8E,$8E,$8E
DB $8C
freqs
freq1
DB 0
freq2
DB 0
freq3
DB 0
freq4
DB 0
dists
dist1
DB 0
dist2
DB 0
dist3
DB 0
dist4
DB 0
kb_int
LDA $D209
STA the_key
PLA
RTI
the_key = $EA
wait_for_start
JSR set_hi_up
JSR try_hi_score
key_reset
LDA #$FF
STA the_key
press_wait
LDA $D01F
CMP #$06 ; start ?
BNE try_a_key
LDX #$00
BEQ go_level
try_a_key
LDA the_key
CMP #$2D ; toggle ?
BNE no_toggle
LDA toggle
EOR #$FF
STA toggle
JMP key_reset
no_toggle
CMP #$12 ; continue ?
BEQ go_there
LDX #$05
key_loop
CMP lvl_keys,X ; level ?
BEQ go_level
DEX
BNE key_loop
JMP press_wait
go_level
LDA lvl_number,X
STA number_of_ships
LDA lvl_lo,X
STA wave+$01
LDA lvl_hi,X
STA wave
go_there
LDA #$FF
STA the_key
JMP off_sound
toggle = $EB
pointer = $EC
lvl_keys
DB $FF,$1F,$1E,$1A,$18,$1D
lvl_number
DB 1,10,20,30,40,50
lvl_lo
DB $11,$10,$10,$10,$10,$10
lvl_hi
DB $10,$11,$12,$13,$14,$15
play_keys
LDA the_key
CMP #$1C
BNE no_esc
JMP game_over
no_esc
CMP #$2D
BNE dont_toggle
LDA toggle
EOR #$FF
STA toggle
LDA #$FF
STA the_key
RTS
dont_toggle
CMP #$21
BNE no_space
JSR off_sound
JSR vb_wait
LDA #LOW dl_pause
STA $D402
LDA #HIGH dl_pause
STA $D403
LDA #$40
STA $D01B
LDA #$E0
STA $D01A
LDX #$02
LDA #$00
pm_erase
STA $D001,X
DEX
BPL pm_erase
LDA #$FF
STA the_key
LDA #$05
STA $D208
LDA #$A6
STA $D201
STA $D205
LDA #$80
STA $D200
LDA #$40
STA $D204
pause_loop
JSR wiggle
LDA the_key
CMP #$21
BNE pause_loop
JSR vb_wait
LDA #LOW display_list
STA $D402
LDA #HIGH display_list
STA $D403
LDA #$01
STA $D01B
LDA #$00
STA $D01A
LDX #$02
pm_draw
LDA p1x,X
STA $D001,X
DEX
BPL pm_draw
LDA #$FF
STA the_key
LDA #$00
STA $D208
JSR on_sound
no_space
RTS
p1x = $D0
p2x = $D1
p3x = $D2
off_sound
LDX #$07
LDA #$00
off_loop
STA $D200,X
DEX
BPL off_loop
RTS
on_sound
LDX #$03
LDY #$06
on_loop
LDA freqs,X
STA $D200,Y
LDA dists,X
STA $D201,Y
DEX
DEY
DEY
BPL on_loop
RTS
clr_screen
LDA #LOW screen_memory
STA $DE
LDA #HIGH screen_memory
STA $DF
LDX #$04
JMP rub_memory
clr_pause_display
LDA #LOW pause_memory
STA $DE
LDA #HIGH pause_memory
STA $DF
LDX #$08
JMP rub_memory
dl_pause
DB $70,$70,$70
DB $4F
DW pause_memory
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F
DB $41
DW dl_pause
wiggle
JSR vb_wait
LDX #$0D
wig1
LDA pos_lo,X
STA $ED
LDA pos_hi,X
STA $EE
LDA chars_lo,X
STA wig2+$01
LDA chars_hi,X
STA wig2+$02
TXA
PHA
LDX #$00
LDY #$00
wig2
LDA $FFFF,X
STA ($ED),Y
LDA $ED
CLC
ADC #$28
STA $ED
BCC skip90
INC $EE
skip90
INX
CPX #$18
BNE wig2
PLA
TAX
DEX
BPL wig1
LDX #$0D
wig3
LDA updates-$01,X
STA updates,X
DEX
BNE wig3
LDX pointer
CPX #$30
BNE cont_sequence
LDX #$00
STX pointer
cont_sequence
LDA sequence,X
STA updates
INC pointer
LDX #$0D
wig4
LDA updates,X
BMI going_down
going_up
LDA pos_lo,X
CLC
ADC updates,X
STA pos_lo,X
BCC lets_resume
INC pos_hi,X
BNE lets_resume
going_down
LDA pos_lo,X
CLC
ADC updates,X
STA pos_lo,X
BCS lets_resume
DEC pos_hi,X
lets_resume
DEX
BPL wig4
RTS
updates
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0
pos_lo
DB $3D,$3E,$3F,$40,$41,$42,$43,$44
DB $45,$46,$47,$48,$49,$4A
pos_hi
DB $6A,$6A,$6A,$6A,$6A,$6A,$6A,$6A
DB $6A,$6A,$6A,$6A,$6A,$6A
u1 = $28
u2 = $50
u3 = $78
d1 = $D8
d2 = $B0
d3 = $88
sequence
DB 0,0,0
DB u1,u1,u1,u1,d1,d1,d1,d1
DB 0,0
DB u1,u1,u1,u2,u2,u3
DB d3,d2,d2,d1,d1,d1
DB 0,0,0
DB u1,u2,u3,d3,d2,d1
DB 0,0
DB u1,u1,u1,u1,u1,u1,d3,d2,d1
DB 0,0,0
chars_lo
DB LOW char1,LOW char2,LOW char3
DB LOW char4,LOW char5,LOW char6
DB LOW char7,LOW char8,LOW char9
DB LOW char10,LOW char11
DB LOW char12,LOW char13
DB LOW char14
chars_hi
DB HIGH char1,HIGH char2,HIGH char3
DB HIGH char4,HIGH char5,HIGH char6
DB HIGH char7,HIGH char8,HIGH char9
DB HIGH char10,HIGH char11
DB HIGH char12,HIGH char13
DB HIGH char14
char1
DB 0,0,0,0
DB 136,153,170,187,204,221,238,255
DB 255,238,221,204,187,170,153,0
DB 0,0,0,0
char2
DB 0,0,0,0
DB 136,153,170,187,0,13,14,0
DB 15,14,13,12,187,170,153,0
DB 0,0,0,0
char3
DB 0,0,0,0
DB 136,153,170,187,204,13,14,255
DB 255,238,221,204,187,170,153,0
DB 0,0,0,0
char4
DB 0,0,0,0
DB 136,153,170,187,192,13,14,0
DB 15,14,13,12,187,170,153,0
DB 0,0,0,0
char5
DB 0,0,0,0
DB 136,153,170,187,204,13,14,15
DB 15,14,13,12,187,170,153,0
DB 0,0,0,0
char6
DB 0,0,0,0
DB 136,153,170,187,12,13,14,15
DB 15,14,13,0,187,170,153,0
DB 0,0,0,0
char7
DB 0,0,0,0
DB 136,153,170,187,12,13,14,15
DB 15,14,13,12,187,170,153,0
DB 0,0,0,0
char8
DB 0,0,0,0
DB 136,153,170,187,0,13,14,0
DB 255,238,221,0,187,170,153,0
DB 0,0,0,0
char9
DB 0,0,0,0
DB 136,153,170,187,12,221,238,15
DB 15,14,13,12,187,170,153,0
DB 0,0,0,0
char10
DB 0,0,0,0
DB 136,153,170,187,0,13,14,0
DB 15,14,13,0,187,170,153,0
DB 0,0,0,0
char11
DB 0,0,0,0
DB 136,153,170,187,12,221,238,255
DB 255,238,221,12,187,170,153,0
DB 0,0,0,0
char12
DB 0,0,0,0
DB 136,153,170,187,0,13,14,15
DB 15,14,13,0,187,170,153,0
DB 0,0,0,0
char13
DB 0,0,0,0
DB 136,153,170,187,204,13,14,15
DB 15,14,13,204,187,170,153,0
DB 0,0,0,0
char14
DB 0,0,0,0
DB 136,153,170,187,204,221,238,255
DB 255,238,221,204,187,170,153,0
DB 0,0,0,0
set_up_letters
LDA #LOW title_memory
STA $DE
LDA #HIGH title_memory
STA $DF
LDX #$0B
JSR rub_memory
LDX #$05
here
LDA lo_letters,X
STA $DC
LDA hi_letters,X
STA $DD
LDA lo_goes,X
STA $DE
LDA hi_goes,X
STA $DF
TXA
PHA
CMP #$04
BMI skip96
LDX #$0F
BPL loop99
skip96
LDX #$27
loop99
LDY #$05
get1
LDA ($DC),Y
STA ($DE),Y
DEY
BPL get1
LDA $DC
CLC
ADC #$06
STA $DC
BCC skip97
INC $DD
skip97
LDA $DE
CLC
ADC #$28
STA $DE
BCC skip95
INC $DF
skip95
DEX
BPL loop99
PLA
TAX
DEX
BPL here
RTS
lo_letters
DB LOW s_letter
DB LOW t_letter
DB LOW a_letter
DB LOW r_letter
DB LOW rid_letters
DB LOW er_letters
hi_letters
DB HIGH s_letter
DB HIGH t_letter
DB HIGH a_letter
DB HIGH r_letter
DB HIGH rid_letters
DB HIGH er_letters
lo_goes
DB $58,$0E,$14,$6A,$17,$1D
hi_goes
DB $50,$50,$50,$50,$57,$57
set_hi_up
JSR off_sound
JSR vb_wait
LDA #LOW hi_dlist
STA $D402
LDA #HIGH hi_dlist
STA $D403
LDA #LOW hi_dli
STA $0200
LDA #HIGH hi_dli
STA $0201
LDA #$D0
STA $D018
LDA #$8C
STA $D019
LDA #$05
STA $D208
LDA #$AA
STA $D201
STA $D203
LDA #$A6
STA $D205
STA $D207
LDA #$00
STA decay
LDA #$27
STA note
LDA #$01
STA left_to_right
JSR pm_init
LDA #$00
STA left_to_right
RTS
hi_dlist
DB $70,$70,$F0
DB $4F
DW title_memory
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
DB $0F,$0F,$0F,$0F
DB $70
DB $42
DW scores_memory
DB $70,$06,$70,$06,$70,$06
DB $70,$06,$70,$06,$70
DB $02
DB $41
DW hi_dlist
scores_memory
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 40,41,39,40,0
DB 51,35,47,50,37,51
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0
hi_line
DB 0,0,0
DB 97,110,97,108,111,103,0,0,0
DB 16,17,16,16,16
DB 0,0,0
hi_start = hi_line+12
DB 0,0,0
DB 97,110,97,108,111,103,0,0,0
DB 16,16,21,16,16
DB 0,0,0
DB 0,0,0
DB 97,110,97,108,111,103,0,0,0
DB 16,16,18,21,16
DB 0,0,0
DB 0,0,0
DB 97,110,97,108,111,103,0,0,0
DB 16,16,17,16,16
DB 0,0,0
DB 0,0,0
DB 97,110,97,108,111,103,0,0,0
DB 16,16,16,21,16
DB 0,0,0
DB 0,0,0,0,0,0,0,0,0
DB 48,'rogrammed',0,34,'y',0
DB 48,'aul',0,44,'ay'
DB 0,0,0,0,0,0,0,0,0
hi_dli
PHA
TXA
PHA
LDX #$E0
LDA #$41
STA $D40A
STX $D01A
STA $D01B
LDX #$3C
dli8loop
LDA starfield,X
STA $D40A
STA $D004
STX $D012
DEC starfield,X
TXA
LSR A
BCC dli98skip
DEC starfield,X
dli98skip
DEX
BNE dli8loop
STX $D40A
STX $D01A
LDA #$01
STA $D01B
LDX #$6D
dli9loop
TXA
ASL A
STA $D40A
STA $D017
CLC
ADC #$40
STA $D016
LDA starfield+$3C,X
STA $D004
STX $D012
DEC starfield+$3C,X
TXA
LSR A
BCC dli99skip
DEC starfield+$3C,X
dli99skip
DEX
BNE dli9loop
STX $D004
DEC decay
BPL decayin
LDX note
CPX #$28
BNE ok_note
LDX #$00
ok_note
LDA pitch,X
STA $D200
CLC
ADC #$01
STA $D202
LSR A
STA $D204
CLC
ADC #$01
STA $D206
INX
STX note
LDA #$07
STA decay
decayin
PLA
TAX
PLA
RTI
decay = $DB
note = $DC
pitch
DB 72,110,74,111,72,110,74,111
DB 64,126,66,127,64,126,66,127
DB 72,110,74,111,72,110,74,111
DB 64,126,66,127,64,126,66,127
DB 64,74,84,94,62,72,82,92
rub_memory
LDY #$00
TYA
rub_loop
STA ($DE),Y
INY
BNE rub_loop
INC $DF
DEX
BNE rub_loop
RTS
pm_init
LDA #LOW play1
STA $DE
LDA #HIGH play1
STA $DF
LDX #$03
JSR rub_memory
LDX #$00
loop5
LDA $D20A
LDY left_to_right
BNE is_skip
CMP #$2F
BCC loop5
CMP #$CF
BCS loop5
is_skip
STA starfield,X
LDA #$01
STA pmbase+$0300,X
INX
BNE loop5
RTS
left_to_right
DB $00
time_to_die
LDA #$C8
STA $D3
loop88
STA $D40A
LDA $D20A
AND #$70
STA display_list
LDY #$40
exploding
LDX #$03
blowing
LDA $D20A
STA $D004,X
STA $D012,X
DEX
BPL blowing
STA $D00C
STA $D011
AND #$07
TAX
LDA $D20A
AND #$EF
STA $D200,X
DEY
BNE exploding
DEC $D3
BNE loop88
LDA #$30
STA display_list
LDA #$00
STA $D00C
RTS
try_hi_score
LDA $D4
BEQ first_game
LDA #LOW hi_start
STA $D5
LDA #HIGH hi_start
STA $D6
LDX #$00
hs1loop
LDY #$00
hs2loop
LDA ($D5),Y
CMP score,Y
BCC a_new_hi
BNE hs1skip
INY
CPY #$05
BNE hs2loop
hs1skip
LDA $D5
CLC
ADC #$14
STA $D5
BCC hs2skip
INC $D6
hs2skip
INX
CPX #$05
BNE hs1loop
RTS
a_new_hi
JMP add_high_score
first_game
INC $D4
RTS
add_high_score
STX $D9
LDA #LOW [hi_line+60]
STA $D5
LDA #HIGH [hi_line+60]
STA $D6
LDA #$04
SEC
SBC $D9
TAX
ah1loop
BEQ ah1skip
LDA $D5
CLC
ADC #$14
STA $D7
LDA $D6
ADC #$00
STA $D8
LDY #$13
ah2loop
LDA ($D5),Y
STA ($D7),Y
DEY
BPL ah2loop
LDA $D5
SEC
SBC #$14
STA $D5
BCS ah2skip
DEC $D6
ah2skip
DEX
BPL ah1loop
ah1skip
LDA #LOW [hi_line+$03]
STA $D5
LDA #HIGH [hi_line+$04]
STA $D6
LDA $D9
ASL A
ASL A
PHA
CLC
ADC $D5
STA $D5
BCC ah3skip
INC $D6
ah3skip
PLA
ASL A
ASL A
CLC
ADC $D5
STA $D5
BCC ah4skip
INC $D6
ah4skip
LDY #$07
ah3loop
LDA name_buffer,Y
TAX
LDA name_characters,X
STA ($D5),Y
DEY
BPL ah3loop
LDA $D5
CLC
ADC #$09
STA $D7
LDA $D6
ADC #$00
STA $D8
LDY #$04
ah4loop
LDA score,Y
STA ($D7),Y
DEY
BPL ah4loop
LDY #$00
en1loop
JSR delay
LDA #$FF
STA ($D5),Y
JSR delay
LDA name_buffer,Y
TAX
LDA name_characters,X
STA ($D5),Y
LDA $D010
BEQ en5skip
LDA $D300
AND #$0F
CMP #$07
BNE en1skip
INY
CPY #$08
BMI en1loop
LDY #$00
BPL en1loop
en1skip
CMP #$0B
BNE en2skip
DEY
BPL en1loop
LDY #$07
BPL en1loop
en2skip
CMP #$0D
BNE en3skip
LDA name_buffer,Y
SEC
SBC #$01
BPL en4skip
LDA #$24
BPL en4skip
en3skip
CMP #$0E
BNE en1loop
LDA name_buffer,Y
CLC
ADC #$01
CMP #$25
BMI en4skip
LDA #$00
en4skip
STA name_buffer,Y
JMP en1loop
en5skip
LDA $D010
BEQ en5skip
RTS
delay
JSR vb_wait
JSR vb_waste
JSR vb_wait
JSR vb_waste
JSR vb_wait
JMP vb_waste
name_characters
DB 0
a_char SET 97
ECHO 26
DB a_char
a_char SET a_char+$01
ENDM
a_char SET 80
ECHO 10
DB a_char
a_char SET a_char+$01
ENDM
name_buffer
DB 0,0,0,0,0,0,0,0
busted
LDA #$00
STA $D400
STA $D20E
STA $D40E
STA $D208
LDA #$03
STA $D20F
LDA #LOW blister
STA $D402
LDA #HIGH blister
STA $D403
LDA #HIGH pmbase
STA $D409
LDA #$0C
STA $D017
LDA #$00
STA $D018
LDA #$23
STA $D400
LDA #$0E
STA $D201
STA $D203
LDX #$01
STX $D200
INX
STX $D202
bl1loop
LDX #$7F
bl2loop
LDA $D20A
STA pmbase,X
DEX
BPL bl2loop
BMI bl1loop
blister
ECHO 14
DB $42
DW bline
DB $02
ENDM
DB $42
DW bline
DB $41
DW blister
bline
DB 0,1,2,3,4,5,6,7
DB 8,9,10,11,12,13,14,15
DB 0,1,2,3,4,5,6,7
DB 8,9,10,11,12,13,14,15
DB 0,1,2,3,4,5,6,7
DB 8,9,10,11,12,13,14,15
DB 8,9,10,11,12,13,14,15
DB 0,1,2,3,4,5,6,7
DB 8,9,10,11,12,13,14,15
DB 0,1,2,3,4,5,6,7
DB 8,9,10,11,12,13,14,15
DB 0,1,2,3,4,5,6,7
s_letter
DB 15,255,255,255,255,80
DB 255,255,255,255,255,245
DB 255,255,255,255,255,245
DB 255,255,255,255,255,245
DB 238,238,238,238,238,230
DB 238,238,238,238,238,230
DB 238,238,238,238,238,230
DB 238,238,238,238,238,230
DB 221,221,221,221,221,215
DB 221,221,221,221,221,215
DB 221,221,112,13,221,215
DB 221,221,112,13,221,215
DB 204,204,128,0,0,0
DB 204,204,128,0,0,0
DB 204,204,128,0,0,0
DB 204,204,128,0,0,0
DB 187,187,187,187,187,144
DB 187,187,187,187,187,185
DB 187,187,187,187,187,185
DB 187,187,187,187,187,185
DB 170,170,170,170,170,170
DB 170,170,170,170,170,170
DB 170,170,170,170,170,170
DB 10,170,170,170,170,170
DB 0,0,0,9,153,155
DB 0,0,0,9,153,155
DB 0,0,0,9,153,155
DB 0,0,0,9,153,155
DB 136,136,192,8,136,140
DB 136,136,192,8,136,140
DB 136,136,136,136,136,140
DB 136,136,136,136,136,140
DB 119,119,119,119,119,126
DB 119,119,119,119,119,126
DB 119,119,119,119,119,126
DB 119,119,119,119,119,126
DB 102,102,102,102,102,111
DB 102,102,102,102,102,111
DB 102,102,102,102,102,111
DB 6,102,102,102,102,240
t_letter
DB 255,255,255,255,255,246
DB 255,255,255,255,255,246
DB 255,255,255,255,255,246
DB 255,255,255,255,255,246
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 221,221,221,221,221,216
DB 221,221,221,221,221,216
DB 221,128,221,216,13,216
DB 0,0,221,216,0,0
DB 0,0,204,201,0,0
DB 0,0,204,201,0,0
DB 0,0,204,201,0,0
DB 0,0,204,201,0,0
DB 0,0,187,186,0,0
DB 0,0,187,186,0,0
DB 0,0,187,186,0,0
DB 0,0,187,186,0,0
DB 0,0,170,171,0,0
DB 0,0,170,171,0,0
DB 0,0,170,171,0,0
DB 0,0,170,171,0,0
DB 0,0,153,156,0,0
DB 0,0,153,156,0,0
DB 0,0,153,156,0,0
DB 0,0,153,156,0,0
DB 0,0,136,141,0,0
DB 0,0,136,141,0,0
DB 0,0,136,141,0,0
DB 0,0,136,141,0,0
DB 0,0,119,126,0,0
DB 0,0,119,126,0,0
DB 0,0,119,126,0,0
DB 0,0,119,126,0,0
DB 0,0,102,111,0,0
DB 0,0,102,111,0,0
DB 0,0,102,111,0,0
DB 0,0,102,111,0,0
a_letter
DB 15,255,255,255,255,96
DB 15,255,255,255,255,96
DB 255,255,255,255,255,246
DB 255,255,255,255,255,246
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 221,221,221,221,221,216
DB 221,221,221,221,221,216
DB 221,221,128,13,221,216
DB 221,221,128,13,221,216
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 170,170,170,170,170,171
DB 170,170,170,170,170,171
DB 170,170,170,170,170,171
DB 170,170,170,170,170,171
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
r_letter
DB 255,255,255,255,255,96
DB 255,255,255,255,255,96
DB 255,255,255,255,255,246
DB 255,255,255,255,255,246
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 238,238,238,238,238,231
DB 221,221,221,221,221,216
DB 221,221,221,221,221,216
DB 221,221,128,13,221,216
DB 221,221,128,13,221,216
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 204,204,144,12,204,201
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 187,187,160,11,187,186
DB 170,170,170,170,170,176
DB 170,170,170,170,171,0
DB 170,170,170,170,171,0
DB 170,170,170,170,170,176
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 153,153,192,9,153,156
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 136,136,208,8,136,141
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 119,119,224,7,119,126
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
DB 102,102,240,6,102,111
rid_letters
DB 8,136,136,136,136,136
DB 153,153,153,153,153,153
DB 170,170,170,170,170,170
DB 187,187,187,187,187,187
DB 192,12,192,0,192,12
DB 208,208,221,13,208,208
DB 224,224,238,14,224,224
DB 240,15,255,15,240,240
DB 240,240,255,15,240,240
DB 224,224,238,14,224,224
DB 208,208,221,13,208,208
DB 192,192,192,0,192,12
DB 187,187,187,187,187,187
DB 170,170,170,170,170,170
DB 153,153,153,153,153,153
DB 8,136,136,136,136,136
er_letters
DB 136,136,136,136,0,0
DB 153,153,153,153,144,0
DB 170,170,170,170,160,0
DB 187,187,187,187,176,0
DB 192,0,192,12,192,0
DB 208,221,208,208,208,0
DB 224,238,224,224,224,0
DB 240,15,240,15,240,0
DB 240,255,240,240,240,0
DB 224,238,224,224,224,0
DB 208,221,208,208,208,0
DB 192,0,192,192,192,0
DB 187,187,187,187,176,0
DB 170,170,170,170,160,0
DB 153,153,153,153,144,0
DB 136,136,136,136,0,0
ship_x
ship_y = ship_x+$0100
ship_direction = ship_y+$0100
ship_stage = ship_direction+$0100
ship_counter = ship_stage+$0100
end begining