Short:    GRAAL Graphic Adventure Authoring Language 2.1
Author:   pethu@hotmail.com
Uploader: pethu@hotmail.com
Type:     game/role
Replaces: Graal2a.lha




                              ============
                               GRAAL  2.1
                              ============


                          Contents:

                          INTRODUCTION
                          DISTRIBUTION
                          COPYRIGHT NOTICE
                          GRAAL REGISTRATION
                          QUICK-START FOR OLD USERS
                          RELEASE NOTES
                          NEW FEATURES
                          BUG FIXES
                          FUTURE ENHANCEMENTS



                              INTRODUCTION
                              ============

GRAAL is a script-based Graphic Adventure Authoring Language, delivered to
your electronic doorstep complete with an editor and other development
tools, a demo adventure, and more documentation than you can shake a
pair of strong eye-glasses at.



                              DISTRIBUTION
                              ============

GRAAL 2.1 is delivered on 4 disks plus the essential disk-mag-thingy
"GRAAL Herald 2", which contains a new mini-demo and other stuff to
help you out with the new features.

The GRAAL aminet archives should be unpacked to a common drawer on
HD or in RAM, or to floppies named as follows:

  Graal2a.lha --> "GRAAL 2.1 - Disk A"
  Graal2b.lha --> "GRAAL 2.1 - Disk B"
  Graal2c.lha --> "GRAAL 2.1 - Disk C"
  Graal2d.lha --> "GRAAL 2.1 - Disk D"

Anyone equipped with the C= installer program can then use the "HD_Install"
icon found on Disk A to install the system to hard disk, or to update an
existing development directory.

  GraalHerald2.lha

Just unpack this directory to an empty hard disk drawer of your choice.

(You may wish to copy GRAAL_Editor and GRAAL.guide there too, if you wish
to study the scripts that make up the mini-demo in detail.)



                            COPYRIGHT NOTICE
                            ================

GRAAL 2.1 is shareware. Copyright (c) 1997 Per Thulin.

This package may be freely distributed, as long as nothing except
distribution costs are charged. All files must be kept together, either
in the original, unaltered archives, or as a full hard disk installation
done with the installer.

The GRAAL_2 driver program may be distributed on its own and for free
as part of your own adventure, even commercially. There is no license
fee - however, you should register (see below).

The registered user's personal key file, graal.key, must no longer be copied
or re-distributed in any way. (This is a change from earlier versions, 
which required the keyfile to be delivered as part of an encrypted game.
This is no longer necessary.)

You are specifically forbidden to use any of the example material -
characters, story, graphics or sound - in your own adventures.

I take no responsibility for any loss or damage that may result from the
use of this software.




                           GRAAL REGISTRATION
                           ==================

The shareware version of GRAAL is not crippled in any way.

However, if you want to distribute your adventures, you will probably
want the following:

* A way to copy the delivery files to a test directory for final tests.

* A way to compress the data to be able to put more on each floppy.

* A way to encrypt all scripts, graphics, and sound files to prevent
  people from finding the solution to the game too easily.

If you register, you will receive a personal keyfile which enables you
to use the GPRO program to do all of the above. It also enables you to
switch off certain developer functions in the version of GRAAL you
distribute to make it even safer - and harder to crack.

As an added bonus, your name appears in lights on the loading screen, 
from which it cannot be removed - an extra copyright protection, you
might say.

The keyfile will continue to work with any new versions uploaded
to the Aminet. Updates are thus easily accessible and free of charge.

You are also put on a mailing list, and will receive an e-mail GRAAL
newsletter from time to time (provided you are connected to the 'net).

Registering is as easy as sending 150 SEK (swedish crowns), or the
equivalent of £ 15 (British pounds), in cash to me:


                            Per Thulin
                            Malmtorgsgatan 18
                            S-653 40  KARLSTAD
                            SWEDEN

     ---------------------------------------------------------------

     So, print out the file "registration.form" NOW and get mailin'!

     ---------------------------------------------------------------



                        QUICK-START FOR OLD USERS
                        =========================

Just want to update and go on typing on your own adventure? OK. As usual, 
I've kept the script changes needed to a minimum:

1) Copy the new GRAAL_2, GRAAL_Editor, GRAAL.guide, GPRO, and GDC to
   your development directory.

   If you have Commodore's installer program, use the HD_Install
   script supplied on disk A to do this!

   Delete any old, renamed GRAAL driver programs floating around...

   (You may also wish to install the new GRAAL Manual.)


2) If you have used looped samples, read about the new handling of samples
   and decide whether you have to put those samples into tracker modules.

   Whatever you decide to do, the very least you must do is change
   the first parameter of all old SAM commands to either DEF or a
   channel number instead of the old ONCE or LOOP parameter. Otherwise, 
   the samples will not play.


3) Continue with your work. (That wasn't too bad, was it? :)


4) Read the rest of this file when you feel up to it!



                              RELEASE NOTES
                              =============


GRAAL 2.1 has been tested on

* A1200 68030/50/50Mhz (AGA) with 16+2MB RAM, running WB 3.0

* A600 68000 7MHz (ECS) with 2+2MB RAM, running WB 2.05 (sloow.. :)

* UAE/Win Amiga Emulator 0.6.8 (OCS), running WB 2.05 under
  Windows 95 with DirectX on a 133MHz Pentium. Apart from
  the pitiful sound emulation, everything runs OK including
  the Editor.



                               NEW FEATURES
                               ============


Read the details in graal.guide. Most of these innovations are also
featured in the GRAAL Herald 2 mini-demo.


MULTIPLE CHARACTERS

* The player can have control over up to 4 characters - only one at a time, 
  though.

* One alternate character at a time can follow the character under player
  control around automatically.

* Even in single-character games, you can use the CHAR: statement to define
  the main character as a global object, thus making it cursor-recognisable.


MULTIPLE INVENTORIES

* Multiple inventories to go with the multiple characters - or to be used
  as a feature on its own.

* The OBJECT: statement and REMOVE command have also been updated to enable
  placing items in a specific inventory.


USER AND STRING VARIABLES

* 12 global string variables.

* Print contents in TEXT, SAY, and other commands using the string #VARn#.

* Test the contents with IFVAR.

* Use the PROMPT command to let the user provide the string input.
  (This uses the dialogue area to display the prompt and input string
  being typed.)

* Set the string contents in the script with the SETVAR command.


NEW NTSC TIMING FEATURE

* A new NTSC_TIMING: statement makes most pauses during the game equally
  long regardless of whether the game is played on an NTSC or PAL system.


IMPROVED SOUNDTRACKER MODULE SUPPORT

* Specify the BPM tempo for soundtracker modules.

* Allocate channels for soundtracker versus sound effects.

* Music now fades out over about 0.5 seconds instead of stopping
  abruptly after TRACK OFF / TRACK NO.


IMPROVED SOUND EFFECT SUPPORT

* Sound effects played alongside soundtracker music now works OK.

* Load frequently used sound effects in the graal.main script and replay
  them with the new SOUND command.

Note: As a side effect of having switched sound routines, you can no longer
loop samples with the old SAM LOOP parameter. If you need to loop samples, 
put them into a soundtracker module and do it that way.


IMPROVED CHARACTER DISPLAY CONTROL

* Alter the part of the character that will "aim" for the spot clicked
  by the player.

* Adjust the space between the character's head and the SAY and THINK
  text displays.


IMPROVED DIALOGUE SENTENCE DISPLAY

* Long sentences can be displayed in the dialogue control area - each
  "\" will act as a line break in the dialogue area as well as in the
  scene area.

NOTE: In the previous versions, the "\" characters were ignored in the
dialogue area - which means GRAAL may now display the alternatives in your
old games a little differently than before. Check through all your LINE:
statements!


EDITOR UNDO COMMAND

The editor now has an "undo" option. Now, you can retrieve all those lines
that you have removed with the "delete line" command by mistake...


TRACE

* TRACE ON opens a window which will display each GRAAL condition or command
  and prompt you to press a key before it is executed.

* TRACE OFF ends the single-step trace and returns GRAAL to normal.

* You can also switch the trace function on and off from within the
  monitor. For more information, see the description of the TRACE
  button in the monitor description below.


DIVERSE

* "IFCHAR character" and "IFHERE object" conditions.


CONTINUATION OF LINES = REPETITON OF INITIAL CONDITIONS

Call it what you like, the upshot of it all is that it often means less
typing for you, and more readable scripts (It's a long way from structured
programming, I agree, but it's convenient all the same :)

* You can repeat the initial conditions of an ACTION:, DACT: or LACT:
  statement by simply starting the line with =; For example, if these
  two lines are next to each other in a script

  ACTION: 3;IFOBJ 24;IFOBJ2 3;Say first line of actions for this combo...
  ACTION: =;SAY second line of actions for this combo;EXIT

  the second line would really be interpreted as

  ACTION: 3;IFOBJ 24;IFOBJ2 3;SAY second line of actions for this combo;EXIT

  You see how this can save space in complex lines...

* If you have a sequence of initial conditions, but only want some of them
  to be repeated, put a blank "no operation" command between them. Example:

  ACTION: 3;IFOBJ 24; ;IFOBJ2 3;Say first line of actions for this combo...
  ACTION: =;SAY Second line of actions is for all rows matching IFOBJ 24;EXIT

  Here, the second line will be interpreted as

  ACTION: 3;IFOBJ 24;SAY Second line is for all actions matching IFOBJ 24;EXIT

  because the empty command broke the sequence of conditions to be repeated.

* The technique can also be used in DACT:s, although there is no initial
  verb number in such statements.

  DACT: IFRF 1=0;SAY First line...
  DACT: =;SAY Second line...;EXIT


GENERAL VERB MATCHING

* In ACTION: statements, you can now replace the initial verb number with
  a question mark to indicate that all normal player commands will be
  matched by the statement. Example from a room script:

  ACTION: 3;SAY Yes, you may use command 3 in this room
  ACTION: 3; ... some statements concerning stuff for verb 3 ...
  ACTION: ?;SAY Sorry, no other commands are allowed!

  The last line will trap ANY player input except the "goto" command
  (verb 0), which is considered a special case and must be handled
  on its own.


THE NEW ON-LINE MONITOR

At the first glance, the new monitor may look less impressive than its
predecessor, which is totally wrong. It can display more information and
also alter it in ways not possible before.

The new monitor can execute ANY graal command. That said, the ones you
are most likely to use are:

  SETRF    to set room flags
  SETOF    to set object flags
  GOTO     to move between rooms
  GET      to put things in the current inventory
  REMOVE   to put things somewhere else

Learn all of these by heart, and you and the monitor will get along just
fine!


MANUAL CHANGES

* The tutorial manual has been expanded and somewhat re-arranged. For
  example, a new chapter on multiple characters and inventories has been
  added, as well as a description of the new monitor.

* The text files "Editor.text" and "Prod.text" has also been integrated
  with the manual.



                                  BUG FIXES
                                  =========


(These are not all of the bug fixes, but some of those you are most likely
to have become annoyed or puzzled by!)


Documentation error:
--------------------

The 2.0 tutorial erroneously stated that GRAAL 2 contains third-party
compression software and requires the powerpacker.library. Neither of
these statements are true - in the end, the best way to go about
compressing and decompressing was to use built-in and "hand-made"
functions. GRAAL is still a stand-alone program without any need for
external libraries or other system files.



Inserting commands from parameter editor did not affect change counter.
-----------------------------------------------------------------------

...and if the change counter reads zero, the ordinary editor save function
does not work. So, sometimes you may have thought you saved something
and it turned out you didn't! Now fixed.



Better clean-up after crashes
-----------------------------

On start-up, GRAAL now deletes any old .room, .section, .iff, .snd, .mod, 
and graal.main files left in memory by a previous crash. This means changes
you made in the scripts between runs will be guaranteed to take effect when
restarting GRAAL.



STATIC: or ANIM: in starting room caused GRAAL to hang (a while later!)
-----------------------------------------------------------------------

This is a very strange one, which has been with us since day one. However, 
no-one but me has ever come in with a bug report about it!. Certain images, 
in certain cases, on certain machines, when run from certain disk drives, 
and with a certain memory usage on the machine, caused GRAAL to hang when
used in STATIC: or ANIM: statements in the first room of the adventure.
( Phew! :)

The image hanging the system a while after executing the STATIC:
statement worked fine if placed in the same spot by a BOBON command in
a DACT: statement instead - which is more or less doing exactly the
same thing in another way!

This is definitely an Amos Pro bug of some sort. I have now totally changed
the structure of the code in the troubled area, and this seemed to cure
the problem. However, I have no way of telling right now whether the
problems have gone away forever. (My favourite theory right now is that
the handling of an open hard disk file buffer somehow interfered with
the access to the image bank. Makes no sense, I know, but that's why it has
taken me this long to pin the problem down...)

Perhaps some general memory-thrashing problems have been sorted by this as
well. I have a feeling I can do more GRAAL restarts and editing between
re-boots now. However, that may just be a feeling...



CHAR OFF data for subsequent CHAR ON were not saved by MARK or SAVE
-------------------------------------------------------------------

Now it is. I have not really considered the implications of this, and it
is unlikely it should have bothered anyone in real life.




                            FUTURE ENHANCEMENTS
                            ===================

I've said it before, but this time I really think I WILL take it easy for
a while - keep the bug reports and suggestions coming, though.

One major development that may be addressed in a future release is more
advanced graphics in the command area. But don't hold your breath.

More automatic settings of MAX_-type parameters and cross-referencing
from withing the editor or small utility proggies is also a possibility.

I also encourage other people to write such proggies. For example, make them
produce reports over what is used where, which rooms connect to which, and
so on. Because of the open-endedness of the GRAAL development environment, 
this should be quite easy to do. Excellent AREXX exercises, I would think!


*************************************************************************
*                                                                       *
*                                                                       *
*                       T-T-THAT'S ALL, FOLKS!                          *
*                                                                       *
*                                                                       *
*************************************************************************
