This textfile is made from the original commodore 64 manual to GAC.
I have change a few places to the Spectrum keys - mostly in the
graphics section. "<-" in the text means BREAK
There might be errors and typos and if you found any please report
them to me at email@example.com
so I can correct it in the next version.
I am released this without section 1.2 and the two appendix because I
don't have the time right now to finish it and these sections aren't
necessary for using GAC.
A legal notice. This text and the program is still copyrighted by
INCENTIVE SOFTWARE and you may only use it if you have legally bought
a copy of GAC.
/20. Januar 1997. Martin M. Pedersen,
The Graphic Adventure Creator
1.2 Load instructions
2.1 Writing Adventures
2.2 Editing Inputs
2.4 Room Descriptions
2.6 Nouns and Objects
2.9 Begin Where?
2.10 Save and Load
2.11 Delete Data
3.2 Graphics Commands
4.1 Test Adventure
4.2 Player Commands
Definitions and Conditions for the Demostration Adventure
Tables and Charts
COPYRIGHT 1986 INCENTIVE SOFTWARE LTD - ALL RIGHTS RESERVED
Welcome to the GRAPHIC ADVENTURE CREATOR!
This manual is intended as a simple introduction to writing
adventures using GAC. The GRAPHIC ADVENTURE CREATOR is the best though
of as a small programming language specifically designed for writing
adventure games. Although it is smaller than other programming
languages such as Basic or Pascal it can perform all of the complex
tasks needed to write an adventure program, and although the
instructions may seem complicated at first, a little time spent
studying this manual will enable you to write yout very own large
scale adventures, far more easily and efficiently than by using basic
or machine code.
Any adventures that you write using GAC are your own work, and may be
sold as such without any prior permisson being sought or payment to us
being made. However in this case, you should include with your
adventure something to the effect that it was written using the
GRAPHIC ADVENTURE CREATOR, (C) 1986 by Sean Ellis/Incentive Software.
And now on with GAC!
DESIGN by Sean Ellis
PROGRAMMED by The Kid
RANSOM PICTURES by Pete James
COVER by Pete Carter
Thanks also to Lesley, Giles, Dave and John
COPYRIGHT 1986 INCENTIVE SOFTWARE LTD.
54 LONDON STREET, READING RG1 4SQ
All right of the producer, and of the owner of the work being
producd, are reserved. Unauthorised copying, hiring, lending, public
performance and broadcasting of this program is prohibited. The
publisher assumes no responsibility for errors, nor liability for
damage arising from its use.
(1.2) Loading Instructions
(2.1) Section Two - Writing
There are several elements necessary to writing adventures using
GAC. These are displayed on the Main Menu which is the first thing you
will see after loading the program.
For convenience the menu is arranged in alphabetical order, which
makes it easier for you to remember which keys to press in order to
call up any part of GAC. At the top of the menu screen you will see
the display showing "FREE:" which shows the memory free.
You may write the elements of your adventure in any order you like,
although you may find that certain orders may make things easier than
What follows is a brief description of what each element of the main
menu does, together with detailed instructions of how to use each one.
They are presented in an order which you may find convenient to
(2.2) Editing Text
and Numeric Inputs
The text editor behaves in much the same way as the Commodore screen
editor, with the following additions:
||return the cursor to the start of the text.
||deletes to the right from the current cursor position, keeping
the cursor fixed.
Pressing "<-" will escape from the current input or
Verbs are the words with which you will actually tell the computer
what to do when you are playing an adventure. For example EAT or DROP.
Directions such as WEST or UP are also treated as verbs. GAC allows
you to enter and edit your own verbs when writing an adventure. Some
of the most commonly used verbs are already in the Quickstart File,
however since GAC allows you to enter up to 255 verbs, your
imagination is the only limit to the commands you may incorporate into
After pressing V from the Main Menu, you should see a prompt on the
screen, * EDIT VERBS *, and a pointer >.
To enter a verb, simply type in a number, then a space followed by
your verb. When you press RETURN the verb will be entered on the
screen in alphabetical order.
If two or more verbs have the same meaning and you wish both to be
accepted, ie., "Get" and "Take", simply allocate
to them the same verb number. Try to think of as many similar words as
you can in this way, since this will make your adventure appear more
||To edit, scroll the list using the cursor keys until the
desired verb is adjacent to use the pointer. Press Return, edit the
word, press Return again.
||Position the word to be deleted by the pointer and press
||Home will retrieve the last word deleted.
There is a brief summary of these instructions at the bottom of the
NOTE: The verbs in the Quickstart File may be edited in exactly the
same way as any other verbs.
More information about the use of verbs may be found in section(2.8)
PRESSING "<-" WILL RETURN YOU TO THE
(2.4) Room Description
The term "room" is used to refer to any location in your
adventure. For example, "a forest", "a car", "a
strange alien world" and so on. GAC allows you to use up to 9999
of these rooms, memory permitting, and to specify the connections to
and from each room. You will probably find it easier if you have
decided in advance what each room is and how the rooms are connected.
On pressing R from the main menu, the prompt "Which room number
? ...." should appear. At this point enter a room number n,
followed by RETURN which will give the prompt "Room number n is
....". You can then enter the description which can be up to 255
You will then see the prompt "Connections are.....?". The
connections are specified in terms of a verb, which must part of the
list already specified, followed by a space, followed by the room
number it connects with. For example EAST 20.
You may have as may connections from a single room as you can fit
into 255 characters, followed by RETURN, i.e.
EAST 20 WEST 18 NORTH 19 SOUTH 21 JUMP 49 (RETURN)
You will then see a prompt asking for a picture number, which links
this location with the appropriate picture should you wish to have
one. In this case you should enter a picture number followed by
RETURN. If you do not want a picture simple press RETURN. This returns
you to the prompt "Which room number ?..." again.
Any of the above may be edited at any time by using the cursor keys. "<-"
at any point will return you to the Main Menu.
More information about the use of room descriptions can be found in
section (2.8) CONDITIONS.
Messages consist of prompts, descriptions or other comments that
appear on the screen when you play an adventure, i.e. "What now ?",
or "You can't do that". Many if the more common system
messages are contained in the Quickstart file, and are numbered from
240 to 255. GAC allows you to enter up to 255 messages which may
appear at any point in your adventure.
Pressing "M" from the main menu will give the prompt "Which
message number ?...". You should then enter a number followed by
RETURN, then type in your message, which may be up to 255 characters
long. Pressing RETURN will enter your message and repeat the "Which
message number ?..." prompt.
To edit a message once it has been entered, simply recall the message
and edit it using the cursor keys.
Please note that all message from 240 to 255 should be defined,
since these are esential system message without which your adventure
will not run correctly. You can edit these messages but you should be
careful to preserve the meaning. For example, message 242, "Pardon
?" could be changed to "Eh ?".
Pressing "<-" will return you to the prompt "Which
message number ?...." and pressing "<-" again will
return you to the Main Menu.
More information about the use of messages can be found in section
(2.6) Nouns and Objects
Nouns are the "things" that your adventure will recognise.
For example, BOOK, SWORD and so on.
GAC frequently requires you to define things both as nouns and as
objects: once as a noun so that the adventure will recognise it, and
then as an object so that the program can move it around and do things
with it. For example, SWORD is defined as a noun, but since you may
wish to pick it up during your adventure, you must also define it as
an object. A further example makes clear another point: if your
adventure requires you to light a lamp. LAMP must be defined as a
noun, and you must also define two objects, AN UNLIT LAMP and A LIT
When you press N from the main menu, the prompt * EDIT NOUNS * will
appear. Apart from this, the procedure for entering and editing nouns
is exactly the same as that for editing verbs. (2.3) When you press 0
from the main menu, the prompt "Which object number ?...."
You should then enter a number n from 1 to 255 followed by RETURN.
You will then see the prompt "Object number n is...". You
may then enter the object description consisting of up to 255
characters followed by RETURN. This will produce the prompt "Starts
in room number...". Enter the number of the room you wish this
object to start in, or press RETURN. Pressing RETURN will assign the
object to room zero, a special room which cannot be travelled to, and
which contains "dead" and "unborn" object. For
example, a piece of cake once eaten will be assigned to room zero.
The prompt "and weighs...." will then appear. Enter the
weight you wish to allocate to this object and press RETURN.
"<-" will return you to the main menu.
More information about the use of nouns and objects can be found in
section (2,8) CONDITIONS.
In the GAC adverbs are used for two sorts of things: firstly to
describe the precise way a verb is used, i.e. "move slowly"
or "put down gently", and secondly they are used to
differentiate between similar nouns. For example, if you adventure has
three differently coloured boxes, the adverbs will specify the
colours: RED, GREEN etc.
On pressing A from the main menu, the prompt * EDIT ADVERBS * will
appear. Apart from this the procedure for entering and editing adverbs
is exactly the same as that for editing verbs and nouns.
More information on the use of adverbs can be found in section (2.8)
When using GAC the conditions form the internal commands that
simulate decision-making processes within the game. All the terms you
have specified and the data you have entered is now drawn together to
form the structure for your adventure-
"Conditions" tell the adventure that if certain things are
true, then it is to perform some action, i.e., "if x is true then
do y", though much more complicated conditions may be
"if x and y are true then do t",
or "if z and q are true then do y and x", and so on.
The GAC has a speciel format for writing these conditions. For
example, if you have defined verb number 16 to mean "Examine",
and noun number 2 to mean "Room", then a condition using
these terms might read :
"IF ( VERB 16 AND NOUN 2 ) LOOK WAIT END"
Translated this means if "Examine Room" is typed in,
describe the current room and wait for a new command.
The Conditional list below separates the words used for the "Conditions
Part", 'If ( Verb 16 and Noun 2)' and those used for the "Action
Part", 'LOOK WAIT END'. For subscripts used (a, c, m, as, o, n,
r, v, x and y) - See Appendix B.
i. Condition Part
||Is verb v typed ? (v is a number) VERB 7 will give a TRUE
answer if verb number 7 was typed, otherwise it will give a false
||is noun n typed ? (similar to VERB)
||is adverb a typed ? (similar to VERB)
||is object o here ? (i.e. in the same room as you ?)
If you are in room 3 and object 1 is also in room 3, then HERE 1
will give a TRUE answer because object 1 is here.
||Is object o being carried ? (Similar to HERE).
||Is object o available for use ? i.e. here or being carried?
(Similar to HERE).
|o IN r
||Is object o in room r ? If object 1 is in room 3, as above,
then 1 IN 3 will be TRUE, but 1 IN 4 will be FALSE.
||Gets the weight of object o. In our adventure, weig 2 would
give the value 20, which is the weight of the rat.
||Is marker m set ?
||Is marker m reset ?
(There are 256 markers, numbered 0 to 255. They are used to store
information that can be in one of two states, like doors which are
open or shut, light which are on or off, etc. There are three which
are important for the adventure program :
Mkr 0, if set, means that a room has been described since it was
Mkr 1, if set, means you are in a light room, Otherwise you are in
a dark room.
Mkr 2, if set, means you have a lamp or some other source of light.
If markers 1 and 2 are both reset, then the program will refuse to
describe rooms, coming up with the "It's dark" message
instead, since you are in a dark room without a lamp.
Mkr 3, if set, disables the scoring mechanism when you exit from
||Gives you the value of counter c.
|x EQU? c
||Is x equal to the value of counter c ?
There are 128 counters, numbered from 0 to 127. They are most
frequently used to store the number of moves since a particular
event, (e.g., moves in the dark). Counter 0 holds the score and
counters 126 and 127 hold the turns count since the start of the
||Gives the number of turns since the start of the game.
||Gives you the room number of the room you're currently in.
||Gives a TRUE answer if you are in room number r.
|condition AND condition
||will give a TRUE answer if both of the conditions give TRUE
answers. e.g. VERB 1 AND NOUN 2 will TRUE only if verb 1 and noun 2
are both typed.
|condition or condition
||will give TRUE if either condition is TRUE, or both.
|condition XOR condition
||will give TRUE if one of the conditions is TRUE and the other
||will give a TRUE answer if the condition was FALSE, and vice
So NOT VERB 1 will be TRUE if verb 1 is NOT typed.
|x < y
||Gives TRUE if number x is less than number y
|x > y
||Gives TRUE if x is greater than y.
|x = y
||Gives TRUE if x is EQUAL to y.
||Gives a random number between 0 and (x-1). So RAND 10 will give
any number at random in the range 0 to 9.
||Gets the number of the verb in this command.
||Gets the number of the first noun in this command, if any.
||Gets the number of the second noun in this command, if any.
These are used to check word order, and to GET and DROP object
without having to have a condition for each one.
ii. Action Part
||Describe the room you are in at the moment.
||Describe room number r.
||Turns the picture display on.
||Turns the picture display off, giving a text adventure.
||Get object number o. If it isn't here, or you've already got
it, or it's too heavy then the appropriate message is displayed.
||Drop object number o. If you haven't got it, then the
appropriate message is displayed.
|x SWAP y
||Exchange objects x and y. In our little adventure, 1 SWAP 5
will exchange the lamp with the lit lamp.
||Describe object number o.
||List all the objects in room number r.
||List all the objects carried with you.
|o TO r
||Move object number o to room r. To destroy an object move it to
||Set marker m.
||Reset marker m. See SET? and RES? for an explanation of
|x CSET c
||Set x to be the value of counter number c.
||Increase counter c by one. The maximum is 255.
||Decrease counter c by one. The minimum is 0.
Trying to increase past 255 or decrease past 0 is ignored.
||Go to room r and describe the new room.
||This checks through the connection table for a connection from
the current room using verb v. If one is found, this returns the
room number of the room you would have move to if you were to take
the connection, otherwise it gives zero. As an example if you were
in room 3 in our adventure, CONN 4 would return the value 2, because
in the connections from room 3, verb 4 (WEST) would take you to room
||Set the maximum weight you can carry to x. STRE is short for
||Brings object o here, if it exists.
||Find objects o and move to it, if it exists. This does not
acknowledge any restricitions, (such as connections), so it could be
useful in a magic spell.
||Saves the current game position to tape or disc.
||Loads the current game position from tape or disc. These are
useful for continuing a game after tea (or coffee - the kettle's
probably boiled by now!)
||Waits for a new command.
||Prints "Okay" and waits for a new command.
||Stops the game. Since the player is NOT asked, this is
recommended for use when the player wins or is killed.
||The player is first asked if he wants to quit. If he types "Y",
the game terminates, otherwise the game continues. On abandoning the
game, both the score and the number of moves taken are displayed,
assuming this function has not been disabled by setting marker
||Print message number ms.
||Print number x.
||Prints a Linefeed. Everything from hereon is printed on a new
||Halts the game for x fiftieths of a second, or until a key is
pressed. For example, to freeze for 10 seconds, do HOLD 500.
|x + y
||As you may expect, returns the value of x added to y.
|x - y
||And this gives the value of x - y.
There are several things to note when writing conditions. Firstly
all operations are performed strictly from left to right. Secondly GAC
requires spaces both inside and outside brackets, and between words
such as 'verb' and 'noun' and their numbers. Thirdly, x and y need not
be simply numbers, they can be more complex expressions. However you
should note that since GAC performs all its operations from left to
right, you should be careful about the order in which you enter
things. Put any comparisons first, i.e. if ( VERB > 5 ) AND NOUN 9
) QUIT END
The conditions are checked by GAC at three different points, and are
entered as High Priority, Low Priority and Local. The flow chart at
the back of the manual indicates the order in which these are
The GAC checks for HIGH PRIORITY conditions before prompting for a
player comman. It checks for such things as whether you are still "alive",
whether a light a flashing, etc.
Pressing H from the main menu will return the prompt "Which line
number ?...". You should enter these lines in order, ie. 1, 2, 3
The GAC will not recognise a line number such as '5' when you have
only entered two conditions so far, although it will insert a
condition earlier in your list and remember accordingly. RETURN will
give you the prompt "Line number n is....", at which point
you should enter your condition and press RETURN which will give you
the "<-" returns you to the main menu.
LOCAL CONDITIONS are checked for after the player has entered a
command, and deal with things local to a particular room, for example,
whether a particular object is in that room. Alternatively they might
execute a player command to go to another room, or open a door at that
Pressing C from the main menu will give the prompt "Which room
number ? ....". Entering a number followed by RETURN will give
the prompt "Which line number ?....". Thereafter the
procedure is exactly the same as for High Priority Conditions, except
that each Room has it's own set of line numbers, (1, 2, 3 etc).
LOW PRIORITY CONDITIONS are also checked for after a single player
command is entered, but are not associated with any room. For example,
they might check whether you are carrying a particular object,
independent of the location. After pressing L from the main menu, the
procedure for entering and editing Low Priority Conditions is exactly
the same as that for High Priority Conditions.
Further examples of High, Local and Low Priority Conditions can be
found in Appendix A.
(2.9) Begin Where?
The last element of your adventure, at least as far as the text is
concerned, is to specify which room your adventure starts in.
Pressing B from the main menu will give the prompt to enter the start
location room number.
Entering a room number followed by RETURN means that your adventure
will start at this room. To change the start room, simply enter a new
"<-" will return you to the main menu.
(2.10) Save and Load
After pressing S from the main menu, you will be asked if you wish
to save a "Data File" or a "Runnable Adventure".
If you press 'D' for 'Data File', the computer will prompt for a file
name. Enter your file name followed by RETURN. This will save your
data which can be loaded into GAC at a later date for further
Alternatively pressing RETURN without first entering a filename will
save the file "DUMMY.ADV" to tape, or "@:DUMMY.ADV"
Pressing 'G' will prompt for the filename for a runnable adventure.
This can no longer be loaded into the GAC for editing, but will run on
Pressing T from the main menu then entering a file name will load a
data file into GAC for editing. Alternatively pressing RETURN without
first entering a filename will attempt to load the file "DUMMY.ADV"
from tape or disc.
To load your Runnable Adventure from tape, press SHIFT and RUN/STOP,
or from disc type LOAD "NAME",8,1 after resetting the
NOTE : Do not attempt to load a runnable adventure into GAC. It will
run on its own!
(2.11) Delete Data
Pressing X from the main menu will delete all your data. N.B.
Loading a new data file will have the same effect.
(3.1) Section Three - Graphics
The Graphics part of GAC will enable you to draw pictures to go with
the room descriptions in the text part of your adventure.
Press G from the Main Menu to enter the Graphics sections. You will
see displayed a high-resolution Window and a Graphics Menu, together
with prompt "Which picture number ?....".
Enter the number of the picture you wish to design.
The fill Routine is designed to be fast and it can cope with
irregular shapes, but you may need to press "F" more than
once. If an area is left unfilled, then you can just move the cursor
into that area and press "F" again.
Here is a simple method which will allow you to get the best results
from your filling. If your shape has a high point, position the cursor
directly under it. If it has a low point, position your cursor
directly under it. Here is an example using a triangle...
/ \ /-|-\
Only this part /|----\ /--|--\ All filled
filled /-+-----\ /---+---\ + = cursor position
CASE A CASE B
The area filled is worked out by the fill routine checking up and
down from the cursor position until it encounters a boundary. It is
possible to fill the same area more than once using shading patterns
consisting of different colours.
If you should run out of memory in one particular picture, you can
get round this by moving to an unused picture and merging the full
picture into the new one before continuing with your drawing.
(3.2) Graphics Commands
||Picture Merge - Prompts for a picture number and merges that
picture with the one currently displayed without changing the
current ink colours.
||Allows you to change any of the 4 ink colours or the colour of
the graphics frame.
||Prompts for 2 inks with which to generate stipple patterns used
by the 'Fill' command. These 2 inks may be the same.
||The first press of the 'R' key sets the corner of a rectangle,
which can then be drawn using the cursor keys. The second press
fixes the rectangle.
||Allows you to change the current pen colour.
||Deletes the last graphics command.
||The first press of the 'E' key sets the centre of an ellipse
which can then be drawn using the cursor keys. The second press
fixes the ellipse.
||Reflects the picture by copying from top to bottom, or left to
||Draws the whole picture.
||Fills an area surrounding the current cursor position, this
area being bounded by an ink of a different colour to that under the
||Places a dot at the current cursor position.
||(Head over heels) similar to mirror, but invers the picture
either up/down or left/right.
||The first press of the 'L' key sets one end of a line which can
then be drawn using the cursor keys. The second press fixes the
[special spectrum keys T-Border, V-Flash, P-Paper, G-Bright gridt,
B-bright, C-? ]
||Moves back one graphic command.
||Moves forward one graphic command.
||Moves back 8 grahics commands.
||Moves forward 8 graphic commands.
||Deletes all picture information held after the edit position.
||Takes you back to the start of the picture.
||Toggle the graphics cursor speed, between 1 pixel per keypress
(default) and 4 pixels per keypress.
||Takes you back to the Main Menu.
Whilst stepping through the graphic commands the last command will
be highlighted in green. If the last graphic command was a line, "Dot"
will be highlighted in light blue.
(4.1) Section Four - Test Adventure
To test your adventure, get back to the main menu and simply press "f1"
to enter the adventure.
When are testing and adventure, the way to return to the main menu is
to press "<-" as usual. This gives you the message "Press
D for diagonstics or "<-" to escape....". If you
press the "D" key, then all the markers and counters will be
displayed on the screen. For the markers, a solid box indicates "SET"
and an empty one indicates "RESET". The values of the
counters are given as you would expect. To get back to the game press
RETURN. If you press "<-" again, then you will get back
to the main menu.
The error routine prints out a message indicating the nature of the
error, plus a line of conditions if the error occurred in one of the
"Message not found" means you have referred to a message
that does not exist. If this appears immediately, check that you have
included the system's special messages, numbers 240 and above.
"Room not found" means you have tried to describe or move
to a room that doesn't exist.
"Object not found" means you have tried to pick up, drop
or describe an object that does not exist.
"Marker not found" means you have tried to access a
counter which does not exist.
"Counter not found" means you have tried to access a
counter which does not exist.
"Illegal value" means you have tried to look for a verb,
noun or adverb with a number greater than 255, or you have tried to
load a counter with a number greater than 255.
Here are a few hints for solving errors :
- Suspect typing error. Check that you really mean what you have
- Have you forgotton to enter the room/object/message being
referred to? if so enter it.
- Have you forgotton to delete a condition which you didn't need,
having deleted the objects/messages used by it?
(4.2) Player Commands
This section deals with the commands a player gives when he plays
the adventure. It is intended to give an idea of the complexity of the
commands the adventure will understand.
Each command line consists of one or more simple commands, which in
turn consist of a verb, and maybe an adverb and one or two nouns. Any
word which the command interpreter does not understand as being a
noun, verb or adverb is ignored.
Let us take a typical line and see how the program looks at it:
Get the gold, examine it, put it in the box then go north
Let us assume that the vocabulary includes :
ADVERBS: 1 IN
NOUNS : 3 GOLD VERBS : 1 NORTH
7 BOX 7 GET
255 IT 8 PUT 16 EXAMINE
The command line is split into separate commands by the following : ".",
",", "?", ":", "and" and "then",
so it becomes ;
Get the gold ","
Examine it ","
Put it in the box "then"
Each of these is canned for verbs, adverbs and nouns in that order,
and nay found have their number stored;
|Get the gold
|Put it in the box
Then all occurences of noun 255 ("It"), are replaced by
the last noun typed before that, giving:
|Get the gold
|Put it in the box
These values are the passed to the connection table, then to the
conditions. See the diagram in Appendix B.
Note that all the letters in the vocabulary entries are significant -
there is no truncation to only four or five letters. Thus RIVER and
RIVET, TROUT and TROUSERS, and other like these are differentiated.
Defintions and Conditions for "ADVINMAN"
Tables and Charts