Автор: Tom D. Frost
Год: 1986
Издатели: Tartan Software
Производитель: Tartan Software
Языки:
Английский
Формат:
TZX лента
Требования:
ZX Spectrum 48K
Ссылки:
Страница на ZXArt
Страница на Virtual TR-DOS
Страница на World Of Spectrum
Страница на Spectrum Computing
Скриншоты:
Описание:
Adventure Builder System (ABS) — это программный инструмент, разработанный компанией Tartan Software в 1986 году, предназначенный для повышения скорости и эффективности приключенческих игр, написанных на BASIC для ZX Spectrum 48K. Он решает проблему медленных реакций, характерных для программ на BASIC, за счет использования генератора кода, оптимизирующего процедуры анализа и распознавания слов.
ABS состоит из двух основных компонентов: генератора кода и основной программы на BASIC. Генератор кода создает необходимый машинный код, а программа на BASIC использует этот код для управления логикой игры. Пользователям рекомендуется заранее детально планировать свои приключенческие игры, включая создание карт локаций и объектов.
Система поддерживает различные команды, такие как GET, DROP, LOOK, EXAMINE и INVENTORY, что делает ее универсальной для создания текстовых приключений. Также предусмотрена возможность настройки глаголов и существительных, что расширяет возможности проектирования игр. ABS предоставляет демонстрационное приключение, чтобы помочь пользователям понять его возможности.
В целом, Adventure Builder System предназначена для любителей и разработчиков, интересующихся созданием интерактивной литературы на ZX Spectrum. Ее акцент на оптимизацию кода BASIC для повышения производительности делает ее ценным инструментом для энтузиастов разработки ретро-игр.
Год: 1986
Издатели: Tartan Software
Производитель: Tartan Software
Языки:
Формат:
Требования:
Ссылки:
Скриншоты:
Описание:
Adventure Builder System (ABS) — это программный инструмент, разработанный компанией Tartan Software в 1986 году, предназначенный для повышения скорости и эффективности приключенческих игр, написанных на BASIC для ZX Spectrum 48K. Он решает проблему медленных реакций, характерных для программ на BASIC, за счет использования генератора кода, оптимизирующего процедуры анализа и распознавания слов.
ABS состоит из двух основных компонентов: генератора кода и основной программы на BASIC. Генератор кода создает необходимый машинный код, а программа на BASIC использует этот код для управления логикой игры. Пользователям рекомендуется заранее детально планировать свои приключенческие игры, включая создание карт локаций и объектов.
Система поддерживает различные команды, такие как GET, DROP, LOOK, EXAMINE и INVENTORY, что делает ее универсальной для создания текстовых приключений. Также предусмотрена возможность настройки глаголов и существительных, что расширяет возможности проектирования игр. ABS предоставляет демонстрационное приключение, чтобы помочь пользователям понять его возможности.
В целом, Adventure Builder System предназначена для любителей и разработчиков, интересующихся созданием интерактивной литературы на ZX Spectrum. Ее акцент на оптимизацию кода BASIC для повышения производительности делает ее ценным инструментом для энтузиастов разработки ретро-игр.
THE ADVENTURE BUILDER SYSTEM
An adventure written entirely in BASIC has reaction times which
compare very badly with machine coded programs. The slow sections are
readily identifiable as the parsing routine, word recognition through
long FOR ... NEXT loops or through large numbers of IF ... THEN lines,
and identifying which few objects should appear at a location or in
the player's INVENTORY.
The ADVENTURE BUILDER SYSTEM (ABS) can substantially decrease the
above delays such that an adventure written predominantly in BASIC can
operate at a speed approaching that of machine code.
The ABS consists of two programs ... one to generate the required CODE
with the other being a short BASIC core program which will utilise
this CODE.
Before using the system it is advisable for the adventure to be
outlined to a reasonably advanced stage. The map should be constructed
with each location and all objects well identified as to description
and starting location. Details on how to use the system will make
reference to the short demonstration adventure for which the DATA and
map are provided.
The BASIC adventure program follows the convention of:
a) PRINTs location description (plus graphics, if included).
b) PRINTs any objects visible at this location.
c) Asks "What next?" and awaits input.
d) Accepts input from keyboard and PRINTs on screen.
e) Analyses input (usually into VERB and NOUN).
f) Sends control of program to a sub-routine specific to that VERB.
The CODE GENERATOR program includes the DATA for movement input (GO
NORTH or N etc) and also for commonly used VERBS:
GET (or TAKE)
DROP
LOOK (or L or R)
EXAMINE
QUIT (or STOP)
INVENTORY (or I or LIST)
SAVE
LOAD
METHOD OF OPERATION
1. Prepare a tape for copy of CODE GENERATOR with DATA for the
adventure with loader program:
10 CLEAR 52000
20 LOAD ""CODE
25 LOAD ""
30 SAVE "loader" LINE 10
2. LOAD the CODE GENERATOR program, add your adventure DATA then SAVE
on to the above tape by GOTO 9990 (Tape A).
3. Make a copy of the BASIC adventure core program. "VERIFY" as a
direct command and do NOT rewind. (Tape B).
4. LOAD Tape A and supply the information required by the on screen
prompts then SAVE the DATA on Tape B. Make a note of the CLEAR
number.
5. Enter as a direct command: CLEAR number: LOAD"" and LOAD Tape B.
Stop the tape when prompted, delete line 9949 then GOTO 9950 and
re-start the tape.
6. "BREAK" and alter line 9991 to:
9991 SAVE "SYSTEM"CODE save,len
7. Add the remainder of the BASIC program (VERB sub-routines and
screen display DATA etc).
8. SAVE at the start of a blank tape (by GOTO 30) the following
loader:
10 CLEAR number
20 LOAD""
30 SAVE "LOADER" LINE 10
9. SAVE the adventure after this loader (by GOTO 9990).
N.B. The enclosed tape contains two copies of each of the following
programs:
DEMONSTRATION ADVENTURE (with BLACK or WHITE background)
Blank CODE GENERATOR
Blank BASIC core program
CODE GENERATOR with the DATA used for the two DEMONSTRATION
ADVENTURES.
In order to use the ABS, the DATA for the adventure must be added to
the CODE GENERATOR program and the on screen prompts satisfied in the
following manner. Responses for the demonstration adventure are
indicated after each section heading, and they refer to the version
with BLACK background.
A) HOW MANY VERBS (17)
The DATA for these is entered in lines 1003 to 1999 in the format:
DATA "OPEN",9,"UNLOCK",10
ie. The VERB (in full), followed by the assigned number. As the verb
numbers (vb) 0 to 8 are already assigned the first additional verb
takes the value 9. Synonymous verbs (e.g. SHUT and CLOSE) are
allocated the same number but count as separate entries when
responding to HOW MANY VERBS.
B) VERB LENGTH CHECK (5)
The ABS offers a choice (between 3 and 7) for the number of leading
letters which will be used to determine a match between input and
database. The selection of 4 or 5 is usual. If 3 is selected confusion
could arise between such inputs as FEED and FEEL, both of which would
be considered as FEE.
C) HOW MANY OBJECTS (9)
This refers to the objects which could be included in the INVENTORY of
the adventurer.
(For DATA entry DETAILS, see section E).
D) MAXIMUM LENGTH OF OBJECT DESCRIPTION (22)
Enter here the number of characters in the longest object description.
E) HOW MANY OBJECTS WHICH CAN HAVE AN ALTERED DESCRIPTION (2)
This refers to items such as "A small TORCH" and "A lit TORCH". The
DATA for these objects is entered in lines 2000 2018 in the following
format:
DATA "COAT",1,"A tartan COAT","A tartan COAT (worn)".
DATA "TORCH",2,"A small TORCH","A lit TORCH".
i.e. The word which would be typed, the assigned number, the original
description, the changed description.
The description of objects is held in the string array o (x,y), where
x is the total number of objects and y is the character length of the
longest description. These objects which can alter during the course
of the adventure must be allocated the first and last numbers of the
string array. See list of DATA for demonstration program where "A
tartan COAT" and "A small TORCH" are objects 1 and 2 while their
corresponding changed versions are objects 8 and 9.
The DATA for the remaining objects (from section C) is entered in
lines 2020 to 2188 in the format:
DATA "BOX",3,"A wooden BOX","SPADE",4,"A short SPADE",...etc.
F) NOUN LENGTH CHECK (5)
This is similar to VERB LENGTH CHECK... select between 3 and 7. The
value can be different from that chosen for VERBS.
G) OTHER WORDS (13)
The first assigned number for these words (DOOR, STAIRS, etc) is
calculated as follows:
Total number objects + 7 (i.e. 9+7=16 for demo adventure)
The DATA is entered in lines 2190 to 2988 in the format:
DATA "DOOR",16,"CUPBOARD",17,...etc.
H) MAXIMUM INVENTORY (3)
Enter here the maximum number of items which the adventurer is
allowed to carry at any one time.
I) NUMBER OF LOCATION (15)
Enter here the total number of locations in the adventure.
J) SCROLL ROUTINE (B)
The ABS contains a split-screen technique which can be used in two
ways.
1) If it is required that the top x number of lines remain on
screen, then an entry here of C, followed by x, will scroll
"behind" these lines when the screen is full.
2) However if the number of lines required to remain on
screen is variable (i.e. after HERE YOU CAN SEE section) then
this can be achieved by entering B as this response.
If the normal SPECTRUM full screen scroll is required then select
here.
K) STARTING LOCATION (7)
Enter here the number of the location at which the adventure
commences.
L) MOVEMENT DATA
The DATA to control movement is entered in lines 3000 to 3998 as 7
numbers for each location as follows:
DATA 7,3,13,8,6,0,0
The first number is the location number, followed by the number of the
six locations which would be reached by entering N,S,E,W,U,D
respectively. An entry of 0 indicates no exit in that direction.
The DATA entered here should take no account of the need to remove
obstacles or unlock doors, etc, as such restrictions can be
accommodated by the BASIC program, in lines 1005 to 1089.
See example in demonstration adventure at lines 1005 and 1010.
A different approach is detailed later.
M) OBJECT STATUS TABLE
Each object will at any one time have one of the following numbers
allocated to it:
a) 0.................the object is 'invisible'
b) 99................the object is in the player's INVENTORY
c) Location number...the object currently resides at this
location and will appear on screen after
HERE YOU CAN SEE when that location is
visited.
The DATA for start-up positions is entered in lines 4000 onwards in
the format:
DATA 4,10,0,1 etc
This indicates that object 1 is at location 4, object 2 is at location
10 etc.
An entry must be made for each object.
These values are then altered as necessary by the BASIC program as the
adventure proceeds.
N) SAVE AND LOAD ROUTINES
These routines can be used on a temporary basis effecting a SAVE into
and a LOAD from RAM or as a permanent measure as usual, to tape.
0) LOCATION DESCRIPTIONS
The DATA is entered in line 5001 and onwards in the following format:
5001 DATA 6, "You are in a very tidy BARN. The farmer who runs
this farm is obviously very proud of his work Or is he?"
The number immediately after DATA refers to the INK colour for the
text following. This number may be kept constant for all locations,
but for special emphasis at some key locations a change of
presentation can be effectively used as a highlight. The text within
the quotes should be carefully constructed with regard to spaces and
punctuation.
P) HERE YOU CAN SEE and INVENTORY
The phrases for these are entered in lines 6040 and 6254 for the
former and in 6080 and 6254 for the latter, preceded by the PAPER, INK
and BRIGHT values for that phrase, e.g.
6040 DATA 5, 0, 1, "Here you can see:- "
6254 DATA 5, 0, 1, "Nothing of interest"
The PAPER, INK and BRIGHT values for each OBJECT are entered
(in order) in line 6140. A set of values MUST be entered for each
object. If the choice of PAPER is not the same as the normal screen
colour, then add spaces to the HERE YOU CAN SEE etc phrases to match
the length of the longest OBJECT description.
Q) CENTRALISATION OF PRINT
The printing of HERE YOU CAN SEE and YOU HAVE WITH YOU followed by the
relevant list of OBJECTS can be located in the centre of the screen or
at the left of the screen...select either 0 or 1 when prompted.
R) RESPONSES from within the M/C system (1) (6)
The DATA for these (in numerical order) is entered in line 7090 and
onwards as follows:
7090 DATA 6,"You really need some light in here!"
with the number again referring to the INK colour, and the text being
arranged for tidy printing to screen.
Three types of responses are considered ....
STANDARD ...in lines 7090 to 7098
TERMINAL ...entered in line 7100 onwards
ROUTINE.....entered in line 7150 onwards
but they are numbered in sequence without regard for type.
Hence, in the DATA for the DEMONSTRATION ADVENTURE as there are 9
STANDARD responses, 1 TERMINAL response and 6 ROUTINE responses the
reference number for the first ROUTINE response is 11 and for the only
TERMINAL response it is 10. Any response which is identified as a
TERMINAL response will automatically be followed on screen by the "Do
you want to try again?" phrase.
S) BRIGHT VALUE (1)
Enter here the BRIGHT value of the main screen.
T) PERMANENT BACKGROUND COLOUR (0)
Enter here the colour value of PAPER for main screen.
DEFINED VARIABLES
The following variables have been used in the CODE GENERATOR listing
and may prove useful to replace numbers and so obtain the maximum
benefit from the program.
0=n 1=j 2=a 3=w 4=aa
5=ab 6=ac 7=ad 8=b 9=ae
10=af 11=ag 12=ah 13=ai 14=aj
15=ak 16=c 17=al 18=am 19=an
20=ao 22=ap 23=aq 24=ar 31=as
32=d 33=e 35=f 40=g 42=at
48=au 50=av 54=h 58=i 60=k
61=l 62=m 70=ax 79=ay 92=az
99=bj
100=ba 115=bb 126=bc 137=bd 184=be
190=bf 200=bg 201=o 202=p 205=q
215=u 250=v 251=bi 254=r 255=s
400=t
The following sections explain how the system works and how it may be
used to write your own adventure.
ANALYSER ROUTINE
The ABS allows a maximum input of 30 characters as upper case letters
or numbers. The analyser routine examines the input and returns to
BASIC with an allocated number for VERB(vb) and NOUN (no) which the
BASIC program can utilise. Any unrecognised word returns a value of
200 for VERB and 201 for NOUN. This information can be used in various
ways by the BASIC program but in the demonstration adventure, either
situation produces the all-purpose cop-out of "You can't do that"!!
Possible single word inputs require some explanation. The parser
routine analyses the input by considering the first word as the VERB
and the last word as the NOUN so that "DROP THE SPADE"or"DROP THE
SHORT SPADE" produces the same response as "DROP SPADE".
However, the one word input of, for example, LOOK gives both a VERB
and NOUN of "LOOK" with values of vb=4 and no=201. This would produce
a response of "You can't do that" due to the value of no=201. Such an
outcome is prevented by including LOOK in the list of NOUNS and
assigning it a default value of 99.
Any additional VERBS which could be used as single word inputs should
be included in both VERB and NOUN lists in a similar manner.
Alternatively, the NOUN number could be a true assigned number for use
by the BASIC program. In the demonstration program such an approach
has been used for DIG where it has been assigned the same NOUN number
as HOLE as an input of "DIG" implies "DIG A HOLE".
NUMBER OF LOCATIONS
If your adventure contains more than 65 locations then line 7665
should be altered to 7005+(10xnumber of locations).
CONTROL OF THE ADVENTURE
The adventure is controlled in the BASIC program by the following:
Variable vb (the VERB number)
Variable no (the NOUN number)
The OBJECT STATUS TABLE
The FLAG STATUS TABLE
All other controls are operated by the generated CODE.
a) OBJECT STATUS TABLE (OST)
Fifty entries are available in this TABLE and each object has at all
times an entry here in the position identified by the number of the
object.
e.g. Status of object number x is found by PEEK (o + X) and a change
in status is effected by POKE (o + X), Y where Y indicates the
new status.
b) FLAG STATUS TABLE (FST)
100 entries are provided by this TABLE with a few being reserved for
specific uses.
FLAG (f+99) is used to control size of INVENTORY.
FLAG (f+98) is used by the GRAPHICS AID program.
FLAG (f+0) contains number of current location.
The first X entries are reserved for use by X objects which change
description during the course of the adventure.
All other FLAGS are available for use by the BASIC program.
A FLAG may also be used as a counter to a maximum count value of 255.
A FLAG status is determined by PEEK (f+X) and a change in status is
effected by POKE (f+X), Z where Z indicates the new status and X
indicates the FLAG number.
As the adventure progresses the BASIC program will be required to
update the values in OST and FST.
At start up all FLAGS (except f) have the value of 0.
e.g. In the demonstration adventure, the FLAGS (f+1) and (f+2) are
altered to the value 1 when the COAT is worn and the TORCH is lit
respectively, also (f+3) is altered to 1 when the CUPBOARD is
open.
COMPLETION OF THE
BASIC PROGRAM
1) VERB SUBROUTINES
100 lines are available for each subroutine commencing at lines 1000 +
(vb x 100). If guidance on how to construct these is required then
consult paragraph 5 of this section.
2) PRINTING OF RESPONSES
As it is most likely that a split-screen presentation will be
selected, it is necessary to check for the need to scroll before each
response is printed on screen. To remove the need to include such a
check before each PRINT statement the responses MAY be identified as
r$(1), r$(2), r$(3), and r$(4) which are then printed by the PRINT
routine at line 50.
e.g.......LET r$(1) = "OK":GOTO 50
It is useful to employ this PRINT routine while testing and de-bugging
sections of the adventure. However, the printing of responses can be
incorporated into the machine code system by replacing the statement
... LET r$ ( ) =" ":GOTO 50 ... with ... LET r=x:GOTO 30 ...
where x=the response number held in the machine code system (see
section R).
Seven responses in the DEMONSTRATION ADVENTURE have been incorporated
into the machine code system ... those in lines 208, 1092, 1100, 1105,
1110, 1915, 7070 and 7150. The difference in effect can be observed by
comparing the response to OPEN CUPBOARD (in FRONT HALL) with DIG HOLE
(in the GARDEN).
3) VARIABLES USED BY THE BASIC PROGRAM
Variables assigned in the core BASIC program are:
vb, no, f, o, MAX, SAVE, LEN, DMOV,
TRNO, PRIN, PRCAR, PRMS, PRHY,
SYS, SA, LO and QUIT.
r$(4,32)
4) LINE NUMBERS
It is important that lines 100 and 195 are retained in the BASIC
program as is (except for alteration of the detail in line 100). These
lines are on occasions pointed to by the machine code system and any
change could be disastrous!
5) The method of construction of the VERB sub-routines can be observed
by studying lines 1000 to 3300 of the DEMONSTRATION ADVENTURE.
However, for a detailed examination (by way of an example) consider
the input of LIGHT TORCH.
This will return a vb value of 12 and no. value of either 2 or 9
depending on whether the TORCH is lit or not (this check will have
been automatically made by the code).
For a vb value of 12 control of the program will be directed to line
2200 (i.e. 1000 +( 12 x 100) as calculated in line 235).
Translation into ENGLISH of this section is as follows:
Line 2200
IF PEEK (o+9)=99 ... If lit TORCH is being carried
AND no=9 ... and NOUN = lit TORCH
THEN LET r$(1) = "It's already lit!" ....
formulate response and PRINT it.
Line 2205
IF no=2 ... If NOUN = a small TORCH
AND PEEK f<>11 ... location is NOT 11 (Cellar)
AND PEEK (o+2)=99 .. small TORCH is in INVENTORY
THEN POKE (o + 2),0 ... remove TORCH from INVENTORY
POKE (o+9),99 ... place a lit TORCH in INVENTORY
POKE (f+2),1 ... set flag for TORCH is lit LET r$(1)="OK ... TORCH now
lit" ... formulate response and PRINT it.
Line 2210
Similar to line 2205 but player must be in CELLAR this time, so send
program to line 100 to print full description as the player is now
carrying a lit TORCH.
Line 2215
Any other situation produces the cop-out response!
An improvement would be to include a response for the situation where
the player did not have the TORCH in his/her possession.
VERBS AND NOUNS INCLUDED
VERB vb NOUN no
No. No.
GO 0 N 1
N 0 NORTH 1
S 0 S 2
E 0 SOUTH 2
W 0 E 3
U 0 EAST 3
D 0 W 4
GET 1 WEST 4
TAKE 1 U 5
DROP 2 UP 5
EXAMINE 3 D 6
LOOK 4 DOWN 6
L 4 LOOK 99
R 4 L 99
INVENTORY 5 R 99
I 5 INVENTORY 99
LIST 5 I 99
QUIT 6 LIST 99
STOP 6 QUIT 99
SAVE 7 STOP 99
LOAD 8 SAVE 99
LOAD 99
The following verb sub-routines are included in the core BASIC
adventure listing:
LOOK..........line 1400
INVENTORY.....line 1500
QUIT..........line 1600
SAVE..........line 1700
LOAD..........line 1800
The MOVEMENT sub-routine is partially completed only, starting at line
1000. It remains to insert any lines to account for temporary blocks
such as closed doors or removal of guarding monsters!!
DEMONSTRATION ADVENTURE
[1 BARN]
�spade
�
[ 2 LOFT ] [3 FARMYARD] [4 LIVING ROOM] [5 DINING ROOM]
�-� � � coat �
�-� � � �
�-� � � �
[6 STABLE]--[7 FIELD]--[8 DOOR]--[9 FRONT HALL]--[10 KITCHEN]
�-� � � torch
[11 CELLAR] � �
(box) � �
� �
[12 DEAD END]--[13 E W ROAD]------[14 GATE]------[15 GARDEN]
(key)
NUMBER OBJECT (o$) DATA STARTING
LOCATION
1 A tartan Coat COAT 4
2 A small TORCH TORCH 10
3 A wooden BOX BOX 0
4 A short SPADE SPADE 1
5 A bronze KEY KEY 0
6 Splinters of WOOD WOOD 0
7 A large DIAMOND DIAMOND 0
8 A tartan COAT(worn) COAT 0
9 A lit TORCH TORCH 0
NUMBER OTHER NOUNS NUMBER OTHER NOUNS
16 DOOR 23 GARDEN
17 CUPBOARD 24 FIELD
18 LAWN 25 SAFE
19 STAIRS 26 PATCH
20 LADDER 27 JUMP
21 GATE 22 DIG
22 HOLE
DEMONSTRATION ADVENTURE
vb nun VERB MOVEMENT DATA
location N S E W U D
9 OPEN 1 0 3 0 0 0 0
10 UNLOCK 2 0 0 0 0 0 6
11 DIG 3 1 7 0 0 0 0
12 LIGHT 4 0 9 5 0 0 0
13 EXTINGUISH 5 0 10 0 4 0 0
14 CLIMB 6 0 0 7 0 2 11
15 DESCEND 7 3 13 8 6 0 0
16 CLOSE 8 0 0 9 7 0 0
17 TOSS 9 4 0 10 7 0 0
18 FILL 10 5 15 0 9 0 0
19 LOCK 11 0 0 0 0 6 0
20 WEAR 12 0 0 13 0 0 0
21 REMOVE 13 7 0 14 12 0 0
14 ASCEND 14 0 0 15 13 0 0
16 SHUT 15 10 0 0 14 0 0
22 JUMP
23 USE
FLAG STATUS TABLE .... ASSIGNED VALUES
FLAG NUMBER CONDITION FOR VALE=1
1 COAT worn (fixed allocation)
2 TORCH lit (fixed allocation)
3 CUPBOARD open
4 DOOR open
5 HOLE in field
6 HOLE in garden
7 GATE open
8 SAFE unlocked
9 Found BOX
10 Found KEY
11 First CUPBOARD OPEN
.
.
.
99 INVENTORY (fixed allocation)
OTHER CONSIDERATIONS....
RESPONSE TIME AND MEMORY
1) VARIABLES
When memory becomes a problem, the first consideration is usually to
replace frequently used numbers with a variable. For example 0 and 1
abound in many BASIC adventure listings and the use of:
LET n = 0
LET j = 1
followed by the replacement in the listing of each of these numbers by
n or j can effect a considerable saving of memory. Such an approach,
when applied to an extreme extent can have an adverse effect on
response time. It is therefore necessary to strike a considered
balance between speed and memory-saving. When the variables have been
finally defined then all lines such as 9960 can be removed to increase
the available memory.
2) SUB-ROUTINE STRUCTURE
The length of each sub-routine will affect the response time if the
program is required to plough through a vast number of lines before
reaching a conclusion. Careful construction can minimise this effect.
a) The "EXAMINE" sub-routine.
This is likely to be one of the longest in terms of number of lines
but acceptable response times can be achieved by dividing the
sub-routine into several sections.
The EXAMINE command in the first instance can be considered with
two groups of objects .... those which can be carried (e.g. KEY)
and those which are included in the location text (e.g. DOOR). A
line such as 1300 in the demonstration adventure effectively
produces two shorter "EXAMINE" sub-routines, each of which could be
further divided if required.
b) The "MOVEMENT" sub-routine
This routine requires to be of almost instant response but can be
slowed down if there are many considerations of locked doors etc to
be evaluated by the BASIC program. This does not apply to the
demonstration adventure as there are only two such lines. Removal
of such lines, however, can be achieved by the following
modifications.
On return from RANDOMIZE USR 65005 the maximum value of PEEK 64115
will be the number of locations in the adventure (in this case, 15).
Also, if the DOOR IS CLOSED then that response is required for an EAST
move from location 8 and a WEST move from location 9. Currently in the
MOVEMENT DATA, EAST from 8 has a value of 9 and WEST from 9 has a
value of 7. Change both of these values to 16 in the DATA lines of the
CODE GENERATOR program, or as a short cut the changes can be effected
by the direct commands: POKE ((DMOV-7) +59), 16 and
POKE ((DMOV-7) +67), 16 . Now make the following alterations to the
BASIC listings:
1) Remove lines 1005, 1816, 7080, 7081
2) Add the following lines:
1820 IF PEEK (f + 4)=1 THEN POKE ((DMOV-7+59),9
OKE ((DMOV-7)+67),7
1825 GOTO 100
1600 POKE ((DMOV-7)+59),16
OKE ((DMOV-7)+67,16
Renumber 1090 as 1050 then delete 1090
Renumber 1092 as 1052 then delete 1092
1055 IF PEEK 64115<16 THEN GOTO 1060
1058 LET r$(1)=n$ (PEEK64115-15) :GOTO50
9972 DIM n$(2,9)
9973 LET n$(1)="The DOOR is closed !"
9974 LET n$(2)="The GATE is closed!"
3) Alter the following lines:
1900 after POKE(f+4),1 : add-
POKE ((DMOV-7)+59),9
OKE ((DMOV-7)+67),7
2600 after POKE(f+4),0 : add-
POKE ((DMOV-7)+59),16
OKE ((DMOV-7)+67,16
N.B. The calculation ((DMOV-71+59) locates the position in the
MOVEMENT DATA for the entry for an EAST movement from location 8.
The value 59 is found by (location number(8) x 7) + direction
value, where N=1, S=2, E=3, W=4, U=5, D=6.
i.e. (8x7)+3=59
As an exercise, similar changes should be made to permit the removal
of line 1010.
When the program is complete then all expressions such as
((DMOV�7)+59) should be replaced by their numerical value.
PERSONALISATION
Certain features incorporated into the ADVENTURE BUILDER SYSTEM can be
readily altered to provide characteristics of your own choice.
A) STANDARD PHRASES
The STANDARD phrase (e.g."HERE YOU CAN SEE") can simply be altered by
changing the DATA in the CODE GENERATOR. The only restriction would be
to use a phrase no longer than the longest OBJECT description, for
"HERE YOU CAN SEE.. etc, particularly if printing was centralised
and/or a change in PAPER colour had been selected.
B) INPUT PROMPT AND BEEPS
By poking different values into the following locations it is possible
to "personalise" your adventure.
LOCATION CURRENT RESULT
64510 62 Prints)
64528 42 Prints*
64633 50)
64634 0)
64636 200)
64637 1).. Input keyboard BEEP
64049 5)
64050 1)
64052 125)
64053 1) BEEP for wrong keypress
C) SCREEN PRESENTATION
An adventure with good puzzles and story line can be effectively
ruined by poor screen presentation so considerable care should be
taken to provide a good impression.
It appears that it has become almost universally acceptable that
BORDER and PAPER are set to the same colour. This in turn affects the
BRIGHT feature as the use of this provides a poor effect with
background colours other than BLACK and to a lesser extent, BLUE. The
value of BRIGHT is required by the ABS in order that the printing
effected by the machine code system can provide an acceptable
presentation.
GRAPHIC AID
for
THE ADVENTURE BUILDER SYSTEM
Also available from ALPHA OMEGA SOFTWARE ... a simple to use program
which will incorporate INSTANT part-screen graphics into your
masterpieces.
For use ONLY with the ADVENTURE BUILDER SYSTEM, and only �2.50 from
ALPHA OMEGA SOFTWARE
CRL HOUSE 9 KINGS YARD
CARPENTERS ROAD
LONDON E152HD
01-985 6877
An adventure written entirely in BASIC has reaction times which
compare very badly with machine coded programs. The slow sections are
readily identifiable as the parsing routine, word recognition through
long FOR ... NEXT loops or through large numbers of IF ... THEN lines,
and identifying which few objects should appear at a location or in
the player's INVENTORY.
The ADVENTURE BUILDER SYSTEM (ABS) can substantially decrease the
above delays such that an adventure written predominantly in BASIC can
operate at a speed approaching that of machine code.
The ABS consists of two programs ... one to generate the required CODE
with the other being a short BASIC core program which will utilise
this CODE.
Before using the system it is advisable for the adventure to be
outlined to a reasonably advanced stage. The map should be constructed
with each location and all objects well identified as to description
and starting location. Details on how to use the system will make
reference to the short demonstration adventure for which the DATA and
map are provided.
The BASIC adventure program follows the convention of:
a) PRINTs location description (plus graphics, if included).
b) PRINTs any objects visible at this location.
c) Asks "What next?" and awaits input.
d) Accepts input from keyboard and PRINTs on screen.
e) Analyses input (usually into VERB and NOUN).
f) Sends control of program to a sub-routine specific to that VERB.
The CODE GENERATOR program includes the DATA for movement input (GO
NORTH or N etc) and also for commonly used VERBS:
GET (or TAKE)
DROP
LOOK (or L or R)
EXAMINE
QUIT (or STOP)
INVENTORY (or I or LIST)
SAVE
LOAD
METHOD OF OPERATION
1. Prepare a tape for copy of CODE GENERATOR with DATA for the
adventure with loader program:
10 CLEAR 52000
20 LOAD ""CODE
25 LOAD ""
30 SAVE "loader" LINE 10
2. LOAD the CODE GENERATOR program, add your adventure DATA then SAVE
on to the above tape by GOTO 9990 (Tape A).
3. Make a copy of the BASIC adventure core program. "VERIFY" as a
direct command and do NOT rewind. (Tape B).
4. LOAD Tape A and supply the information required by the on screen
prompts then SAVE the DATA on Tape B. Make a note of the CLEAR
number.
5. Enter as a direct command: CLEAR number: LOAD"" and LOAD Tape B.
Stop the tape when prompted, delete line 9949 then GOTO 9950 and
re-start the tape.
6. "BREAK" and alter line 9991 to:
9991 SAVE "SYSTEM"CODE save,len
7. Add the remainder of the BASIC program (VERB sub-routines and
screen display DATA etc).
8. SAVE at the start of a blank tape (by GOTO 30) the following
loader:
10 CLEAR number
20 LOAD""
30 SAVE "LOADER" LINE 10
9. SAVE the adventure after this loader (by GOTO 9990).
N.B. The enclosed tape contains two copies of each of the following
programs:
DEMONSTRATION ADVENTURE (with BLACK or WHITE background)
Blank CODE GENERATOR
Blank BASIC core program
CODE GENERATOR with the DATA used for the two DEMONSTRATION
ADVENTURES.
In order to use the ABS, the DATA for the adventure must be added to
the CODE GENERATOR program and the on screen prompts satisfied in the
following manner. Responses for the demonstration adventure are
indicated after each section heading, and they refer to the version
with BLACK background.
A) HOW MANY VERBS (17)
The DATA for these is entered in lines 1003 to 1999 in the format:
DATA "OPEN",9,"UNLOCK",10
ie. The VERB (in full), followed by the assigned number. As the verb
numbers (vb) 0 to 8 are already assigned the first additional verb
takes the value 9. Synonymous verbs (e.g. SHUT and CLOSE) are
allocated the same number but count as separate entries when
responding to HOW MANY VERBS.
B) VERB LENGTH CHECK (5)
The ABS offers a choice (between 3 and 7) for the number of leading
letters which will be used to determine a match between input and
database. The selection of 4 or 5 is usual. If 3 is selected confusion
could arise between such inputs as FEED and FEEL, both of which would
be considered as FEE.
C) HOW MANY OBJECTS (9)
This refers to the objects which could be included in the INVENTORY of
the adventurer.
(For DATA entry DETAILS, see section E).
D) MAXIMUM LENGTH OF OBJECT DESCRIPTION (22)
Enter here the number of characters in the longest object description.
E) HOW MANY OBJECTS WHICH CAN HAVE AN ALTERED DESCRIPTION (2)
This refers to items such as "A small TORCH" and "A lit TORCH". The
DATA for these objects is entered in lines 2000 2018 in the following
format:
DATA "COAT",1,"A tartan COAT","A tartan COAT (worn)".
DATA "TORCH",2,"A small TORCH","A lit TORCH".
i.e. The word which would be typed, the assigned number, the original
description, the changed description.
The description of objects is held in the string array o (x,y), where
x is the total number of objects and y is the character length of the
longest description. These objects which can alter during the course
of the adventure must be allocated the first and last numbers of the
string array. See list of DATA for demonstration program where "A
tartan COAT" and "A small TORCH" are objects 1 and 2 while their
corresponding changed versions are objects 8 and 9.
The DATA for the remaining objects (from section C) is entered in
lines 2020 to 2188 in the format:
DATA "BOX",3,"A wooden BOX","SPADE",4,"A short SPADE",...etc.
F) NOUN LENGTH CHECK (5)
This is similar to VERB LENGTH CHECK... select between 3 and 7. The
value can be different from that chosen for VERBS.
G) OTHER WORDS (13)
The first assigned number for these words (DOOR, STAIRS, etc) is
calculated as follows:
Total number objects + 7 (i.e. 9+7=16 for demo adventure)
The DATA is entered in lines 2190 to 2988 in the format:
DATA "DOOR",16,"CUPBOARD",17,...etc.
H) MAXIMUM INVENTORY (3)
Enter here the maximum number of items which the adventurer is
allowed to carry at any one time.
I) NUMBER OF LOCATION (15)
Enter here the total number of locations in the adventure.
J) SCROLL ROUTINE (B)
The ABS contains a split-screen technique which can be used in two
ways.
1) If it is required that the top x number of lines remain on
screen, then an entry here of C, followed by x, will scroll
"behind" these lines when the screen is full.
2) However if the number of lines required to remain on
screen is variable (i.e. after HERE YOU CAN SEE section) then
this can be achieved by entering B as this response.
If the normal SPECTRUM full screen scroll is required then select
here.
K) STARTING LOCATION (7)
Enter here the number of the location at which the adventure
commences.
L) MOVEMENT DATA
The DATA to control movement is entered in lines 3000 to 3998 as 7
numbers for each location as follows:
DATA 7,3,13,8,6,0,0
The first number is the location number, followed by the number of the
six locations which would be reached by entering N,S,E,W,U,D
respectively. An entry of 0 indicates no exit in that direction.
The DATA entered here should take no account of the need to remove
obstacles or unlock doors, etc, as such restrictions can be
accommodated by the BASIC program, in lines 1005 to 1089.
See example in demonstration adventure at lines 1005 and 1010.
A different approach is detailed later.
M) OBJECT STATUS TABLE
Each object will at any one time have one of the following numbers
allocated to it:
a) 0.................the object is 'invisible'
b) 99................the object is in the player's INVENTORY
c) Location number...the object currently resides at this
location and will appear on screen after
HERE YOU CAN SEE when that location is
visited.
The DATA for start-up positions is entered in lines 4000 onwards in
the format:
DATA 4,10,0,1 etc
This indicates that object 1 is at location 4, object 2 is at location
10 etc.
An entry must be made for each object.
These values are then altered as necessary by the BASIC program as the
adventure proceeds.
N) SAVE AND LOAD ROUTINES
These routines can be used on a temporary basis effecting a SAVE into
and a LOAD from RAM or as a permanent measure as usual, to tape.
0) LOCATION DESCRIPTIONS
The DATA is entered in line 5001 and onwards in the following format:
5001 DATA 6, "You are in a very tidy BARN. The farmer who runs
this farm is obviously very proud of his work Or is he?"
The number immediately after DATA refers to the INK colour for the
text following. This number may be kept constant for all locations,
but for special emphasis at some key locations a change of
presentation can be effectively used as a highlight. The text within
the quotes should be carefully constructed with regard to spaces and
punctuation.
P) HERE YOU CAN SEE and INVENTORY
The phrases for these are entered in lines 6040 and 6254 for the
former and in 6080 and 6254 for the latter, preceded by the PAPER, INK
and BRIGHT values for that phrase, e.g.
6040 DATA 5, 0, 1, "Here you can see:- "
6254 DATA 5, 0, 1, "Nothing of interest"
The PAPER, INK and BRIGHT values for each OBJECT are entered
(in order) in line 6140. A set of values MUST be entered for each
object. If the choice of PAPER is not the same as the normal screen
colour, then add spaces to the HERE YOU CAN SEE etc phrases to match
the length of the longest OBJECT description.
Q) CENTRALISATION OF PRINT
The printing of HERE YOU CAN SEE and YOU HAVE WITH YOU followed by the
relevant list of OBJECTS can be located in the centre of the screen or
at the left of the screen...select either 0 or 1 when prompted.
R) RESPONSES from within the M/C system (1) (6)
The DATA for these (in numerical order) is entered in line 7090 and
onwards as follows:
7090 DATA 6,"You really need some light in here!"
with the number again referring to the INK colour, and the text being
arranged for tidy printing to screen.
Three types of responses are considered ....
STANDARD ...in lines 7090 to 7098
TERMINAL ...entered in line 7100 onwards
ROUTINE.....entered in line 7150 onwards
but they are numbered in sequence without regard for type.
Hence, in the DATA for the DEMONSTRATION ADVENTURE as there are 9
STANDARD responses, 1 TERMINAL response and 6 ROUTINE responses the
reference number for the first ROUTINE response is 11 and for the only
TERMINAL response it is 10. Any response which is identified as a
TERMINAL response will automatically be followed on screen by the "Do
you want to try again?" phrase.
S) BRIGHT VALUE (1)
Enter here the BRIGHT value of the main screen.
T) PERMANENT BACKGROUND COLOUR (0)
Enter here the colour value of PAPER for main screen.
DEFINED VARIABLES
The following variables have been used in the CODE GENERATOR listing
and may prove useful to replace numbers and so obtain the maximum
benefit from the program.
0=n 1=j 2=a 3=w 4=aa
5=ab 6=ac 7=ad 8=b 9=ae
10=af 11=ag 12=ah 13=ai 14=aj
15=ak 16=c 17=al 18=am 19=an
20=ao 22=ap 23=aq 24=ar 31=as
32=d 33=e 35=f 40=g 42=at
48=au 50=av 54=h 58=i 60=k
61=l 62=m 70=ax 79=ay 92=az
99=bj
100=ba 115=bb 126=bc 137=bd 184=be
190=bf 200=bg 201=o 202=p 205=q
215=u 250=v 251=bi 254=r 255=s
400=t
The following sections explain how the system works and how it may be
used to write your own adventure.
ANALYSER ROUTINE
The ABS allows a maximum input of 30 characters as upper case letters
or numbers. The analyser routine examines the input and returns to
BASIC with an allocated number for VERB(vb) and NOUN (no) which the
BASIC program can utilise. Any unrecognised word returns a value of
200 for VERB and 201 for NOUN. This information can be used in various
ways by the BASIC program but in the demonstration adventure, either
situation produces the all-purpose cop-out of "You can't do that"!!
Possible single word inputs require some explanation. The parser
routine analyses the input by considering the first word as the VERB
and the last word as the NOUN so that "DROP THE SPADE"or"DROP THE
SHORT SPADE" produces the same response as "DROP SPADE".
However, the one word input of, for example, LOOK gives both a VERB
and NOUN of "LOOK" with values of vb=4 and no=201. This would produce
a response of "You can't do that" due to the value of no=201. Such an
outcome is prevented by including LOOK in the list of NOUNS and
assigning it a default value of 99.
Any additional VERBS which could be used as single word inputs should
be included in both VERB and NOUN lists in a similar manner.
Alternatively, the NOUN number could be a true assigned number for use
by the BASIC program. In the demonstration program such an approach
has been used for DIG where it has been assigned the same NOUN number
as HOLE as an input of "DIG" implies "DIG A HOLE".
NUMBER OF LOCATIONS
If your adventure contains more than 65 locations then line 7665
should be altered to 7005+(10xnumber of locations).
CONTROL OF THE ADVENTURE
The adventure is controlled in the BASIC program by the following:
Variable vb (the VERB number)
Variable no (the NOUN number)
The OBJECT STATUS TABLE
The FLAG STATUS TABLE
All other controls are operated by the generated CODE.
a) OBJECT STATUS TABLE (OST)
Fifty entries are available in this TABLE and each object has at all
times an entry here in the position identified by the number of the
object.
e.g. Status of object number x is found by PEEK (o + X) and a change
in status is effected by POKE (o + X), Y where Y indicates the
new status.
b) FLAG STATUS TABLE (FST)
100 entries are provided by this TABLE with a few being reserved for
specific uses.
FLAG (f+99) is used to control size of INVENTORY.
FLAG (f+98) is used by the GRAPHICS AID program.
FLAG (f+0) contains number of current location.
The first X entries are reserved for use by X objects which change
description during the course of the adventure.
All other FLAGS are available for use by the BASIC program.
A FLAG may also be used as a counter to a maximum count value of 255.
A FLAG status is determined by PEEK (f+X) and a change in status is
effected by POKE (f+X), Z where Z indicates the new status and X
indicates the FLAG number.
As the adventure progresses the BASIC program will be required to
update the values in OST and FST.
At start up all FLAGS (except f) have the value of 0.
e.g. In the demonstration adventure, the FLAGS (f+1) and (f+2) are
altered to the value 1 when the COAT is worn and the TORCH is lit
respectively, also (f+3) is altered to 1 when the CUPBOARD is
open.
COMPLETION OF THE
BASIC PROGRAM
1) VERB SUBROUTINES
100 lines are available for each subroutine commencing at lines 1000 +
(vb x 100). If guidance on how to construct these is required then
consult paragraph 5 of this section.
2) PRINTING OF RESPONSES
As it is most likely that a split-screen presentation will be
selected, it is necessary to check for the need to scroll before each
response is printed on screen. To remove the need to include such a
check before each PRINT statement the responses MAY be identified as
r$(1), r$(2), r$(3), and r$(4) which are then printed by the PRINT
routine at line 50.
e.g.......LET r$(1) = "OK":GOTO 50
It is useful to employ this PRINT routine while testing and de-bugging
sections of the adventure. However, the printing of responses can be
incorporated into the machine code system by replacing the statement
... LET r$ ( ) =" ":GOTO 50 ... with ... LET r=x:GOTO 30 ...
where x=the response number held in the machine code system (see
section R).
Seven responses in the DEMONSTRATION ADVENTURE have been incorporated
into the machine code system ... those in lines 208, 1092, 1100, 1105,
1110, 1915, 7070 and 7150. The difference in effect can be observed by
comparing the response to OPEN CUPBOARD (in FRONT HALL) with DIG HOLE
(in the GARDEN).
3) VARIABLES USED BY THE BASIC PROGRAM
Variables assigned in the core BASIC program are:
vb, no, f, o, MAX, SAVE, LEN, DMOV,
TRNO, PRIN, PRCAR, PRMS, PRHY,
SYS, SA, LO and QUIT.
r$(4,32)
4) LINE NUMBERS
It is important that lines 100 and 195 are retained in the BASIC
program as is (except for alteration of the detail in line 100). These
lines are on occasions pointed to by the machine code system and any
change could be disastrous!
5) The method of construction of the VERB sub-routines can be observed
by studying lines 1000 to 3300 of the DEMONSTRATION ADVENTURE.
However, for a detailed examination (by way of an example) consider
the input of LIGHT TORCH.
This will return a vb value of 12 and no. value of either 2 or 9
depending on whether the TORCH is lit or not (this check will have
been automatically made by the code).
For a vb value of 12 control of the program will be directed to line
2200 (i.e. 1000 +( 12 x 100) as calculated in line 235).
Translation into ENGLISH of this section is as follows:
Line 2200
IF PEEK (o+9)=99 ... If lit TORCH is being carried
AND no=9 ... and NOUN = lit TORCH
THEN LET r$(1) = "It's already lit!" ....
formulate response and PRINT it.
Line 2205
IF no=2 ... If NOUN = a small TORCH
AND PEEK f<>11 ... location is NOT 11 (Cellar)
AND PEEK (o+2)=99 .. small TORCH is in INVENTORY
THEN POKE (o + 2),0 ... remove TORCH from INVENTORY
POKE (o+9),99 ... place a lit TORCH in INVENTORY
POKE (f+2),1 ... set flag for TORCH is lit LET r$(1)="OK ... TORCH now
lit" ... formulate response and PRINT it.
Line 2210
Similar to line 2205 but player must be in CELLAR this time, so send
program to line 100 to print full description as the player is now
carrying a lit TORCH.
Line 2215
Any other situation produces the cop-out response!
An improvement would be to include a response for the situation where
the player did not have the TORCH in his/her possession.
VERBS AND NOUNS INCLUDED
VERB vb NOUN no
No. No.
GO 0 N 1
N 0 NORTH 1
S 0 S 2
E 0 SOUTH 2
W 0 E 3
U 0 EAST 3
D 0 W 4
GET 1 WEST 4
TAKE 1 U 5
DROP 2 UP 5
EXAMINE 3 D 6
LOOK 4 DOWN 6
L 4 LOOK 99
R 4 L 99
INVENTORY 5 R 99
I 5 INVENTORY 99
LIST 5 I 99
QUIT 6 LIST 99
STOP 6 QUIT 99
SAVE 7 STOP 99
LOAD 8 SAVE 99
LOAD 99
The following verb sub-routines are included in the core BASIC
adventure listing:
LOOK..........line 1400
INVENTORY.....line 1500
QUIT..........line 1600
SAVE..........line 1700
LOAD..........line 1800
The MOVEMENT sub-routine is partially completed only, starting at line
1000. It remains to insert any lines to account for temporary blocks
such as closed doors or removal of guarding monsters!!
DEMONSTRATION ADVENTURE
[1 BARN]
�spade
�
[ 2 LOFT ] [3 FARMYARD] [4 LIVING ROOM] [5 DINING ROOM]
�-� � � coat �
�-� � � �
�-� � � �
[6 STABLE]--[7 FIELD]--[8 DOOR]--[9 FRONT HALL]--[10 KITCHEN]
�-� � � torch
[11 CELLAR] � �
(box) � �
� �
[12 DEAD END]--[13 E W ROAD]------[14 GATE]------[15 GARDEN]
(key)
NUMBER OBJECT (o$) DATA STARTING
LOCATION
1 A tartan Coat COAT 4
2 A small TORCH TORCH 10
3 A wooden BOX BOX 0
4 A short SPADE SPADE 1
5 A bronze KEY KEY 0
6 Splinters of WOOD WOOD 0
7 A large DIAMOND DIAMOND 0
8 A tartan COAT(worn) COAT 0
9 A lit TORCH TORCH 0
NUMBER OTHER NOUNS NUMBER OTHER NOUNS
16 DOOR 23 GARDEN
17 CUPBOARD 24 FIELD
18 LAWN 25 SAFE
19 STAIRS 26 PATCH
20 LADDER 27 JUMP
21 GATE 22 DIG
22 HOLE
DEMONSTRATION ADVENTURE
vb nun VERB MOVEMENT DATA
location N S E W U D
9 OPEN 1 0 3 0 0 0 0
10 UNLOCK 2 0 0 0 0 0 6
11 DIG 3 1 7 0 0 0 0
12 LIGHT 4 0 9 5 0 0 0
13 EXTINGUISH 5 0 10 0 4 0 0
14 CLIMB 6 0 0 7 0 2 11
15 DESCEND 7 3 13 8 6 0 0
16 CLOSE 8 0 0 9 7 0 0
17 TOSS 9 4 0 10 7 0 0
18 FILL 10 5 15 0 9 0 0
19 LOCK 11 0 0 0 0 6 0
20 WEAR 12 0 0 13 0 0 0
21 REMOVE 13 7 0 14 12 0 0
14 ASCEND 14 0 0 15 13 0 0
16 SHUT 15 10 0 0 14 0 0
22 JUMP
23 USE
FLAG STATUS TABLE .... ASSIGNED VALUES
FLAG NUMBER CONDITION FOR VALE=1
1 COAT worn (fixed allocation)
2 TORCH lit (fixed allocation)
3 CUPBOARD open
4 DOOR open
5 HOLE in field
6 HOLE in garden
7 GATE open
8 SAFE unlocked
9 Found BOX
10 Found KEY
11 First CUPBOARD OPEN
.
.
.
99 INVENTORY (fixed allocation)
OTHER CONSIDERATIONS....
RESPONSE TIME AND MEMORY
1) VARIABLES
When memory becomes a problem, the first consideration is usually to
replace frequently used numbers with a variable. For example 0 and 1
abound in many BASIC adventure listings and the use of:
LET n = 0
LET j = 1
followed by the replacement in the listing of each of these numbers by
n or j can effect a considerable saving of memory. Such an approach,
when applied to an extreme extent can have an adverse effect on
response time. It is therefore necessary to strike a considered
balance between speed and memory-saving. When the variables have been
finally defined then all lines such as 9960 can be removed to increase
the available memory.
2) SUB-ROUTINE STRUCTURE
The length of each sub-routine will affect the response time if the
program is required to plough through a vast number of lines before
reaching a conclusion. Careful construction can minimise this effect.
a) The "EXAMINE" sub-routine.
This is likely to be one of the longest in terms of number of lines
but acceptable response times can be achieved by dividing the
sub-routine into several sections.
The EXAMINE command in the first instance can be considered with
two groups of objects .... those which can be carried (e.g. KEY)
and those which are included in the location text (e.g. DOOR). A
line such as 1300 in the demonstration adventure effectively
produces two shorter "EXAMINE" sub-routines, each of which could be
further divided if required.
b) The "MOVEMENT" sub-routine
This routine requires to be of almost instant response but can be
slowed down if there are many considerations of locked doors etc to
be evaluated by the BASIC program. This does not apply to the
demonstration adventure as there are only two such lines. Removal
of such lines, however, can be achieved by the following
modifications.
On return from RANDOMIZE USR 65005 the maximum value of PEEK 64115
will be the number of locations in the adventure (in this case, 15).
Also, if the DOOR IS CLOSED then that response is required for an EAST
move from location 8 and a WEST move from location 9. Currently in the
MOVEMENT DATA, EAST from 8 has a value of 9 and WEST from 9 has a
value of 7. Change both of these values to 16 in the DATA lines of the
CODE GENERATOR program, or as a short cut the changes can be effected
by the direct commands: POKE ((DMOV-7) +59), 16 and
POKE ((DMOV-7) +67), 16 . Now make the following alterations to the
BASIC listings:
1) Remove lines 1005, 1816, 7080, 7081
2) Add the following lines:
1820 IF PEEK (f + 4)=1 THEN POKE ((DMOV-7+59),9
1825 GOTO 100
1600 POKE ((DMOV-7)+59),16
Renumber 1090 as 1050 then delete 1090
Renumber 1092 as 1052 then delete 1092
1055 IF PEEK 64115<16 THEN GOTO 1060
1058 LET r$(1)=n$ (PEEK64115-15) :GOTO50
9972 DIM n$(2,9)
9973 LET n$(1)="The DOOR is closed !"
9974 LET n$(2)="The GATE is closed!"
3) Alter the following lines:
1900 after POKE(f+4),1 : add-
POKE ((DMOV-7)+59),9
2600 after POKE(f+4),0 : add-
POKE ((DMOV-7)+59),16
N.B. The calculation ((DMOV-71+59) locates the position in the
MOVEMENT DATA for the entry for an EAST movement from location 8.
The value 59 is found by (location number(8) x 7) + direction
value, where N=1, S=2, E=3, W=4, U=5, D=6.
i.e. (8x7)+3=59
As an exercise, similar changes should be made to permit the removal
of line 1010.
When the program is complete then all expressions such as
((DMOV�7)+59) should be replaced by their numerical value.
PERSONALISATION
Certain features incorporated into the ADVENTURE BUILDER SYSTEM can be
readily altered to provide characteristics of your own choice.
A) STANDARD PHRASES
The STANDARD phrase (e.g."HERE YOU CAN SEE") can simply be altered by
changing the DATA in the CODE GENERATOR. The only restriction would be
to use a phrase no longer than the longest OBJECT description, for
"HERE YOU CAN SEE.. etc, particularly if printing was centralised
and/or a change in PAPER colour had been selected.
B) INPUT PROMPT AND BEEPS
By poking different values into the following locations it is possible
to "personalise" your adventure.
LOCATION CURRENT RESULT
64510 62 Prints)
64528 42 Prints*
64633 50)
64634 0)
64636 200)
64637 1).. Input keyboard BEEP
64049 5)
64050 1)
64052 125)
64053 1) BEEP for wrong keypress
C) SCREEN PRESENTATION
An adventure with good puzzles and story line can be effectively
ruined by poor screen presentation so considerable care should be
taken to provide a good impression.
It appears that it has become almost universally acceptable that
BORDER and PAPER are set to the same colour. This in turn affects the
BRIGHT feature as the use of this provides a poor effect with
background colours other than BLACK and to a lesser extent, BLUE. The
value of BRIGHT is required by the ABS in order that the printing
effected by the machine code system can provide an acceptable
presentation.
GRAPHIC AID
for
THE ADVENTURE BUILDER SYSTEM
Also available from ALPHA OMEGA SOFTWARE ... a simple to use program
which will incorporate INSTANT part-screen graphics into your
masterpieces.
For use ONLY with the ADVENTURE BUILDER SYSTEM, and only �2.50 from
ALPHA OMEGA SOFTWARE
CRL HOUSE 9 KINGS YARD
CARPENTERS ROAD
LONDON E152HD
01-985 6877