[7mGeorge & The Repton Clone[0m
----------------------------------------------------------------------------

                        GEORGE AND THE REPTON-CLONE[22m
                               17/9-13/10/98
                         UPDATED 24 November 1998[22m
                          by  Harlequin Software
                            in Blitz Basic 2.1

             [1m[3mLegal stuff [23m[22m : Distribution/Disclaimer
             [1m[3mInstallation[23m[22m : Game/Editor

             [1m[3mUpdate     [23m[22m : Speed change
             [1m[3mUpdate 2   [23m[22m : Correction to correction

             [1m[3mThe Game   [23m[22m : How to Play
             [1m[3mThe Editor [23m[22m : How to design and test your own levels

             [1m[3mCredits    [23m[22m : Whodunnit?

             [1m[3mBlitz-Bug  [23m[22m : Warning for Blitz Programmers

============================================================================
[7mUpdate[0m
----------------------------------------------------------------------------
  UPDATE[22m

  24 November 1998

  I got a Typhoon accelerator and discovered that the timing needed to
  be more precise, as some of the smaller levels speeded up with an
  030.  This tiny update now ensures that the game runs at 25fps on all
  processors.

  [1m[3mSplendid...[23m[22m[22m
============================================================================
[7mUpdate 2[0m
----------------------------------------------------------------------------
  UPDATE 2[22m

  30 May 1999

    Actually, I lied in the previous update - I sneaked another change
    into the last update.  I added a message to the options screen that
    warns you if no custom-levels have been loaded.

    Unfortunately, the small gap between finishing the game, and making
    the update, was sufficient for me to forget which flag was set for
    this purpose, and I chose the wrong one - so the message would advise
    you that the custom levels were not loaded - when they were.

    This second update corrects this error, but probably introduces a new
    one :)

    There will be no more updates, as I am currently working on other
    projects.

  [1m[3mSplendid...[23m[22m[22m
============================================================================
[7mInstallation[0m
----------------------------------------------------------------------------
  The Game[22m
  Just copy the executable George[22m and the drawers GFX[22m and SFX[22m to
  the same drawer on your hard-disk.  Error messages will be given if the
  executable can't find the SFX and GFX files.

  The Editor[22m
  Put the executable (GeorgeEd) anywhere on your hard disk, and copy
  the contents of the Fonts drawer to your Fonts directory.

  [1m[3mI'll do that, then...[23m[22m[22m
============================================================================
[7mBlitz-Bug[0m
----------------------------------------------------------------------------
  I was just writing the routine to check that there was enough room
  on the disk to save a file, and discovered a bug I haven't noticed
  before.  I saved the DiskFree value into a .l (long type), and
  stored the projected filesize into a .w (word type); then compared
  them, i.e.

    AnalyzeDisk[22m pa$
    ev.l=DiskFree[22m
    fsize.w={routine to work out size of file before saving}
    If[22m fsize<ev
      save file
    Else[22m
      show error message
    Endif[22m

  When I ran the program, it showed the error message, even though
  fsize was less than ev (which I had printed on screen).  The projected
  filesize was 771 bytes - ev was 4.5mb (yeah, I've only got a little
  Hard Disk, but it's not the size that counts).

  I changed fsize to a .l (long type), and it worked fine.

  It seems Blitz has a problem when comparing variables of different
  types.

  As it happens, I also worked out that fsize would need to be a long
  type to store the maximum possible filesize anyway, but it's worrying
  all the same.

  [1m[3mI'll watch out for that then...[23m[22m[22m
============================================================================
[7mCredits[0m
----------------------------------------------------------------------------
  All programming, sampling*, level design, and graphics by Vic E Babes.

  *Actually, I knicked two samples.

  Software used[22m
  Blitz Basic 2.1
  PPaint 6.5
  Imagine 3
  Personal Fonts Maker 1.2             (for creating the Editor's font)
  TypeSmith 2.5b      (for creating objects to load as Imagine splines)
  WinDat (for the sampling on my dad's PC - it's good for sampling.
          Did you know that if you choose a screen blanker in Windows 95
          (which I admit are pretty cool - especially the 3D-text clock)
          and then enable background disk-scanning whilst the computer
          is idle, the screen blanker comes on, the disk-scanner checks
          the floppy drive, then the blanker goes off because it thinks
          there is disk activity, and that the computer is no longer
          idle - despite the fact that these options are set in the
          same interface!  I could tell you more, but I won't bore you).

  [1m[3mI got a 4th Rainbow on Rainbow Islands[23m[22m[22m
============================================================================
[7mThe Game[0m
----------------------------------------------------------------------------
  George and the Repton-clone requires an AGA Amiga.  There will be a five
  second delay before it runs, to ensure disk-activity has finished.  This
  game is designed to run in PAL mode, but there is no FORCEPAL used, so
  NTSC users beware!

  George and the Repton-clone is a clone of an old BBC game (later released
  on the ZX Spectrum) Repton 2.  It is not a Boulderdash-clone, as I played
  Repton before Boulderdash, and considered Repton to be far better.

  Repton 1 was more like Boulderdash.

  Changes to the original - the levels are different, there are no dragons,
  or eggs, as I considered these a waste of binary.  There are no meteors,
  as these were annoying; you can now scroll over the map to have a look
  around; you don't have to collect all of the earth; and maps are various
  shapes and sizes.

  Although I've written a few intuition programs in Blitz Basic, this is
  the first program I've written that uses Blitz mode, and was more of
  an exercise in programming than anything else.

  Controls[22m
  Use the joystick to move George around.

  Press and hold the fire button, and George will take his map out - now
  move the stick around and you can scroll around the level.  Let go of
  the fire button to return to George.

  If you get stuck on a level, press the Left-Mouse-Button to kill
  yourself.

  Press the Right-Mouse-Button to quit to the main menu.

  Object[22m
  You start on the main level, which contains a number of teleporters
  leading to the other levels.

  The object of the game is to collect all of the diamonds on each level,
  and then reach the exit, which will take you back to the main level,
  which you should clear of teleporters.  This makes the game slightly
  less linear, and allows you to practise harder levels - you don't have
  to do the levels in order, but you may block the entrance to some
  levels if you don't.

  The first few levels are designed to give you the basic idea of how
  to play.

  Boulders and diamonds roll off surfaces that are not flat (including
  each other).  Some levels contain 'Feelers' (never knew their real name)
  who roam around the levels, and you have to get these into cages.  When
  a feeler gets caught in a cage, it will turn into a diamond.

  Feelers 'feel' their way around the walls, as they can't see.  They will
  always try to keep the wall to their[22m left, so if they find
  an opening to their[22m left, they will go through it.

  There was an algorithmic-bug in the orignal Repton 2: if a feeler was
  going around a boulder, and that boulder suddenly fell away, the feeler
  no longer had a wall to its left, so it would go around in circles, and
  you couldn't finish the level.  I have altered the algorithm slightly
  to try to account for this.  If a feeler is left stranded in mid-air, it
  will continue in the direction it was originally going, until it hits a
  wall, at which point it will continue as normal.  This does mean that
  feelers can occupy the same space - so don't stand next to a cage
  waiting for a feeler to enter it, unless you're certain there aren't
  two feelers there.

  You can die if a diamond or boulder falls on your head, or if a feeler
  touches you.

  If there is a boulder above your head, you can move to the side, and then
  move back, as it falls, in order to push it.

  The number of lives you have is indicated at the top left, next to the
  heart shape.  The number of diamonds remaining on the current level is
  shown below this.

  Blitz is not very good at describing the use of Sprites on AGA machines,
  so I have been unable to use all but one, which displays your lives.
  However, I haven't got the faintest idea how to change it's colours, so
  this information will be displayed according to your pointer prefs.
  If you haven't changed your pointer's colours, this should be fine, but
  even if you have, you have probably kept the shades in the same positions.

  I wanted to finish this game as soon as possible, so now I can have a
  longer look at using sprites - and perhaps write a more interesting
  game.

  Options[22m
  There used to be two options on the options screen:

  PLAY: Choose between normal or custom levels (if loaded).  If the
  custom levels are loaded, this will default to custom, as it is
  generally assumed that if you've loaded the custom levels you want
  to play them, and therefore don't want to have to state this in
  the options menu.  You won't be able to alter this value if the
  custom levels are not loaded.

  Unlike the main game, which has a main level with a number of
  teleporters that take you to the other levels, the custom levels
  will simply be played in order.

  SPEED: I removed this option, as I recently got a Typhoon Accelerator
  and can now see that this option was inadequate, I have now timed the
  action.  I did do this originally, but the variable that holds the
  number of "ticks since machine start-up" overflows back to zero, so
  it kept crashing after ten minutes.  I could have fixed it at the
  time, but didn't through laziness.  The game should now run at 25fps
  on all processors.

  [1m[3mSo that's the game...[23m[22m[22m
============================================================================
[7mGeorgeEd[0m
----------------------------------------------------------------------------

                           GeorgeEd (4-8/10/98)[22m
                          by  Harlequin Software
                            in Blitz Basic 2.1
             For creating maps for "George & the Repton-clone"

               [1m[3mRequirements[23m[22m : Font

               [1m[3mWhat   [23m[22m : is it?
               [1m[3mHow    [23m[22m : do I use it?
               [1m[3mLoading[23m[22m : custom levels into the game.

               [1m[3mBugs [23m[22m : ?

               [1m[3mOther uses[23m[22m : for this program

               [1m[3mWARNING   [23m[22m : if copied from a CD

  The game doesn't check the maps when it loads them, so the onus is on
  you to ensure that they are fully tested in the editor, before trying
  them in the game.

               [1m[3mSo that's the Editor...[23m[22m[22m
============================================================================
[7mLoading[0m
----------------------------------------------------------------------------
  There are a number of ways to launch the game with the custom levels:

  A
  If the .dat file has an icon - click on the executable to highlight it,
  then double click the .dat file.

  B
  If the .dat file has an icon - alter it's tooltype - click on the .dat
  icon to highlight it, press Right-Amiga + I to bring up the Icon
  Information, then type "George" in the 'Default Tool' gadget.  You can
  now simply double-click the .dat file to run the executable with the
  custom levels.  This won't work if the .dat file is in a different
  drawer to the executable, as the executable expects to find the GFX
  and SFX in the current directory.

  CORRECTION: the above paragraph previously told you to
  type "George" in the 'ToolTypes' - I meant 'Default Tool' - sorry
  if this caused anyone any trouble - but I think most people would
  have known what I meant.[22m

  C
  From the CLI, type "George <name.dat>" where name.dat is the name of
  the .dat file.  You can also put this in ToolsDaemon.

  [1m[3mSo that's loading...[23m[22m[22m
============================================================================
[7mWarning[0m
----------------------------------------------------------------------------
  If you copy this program from a CD, it may be that the W and D bits
  will be cleared - the Editor does not check to see if files are
  WRITEable, and will crash if it tries to write to a write-protected
  file - so make sure the example.dat file is write-enabled if you
  alter it and want to save it.

  If you don't know how - click on it's icon to highlight it - press
  Right-Amiga + I, then click the checkboxes for Writeable and Deleteable.

  [1m[3mRight-oh...[23m[22m[22m
============================================================================
[7mBugs[0m
----------------------------------------------------------------------------
  I spent an hour trying to track down a bug I thought I had that
  meant my program didn't free-up 560 bytes of memory the first time
  it ran.  I recompiled an executable several times with bits taken
  out to find out what was causing it - I even left out the loading
  of the font at one stage.

  I left the icon 'out' and put a cli window at the bottom of Workbench;
  Did an AVAIL TOTAL FLUSH;
  Ran the program;
  Quitted;
  Did another AVAIL TOTAL FLUSH
  Was 560 bytes short
  Ran the program again;
  Did another Avail Total Flush
  Still only 560 bytes short - not 1120, as I would have thought.

  After an hour of doing my head in, it suddenly occurred to me to click
  on the program's icon, before doing the first flush.

  Clicked on icon so that it was selected;
  Did AVAIL TOTAL FLUSH;
  Was 560 bytes short;
  Doh!

  I vaguely remember reading (possibly on the Blitz-list) that another
  user was experiencing similar problems when testing his program, and
  don't believe that this scenario was offered as a possible cause.

  However, this does highlight one of those unknown features of Workbench
  that make it so elegant - it doesn't load the 'selected' icon unless it
  is required - thereby saving on memory.  It's these little things that
  you don't normally notice, that makes Workbench such a joy to use.

  [1m[3mCool...[23m[22m[22m
============================================================================
[7mLegalities[0m
----------------------------------------------------------------------------
  Distribution:[22m
  These programs are freeware.  Do with them as you will - though only a
  nominal fee, if any, should be charged for distribution.  All files
  should be kept together, and remain unaltered, they are:

    George[22m          : the game
    GFX[22m             : the graphics drawer
    SFX[22m             : the sound drawer
    GeorgeEd[22m        : the editor/tester
    Example.dat[22m     : an example mapfile to load into the editor
    George.font[22m     : the font used by the editor
    George.Guide[22m    : this guide

  Disclaimer:[22m
  I was on holiday at the time, if they cause any damage to you or your
  machine.

  [1m[3mSuper...[23m[22m[22m
============================================================================
[7mProgrammers[0m
----------------------------------------------------------------------------
  It occurs to me that this program could be used for other purposes, all
  you need to do is redefine the George font to suit your purposes.  If
  you have a bitmap font editor, you can change characters 160 to 194.

  So if you wanted to use it as a circuit-board designer (for example),
  you could recreate the George font with the required circuit images
  (though I should add, I know nothing about designing circuit boards).
  One thing you will need to consider, however, is the fact that some
  gadgets are disabled once you have used a certain number of them.  I
  won't list the gadgets and their ascii value here, as you can see for
  yourself in a font editor.

  Also, I wouldn't attempt to use the Test button if I were you.

  The structure of saved files is:

  GEORGE      ;for error checking when loading
  n1          ;number of maps in file (max 50)

[FIRST MAP]   ;this line is not in the file
  n2          ;width of the map
  n3          ;height of the map
  n4          ;George's X start position (0 if undefined)
  n5          ;George's Y start position (0 if undefined)
  n6          ;Number of diamonds in this map
  Text$       ;a line of text containing the characters for the
              ;first line of the map (characters between 160 and 194
              ;plus character 32 for spaces.  The length of this line
              ;depends on the map's width.
  Text$       ;the next line of the map as above - the number of these
              ;lines will depend on the map's height.  So if the height
              ;of the map is 10, there will be 10 lines.
  n7          ;number of feelers (0-8)

  [n8         ;these lines will only be present if the number of
   n9         ;feelers is greater than 0
   n10]       ;n8=Feeler X pos, n9=Feeler Y pos, n10=Direction (0-4)
              ;these three lines will be reproduced for however many
              ;feelers there are at n7
[NEXT MAP]    ;then the next map starts as at n2 above

  As far as the characters in the map are concerned during the game, 158
  is deleted from the value of the character to get the shape number - so
  earth is character 160, but in the game, shape 2 is earth.  Except for
  spaces, which are shape 0 in the game.  The reason for the ordering of
  the graphics in the game is for speed purposes when checking falling
  boulders/diamonds.

  [1m[3mSo that's other uses...[23m[22m[22m
============================================================================
[7mRequirements[0m
----------------------------------------------------------------------------
  Requirements:[22m

  AGA Amiga - at least the game needs one - the editor will probably work on
  any Amiga with WB 2.0 and above

  The program also requires the George font in the fonts drawer - this
  contains the graphics (for the buttons) in the latter half of the
  character set (easier than creating shape gadgets).

  [1m[3mOkay...[23m[22m[22m
============================================================================
[7mWhat is it?[0m
----------------------------------------------------------------------------
  This intuition-based map-editor/tester is for designing levels for
  "George and the Repton-clone," a game that should be included with
  this program.

  [1m[3mSo that's what it is...[23m[22m[22m
============================================================================
[7mHow do I use it?[0m
----------------------------------------------------------------------------
  [1m[3mThe Map Area        [23m[22m : Printing/Scrolling/Resizing
  [1m[3mThe Graphics Buttons[23m[22m : Scenery/Objects
  [1m[3mTesting your map    [23m[22m : The Help key
  [1m[3mThe Other Buttons   [23m[22m : Load/Save/Add/Delete etc.

  Although the normal levels are played via a main level with a number
  of teleporters leading to the other levels - custom levels will simply
  be played in the order that they are saved, one after the other.

  [1m[3mSo that's how I use it...[23m[22m[22m
============================================================================
[7mThe Other Buttons[0m
----------------------------------------------------------------------------
  Load[22m
  Will bring up a standard file requester with .dat[22m extensions
  shown - as all files saved have this added to the filename, unless the
  filename already has it.  Because maps are different sizes, and have
  different numbers of feelers in them, file sizes can be just about
  anything, so for error-checking purposes, each map-file will have the
  word George at the start, followed by the number of maps in the file.
  So if you want to crash your system, you can create a file with these
  at the start, and the program will attempt to load it.  I wouldn't
  recommend it, though.  Loading maps will erase all maps currently in
  memory.

  Save[22m
  Will bring up a standard file requester with .dat extensions.  Warnings
  will be given for write-protected disks, and if there is not enough
  room to save the file.

  Append[22m
  Will allow you to load a file in, and add it to the end of the current
  maps.  So if you have three maps in memory, and append four maps from
  disk, you will have seven maps.  As you can only create a maximum of
  50 maps in one file, appending will only load upto this maximum.  So
  if you have 45 maps in memory and append 6 from disk, only 5 will be
  appended - a message will appear in the message area to advise you of
  this.  This gadget will be disabled when you have 50 maps in memory.

  Clear[22m
  This button will clear the current map, and resize it to 30x24.  There
  is no UNDO feature.

  Delete[22m
  This gadget will be disabled until you have more than one map.  It will
  delete the current map.  There is no UNDO feature.

  Arrows[22m
  The arrows allow you to navigate the maps you have in memory.  The
  first arrow will move you to the next map: the second will take you
  to the last map.  The third arrow will take you to the first map:
  the fourth will move you back one map.  These will be disabled/enabled
  as necessary.  Moving to new maps will also disable/enable some of the
  graphic buttons, depending on the contents of the map.

  Add[22m
  You can have upto 50 maps in one file.  If you have less than 50,
  clicking on add will add a map to the END of the file (you can move
  it when you have decided where it falls in the level of difficulty).
  This gadget will be disabled when you have 50 maps.

  Copy[22m
  I would have liked to have done a Move button, however, although Blitz
  Basic allows you to sort linked-lists, the command SortList requires
  parameters that are not sufficiently explained in the manual, and
  experimentation with it has failed.  For this reason I have created the
  Copy button.  Clicking on copy will copy the current map into memory -
  the Insert button will then be enabled.  You can now delete the current
  map, move to where you want it, and insert it at that position.

  Insert[22m
  Clicking on Insert will cause a previously 'copied' map to be inserted
  AFTER the current map.

  Errors[22m
  Clicking on Errors will perform the same error-checks, and give the
  same messages as described with Testing your map [q.v.].  The program
  will not check that you have a perimeter wall all the way around the
  map.  This won't matter in the game, as there will be an 'unseen'
  perimeter anyway - but you should include one so that the player has an
  indication of where the edges are.

  Clear all[22m
  Will clear all maps in memory, you will be warned if you have made
  changes without saving.  There is no UNDO feature.

  Quit[22m
  You will be warned if there is any unsaved data before quitting.

  There are no menus so that the right-mouse button could be used, without
  the need for a second window.  Also, the size of executable intuition
  programs in Blitz is notorious, because it links all the commands from
  any library you use, even if you don't use those individual commands.
  But then Blitz was intended for game writers, and I think they
  concentrated on that side of things.  Other users have brought out
  third-party libraries that make the size of executables smaller, but
  I haven't had a chance to look at them yet, and wonder whether they
  contain all of the necessary commands - because if they don't - I may
  need to use at least one command from Blitz's libraries, which would
  defeat the object of the new ones.

  [1m[3mSo they're the other buttons...[23m[22m[22m
============================================================================
[7mTesting Your Map[0m
----------------------------------------------------------------------------
  When you want to test a map, press the HELP key.

  You don't need to finish a map to test it, but before you can test
  the map, there will be a couple of error-checks, and the results of
  these will be displayed in the message area at the top.

  First: you will be warned if there is no start position.

  Second: you will be warned if there is no exit.

  Third: you will be warned if there are not an equal number of cages
         and feelers.

  Once these tests have been passed, you can use the cursor keys to move
  George around the map.  Any feelers will be printed in white.  The
  number of diamonds remaining will be shown in the message area at the
  top.

  Boulders and feelers will not move unless you press a key[22m, so if you
  don't want to move George, press any key other than the cursor keys
  and HELP.

  You can be killed by falling diamonds/boulders, but feelers can't kill
  you (they'll just go around you).

  Make sure that everything is enclosed within a perimeter wall - if a
  feeler goes off the map, the test will stop and you will be given an
  error message (in most instances - it may crash in others that I
  haven't found - as this can't happen in the game, and I wanted to
  use the same engine as far as possible).

  Boulders move two squares for each one that George moves, except in
  one instance.  Any boulder that was above George when he moved will
  only drop one square - this is so that George can push it as it falls,
  which is necessary on some levels in the game.

  A test will end when, either:

    You die.
    You reach the exit and have got all the diamonds.
    You press the HELP key again.
    Your Amiga crashes (only joking, just listing all possibilities).
    There is a power-cut (which could get silly, really)

  If you die, a message will appear in the message area asking you to
  press a key, so that you can see what happened before the map is
  restored to its original state.

  Reaching the exit or pressing HELP will automatically restore the
  map.

  If you have tested a map, and then flip it, you ought to test it again,
  as boulders fall with a bias to the left, so your map may not be
  completable(?) the other way around.

  If boulders/diamonds have a choice of falling left/right, they will
  always fall left.  If there is more than one boulder that can fall
  into the same hole - right will fall first, left second, and above
  third.  Though if right is replaced as it falls, right will fall
  again on the next pass.  i.e. it tests positions in the array in
  the following order:

            987
            654
            321[22m

  So if 2 was a hole, and 6 and 4 were boulders, 4 would fall in.

  Basically, the map is scanned from the bottom right corner to the
  left, moving up a line each time, to see if a boulder/diamond can
  fall.  Originally I started creating a linked list of falling
  objects, but this was far too complicated, and affected timing,
  so the entire map is scanned twice from the bottom up, in the time
  it takes George to move from one square to the next.  I did have it
  scanning eight times until I realized that this meant George couldn't
  push a boulder that had been above his head as it fell, because by the
  time he turned around, it was long gone - which meant some levels
  couldn't be completed.

  [1m[3mSo that's how I test a map...[23m[22m[22m
============================================================================
[7mThe Map Area[0m
----------------------------------------------------------------------------
  The map area is indicated by a box outlined in white.

  Moving the mouse over this area will cause the cursor to appear,
  showing the current graphic, and the X,Y position will be shown in
  the title-bar.

  To print a graphic, press the Left-mouse-button (LMB).  To delete
  a graphic, press the Right-mouse-button (RMB).  For continuous
  printing/deleting, keep the mouse-button pressed and move it around.

  Map number[22m
  The current map's number will be shown bottom-left of the screen,
  and the total number of maps will also be indicated.

  Scrolling[22m
  To scroll the current map around the area, press Shift[22m and the
  relevant cursor key.  Shift was added to this function as the cursor
  keys are used for testing the game, and I found myself scrolling the
  map when I thought I was testing it.  Anything scrolled off the map
  will be lost.

  Map-size[22m
  To resize the map, press CTRL[22m with the relevant cursor key.  The size
  of the map will be shown on the bottom line of the screen.  The maximum
  size for a map is 30x24 (3x3 screens in-game): the minimum size for a
  map is 10x8 (1 screen in-game).  Resizing a map will cause data that
  was in the larger area of the map to be lost.

  Once I'd included the SHIFT key with the cursor keys for scrolling, I
  found myself scrolling when I wanted to resize - for this reason, any
  other keypress will put a message in the message area to remind you
  what the keys do.

  [1m[3mSo that's the map area...[23m[22m[22m
============================================================================
[7mThe Graphics Buttons[0m
----------------------------------------------------------------------------
  Along the top of the screen are all the graphics buttons; clicking on
  one of these will change the current graphic.  The Blank line above
  these buttons is the message area, and this will indicate what your
  chosen graphic is - so if you click on the boulder button, the message
  area will state "Boulder".  The cursor will change to reflect your
  chosen graphic.

  The buttons are:

  Earth & Boulder[22m
  Top-left is Earth, and below that is the boulder.

  Diamonds[22m
  Next to these are four diamonds; clicking on one of these will tell you
  what colour it is, and how many diamonds you currently have on the
  current map (as the maximum number of diamonds per map is 99).  Once you
  have 99 diamonds (including cages - see below) the diamond buttons will
  become disabled, and the cursor will become earth.  deleting a diamond
  will enable the diamond gadgets again.

  Walls[22m
  After the diamonds come the various wall-pieces, until you get to the
  cage and the teleporter.

  Cages[22m
  Once you have 8 cages on the map, the cage gadget will become disabled
  as you can only have a maximum of eight.  Deleting a cage from the map
  will cause the gadget to become enabled again.  As cages turn into
  diamonds, the cage button will also become disabled if you have 99
  diamonds.  The cursor will change to earth once you have the maximum
  number of cages - this applies to all gadgets where there is a maximum
  involved.

  Teleporter[22m
  Once you have put the teleporter on the map, the teleporter gadget will
  become disabled - deleting the teleporter will cause the gadget to
  become enabled again.

  George[22m
  Next to the cage button is the George button, which looks like a person
  (or as near as you can get with the pixels available).  Putting George
  on the map indicates the start position, and the George gadget will
  become disabled - deleting George will enable the gadget again.

  Feeler[22m
  Below George is the Feeler gadget.  Again, this will become disabled
  once you have eight Feelers on the map, as this is the maximum.  Deleting
  a feeler will cause it to be enabled again.  The radio buttons to the
  side of the feeler button indicate the feeler's initial direction at
  the start of the game - the dot next to each arrow indicates that there
  should be a wall next to the feeler at that position, as the feelers try
  to keep walls to their left.  The direction stored for each feeler depends
  upon what is showing in the radio buttons when you click on the map - not
  on the feeler button.  The B[22m in these radio buttons means that the feeler
  is initially boxed-in, and so has no direction.  During the game, it will
  test to see if it is no longer boxed in, and set off in a new direction
  if possible.   This is necessary for aesthetic purposes that I won't go
  in to, but you'll see in the game what will happen if a feeler has a
  direction when it is boxed-in.

  Flip[22m
  Below the teleporter button is a double arrow <-->[22m.  Clicking on this
  button will flip the map from left to right.  Relevant wall-parts will
  be changed to their opposite to reflect the change.  Also, any feelers
  with an initial direction of up, will be changed to down, and vice versa,
  as the walls will now be on the opposite side of them.  NOTE: Boulders
  and diamonds fall with a bias, so it might not be possible to complete
  some maps when they are flipped.

  1UP[22m
  Next to the flip button is the 1UP (extra life).  You can put as many
  extra lives in the custom levels as you like, but the number of lives
  given to the player will never go above 9.

  Scrolling graphics off the map will cause relevant gadgets to be enabled
  again if their maximums had been reached.

  [1m[3mSo they're the graphics buttons...[23m[22m[22m
============================================================================
