**** BOULDERDASH V0.9 ***************************************************
*									*
*  Program (c) 1992 by Jeff Bevis					*
*									*
*  Permission to use and distribution of this program is subject to	*
*  the following conditions:						*
*									*
*	»» This program may not be sold for profit without the		*	
*	   written approval of the author. 				*
*									*
*	»» Permission is granted for this program to be included in	*
*	   freely distributable software libraries, such as the		*
*	   Fred Fish freely distributable AMIGA software library.	*
* 									*
*	»» This program should only be distributed in its entirety,	*
*	   with all original files present and intact (unmodified).	*
*									*
*	»» The author accepts absolutely no liability for any use,	*
*	   misuse, or inability to use this software, nor any		*
*	   consequences (whether intentional or accidental) arising	*
*	   from its use or possession.					*
*									*
*	»» No warranty is implied nor in effect for the user of this 	*
*	   program.  Use of this program is at your own risk!		*
* 									*
*************************************************************************



!!!!! IMPORTANT !!!!!
If you read nothing else in this file, please read the section near the end
called "BUGS, WARNINGS, ETC." BEFORE you use the program.  PLEASE!



INTRODUCTION
------------

This is all Laurence Vanhelsuwé's fault.  If his Rocky Clone V1.0 hadn't
fallen into my hands, I would have continued to lead a perfectly happy
life.  Instead, my desire to play Boulderdash was rekindled (rather 
violently, I might add), and thusly this incarnation of the game was 
born.

Laurence's program does a great job of accurately reproducing the
cell automata of the C64 version of Boulderdash, and I was duly impressed.
However, I wanted it to look and sound like the C64 version (well, we
should hope it would be a little better :-)  This program represents a
totally new implementation of the game, and none of the source code from
Rocky Clone V1.0 has been used in this program.  Several of the Rocky 
game screens are reproduced here, though -- primarily because 1) I haven't
had time to make a lot of new screens, and 2) I think Rocky players
(especially Laurence) would get a kick out of seeing the screens with
new, better graphics and sound.


INSTALLATION
------------

Place the following files in the same directory:

	README
	README.info
	Boulderdash
	Boulderdash.info
	bd.snd
	bd.txt
	bd.16
	maps

You may then run the game from either the Shell or Workbench.  No special
libraries, assign's, or fonts are required.


DESCRIPTION
-----------
When you run the program, a window appears on the Workbench.  The program
will load its data files and the 'maps' file.  If all goes well, you
may select either to 'Play' the loaded maps in sequence, 'Quit' the 
program, or 'Reload Maps' from the 'maps' file.  (Reloading the maps is
useful if you're alternately editing a level then testing it -- you need
not quit the editor or Boulderdash.)

After you click 'Play', you get the game screen.  At the bottom is shown:

	LEVEL xxx	the current map level number
	NEED xxx	the number of diamonds required to finish the level
	TIME xxx	the time (seconds) you have to complete the level
	xxxxxxxx	your score	

The title of this level will also be displayed in the middle of the screen.
With a joystick connected to the second game port (not the mouse port),
you may start the gameplay by pressing the FIRE button.  Alternatively,
you could press a key on the keyboard to begin.

During gameplay, the following keyboard commands exist:

	SPACE		pauses the game
	ESCAPE		leave the game;  returns to the Workbench window
	RETURN		commit suicide -- restarts the level

The idea is to get the number of diamonds indicated before time runs out.
To do so, you move around with the joystick, avoiding obstacles and threats
while maneuvering to collect diamonds.  When you have enough diamonds to
leave the level (you will hear a 'snap' sound), you must find the exit
symbol and move into it.

At the end of a level, your time bonus is calculated and added to your score.
You then proceed to the next level.


MAKING YOUR OWN LEVELS
----------------------

The big bonus in this game is that you can make your own levels using 
only a text editor.  You can also change graphics and colors for each
level you create.  An example map file ('demo.maps') is included to show
you how this is done.

The format is simple ASCII;  Each level is defined by a series of commands
and a map image body.  Use the format provided in the 'demo.maps' file.
Don't worry about extra spaces (except in the map area) or blank lines --
they are ignored.

If you make mistakes in the map file, and create something which can't be
loaded, the program will tell you when you load the maps.

One word of warning here:  ALWAYS surround the area of your map with
permanent walls ('W') -- if moving objects (butterflies, you, etc) or 
explosions are permitted to travel to the very edge of the map, Bad Things
can and will result (as they begin traveling off of the map and through
the rest of your computer's memory!)

Note that comments can be added on any line by beginning it with '#'.
Such lines are totally ignored.

Here's a brief synopsis of the commands:

LEVEL		Initiate a level definition.  Must be the first line of a
		level that you create.
	
NAME		Specifies a name for your level.  A name is required.

BFCOLOR		Defines a color cycle for butterflies;  The argument is
		sixteen three-digit hex numbers.  Each three digit number
		represents an RGB color value.

BFMODE		Define the way the color cycle is applied to the butterflies.
		There are two arguments.  One is a number (1, 2, 4, 8, or 16),
		and the other is a word (up, down, or stop).
		The number specifies the window size (how many colors are
		shown before repeating the pattern).  The sixteen colors are
		scrolled through this window repeatedly, either 'up' or
		'down'.  The colors don't scroll if you specify 'stop'

DICOLOR		Same as BFCOLOR, but for diamonds.

DIMODE		Same as DICOLOR, but for diamonds.

DIRTCOLOR	Argument is a three-digit hex number like each of the
		BFCOLOR arguments.  Specifies the color of the dirt on the
		level.

WIDTH		Specifies the width of the level's map (in chars).
		Width cannot be less than three nor greater than 64.

HEIGHT		Specifies the height of the level's map (in chars).
		Height cannot be less than three nor greater than 48.

DIAMOND		Specifies an image for the diamonds (0...9).  There are
		ten unique diamond images.  All diamonds have DICOLOR in
		their imagery;  a few also have BFCOLOR in their imagery.

TIME		Specify the number of seconds for the player to complete the
		level.

REQUIRE		Specify the number of diamonds the player needs to complete
		the level.

MAPSTART	Begins the map body of the level.  No further commands may
		follow except MAPEND.  The map body must consist of
		HEIGHT rows of WIDTH characters, as defined later.
		The map must have one (and only one) of each of the 
		following symbols:  'X','P'

MAPEND		Ends the map body of the level.

END		Terminates the map file.  (required)


The map consists of symbols which represent game objects.  The following 
translations are used:

Character	Represents
---------	---------------
    /		blackness (totally inert)
		(space)
    a		Amoeba
 b,B,c,C	Butterfly. (u,r,d,l) initial direction
    d		Diamond
    g		Growing wall
    i		Monolith
 o,O,q,Q	Box. (u,r,d,l) initial direction
    .		Dirt
    m		Magic wall
    P		Player starting position
    r		Rock
    s		Semi-Permeable wall
    t		TNT
    -		Limbo (totally inert)
    w		Destructible wall
    W		Permanent wall
    X		Exit to next level


I'm sure you'll get tired of the original levels very shortly.  So please,
make more and distribute them!  We'd love to see them!  


BUGS, WARNINGS, ETC
-------------------

This is the part of the README file I hate the most.  It's where I have
to admit I haven't debugged the program fully.  Here's what you can 
expect to happen (the list is ugly):

	- The program takes over the machine during gameplay.  However, it
	  will return it to the OS when you are done.  Under OS2.04, this
	  can be with few ill side-effects.  A good return is not
	  guaranteed, though, so don't bet on it.  Finish other work before
	  starting Boulderdash!
	  
	- The program will almost certainly crash on non-7Mhz Amigas.
	  PAL appears to work OK, but the game will run slower (5/6 speed).
	  This is not due to use of forbidden instructions (ie, TAS or
	  MOVE to CCR, etc), but simply timing differences which give rise
	  to situations I haven't been able to debug (I don't have the
	  needed access to faster machines for debugging this).

	- Occasionally, when you click the 'Play' gadget, the program may
	  also crash as gameplay starts.
	
	- Upon return to the OS, occasionally you will get the famous
	  FIREWORKS_DISPLAY mode.  This is also my fault.
	
	- If used under OS1.3, it appears that the floppy drives become
	  dead after a single invocation of the game.

This sounds awful, but on slow machines running OS2.04, it's not too bad.
I find that the program is pretty stable on such configurations.

I'm working on bug fixes for compatibility probelms even now, so hopefully
'020 - '040 users will eventually be able to use the program.  But, until
I can afford a faster machine of my own, I don't think I'll find all of
the major problems dealing with the faster processors.  :-(

For now, just be careful, and don't rely on your machine's stability after
running the program.  If you're unable to use the program, please accept 
my apology.  I can only work within my means.


CONTACT
-------

Jeff Bevis
618 Ash Street
Beech Grove, IN  46107

Internet:  bevis@ecn.purdue.edu

Monetary contributions greatly enhance my motivation!