Spy Plane

24K Cassette or 32K Disk
by Mark Comeau


Your mission, should you choose to accept it, is to recover the lost plans to the top secret satellite. You will be flying a superpowered, highly maneuverable spy plane. You must dodge enemy lasers, rockets and an active volcano. You will either succeed or die in the process. Seven cases of plans must be recovered from the seven multi-colored screens. Report to the base immediately and get your spy plane flying!

Spy Plane is a fast moving, BASIC game that will test your arcade skills to the limit. You must fly your plane through a long cavern full of lasers and missiles. The objective is to capture the seven cases of plans that were stolen from your government base. Only one case is present in the cavern at once. If you get all seven cases, the intermission comes up, you are rewarded 100 points and get an extra man.

You get ten points for every case recovered and 100 points for every set of cases. After seven cases, the lasers fire faster, and the missiles come out of the silos faster.

Running the game

When you run the game, the screen will go blank for thirty seconds. After that the Spy Plane logo will appear (if you typed it in correctly). Press the fire button and hold it down to see the score display screen. Let go of the button, and the game will begin. If you are hit or you collide with anything, hold down the button to see your score and how many men you have. If you press START on the score display, the game will end.

The program

Spy Plane uses player-missile graphics and character sets in graphics mode 2+16. In this mode you can create graphics 7-type graphics, but you can display them a lot more quickly. When you run the program, the screen will turn white for twenty seconds, then blue for ten seconds. While the screen is white, the computer is setting up the character sets. While the screen is blue, the computer is setting up the player-missile graphics.

[Spy Plane screen shot]

When programming a BASIC game, use anything that you can get. I used Tom Hudson's P/M mover from ANALOG #10 and Steven Pogatch's character set initializer from ANALOG #8. Both do their job effectively, and I am sure that you can hack them out of there for your own use.

The main objective with a BASIC game is not to make it too slow; you should make your main loop as small as possible.

If you took at Lines 1330-2280, you will notice that all of the screens are displayed with print statements. If you want to make your own screen, just modify the print statements. If you want lasers or something special, you will have to modify the screen subroutines. It isn't that hard, I promise you!

Type in the program exactly as it appears. Be careful with the data statements. Use D:CHECK or C:CHECK to check your work.

One of the best ways to learn about how to make your own games is to analyze other people's games. When you finish typing in this game, improve it! Change it! Learn it! That's how I learned to make games.

Program breakdown
Lines Function
60-100 Initial title
160-300 Main loop
210-450 Death
460-620 GOTO screen
630-690 Screen #1 (Turns radar)
700-820 Screen #2 (Fires laser)
830-960 Screen #3 (Fires missile)
970-1080 Screen #4 (Fires laser)
1090-1150 Screen #5 (Volcano)
1160-1310 Screen #6 (Fires laser)
1320-2290 Displays screens
2300-2420 Screen #7 (Fires laser)
2430-2590 Intermission
2600-2880 Score display
2890-2980 Game over display
2990-3090 Enters data for case pos.
3100-3170 Data for case positions
3180-3190 DIMension everything
3220-3320 P/M mover -- Tom Hudson
3330-3380 Char.Set initializer -- Steven Pogatch
3390-3740 Char.Set data
3750-3780 P/M mover data
3790-3840 P/M graphics data
Variables used
A For P/M mover
C Color of character under player
D1$ 1st piece of dying plane
D2$ 2nd piece of dying plane
E Also character number of laser
E Random number for laser
FL Counter for screen subroutines
LGO$ Characters of logo
MN Number of planes
NB Number of screens
P(E) Positions of cases
PD DRAWTO position of laser
PE DRAWTO position of laser
PMC Data for player facing left
PMD Data for player facing right
POS Players' current shape
PX Horizontal position of laser
PY Vertical position of laser
PO$ Data for player
P1$ Data for player
P2$ Data for missile (screen #3)
S Stick position
SC Score
SCR Screen number
T Varied uses
X Horizontal position of player
Y Vertical position of player
Z$ Data for blank
BASIC Listing

SPYPLANE.LST is available in ATASCII format.

This BASIC listing uses an image to display special characters









Checksum Data
1 DATA 62,334,58,584,70,259,976,412,94
4,518,793,852,842,41,365,7110
150 DATA 731,164,816,62,11,526,116,871
,565,431,714,231,733,28,362,6361
300 DATA 150,81,596,87,719,361,619,794
,976,673,114,663,666,782,977,8258
450 DATA 95,98,101,61,254,950,100,431,
81,414,159,447,813,745,934,5683
600 DATA 84,87,90,953,149,693,700,707,
710,39,947,636,79,283,428,6585
750 DATA 433,442,449,621,108,711,614,6
01,959,903,230,169,173,638,311,7362
900 DATA 52,651,772,987,684,511,997,97
4,661,376,310,310,441,444,461,8631
1050 DATA 941,946,989,450,212,52,804,9
12,151,989,810,215,789,652,440,9352
1200 DATA 579,434,453,460,467,477,484,
213,316,997,889,288,923,832,286,8098
1350 DATA 637,916,917,918,919,125,546,
446,136,778,796,932,965,337,338,9706
1500 DATA 532,819,149,239,505,178,326,
923,882,803,934,292,85,862,27,7556
1650 DATA 446,253,448,837,450,668,606,
14,803,943,378,944,80,596,326,7792
1800 DATA 321,388,285,86,821,681,88,81
0,952,306,92,481,258,65,790,6424
1950 DATA 371,795,842,190,620,153,782,
926,19,815,272,894,864,739,734,9016
2100 DATA 732,688,981,482,688,789,935,
388,1,522,801,732,708,606,373,9426
2250 DATA 652,638,708,8,796,33,791,258
,202,151,177,597,607,443,947,7008
2400 DATA 996,895,795,547,716,164,49,2
92,907,196,1,168,6,187,996,6915
2550 DATA 539,221,206,85,301,326,988,4
22,406,785,984,935,265,741,751,7955
2700 DATA 298,325,614,748,789,74,517,2
83,61,988,370,402,479,611,71,6630
2850 DATA 851,926,692,897,939,111,752,
902,874,47,388,866,22,324,287,8878
3000 DATA 327,426,571,28,485,980,467,8
47,503,930,12,890,94,536,536,7632
3150 DATA 531,540,546,418,6,66,38,727,
82,84,86,717,51,53,394,4339
3300 DATA 540,111,877,567,954,582,709,
377,738,903,92,222,989,757,392,8810
3450 DATA 272,455,385,88,901,382,378,1
15,796,241,67,938,305,452,671,6446
3600 DATA 441,405,96,342,996,8,982,814
,782,107,302,186,269,393,584,6707
3750 DATA 883,970,239,418,915,313,942,
944,338,575,934,825,8296

Previous | Contents | Next

Original text copyright 1984 by ANALOG Computing. Reprinted with permission by the Digital ANALOG Archive.