
   Mapper V1.0 
   By Reaper of the PowerLords UK in January 1990.

Introduction : This mapper utility will allow the creation and update of a map
~~~~~~~~~~~~   which can then be used as a scrolling backdrop in your game or
demo. The map must be rectangular and cover at least the size of the screen.
The building blocks used to make up the map must be of size 32*32 pixels.
They are also limited to low-resolution mode, the interlace and hi-res modes
are not catered for. However, the blocks can consist of any number of
bitplanes.

   Note that to save time on input (and also my programming time) all the input
and output filenames are fixed. All file access is done in the current
directory. The operations allowed on the map are fairly limited. In fact there
aren't any. All you can do is place a block on the map. Anything more
complicated, eg. moving/copying sections of the map will have to be done by
yourself. The file format will be described below.

Keyboard input : Here you can enter the number of IFF files to be read, which
~~~~~~~~~~~~~~   is limited to 26, but you will probably get an error message
before then due to a lack of available memory. Also you must enter the screen
size in pixels which should correspond (closely) to that used in your
game/demo. There are lower and upper limits of 256..352 pixel width and
160..288 pixel height. Also these inputs must both be a multiple of 32. Then
you must enter the width and height of your map. These inputs refer to the
number of 32*32 pixel blocks, eg. if your screen height is 256 pixels then your
map must be at least 8 blocks high. Finally you have the choice to load an
input map.

File input : The IFF filenames must correspond to the notation "a.iff",
~~~~~~~~~~   "b.iff"... "z.iff" and should be stored in the current directory,
eg. if you have requested an input of 4 files then the files a,b,c,d will be
read. The screen colours and number of bitplanes are taken from the first file
"a.iff" and the remaining files are assumed to be of the same format. All the
IFF files are assumed to be of size 320*256. Note that if you are using a 32 or
64 colour display then you will lose three/six colours respectively. This is
because the pointer used consists of two sprites and uses colour registers
17,18 and 19. The input map should be called "in.map".

Execution : When on the IFF screen use the left/right mouse buttons to move
~~~~~~~~~   down/up the files respectively. Press fire to grab a block and
enter the map screen. Then move around the map as desired using the joystick
and press fire to place the block. You may then scroll around the map for
viewing purposes, before pressing fire again to return to the IFF screen. To
exit the program press both mouse buttons for about one second.

File output : If desired, the map can be saved. Its filename is "out.map". The
~~~~~~~~~~~   maps contents are stored in left to right then top to bottom
order. Each block is defined as a word-sized number on the map. This block
number is related to the horizontal and vertical position of its graphic data
in the appropriate IFF file, ie. each file consists of 80 blocks in eight rows
of ten, eg.

   00 01 02 03 04 05 06 07 08 09
   10 11 12 13 14 15 16 17 18 19
   .. .. .. .. .. .. .. .. .. ..
   70 71 72 73 74 75 76 77 78 79

   Thus the first file "a.iff" contains block numbers 0..79 and the second file
contains block numbers 80..159 etc. An empty map position will be denoted with
the number -1 and will appear on the screen as a blank block. The order of the
map output file will also look like the above diagram.

   If your map is 20*20 blocks then the output file will be of size 20*20*2=800
bytes. Note that the input map file will not be altered and that no extra
information such as map width and height are stored along with the map itself.
This is to avoid any confusion when including the map(s) in your program.

Filename summary :   Input                  Output
~~~~~~~~~~~~~~~~     ~~~~~                  ~~~~~~
                     a.iff   Necessary      out.map
                     b.iff   Optional
                     c.iff   Optional
                     etc.
                     in.map  Optional

Notes : If you are wondering why this document has not been stored separately
~~~~~   from the program it is because I know how easy it is for programs and
their instructions to become separated from each other!

