Compute!s Second Book of Commodore 64 Games
Compute!s Second Book of Commodore 64 Games
————
FRIENDS
- >
-
OF ACPL
wi
o7ne
794.82
C739
i lt —
(794.82 C739 aad
Compute!'s second book o
commodore €4 games
TRIALSA REFERENCE/REFE
RRAY, CENTER
DEC. 17 1986 Ae.
(Mc FRIENDS
OF ACPL
COMPUTE!'s SECOND BOOK O I ,
| COMMODORE |
‘GAMES
COMPUTE! Publications,Inc.
Greensboro, North Carolina
Commodore 64 is a trademark of Commodore Electronics, Ltd.
Allen County Public f
Ft. Wayne, Indiana
Reproduction or translation of any part of this work beyond that permitted by Sec-
tions 107 and 108 of the United States Copyright Act without the written permission
of the copyright owner is unlawful. J
ISBN 0-942386-64-7
10987654321
COMPUTE! Publications, Inc., Post Office Box 5406, Greensboro, NC 27403, (919)
275-9809, is one of the ABC Publishing Companies and is not associated with any
manufacturer of personal computers. Commodore 64 is a registered trademark of
Commodore Electronics Limited.
ii
7068957
Contents
IS iloted ages cha cS te gee Nee dt ci, Vv
Chapter 1. Ideas, Concepts, and Applications ........... 1
Thinking It Through: How to Plan a Videogame
IR CD toe) i a. ake 3
Chapter 2. Text Adventure Games ................... 23
Puzzles, Palaces, and Pilgrims: Writing Text Adventures
for the Commodore 64
Ce a, SG RIE ete ee ee as ihe 25
Time Capsule
atid Flare tse od sorvicny 3 Os See sane dh hes. 44
we're creating together will do it. At the same time, you'll un-
doubtedly think of things I didn’t think of, and by the time
you're through reading this chapter, you may well have a com-
plete game design of your own ready for you to sit down and
start programming. I hope so!
4
Ideas, Concepts, and Applications ]
beneath them, jumping up, and bumping into the floor the en-
emy is walking on. This is only a small variation from the Don-
key Kong play mechanic—yet it makes a huge difference in the
feel and play of the game.
There isn’t anything wrong in adapting ideas from other
games, as long as you make enough changes that the game be-
comes your own. It’s only natural for you to look at what an-
other designer did with a game and think, “Why wasn’t this .
done, too?” Donkey Kong, for instance, obviously owes a debt to
Space Panic, a ladder game, by way of Jump Man, which in-
troduced the press-the-button-to-jump play mechanic. But the
Donkey Kong designers got rid of the holes and added moving
obstacles—barrels and flames. The designer of Lode Runner (by
Doug Smith, for Brgderbund) also started with Space Panic—
you'll recognize the “stonework” floors and ladders—but he
went in quite a different direction from Donkey Kong. Hole dig-
ging was kept, but other features were added, and each new
screen became a new geometric puzzle. Both Lode Runner and
Donkey Kong stand on the shoulders of the earlier game, Space
Panic. But both are so different that they qualify as genuinely
new and creative games.
Wherever your game idea comes from, though, you will
eventually need to take all these things into account. You'll
have to come up with a play mechanic and a milieu and adapt
any real-world features that might be part of your game. And
since you have known and loved (and probably hated!) quite a
few videogames, you'll be borrowing or avoiding features from
other gamewrights’ work, whether you mean to or not.
his fleet up the river and has anchored it around the castle, lay-
ing siege to your fortress. His primitive cannons are pounding
away at the castle walls, gradually wearing them down. Even if
you manage to survive the artillery barrage, you can’t get any
food supplies or ammunition into or out of the castle.
In the daytime, you can fight back by firing your four can-
nons at the enemy fleet. However, you have only a limited sup-
ply of ammunition. Every shot must count.
At night, you can put out a small boat and attach mines to
the sides of enemy ships, just under the waterline. When the
mines explode in the morning, any ships you've successfully
mined sink. During the night you can also use your small boat
to run the blockade, getting more ammunition from your
confederates on shore.
When your castle is worn completely away, or when your
little boat is sunk, you lose; when all the enemy ships are sunk
or so damaged that they sail away, you win.
Not much of a story. No characterization and the plot is
pretty repetitive. But that’s deceptive. The player supplies the
characterization. The main character is the player, of course.
And the player supplies the plot complications. In early plays of
the game, the guy in the little boat is going to be pretty clumsy
and slow, and the cannoneer in the castle is not going to be
much of a shot. But after a while, the boatman will be rowing
circles around the anchored siege ships, and the cannoneer will
score hits with every projectile.
6
Ideas, Concepts, and Applications ]
Simplicity
Four different ways to program the same basic idea. Which one
is best? I don’t know. I think the first two are too complicated
for a fast-action game, but you might not think so, and they
have the advantage of giving the player more freedom of
choice. I think the last one, the single-cannon solution, is
acceptable (and much easier to program), but having four can-
nons appeals to me more. If you left it just to my own pref-
erence, I’d choose the four cannons.
Does this choice seem familiar? It might. The arcade game
Missile Command had three missile bases, each with its own
supply of missiles. But when it was translated to the home ma-
chine, it was simplified: one base instead of three. We faced a
similar choice here. Time after time you will have to make such
choices between simplicity and complexity. —
You want a general rule? If you're a novice programmer, go
for simplicity—it’s easier to program.
] Ideas, Concepts, and Applications
10
Ideas, Concepts, and Applications ]
decisions that need to be made. You can use this outline for al-
most any arcade game plan.
Play mechanic. What does the player control in the game,
and how? (This is what we've already discussed; we ended up
with a cannon and a boat in the different phases of the game,
both controlled with a joystick.)
Simulation. In what ways does the game correspond to
real-world activities? To what degree can you duplicate reality
without making the game too complex to play? (This was when
I decided to let the cannon aim, but not determine range, and
when I decided to use the joystick to move the boat in only
four possible directions.)
Milieu. What is the setting? What do we see on the screen
besides the moving figures? This is more than just decoration. If
you have an airplane game, clouds drifting across the screen
add to the illusion of reality. It makes the player feel more like
he’s really flying. (In our game, let’s make the flow of the river
left to right. That means that the banks of the river will be
across the top and bottom of the screen. By using character
graphics, we can PRINT each shore in a single string! The castle
will be right in the middle, but because the TV screen is wider
than it is tall, the castle will be rectangular, too. It will be a top
view, as a bird sees it.)
Missiles. This is a generic term. The player's figure is the
screen object whose movement the player controls. Once a mis-
sile is launched, however, the player has little or no control
over it. The missile can be the ball in a football or baseball
simulation, the bullet in a shoot-out, or even the player-figure’s
fist if it can be “launched” against an enemy. (The only missile
we use is the ball fired by the cannon, which goes straight in
the direction it’s fired until it either hits an enemy ship or goes
off the screen.)
Collisions. What happens when the player-figure bumps
into something on the screen? The figure can respond to the
object it bumped into as if it were:
1. Transparent. The figure just keeps going as if the object
weren't there.
2. A wall. The figure can’t move any further toward the object,
but if it collides at an angle, it can slide along it.
3. A tar baby. Once the figure touches the object, it’s stuck
there.
11
| Ideas, Concepts, and Applications
staying alive, and for the number of cannonballs you have left
at the end of a game “‘day.”)
Communication. The player needs to be told a lot of infor-
mation during the game. Did my missile hit its target? Did the
enemy score a hit against me? What in the world am I sup-
posed to do? Which object do I control? The single most useful
tool you have in communicating with the player is sound. Dif-
ferent sounds mean different things—and you don’t have to be
watching a particular spot on the screen to get the message.
However, explosions and movement also communicate. You'll
also use displays of numbers on the screen to tell the player his
score—numbers or little pictures (icons) to show how many
“lives” the player has left. You'll want introductory and closing
screens to give more involved messages or tell part of the story
in words.
(In our game, a popping sound says that the cannon has
been fired or the mine has been attached; a low “boing” says
that a piece of the castle has been blown up; a swishing sound
says that the tide is about to change; an explosion says that a
ship has been hit; a much louder, long one, followed by a glug-
glug sound, says that a ship has sunk; and sad and happy mu-
sic signify defeat and victory. Explosions are shown by making
a character flash white several times. The score is constantly
displayed on screen.)
Win-lose conditions. The game has to end sometime, even
if you’re ending only a current level. You have to decide what
conditions end the game, and then check from time to time to
see if those conditions have been met. The simplest way to do
this is to have a variable—xXxX, for instance—that usually has a
value of 0. Then, in any subroutine that has the power to end
the game (usually a collision subroutine or a timer subroutine),
XX is set to 1 for defeat and 2 for victory. A line in the main
loop reads ON XX GOTO 900,920. That jump will occur only
when it’s time for the game to end. But because it occurs only
from the main loop, it’s much easier to end the FOR-NEXT
loops you might be in at the time.
(In our game, you can lose when all four of your cannons
or your entire castle is destroyed, or when you've used up all
your ammunition and mines without destroying the entire en-
emy fleet. You can win by scoring a certain number of cannon-
bali hits against the enemy and/or by sinking a certain number
13
] Ideas, Concepts, and Applications
14
Ideas, Concepts, and Applications ]
TREATS ieTAC SRT a ne
him fire again. BASIC would lose too much speed trying to do
it all at once.
If the player didn’t say to fire, then we check to see if he
wants to aim. If so, we jump to the subroutine that moves the
cannon.
When that’s over, we check to see if it’s time for an en-
emy ship to fire again. If it is, we jump to the other main loop.
Otherwise, we go back and start over. Simple enough—the
main loop will be fast and tight.
The main loop for the nighttime phase is not so tight. The
fire button only places a mine (there’s no missile to keep track
of), but movement is more complex. The cannon can never
run into anything, but the boat can run into enemy ships, the
shore, or the castle. The main loop must check to see if the
player wants to move. If so, we jump to the movement sub-
routine. The subroutine checks to see if the boat has bumped
into anything, and if so, what. It might jump to one of the
routines that handle collisions, and the movement is changed
accordingly. Also, there is the pull of the current that can
gradually move the boat whether the player wants it to move
or not. This can’t be executed every time through the loop, or
the player will never be able to row against the current. Fi-
nally, we check for the end of the phase and close the loop.
16
Ideas, Concepts, and Applications ]
19
] Ideas, Concepts, and Applications
20
Ideas, Concepts, and Applications ]
22
2
Text
Adventure
Games
Puzzles, Palaces,
and Pilgrims
Writing Text Adventures for the
Commodore 64
Gary McGath
25
2 Text Adventure Games
Take gem
Examine shield
North
Mapmaking
While the first steps in designing a text adventure are to create
the story line (what will happen) and the milieu (where things
will happen), we'll assume you've already done that. (To get
an idea of how to create the story line and milieu, read
“Thinking It Through: How to Plan a Videogame” elsewhere
in this book.) We’ll be concerned mainly with the actual
programming techniques you'll use, as well as some of the
more practical design processes in this article.
Once you’ve decided on what your world is, and what
will happen in it, you need to design a map of the rooms.
(Remember that they don’t have to actually be rooms; we're
using that as a generic term. They can be places on a road,
paths in a forest, or even corners of a field.) Draw a map with
a box for each room and connecting lines labeled with the
directions that lead from one room to another (north or south,
for instance). Give each room a number and a short descrip-
tion. The room in which the character starts should be room 1.
Figure 1 shows the map of an example text adventure game.
26
Text Adventure Games 2
24
D Tower
22 23
Guest E South W Guest
Room 2 Hallway Room 1
8
Armory EW End of E W Art
North Gallery
Corridor
9 4 10
Royal E W North Council
Treasury Corridor Chamber
U |N
2 3 il
Courtyard [E Wj} Castle EW} Entry EW! Chapel
Gate Hall
s s
N
12 6 13
Kitchen E WwW South EW Dining
Corridor Room
4 s
N
16 15
Dungeon E W Dungeon Servants’
Entrance Quarters
X
2 Text Adventure Games ~~
28
Text Adventure Games 2
Assigning Variables
Now you're ready to actually begin programming your text
adventure game. We'll go through the process step by step,
outlining and illustrating exactly how to do it.
The first step is to to assign variables to the important
parameters of the adventure. It’s easier to remember what
these variables mean than it is recall a number; using these
varables also makes it simple to alter the program if you later
decide to change the parameters. One of the first statements of
the program, even before the DIM statements, should look
something like:
18 NR=21:NV=14 :NO=16:NI=19 :ND=6
NR is the number of rooms, NV the number of verbs, NO the
number of objects, NI the number of items, and ND the num-
ber of different directions the character can move in. (Note:
An object is any word that can be used as the second word of
a command, whether it corresponds to a physical object or
not. An item is an object that is located in a room; it usually
designates a physical object.)
Adventure Arrays
Next you need to translate the layout of your adventure into a
set of data structures. Let’s look at each of the required struc-
tures and the purpose it serves.
Access array. This is the translation of your map into
terms the computer can understand. It’s defined by the
statement:
DIM AC(NR,ND)
To use the access array (AC), the directions in which the
character moves must be translated into numbers. Let’s as-
sume the following translation:
North =] South = 2
East =3 West = 4
U =5 Down = 6
The value of AC(NR,ND) specifies which room is reached by
going in direction ND from room NR. If this value is 0, it
means the character can’t go that way from that room.
29
2 Text Adventure Games
30
Text Adventure Games 2
will have the same value. This lets the program be indifferent
to the word that was actually typed.
Object token array. This array translates the second word
of a command into a number. It is defined by:
DIM OT(NO)
Its elements correspond to the object array. However, the ele-
ments can be a little trickier than the verb token array’s ele-
ments. Remember that not all objects are items. It’s convenient
to have the object tokens fall into two series. Items, which are
objects that have a particular location, can be numbered from
1 to NI. Other objects, including directions and magic words,
can be numbered starting with 101. This makes it easy to add
new items without disrupting your numbering system.
Item description array. This contains a text description
for each item. Its definition is:
DIM IDS$(NI)
The text description of an item could be the same as the word
in the object array for it, but often is a little more. For in-
stance, the object array might have the word LAMP for an ob-
ject described in the item description array as “Old oil lamp.”
Item location array. This locates each item and is
defined by:
DIM IL(NI)
There are three possibilities for where an item is located. It
could be in a room, in the character’s inventory, or nowhere at
all. The third case indicates an item that’s been destroyed or
one that’s not yet available. A positive number in the item
location array indicates which room the item is in. A zero says
that the character is carrying the item. A negative one specifies
that the item isn’t to be found.
Item flag array. This, is similar to the room flag array in
concept, except that it specifies conditions that are true or false
of items rather than rooms. It is defined by:
DIM FI(ND
(It would make sense to call the array IF, but that’s a reserved
word in BASIC.) Specific bits in the elements of the array are
used to indicate such properties as whether the item can be
carried or not.
31
2 Text Adventure Games
More Variables
Finally you'll need to set a few more variables, such as:
VB Verb token obtained from the last command entered.
OB Object token obtained from the last command. It can
be 0 if only one word was typed.
RM Room the character occupies.
NC Number of items the character is carrying.
MI Maximum number of items the character may carry.
NI may never exceed MI.
MC Move counter. This indicates how many moves have
occurred since the adventure started. It can serve as a timer for
various events.
DF Description request flag. This variable is set to 0 after
the current room is described to the player. If a description is
required before the next move (because the character went into
a new room or decided to LOOK around again), it’s set to 1 to
get the description displayed. Leaving it at 0 saves having the
same description repeated every move.
Specific situations will undoubtedly call for a few more
variables, but the arrays and variables listed here will provide
the major part of what a simple adventure needs.
Room Description
Whenever the character moves into a new room, the
surroundings change. If the player asks to LOOK at the room
again, the room description routine provides this information.
32
Text Adventure Games 2
Room
Description
Automatic
Routines
Command
INPUT and
Parsing
Action
Routines
33
2 Text Adventure Games
Automatic Routines
The next section of the main loop takes care of events that
aren’t directly caused by the player’s commands. We can call
these routines automatic, for they happen independently of
what's typed in. An adventure can be written without any
automatic routines, but having even a few things outside the
player’s control gives a much greater sense of realism and
excitement.
Automatic routines can be controlled by the move
counter, random numbers, or a combination of the two. The
commands the player gives can have an effect as well. A pas-
sage may close four turns after the character enters a room, or
a wraith may start stalking the character only after he’s
touched a crypt. Extra variables can be used to indicate the
move on which something will happen. In the following
example routine, MM is a variable indicating the move in
which a wall collapses, opening a new passage between rooms
8 and 9.
788 MC=MC+1
71@ IF MC<>MM THEN 882
720 AC(8,3) = 9: AC(9,4) = 8
738 IF RM=8 THEN PRINT "THE EASTERN";
748 IF RM=9 THEN PRINT "THE WESTERN";
75@ IF RM=8 OR RM=9 THEN PRINT " WALL COLLAPSES, O
PENING A NEW PASSAGE."
34
Text Adventure Games 2
ns ane acre at eee
wall has fallen, and the character can now move in that
direction.
The position of automatic routines in the program is im-
portant. Usually they should come after the room description,
so that the player finds out where his or her character is
before being told what happens. Some automatic routines,
however, are better placed after the player has completed the
move. This conveys the feeling that what happened immedi-
ately followed the move. For instance, if a flock of bats carries
the character out of a room every time he tries to enter, the
player may not even see the room until it’s discovered how to
get the bats out.
35
2 Text Adventure Games
The two strings, C1$ and C2$, are the first and second
words of the command. The next step is to translate these
strings into the verb token and the object token. This means
looking them up in the verb array and object array and getting
the corresponding elements of the verb token array and object
token array. Lines 1220 and 1240 in the section of the routine
above do this for the verb and object respectively. Note the
checks and messages displayed if the verb and/or object do
not exist in the appropriate array.
The two strings must be truncated to the number of
significant characters in order to match the strings in the ar-
rays. Line 1200 assumes truncation to 6 characters.
In the case of a one-word command, C2$ will be the
empty string, so the object token will be set to 0 (line 1250).
Action Routines
Once the program has the command in the form of the verb
token and the object token, it’s ready to determine what those
commands will do. We can call the parts of the program that
do this the action routines. This section will be the largest por-
tion of the program; however, since it consists of a lot of small
pieces, it isn’t very difficult to write.
Before figuring out what a specific verb does, the program
should do some general checking to determine whether the
object is reasonable. If the object is an item, it has to be either
in the room or in the character's inventory. If it’s somewhere
else, the character can’t do anything with it. If the object isn’t
an item, then only a few verbs will work with it, so the pro-
gram should make sure that the verb is an appropriate one.
NORTH, for example, GO
EAT, or OPEN. Only
isn’tmakes ane the characte rcan TA TAKE,
something
36
Text Adventure Games 2
a7
2 Text Adventure Games
READER ARSEFATT AES DEP TED SS
falls
variable is out of range. Thus, if the variable is 9, it
through line 2000 to line 2010, where it would access the first
line listed, 3800 (9—8=1). Using this technique, we can call
up to 16 different verb routines in the above example.
Each of the line numbers in lines 2000 and 2010 is the
start of the action routine for a particular verb.
Certain verbs will be standard in most adventures, so they
can be discussed in some detail here. Others will have effects
that are peculiar to the situation. They’re the ones that make
your adventure unique. Once you've seen how the standard
verbs work, though, you shouldn’t have much trouble adding
your own special ones.
Directional verbs and GO. There are two ways a player
might specify moving in a direction. Either a simple direction
(for instance, EAST or just E), or GO and a direction (GO
EAST) could be entered. It isn’t much trouble to include both.
A common area of the program can be used to handle all
directional movement, using a direction variable that the spe-
cific commands set before accessing the actual movement.
For a one-word command, the direction acts as the verb.
In this case, it just sets the direction variable and goes to the
common routine. The line below illustrates the one-word com-
mand NORTH.
3188 D=1:GOTO 3629
You'll recall that earlier we decided to use 1 as the directional
number for NORTH. All that’s done in the above line is to set
D (the directional variable) to 1 and then GOTO a line that
checks to see if that direction leads anywhere. (More on that
in a bit.)
_ However, the GO command has to translate its object into
a direction before going to the common routine. It’s easy to do
this if the direction objects are numbered appropriately, so that
subtracting a number from the object token gives the
right in-
dex into the access array. Take a look at the follow
ing lines:
3708 IF OB<=108 OR OB>106 THEN ggag
3718 D=OB-198:GOTO 3629
Notice that if the object (OB) is not a direction
(checked for in
line 3700), then the program jumps to line 8000,
where the
message THAT'S SILLY! is printed. The direction
variable D is
set in line 3710. If OB equals 101, for instance, signifying
that
38
Text Adventure Games 2
This assumes that flag CF (in line 4200) in the item flag array
indicates whether or not an item can be taken. If your charac-
ter already has the item, then line 4210 prints a message to
that effect. Note that a limit of 5 items is set in line 4220. If IC
(the variable keeping track of the numbers of items carried)
equals 5, the character can’t take anything else. Line 4230 ac-
tually TAKEs the item by placing it in the character’s
39
2 Text Adventure Games
QUIT. Even simpler, except that it’s nice to make sure the
player really means it:
4600 PRINT "DO YOU REALLY WANT TO QUIT";
4618 INPUT YS
4620 IF LEFTS$(YS$,1)<>"Y" THEN 19008
4638 END
40
Text Adventure Games 2
41
2 Text Adventure Games
oe
42
Strategy
Games
2
wg
wr
a.2 J
a
oat
Sea Route to
India:
A Historical Simulation for the 64
M. J. Winter
63
3 Strategy Games
that was
historical accounts. The result was a historical game
both interesting and informative.
64
MERLE Strategy Games 3
LEN ET RLU AA CI PA
Hope and pick up your Indian pilot at Malindi, you can be at-
tacked at any time by Arab pirates.
Ship’s Log
At the end of each week, the program assesses your situation.
If you sailed far enough to visit the Canary or Cape Verde
Islands, then your water, food, supplies, and crew morale are
restored. The ship’s log is updated, and the game map shows
your progress. Lines 91-93 define the variable DT$ (dots);
three characters are needed for each dot. On the map, one dot
represents 200 miles. Then, if there are no fatal shortages
(such as no water or food or crew morale at zero), the voyage
continues.
Your ship’s record is also updated at the end of each
week. Weeks Out and Miles Sailed are increased, while the
other catagories of Food, Water, Supplies, Gold, and Crew Morale
can be raised or lowered, depending on what happened that
week. Whenever your food or supplies fall below one, or your
crew’s morale below two, the game ends. You can find the
checks for these situations in lines 11010-11035.
Occasionally, you'll come across another ship on the high
seas. It’s your choice whether you want to approach or flee. If
it’s a friendly ship, its captain may challenge you to a race.
Program line 3060 places the ships at the right side of the
screen; a string of DELETEs is printed several times to move
the ships to the left. If you win the race, your crew is happier;
not only can you win the wager, but their morale can increase.
However, they become disgruntled by a loss, and their morale
will fall.
Running short of food? Explorers often hunted whales
while at sea, and you can do the same. Lines 1000-1250 con-
tain the whale hunting routine. The whales are PRINTed
within a long string (F$) of shifted spaces. The string is cy-
clically rearranged and the leftmost 40 characters PRINTed
each time. The program checks the keyboard, then moves the
whales until you press H, which drops the harpoon. The pro-
gram then alternately moves the whales and lowers the
harpoon.
To check whether the harpoon hits a whale, the screen is
opened for INPUT in line 1100. The entire row of the screen
to the right of the harpoon is considered INPUT. If the first
character is not a shifted space, a whale has been hit.
65
3 Strategy Games
Landfall
The subroutine beginning at line 4000 describes the sighting
of a river mouth. Landing offers you a chance to get food and
water and to cheer up the crew. Shore leave was important
even then! Sometimes, depending on the random result of line
4060, natives appear. As many early explorers discovered, they
are unpredictable. Sometimes they’re friendly and trade gold
for goods (which raises your crew’s morale); other times they
attack.
If they do attack, type RUN and press RETURN quickly.
The clock is set to 0 in line 4320 to time how long it took you
to enter RUN. After you press RETURN, the program looks at
the clock. If more than 200 jiffies have passed (line 4340), the
natives attack and kill you. If you were fast, your landing
party escapes, although the food and water it gathered is lost.
The same timing technique is used when the Arab pirates’
dhows attack. The Arabs are fiercely determined to protect
their trading routes. Vasco da Gama himself was nearly
trapped by them more than once.
India at Last
If you make the right decisions, avoid starving to death, keep
your crew happy, and outrun Arab pirates, you may find your
way to India. If so, you'll be congratulated. To play the
simulation again, respond to the prompt on the screen. You
can review the instructions if you want, or go directly to an-
other game.
It took the Portuguese more than one voyage to reach the
riches of the subcontinent; if you made it the first time, you're
either a very good explorer or very lucky. Whatever the result,
you'll be sure to have fun and learn at the same time.
Asea Route to Indiar :
For mistake-proof
program entry,-be sure to read “The Automatic Proofreader,” Appendix C
76 DIM M%(7),M$(6):X=RND(-TI) :rem 45
(pt FG=1.6:KB=151:HP=38: PRINT" {CLR}": IFPEEK(1924)=3
2THENKB=197 : HP=29 srem 54
ay M$ (@)=""sM$(1)="STOPPED AT CANARY ISLANDS":M$(5
)="SIGHTED CALICUT" :rem 281
73 DH$="{2 SPACES}KLI{DOWN}{3 LEFT}£*3{RVS}
{3 SPACES}&*3{DowN}{4 LEFT}{4 SPACES} {DOWN}
{4 LEFT}{4 SPACES}{DOWN}{5 LEFT}{RVS}£
{3 SPACES} {OFF}£{DOwN}{3 LEFT}£L3{DOWN}
{4 LEFT}&*3({RVST{6 SPACES} {OFF}£" zrem 122
66
Strategy Games 3
67
3 Strategy Games
EH SCONE A REO AL TTA
69
3 Strategy Games
FRE AERSINR ELE
70
Strategy Games 3
72
ELE
Strategy Games 3
SE REPIL
E IE BIE CLES
73
3 Strategy Games
BEB I A LE LIASEE
75
Quatrainment
Sean Puckett
64 Version by Gregg Peele
Figure 1. Patterns
Corners Centers
Strategy Games “S
and place the cursor in the lower right corner of the board,
when you press the fire button, the pattern will change to:
The two squares in the far right column that were on are now
off. Three other squares (two on the bottom row, the third up
and to the left of the bottom right corner) are now toggled on.
You continue to turn squares on and off in this manner, trying
to duplicate the master pattern on the right. Don’t despair if
you seem to be creating jumbled patterns; there is a way to re-
create the master pattern.
When the game board and the master pattern match, your
weighted score is displayed, based on the elapsed time and the
number of moves made. Strive for the lowest score.
77
3 Strategy Games
LOT
EES AAA TORY
Quatrainment
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
19 PRINT" {CLR}":POKE214,POKE211,13 1@:PRINT: :A$="QU
ATRAINMENT ": POKE646,@ :rem 196
28 FORTI1=1TOLEN(AS) :PRINTMIDS(AS$,T1,1);:FORT=1TO29
@ sNEXT :NEXT: FORT=1TO509 : NEXT :rem 214
3@ RN=16:REMFOR RANDOM INITIAL GRID CHANGE LINE 38
TO RN=RND(@)*15+1 :rem 159
49 PRINT" {CLR}";TAB(26);"TIME: "™ :rem 123
45 PRINT"{DOWN}{14 LEFT }MOVES:";MO :rem 124
50 PRINT"{3 DOWN}{14 LEFT}EDGES KDJ£Bq" :rem 210
53 PRINT"{3 DOWN}{14 LEFT}CORNERS {RVS} {OFF}£EV3
{DOWN}{2 LEFT}kKV]j" :rem 137
54 PRINT"{2 DOWN}{14 LEFT}CENTERS {UP}£D3{DOWN}
{LEFT} {RVS}KFI{OFF} EVI" :rem 14
198 GOTO149 :rem 95
11@ FORL=1T04:FORB=1T04:D(L,B)=PEEK(C(L,B))-9:NEXT
B:NEXTL: RETURN :rem 608
115 FORT=1T0500 :NEXT :rem 241
12@ FORL=1T04: FORB=1T04:IFB(L,B)<>D(L,B)THENRETURN
:rem 161
138 NEXT :NEXT:SC=VAL(TIS)/16+M0/5:PRINT"{CLR}
{6 DOWN}"TAB(1@)"YOU HAVE MATCHED IT! {DOWN}"
:rem 198
135 PRINTTAB(15);"SCORE:";INT(SC);"{DOWN}":rem 134
136 PRINTTAB(11);"PLAY AGAIN Y OR N?" :rem 77
137 IFPEEK(197)<>39ANDPEEK(197)<>25THEN137:rem 188
138 IF PEEK(197)=25THENRUN :rem 10
139 END :rem 116
146 CO=54272 :POKE53281,12:POKE53280,@0 :rem 42
1590 FORJ=O@TO2@STEP5 :rem 170
166 FORT=1924TO1804STEP4@
: POKET+J,16@ :rem 219
178 POKET+54272+J,1:NEXT:NEXT :rem 14
186 FORJ=@TO2@STEP5 :rem 173
1990 FORT=19024T019024+29
: POKET+J* 49, 168: POKET+5427 2+
J* 48,1 :rem 159
200 NEXT:NEXT :rem 74
218 POKE 1569,79:POKE1569+CO,7:POKE1577,8@:POKEL57
7+CO,7 :rem 191
228 POKE1889, 76 :POKE1889+54272,7:POKE1897,122:POKE
1897+CO,7 :rem 112
230 FORT=1609TO1849STEP4@ :POKET,116:POKE T+CO,7:PO
KET+8 , 106: POKET+8+CO, 7 :NEXT :rem 240
248 FORT=1 :POKET,11
570 9 T01
:POKET+320,111:P
576 OKE T
+CO, 7: POKET+320+CO,7:NEXT :rem 4
258 FORJ=O : FORT=1611
0TO T01611+24
4ST 8STEP4@
EP2 : POKET
+J ,66 : POKET+CO+J , 7: NEXT :NEXT :rem 208
260 FORT=1658T01650+6 : POKET, 64 : POKET+CO, 7: POKET+88
,64:POKET+89+CO , 7 :rem 58
Strategy Games 3
79
3 Strategy Games
CU Se SeDV
FORX=1T04: FORY=1T04:B(X,Y)=PEEK(A(X,Y))
:rem 169
IFB(X,Y)=32THENB(X,Y)=B(X, Y)-9:GOTO679: rem 254
B(X,Y)=B(X,Y) :rem 185
NEXTY :NEXTX : RETURN :rem 32
FORY=1T04 : FORX=1T04 : READP s:rem 135
IFPTHENPOKEC (X,Y) ,86:POKEC(X,Y)+CO,1 :rem 219
NEXTX :NEXTY : RETURN z:rem 26
DATALS 1,/1717°1,0,0,1; 178), 8,190 Lyisi;i trem S2
DATAD,2,0,0, O,1,1,8, O,1,1,89, 9,0,0,8 zrem 75
DATAO,1,1,9, 1,0,0,1, 1,0,9,1, 6,1,1,9 srem 89
DATA1;1,1,ly7 Lylelye1 454 78574 i sen oe
DATAL,@,8,1, 0,1,1,98, 0,1,1,0, 1,0,0,1 srem 82
DATAL,1,1,1, 0,0,0,8, G,08,0,0, 1,1,1,1 srem 83
DATAG,8,8,1, 0©,0,8,1, 8,8,8,1, 9,8,8,1 :rem 88
DATA1,©0,0,1, 0,0,0,0, 8,0,0,8, 1,0,8,1 :rem 85
DATAD,8,02,0, 6,8,9,0, 8,8,8,80, 8,0,8,8 :rem 77
DATAZ ,&,0,0, 1,9,8,1, 1,9,8,1, 8,8,8,8 z:rem 82
REM REVERSE :rem 152
POKEA(C,D),109-PEEK(A(C,D) ) :POKEA(C,D)+1,119-(
PEEK(A(C,D)+1) ) :rem 24
820 POKEA(C,D)+40,110-PEEK(A(C,D) +40) :POKEA(C,D)+4
1,109-PEEK(A(C,D)+41) :rem 78
836 POKEA(C,D)+CO,2:POKEA(C,D)+1+CO,2 :rem 79
846 POKEA(C,D)+49+CO,2:POKEA(C,D)+41+CO,2:P1=0:P2=
@:P3=0 :P4=0 :rem 185
860 RETURN :rem 126
878 REM SET DATA POINTER :rem 178
918 REM{2 SPACES}WHICH ONES{2 SPACES}TO CHANGE
:rem 111
920 IFX+Y<>2THEN95@ :rem 127
938 FORC=2T0O3 :D=1:GOSUB819:NEXT: FORD=1TO3 :C=1:GOSU
B818:NEXT :rem 35
948 D=2:C=2:GOSUB810:RETURN :rem 169
958 IF X+Y<>8THENI8G :rem 139
968 FORC=3TO2STEP-1 :D=4:GOSUB810:NEXT:FOR D=4TO2ST
EP-1:C=4:GOSUB81@ :NEXT :rem 98
978 C=3:D=3:GOSUB810 :RETURN :rem 174
980 IF X+Y<>5THEN1®O2G :rem 173
998 IF X<>4THEN 1820 z:rem 41
1000 FORC=3TO D=1 :GOSUB8194
2STE :NEXT:
P-1:
FORD=1T03:C
=4:GOSUB810 :NEXT :rem 229
1918 C=3:D=2:GOSUB81@:RETURN :rem 207
1020 IFX+Y<>5THEN1@62 :rem 211
1038 IFX<>1THEN1O69 :rem 76
1948 FORC=2TO3 :D=4:GOSUB
:NEXT: FORD=4TO2ST
8198 EP-1:C
=1:GOSUB81@ :NEXT :rem 235
1958 C=2:D=3:GOSUB819 :RETURN :rem 211
1868 REM CHECK EDGES :rem 113
80
Strategy Games 3
81
Campaign
Manager
Todd Heimarck
Power Broker
The convention is deadlocked. You control a large block of un-
decided delegates. It’s all up to you.
The vice president from Rhode Island has good charisma
and intelligence, but you know his health is not the best. The
reverend from Arkansas may look good on television, but he’s
too conservative. And though the senator from Arizona is
experienced, he’s not very bright. Perhaps the New Jersey doc-
tor? No, you decide that the senator from Ohio is best; your
party will also get the home region advantage in the populous
Heartland.
Now it’s the Republicans’ turn. Of the five choices, the
woman from South Carolina is the best all-around candidate.
She has high charisma and fundraising appeal, which trans-
lates into effective television ads.
It’s time to hit the campaign trail.
82
Strategy Games 3
ASSERTS
HAC RT STO
Election Night
Initial returns from New England show that the Republicans
swept the region, but the larger states of New York and Penn-
sylvania went Democratic. The Republicans won most states
from Ohio to the Great Plains, but the Democrats picked up
the Southern Atlantic states, except for Florida. Texas went
with the G.O.P., while the rest of the region went Democratic.
The Rocky Mountain states were solidly Republican. But the
Democrats won the Pacific States.
The final results show the Republicans winning six of
nine regions, capturing the presidency with 315 electoral votes
to the Democrats’ 223. Three of the four biggest states voted
Democratic, but Ohio and Illinois, with 47 electoral votes be-
tween them, made the difference. The TV ads in the last week
edged those two key states into the Republican camp.
to type in. We’ve solved that problem with MLX, the “Ma-
chine Language Editor.” By using MLX, you can almost guar-
antee an error-free program the first time you type in Campaign
Manager. Make sure you read Appendix D, ‘Using the Machine
Language Editor: MLX” and have a copy of the MLX program
saved on tape or disk before you begin entering Campaign
Manager. It will still take time, but MLX will help immensely.
Before loading MLX, you have to protect part of BASIC
memory by typing the following line in direct mode (with no
line numbers):
POKE 642,40:SYS 58260
You'll see the usual cold start message, but there will be less
than the normal 39K of free memory. You can now load MLX
and begin typing in Campaign Manager.
MLX will ask for two addresses. They are:
Starting address: 2049
Ending address: 9518
The program uses about 10K, although it was crunched down
to about 7K. Since it’s such a long program, you'll probably
enter it in parts. If you do, make sure you follow the MLX
instructions for loading and saving. Type in the POKE
642,40:SYS 58260 before loading MLX at the start of each session.
MLX also has a numeric keypad option, which should save
you some time.
When you are finished typing in Campaign Manager, save
it to tape or disk, perhaps even making a couple of backup
copies as well. Turn your 64 off, then on again, load the pro-
gram as if it were a BASIC program, (LOAD" filename’’,8 for
disk or LOAD“filename” for tape) and type RUN. The first few
bytes look like a BASIC program that says SYS 2061. You
don’t have to remember the SYS; it’s built into the program.
Managing the Campaign
You have nine weeks to campaign. Each week you have to
plan your moves and enter them on the itinerary. You have
two defensive moves, resting and fundraising. And you have
two ways to gain votes, campaigning (personal appearances)
and advertising on television.
At the beginning of each turn, you'll see a medium-
resolution map of the U.S. that indicates which way each state
is leaning. The MAP option allows you to move a cursor
84
Strategy Games 3
85
rategy Games
3 Set CNS
Choosing a Candidate
At the beginning of Campaign Manager, you choose which
party will go first, and decide if one candidate will be the
incumbent. You might want to flip a coin, the winner choosing
either a party or whether to play first or second. In testing, we
found that the second player has the slight advantage of mak-
ing the last move. Being incumbent gives you some extra
campaigning strength and is not recommended if you want an
even game.
Note that all choices are made with a joystick. (It’s easier
to play if each player has a joystick; although one can be
86
Strategy Games 3
Me SOR EC RTL RA NO A eae E
87
3 Strategy Games
Here I Stand
Next to the personality factors are the candidate’s stands on
various issues. You see five issues, each with a sliding scale of
one (at the far left, representing liberal) to six (conservative). A
Republican who wants to get tough on crime, for example, will
have a rank of six. A Democrat who wants to solve the un-
employment problem will have a rating of one in that category.
Candidates will range from two to five on the issues of
agriculture and education. On the other three issues, the
Democrats will have stands from one to four; the Republicans
will go from three to six.
You will generally get more votes with middle-of-the-
road-beliefs. Look for a candidate with twos or threes if you’re
the Democrat. Fours and fives are best for the Republican. The
exceptions are agriculture and education, where you do best
with a three or a four.
Common sense tells you which issues are important in
most states. Agriculture is a major issue in the farming states.
Your stand on defense makes a difference in states with a lot
of military-related industry.
The candidate’s personality is generally more crucial than
the stands on issues. If you have a lot of charisma, intelli-
gence, and appeal, it doesn’t matter that you may be radical
on one or two issues.
If you have five very bad candidates, hit RUN/ STOP-
RESTORE, type RUN, and try again. It’s not much fun to run a
campaign you're destined to lose.
88
EMAAR EET A: NCR Strategy Games 3
2A aa
89
3 Strategy Games
There are two reasons to keep your health up. First, when
you campaign in a state, you get an extra campaign point for
every 32 health points you possess. Second, if your health falls
below eight you look haggard and stutter; campaigning does
you no good.
The treasurer counts dollars, the doctor counts your
health, and your pollster counts votes.
The pollster does three things. First, you get a bar chart
which shows how many electoral votes would go to the
Democrats and Republicans if the election were to be held to-
day. You can see it to the left of the map. The gray bar marked
U represents undecided states too close to call. Second, you
have a map of the U.S. to show you, at a glance, which way
each state is leaning. Republican states are red, Democratic
states are blue. These first two services are part of the stan-
dard pollster’s contract, and cost you nothing. Of course, if
your money drops lower than one million, you have to stop
paying the pollster; all you get is the map.
The third service is the most important—regional polls.
To get a poll of all states in a region, move the cursor to POLL
(below MAP on the main menu) and press the fire button
twice. You'll see a bar chart showing which way each state in
the region is leaning, from one (half a character wide) to four
(two characters). The poll reflects the political situation at the
beginning of the week; whatever campaigning you have
planned for the week is not included. A state with a thin bar
is just barely inclined toward one side or the other and can
usually be taken with a single campaign stop.
Don’t use polls in the first couple of weeks—most states
start out fairly even and you will not learn much. But polling
can be vital towards the end of the game. If New York is
firmly committed to you, forget about further efforts in that
state. And if you find a whole region weakly supporting your
Opponent, you can hit it with TV ads and score a few dozen
electoral votes.
Regional polls cost $100,000 and are not available if you
begin the week with less than a million dollars.
_ The final character in your entourage is the jet pilot. Your
jet can carry you on short hops within a region for almost
nothing. But if you travel to a new region, you shell out
$100,000 for fuel and maintenance. As long as you're in a re-
gion, you might as well stay there a few days, to avoid spend-
90
Strategy Games 3
Getting Votes
Each state begins with 255 undecided voter points. Your main
goal is to use campaigning and television advertising to move
a few points from undecided to firmly committed to you. And
you have to maintain your health and money.
The effects of a personal appearance can vary. You get up
to 3 points for each issue (if the state agrees with your stance),
1 point for every 32 health points, and up to 24 for your cam-
paign effectiveness (CHAR*2 + INTL), plus a 2-point bonus if
it’s the second day you've been in the state.
If your money is down to 0, you get no campaign points
at all. If your health is below 8, you get only a single vote.
Each campaign stop decreases your health and money.
And it’s possible to run out in the middle of the week, making
each succeeding visit ineffective until you rest or raise money.
Let’s say you go to Connecticut and impress 23 of the 255
undecideds. The pool of available voters is reduced by that
number. Half of 23 (11 points, in this case, due to rounding
off the decimal) is charged against your health. Half again (5
times $100,000, or $500,000) is subtracted from your money.
In addition, each state has some people who don’t agree with
you, so a quarter of your total (five points) goes to your oppo-
nent as a sort of backlash. If you had previously been in a dif-
ferent region, travel expenses of $100,000 are subtracted.
Television advertising is a little different. It affects every
state in the region and quickly swings voters to your side. To
advertise, first travel to the region and, before doing any ads,
91
3 Strategy Games
OEE
Be EE
92
TERS
ee Strategy Games 3
San ee er re eR
Game Etiquette .
There are a few traditional rules of Campaign Manager
etiquette:
93
f
/
j
| 3 Strategy Games
;
; _
wy,
;
| ;
94
Strategy Games 3
2469 :832,181,009,104,941,015,035
2475 :0809,032,145,251,032,181,953
2481 :809,232,208,224,201,032,859
2487 :208,9004,0909,192,145,251,224
2493 :200,192,025,248,801,096,175
2499 :169,008,145,251,168,024,184
2585 :169,026,181,251,133,251,108
2511 :144,002,230,252,096,812,175
2517 :001,003,002,014,160,004,141
2523 :185,212,809,153,8 32,
208,250
2529 :136,016,247,173,9017,208,254
2535 :009,064,141,917,208,096,254
2541 :832,247,009,832,110,018,165
2547 :032,185,010,096,169,147,114
2553 :032,210,255,160, 003,032,173
2559 :087,010,169,144,932,219,139
2565 9255,169,171,038 -220,255 ,073
2571 :169,163,032,101,019,169,143
2577 :167,832,210,255,162,815,090
2583 :160,003,032,082,019,169,223
2589 :170,0 32,
218, 255,169, 154,251
2595 :932,219,255,169,169,0932,125
2601 :101,019,169,144,032,210,195
2607 :255,169,165,032,2 19,
255,169
2613 :202,208,223,160,003,032,113
2619 :882,010,169,174,8032,210,224
2625 :255,169,172,032,161,019,836
2631 :169,173,032,210,255,169,9055
2637 :146,032,21¥0,255,896,169,217
2643 :013,032,2198,255,169,832,826
2649 :032,210,255,136,2 08,
258,156
2655 :169,818,032,218,255,896,1987
2661 :160,025,032,2190,255,136,151
2667 :208,250,096,169,804,133,199
2673 2:254,169,044,133,253,169, 141
2679 :8954,133,252,169,000,133,892
2685 :251,169,800,168,162,815,122
2691 :177,251,288,8087,832,1608,198
2697 :010,202,208,246,096,145,08290
2703 :253,200,208,240,041,063,124
2709 :170,189,192,055,8041,192,220
2715 :017,247,145,247,8996,024,163
2721 :169,026,101,251,133,251,0868
2727 :144,002,230,252,169,040, 236
2733 :024,101,253,133,253,144,057
2739 :002,230,254,168,000,096,153
2745 :169,015,133,249,169,216,112
2751 :133,254,169,944,133,253,153
2757 :133,247,169,004,133,248,1907
96
Strategy Games 3
2763 :169,034,133,252,169,173,1989
2769 :133,251,169,824,177,251,181
2775 :201,089,248,043,133,002,966
2781 :041,963,178,189,192,855,163
2787 :841,015,145,253,169,192,818
2793 :836,892,248,025,848 098,088
,
2799 :189,128,034,832,147,8198, 0983
2885 :208,015,888,907,169,192,148
2811 :032,155,018,288,806,189 083
,
2817 :121,034,832,147,8010,234,067
2823 :136,016,283,169,025,0249868 ,
2829 :101,251,133,251,144,002,127
2835 :230,252,198,249, 208,001,133
2841 :096,169,048,024,1801,247,190
2847 :133,247,144,002,238,248,011
2853 :169,048,8024,191,253,133,245
2859 :253,144,165,238,254 208,017
,
2865 :161,173,018,208,8972,181,914
2871 :162,074,974,974,168,194,199
2877 :229,162,974,141,932,298,139
2883 :140,036,298,096,831,967,133
2889 :865,077,080,965,973,9071,248
2895 :878,032,977,965,978,065,218
2991 :871,8969,082,013,000,162,226
2997 :918,169,9098,924,032,248,061
2913 :255,162,908,189,871,9011,917
2919 :248,006,032,219,255,232,054
2925 :208,245,160,005,169,801,129
2931 :141,134,9002,169,818,032,099
2937 :210,255,162,049,173,134,9071
2943 :8@02,973,903,141,134,9002,226
2949 :169,163,932,210,255,202,140
2955 :208,258,136,208,235,169,065
2961 :146,876,218,255,169,146,123
2967 :133,254,169,0800,133,253,969
2973 :162,900,232,236,137,036,192
2979 :248,047,189,137,936,133,177
2985 :249,041,007,133,247,165243 ,
2991 :249,074,974,074,074,041,249
2997 :007,133,248,160,902,032,251
3003 :230,011,165,247,169,001233
,
3009 :832,230,011,169, 255,160,926
3015 :005,145,253,169,8005,024,032
3021 2101, 253,133,253,076,159,156
3827 :@11,169,9098,178,168,185,146
3033 :068,034,157,080,120,232,060
3039 :232,200,192,052,208,243,070
3045 :096,145,253, 200,200,145, 244
3051 :253,096,169,145,133,248,255
97
3 Strategy Games
3p ee a 2 ae a
eg Bei, 133,082, Bid fas peer ae
:003,17
5 :001, 037,250,024, 105,001,179*
98
FPS Strategy Games 3
RR SR EOE ATT
100
ARTE SRRStrategy Games 3
eee eee
3939 :162,049,138,032,210,255,177
3945 :232,224, 208, 247,056,
055,103
3951 :832,248,255 624,
,224208,070
,
3957 :230,173,812,143,010 170,887
,
3963 :189,220,033,841,063,141042 ,
3969 :171,006, 232,189, 220,033,212
3975 :041,063,141,172, 806,162, 208
3981 :018,160, 002,024,032, 240,185
3987 :255,174,621,143,189,040201 ,
3993 :037,032,218, 255,174,013, 106
3999 :143,048,014, 168,004,189, 205
4005 :049,016,032,21¥, 255,232,191
4011 :136,208,246,240,013,162,152
4017 :000,189, 228,016,240, 296,988
4023 :032,219,255 208, 245, ,
,232 085
4929 :169,158,133,247,169 020,061
,
4935 :133,248,168,000,173,821,162
4041 :143,285,035,037, 240,202,895
4047 :160,012,177, 247,248, 006,025
4953 :032,210, 255,200, 208,246,084
4059 :173,621,143,240,032,162222 ,
4965 :010,189,117,620,041,963,153
4971 :157,248,006,202, 208,245,017
4077 :169,620,133,253,169,822235 ,
4083 :133,254,169,909,133,167,084
4089 :162,218,160,016, 032,184, 245
4995 :620,162,004,160,168,189182 ,
4101 :616,143,009,048,153,839,157
4187 :007,152,056,233,048,168,155
4113 :202,016,248,162,004,160,033
4119 :160,152,024,125,027,143,142
4125 :168,185,046,007,009 064, 252
,
4131 :153,046,007,152,056 233,179
,
4137 :@40,041, 248,168, 202,016,244
4143 :232,096,083,069,078,032,125
4149 :071,079,086, 032,082,069, 216
4155 :080,032,082,069, 086,032,184
4161 :032,877,083,032,968 082,183
,
4167 :062,032,086,061, 080,032,168
4173 :071,069,0878,032,027,044,142
4179 :000,027, 000, 255,044
044,197 ,
4185 :068,869,077,079,067,082,019
4191 :065,984,073,067,032,067,227
4197 :065,878,868,973,068 065,006
,
4203 :084,069,032,044,044,044,168
4209 :044,044,044,000,255,156,144
4215 :047,032,067,072,065 082,228
,
4221 :032,088,900,255,047,032067 ,
4227 :083,984,965,077,032,088,048
101
3 Strategy Games
4527 :147,818,202,208,003,876,861
4533 :197,018,292,208,003,876,117
4539 :239,8018,282,208,086,832,124
4545 :043,029,076,155,8202,283 017,
4551 :298,088,032,022,019 208,184
,
4557 :205,076,003,818, 202,208,149
4563 :014,8032,046,017, 248,197,245
4569 :173,911,143,141,032,143,9892
4575 :876,141,9817,202,249,903,134
4581 :076,155,017,076,290,819,004
4587 :162,8000,169,128,024,189,859
4593 :032,143,168,169,9098,133,118
4599 :253,169,014,133, 254,169,215
4605 :030,133,167,976,184,920,095
4611 :032,235,017,174,832,143,124
4617 :189,127,036,202,956 253,194
,
4623 :127,036,072,1905,083,168,014
4629 :162,0903,032,163,028,201,998
4635 :8900,208,007,032,043,829,890
4641 :104,076,006,018,133,002,116
4647 :194,197,8002,176,003,876,085
4693 2:155,017,198,0 1/5, 032,214
02,
4659 :143,202,189,127,036,024,904
4665 :101,002,174,000,143,157,122
4671 :960,143,133,251,134,252288 ,
46077 :032,258,019,169,030,932,089
4683 :2190,255,165,251',919, 170,112
4689 :189,220,033,032,210,255,252
4695 :189,221,933,93 219, 255,903
2,
4701 :169,932 219, 255,189,
,903 2, 212
4707 :900,120,072,170,169,000,118
4713 :032,205,139,104,201,010,078
4719 :176,005,169,032,032 210,223
,
4725 :255,169,032,03 210, 255,046
2,
4731 :169,152,0327210, 255,173,090
4737 :932,143,009,048,032,210,091
4743 :255,206,000,143, 208,003,182
4749 :8976,007,020,076,0006,918,088
4755 :174,000,143,169,240,157,906
4761 :000,143,134,252,032,250,196
4767 :919,169,129,032,2198,255,205
4773 :162,900,189,112,021,240,121
4779 :006,032,210,255,232,208,090
4785 :245,173,032,143,909,0848,059
4791 :032,210,255,206,000,143,905
4797 :208,083,076,907,020,076,9067
4803 :155,817,174,000,143,169,085
4809 :255,157,000,143,134,252,118
4815 :832,250,019,169,154,032,095
103
tegy Games
32
4821 :210,255,162,900,189,125,130
4827 :021,240,006,032,218,255,215
4833 :232,208, 245,206, 800,143,235
4839 :208,003,076,007,020,076,189
4845 :155,017,174,000,143,169,127
4851 :000,157,000,143,134,252,161
4857 :032,258,019,169,155,032,138
4863 :210,255,169,098,162,005,122
4869 :032,210, 255,202, 208, 250, 138
4875 :206,000,143,208,003,076,135
4881 :007,820,076,155,017,173, 209
4887 :009,143,201,010,176,001,051
4893 :096,206,009,143,032,153,156
4899 :633,174,032,143,189,127,221
4905 :036,133,248, 202,189,127, 208
4911 :636,133,247,169,150,133,147
4917 :249,169,004,133,258,169, 803
4923 :047,133,251,133,252,166,917
4929 :247,228,248,208,003,876,051
4935 :846,917,165,249,024,105,165
4941 :040,133,249,144, 962,230,107
4947 :250,189,000,144, 133,253,828
4953 :133,254,162,004, 006,254,134
4959 :202,208,251,006, 254,176,168
4965 :828,169,037,133, 251,006,213
4971 :254,176,0620,169,832,133,123
4977 :251,006,254,176,812,169,213
4983 :037,133,252,006, 254,176, 209
4989 :004,169,032,133,252,160,1987
4995 :000,169,032,145,249 ,8
200,15
5001 :165,251,145,249, 200,165,032
5007 :252,145,249,169,447,133,114
5013 :251,133, 252
006, 253,17 ,
6,196
5819 :©28,169,042,133,252,006,817
5025 :253,176,020,169,032,133,176
5031 :252,006,253,176,812,169,811
5937 :042,133,251,0806, 253,176,019
5043 :004,169,032,133,251,168.169
5849 :007,165,251 ,145
249, ,8
200,17
5055 :165,252,145, 249, 230, 247,199
5861 :076,858,019,032, 103,023,252
5867 :174,032,143,232, 232, 232,224
5873 :160,031,024,032, 240,255,183
5879 :169,058,032,218, 255,162,877
5685 :003,160,013,032,163,028, 108
5091 :201,009, 208, 006,832,043, 205
5097 :829,876,208,819,201,010, 900
5183 :208,003,076,155,817,141,971
5109 :@32,143,076,155,017,169, 969
104
sR Strategy Games 3
TES Naan ETE
5115 :822,856,229,252,178,168,116
5121 :632,024 248,,032
255,996,,168
5127 :832,046 208,,017
003,076,,133
5133 :217,017,032,104,025,932,184
5139 :258,026,032,108,8 032,238
27,
5145 :132,827,876,122,0 169,056
17,
5151 :800,133,253,169,019,133, 217
5157 :254,169,038,133,167,162,184
5163 :049,160,020,076,1 020,040
84,
5169 :255,918,144, 168,213,211, 826
5175 :197,160,202,287,217,189, 283
5181 :168,000,255,160, 211,212,035
5187 :201,195, 203,168, 267,218,219
5193 :168,980 201,,255
202, 203,070
,
5199 :264,146, 205,818,168, 203,247
5205 :197,217,211,000,255,018,215
5211 :155,880,876, 091,849,032, 062
5217 :080,065,082,084,089,146,131
5223 :000,255,031,068,069,077,091
5229 :079,867,982,065,084,073,047
5235 :067,800,255, 882,069, 088,156
5241 :885,866,876,073,067,065,041
5247 :678,900,255,018,1 032,153
55,
5253 :073,878,067,985,077,066,867
5259 :069,078, 084,146,000, 255,003
5265 :G031,032,932,032,078,079,173
5271 :78,969,032,032,032,000,138
5277 :255,832,880,076, 065,089, 242
5283 :069,882,032,049,032,000,171
5289 :255,032,980,076,0 089,254
65,
5295 :669,882,032,058,032,000,184
5301 :000,000,000,134,251,132,186
5307 :252,208,011,200,152,024,810
5313 :101,251,133,251,144,002,051
5319 :230, 252,166,253, 228,254,046
5325 208,001, 253,164,133
230, 096,
5331 :167,824,032,248,255,160,065
5337 :000,162,255,177,251,016,954
5343 :016,200,177,251, 240,217,044
5349 :032,210,255, 202,016, 250,170
5355 :240,2 241,170, 223
200, 208, 09,
5361 :200,208,237,169,000,133,164
5367 :253,169,014,133, 254,169,215
5373 :146,032,210,255,169,144,185
5379 :032,218,255,169,0830,133,064
5385 :167,162,072,160,021,032,111
5391 :184,020,174,021,143,189, 234
5397 :037,037,041,063,141,071,155
5403 :004,173,0836,0837, 009,048,078
105
3 Strategy Games
ee
5409 :141,078,004,173,032,143,092
5415 :810,8010,010,024,1809,032,234
5421 :143,170,173,032,143,909263 ,
5427 :048,141,150,004,160,000,042
5433 :189,037,036,041,063,248,151
5439 :007,153,152,004, 232,200,043
5445 :208,242,096,009,058,0900,178
5451 :255,032,032,032,087,069,870
5457 :869,075,032,032,032,000,865
5463 :909,058,000,009,032,000,195
5469 :809,032,008,255,031,032,196
5475 :032,8967,965,077,080,065,229
5481 :073,971,8078,008, 255,032,182
5487 :032,984,086,8032,065,968, 222
5493 :083,8032,032,157,000,255,164
5499 :8032,032,070,085,078,068, 232
5585 :0982,865,073,083,008,255,175
5511 :032,032,082,069,083,084,005
5517 :832,032,032,032,000,255,912
5523 :018,155,032,077,065,080,062
5529 :032,032,932,032,032,932,989
5535 :800,255,032,080,079,076,169
5541 :8@76,032,632,032,032,032,145
5547 :000,255,146,150,082,9069,1905
5553 :067,079,078,083,073,668,113
5559 :869,082,000,255,084,082,243
5565 :965,086,069,076,032,032,037
5571 :032,032,154,000,0069,832,198
5577 :800,800,900,800,169,814,128
92983 1133 169,. 25
925,13 3 9
3 7254,15
2989 23169,028 ,13
{167 (169,030 ),3141
5595 :032,210,255,162,034,168,848
5601 :023,032,184,820,169,043,184
5607 :141,076,006,169,046,141,042
5613 :149,007,173,036,8037,208,079
5619 :011,169,020,162,808,032,133
5625 :210,255,202,208,2508,0996,1908
5631 :174,008,143,169,808,832,813
5637 :205,189,162,023,160,030886 ,
5643 :824,032,240,255,169,838,249
5649 :032,210,255,174,009,143,072
5655 :224,100,176,022,169,032,234
5061 :032,210,255,224,010,176,168
5667 :013,032,210,255,832,218,819
5673 :255,138,009,048,032,210,221
5679 :255,896,169,000,032,205,836
5685 :189,173,184,007,141,185,164
5691 :007,162,006,173,027,212,134
5697 :041,015,201,010,176,247,243
106
Strategy Games 3
107
3 Strategy Games
TITRE
Fee Ga
5997 :800,133,253,169,915,133,044
6003 :254,169,030,133,167,162,906
6909 :000,160,128,032,184 ,3
020,13
6915 :896,169,128,133,248,169,046
6021 :000,133,247,169,000,133,047
6027 :258,133,249,169,000,133,049
6933 :253,133,254,168,162,001,092
6839 :032,241,023,162,000,160,001
6045 :004,189,037,036,145,247,047
6051 :200,232,224,008, 208,245,000
6057 :162,008,172,954,925,136,214
6063 :230,253,165,253,201,019,007
6069 :208,003,076,225,023,169,117
6075 :255,145,247, 208,169,028, 207
6081 :145,247,200,169,042,145,117
6087 :247,200,165,253,0809,048,097
6993 :145,247,200,169,031,145,118
6099 :247,200,232,189,037,836,128
6195 :145,247,208,247,200,076,060
6111 :175,023,032,002,024,169,136
6117 :808,162,004,145,247,28008,219
6123 :202,208,250,076,017,024, 244
6129 :162,001,160,000,189,054,039
6135 :825,145,247,200,232,236,0852
6141 :854,025,208,244,096,162,918
6147 :081,189,089,025,145 ,7
247,18
6153 :200,23 2, 236,08 9,025, 288,231
6159 :244,096,169,001,133,253,143
6165 :133,254, 208,009,238, 253,084
6171 :165,253, 201,018, 208,001,897
6177 :896,230,248,169,009,824,041
6183 :101,249,133,249,169,880,172
6189 :161,250,133,250,032,241,928
6195 :823,166,249,160,004,165,859
6201 :253,073,048,145, 247,208,255
6207 :200,189,037,836,2408,0086,083
6213 :145,247,232, 200,208,245, 866
6219 :166, 253,189,127,036,133,211
6225 :250,172,054,025,136,165,115
6231 :254,0190,170,169,848,133,183
6237 :251,133,252,169,255,145,818
6243 :247,200,169,028,145,247,1ll11
6249 :200,169,042,145,247,200,084
6255 :169,154, 145
247, 200,16 ,
5,167
6261 :254,201,010,144,007,238,195
6267 :252,233,018,076,118,024, 068
6273 :101,251,133,251,165,252,902
6279 :145,247,200,165,251,145,808
6285 :247,200,169,032,145,247,157
108
Strategy Games 3
6585 :142,011,143,206,009,143,9071
SSM :104,032,207,025,032, 233,056
6597 :025,032,093,026,032,148,9833
6603 :026,076,115,025,133,802,068
6609 133,251,198, 251,165, 251,178
6615 :010,019,024,101, 251,133,232
6621 :251,133,253,169,146,133,026
6627 :252,169,145,133, 254,996,252
6633 :173,008,143,041,248, 208,938
6639 :085,169,001,133,255,896,138
6645 :169,003,024,109,921,143, 202
6651 :168,177, 251,133, 255,173,128
6657 :918,143,016, 993, 230,255,146
6663 :096,197,082, 208,009,169,176
6669 :002,032,087,826,169, 255,872
6675 :133,002,165,002,141,819, 216
6681 :143,173,008,143,160,005,145
6687 :074,136, 208, 252,032,887,052
6693 :926,173,922,143,032,087, 988
6699 :026,1608,0986,136,208,081,868
6705 :096,185,826,143, 209, 253,193
G/it :288,007,169,0803,032,987,849
6717 :026, 208, 238,170, 202,138,919
6f23 289,253, 208,007,169,0801,146
6729 :032,087,026, 208, 224, 232,114
6735 232,138, 209,253, 208,217,056
6741 :248,240,024,101, 255,133,054
6747 :255,896,168,005,177,251,@11
6753 2056,229,255,176, 004, 198, 247
6759 :255,208,243,145, 251,165,890
6765 :255,170,172,021,143, 200, 046
6771 :024,113,251,144,002,169, 859
6777 $255,145, 251, 1522.093;803,232
6783 :168,138,074,874,113,251,177
6789 2144,002,169,255,145,251,075
6795 096,070,255, 208,081,896, 097
6801 :173,808,143,856,229, 255, 241
6807 :176,902,169,008,141,008,135
6813 2143,070,255,288,001,996,162
6819 2173,009,143,856,229,255,804
6825 :176,002,169,008,141,009,154
6831 :143,8696,168,008,162,015, 239
6837 2173,021,143,248,062,162,154
6843 2240,134,251,162,052, 202, 204
6849 :208,003,132,002,096,189,055
6855 :000,144,837,251,248, 243,090
6861 ?200,208, 240,165, 002,824, 620
6867 2109,823,143,018,1809,922,115
6873 7143,109,008,143,144, 003,255
6879 2024,169,255,141,608,143,195
110
Strategy Games 3
111
3 Strategy Games
EY
7179 :032,044,926,070,255,032,214
7185 :093,026,076,251,027,8096,074
7191 :032,207,025,032,038,026,127
7197 :096,162,000,169,900,157,101
7203 :080,063,202,208,250,169,159
7209 :000,170,168,185,018,031,093
7215 :157,000,063,185,9018,931,245
7221 :157,964,063,232,232,232,9009
7227 :200,192,007,208, 236,185,063
7233 :010,031,157,800,963,157,227
7239 :081,963,157,002,063,185,030
7245 :@18,031,157,964,063,169,9867
7251 :252,141, 248,007,169, 253,129
7257 :141,249,867,162,007,169,9056
7263 £01 2,1
,039, 57
206),202 ,010,217
7269 :250,169,001,141,929 ,
298,131
7275 :169,001,141,016, 208,169,043
7281 :804,141,000,208,169,058,173
7287 :141,001,208,169,054,141,965
7293 :902,208,169,656,141,003,192
7299 :208,169,000,160,004,153,057
7305 :002,031,136,016,250,169,229
7311 :834,141,007,031,169,173,186
7317 :141,906,931,169,054,141,179
7323 :009,031,169,000,141,008,061
1329 43951,69 pO,6,10 9
233) 225¢eto
7335 :169,004,141,0 00, 208,152,873
1341, $032,250, 930,133; 252,150,290
#347 2032,250,030,133, 251,141,248
7353 :001,208,169,012,141,939,243
7359 :208,173,016,208,009,001,038
7365 :141,016,208,173,021,208,196
7371 :009,001,141,021, 208,032,103
7377 3026,031,173,187,931 ,
240,949
7383 :248,041,019,240,244,170,153
7389 :041,016,208,039,138,041,192
7395 :001,240,017,173,001 ,
208,099
7401 :197,251,240,227,198 ,
253,063
7407 :056,233,008,141,0801,208,118
7413 :208,217,173,001,208,197,225
7419 :252,248, 210,230, 253,024,182
7425 :105,008,141,001,248 ,
208,160
7431 :200,1 69,090 0,141, 939,
208,252
7143/7. 2:032,926,031,173,197,931,157
7443 :240,248,041,016, 208,007,011
7449 :169,012,141 ,939
208, ,
298,34
7455 :176,173,021,208,041 ,
254,136
7461 2:141,021, 288,165, 253,096,153
7467 :162,007,189,002,031,149,071
112
Strategy Games 3
7473 :247,202,016,248,169,001,164
7479 :141,048, 208,173,021, 208,078
7485 :069, 002,141,021, 208,032,218
7491 :026,031,173,107,031,240,163
7497 :248,106,176,020,106,176,137
7503 :867,106,176,118,106,176,052
7589 :@05,106,176,005,144 231,24
,
7515 :076,240,029,876, 231,038, 005
7521 :165,2 240, 221,173
48, ,003,123
7527 :208,056,233,004,141 003, 236
,
7533 :208,198,248,165, 248,196, 002
7539 :176,003,876, 036,039, 165,089
7545 :253,233,826,133, 253,176,171
7551 :002,198,254,165, 251,856,829
7557 :233,025,133,251,144,003,154
7563 :876,836,030,198, 252,076,039
7569 :036,830 201,929,,086
248,,165
7575 :240,169 208,824, ,200
003,,173
7581 :105,004,141, 003,208,230, 080
7587 :248,165,248, 106,176,123, 205
7593 :165,253,185,026,133 253, ,
08d
7599 :144,602, 238,254,165, 251,197
7605 :024,105,925,133, 251,144,995
7611 2104, 230, 252,076,036,030,147
7617 :165,247, 298,083,976, 966,190
7623 :629,173, 002,208,056, 233,132
7629 :064,141, 002,208,198, 247,237
7635 :165,247,106,144,076,165099 ,
7641 :253,233,001,133, 253,176,242
7647 :@02,198, 254,165, 251,056,125
7653 :233,001,133,251,176,957,056
7659 :198,252,076,036,030,165,224
7665 :247,261,049, 208,003,876, 001
7671 :066,829,173,002, 208,824, 237
7677 :105,004, 141,002, 208, 230,175
7683 :247,165, 247,106,144, 003,147
7689 :076,836, 030,165, 253,105,162
7695 :001,133,253,144,002 230,010
,
7701 :254,165,251, 024,185, 081,053
7707 :133,251,144, 005,230, 252,018
7713 :076,836,930,169,001,133,222
7719 :249,165,248,074,144,004,155
7725 :006,249, 006,249,165, 247,199
7731 :106,176,002,006,249,160238 ,
7737 :808,177,251,133,002,165,017
7743 :249,0 253, 208,038
49, ,169,005
7749 :192,036,002,048,013,165,013
7755 :002,041,063,170,189,120,148
7761 :034,133,002,076,1086,030, 206
113
3 Strategy Games
TO
eo FT SETS
7767 :088,007,169,000,133,002,222
7773 :076,1806,030,165,002,041,001
7779 :063,178,189,121,034,133,041
7785 :@02,162,015,160,016,024,228
7791 :032,248,255,169,149,032, 220
7797 :210,255,169,832,162,007,184
7803 :832,210,255, 202,016, 250,064
7809 :169,157,162,007,032,210,098
7815 :255,202,016, 250,165,002,901
7821 :208,003,076,066,029,041,052
7827 :963,010,170,189, 220,033,964
7833 :032,219,255,189,221,053,069
71839 2032, 210, 255,169 ,@32, 032,121
7845 :210,255,189,000,120,170,9085
7851 :201,019,176,005,169,032, 252
1857 2932,2 10,
255, 169,090,0 32, 107
7863 :205,189,169,029,0 32,
218,249
7869 :255,169,144,032, 210,255, 230
7875 :169,018 210,,032
255,169,9,24
7881 :160,032,210,255,165,002,081
7887 :041,063,162,000, 232,221,158
7893 2127,036,1/6, 250,138,105,021
7899 3176,932,210, 255,169,146, 183
71905. 2032, 210, 255, 076,066,829 ,125
7911 £173,021, 208,041,253,141,044
7917 :021,208,162,007,181,247,939
7923 :157,902,031, 202,016; 248,131
7929 :996,234,010,018,019,024,121
7935 :185,058,096,009,000,008,2508
7941 :900,0008,000,000,0990,192,197
7947 :192,224,248,224,1 92,
200,083
79ISS S299) 295,19 LAs pL oop3,
Oo eee
7959 129,153,255, 169,600,141, 202
7965 :107,031,173,000,220,041,089
7971 :831,073,031,208,0845,173,084
7977 :861,220,041,831,073,031,182
7983 :208,036,032,228,2 55,
208, 246
7989 :001,996,056,233,073,144,144
1995 ($2,232, 22, 170
233,085; L716 ,973
8001 :216,138,041,002 ,249,004 ,194
8007 :138,873,001,178,169,008,119
8013 :141,107,831,056,042,202,144
S019 2:208,25 187 2,14 1
7831 ,173;227
8825 :000,220,045,001,220,841,194
8031 :916,240,246,169,006,101,195
8037 :162,197,162,208, 252,096,154
8043 :800,032,250,026,032,177,112
8049 :626,165,8062,201,826,144,165
8055 :903,032,132,827,832,122, 211
114
Strategy Games 3
8061 ?033,932,132,027,032,122,247
8867 2033,169,001,032,207,825,086
8073 2160,095,177,251,974,074,110
8079 2170,168,0802,138,024,113,238
8085 2251,144,002,165,255,145, 087
8091 2251,1 208, 243,160,
36, 002,131
8897 :209,251,208,019,1 903,243
60,
8163 2177,251,208,056, 241,251,863
8169 2169,128,042,168, 280,177,833
8115 2251,233,001,145,251,165, 201
8121 2251,024,105,005,133,251,186
8127 :201,255, 288,198,832, 258,055
8133 :026,032,177,026,162,051,159
8139 :189,000,144,841,017,248,066
8145 70@93,038,000,144, 292,288,028
8151 >243,032,108,827,032,237,126
8157 :8@89,8032,087,022,032,098,237
8163 >911,032,205,021,162,915,161
8169 7134,002,160,029,024,832,102
8175 7249,255,169,152,032,219,017
8181 :255,169,032,162,9811,032,138
38187 :219,2 262, 208, 55,
250,239,870
8193 :962,1060,902,224,024,208,115
8199 :227,173,100,007,141,148,027
82085 :907,141,180,007,141,220,197
8211 :007,169,032,162,011,157,045
8217 :220,007,202,208,250,169,957
8223 :020,141,226,007,169,080,082
8229 :162,003,149,003,202,016,000
8235 :251,169,009,133,174,169,180
8241 :000,141,9032,143, 238,032,123
8247 :143,173,032,143,201,010,245
8253 :208,003,076,048,032,032, 204
8259 :153,933,169,000,133,178,221
8265 :133,179,162,004,1 251,168
34,
8271 :160,031,132,252,169,190, 245
8277 :133,247,133, 249,169,004, 252
8283 :133,248,133,250,166,167,164
8289 :168,9083,169,8032,145, 247,085
8295 :136,016,251,165, 247,024,174
8361 :105,040,133,247,144,002,012
8307 : 230 202,
,24 208, 233,174,
8,130
8313 :032,143,189,127,0 133,013
36,
8319 2254, 202,189,127,036,133,044
8325 :253,166,251,164, 252,024, 219
8331 :032,240, 255,166, 253,189, 258
8337 :000,144,041,015, 208,003,044
8343 :076,111,933,189,0968,034,150
8349 :170,024,101,178,133,178,173
115
3 Strategy Games
(oy Ee
8355 :138,281,010,176,005,169,094
8361 :032,032,210,255,169,154, 253
8367 :032,210,255,169,800,032,105
8373 :205,189,166,251,168,937,165
8379 :824,032,240,255,160,003,133
8385 :169,032 255,136,,
218,,032 803
8391 :208,250,230,251, 230,253,885
8397 :198,167,208,181,165,174,918
8403 :208,003,0976,105,033,173,841
8469 :032,143,024,195,014,170,193
8415 :160,031,024,032, 240,255,197
8421 :169,154,032,210,255,165,190
8427 :178,170,201,810,176,005, 297
8433 :169,032,032,210,255,169,984
8439 :908,032,205,189,169,156, 239
8445 :032,218,255,169,032,872,255
8451 :032,210,255,173,032,143,080
8457 :0869,048,032,210,255,184,155
8463 :032,218,255,8032,210,255, 241
8469 :165,179,170,201,010,176,154
8475 :005,169,032,032,210,255,218
8481 3169, 028, 032,'210,255,169, 128
8487 :000,032,205,189,162,024,139
8493 :168,030,024,032, 240,255,018
8499 :169,152,032,210,255,165,8198
8505 :178,024,101,003,133,003,243
8511 :169,000,101,004,133,004,218
8517 32165,179,191,005,133,0095, 145
8523 :169,000,101,006,133,006, 234
8529 :166,003,165,004,032,205,144
8535 :189,162,024,160,836,024,172
8541 :032,240,255,166,005,165,188
8547 :906,032,205,189,198,174,135
8553 :8032,046,017,076,053,832,185
8559 :189,968,034,024,101,179,194
8565 2133,179,076,20),032,473, 143
8571 :8026,143,141,129,143,032, 225
8577 :243,027,169,800,141,129,8708
8583 :143,174,032,143,189,127,175
8589 :036,168, 202,189,127,036,131
8595 :170,202,032,247,027,096,153
8601 :169,156,032,210,255,032, 239
8607 :235,017,162,003,160,038, 254
8613 :024,032,240,255,932,193,173
8619 :033,174,032,143,189,127,191
8625 :036,202,056, 253,127,036,119
8631 :133,167,1805,063,179,160,153
8637 :030,032,240,255,162,000,149
8643 :189,207,033,2808,0901,096,161
116
Strategy Games 3
1a7
3 Strategy Games
8943 :206,205,000,000,000,199,081
8949 :997,066,193, 240,048, 048,079
8955 :040,040,103,041,041,041,945
8961 :819,019,019,016,916,078,168
8967 :140,205,013,205,261,199202 ,
8973 :807,007,004,196, 241,049,905
8979 :118,046,046,045,041,041,992
8985 :041,020,020,020,084,616,226
8991 :080,012,0876,011,010,073,0837
8997 :809,009,071,0708,197,241,122
9983 :0949,110,0946,046,845,045,128
9909 :042,042,042,149,149,149,119
9815 :817,145,812,076,011,138,198
9921 :074,137,088,151,2080,000,199
9927 :800,049,849,1190,046,045,119
9833 :045,042,042,042,021,021,030
9839 :821,085,017,145,076,075242 ,
9945 :031,095,098,825,087,214,115
9851 :888,000,241,849,110,172,151
9857 :944,044,043,043,171,101,031
9863 :037,037,0981,099,017,096,214
9969 :996,096,089,091,091,091,151
9875 :0800,000,000,000, 241,849,149
9681 :113,044,044,043,043,043,195
9987 :638,037,037,165,035,035218 ,
9093 :698,161,160,993,156,027,96U
9899 :219,000,000,009,000,241,087
91805 :049,113,044,044, 043,043,225
9111 :1897,038,038,038,102,835,253
9117 :163,034,033,097,029,092,093
9123 :156,000,900,080,008,000,863
9129 :009,900,000,236,236,235,188
9135 :230,038,038,038,838,838,983
9141 :836,100,034,933,033,029,190
9147 :829,008,000,080,0800,0800,216
9153 :242,050,242,000,243,0800,282
9159 :900,008,230,230,038,038223 ,
9165 :230,036,228,226, 225,222,892
9171 :222,030,000,000,000,8009, 287
9177 :000,242,0508,050,000,000,847
9183 :243,000,08900,000,0900,230,184
9189 :230,000,000,000,000,0280, 203
9195 :0800,000,222,222,800,800,167
9201 :000,000,242,242,242,242,185
9207 :008,000,243,000,000,000234 ,
9213 :000,23 0,000,0 800,000 9,000,2 27
9219 :8000,000,000,222,0938,222,221
9225 :000,000,242,0008,000,900,251
9231 :242,000,000,0080,000,008,801
118
SRR Strategy Games 3
I 2 SOR VTP NALHa
119
A ren hu. Wey eas
ce he eo are hs 2%
‘ eG Pat
a - ' Raby vos
i
i
Creature |
Features
The Frantic
Fisherman
David Lacey
64 Version by Kevin Martin
Idly floating in your boat, waiting for the fish to bite, is a fine
way to relax. In this game, however, an angler’s dream becomes a
nightmare when sharks get the notion that you're the bait and the
thunderclouds threaten you with gargantuan raindrops. It's good
you remembered to bring your shark swatter and an umbrella.
The fish are biting, and you’ve managed to catch a few.
But suddenly you notice the sky is clouding over, and to make
things worse, ravenous sharks begin to circle your boat.
The object of ‘The Frantic Fisherman” is to survive. You
score points by bopping the sharks with your bat and blocking
raindrops with your umbrella. You start with three fishermen.
Each time a shark or raindrop hits the boat, you lose the boat
and one fisherman. However, a new fisherman is awarded for
every 2,000 points.
Three keys are used to control movement. To move back
and forth, use the less than (<) and greater than (>) keys. The
space bar serves two functions. When the sharks approach, it
controls the club. If a raindrop is falling, it controls the um-
brella. You can use the shark swatter as many times as you
like. The umbrella, though, can be opened only three times for
each raindrop.
123
4. Creature Features
Error-Free Entry
To make it easy to type in The Frantic Fisherman, be sure to
read Appendix C and use the “Automatic Proofreader’’ pro-
gram you'll find listed there. It will especially help as you en-
ter the mass of numbers for the sprite and ML portions of the
program.
_ After saving a copy of the game to tape or disk, load it
into your 64. It takes a few moments for all the sprite and ma-
chine language data to be POKEd into the computer’s mem-
ory. You'll see the title screen, and after pressing any key, the
game begins. Watch out for the sharks!
124
Creature Feature iS
nr
125
4 Creature Features
ay UO
388 SC=INT(S1/16)*19+(S1AND15)+INT(S2/16)*1999+(S2
AND15 )*18@ :rem 234
398 SC=SC+INT(S3/16)*108080+(S3AND15)*19000:rem 41
498 IF SC>HS THEN HS=SC :rem 47
418 GOTO19 :rem 47
1888 DATA192,0,0,224,9,8,112,G :rem 199
1901 DATAS,56,8,0,28,9,9,14 :rem 58
1902 DATAG,8,7,8,8,3,128,2 :rem 6
1983 DATA1,128,9,9,8,9,9,@ :rem 254
1904 DATAG,8,9,0,8,9,08,@2 :rem 147
1885 DATAG,2,08,0,9,0,9,9 :rem 148
18996 DATAG,0,9,9,0,08,9,0 :rem 149
1887 DATAG,2,0,0,8,9,9,0 :rem 158
1868 DATA1,128,0,3,128,98,7,9 :rem 126
1889 DATAG,14,8,9,28,9,9,56 :rem 66
1818 DATAG,G8,112,9,8,224,98,9 :rem 92
1011 DATA192,9,9,9,0,9,9,@ :rem 253
1012 DATAG,2,9,08,08,8,9,@2 :rem 146
1013 DATAG,8,9,9,9,0,9,0 :rem 147
1014 DATAG,9,2,08,08,08,8,@2 :rem 148
1915 DATAG,9,9,0,9,8,9,53 :rem 205
1816 DATA7,@,@,63,224,8,255,248 :rem 24
1017 DATAG,2,0,0,2,9,8,2 :rem 157
1018 DATAG,8,2,0,8,2,08,@ :rem 156
1919 DATA2,@,0,18,9,0,12,9 :rem 7
1920 DATAG,G,9,9,8,0,0,0 :rem 145
1021 DATAG,8,9,9,8,08,0,0 :rem 146
1022 DATAG,8,9,0,9,08,08,0 :rem 147
1023 DATAG,9,0,0,8,8,8,@ :rem 148
1024 DATA16,0,9,56,9,0,124,@ :rem 118
1025 DATAG, 254,8,9,158,08,8, 206 :rem 215
1026 DATAG,G8,124,8,0,0,0,08 :rem 254
1927 DATAG,#,9,8,02,08,0,0 :rem 152
1028 DATAG,9,9,9,8,9,08,2 :rem 153
1929 DATAG,9,9,9,09,9,9,@8 :rem 154
10938 DATAG,8,8,2,8,9,9,0 :rem 146
1031 DATAG,0,9,2,08,0,8,0 :rem 147
1032 DATAG,9,0,0,0,0,9,9 :rem 148
1033 DATAG,8,8,08,0,9,9,2 :rem 149
1034 DATA4,9,9,12,9,9,28,9 :rem 7
1035 DATAG,60,1,7,255,195,14,127 :rem 79
1936 DATA255,31,255,255,127,255,255,56 :rem 141
1937 DATA127, 255,3,255,195,8,9,1 :rem 78
1038 DATAD,9,9,9,9,9,9,9 zrem 154
1039 DATAD,9,8,0,0,9,9,183 :rem 7
1940 DATAG,G,0,0,8,9,0,0 z:rem 147
1841 DATAG,G,2,0,9,9,9,0 zrem 148
1042 DATA32,9,0,48,0,0,56,0 zrem 65
1043 254
DATA128,60,@,195,255,224,255, :rem 81
127
4 Creature Features
ee
nee ener ce Mie
128
Creature Features 4.
129
4. Creature Features
PRAT es ADEE OT
130
Creature Features 4.
131
4 Creature Features
132
Beekeeper
Daniel Gray
64 Translation by Kevin Martin
You find yourself in the middle of a clover field doing battle with
some rather nasty giant bees. Try maneuvering to the hive while
avoiding the deadly stings and pinches of the bee and crab guard-
ians. Beekeeper” also contains some innovative programming
techniques.
133
4 Creature Features
eT ee
Keyboard Control
f you don’t have a joystick, or would rather use the keyboard
to control your ship, you can make some simple changes to
the program.
50 S=PEEK(293)
60 REM NOT NEEDED
70 IF S<>21THEN1390
130 IF S<>38THENIFS<>41THEN209
148 CC=1:I1FS=41THENCC=-1
600 PRINT" {CLR}"SPC(10)"{RED}{DOWN}USE KEYBOARD TO
PLAY"
134
Creature Features 4.
More Manipulations
Other versions of ‘’Beekeeper’’ can be created by manipulating
the initial values of the variables. Here’s a list of the most use-
ful variables, found in lines 700-710:
Variable Description
Pl Starting position of ship on screen
SH Starting direction of ships
SQ Starting number of ships provided in each level
AQ Starting number of drone bees in hive for each
level
SA Highest point on the screen that the ship can
reach
SE Lowest point on the screen that the ship can
reach
The IF-THEN statement in line 110 can be changed to give
your ship’s laser a greater range. For example, you can have
the laser reach across the screen by changing this statement to:
IF 1<39 THEN 90
The DATA in lines 840-885 control the shape of Bee-
keeper’s custom characters. By changing the DATA in these
lines, you can create your own character set, completely alter-
ing the game.
Beekeeper
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
1 POKE56,48:POKE55,90:CLR :rem 173
5 POKE53289,2:POKE53281,0 :rem 140
18 DIMSP(8) :rem 103
20 PRINT" {CLR}" zrem 198
38 V=1:SC=0:CM=54272 :rem 111
:rem 27
48 GOSUB5@@ : GOSUB889 : GOSUB69B
135
POKECM+24, 15 :POKECM+5,17:POKECM+6, 241 : POKECM, 8:
17: POKECM+13, 241 :rem 12
POKECM+12,
POKECM+7 ,@ :rem 227
GOSUB70@ :rem 128
S=PEEK (56320) :SW=(SAND4) /4:F=(SAND16)/16
:rem 203
SR=(SAND8)/8 :rem 94
IFF=1THEN130 :rem 189
I=] :A=SH-32:J=P1: POKECM+8 , 200 : POKECM+11,129
:rem 174
J=J+SP(A) :IFJ<SAORJ> 2023THEN1 26 :rem 47
I FPEEK(J) <>32THENPOKEBN, 32: GOSUB318 :GOTO129
:rem 146
POKEBN , 32: POKEJ , 42: POKEBBN+CM, 3: BN=J : I=I+1:IFI
<8THENID :rem 80
POKEBN, 32: POKECM+11,128 :rem 48
IFSW=1THENIFSR=1THEN299 :rem 205
CC=1 : IFSW=O0THENCC=-1 z:rem 185
NJ=P1
POKECM+1,5@:POKECM+4,33:I1FP1=P2THE :GOSUB3
10 :rem 186
IFSH=49 THENI FCC=1THENCC=-7 :rem 186
IFSH=33 THENIFCC=-1 THENCC=7 :rem 199
SH=SH+CC: POKEP1 , SH: POKECM+4, 32 :rem 87
=P1+ SP(A )
A=SH-32:MN=P1:P1 : IFP1<S AORP1> SETHEN P1
=MN :rem 67
: POKEMN,ENJ=
IFPEEK(P1)<>32TH P1
32 :GOSUB3 90@
:rem 17
POKEMN , 32: POKEP1, SH: [FW=1 THEN25@ :rem 244
P2=INT(RND(1)*21)+1783 :MC=INT(RND(1)*6)+1:SX=4
1:SY=32:BC=3:W=1 z:rem 35
IFMC=2THENSX=44 :SY=43 :BC=5 :rem 94
A=SGN( P2-P1) :M@=P2: P2=P2-A*H: I FABS(P2-P1)>25TH
ENP2=P2-A* 40 :rem 128
IFP2<SAORP2>SETHENP2=M@ :rem 221
IFA=0 THENJ=P2 :GOSUB318 :GOTO5@ :rem 52
POKECM+P2 ,MC: POKEM®, SY: POKECM+M@, BC:
POKEP2, SX:
GOTO5@ :rem 188
A=PEEK(J) : IFA=430RA<41THENP1=M N9
:GOTO48
:rem 153
FORI=1TO5 : POKEJ , 42 : POKEJ+CM, 2: POKECM+7 ,5@:POKE
CM+11,129 :rem 85
POKECM+1 , 68 : POKECM+4, 33: POKEJ, 32:NEXT :rem 233
POKEJ+CM, 3 :N=SQ: I FJ=P2THENW=@ :SC=SC+15@
:rem 186
IFP1=P20RA=41 THENSQ=SQ-1: Pl=1764:SH=39 :rem 67
IFJ>1983THENSC=SC+5@ :AQ=AQ-1 :rem 156
SC=SC+5@: IFSC>HITHENHI=SC :rem 82
PRINT" {HOME } {YEL}SCORE: "SC; TAB (32) "SHIPS: "SQ:P
OKEP1+CM, 3: POKEP1, SH: POKECM+11,128 :rem 219
136
Creature Features 4.
IFSQ=NTHEN419 :rem 29
FORI=1TO3 : FORS=19TO8 : POKECM+1
8STEP, S: POKECM+4
2
,33:FORA=1T010 :NEXT:NEXT :rem 31
POKECM+4, 32: FORJ=1T0100 :NEXT :NEXT :rem 66
IFAQ=9THENV=V+1:PRINT"{CLR}{RED}{11 DOWN}
{8 RIGHT }SWARM"V:FORI=1T0400@ :NEXT:GOTO45
:rem 104
IFSQ<>@THEN48@ :rem 62
PRINT" {HOME}{RED}{8 DOWN}"SPC(14)"* GAME OVER
{SPACE}*" :rem 169
PRINTSPC(11)"{4 DOWN}TRY AGAIN? [Y OR N]"
s:rem 232
GETAS :IFAS=""THEN449 :rem 83
IFAS="Y"THENRESTORE: GOTO29 :rem 143
IFAS<>"N"THEN44@ :rem 97
PRINT"{CLR}":END :rem 16
RETURN srem 124
PRINT"{RED}{8 DOWN}{14 RIGHT}* {CYN}BEEKEEPER
{RED}*" :rem 55
PRINT"{GRN}{8 DOWN}{14 RIGHT}HI SCORE={ YEL}"HI
:rem 28
FORI=1TO3909 :NEXT: RETURN s:rem 46
PRINT" {CLR}"SPC(9)"{RED}{DOWN}USE JOYSTICK IN
{SPACE}PORT 2" :rem 70
PRINTSPC(10)"{RED}{2 DOWN}CRAB"TAB(20)","SPC(5
)"290" :rem 158
PRINTSPC(10)"€53 {DOWN }WORKER"TAB (20)")"SPC(5)"
288" :rem 188
PRINTSPC(10)"{BLU}
{DOWN } DRONE "TAB (20)")"SPC(5)
"199" srem 229
PRINTSPC(1@)"{YEL} {DOWN }HIVE"TAB(28)"@"SPC(6)"
50" :rem 7
PRINTSPC(1@)"{GRN}
{DOWN }CLOVER"TAB (28)"+"SPC(6
)"50" :rem 10
PRINTSPC(1@)"{BLU}{2 DOWN}DIFFICULTY LEVELS...
" :rem 143
PRINTSPC(14)"{RED}{DOWN}[1] BEGINNER" :rem 102
PRINTSPC(14)"{DOWN}[2] ADVANCED":PRINTSPC(14)"
{DOWN}[3] MASTER" :rem 171
PRINTSPC(11)"{BLU} { DOWN} KEY IN YOUR LEVEL:"
:rem 181
GETAS : IFAS=""THEN650 :rem 89
H=VAL (A$) : I FH< 1ORH> 3THEN659 :rem 92
RETURN :rem 125
P1=1764 :SH=39 :SQ=8:SA=1064 :SE=1823 :rem 171
CT=55 296 : CE=56 295 : AQ=66 : BN=SA s:rem 145
PRINT" {CLR}":FORI=CTTOCE: POKEI,3:NEXT :rem 249
FORT=1T050:A=INT(RND(1)*758)+SA:POKECM+A,5:POK
EA, 43 :NEXT :rem 163
137
4. Creature Features
740 FORI=1824T01903
: POKEI+CM, 7 : POKEI,9:NEXT
:rem 158
75 : POKEI+CM, INT(RND(1)*6)+1:POKEI
FORI=19904T02023
,41:NEXT :rem 244
760 PRINT" {HOME} {YEL}SCORE: "SC; TAB(32)"SHIPS: "SQ:P
OKEP1+CM, 3:POKEP1,SH:RETURN :rem 171
BBB FORI=1T08 : READSP(I) :NEXT: IFPEEK( 251 )=123THENPO
KE53272,29:RETURN :rem 217
885 PRINT"{7 UP}{9 RIGHT}REDEFINING CHARACTERS"
:rem 37
807 POKE251,123 :rem 42
810 DATA 1,41,40,39,-1,-41,-48,-39 :rem 183
815 POKE56334, PEEK( 56334) AND254:POKE1 , PEEK(1)AND25
ah :rem 191
816 FORI=@T0511:POKEI+12288,
PEEK( 1+53248) :NEXT
:rem 237
820 FORI=12552T012623 : READA: POKEIL ,A:NEXT: FORI=1264
@TO12647 : READA: POKEI ,A:NEXT :rem 8@
830 FORI=12288T012295:POKEI, 255 :NEXT: FORI=12632TOl
2639:READA: POKEIL,A:NEXT :rem 34
835 POKE1, PEEK(1)OR4: POKE56334, PEEK(56334)ORL
:rem 143
836, POKE53272, (PEEK(53272) AND249)+12 :rem 192
846 DATA®,96,112,1206,207,120,112,96,8,92,60,108,
24
4,126,6,1 :rem 123
858 DATA16,254,254,108,56,16,16,16,16,58,69,54,47,
126,96,128 :rem 219
860 DATAG,6,14,38,243,38,14,6,128,96,126,47,54,68,
58,16 :rem 194
870 DATA16,16,16,56,198,254,254,16,1,6,126, 244,188
,68,92,8 :rem 95
888 DATA195,231,231,126,60,219,189,36,66,182,129,1
89,126,219,189,36 :rem 62
885 DATA24,24,102,102,24,24,68,8 trem 71
8908 RETURN :rem 129
138
Props
Philip I. Nelson
139
4. Creature Features
ere ree carrer
well at any given level, the game pauses by itself and lets you
pick a new skill level.
The Animation Subroutines
Two main machine language (ML) routines are responsible for
virtually all the animation. The first one reads the joystick,
moves the bird shape accordingly, and flaps the wings of both
pigeons. The second rotates the eight propeller sprites and
moves them up or down. Two additional small routines help
program a new character set and fill color memory with white
values for the new-ROM 64s.
Let’s first look at the bird-moving routine (Birdmove),
which you could adapt for just about any graphics game. This
routine begins at line 49400 and continues to line 49650. Since
it’s an ML routine, it’s in the form of numbers, not in BASIC’s
syntax. Unless you know machine language, it may seem
impossible to decipher it. However, we can describe what it
does, and how it executes. For those of you who know ML
programming, it shouldn’t be difficult to modify the routine
for your own use.
Birdmove animates the bird-shaped character. The routine
keeps track of a variable, BIRDLOC, that represents the bird’s
current screen location. To move the bird around in screen
memory (locations 1024-2023), a blank space is first put into
the variable BIRDLOC to erase the character. Next, a check is
done to see whether any movement has been requested
through the joystick. If so, BIRDLOC changes to represent the
new screen location. If not, BIRDLOC stays the same. In either
case, a new shape appears in the updated BIRDLOC screen
location.
140
Creature Features 4.
Collision Detection
The second safeguard is a collison check for horizontal move-
ment. When you move left, for instance, Birdmove holds the
updated BIRDLOC position in temporary storage. Before it
moves a bird figure into the new location, the routine checks
that spot to see which of the three possible characters is there.
If the location contains a space, the bird can move left. If
the position holds the coop character, the old BIRDLOC is re-
stored and the Birdmove routine is exited without changing
position. If neither character is found, then the space must
contain the mate character, so the routine sets a flag to show
that the bird has reached home and ends with the wing-flap-
ping display.
To modify Birdmove for your own games, just add more
comparisons to check for as many possibilities as you need.
For example, your game might check the desired location and
then branch to appropriate routines to score if you've hit a
treasure, faint if you've hit a troll, rejoice if you’ve bumped
into a friend, and so on.
The Joystick Flags
The joystick reader at the beginning of Birdmove is from the
Commodore 64 Programmer's Reference Guide. It stores flag val-
ues in a memory location which you can then PEEK to deter-
mine movement. In Props, the joystick flag values are in the
cassette buffer, but you could put them in any safe memory
area. The right/left flag is stored in location 832, and the
up/down flag in 833. The value in 832 will be 255 for left, 1
for right, and 0 for no movement. For the up direction, 255 is
stored in location 833; 1 for down and 0 for no movement are
placed in the same address. Note that leftover flag values will
remain in the computer’s X and Y registers, so if your ML pro-
gram goes from this routine to one that uses indirect address-
ing, you should clear the X and Y registers to 0 to keep things
straight. baeneets
Programmed characters are used to make the birds’ wings
flap. In lines 62000-63000 of Props, the character set from the
ROM chip is first copied into RAM memory beginning at loca-
tion 14336. Then new shapes for characters 90-96 are created
141
4 Creature Features
Press RETURN and you'll see the coop character and six bird
shapes in the upper left of the screen.
142
Creature Features 4.
You just positioned the bird and set limits to keep it on the
screen. Now enter this as one line. Again, use abbreviations
for PRINT and POKE to get this all on two screen lines.
PRINT" {CLR}":FORJ=1824TO20@8STEP41 : POKEJ , 98: POKEJ+
54272,1:NEXT: FORJ=1TO199009 :SYS49498 : NEXT
Using the joystick, you can move one of the bird characters
you see on the screen. The bird will wrap around the screen
when its way is clear, but stop when it hits a coop character.
The up-and-down movement routine contains no collision
check, however, so moving in those directions erases any
character you encounter.
143
4. Creature Features
ee ae a ee a]
Watch It in Isolation
Such an interrupt-driven ML routine will seem to run indepen-
dently of BASIC. To watch Spritemove in isolation, first run
Props and press the RUN/STOP key when the props move.
You'll see the blinking cursor and READY signal, which shows
the computer has quit executing the BASIC program. You're
back in BASIC’s immediate mode, but Spritemove is still
working along with the interrupts, so the graphics and sound
keep going.
You can do anything you’d normally do from BASIC,
even call other ML subroutines as in the examples above, but
there’s a limit to how far you can take this technique. Grafting
a lengthy ML routine onto interrupts will make those “‘time-
ae so long that they slow the BASIC operations down to a
crawl.
To stop Spritemove, first clear the screen of character
graphics by holding down SHIFT and pressing CLR/HOME.
Now type SYS49152 and press RETURN. The props and
sound should freeze.
To restart the props, move the cursor up to the same line
144
Creature Features 4.
145
Creature Features
146
Creature Features 4.
147
4 Creature Features
[th by ae a
into the filter cutoff frequency register. This value is the same
one used to control the number of spaces the sprites move
each 1/60 second. At higher skill levels, larger numbers are
added to the cutoff frequency register, to sweep the filter from
low to high more rapidly.
As with sprite positioning, incrementing this register is
simple and doesn’t have the danger of causing ILLEGAL
QUANTITY errors. The result is a repeated low-to-high sweep
in the range of 0 to 255.
148
machine language. Take a look at lines 11050-11058, which
govern the animation and sound of wings flapping during the
instruction display. Here the filter frequency is controlled from
an entirely different source.
A Props AX_
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
1 GOSUB1999 : GOSUB82 :GOSUB5@ :SYS49152 :rem 241
2 POKEW1,17:SYS49408 :C=PEEK(CX) : IFCTHEND=PEEK(SP+A
(C) ) :GOSUB1® srem 122
3 IFPEEK(HM)THENGOSUB29 :rem 222
4 FORJ=RTO20-DL:NEXT: BZ=BZ+R: IFBZ=MXTHENBZ=. :GOSUB
50 :rem 247
5 IFSK>NTHENGOSUB7 :rem 212
6 POKEH1, (PEEK( 251) /5+9) s:POKEW1,16:GOTO2 s:rem 90
7 KL=KL+R: IFKL> NTHENKL=. : POKEFAST, INT( RND(R) *M) : PO
KE845,(.) :rem 238
8 IFRND(R) > PTHENPOKEFAST , V: POKE845, (.) srem 159
149
4 Creature Features
oe Ree
9 RETURN :rem 25
1@ POKEBD, 2:FORJ=RTO4@ : POKESP+A(C),D: POKEW1,129:SY
S496@8:POKEW1L,128:NEXT :rem 31
11 SC=SC-SK:IFSC<RTHENSC=. :rem 179
12 POKEBD,.:POKECX,.:RETURN :rem 234
13 REM LINES 7-9 = 'VARY SPEED' RTN :rem 146
14 REM LINES 10-12 = 'HIT PROP' RTN :rem 92
20 REM*** '‘HOME' :rem 59
21 SC=SC+SK+3:IFSC>199THENGOSUB79:GOSUB88 :rem 107
22 POKESP+21,8:PRINTSCS"K63SCORE: "SC :rem 282
23 FORJ=100TO1STEP-2:SY POKEW1, S496 08:
21:POKEH 1,J:P
OKEW1,20 :NEXT :rem 231
24 PRINTSC$"{13 SPACES}":POKEHM,@:POKECX,@:rem 171
5@ REM*** 'NEW COOP' :rem 48
51 POKESP+21 ,@:
21:POKEH 3, POK EW3
PEEK(251 ,CS
):PRINTS
“{YEL}NEW COOP":PR INT"
{HOME }£63"; :rem 58
52 FORJ=1T024:PRINT"{RIGHT}Z{36 RIGHT}Z":NEXT
™ a :rem 120
53 PRINT"{RIGHT}Z{36 RIGHT }Z{HOME}":POKEW1,16:POKE
W3,28 Sa 7 :rem 54
54 IFHF=0THENHF=1:GOTO58 :rem 254
55 HF=0:J=1062:FS=40* (INT(RND(1)*25) ) :rem 17
56 HI=INT((FS+J)/256) :LO=(FS+J)-(HI* 256) : POKE843,L
O:POKE844,HI :rem 124
57 SYS49615:POKEJ+FS+L1,1@:PRINTSCS"{18 SPACES}":P
OKESP+21, 255:GOSUB10@: RETURN :rem 172
58 J=1025:FS=40* ( INT(RND(1)*25)) :rem 222
59 HI=INT( (FS+J)/256) :LO=(FS+J) -(HI*256) : POKE843,L
O:POKE844,HI :rem 127
68 SYS49615:POKEJ+FS+L1,10:PRINTSCS$"{1@ SPACES}":P
OKESP+21,255 :GOSUB19@:RETURN :rem 166
70 REM** NEXT LEVEL :rem 86
71 PRINTCHRS (142) :FORJ=1TO50@ :NEXT: PRINTCHRS(14):P
-OKESP+21,@:POKEW2, 21 :rem 93
72 POKEW1,2@8:POKEFV,3 :FORK=5TO115STEP2:POKEW3, 21:
POKEBD,K: POKE646,K :rem @
73 POKEH1,K*1.4:PRINTSC$"NEXT LEVEL?":POKEH3,K/4:S
YS49608 : POKEW3, 20:NEXT :rem 253
74 POKEW1, 20: POKEFV, 66 :FORJ=1T03580:NEXT: POKEH3,1@
@:POKEBD,@: POKEW2,129: RETURN :rem 2082
88 REM*** PICK SKILL LEVEL :rem 232
81 POKESP+21,@:POKEFNA(@),32:KZ=@ :rem 193
82 PRINTSCS$"{YEL}{3 LEFT}PICK SKILL LEVEL":rem 136
83 PRINTSC$"K83{2 DOWN}{RIGHT}(1 - 6)" :rem 181
84 GOSUB29@ :rem 126
85 IFKZ<>1THENSYS49688 :GOTO84 :rem 100
86 PRINTSC$"{3 LEFT}{16 SPACES}" :rem 288
87 PRINTSCS$"{2 DOWN}{1l1 SPACES}" :rem 28
88 SC=0:RETURN :rem 141
Creature Features 4.
151
4 Creature Features
152
Creature Features 4
153
4 Creature Features
154
Creature Features 4.
155
4 Creature Features
156
Creature Features 4
ap
4 Creature Features
158
Worm of Bemer
Stephen D. Fultz
64 Translation by Kevin Martin
Nerm the Worm is lost in Bemer Castle and needs your help to get
home. You must guide him through 11 rooms and help him find magic
mushrooms to eat along the way. The journey is a navigator’s night-
mare, because you never know where the next mushroom will grow,
and if Nerm hits a wall or gets trapped by his tail, he loses one of his
lives. Optional keyboard controls.
“Worm of Bemer” is a fast-paced arcade game in which Nerm
the Worm travels through rooms eating magic mushrooms.
Nerm is lost in Bemer Castle and wants to return home.
You’re Nerm’s guide, making sure he finds mushrooms so he
can keep up his strength for the journey. A joystick plugged
into port 2 gives Nerm directions. (An option to use the key-
board is provided below.) After eating five mushrooms in a
room, Nerm can exit to the next room. But the trip’s not over.
You must guide Nerm through ten more rooms before he
finds home. The game starts with four lives for Nerm, but if
he touches anything besides a mushroom, he loses one of
those lives. :
At the top of the screen you'll see the current score, what
room Nerm is in, how many mushrooms he must eat to open
the exits, and how many lives he has left (including his cur-
rent life). You get 100 points, plus bonus points, for every
mushroom Nerm eats. Nerm also gets a bonus life after
completing the first two rooms and another for every third
room thereafter.
159
4. Creature Features
(SoS SE
Creature Featurés 4. 3
pieces of Bemer wt \
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
161
4. Creature Features
162
Creature Features 4
163
4. Creature Features
165
4 Creature Features
166
Creature Features 4
167
a> &e@
de Gohgr
Sagal
cre) Soars
ae 4 a47)
Brunhilde Loves
Bruno
Philip I. Nelson
In this game of love vs. evil, Brunhilde must traverse dangerous ter-
ritory filled with goblins to free her friend Bruno from prison. But
Bruno is entranced and must first be caught before the lovers can es-
cape. There’s also a detailed explanation of the game program and
many valuable techniques you can use in your own creations. Joystick
required.
171
bay Arcade Games
Setting Things Up
Brunhilde Loves Bruno takes a lot of setting up, so the pro-
gram lets you read instructions while the computer goes
through its preliminaries. In lines 1390-1650, variables are
initialized, sound registers are prepared, and the goblins get
ready to move. Then instructions are displayed (by a GOSUB
1660), Brunhilde’s theme song plays, and the custom charac-
ters are programmed (through a GOSUB 1910).
Five custom characters are used. Three create Brunhilde
and Bruno, the fourth draws a miniature heart, and the fifth
makes up the playfield border. In line 1910, locations 56334
and 1 are POKEd to turn off the keyboard, and to make the
computer “look” at its permanent character set located in
ROM. Once that’s done, the SYS 49152 in line 1920 calls the
machine language subroutine, which does the work of copying
the standard character set from ROM into RAM where
changes can be made. This copying takes nearly 30 seconds, if
done in BASIC, so time is saved by using this machine lan-
guage subroutine. (An assembly language listing appears at
the end of this article, as Program 2, if you’re interested in us-
ing the routine elsewhere.) Once the character set has been
moved, location 53272 is POKEd to fool the computer into
getting its character information from the new set in RAM.
Five characters, with screen POKE codes from 90 to 94, are
then changed by POKEing new DATA values into the correct
RAM locations—and magically, the valiant Brunhilde appears
in the instruction display.
Before the program leaves the instruction display, it pre-
pares the color memory background for the playfield, so that
the characters look yellow in the prison area, are green at
home, and change colors in goblin territory (lines 2020-2040).
Using a PRINT’’{CLR}” at this point to erase the instructions
would erase these colors, too, so when the player is finished
reading, the entire screen is POKEd with a value of 32 (for
blank spaces). The player picks a skill level, the playfield is
drawn, and Brunhilde’s off and running.
Goblin Animation
At the start, two different sets of sprite shape DATA were
stored in locations beginning at 832 and 896. By changing a
sprite’s pointer value, you can make it call its shape infor-
mation from either location, and thus switch at will from one
pattern to the other. In the movement routines for sprites 2
through 7, the pointer is switched to 14 when entering the
routine, and back to 13 when exiting, so the goblin sprites take
a different shape while they’re moving. Sprites 1 and 8 look
more frantic because they’re switching shape pointers every
time one cycle of the innermost movement loop is executed.
173
5 Arcade Games
ISLA STN TA aTEE EA OT
174
Arcade Games 5
RUNES 3 cs NR MENS Sa a ee
the heart appear to beat, the program switches from the stan-
dard heart character (83) to a custom-designed miniature heart
character (90).
Given the Commodore 64’s generous memory, these tech-
niques can be used to create some mind-boggling graphic ef-
fects. Characters are smaller than sprites, so you must use
simpler, bulky shapes, but in theory there’s nothing to prevent
you from programming dozens or even hundreds of charac-
ters. Likewise, the number of different sprite shapes you can
use is limited only by the amount of available RAM. Remem-
ber, however, that only eight sprite shapes can appear on the
screen at the same time.
Moving Arrays
Three arrays are used in this game to simplify character move-
ment, color effects, and scorekeeping. The M array stores
movement values for Brunhilde. In her routine, a value pulled
from the joystick (JK) is used to pick a certain value from the
movement array and add it to Brunhilde’s present location in
screen memory: BR=BR+M(kK). Adding 40 moves her down
one space, adding 1 moves her right one space, subtracting 40
moves her up, and subtracting 1 moves her left. The CH$ ar-
ray stores strings that are PRINTed to the screen to show how
many chances Brunhilde has left. The Z array stores values for
colors that contrast well against the black background. When
goblin territory is POKEd with colors, the statement Z(FNV(0))
lets the computer pick values randomly from this array. Like-
wise, each time a goblin’s movement routine is entered, this
same statement is used to switch the figure’s color.
175
5 Arcade Games
Prisoners of Love
Three different techniques are used to confine the various ani-
mated figures to the proper areas. It’s always important to
control such movement, to keep action on the screen, and to
prevent characters from running past screen memory into the
area where the BASIC program is stored. Brunhilde’s move-
ment is limited by the playfield boundaries themselves. Before
moving her screen memory location, her routine PEEKs ahead
to see whether the new location is already occupied by charac-
ter 94 (remember, that’s the custom character for the playfield
176
Arcade Games Le)
GEA, Seer Rene aE re ee ee
177
Es, Arcade Games
LTT
SRT IE SS SAP EY
Cautions
When using sprite-to-character collision detection, you must
take care with all PRINTs and POKEs, so as not to leave un-
wanted character data in screen memory where it would trig-
ger an unwanted collision. And you must pay careful attention
to the status of your collision register. Once a collision has
been flagged, the value is stored in that register until you
check it with another PEEK or clear it by POKEing the register
with 0.
One final word of caution: As in any other BASIC pro-
gram that uses a machine language subroutine, be sure to save
the program before you run it, in case you made a typing er-
ror. Otherwise, your 64 could lock up, forcing you to turn it
off, then on again, to regain control. That will erase any pro-
gram in memory, including an unsaved version of Brunhilde
Loves Bruno.
Program Lines
Here’s a short summary of what the various sections and
routines in Brunhilde Loves Bruno do:
Line Function
100-110 Protect BASIC program space and call prepara-
tory GOSUBs
120-125 Call subroutines for all game figures
140-170 Movement and sound for sprite 1
190-220 Movement and sound for sprite 2
240-270 Movement and sound for sprite 3
290-320 Movement and sound for sprite 4
340-370 Movement and sound for sprite 5
390-420 Movement and sound for sprite 6
440-470 Movement and sound for sprite 7
490-520 Movement and sound for sprite 8
540-590 Movement for Brunhilde character
610-720 Movement for Bruno character
740-950 Return home routine
970-1190 Lost game routine
1210-1370 Won game routine
1390-1650 Initialize variables; set up sound and sprite
register
1670-1890 Display instructions for player
1910-2260 Program characters, select skill level, color
playfield
2280-2380 Draw playfield
2420-2430 Sprite victory song DATA
178
Arcade Games
Line Function
2470-2520 Sprite shape DATA
2550 Small heart character DATA
2570 Small Bruno character DATA.
2590 Brunhilde character DATA
2610 Upside-down Brunhilde character DATA
2630 Playfield wall character DATA
2650-2710 Valkyrie song routine
2730-2760 Valkyrie song DATA
2780-2830 Ascending sound routine
2850-2890 Mighty Mouse song routine |
2910-2920 Mighty Mouse song DATA
2930-2950 Descending sound routine
2970-3040 POKE machine language subroutine into mem-
ory beginning at location 49152
NYProgram 1. Brunhilde Loves Bruno‘
. For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
186 PRINT" {CLR}":POKE52, 100:POKE56,199:CLR:GOSUB29
62: GOSUB138@: GOSUB1660 :rem 198
119 GOSUB264@ :GOSUB1919 :GOSUB2279 :rem 232
128 GOSUB54@ : GOSUB61@ : GOSUB5 48 : GOSUB619 :rem 161
i25 ONFNK (@)GOSUB140,198,
248,298, 348,390,440,498:G
OTO 129 :rem 23
130 REM***** MOVE SPRITE ONE *******kkkKE srem 59
146 POKEW1, 17: POKEV+39,Z(FNV(@) ) :rem 120
158 FORJ=1TOFNG(@)
: POKE2948,14:S1=S1-5:IFS1<75THEN
S$1=220 s:rem 78
160 POKE204@,13:IFPEEK(V+31) <>@THENPOKEBR, 32 :CH=CH
-1:GOSUB749 : RETURN :rem 199
170 POKEV+1,S1:POKEH1,S1/6:NEXT: CF=2:RETURN
s:rem 229
188 REM**** MOVE SPRITE TWO *¥**##*eRKKKK s:rem 37
199 POKE2@41,14:POKEW1, 33 s:rem 164
288 POKEV+42,Z(FNV(@) ) : FORJ=1TOFNG(@) :S2=S2+5:IFS2
>228THENS2=75 :rem 30
210 IFPEEK(V+31) <>@THENPOKEBR, 32 : CH=CH~1 : GOSUB74@:
RETURN :rem 4
220 POKEV+3,S2:POKEH1,S2/17+FNB(@): :NEXT:CF=3: POKE
2041,13:RETURN - :rem 148
230 REM**** MOVE SPRITE THREE ********%*% srem 75
248 POKE2042,14:POKEW1,129 srem 215
258 POKEV+41,Z(FNV(@) ) s:FORJ=1TOFNG(@) :S3=S3-5:IFS3
<75THENS 3=229 :rem 40
268 IF PEEK (V+31) <>@THENPOKEBR, 32 : CH=CH-1 : GOSUB74@:
RETURN :rem 9
276 POKEV+5, : POKE2042,13:
$3: POKEH1 ,S3/12:NEXT:CF=4
RETURN s:rem 222
179
5 Arcade Games
Ee TS LE ELT AT
180
Arcade Games 5
IFPEEK(V+31)<>@THE
32: CH=CH-1
NPOKEB :GOSUB74@:
R,
GOTO59@ s:rem 4
POKEBR, 32: BR=BR+M(JK) :rem 238
POKEBR, 92: POKEW1,16:POKE19064,83:RETURN :rem 97
REM* ****** MOVE BRUNO KaKKKKKkKKKKKEK :rem iP we
POKEBU,91:PRINT"{HOME}{2 RIGHT}"PZ:PZ=PZ+A
srem 44
IFPZ=SKTHENPOKEBR, 32 : CH=CH-1 : GOSUB74@:GOTO12@
s:rem 121
BN=@ : IFCT=ATHENPOKEBU, 32: BU=BR: POKEBU, 92: RETUR
N s:rem 76
IF PEEK (BU )=PEEK (BR) THENBU=BR: POKEBU, 91:POKEBU,
81:POKEBU, 91:CT=A: RETURN s:rem 61
BN=BN+A: POKEBU, 32: BU=1177+X+40*Y s:rem 183
POKEBU , 92: IFBN=2THENRETURN :rem 207
X=X+DX : IFX=8ORX=5 THENDX=-DX :rem 26
I FY <=8 THENY=A: DY=-DY s:rem 18
IFY=> 20THENY=19 : DY=—DY s:rem 112
Y=Y+DY : IFDX=8 THENDX=A :rem 113
BP=1177+X+49*Y : IFPEEK(BP )=32THEN640 :rem 7
IFPEEK (BP )=94THENDX=+DX : DY=-DY:GOTO66@:rem 149
RETURN s:rem 121
REM***** BUMPED A SPRITE ******#*e#*eke srem 243
POKEBU , 32: CT=@: Y=1 :X=1 : BR=1864: BU=1177 : JK=@
srem 41]
POKEW1, 16: POKEW1, 21: POKEH1, 2*FNB(0)+5:PZ=0
srem 216
POKEW2, 21: POKEH2,FNB(@)+5:POKEL2,198 :rem 86
POKEW3,17 srem 235
FORG=1TO3 : POKEH3, 14: POKE53280,Z(FNV(@)):rem 51
K=1:POKEW1,21 srem 217
FORJ=1TO8 : POKEH1 , 4*J+20*G : POKEH3 , 49-(4*J) : POKE
2039+7,14 s:rem 157
POKEV+23,K :rem 37
K=K* 2 :rem 201
FORI=1T039 :NEXT :rem 184
POKEV+23 ,@ srem 13
POKE2039+J,13:NEXTJ :rem 98
FORJ=1T05 : PRINT" {HOME }""CHR$ (142) :FORK=1T020:NE
XT srem 116
PRINT" {HOME }"CHR$ (14) :FORK=1T020 sNEXTK:NEXTJ
srem 160
POKEW1, 16: POKEW2, 16:NEXTG :rem 47
POKE5 3280 ,@:POKEV+29,@:POKEW3,16:POKEH3,@:POKE
W2,16:POKEV+31,0 srem 212
POKEH1 , 1: POKEH2,1:POKEV+31,@ :rem 136
FORJ=1T01200 :NEXT Sen! 4
PRINT" £63{HOME}{7 SPACES}{8 RIGHT }CHANCES:
{ RIGHT} {YEL}"; CH$ (CH) : POKEBU, 92 :rem 71
181
5 Arcade Games
QO NOT TRY OeEE
182
Arcade Games
183
Ls) Arcade Games
184
Arcade Games 5
PIU ie nt sepa on ere Ce ee etre sce eT eras
185
5 Arcade Games
ee ne
2478 DATA36,252,18,168,212,20,112,252,89,124,196,1
26,48,252,56,96,112,96,126 :rem 233
2489 DATA253,192,31,255,128,3,254,0,1,252,0,8, 252,
126,90,249,248,0,255,152,31 :rem 178
2498 DATA255,48,31,222,48,24,08,51, 28,8,126,12,8,12
4,198,8,8,126,8,8,62,08,9 :rem 59
2508 DATA72,63,36,49,43,21,154,63,14,126, 35,62, 28,
635 12) 6¢28;6733223412632 :rem 87
2518 DATA255,248,9,127,192,0,127,128,15,63,128, 31,
223,0,25,255,252,28, 255,254 :rem 253
2528 DATA12 204,90,
,12 28,126,0
3,2 ,56,62,0
06,8,112,9,9
,227,8,8,254,0,8,252 :rem 99
2538 REM**{2 SPACES}CHARACTER DATA ****#*k*kkk*
srem 161
2548 REM** {17 SPACES } FE RR RRR KKK KERR KEK KER EEK E MINIA
ILDE{7 SPACES
} ****# kkk KKK :rem 98
2598 DATA 69,126,217,255,69,126,102,231 srem 123
2600 REM**{17 SPACES} **¥*#kKKKKKKKKKKKKKAKKEKE RVS B
RUNHILDE{3 SPACES }*****#*##eex%* z:rem 86
2618 DATA 231,192,126,60,255,217,126,68 :rem 116
2628 REM**{16 SPACES} **RKRKKKKKKKKKKKEKK
KEKE DRTS
ON WALL{4 SPACES } *¥*#**## kek KKK ER :rem 31
2638 DATA 255,255,195,195,195,195, 255,255 :rem 5
2640 REM**** VALKYRIE THEME *******k*kk* :rem @
2658 RESTORE: FORJ=1TO(32+63+63+8+8+8+8+8 ) : READQ:NE
XT: POKE54277,63 :rem 97
2668 POKE54274, 97:POKE54275,5:POKEWI1 , 32: POKEW2, 32:
POKEW3 , 32 :rem 249
2678 READQ1 : READQ2 : READQ3 :rem 32
2680 IFQ3=OTHEN277@ :rem 79
2698 POKEW1,65:POKEH1,Q1:POKEL1,Q2 :rem 68
2700 FORJ=1TOQ3 :NEXTJ {Fem a2
2718 POKEW1,64:GOT0O2674 :rem 89
2720 REM*** VALKYRIE SONG DATA ******** :rem 53
2738 DATA 19,205,187,18,205,93,14,197,139,14,107,2
4,14,107,24,17,37 (288 :rem 154
2740 DATA 14,1987, 288,17,37,139,17,37,24,17,37,24,2
1,154,280,17,37,2808 :rem 76
2750 DATA 21,154,139,21,154, 24,21,154, 24, 25,177, 28
0, 2,216,282 srem 230
187
5 Arcade Games
Fe
188
Arcade Games 5 |
COBE $07
C818 #$00
CG12 #$20
CG14 ($84),Y
C816 ($86),
C818
C819 #SFF
C81B $C@14
C@1D $85
CO1F $07
C821
C822 #518
CO24 $CO12
C826
189
SuperSprite
Nick Sullivan
190
is. x
Arcade Gam 5
‘ supersprite/ 1)
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
18 REMA: srem 192
180 REM SEED RANDOM NUMBER GENERATOR, DISABLE CHAR
ACTER SET SHIFTS :rem 49
119 U=RND(-TI) :POKE657,128 :rem 245
120 REM SAVE OLD ENVIRONMENT, BUILD NEW ONE, BUILD
SPRITE, PRINT INSTRUCTIONS :rem 35
130 SP=13 :V=53248 srem 171
140 POKE2941,PEEK(V+24) : POKEV+24, 22 :rem 244
150 POKE2042,PEEK(V+32) :POKEV+32,7 :rem 199
168 POKE2043, PEEK(V+33) : POKEV+33,7 :rem 203
178 POKE2044,PEEK( 646) :POKE646,9 :rem 56
188 POKE2@45, PEEK(65@) : POKE650,128 :rem 155
190 PRINT" {CLR}":GOSUB4992@ :rem 124
288 GOSUB6000:PRINT"{CLR}":POKEV+24,20 :rem 84
218 DEFFNSC(U)=INT(U+U*GL/19) :rem 205
228 FORI=1T016:TS$=TS$+"{ RIGHT }":NEXTI :rem 241
230 BS="{3 DOWN}"+CHRS(13)+"{RVS}":FORI=9TO39:BS=B
$+" "s:NEXTI :rem 1987
240 V=53248 :C=55296 :S=1024 :SD=54272 :rem 151
250 HS=PEEK(43)+PEEK(44)*256+5 :rem 124
268 T1=135 :T2=255 :T3=230 :T4=133 :rem 181
278 : TI=32
T5=5:T6=9:T7=.992:T8=42 z:rem 116
280 BS=PEEK(HS) :CH=65508 :AR=780 :rem 48
290 REM INITIALIZE CURSORS, PRINT GAME SCREEN
srem 53
3@@ E(1)=1269:E(2)=1475:E(3)=1682:E(4)=1888
:rem 164
318 POKEV+21,8:GOSUB2089 :rem 127
191
Arcade Games
SERRE EE I SE EE
192
RTS AS RRL TN RTI Arcade Games 5
PTT SA ER
193
5 Arcade Games
195
Arcade Games
196
Olympiad
Kevin Woram and Mike Buhidar, Ji. =e
An Enchanted Arena
So it was agreed that an enchanted arena should be built
where the king’s black knights would do mock battle with
Admar’s red knights. Whoever’s knights won would claim the
kingdom as his own.
You and a friend control the actions of the knights as they
fight for their masters. Movement in all eight directions is con-
trolled by the joysticks. The red knight is controlled by the
joystick in port 1, the black knight by the joystick in port 2.
The knights have also been given 20 magical arrows that
stun on contact. The arrows are launched by pressing the fire
button. When your knight has used all of his arrows, your
only defense is to run.
Teleportation Grids
To add an element of randomness to the battle, three
teleportation grids have been added to the arena. A large one
is in the center of the arena, while the other two are in cor-
ners. Either knight may use any of the three grids. When any
197
7 Arcade Games
Typing Olympiad
“Olympiad” makes extensive use of keyboard graphics in
drawing the arena display. To avoid confusion and possible
typing errors, please refer to ““How to Type In Programs,”
Appendix B, before you attempt to enter this program. Using
“The Automatic Proofreader,” found in Appendix C, will in-
sure that you type Olympiad correctly the first time. Make
sure you read the explanation and have a copy of the Proof-
reader program available before you start typing.
Pay close attention to lines 3010-3220 as you type them
in—especially to the places where program lines are divided
on the page. If any spaces are to be left after the characters on
\ one line of the page, the correct number will be indicated in
braces at the beginning of the next line. Unless you are specifi-
cally instructed to type spaces, do not do so. For instance, in
the statement below, there should be only two spaces (as
specified in the braces) between the SHIFTed characters on the
first line and those on the second.
3188 PRINT" {UP}UCK ucccccccI{2 SPACES }UCCCCCCCCI
{2 SPACES }UCCCCCCCI{3 SPACES}B"
lympiad an
For mistake-proof ptggram entry, be sure to read “The Automatic Proofreader,” Appendix C.
1 POKE53289,2:POKE53281,1:GOTO1998@ :rem 189
2 DIM X(15),CS(15),D2(15),C2(15) :rem 69
4 CLR:N=15 :B=32 :FJ=56320 :FT=56321 :CO=54272:JB=16:H
P=102 :GOSUB580 zrem 223
198
Arcade Games 5
199
5 Arcade Games
po Oe
200
Arcade Games &,
201
By, Arcade Games
202
Arcade Games 5
203
Burn Rubber
Jonathan Cook
“Burn Rubber,” a simple but exciting race game, pits you against
the clock as you roar down straightaways, around hairpin turns,
and through dangerous S-curves.
Racing your Formula-I car around the complex track, compet-
ing against the clock, you try to finish as many laps as pos-
sible before crashing. Although a relatively simple game to
program and play, “Burn Rubber’ takes advantage of the
Commodore 64’s sprite graphics and sound effects. You have
to maneuver your car carefully, taking the turns and curves as
fast as possible to post the best lap time. You can even slow
and speed up your car, to pound down the straightaways or to
slowly make the hairpin turns.
Not only are you racing against the clock, but you’re also
trying to collect as many points as possible. Your score is
based on the average speed and the number of laps you com-
plete. The faster you go and the more laps you finish before
the eventual crash, the better your score will be. The computer
keeps track of the points per race, the time, the lap total, and
even the time per lap.
Arcade Gamés 5
A
Mier
For mistake-proof program entry, be sure to read “The Automatic Proofreader,” Appendix C.
190 DIM F1(5),F2(5):PRINT"{CLR}" :rem 48
990 PRINT"{CLR}":POKE53272,23 :rem 250
1906 PRINT TAB(14) "{WHT}{RVS}BURN{SHIFT-SPACE
}RUB
BER{ OFF }" :rem 97
1910 PRINT"{YEL}
{DOWN} {RIGHT}THE OBJECT OF THIS GA
ME IS TO DRIVE" :rem 23
1826 PRINT"{RIGHT}AROUND THE TRACK AS FAST AS POSS
IBLE" srem 135
1038 PRINT"{RIGHT}WITHOUT CRASHING. YOU CAN GO AS
{SPACE }MANY" :rem 17
1948 PRINT"{RIGHT}LAPS AS YOU LIKE. YOU CAN RACE F
OR" i :rem 24
1958 PRINT"{RIGHT}POINTS OR FOR TIME. TO END A LAP
OR" s:rem 47
1968 PRINT"{RIGHT}TO RESET THE CLOCK YOU MUST DRIV
Ee THE,’ srem 201
1070 PRINT"{RIGHT}CAR OFF THE SCREEN AT THE LOWER
{SPACE} LEFT." :rem 96
1972 PRINT"{RIGHT}THERE IS NO TOP SPEED, BUT THE F
ASTER" - :rem 18
1873 PRINT"{RIGHT}YOU GO, THE HARDER IT IS TO DRIV
E.{2 DOWN}" :rem 181
1080 PRINT TAB(15) "UP={RVS}P{OFF}{DOWN}" :rem 143
205
Ls) Arcade Games
Jorn SoS
207
Ls) Arcade Games
208
Arcade Games 5
209
5 Arcade Games
210
Haunted Mansion
Calvin Overhulser
64 Translation by Kevin Martin
211
5 Arcade Games
212
Arcade Games 5
213
% Arcade Games
Variable Description
A Variable in READ statements.
I Miscellaneous counters in FOR/NEXT loops +
random numbers.
Random number.
Counter in FOR/NEXT loops.
Constant=0.
Constant= 1.
Constant= 40.
Volume (54296).
x<0V0OZ— Counter in FOR/NEXT loops + random
numbers.
N Current location to be updated in subroutines
300-307.
Skill level.
String for GET statements.
Flag to place character.
Cat counter.
Cat flag CF=4 means carrying cat.
Current location for cat saver.
Difference between color memory and screen
memory.
Dead flag.
Constant=32.
Joystick value.
Number of current round.
Screen RAM location.
Current score.
Sound High (54273).
Sound Low (54272).
Temporary storage for CL or A(I) during
update.
WL Constant=35.
A(0)-A(3) Variables for maze generator.
A(1)-A(13) Locations of evil spirits.
- 214
|
f\
ee “ESE
\J
/ } \ *7
\ For mistake-proof program entryve sure to read “The Automatic Proofreader,”” Appendix C.
196 POKE52 ,48 :POKE56,48:CLR srem 70
182 POKE53 280 ,@:POKE53281,0 :rem 232
185 PRINT"{CLR}K79{3 DOWN}********e }HAUNTED
{ RVS %*e*
{2 SPACES }MANSION{OFF}*******#*eke". srem 180
187 PRINT"{13 DOWN}{9 SPACES}REDEFINING{2 SPACES }c
HARACTERS" srem 1
188 POKE56334, PEEK( 56334) AND254:POKE1,PEEK(1)AND25
1 :rem 186
118 FORI=@0TO511 :POKE12288+1, PEEK(53248+1) :NEXT
srem 224
115 POKE1 , PEEK(1)O0R4:POKE56334, PEEK(56334)OR1
srem 134
130 FORI=12288+35*8TO12288+45*8+7
: READA: POKEIL,A:NE
XT :rem 42
149 FORI=12288+27*8T0O12288+31*8+7
: READA: POKEL,A:NE
Bak srem 39
158 FORI=12288+58*8T0O12288+62*8+7
: READA: POKEI,A:NE
XT s:rem
48
SC=1924 srem 50
CM=54272 s:rem 106
SH=54273 : SL=54272 : V=54296 : WF=54276 :0=0: P=1:Q=4
@:DIMA(13):POKEV,15 srem 254
POKESL+5,17:POKESL+6, 241 srem 139
GOSUB89@ s:rem 175
GOSUB99G srem 181
POKE53272, (PEEK(53272)AND24@)+12 :rem 183
GOSUB19@@ : RN=RN+1 srem 241
CL=SC+859 srem 197
JP=15-PEEK(5632@)AND15:
IFJP=8THENJ P=3 :GOTO215
:rem 202
IFJ P=2THENJP=5 :GOTO215 srem 114
IFJP=4THENJP=7 :GOTO215 srem 119
IFJ P=1THEN215 s:rem 244
JP=2 s:rem 169
TL=CL: Z=TL:ONJPGOSUB3@1 ,3909,383,300,3905,308,30
7,390 :rem 66
CL=Z:POKEV,15:POKESH,
58: POKEWF, 17 : GOSUB409 : POK
EWF,16 s:rem 33
IFDFTHEN5@@ s:rem 118
POKETL, 32: POKECL, 58 : POKECM+CL, 3+CF :rem 76
GOSUB7@@ : LIFCC=1 THENFORX=1T01599 :NEXT : GOTO17@
srem 52
GOSUB68@ : IFDFTHEN59@ :rem 199
GOTO218 :rem 98
RETURN s:rem 115
Z=Z-Q: RETURN :rem 29
215
LS Arcade Games
216
Arcade Games
ee eh
217
Arcade Games
PRINT">>.>>>>>>>>{
BLU} -####4####4#######, {YEL}
>>> LO>> >> >>" :rem 75
PRINT">>>>>>>>>>{ BLU} -##### Fs Fee este eee?,
{WHT}>>>>>>>>>>"; :rem 161
PRINT">>>>>>>>>{ BLU} -####4#### 828222 et e222,
{WHT }>>>>>>>>>"3 :rem 103
PRINT">>>>>>>>{ BLU} -#### see sees tee ee ee eez?,
{WHT}>>>>>>>>"3 :rem 54
PRINT">>>>>>>{
BLU) -##### eee ee ees tet ee eeeze?,
{WHT}>>>>>>>"; :rem 252
PRINT">>>>>>{BLU} -##### tt testes eeeeeeeeze222,
{WHT }>>>>>>"; :rem 203
PRINT">>>>>{BLU}
-###### sess see ses ee esses ee eee
{WHT}>>>>>>"; :rem 168
PRINT">>>>> {BLU} ######FEFEFEEEEER ESE SESE SE TEE
{WHT}>>>>>>"; PELLET APTS “~——S¥em
154
PRINT">>>>>{
BLU} ##### ee ee sess sss see sees eeeee?
{WHT} >>>>>>"; :rem 159
PRINT">>>>>{
BLU} ##### sees ess sss sees eee eee eee?
{WHT }>>>>>>"; :rem 155
PRINT">>>>>{
BLU} ###### ee esse sss esse sees eeeee?
{WHT }>>>>>>"; :rem 157
PRINT">>>>>{ BLU} #####e sees esse se eeeeeeeeesese
{WHT}>>>>>>"; :rem 158
PRINT">>>>>{ BLU} #####e ee hess sss eesesesesesese
{WHT}>>>>>>"3 :rem 159
PRINT">>>>>{ BLU} ##### FHF Fsess sss sess ese sees ee
{WHT}>>>>>>"; :rem 160
REM BUILD MAZE :rem 68
A(@)=2:A(1)=-80:A(2)=-2:A(3)=80:WL=35:HL=32:A
=SC+846 :rem 19
POKEA,4 :rem 148
J=INT(RND(1)*4) :X=J :rem 101
B=A+A(J) : IFPEEK(B)=WLTHENPOKEB,J
:POKEA+A(J)/2
,HL:A=B:GOTO1220 :rem 8
J=(J+1)*-(J<3) : IFJ<>XTHEN123@ :rem 128
J=PEEK(A) :POKEA,HL: IFJ< 4THENA=A-A(J)
:GOTO122@
:rem 34
FORI=SC+216TOSC+856STEP
49 : POKEI , 32: POKEI+7, 32
: NEXT :rem 152
FORI=SC+14@TOSC+860STEP4@
: POKEI, 32: NEXT
s:rem 235
FORI=SC+372TOSC+852STEP4@ : POKEIL, 32: POKEI+15, 3
2:NEXT :rem 200
FORI=SC+489TOSC+849STEP4@ : POKEI , 32: POKEI+21,3
2:NEXT :rem 213
FORI=SC+372TOSC+387 : POKEIL, 32:NEXT s:rem 89
FORI=SC+489TOSC+5194:POKEI , 32:NEXT :rem 87
FORI=SC+687TOSC+712:POKEI, 32: POKEI+16@, 32 :NEX
ah :rem 97
Arcade Games 5
219
Arcade Games
220
re
Machine
Language
Games
CUT-OFF!
Tom R. Halfhill
223
& Machine Language Games
Typing CUT-OFF!
Pure machine language programs are usually more difficult to
enter than BASIC programs, because they consist of seemingly
endless streams of numbers. To make typing CUT-OFF! easier,
we've listed the programs in MLX format.
You may already be familiar with MLX if you've typed in
some of the machine language programs published in other
COMPUTE! books, or in COMPUTE! publications such as
COMPUTE! magazine or COMPUTE!’s Gazette magazine. If
you're not familiar with MLX, it’s a utility designed by Charles
Brannon to make typing errors almost impossible. To learn
how to use MLX, see “Using the Machine Language Editor:
MLX” in Appendix D at the back of this book. If you've pre-
viously typed in MLX, you can use it again for CUT-OFF!
Here’s the information you'll need to enter CUT-OFF!:
Starting Address—49152 3
Ending address—50663 3
To run, enter SYS 49152 3
To stop, press RUN/STOP-RESTORE 3
Remember, to load a machine language program from
disk or tape, you must use this special form of the LOAD
command:
LOAD “filename”,8,1 (for disk)
LOAD“ filename”,1,1 (for tape)
If you forget to append the ,1 to the command, the pro-
gram loads into the wrong area of memory and will not work.
Youngsters to Superhumans
After you enter the SYS 49152 command, the game screen ap-
pears instantly. (One of the best things about machine lan-
guage is that you don’t have to wait around for programs to
initialize.)
The opening screen allows you to select a skill level rang-
ing from 0 (the slowest speed, suitable for youngsters) to 9
(recommended for superhumans only). The skill levels are
spaced equally apart, so you might want to start at 3 or 4. The
level you select remains the same for the entire game. To
change levels in the middle of a game, press RUN/STOP-
224
Machine Language &
225
6 achine Language Games
C CUT-oFF! OW a
For easy entry of this machine language program, be sure to read “Using the Machine Lan-
guage Editor: MLX,” Appendix D.
49152 :032,200,193,876,0906,192,187
49158 :173,066,003,024,105,001,122
49164 :141,966,003,173,067,8083,2089
49178 :105,000,141,067,003,174,252
49176 :0608,003,032,145,195,169,116
49182 :801,141,065,003,032, 203,219
49188 :195,162,802,161,247, 201,236
49194 :032,248,032,032,154,195,215
492909 :032,119,197,032,215,194, 969
49286 :173,8068,8903,201,000, 240,227
49212 :083,173,869,003,201,000,077
49218 :240,076,032,190,192,032,060
49224 :074,196,076,0960,192,832,136
49230 :154,195,169,000,141,065,034
49236 :003,032,203,195,162,008,167
49242 :161,247,201,032,240,832,235
49248 :932,154,195,932,119,197 , 657
49254 :032,215,194,173,068,8003,019
49260 :201,000,240,032,173,069,855
49206 :003,201,000, 240,8025,032,183
49272 :198,192,032,074,196,076,112
49278 :006,192,032,154,195,173,119
49284 :001,224,045,900, 220,041,147
49290 :816,240,006,8976,006,192,162
49296 :076,251,196,173,001,228,037
49302 :045,000,220,041,816, 248, 289
49308 :246,162,258,032,145,195,162
49314 :173,001,220,045,000,228,853
49320 :041,016,208,246,173,881,085
49326 :220,045,000,220,041,9016,204
49332 :248,246,162,258,032,145,231
49338 :195,076,006,192,169,147, 203
49344 :032,210,255,169,015,141,246
49350 :033,208,169,805,141,832,0818
49356 :208,162,008,169,168,157,836
49362 :000,004,169,800,157,890,0628
49368 :216, 232,224,040, 208,241,897
49374 :162,060,169,160,157,192,0838
49380 :007,169,000,157,192,219,2984
49386 :232,224,048, 208,241,169,868
49392 :000,133,253,169,004,133,164
49398 :254,169,000,133,251,169,198
49404 :216,133,252,162,000,169,168
494198 :160,160,000,145,253,169,121
49416 :900,145,251,168,039,169,004
226 ¢
Machine Language Games &
49422 :160,145,253,169,800,145,118
49428 :251,024,165,253,195,948090 ,
49434 :133,253,165,254,185,008,168
49448 :133,254,024,165,251,195196 ,
49446 :949,133,251,165,252,195216 ,
49452 :600,1 252) 232; 33,
224, 925,142
49458 :2808,205,169,012,162,016,054
49464 :157,900,216,232,224,024,141
49478 :208,248,169,131,141,016207 ,
49476 :004,169,149,141,017,804949 ,
49482 :169,148,141,818,004,169211 ,
49488 :173,141,019,004,169,143,217
49494 :141,028,004,169,134,141,183
49588 :021,004,141,022,084,169,197
49506 :161,141,923,604,169,996990 ,
49512 :141,199, 217516950027 1417295
49518 :209,217,169,081,141,199,192
49524 :865,169,087,141,209,005229 ,
49538 :169,000,141,0966,003,141,1390
49536 :8607,8003,169,807,141,875,078
49542 :0903,169,011,141,974,903,023
49548 :169,299,141,079,003,169,133
49554 :805,141,071,003,169,199,222
495608 :141,8072,003,169,005,141,171
49566 :073,003,169,152,032 210,829
,
49572 :255,824,162,000,1600,007,004
49578 :8032,240,255,174,061,003,167
49584 :173,862,003,032,205,189,972
49599 :024,162,000,160,029,032,077
49596 :248,255,174,063,003,173,072
49682 :964,003,032,205,189,096,015
49608 :169,900,141,061,003,141,203
49614 :962,003,141,063,003,141,107
49628 :964,003,169,081,141,077,235
49626 :003,169,887,141,976,003,185
49632 :032,190,1927169,012,;162,213
49638 :009,157, 216, 232,224
240,028 ,
49644 :9308,208,248,162,909,157,026
49658 :064,217,232,224,930,208,193
49656 :248,141,163,217,162,900,155
49662 :189,171,194,240,006,157,187
49668 :249,004,232,208,245,162,9080
49674 :000,189,193,194, 240,006,064
49680 :157,097 232, 208,245
3,00 5,,168
49686 :169,948,141,060,003,141,072
49692 :163,005,162,100,032,145,123
49698 :195,173,001,220,041,015,167
49704 :201,014,240,033,201,9013,230
49718 :240,010,173,001,220,041,219
227
& Machine Language Games
49716 :016,240,063,076,638,194,159
49722 :173,060,003,056, 233,001,072
49728 :201,047,248,028,141,068,013
49734 :003,141,163,005,076,030,232
49740 :194,173,960,003,024,185,123
49746 :001,201,058,240,020,141,231
49752 :860,003,141,163,005,076,824
49758 :830,194,169,057,141,060, 233
49764 :003,141,163,005,8976,038, 906
49770 :194,169,048,141,860,803,209
49776 :141,163,905,8976,030,194, 209
49782 :173,001,228,041,016, 240,041
49788 :249,162,250,032,145,195,133
49794 :173,8068,003,056, 233,948,191
498090 :170,169,050,141,068,003,217
49806 :224,000,240,013,173,060,084
49812 :003,056,233,005,141,860,134
49818 :003,202,8076,142,194,032,835
49824 :190,192,169,010,141,9068,162
49830 :003,141,969,003,096,8013,235
49836 :015,8022,005,032,019,015,015
49842 :025,019,8020,089,003,811,90089
49848 :032,021,016,947,904,9015,063
49854 :023,014,8000,8020,015,032,838
49808 :003,008,015,015,019,085,005
49866 :032,019,011,909,012,012,041
49872 :032,012,005,022,005,012,049
49878 :000,173,08708,003,205,072,225
49884 :003,240,003,876,099,195,068
49899 :173,071,083,205,073,003,242
49896 :298,121,173,075,003,174,218
49992 :074,003,201,014,249,012,814
49988 :201,007,240,015,201,813,153
49914 :240,018,201,011,240,021,213
49920 :224,013,240,024,8076,099,164
49926 :195,224,011,248,017,076,001
49932 :899,195,224,014,240,8018,026
49938 :876,099,195,224,007, 248,091
49944 :903,976,099,195,173,061,119
49958 :003,024,109,066,003,141,1298
49956 :861,003,173,062,003,185,187
49962 :000,141,062,0903,173,067, 232
49968 :003,024,109,062,003,141,134
49974 :962,003,174,068,003, 202,054
49980 :142,068,003,173,063,8083, 890
49986 :024,109,066,003,141,0863,216
49992 :003,173,8064,9083,195,880,164
49998 :141,064,003,173,867,003,817
50004 :024,109,064,003,141,964, 233
"228
Machine Language Games &
59018 :003,174,869,003,202,142,171
58916 2969,0093,996,173,865,003,249
58822 :010,170,189,061,903,024, 047
59028 :109,966,093,157,961,003,251
58034 2189,962,003,195,090,157,118
58049 2962,903,173,867,903,924,196
500846 2125,062,003,157,062,003,026
560852 2174,965,003,189,068,003,122
58858 7056, 233,001,157,068,003,144
500604 :996,160,990, 200,208, 253,937
58878 :202,208, 248,096,174,065,119
58076 :9093,188,076,003,138,919,962
580882 :170,181,247,157,878,003,222
58088 2181, 248,157,071,003,152,212
50094 :129,247,181,248,024,1985,084
58100 :212,1 248, 224,002,
49, 298,199
58196 :008,169,006,129, 247,032,009
58112 3179,197,8096;169,002,129;137
59118 :247,032,170,197,096,174,090
59124 :965,8003,189,090,220,941,219
50138 :015,201,014, 240,018, 201,131
50136 :907,248,038,201,013,2408,187
50142 :058,201,011,249,078,189, 231
50148 :074,003,076,211,195,157,176
58154 :874,063,138,8010,1709,056,173
50160 :189,070,003,233,040,149,156
58166 :247,189,071,003,233,000, 221
5@172 :149,248,976,073,196,157,127
59178 :874,003,138,019,170,024,165
58184 :189,878,003,105,001,149,013
58190 :247,189,0871,003,105,000,117
50196 :149,248,076,073,196,157,151
50262 :074,003,138,010,170,024,189
58208 :189,970,003,1905,0408,149,076
58214 :247,189,071,003,105,000,141
582209 :149,248,876,073,196,157,175
56226 :074,003,138,010,170,056,245
56232 :189,078,003,233,001,149,189
50238 :247,189,071,903, 233,000,037
58244 :149,248,076,073,196,096,138
58250 :162,000,189, 219,196, 240,056
50256 :0@06,157,255,004, 232,208,174
56262 :245,162,000,189, 232,196,086
50268 :240,006,157,879,0 232,043
05,
58274 : 208,245, 162,000,189, 244,122
58289 :196,248,906,157,0817,006,214
5@286 :232,208,245,162,000,189,122
58292 :244,196,248,006,157,033,224
58298 2006, 232,208, 245,169,012, 226
229
& Machine Language Games
YS
231
Astro-PANIC!
Charles Brannon
Swooping Saucers
Instantly, seven alien saucers begin to sweep about the screen.
The saucers keep moving in their current direction until they
hit a screen boundary, then rebound. Sometimes they change
speed. Meanwhile, you move your cannon left and right to
evade the erratic dives and swoops of the saucers. The slight-
est contact with an alien saucer spells destruction.
Fortunately, you have your super weapon, a laser/heat
ray/particle beam/thermonuclear cannon. Simply press the
trigger button on the joystick to unleash a bolt of this in-
credible power. The bolt continues until it hits a saucer,
atomizing it, or until it reaches the top of the screen. Hold
down the fire button to access the bolt’s automatic fire mode.
You can pause the game at any time by pressing SHIFT or
freeze it by depressing the SHIFT LOCK key. Press the SHIFT
LOCK a second time to continue the game.
Scoring varies from time to time. It does depend on the
saucer’s postion, but it’s not fixed. Sometimes you'll get a
large score for dematerializing a saucer near the top of the
screen, other times you'll be rewarded with many points if you
blast one nearer your cannon. If you’re concerned about a
high score (rather than just surviving), there’s just no rule for
232
Machine Language Games &
PANICking
Keep moving. It’s more important to protect your cannon than
to make that tricky shot. Dodge the aliens first, shoot later.
You won’t always want to hold down the fire button to repeat,
since sometimes a shot will be in the air when you’d rather
shoot the alien right above you. Keep an eye on the move-
ment of the saucers, so you can sometimes synchronize several
wipe-out shots. Watch for the edges of the screen. Aliens will
sometimes bounce off an edge right into you.
234
Machine Language Games io
49392 ?888,198,024,165,188,185,232
49398 $933,133, 251,133,253,169,194
49484 ?007,195,9808,133,252,185,886
49418 2212,133,254,194,168,104209 ,
49416 2178,1804,064,032,003,192,861
49422 :169,004,133,252,168,900220 ,
49428 2185,226,196,153,900,956,868
49434 :200,192,088,208,245,160,015
49448 2909,152,153,8900,957,280,882
49446 :192,998,208,248,160,8900, 886
49452 2185,234,196,153,080,058,162
49458 2200, 208, 247,169, 232,141,223
49464 :248,0807,160,007,169,233,112
49476 :153,248,007,136, 208,250,040
49476 2169,255,141,8028,208,169,914
49482 :@00,141,029, 208,141,923,184
49488 :208,141,016,288,169,903,9857
49494 :141,037,208,169,008,141,9022
49589 :938,208,169,212,141,001,993
49586 :208,160,000,185,236,197,960
49512 :153,948,208,200,192,907,136
49518 :208,245,169,906,141,939,159
49524 :208,169,147,8932,218,255,113
49530 2160, 039,169, 1607.1537 1527187
49536 :007,169,005,153,152,219,065
49542 :136,916,243,160,905,162,9088
49548 :824,024,032,240,255,160,1907
49554 :0600,185,244,197,240,006, 250
49560 :032,210 298,245,,
200,,255 922
49566 :160,900,162,023,9024,032,047
49572 :248,255,160,000,185,025,905
49578 :198,248,006,032,210,255087 ,
49584 :200,208,245,169,004,141,119
49590 2835, 208,169,014,141,036,017
49596 :208,168,024,169,000,153,134
49682 :000, 212,136,816, 250,169, 209
49688 :255,141,915,212,169,128,096
49614 :141,918,212,169,143,141,996
49629 :024,212,169,015,141,139,144
49626 :198,169,003,141,136,198,039
49632 :169,900,141,088,198,141,193
49638 :137,198,170,142,090,198,141
49644 :169,184,141,889,198,138,131
49650 :910,168,010,010,010,019204 ,
49656 :824,105,031,153,991,198,982
49662 :169,000,153,092,198,153,251
49668 2003, 208,169,960,157,105,194
49674 :198,032,186,195, 232,224,953
49680 :007,208,222,169,255,141,250
235
& Machine Language Games
236
Machine Language Games
6
4998 27168, 208,289,169,000,042,071
49986 2136, 2908, 252,133,167,073,811
49992 7255,845,8016,208,164,168,16@
49998 7248,802,005,167,141,816,137
58084 2208,232,224,007,208, 204,143
58819 :162,000,138,818,168,189, 245
58816 2195,198,024,125,112,198,990
58822 2281,218,176,004, 201,058,176
58828 :176,906,032,186,195,976,911
58834 :178,195,157,185,198, 024, 203
5884 :185,991,198,121,129,198,999
58846 2133,167,185,8092,198,121,254
58852 :121,198,133,168,208,014, 206
59658 :165,167, 201,031, 240,002,176
59064 :176,986,932,186,195,876,047
50870 :178,195,165,168, 248,012,084
58076 :165,167,201,064,144,096,135
59882 :032,186,195,876,178,195,992
58888 :165,167,153,091,198,165,883
59694 :168,153,092,198, 232,224,217
581068 :907,208,165,876,030,194,892
58186 :134,169,132,178,173,027,223
58112 :212,041,0905,170,189,878,111
58118 :198,166,169,157,112,198,174
50124 :173,027,212,941,905,818,1608
59138 :168,185,876,198,166,170,149
58136 :157,120,198,185,077,198,127
50142 :157,121,198,164,170,166,174
59148 :169,896,169,235,141, 248,886
58154 :007,169,001,141,137,198,119
59168 :169,089,141,005,212,169,177
50166 :160,141,906,212,169,833,199
58172 :141,004,212,162,100,142,245
58178 :001,212,1608,008,173,927,063
50184 :212,141,039, 208,141,000, 237
58190 :212,136, 208,244, 202,208, 209
58196 :236,169,234,141,248,007,931
58202 :169,901,141,029, 208,141, 203
50268 :023,208,169,932,141,904,0897
59214 :212,169,168,141,906, 212,178
58220 2169,129,141,004, 212,162,993
59226 :100,142,001,212,160,000,153
58232 :140,900,212,173,027,212,952
59238 :141,039, 208,136,208, 244,814
50244 3202, 208,236,169, 232,141,232
58256 :248,007,169,806,141,039,172
58256 :208,169,000,141,929,208,067
58262 :141,023,208,169,128,141,128
59268 :004,212,162,190,168,908,218
27
&s Machine Language Games
238
Machine Language Games &
58568 :138,281,088,0189,186,874,057
58574 :835,198,232,000,141,032,004
58588 :818,038,019,038,166,160,858
58586 :908,168,168,130,138,048,930
58592 :818,003,128,908,032,808,085
58598 :808,082,032,900,000,0800,200
58694 :808,080,800,0009,800,916,188
58619 :8908,000,118,000,000,118,158
58616 :8008,001,255,128,007,255,962
58622 :224,007,171,224,9007,255,054
59628 :224,931,171,248,127,255,228
98634 3:254,127,171,254,12/ 5255,119
59640 :254,119,171,246,119,255,992
58646 :246,118,1198,118,118,118,919
58652 :118,118,110,118,126,900,942
58658 :126,089,000,800,000,090,096
58664 :900,080,9090,013,906,004,255
58679 :061,0807,908,012,013,614,037
50676 :988,031,211,067,979,682,2190
59682 :869,058,158,848,948,648,167
59688 :648,048,048,%32,032,149,101
59694 :2808,073,071,072,032,211,153
5879 :8967,079,082,969,958,928,139
50706 :848,048,048,48,048,048,0650
58712 :800,8018,149,204,973,986,042
58718 :869,983,958,051,029,029,093
59724 :829,929,029,029,029,028209 ,
52738 :193,083,084,082,079,045,896
50736 :208,193,286,201,195,933,960
5742 :829,929,029,6029,029,029,228
50748 :831,204,969,886,069,976,083
58754 :858,948,032,000,001,255,204
5@760 :0@02,254,003,253,001,000,073
59766 :255,255,002,000,254,255,9875
50772 :803,000,253,255,813,013,199
239
Nessie
Tom R. Halfhill
64 Version by Charles Brannon
240
Machine Language Games &
242
Machine Language Games &
243
& Machine Language Games
\shessio
For easy entry of this machine language program, be sure to read “Using the Machine Lan-
guage Editor: MLX,” Appendix D.
491592 2:469;,071,133)251 7169, 199, 224
49158 :133,252,169,000,133,253,178
49164 :169,056,133,254, 162,004,622
49170 2160,255,177, 251,145,253,235
49176 :136,192, 255, 208, 247,230,812
49182 :252,230,254, 202,048,807, 255
49188 :208,238,168,127,9876,820,097
49194 :192,198,254,160,128,169,119
49200 :000,145,253,200,208, 251,981
49206 :169,255,141,014, 212,141,218
49212 :915,212,169,128,141,9018, 231
49218 :212,169,000,141,024,212,0856
49224 :169,252,141,027,208,162, 807
49230 :005,032,189,193,169,128,026
49236 3157,205,203,157,211,263, 196
49242 :169,000,157,199, 203,189,239
49248 :024,199,157,041, 298,189,146
49254 :032,199,157,2589,907,138,117
49268 :010,168,169,000,153,005,101
49266 :208,282,016,217,173,022,184
49272 :199,141,039,208,173,023,135
49278 :199,141,940,288,173,030,149
244
Machine Language Games 6
49284 :199,141,248,007,173,931,163
49298 :199,141,249,007,169 880,135
,
49296 :141,236,203,169,160,141,172
49362 :235,203,141,000,208,141,054
49308 :802,208,169,128,141,237,917
49314 :203,141,001,208,141,903,991
49320 :208,169,255,141,021,208,146
49326 :141,028,208,169,903,141,996
49332 :029,208,141,023,208,169,1908
49338 :806,141,032,208,141,833,235
49344 :208,169,005,141,037,208,192
49350 :169,084,141,038, 208,169,159
49356 :001,141,246,203,032,231,034
49362 :193,120,169,118,141,920203 ,
49368 :903,169,196,141,021,003,237
49374 :088,168,000,132,007,152,249
493890 :919,170,185,199,203,974,045
49386 :102,007,185,205,203,157,969
49392 :004,208,185,211,2037157)194
49398 :005,208,201,050,144,907,693
49404 :201,229,176,003,076,014,183
49416 ©2193 5185 7(2295.203;,,0/3;,255116
,
49416 :624,105,901 229, 203,211
,153 ,
49422 :185,199,203,249,019,185,012
49428 :205,203,201,004,176,013,114
49434 :076,062,193,185, 205,203,182
49449 :201,024,144,003,8076,062,030
49446 :193,169,000,153,223,203,211
49452 :185,217,203,073,255,024233 ,
49458 :105,001,153, 217,293, 201,162
49464 :255,208,003,153,223,203,077
49478 :185,250,007,073,001,153,219
49476 :258,007,185,217,203,170,076
49482 :185,250,007,009,002,153,168
49488 :258,007,224,001,240,005,939
49494 :9073,002,153,250,007,024,083
49500 :185,205,203,121,217,203202 ,
49506 :153,205,203,185,199 203,222
,
49512 :121,223,203,153,199,203,182
49518 :024,185,211,203,121,229,059
49524 :203,153,211,203,200,192,254
49530 :006,240,003,076,227,192,098
49536 :173,916,208,041,003,005,062
49542 :007,141,016,208,174,245,157
49548 :203,249,908,160,000,136,119
49554 :208,253, 208, 250,173
202,160,
4956UW :027,212,201,128,144,011,107
49566 :173,027,212,201,006,176,185
49572 :249,170,932,189,193,032,005
245
& Machine Language Games
oS
246
Machine Language Games &
49872 :032,032,032,154,206,969,221
49878 :083,083,873,969,032,0832,074
49884 :932,032,032,032,155,198,189
49898 :973,876,077,032, 204,069,245
49896 :870,084,958,158,958,848,188
49962 :813,000,153,818,8 849,829
78,
49988 :146,058,212,969,9869,196 076,
49914 :880,872,079,084,079,032,164
49928 :018,878,051,146,0 215,046
58,
49926 :973,8968,069,032,193,878, 887
49932 :071,876,069,932,018,8708,092
49933 :853,146,958,211,080,869,123
49944 :969,068,013,913,070,955,961
49950 :146,958,197,065,083,089,156
49956 :932,199,065,077,069,032,254
49962 :918,070,056,146,058,209,978
49968 :965,982,00608,932,199,8965,047
49974 :077,969,000,173,000,220,881
49989 :072,041,016,141,238,203,9803
49986 :104,041,015,973,015,170,228
49992 :924,1/3,235,20 025, 09497113
35
49998 2199,141 235720371417, 000,229
50064 :208,141,9002,208,173,236,028
50018 :203,125,038,199,141,236,008
500916 :203,074,908,173,0 208,019
16,
50822 :874,974,040,008,042,040,124
59028 :942,141,016, 208,024,173, 200
50034 :237,203,125,060,199,141,055
50049 :237,203,141,001,208,141,927
50846 :003,208,173,238,203,240,167
58852 :813,169,000,141,2 283,137
47,
5@958 :169,001,141,246, 203,076, 206
50064 :160,195,173,247, 203,240,082
58070 :023,173,246,203,248,004,015
50876 :206,246,283,096,169,006,058
5@082 :141,032,208,141,033,208,157
50088 :169,128,141,004, 212,096,15¥
50094 :206,038,004,173,038,004,125
50190 :201,048,176,020,169,957,983
50106 :141,038,004, 206,937,004,184
5@112 :173,937,004,201,049,176,064
58118 :005,169,032,141,037,904,074
50124 :169,031,141,005,212,141,135
50130 :024,212,169,003,141,006, 253
50136 :212,169,255,141,9 212,181
00,
50142 :141,001,212,141,904,212,165
50148 :169,004,141,074,204,162,214
50154 :006,172,244,203,136,169,140
52160 :000,153,9032,204,173,074,198
247
& Machine Language Games
58166 :204,009,002,141,021,208,063
58172 :173,0308,208,032,127,196,250
50178 :173,030, 208,041,253,825,220
50184 2032, 204,153,032, 204,014,135
50199 2074, 204, 202, 208, 225,169,072
530196 :001,141,032,208,141,9033,064
58202 : 208,141,247, 203,169,004, 2308
58298 :141,074, 204,162,006, 169,020
58214 :000,153,052,204,173,074,182
58220 :204,009,001,141,821,208,116
58226 :173,030,208,8032,127,196,048
50232 :173,030,208,041,254,025,919
58238 :052,204,153,052,204,014, 229
50244 2074, 204, 202, 208, 225,173,139
58250 :831,208,032,127,196,173,073
58256 :031, 208,153,248, 203,173,072
50262 :600,220,8041,8015,073,015,194
58268 :153,012,204,169,255,141,002
58274 2021, 208, 206, 244, 203,173,129
50280 2244, 203, 240,038, 201,005,011
58286 :208,005,169,007,141,0840,168
560292 :2808,096,032,137,196,032,0649
58298 :057,195,076,049, 234,032,253
58304 :130,196,173,018, 298, 201,930
58310 2255, 208, 249, 238, 241, 203, 248
58316 : 208,003,238, 242, 203,896,196
58322 :169,147,032,210, 255,169,104
58328 :000,141,032,208,141,033,195
50334 :208,120,169,015,141,820,063
50348 :003,169,198,141,021,003,187
58346 :169,001,141,026, 208,169,116
58352 :027,141,017, 208,169,050, 020
56358 :141,018, 208,169,127,141,218
58364 ?9@13,220,169,255,141,027,245
583708 :208,169,0900,141,075, 204, 223
58376 :169,031,141,021,208,169,171
58382 :255,141,029, 208,141,023, 235
580388 :208,169,016,141,016, 298, 282
58394 :162,000,138,018,168,819,194
58400 :010,010,018,018,024, 185,137
58486 :029,153,000, 208,169,809, 03G
56412 2157,039, 208, 232,224,005,077
58418 2208, 232,088,162,819,168,887
50424 :000,189,248,203,841,803,164
58438 :029,012,204, 248,818,169,15@
58436 :241,153,101,198,169,000,898
50442 :076,086,197,189,852, 204,846
50448 :041,064,208,044,189,852,1982
50454 :204,208,010,169,242,153, 2498
248
Machine Language Games &
RPE SORA TTT MINI NET
5904608 :101,198,169,880,076,086,146
598466 :197,142,072,204,189,052,122
50472 :204,162,000,074,176,004,148
58478 :232,976,843,197,189,038,045
50484 :199,153,101,198,174,9072,181
58498 :204,169,005,0976,086,197,827
59496 :189,032,204,249,010,169,1498
59502 :248,153,101,198,169,819,173
58588 :0976,886,197,169, 236,153,225
58514 :161,198,169,200,924,1989,115
50526 :239,203,141,239,293,173,806
58526 :248,283,105,000,141,249,255
50532 :203,202,200,192,920,208,101
50538 :142,032,121,198,173 239,243
,
50544 :203,813,248,203,2498,929,016
99550 :056,173,;239)203; 237,242; 244
58556 :203,141,239,203,173,249,943
58562 :203,233,000,141,240 203,126
,
50568 :173,9076,264, 248,906,014, 981
50574 :239, 203,046,249, 203,162,211
59580 :024,160,000,024,032,2408,116
59586 :255,169,236,160,197,032,179
59592 :030, 171,1745 239792037 1735126
59598 :248,203,032,205,189,169,180
59694 :048,932,210,255,173,243,189
586190 :203,208,005,169,0948,032,075
50616 3210,2 loz, 1 2073271
55, 277060
50622 :196, 202, 208, 25071737090)195 ,
59628 :220,041,016,240, 249,173,111
50634 :000,220,041,916, 208,249,168
58649 :128,169,000,141,026 208,194
,
59646 :169,255,141,013,220,169,157
58652 :949,141,020,003,169,234,9068
59658 :141,021,003,088,162,255,128
59664 :154,076,000,192,159,2908, 253
59670 :076,065,089,032,065,071,124
58676 :865,073,978,9058, 211,978,039
50682 :065,0980,032,083,072,985,155
59688 :984,984,969,082,032,154,249
58694 :211,967,8979,082,069,058, 060
50700 :158,018,800,173,818 208,075
,
58706 :924,105,002,141,001,208243 ,
50712 :141,9003,208,141,00 218
298,5,
50718 :141,007,208,141,009 208, 232
,
50724 :141,011,208,174,075 204,081
,
58730 :189,097,198,168,162,000,988
50736 :185,101,198,157,248,007,176
50742 :200,232,224,005, 208,244,143
50748 :238,075,204,173,075 204,005
,
249
6 Machine Language Games
250
Machine Language Games &
51948 :800,008,0008,000,000,900,194
51054 :808,000,900,0800,008,900,1108
51868 :809,9008,000,0008,09080,000,116
531966 :908,009,098,000,000,2800,122
518972 :800,808,900,000,000,0008,128
51878 :147,178,170,128,128,808,199
51684 :128,128,008,128,128,000,140
51999 :128,128,800,128,128,089,146
51496 :128,128,008,128,128,000,152
51162 :128,128,900,128,128,000,158
51188 :128,128,900,128,179,178,120
51114 :128,989,900,000,090,000,942
51120 :800,008,900,0008,900,0990,176
51126 :980,900,9090,900,0008,900,182
51132 :9008,8900,900,000,900,000,188
51138 :888,09080,000,000,147,009,985
51144 :008,800,0900,0900,900,908,200
51158 :888,08080,000,000,000,0800,206
51156 :800,908,800,008,900,000,220
51162 :888,980,000,008,000,000,234
51168 :178,128,9008,008,000,000,918
51174 :888,000,000,008,000,909,246
51188 :000,000,000,000,000,000,236
51186 :889,809,099,000,000,000,242
51192 :8008,000,000,009,000,000,248
51198 :860,0900,000,000,000,000,254
51204 :8600,000,048,042,179,179,178
51210 :832,000,002,032,000,002,078
51216 :832,008,902,032,000,002,084
51222 :832,0090,002,032,000,002,090
51228 :832,000,002,032,000,002,096
51234 :832,000,002,032,000,002,192
51248 :032,000,002,032,000,002,198
51246 :832,000,002,032,000,002,114
51252 :032,000,002,042,170,170,212
51258 :8088,000,000,000,000,000,058
51264 :800,000,000,000,000,090,064
51270 :848,0900,000,0009,000,009,118
51276 :800,0900,000,000,000,0009,076
51282 :800,900,000,000,009,000,082
51288 :800,0900,000,000,000,000,088
51294 :800,900,000,000,080,179,088
51300 :000,118,170,168,086,174,04
51306 :168,822,234,186,006,174,128
51312 :170,911,1798,233,010,170,198
51318 :149,005,0964,020,001,000,191
51324 :080,900,064,064,000,000,076
51330 :080,009,000,000, 233,000,197
51336 :000,000,000,0900,000,090,136
251
& Machine Language Games
RSME SRN NRE ATED TS TIT
253
& Machine Language Games
(CSREES REI SGOT ART he SE EL
51930 :000,117,000,080,088,000,167
51936 :000,080, 000,001, 080,001,130
51942 :017,0880,005,085,064, 085, 230
51948 :149,128,021,089, 080,086,021
51954 :085,080, 005,085,064, 005,054
51960 :001,064, 020,205,900, 000, O82
51966 :020, 000,000,000, 000,800,254
51972 :000, 000, 000,000, 000,000,004
51978 :020, 000,080,000, 000,200,018
51984 :920, 000, 000,000,000, 020, 036
51990 :020,000,117, 000,000, 088, 227
51996 :800,020, 080,008, 000,980,188
52002 :000,001,080,001,017,864,197
52008 :005,085,064, 021,149,128, 236
52014 :085,089,080, 006,085,880, 215
52020 :005,085, 064,001,064, 064,079
52026 :001,064, 064,085,001, 200,193
52032 :000,000,000, 000,000,000, 064
52038 :808,000,000, 000,000, 080,070
52044 :800,000, 000,008,200, 008,976
52050 :800,000, 000,200, 000,008, G82
52056 :000, 0600, 000, 000, 00, 200, 088
52062 :000,000, 000,000,080, 000,094
52068 :000, 000,000, 200,000, 008,190
52074 :808,000, 000,080,064, 080,170
52080 :820,980, 060, 000,081,016,033
52086 :008,085,084, 000, 089,100, 220
52892 :0008,0885,885, 000, 086, U89, 213
52098 :000,085,084,000,125,000,168
52104 :820,000, 080, 000, 000, B00, 136
52110 :842,160,000, 000,000,000, 088
52116 :800,000,255, 255, 255, 080, 145
52122 :178,165,015, 255, 255, 000, 246
52128 :900,880,042,129, 064,001, 220
52134 :817,080, 005,090,160, 240, 246
52148 :063,255, 021,089, 080, 086, 254
52146 :170,170,0085,085, 964, 255,159
52152 :255,064, 020,005, 000,174, 186
52158 :040,000,000,020,000,000, 230
52164 :808,000,000,013,813,013, 235
254
Appendices
Appendix A
A Beginner’s Guide
To Typing In Programs
What Is a Program?
A computer cannot perform any task by itself. Like a car with-
out gas, a computer has potential, but without a program, it
isn’t going anywhere. Most of the programs published in this
book are written in a computer language called BASIC. BASIC
is easy to learn and is built into all Commodore 64s.
BASIC Programs
Computers can be picky. Unlike the English language, which _
is full of ambiguities, BASIC usually has only one right way of
stating something. Every letter, character, or number is signifi-
cant. A common mistake is substituting a letter such as O for
the numeral 0, a lowercase | for the numeral 1, or an upper-
case B for the numeral 8. Also, you must enter-all punctuation
such as colons and commas just as they appear in the book.
Spacing can be important. To be safe, type in the listings ex-
actly as they appear.
257
A Appendix
A Quick Review
1, Type in the program a line at a time, in order. Press RE-
TURN at the end of each line. Use backspace or the back
arrow to correct mistakes.
2. Check the line you've typed against the line in the book.
You can check the entire program again if you get an error
when you run the program.
258
Appendix B
Zoo
Ge Appendix
you can still use DEL to back up and edit the line. Once you
type another quote, you are out of quote mode.
You also go into quote mode when you INSerT spaces
into a line. In any case, the easiest way to get out of quote
mode is to just press RETURN. You'll then be out of quote
mode and you can cursor up to the mistyped line and fix it.
Use the following table when entering cursor and color
control keys:
When You When You
Read: ‘ Press: See Read: Press: Se
{CLR} |SHIFT _CLR/HOME ) ki 3 COMMODORE 1 EJ
{HOME} ore. CLRIHOME | K2 3 COMMODORE 2 OE
{UP} |SHIFT | t crse4 | ae | COMMODORE 3 bs
{DOWN} TRS | Kaj COMMODORE 3 fr
{LEFT} |SHIFT ||— CRSR | Eis)3 COMMODORE 5 ES
{RIGHT} “—CRSR—| ke J comMopore «6 [ij]
{RVS} crei|[ 9 | R73 commopore||7 [J
{OFF} crt |{ 0 | Ks J COMMODORE 8 _
E 3
{ F2} SHIFT = fl
{ M } SHIFT f3
7“wn ~ _a
{ Fé } SHIFT £5
iis
EN
SO
I) { F8 }
3al
SHIFT ||
260
Appendix C
261
C Appendix
262
Appendix C
the partially completed program so you can add to it. But since
the Proofreader is trying to hide in the cassette buffer, it is
wiped out!
What you need is a way to load the Proofreader after
you've loaded the partial program. The problem is, a tape load
to the buffer destroys what it’s supposed to load.
After you've typed in and run the Proofreader, enter the
following lines in direct mode (without line numbers) exactly
as shown:
A$="PROOFREADER.T":B$="{18 SPACES}":FOR X=1 TO 4:A
S=A$+B$ : NEXTX
FOR X=886 TO 1018:A$=A$+CHR$ (PEEK(X) ) :NEXTX
OPEN1,1,1,A$:CLOSEL
After you enter the last line, you will be asked to press
RECORD and PLAY on your cassette recorder. Put this pro-
gram at the beginning of a new tape. This gives you a new
way to load the Proofreader. Anytime you want to bring the
Proofreader into memory without disturbing anything else, put
the cassette in the tape drive, rewind, and enter:
OPEN1:CLOSE1
264
Appendix D
Remember the last time you typed in the BASIC loader for a
long machine language program? You typed in hundreds of
numbers and commas. Even then, you couldn’t be sure if you
typed it in right. So you went back, proofread, tried to run the
program, crashed, went back and proofread again, corrected a
few typing errors, ran again, crashed again, rechecked your
typing.... Frustrating, wasn’t it?
Until now, though, that has been the best way to get ma-
chine language into your computer. Unless you happen to
have an assembler and are willing to tangle with machine lan-
guage on the assembly level, it is much easier to enter a
BASIC program that reads DATA statements and POKEs the
numbers into memory.
Some of these “BASIC loaders” use a checksum to see if
you've typed the numbers correctly. The simplest checksum is
just the sum of all the numbers in the DATA statements. If
you make an error, your checksum does not match up with
the total. Some programmers make your task easier by includ-
ing checksums every few lines, so you can locate your errors
more easily.
Now, MLX comes to the rescue. MLX is a great way to en-
ter all those long machine language programs with a mini-
mum of fuss. MLX lets you enter the numbers from a special
list that looks similar to DATA statements. It checks your typ-
ing on a line-by-line basis. It won’t let you enter illegal charac-
ters when you should be typing numbers. It won’t let you
enter numbers greater than 255 (forbidden in ML). It will pre-
vent you from entering the numbers on the wrong line. In
short, MLX makes proofreading obsolete.
265
D Appendix
Using MLX
Type in and save MLX (you'll want to use it in the future).
When you’re ready to type in the machine language program,
run MLX. MLX asks you for two numbers: the starting address
and the ending address. These numbers are given in the article
accompanying the ML program you're typing. For example,
“Astro-PANIC!’s” addressses should be 49152 and 50777
respectively.
You'll see a prompt. The prompt is the current line you
are entering from the MLX format listing. It increases by six
each time you enter a line. That’s because each line has seven
numbers—six actual data numbers plus a checksum number.
The checksum verifies that you typed the previous six num-
bers correctly. If you enter any of the six numbers wrong or
enter the checksum wrong, the 64 sounds a buzzer and
prompts you to reenter the line. If you enter the line correctly,
a bell tone sounds and you continue to the next line.
A Special Editor
You are not using the normal 64 BASIC editor with MLX. For
example, it will only accept numbers as input. If you make a
typing error, press the INST/DEL key; the entire number is
deleted. You can press it as many times as necessary, back to
the start of the line. If you enter three-digit numbers as listed,
the computer automatically prints the comma and goes on to
accept the next number. If you enter less than three digits, you
can press either the space bar or RETURN key to advance to
the next number. The checksum automatically appears in re-
verse video for emphasis.
To make it even easier to enter these numbers, MLX
redefines part of the keyboard as a numeric keypad (lines
581-584).
266
Appendix D
Done at Last!
When you get through typing, assuming you type your ma-
chine language program all in one session, you can then save
the completed and bug-free program to tape or disk. Follow
the instructions displayed on the screen. If you get any error
messages while saving, you probably have a bad disk, or the
disk is full, or you made a typo when entering the MLX pro-
gram. (Sorry, MLX can’t check itself!)
Command Control
You don’t have to enter the whole ML program in one sitting.
MLX lets you enter as much as you want, save it, and then re-
load the file from tape or disk later. MLX recognizes these
commands:
SHIFT-S:Save
SHIFT-L:Load
SHIFT-N:New Address
SHIFT-D:Display
Hold down SHIFT while you press the appropriate key.
MLX jumps out of the line you've been typing, so I recom-
mend you do it at a prompt. Use the Save command to store
what you’ve been working on. It will save on tape or disk as if
you've finished, but the tape or disk won’t work, of course,
until you finish typing. Remember what address you stopped
on. The next time you run MLX, answer all the prompts as
you did before, then insert the disk or tape containing the
stored file. When you get the entry prompt, press SHIFT-L to
267
D Appendix
reload the partly completed file into memory. Then use the
New Address command (SHIFT-N) to resume typing.
Tricky Stuff
The special commands may seem a little confusing, but as you
work with MLX, they will become valuable. For example, what
if you forgot where you stopped typing? Use the Display com-
mand to scan memory from the beginning to the end of the
program. When you reach the end of your typing, the lines
will contain a random pattern of numbers, quite different from
what should be there. When you see the end of your typing,
press any key to stop the listing. Use the New Address com-
mand to continue typing from the proper location.
You can use the Save and Load commands to make copies
of the complete machine language program. Use the Load
command to reload the tape or disk, then insert a new tape or
disk and use the Save command to create a new copy. When
resaving on disk it is best to use a different filename each time
you save. For example, I like to number my work and use
filenames such as ASTRO1, ASTRO2, ASTRO3, and so on.
One quirk about tapes made with the MLX Save com-
mand: when you load them, the message “FOUND program”’
may appear twice. The tape will load just fine, however.
I think you'll find MLX to be a true labor-saving program.
Since it has been tested by entering actual programs, you can
count on it as an aid for generating bug-free machine lan-
guage. Be sure to save MLX; it will be used for future applica-
tions in COMPUTE! Books, COMPUTE! magazine, and
COMPUTE!’s Gazette magazine.
268
Appendix D
269
D Appendix
270
Appendix D
271
Appendix
272
Index
access array (text adventure) 29 item description array (text adventure) 31
action routines (text adventure) 36-40 item flag array (text adventure) 31
ADSR envelope 148-49 item location array (text adventure) 31
animation 14, 140-42, 173-75 jiffy 66
arrays 175 Joust 4, 14
text adventure 29-31 joystick, reading 141-42
Asteroids 5 Jump Man 5
“Astro-PANIC!”” 232-39 levels of play 14
attack (sound) 148 line numbering 1
“Automatic Proofreader, The” 261-64 Lode Runner 5
automatic routines (text adventure) 34-35 Lunar Lander 223
balloon collisions 12 machine language 15, 83, 139-49
bandpass filter 147 combined with BASIC 124
BASIC 15 games 221-53
combined with machine language 124 main loop 15-16
“Beekeeper” 133-38 in text adventures 32-34
billiard cushion collisions 12 mapmaking (text adventure) 26-27
Blockade 223 Mario Bros. 4
bomb collisions 12 maze generation 212
Breakout 223 milieu 11
“Brunhilde Loves Bruno” 171-89 ML. See machine language
“Burn Rubber’ 204-10 “MLX” 83-84, 265-72
“Campaign Manager” 4, 82-119 “Nessie” 240-54
command summary 92-93 object array (text adventure) 30
formulae 88, 89, 91 object token array (text adventure) 31
strategy 88-93 “Olympiad” 197-203
typing in 84 ON/GOTO statement 37, 46
cassette buffer 141 Oregon Trail 63
characters, programmed. See custom parsing (text adventure) 35-36, 47-48
characters pitch 148
collision detection 141 play mechanic 4, 5-11
collisions 11-12, 141, 177-78, 190-91 Pong 4, 223
Commodore 64 Programmer's Reference PRINT statement 15
Guide 141 “Props” 139-58
communication, game to player 13 punishment 12-13
copying character set 172 “Quatrainment” 76-81
assembly listing 188-89 quests 41-42
custom characters 141-42, 172, 174-75, quote mode 259-60
213 raster interrupt 243
“CUT-OFF!” 223-31 registers, sound 147-49
cutoff frequency 147 release (sound) 149
decay (sound) 148 RESTORE statement 176
delay loop 143 reward 12-13
delete character 65 ring modulation 176
Donkey Kong 5, 14 room (text adventure) 25-26
flags, machine language 146 room description array (text adventure)
“Frantic Fisherman, The’ 123-32 30
game design 3-21, 45-46 room flag array (text adventure) 30
in text adventure 25-43 screen memory 140, 176
hardware interrupt, modifying 144-45 “Sea Route to India” 63-75
“Haunted Mansion” 211-20 SID chip 149
ideas 4-5 simplicity, advantages of 7
IF/THEN statement 46 simulation 11, 63-64, 94
improvisation 22 sound 147-49
273
sound-effects 147-49, 175-76 “Time Capsule” v, 44-59
Space Invaders 5, 223 transparent collisions 11
Space Panic 5 treasure hunt 41-42
sprites 124, 143-46, 172-78, 190-91, 243 Tron 223
collision 177-78, 190-91 typing in programs 259-60
pointer 173-74 variables 21, 29, 32, 135
shape 146 verb token array (text adventure) 30-31
story 5-6, 26 verbs (text adventure) 28, 37-41
strategy games 61-119 video memory, mapping 15
subroutines 16-21 voices 147-49
“Supersprite” 190-96 wall collisions 11
surround 223 Westward Ho 63
sustain (sound) 149 win-lose conditions 13-14
tar baby collisions 11 “Worm of Bemer” 159-67
text adventure v, 23-59
274
ie ee Ea TT EES gE Notes
Notes {SST 2SST ETRE CSRS A
If you've enjoyed the articles in this book, you'll find the
same style and quality in every monthly issue of COMPUTE!
Magazine. Use this form to order your subscription to
COMPUTE!.
COMPUTE!
P.O. Box 5406
Greensboro, NC 27403
My Computer Is:
] Commodore 64 []Tl-99/4A [] Timex/Sinclair [] VIC-20 [PET
[_] Radio Shack Color Computer [] Apple [)Atari [J Other
[_] Don’t yet have one...
Address
City State Zip
Country
Payment must be in US Funds drawn on a US Bank; International Money
Order, or charge card.
(_] Payment Enclosed (_] VISA
(_] MasterCard [_] American Express
Acct. No. Expires /
¢
eet
.é ~ *
4
‘ _
eri)é na
se A
654
©O22
20400848
+oh
sorts
Ome
oe
©
moe 5
€.% ro v
¢
“7 = yh. Aa oo ran
@ ifs! ‘. 7 AB 2) Ratan E |
Sli >. tA oO ee we Oe a 4 el SO, CE |;
Scher ellcr
ota a e- "7
heii
ee at geet
siete
©
et
06
44
oe§baal
Oo
Auom hud atte ay ete
ia, 6 _
F 4 oy Ver ee] AAO teat ay
' Paden luting oP | aodval
7 7 | wyow
¥ vontepoca prion wii
COMPUTE! Books
P.O. Box 5406 Greensboro, NC 27403
Name
Address
Ci State Zi
ORCI oe ok ee a a
Allow 4-5 weeks for delivery.
——
<2
Fy
(——-
ow
—
- é
? .
ww fo
PUVYOv, ae
; rn, "oO a] we) tra ehper? he, 5
. )ar ORSor thesae ( een oo? i, :
- nial a a q
COMPUTE!’s GAZEPTTE
P.O. Box 5406
Greensboro, NC 27403
My computer is:
[.] Commodore 64 []VIC-20 [] Other
01 02 03
Name
Address
City State Zip
Country
LIIIIII
IT
ttttttttitttttttLT
belie
Iiiiiiiiiiiirirrreririrrererereerereeeeeteeeeeereeereeeeereeeeeeeteeeetetttttttttt
I
The COMPUTEI’s Gazette subscriber list is made available to carefully screened organiza-
tions with a product or service which may be of interest to our readers. If you prefer not to
receive such mailings, please check this box [1].
SSSSSeeneeeeens
Worlds Inside Your 64
COMPUTE!’s Second Book of Commodore 64 Games gives you 16
new worlds to explore. From photographing the Loch Ness
monster to running a presidential campaign, these games put
L you in unique worlds where your strategy, skill, and knowl-
\ edge are tested to the limit.
\ You'll find that each of the games is of the same high
+ quality you’ve come to expect from COMPUTE! Publications.
. Some of the best games from COMPUTE! magazine and COM-
_ PUTE!’s Gazette are collected here, along with several others
Met have never before appeared in print. All are ready to
)
4 2
ype in and play.
Among the worlds you'll find in this book are:
¢ “Campaign Manager,” where you're running on the _2a
Democratic or Republican ticket, hoping to become
+ president.
¢ “Brunhilde Loves Bruno,” a dazzling game inhabited by
—- Valkyrie music, and lovers struggling to reunite.
“Olympiad,” a two-player game where knights fight a
life or death battle in a labyrinth.
¢ “Time Capsule,” a text adventure game that tests your
courage as you try to escape a dangerous prison and re-
turn to your own time.
¢ “Astro-PANIC!,” with flitting aliens that try to destroy
your base.
¢ ‘The Frantic Fisherman,” where charging sharks and
deluges of rain threaten your peaceful fishing trip.
¢ And 10 more games that carry you far into the future or
deep into the past.
Other articles show you how to write your own text
adventure games and how to design a videogame from start to
finish. There are even special-purpose programs included
which make error-free program entry painless.
You expect excellent, playable games from COMPUTE!
Publications. COMPUTE!’s Second Book of Commodore 64 Games
is no exception. From beginning to end, this book will give
you countless hours of challenging entertainment.
ISBN 0-942386-64-7