
***************************************
* Makin'Magic Fractals (MMFrac) Help. *
***************************************

First of all please note that much of this help refers to functions
that are only available for standard 2D M/J fractals, so don't
expect all functions to be available for lanscape/plasma fractals or
for Solid 3D fractals.

Version2.4 6th August 2000

MMFRAC 2.4 - Iterative transformation now available for all 2D M/J fractals.
           - Fixed a bug in the "ATN" (decomposition) colouring modes.
             NB. This means that some old parameter files using these
             colouring modes may now render differently than under previous
             versions of MMFrac, especially when using the non-standard
             bailout tests.
           - The bigscreen render now has a maximum size of 8000 wide, this
             does require a large amount of RAM as the image is rendered to
             an offscreen buffer rather than direct to disk - the larger you
             set the bigscreen, the more RAM required,

See the * MMFrac V2.4 NEW Features * section for details.

Version2.3 6th May 2000

MMFRAC 2.3 - Bump-lighting now avalable for all 2D Mandelbrot/Julia fractals,
             works for both divergent and (point) convergent fractals.

See the * MMFrac V2.3 NEW Features * section for details.

MMFRAC 2.2 - Correct Hypercomplex 3D fractals added (old mistakes renamed)
           - 10 new 2D fractal types (3 user-fn)
           - 16 new solid-3D fractal types
           - added solid-3D cut to plane or sphere allowing bump-mapping
           - added (pseudo) parallel projection allowing (limited)
             use of mouse magnify for the solid-3D fractals
           - new "auto" detail selection for solid-3D fractals allows high
             detail at much faster rendering speed

See the * MMFrac V2.2 NEW Features * section for details.

MMFRAC 2.1 - Now with Phong shading for the "Solid 3D" fractals.

See the * MMFrac V2.1 NEW Features * section for details.

MMFRAC 2.0 - Orbit Traps for 2D M/J fractals and an optional
"bigscreen" render - up to 4800*3600. Also you may now save the
current palette out to parameter files.

See the * MMFrac V2.0 NEW Features * section for details.

MMFRAC 1.9 - More Solid3D with a choice of lighting method in the
lit BoF shading modes plus a 40% speed increase in rendering Solid 3D.

See the * MMFrac V1.9 NEW Features * and the
* MMFrac V1.8 NEW Features * and the
* MMFrac V1.7 NEW Features * sections for details.

MMFRAC 1.8 - Now with more SOLID 3D fractals including
quaternions and hyper-complex fractals.

See the * MMFrac V1.8 NEW Features * and the
* MMFrac V1.7 NEW Features * sections for details.

V1.7 MAJOR NEW FEATURE WAS SOLID 3D FRACTALS
READ THE * MMFrac V1.7 NEW Features * SECTION FOR DETAILS (below).

Please note that the additions to the new V1.7 are currently ONLY
documented in the * MMFrac V1.7 NEW Features * section !!

New features from V1.6 are also only documented in the V1.6 section.

Also the realtime 3D and landscape/plasma are only documented in the
* MMFrac V1.6(delta) NEW Features * section.

*** Tip ***
***********

Major features are now marked as above.

*** Tip ***
***********

You can view this file using "MMFrac ?" on the commandline or
by pressing "h" in MMFrac.

*** Tip ***
***********

If viewing in MMFrac press "h" or escape to exit help, to scroll up
and down use pgup/pgdn or up/down or space. When you re-enter help,
the position will be the same as when you left it.
While viewing help you may also use "home" to go to the start.

Please ignore any errors in here for now as I am still concentrating
on getting the program extended. Also please excuse the fact that
this help could be far better - it will improve !
Keep checking my site for upgrades to the help and/or the program.

Web address: http://skyscraper.fortunecity.com/terabyte/966/

Alternate:   http://website.lineone.net/~dave_makin/

Please E-Mail me if you find bugs in the program.
Try to reproduce the bug you found and report the
parameters/events that cause the bug to me at:

E-Mail: makinmagic@themutual.net

NB. There can be visible errors in the 2D fractals when periodicity
checking is enabled (non-zero period limit), when this occurs you need
to reduce the period limit, or turn it off (zero). This applies
especially when you have convergent bailout enabled.

MMFrac was started on 1st April 1999 !
I hope you don't find it an April fool's joke !!

(c) Makin' Magic 1999/2000

Author/s:
 Main Code: David Makin (of Makin'Magic/Parys Technografx)
 The VESA interface bits: James McAdam & Dave Makin (of Parys Technografx)
 PCX algorithm/code example: Danny Hartley (of Magnetic Fields)

I should say that MMFrac was inspired mainly by XAOS with other ideas
later taken from Fractint and UltraFractal NB. Ideas that is, NOT code.
All the fractal code was written from scratch !!

 NB. MINIMUM SPEC
          486DX 100MHz
          Floating Point Hardware ESSENTIAL.
          (FPU emulation does actually work if you have it - just SLOWLY !)
          386DX NOT recommended !
          386SX/486SX or below are NOT supported without FPU emulation.
          I think at least 16Mb of ram is required ?
          (maybe more in Windows but the program may work with
          4Mb - I have no way of checking ! You can reduce
          max. memory requirements - see "command line" below)

     MMFrac will run OK on any Pentiums.
     MINIMUM RECOMMENDED SPEC
          Pentium 200MHz
     BEST SPEC
          ???? eg. PENTIUM 3 1Ghz, XEON, AMD K7(athlon) ???

 NB. Your video MUST be at least VESA2 and your card MUST support
 high-colour OR true-colour for MMFrac to work. If you can't get it to
 work in "true" DOS then try installing Univbe or run MMFrac from a
 Windows Dos box. (If you use Univbe please use a test program
 to check the video modes work and that your monitor copes ok)

 NB. Mouse driver MUST be loaded in "true" DOS mode.

 Please note by "Windows" I mean Windows95, 98, 2000 or Me only ! (or NT?)
 I don't know anything about earlier versions.

 NB. In Windows 2000 (or NT?) you MUST run MMFrac from DOS full-screen mode,
 as it will crash if you try to run from a DOS window. Also I highly
 recommend you create a full-screen DOS shortcut with the "ALT+Enter"
 function disabled, as pressing ALT+Enter while running MMFrac in W2000
 will also crash the program.
 Please note that this may also be true in Windows Me - on which you'll find
 the original DOS-prompt inside your Windows folder.

 NB. When running from a Windows Dos box you should try first with the default
 DOS XMA memory setting ie. "auto", however if memory allocation problems are
 encountered then try setting the DOS XMA memory allowance to the largest
 value you can.

 If you don't have an MS-Dos icon on your desktop then (in Windows):

 1. Create an MS-Dos prompt shortcut on your desktop:
    You will find the MS-Dos prompt in "Windows\Start Menu" or "Windows".
    Right-drag it onto your desktop, then left-click on "create shortcut".
 2. Modify the properties on the shortcut:
    Right-click on the shortcut then left-click on "properties".
    Now left-click on "memory".
    Set the value in the Extended (XMS) Memory total box to auto or as high
    as you can.
 3. Use this icon for Dos-Shells for MMFrac.

 4. If in Windows 2000 (or NT?) remember to also set the shortcut to run DOS
    full-screen AND disable the "ALT+Enter" switching function.

(You could do the above for a shortcut to MMFrac itself but you
would have to modify any commandline parameters in the .PIF file,
also this may not work in Windows Me.)

*****************
* Command line. *
*****************

 MMFrac f fractalfile
    Set path\filename for MMFrac fractal formulas
    eg. "MMFrac f formulas\MMFrac.mff"

 NB. MMFrac formulas are not yet implemented.

 MMFrac c colourname
    Set path\filename for MMFrac colour files
    eg. "MMFrac c e:\MMFrac\colours\MMFrac.mfc"

 MMFrac s savename
    Set path\filename for saving fractals (.bmp, .pcx or .tif)
    eg. "MMFrac s gfx\image1"

 MMFrac x videomode
    Set max videomode 1-7 (320a/320b/640/800/1024/1280/1600)
    (original default is 3 ie. 640)
    eg. "MMFrac x 7"

 MMFrac z colourmode
    Set max colourmode 0-2 (hi, true, true with direct RGB)
    (original default is 0 ie. hi - 16bit)
    eg. "MMFrac z 1"

 MMFrac o screenwidth
    Enable "render to bigscreen" with screenwidth up to 8000
    eg. "MMFrac o 4096" will set the size to 4096*3072.
    Use Alt plus F8 to render to the bigscreen buffer -
    Save a "bigscreen" image using Control plus "s"
    NB. Images are rendered to a RAM buffer and saved as plain "BMP" files
    so a maxsize 8000*6000 will require over 140Mb of RAM (and drive space).

 MMFrac v videomode
    Set start videomode 1-7 (320a/320b/640/800/1024/1280/1600)
    (original default is 3 ie. 640)
    NB. If the value is greater than max videomode then MMFrac will use the
    max videomode value for the videomode.
    eg. "MMFrac v 4"

 MMFrac d detaillevel
    Set 3D max. detail level, values 0 to 15 (0 to 3 is off ie. no 3D)
    (original default is 8)
    eg. "MMFrac d 15"
    NB. This is for the realtime landscape 3D NOT the solid-3D fractals.

 NB. You may concatenate the above
    eg. "MMFrac c colours\mypal.mfc f e:\MMFrac\formulas\new.mff"
    OR  "MMFrac v 2 s e:\gfx\fractal1"
    OR  "MMFrac x 7 z 2 v 3 o 4800"

 Some command line parameters are for convenience only
 since the names and video mode may be changed in MMFrac.
 The MAX videomode and MAX colourmode parameters may only be set
 from the commandline as these define startup memory allocation.
 The bigscreen rendering can only be enabled from the commandline.
 The 3D max. detail level may also only be set on the commandline.
 If MMFrac exits with a memory allocation error then try reducing
 the max videomode and/or the max colourmode and/or bigscreen width.
 (If memory allocation problems still occur in a Windows Dos-shell
 then try running in "true" Dos mode. If you want higher settings
 than you can get in Windows, also try "true" Dos and vice-versa)

 Please note, the colour files are currently only ".txt" files in
 disguise so you may edit them in any text editer - the ".mfc"
 extension is for your recognition only.
 See the "MMFrac.mfc" file for info on format.

 NB. If you create palettes with large numbers of "nodes" then
 the colourfiles will get rather large. (See edit colours below)

 On exit of MMFrac the current video/colourmode settings are saved in
 the "MMFrac.cfg" file. You can still change them next time by
 using the appropriate command-line options. The text colours are also
 saved in the cfg file. Currently the max detail level is not saved.


LATEST ADDITIONS **************************** LATEST ADDITIONS
LATEST ADDITIONS * MMFrac V2.4 NEW Features * LATEST ADDITIONS
LATEST ADDITIONS **************************** LATEST ADDITIONS


1. New Iterative Transformation for all the 2D Mandelbrot/Julia fractals.
   This addition was inspired by IFS, where a number of different transforms
   are iterated to produce fractals, I wondered what would happen if an
   iterative transform were performed on "Z" prior to the main formula in
   Mandelbrot/Julia style fractals so I added this option to MMFrac.
   To toggle "Trans" mode on and off use ALT+F10 - this is only available when
   in Mandelbrot/Julia mode.
   When enabled "(Trans)" will appear after "Mandelbrot/Julia" in the info.
   There are 7 new parameters available for setting the transformation to be
   used and you may set them after you finish editing the main parameters.
   The parameters are all floating point fields:
   a. Rotation.
      This is a simple rotation angle which sets a rotation to be applied in
      addition to the generalised 2*2 matrix transform.
   b. Matrix Transform R0C0.
      Row 0 Column 0 of a generalised 2*2 transformation matrix.
      This parameter should be set to 1.0 for the identity matrix.
   c. Matrix Transform R0C1.
      Row 0 Column 1 of a generalised 2*2 transformation matrix.
      This parameter should be set to 0 for the identity matrix.
   d. Matrix Transform R1C0.
      Row 1 Column 0 of a generalised 2*2 transformation matrix.
      This parameter should be set to 0 for the identity matrix.
   e. Matrix Transform R1C1.
      Row 1 Column 1 of a generalised 2*2 transformation matrix.
      This parameter should be set to 1.0 for the identity matrix.
   f. X Translation (real).
      The translation to be applied to the real part of Z.
   g. Y Translation (imag).
      The translation to be applied to the imaginary part of Z.

Please note that loading an old parameter file will reset the Transformation
to "Identity" ie. no transform.

2. Bugfix in the ATN (decomposition) colouring modes.
   There was a bug that meant these colouring modes weren't rendering
   correctly when using the non-standard bailout conditions.
   Parameter files from older versions of MMFrac using these colouring modes
   may produce different images in MMFrac2.4, especially if they use the
   non-standard bailout conditions (you can always use the older version of
   MMFrac to reproduce the original image).

3. The bigscreen may now be set at up to 8000 pixels wide ie. up to 8000*6000.
   See the command-line options for details of use.
   The bigscreen is always in a ratio of 4*3.
   The amount of RAM/disk-space required for a bigscreen image may be
   calculated using:

   size = 9*width*width/4 (bytes)

   Please remember that this is in addition to the base RAM requirements for
   MMFrac - you can of course reduce these, again see the commandline section.

****************************
* MMFrac V2.3 NEW Features *
****************************

1. Bump-lighting now available for all the 2D Mandelbrot/Julia formulas.
   This requires a true-color display mode and "direct-colouring" to be
   enabled.
   Enable "direct-colouring" using the commandline parameter "z 2".
   (see "Command line" above)
   To switch to Bump lighting you must first be in a true-color display mode
   and then press ALT+F9 (press ALT-F9 again to switch bump off).
   There are three new parameters for the bump lighting, these are "ambient
   level", "direction" and "elevation".
   These three parameters will appear subsequent to editing the main
   parameters.
   The ambient level sets the ambient light level and uses only the fractional
   part of the value you set ie. 0 <= x < 1, the direction and elevation set
   the direction and elevation of the light source in degrees.
   If you want to render and save a bump image larger than is possible due to
   video card limitations (eg. true color only available at up to 800*600)
   then you can use the "offscreen buffer" option to render larger images.
   eg. use "o 1600" on the command line to enable an offscreen buffer at size
   1600*1200.
   Use ALT+F8 to start rendering to the offscreen buffer and control+S to save
   the image, see the V2.0 NEW features section below for more details.

2. Extra options for random palette creation:
   Use shift+r to set a slower palette change.
   Use contrl+r to randomise biased to pastel colours.
   Use ALT+r to randomise biased to primary colours.
   Use ALT and control+r to randomise biased to secondary colours.
   Shift may be used in combination with ALT and control.
   NB. The choices are NOT stored in the undo/redo buffer !
   (switching to the current random palette with p or shift+p will use the
   last method selected when r was used)

****************************
* MMFrac V2.2 NEW Features *
****************************

1. First of all I apologise for the previous (v2.1) incorrect hypercomplex
   solid-3D fractal types, I made a mistake in the maths (one sign wrong).
   I have left the relevant fractal-types alone apart from their name being
   changed from Hypercomplex to "Hypermistake" so any parameter files using
   them will still produce the same results as in MMFrac v2.1.

2. There are now 3 new "user-Fn" 2D fractal types plus 7 other new 2D fractal
   types, these are:

   C*Fn(Z), Fn(Z)+Z+C, C*Fn(Z)+Z, the Henon function (as an M/J type)
   Polynomial Newton (max. degree 10)
   Polynomial Nova (max. degree 10)
   Z(1-Z)+C, C*Z^2-1, Z^3+C, Z^4+C

3. 16 new solid-3D fractal types (Mandelbrot/Julia for each):

   Hypercomplex H^2+C (correct)
   Hypercomplex H(1-H)+C (correct)
   Hypercomplex "Manowar" H^2+OH+C (correct)
   Quaternion C*Q^2-1
   Hypermistake C*M^2-1
   Hypercomplex C*H^2-1
   Quaternion "Lambda" CQ(1-Q)
   Hypercomplex "Lambda" CH(1-H)
   Quaternion Q^3+C
   Hypercomplex H^3+C
   Quaternion Q^4+C
   Hypercomplex H^4+C
   Quaternion Polynomial (max. degree 5)
   Hypercomplex Polynomial (max. degree 5)
   3D Mandelbrot/Julia Polynomial (max. degree 5)
   3D Mandelbrot/Julia Polyconstant (A1*Z^N+...+An*C*Z+F max. degree 5)

NB. Can any fractalers out there verify that the polynomial types are
    producing correct results (especially the 3D Mandelbrot/Julia ones) ?
    - I'm a bit concerned that they don't seem to match some Zplot results.

4. New "Minscan" distance for the solid-3D rendering, you can use this to
   cut a flat surface into your 3D fractal (or just to speed up rendering).

5. New "auto-detail" selection for the solid-3D fractals - just set the
   detail level to zero to enable it. In most cases this produces an accuracy
   comparable to an "old-style" detail value of around 300 (or more) at a far
   faster rendering speed.

6. New "pseudo" parallel rendering mode. To use this set the "Field of view"
   distance value to a negative magnification, eg. the entire Mandelbrot Set
   (in 2D) is normally viewed at a magnification of 0.25 so to use this value
   in solid-3D mode set the Field of View value to -0.25, use larger values
   (eg. -2) for higher magnification and smaller ones (eg. -0.1) for lower.

   NB. The BIG advantage of this is that you can use both single mouse-click
   and Box zooming when you are using this pseudo-parallel mode.
   (as well as the spacebar "move" function)
   The box-magnify is only available using the control key method,
   ie. no stretching. See the "In the Program" section for more details on
   Box-Magnify and spacebar move.
   Unfortunately you can't zoom in quite as much as is possible for the
   standard 2D fractals. This is because the parallel rendering is somewhat
   "fudged" and the (magnification) maths runs out of accuracy sooner, in
   fact the magnification reaches an upper maximum without distorting the
   images, just no longer achieving any further zoom.

7. New solid 3D conditions for the solid 3D fractals. You can now cut the 3D
   space to a sphere or a plane rather than producing a fractal solid.
   One advantage of this is that the render times come down to somthing more
   comparable to the standard 2D fractals.
   You can select a sphere as your "solid" or choose from 3 differently
   controlled flat planes.
   For these "3D-shapes" modes the min-scan and max-scan fields are
   used differently.

   For the Sphere, it's centre is always at the current target and the
   min-scan field specifies the sphere's radius - so it should be set to
   a value less than the distance to target !

   For the "CrotPlane" the plane is always perpendicular to the line-of-sight
   and the min-scan field specifies the distance of the plane from the
   "camera", hence setting this to the same value as the distance to target
   will use a plane through the target coordinates.

   For the "ZPlane" the plane is always perpendicular to the fixed Z-axis,
   through a Z-coordinate modified using the min-scan value.

   The "LrotPlane" is the same as the "CrotPlane" except that it is always
   perpendicular to the (adjustable) light direction - even when using
   "camera" lighting.

8. The new solid conditions (sphere/plane) have the option of choosing from
   "flat" or "bump" lighting. In flat mode the lighting is based solely on
   the geometric shape - ie. the sphere or plane.

   In the "bump" modes the lighting is also based on a bump-mapped value
   using the "iteration-density" at each point (the way the lighting is
   calculated for the "iteration" or "direction change" solid conditions).

   You can select from a number of different bump modes, allowing you to
   both reverse the bump direction or swap around the bump axes.

9. The max-scan value (unused for the sphere/plane flat-lit solids) is
   re-used in the bump-mapped modes.
   You can use it to modify the strength of the bump lighting with respect
   to the geometric lighting.

   Setting the max-scan to zero will use entirely bump-lighting, setting it
   to a value of 1 will use a 1 to 1 mix of bump and geometric lighting,
   using a value of 2 will use 2 parts geometric, 1 part bump etc.

   This is very useful in moderating the generally high-contrast difference
   in different areas when using the bump-lighting.

10. Please note that you can use the sphere or plane solid conditions in the
    pseudo-parallel rendering mode, hence allowing the mouse-zooming.

    In this mode only the "CrotPlane" will magnify truly correctly, the
    sphere will sort-of-roll to a new position as you use the magnify or
    move (space) functions because these involve a change of target.

    The "Zplane" and "LrotPlane" will both behave in a somewhat unpredictable
    manner under magnify/move.

11. You can now jump directly from the mouse coordinate on a 2D Mandelbrot to
    the 3D Julia Quaternion for that location for the following types:

    Mandelbrot: z^2+p    | q^2+c
    Breeder:    z(1-z)+p | q(1-q)+c
    Manowar:    z^2+oz+p | q^2+oq+c
    MulSub:     pz^2-1   | cq^2-1
    Lambda:     pz(1-z)  | cq(1-q)
    Cubic:      z^3+p    | q^3+c
    Quartic:    z^4+p    | q^4+c
    and Polynomial (complex coeffs) of degree less than 6

    To do this simply use shift plus "j" rather than just "j" when at the
    required location on the 2D Mandelbrot.

    (NB. only the X and Y values of the Quaternion constant will be set, the
    Z and W values will be unaffected so you may need to set them to zero
    manually. Also the 3D solid-condition and viewing settings will be as
    they were last time you created a solid-3D fractal)

    I recommend using the "switch-preview" to find an interesting Julia Set
    before pressing shift+"j".
    Switch-preview is available in 2D mode by holding down either "s" or "f"
    and moving around the screen with the mouse to view different "switched"
    fractals - see the "V1.6 new features" section below for more details.

12. The following are the parameter files included in v2.2:

    2D fractals

    abssub.mmp, biomorph.mmp, boneyard.mmp, cilia.mmp, oldleaf.mmp
    orbit1.mmp, orbit2.mmp, precious.mmp, sqtrap.mmp, thevault.mmp
    wisps.mmp, wispy.mmp, xmasrbns.mmp

    3D fractals

    wdmtl.mmp, abump.mmp, icecream.mmp, ex3d.mmp, bumpsphr.mmp

    All the parameter files are inside the params folder.

    NB. wdmtl.mmp and bumpsphr.mmp really require that "direct colour" mode
    is enabled and you are viewing them in a true-colour mode (see the
    command-line options above).

13. The example colour file "shades3d.mfc" inside the colours folder has been
    modified so that the palettes are set up to work reasonably well in phong
    direct colour mode - ie. with material parameters set up (see below for
    details).

****************************
* MMFrac V2.1 NEW Features *
****************************

1. Phong shading now available for the "BoF shaded" Solid 3D colouring
   modes, as well as a choice of plain "soft" or "hard" lighting and
   of "remote" or "point" light sources.

   Phong shading is available in all viewing modes but you only have
   complete control over the lighting/materials values if you enable
   "direct colour" mode by using the "z 2" option on the commandline
   and use a true-colour video-mode.

   To switch between the Solid3D lighting modes you must use the "Insert"
   key while editing the colouring field (which must be one of the BoF
   shaded modes), you can still get a single-colour image if required by
   setting the palette appropriately.
   Please read the "MMFrac V1.7 NEW Features" section for background
   information relating to setting the colouring for the "Bof-shaded" modes.

   If you are in a high-colour display mode, or you didn't enable "direct-
   colour" display mode using the "z 2" option then the Phong shading has
   a relatively poor colour-resolution and you are stuck with preset values
   for the lighting and the diffuse/specular characteristics of the material
   used for the fractal - images will generally seem like shiny plastic and
   colour/shade banding will be noticeable.
   This is because the 32768 software colour palette has to be used as a
   3-dimensional array (colour/diffuse/specular) and consequently the colour
   resolution is somewhat reduced. In fact to allow enough shades for the
   diffuse and specular shading, the colour palette is reduced to just the
   first 64 colours of the palette, the rest of the palette being calculated
   for the diffuse/specular lighting.

   If you enable "direct-colour" display mode and switch to a true-colour
   video mode then "direct-colour" rendering will be used when rendering
   "Phong".
   Now the colour/shade resolution is good enough to produce smooth images.

   In this mode you must use the software palette slightly differently than
   normal. As with "soft" or "hard" lighting the first 256 palette colours
   are the base material colours for the fractal but now you can set Phong
   control values using other sections of the palette:-

   Colours 256 to 511 specify the diffuse brightness of the part of the
   material specified by colours 0 to 255 respectively.

   Colours 512 to 767 specify the specular brightness of the part of the
   material specified by colours 0 to 255 respectively.

   Colours 768 to 1023 specify the specular concentration of the part of the
   material specified by colours 0 to 255 respectively.

   Colours 1024 to 1279 specify the ambient brightness of the part of the
   material specified by colours 0 to 255 respectively.

   Colours 1280 to 1535 are currently unused but are intended to specify the
   transmitted light brightness based on the material's transparency in a
   future version of MMFrac.

   Colour 1536 specifies the background ambient light level.

   Colour 1537 specifies the "direct-light" brightness of the remote or point
   source illuminating the fractal.

   As with standard palette colours all the entries have separate red, green
   and blue components so you can set up different coloured lighting.
   For all values except the specular exponents (entries 768 to 1023) the
   values 0 to 255 for the RGB values represent a "strength" value in 255ths,
   ie. 0 is "off", 255 is "maximum".

   For the specular concentration (exponent or power) the RGB values you set
   are used directly as the power value for the specular term. If you use a
   value of zero then the specular term will be zero, otherwise the value
   reflects (!) the mirror-like quality of the material, 255 being closest
   to mirrored reflection, typical values would be less than 20.

   A tip when wanting to produce a good "Phong" direct-colour image is to set
   the colouring values (palette entries 0 to 255) first while viewing the
   image rendered using "Hard Light" or "Soft Light" colouring modes. This is
   because palette changes in these two modes will be implemented without
   requiring a re-render of the image whereas direct-colour mode phong
   images must be re-rendered for you to see the results of the changes.

   There are some new palettes in the (default) "MMFrac.mfc" colourfile,
   including one for non-direct-colour Phong mode and two for direct-colour
   Phong mode. The "WoodMetal" palette is an example of one way of creating
   a composite-material fractal by setting appropriate values of the phong
   shading values.

   To get an idea of how modifying the various Phong values affects an image
   I suggest using the standard Quaternion Julia Set with a constant of
   (0,0,0,0) since this produces a perfect sphere - use a low detail level
   of say 10 and a low "solid" iteration threshold of say 5 for speed (you
   could also set the solid condition to "direction change" for speed).

2. Two bug-fixes for the 2D fractal "Orbit Trap" colouring modes.
   There was a bug in both "Waves" trap-types and a bug when using the "AngT"
   and "AngT1" colouring.
   All these bugs are fixed, I apologise if this means you have parameter
   files saved from MMFrac V2.0 that produce different results in V2.1, but
   you presumably still have V2.0 and hence could reproduce the said images
   using that.

****************************
* MMFrac V2.0 NEW Features *
****************************

1. Many orbit trap modes added for 2D M/J colouring (inside and out).
   For all the trap coloring modes set the trap value using the "Real"
   and "Imag" fields.
   There are 9 basic shapes:
   circle, line, box, cross, hyperbolic, XdivY, YdivX, Waves1 and Waves2
   All except line have modes with an associated "radius".
   This "radius" is entered as the "Adjust2" value and is in "millionths",
   hence a radius of 1 unit should be entered as 1000000.
   All except circle (also) have modes with an associated rotation angle.
   For these modes the "Adjust2" values represent an angle in hundredths
   of degrees, ie. use 9000 for 90 degrees etc.
   The Waves shapes also have values for frequency and amplitude, the
   frequency is set using the "F1" value and the amplitude is set using the
   "F2" value. Modify "F1" when editing the "Adjust1" field by using the
   pgup/pgdn keys and modify "F2" when editing the "Adjust2" field also by
   using the pgup/pgdn keys.
   The orbit trap modes also have four main types of selection for trapping:
   near, far, first and last.
   When trapping using "near" then you have the option of applying a step
   by step rotation to the trap location - ie. an angle by which the trap
   is rotated (around 0,0) with each iteration. This angle is entered as the
   "Adjust1" value and is also in hundredths of degrees.
   When trapping using far, first or last then a "limit" value is needed
   and in these cases the "Adjust1" value is used to specify this "limit"
   value, again in millionths ie. 1000000 represents 1 unit.
   Also there are 7 options for the coloring calculation:
   distance, magnitude, real, imaginary, angle, angle to trap, angle to trap1
   To change the calculation method use pgup/pgdn when editing the "Infill"
   or "Outfill" fields.

2. You can now set up MMFrac to use a "bigscreen" image buffer for rendering
   images larger than the available screen modes - up to 4800*3600.
   Currently this option only allows "bigscreens" in a 4 by 3 ratio.
   To enable the bigscreen mode use the "o" commandline option (see above)
   eg. use "MMFrac o 4800" to enable the maximum size buffer.
   To render an image to the "bigscreen" buffer use ALT plus F8.
   The image currently on view will not be modified but a progress indicator
   will appear. To cancel the "bigscreen" render press the ESCape key.
   An image in the "bigscreen" buffer will stay there until you overwrite it
   with another one or you clear it from the buffer using the relevant option
   after pressing Control plus "s".
   To save an image from the "bigscreen" buffer press Control plus "s" and
   then press 1 to save or 2 to clear the buffer.
   NB. When you have a bigscreen image in the buffer you can save as many
   copies as you like (disc space allowing), each with different palettes
   just by modifying the palette then saving the image etc.
   NB. Direct-color images MUST be re-rendered after palette changes !
   "Bigscreen" images are saved in plain "BMP" RGB format hence large images
   can require a lot of disk space, eg. nearly 50Mb for a 4800*3600 image.
   Also note that in order to save an ordinary screen image you must clear
   any "bigscreen" image first.

3. You may now save palettes out with parameter files - to do this use
   ALT plus "p" to save the parameters (use Control plus "p" to save
   parameters without the palette)
   Use ALT plus "L" to load parameters in either case.
   NB. Parameter files with palettes included can get comparatively large.

****************************
* MMFrac V1.9 NEW Features *
****************************

1. 40% speed increase for Solid 3D fractals.

2. Added another M/J solid 3D Quaternion and two M/J solid 3D
   hypercomplex fractals.

3. You can now choose between "hard" and "soft" lighting in the lit BoF
   colouring modes for solid 3D - to switch between these options press
   the "insert" key when editing the colouring mode field.

****************************
* MMFrac V1.7 NEW Features *
****************************

1. Bugfixes:

   A crash bug when changing fractal type has been fixed.
   "Z Rotation" in solid 3D mode now works correctly.
   The light shading in solid 3D mode has been fixed.
   A bug in the auto-save of multiple frames is also fixed.

2. More Solid 3D types added including QUATERNIONS and
   HYPER-COMPLEX fractals.

****************************
* MMFrac V1.7 NEW Features *
****************************

1. Solid 3D fractal mode added.

   You can now generate solid-3D fractal images of the four fractal types
   available in this mode.
   I hope the parameters are fairly self-explanatory.
   There are several available colouring modes, the most interesting of
   these are probably those using a combination of BOF60 type colouring
   as well as light-shading. For these modes some explanation is needed.
   In these colouring modes the palette is modified to be 128 shades of
   256 colours. So when editing a palette to use in these modes only the
   first 256 colours are actually used. The rest of the palette is
   over-written in use to contain the other 127 shades of the 256 colours.
   Consequently when editing a palette for these modes you need only
   consider palette colours 0 to 255, setting palette colour 256 as a node
   the same colour as palette colour 0 is a good idea as this will "wrap"
   the colours nicely - you may as well delete all nodes beyond position
   256 as they will be unused in the BOF shaded modes.
   NB. When one of these colouring modes is selected and you are editing
   a palette you MUST save the palette out each time you make any changes
   or the changes will be discarded - I suggest using a special colourfile
   for any "work-in-progress" palettes.
   The number of colours parameter will control the colour density in the
   "BOF" and "BOF" shaded modes, rather than setting an exact colour count.

2. The display width and height will now "snap" to the nearest 4-pixel
   boundary - this was necessary to stop the program crashing when using
   the multi-pass rendering (an oversight on my part).

3. Two or three new "Cilia" modes have been added.

4. "xmasrbns.mmp" has been added to the parameters - after loading just
   press "p" to change the palette to "Def very slow colours".

NB. Two example palettes have been added for the solid 3D, these are
    "test3d" and "Shades3d". Try test3d for the standard lighting colouring
    with numcols set to 256 and try Shades3d for the BOF shaded modes.

****************************
* MMFrac V1.6 NEW Features *
****************************

Unfortunately I haven't made any further improvements to the 3D flying
mode yet. These will now appear in future, as will more detail about the
3D flying mode and the landscape/plasma fractal(s).
There are several bug-fixes (including a couple of crash bugs), plus I've
added the following features:

1. Parameter saving/loading has been added:

   Use control plus "P" to save the current parameters.
   Use alt plus "P" to save the current parameters with colours.
   Use control plus "L" to load parameters (this will replace the current
   fractal)

   There are three example parameter files for you to load:

   "params\oldleaf.mmp", "params\thechain.mmp" and "params\precious.mmp"

   NB. When saving the parameter files you must include the extension to be
   used - I suggest ".mmp" as in "params\filename.mmp" for recognition.

   (The saved files are actually just text files - if you want to import
   parameters from another program then you could edit/create an MMFrac
   parameter file as appropriate, although setting the Fractal name, ie. the
   type of M/J fractal is not easy - there are 8 fractals of each name, so
   "Standard" is 0 (to 7), the Mandelbrots are 0,2,4,6 the Julia Sets being
   1,3,5,7 Fractal name 8 to 15 are then the first of the "Twosquare"
   fractals, again even for Mandelbrot and odd for Julia, hence the second
   "Twosquare" type is from 16 to 23. So for example Magnet1 is 168 to 175)

   For those of you interested in such things, if you save out a parameter
   file when using the "one" "two" etc. modes for getting accurate point
   convergence detection, you can view the parameter file in a text browser
   to find out the (approx) value(s) of the point attractor(s).

2. You can now preview the M/J switch for any point on a fractal image.
   ie. you can view a small-fast-rendered preview image of the Julia Set
       for a given position on a Mandelbrot image, or a preview image of
       the (deformed) Mandelbrot Set for a given position on a Julia image.

   There are 4 possible preview modes:

   a. Hold down "S" and move the mouse for a preview image 128*96 using
      64 max iterations.
   b. Hold down "F" and move the mouse for a preview image 64*48 using
      64 max iterations.
   c & d. As a and b but also holding shift will use the current max
          iterations value rather than 64.

   You can use this preview to find a good "switched" image before using
   "J" or "M" to switch to Julia or Mandelbrot mode as appropriate.

3. A new auto-save multiple images function has been added.

   This allows you to save a set of images from the "undo" buffer.
   You can then use an animation package to turn the images saved
   into an animation.

   To use this function:

   a. Set up the first fractal image
   b. Clear the undo buffer (keypad *)
   c. Create the other fractals to be saved by modifying parameters.
      eg. Modify the 2D/3D/4D rotation values
      NB. You don't have to wait for each new image to finish before the
          next parameter modification.
   d. When you've gone through the number of parameter changes required
      (eg. rotated through 90 or 360 degrees) press keypad 0 to go to
      the first frame of the undo buffer.
   e. Press control plus "A" and press "Y" to confirm.
   f. Sit back and relax as the frames are created and saved.

   g. To abort this process once started then press keypad enter.
   h. If MMFrac gets a save error (eg. out of space etc.) then it will
      abort the process at that point - with an error message.

   NB. Remember that a lot of disk space may be required for saving the
       images - they are saved in ".TIF" (full colour) format, currently
       always into the "anims" folder inside the "MMFrac" folder.

       The initial filename used is always "img0001.tif" so remember to
       either rename or move images you saved from a previous time you
       ran the program before running/saving again.

4. Some more M/J fractal types have been added:

   a. The best members of what I call the "twosquares" family of fractals.
   b. A number of "Fn" formulas, allowing you to choose the function to
      be used in each case - trigonometric, hyperbolic, exp, ln etc.
      Use pageup/pagedown while editing the fractal name field to change the
      function used in these formulae.
      (I added these as the code for doing the higher level maths has been
      lying redundantly in the program since V1.2 waiting for me to finish
      the full formula parser routines - which I will do eventually !)

5. Two modes of "4D" rotation have been added - use these by leaving the
   "3D" X and Y rotation angles as "off" but editing the 3D/4D direction
   value using pageup/pagedown (+shift) - use insert while editing to switch
   mode. You can use these modes in combination with the 2D rotation.

   (If the 3D X or Y angles are in use then this 3D/4D direction value
   applies to the 3D rotation as previously - see later)

   The "deform" mode will do exactly that when you move/zoom to different
   positions on a fractal, but the non-deform mode will not, also the
   "deform" mode will not box-magnify "correctly".
   However the non-deform mode will cause the current constant value to
   be ignored for a Mandelbrot fractal, using (0,0) as the Z start value
   instead - this allows the "rotation" to go from an undeformed M-Set to
   a Julia Set with the constant as "c" (but unfortunately disallows the
   setting of Mandelbrot Z start to values other than zero when used).

6. On exiting MMFrac the current parameters are automatically saved in the
   config file, so MMFrac will start with the same parameters next time.

If you are new to MMFrac then you should try the Tutorial (t) and read the
sections below relating to "Normal keys", "Edit Parameters" and
"The Parameters" in order to understand the above new additions more fully.

*****************************
* MMFrac V1.6E NEW Features *
*****************************

Three new fractal types added, these are:

1. "TwoSquared" using f(x,y)=((x+y)^2,x^2-2xy-y^2) ie.

    new x = x^2+2xy+y^2+cx, new y = x^2-2xy-y^2+cy

2. "ExpMDz"

    new z = (exp(z)-c)/z

3. "zDExpM"

    new z = z/(exp(z)-c)

***********************************
* MMFrac V1.6(delta) NEW Features *
***********************************

MMFrac V1.6(delta) is basically the same as V1.6(gamma) but in 3D the
gourad lighting is much improved, less memory is required and the 3D
now runs faster in gourad lighting mode.

1. Landscape/Plasma fractal type added, just change the fractal type,
   the settings should be fairly self-explanatory.
   The colour adjustment sets the highest palette number to use, setting
   it to 0 will use the default value (1023), setting it to 1 will use
   all colours (0-32767).
   I suggest you try the 3D mode with the default settings and using
   the landscape palette before modifying any values.
   The 3D settings are adjustable while "flying", press "h" while in
   3D mode for help.
   In 3D mode the "SKY" will be the current lake colour.

2. A new internal palette has been added as an example for landscapes.
   If you want your palette to work for 3D landscapes using the available
   lighting method then you must use colours 0 to 1023, since the rest
   of the palette is used for shading.

3. 3D fractal flying added, press the TAB key to enter 3D flying mode.
   (Only really works properly for landscape/plasma fractals)
   Help is available in 3D mode by pressing "h". 

4. You can also turn Mandelbrot/Julia fractals into 3D.
   To do this you must first create a 2D M/J fractal as normal, then
   press the TAB key, the landscape is created from your current fractal
   image for M/J fractals.

5. Set the maximum available 3D detail level from the commandline.
   eg. "MMFrac d 15" for maximum, "MMFrac d 0" for no 3D
       ie. range 0 to 15, the default is 8 (0 to 3 is now off ie. no 3D)
       NB. The last value set is NOT currently saved in the .cfg file so
           you must set the value each time you run MMFrac for values
           other than 8.

When you are first trying the 3D mode (especially for M/J fractals) some
good tips are:

a. Read the 3D help (h while in 3D mode).

b. If you can't see anything much on entering 3D mode then press keypad5
   then use shift+control+alt+the up arrow to go high in the air, then
   press control+pgdn to look down. This should give you a better idea of
   the "lay of the land". You can then move to interesting areas using
   the keypad keys (2468) then go down again using shift+control+alt+down.

c. For M/J fractals its best to use the colouring modes that produce the
   smoothest results. A good idea in most cases is to set the palette
   mapping to "log log" mode.

d. For M/J fractals using (rev) colouring modes you will have to increase
   the height range to large values, do this in 3D mode after pressing
   keypad5.

e. If you want to save pictures from 3D mode then you must be in a 640*480
   video mode BEFORE switching to 3D - this applies to M/J fractals as
   well as landscape/plasma fractals. If you switch to 3D from any other
   resolution then 3D mode will still work but the image will disappear
   on exit (escape).

f. If you exit 3D mode while lighting is enabled then the current palette
   will be in "lighting" mode, you must press "p" then shift "p" to get the
   original palette back.

g. Palettes that are partially edited and not saved WILL BE RESET if you
   enter 3D mode. Hence you should save a developing palette before trying
   out 3D mode.

h. When switching Fractal types please note that the parameters that
   appear to be "in common" between M/J and L/P fractals are in fact
   stored seperately eg. changing video mode when on M/J will not
   necessarily change the display size for L/P fractals and vice-versa.

i. For M/J fractals you may find the best thing to do with "infill" is
   to set it to "Adjust Colour" so you can manually set the palette
   colour to be used, and hence set the height of the "lake" area.

j. Palettes are always used in 3D mode with no cycling offset, so if you
   want the same colours as 2D then press the delete key before entering
   3D mode to ensure there isn't any cycling offset for the 2D image.

*******************
* In the Program. *
*******************

NB. This is first coz its important - Still no saves check for overwriting
    either image files or colour files or parameter files !
    ie. files are overwritten without a confirmation requester !
    I will probably change this soon (honest) !
    Therefore make sure your path/filenames are correct before pressing
    enter (and make sure you're loading to load and saving to save).

The main information/editing section is displayed on top of any fractals
whether they are finished or not. You can toggle this info on/off with "i".
Fractal drawing is 100% interruptable by you at any time:
ie. you can edit the parameters in the info display, edit the palette or
start a different fractal without waiting for the current one to finish.

Much of MMFrac is mouse driven.
The mouse controls the "hand" pointer which is pink normally but turns
grey when a fractal is being drawn. Also the screen coordinates of the
pointer (pixels) OR the current state of the undo buffer are shown over
the pointer in white normally but turn red when a fractal is being drawn.

****************
* Normal Keys. *
****************

NB. When editing parameters in the information section or editing the palette
    many of the "normal" keys are re-used.

Press either control+"s" to save the screen.
You can cancel the save (before pressing enter) by pressing escape.
You may then select either .bmp, .pcx or .tif formats.

Press "F12" to quit
Press "i" to toggle info on/off

Press "h" to view this help file. Navigate the help file using space, up,
down, pgup, pgdn or home. Press escape or "h" to exit help.

*** Tip ***
***********

Use control plus "P" to save the current fractal parameters.
Use ALT plus "P" to save the current fractal parameters including the palette.
Use ALT plus "L" to load a parameter file.

Use control plus "A" to save a set of images from the undo buffer.
All "redos" from the current position in the undo buffer to the end of the
undo buffer will be saved into the "anims" folder with filenames of type
"imgxxxx.tif" where "xxxx" is a number eg. "0001".
You can abort this process part way through by pressing keypad enter.

*** Tip ***
***********

Press "t" to view the tutorial. Navigate the tutorial using space, up,
down, pgup, pgdn, or home. Press escape or "t" to exit the tutorial.

Press "v" to step through all available video modes.

*** Tip ***
***********

Use Alt plus a key 1 to 7 for a true-colour mode (if available).
Use Alt plus a key F1 to F7 for a high-colour mode (if available).
(If you can't get a mode you want then you may need to use command-line
parameters - see above)

Use Alt plus F8 to render to the bigscreen buffer (must be enabled - see the
commandline options)

Use Alt plus F9 to toggle bump-mapping, direct color mode must be enabled and
the current display mode must be true-colour, again see the commandline.

Use Alt plus F10 to toggle Transformation mode.

Press "k" repeatedly to toggle display of X/Y coords and/or Undo counters

Press "o" to start the colours used by the current fractal with palette
colour zero.

*** Tip ***
***********

Press pgup/pgdn to change the colour cycling speed
Press pgup/pgdn together for random cycling
Press end to stop cycling
Press delete to stop and/or reset cycling

*** Tip ***
***********

Press "u" OR keypad "-" to undo last change
(change of palette, cycling and some other items are not always buffered)

*** Tip ***
***********

Press either control+"u" OR keypad "+" to redo ie. undo an undo
Press either alt+"u" to force the addition of the current parameters to the
undo buffer (palette changes aren't normally buffered).
Press keypad "0" to go to the start of the undo buffer (ie. first)
Press keypad "." to go to the end of the undo buffer (ie. last)
Press keypad enter to animate/slideshow all undo/redos
Press keypad enter again to stop the animation/slideshow
NB. unlike normal drawing mode the slideshow/animation always waits for
    a fractal to be drawn before displaying it.
    Also everything but pressing F12 or keypad enter is disabled while
    slideshow/animation is active.

Press keypad "*" to delete all undos/redos

*** Tip ***
***********

Use control and left mouse to drag a box around an area to magnify, the
current relative scale will be kept. Release the mouse button first when
the box is correct, releasing control first will cancel the action.

Use shift and left mouse to drag a box around an area to magnify, the
area selected will be scaled to fit the screen ie. the relative scale may
change ! Release the mouse button first when the box is correct, releasing
shift first will cancel the action.

Left click the mouse to zoom in centred at the pointer location
Right click the mouse to zoom out centred at the pointer location

Change the mouse zoom amount using the "-" ("_") and "=" ("+") keys.

Press space to centre at the pointer location without zooming

Press keys "1" through "0" to zoom in at the pointer location
zoom in by:
1. *1.125  2. *1.25   3. *1.375  4. *1.5    5. *1.625
6. *1.75   7. *1.875  8. *2      9. *2.125  0. *2.25

Press keys "F1" through "F10" to zoom out at the pointer location
zoom out by:
F1. *0.9375  F2. *0.875  F3. *0.8125  F4. *0.75    F5. *0.6875
F6. *0.625   F7. *0.5625 F8. *0.5     F9. *0.4375  F10.*0.375

("shift"ing keys 1-0 or F1-F10 will zoom exactly the opposite amount)

Pressing either control plus keys "1" to "6" will set text colour 1 to 6
to the current lake colour.

*** Tip ****** Tip ***
**********************

Use either control plus F1 to F10 to set the update rate.
Use control F1 for fast fractal drawing, control F10 for smooth cycling.

Use F11 to load an image into the palette for the cilia modes.
Use (shift)(control)insert to flip your palette image.
NB. Changing palettes using p or shift p will reset the palette as
normal ie. the palette image would have to be reloaded if required.
(see "Cilia Image Mode")

Press "x" to toggle between mouse and centred zooming.
When zooming is centred "Cntr" appears over the pointer and all the
above zooms take place centred on the screen centre rather than the
pointer location (it also makes pressing space redundant !)

*** Tip ***
***********

Press "p"/shift+"p" to change palettes
Press "r" to change to a new random palette
Press "w" to toggle between random and wrap palette methods.
(Random/wrap are used when the current palette "spreadlist" produces less
than 32768 colours. In random mode the remaining colours are created by
randomly selecting spreads from the list, in wrap mode the remaining colours
are produced by simply wrapping the spreadlist)

*** Tip ***
***********

Press home to reset to the current fractal type defaults.

*** Tip ***
***********

Press shift+home to reset to the current fractal type defaults and reset to
the default out-colouring settings for the new (v1.4+) out-colouring modes.

Press shift+control+home to reset to the standard Mandelbrot fractal.

*** Tip ***
***********

Press "j" and "m" to switch between Mandelbrot and Julia sets, this is
currently available in all modes, including polynomials.
NB. Switching takes place at the pointer coordinate (or the screen centre
in "centred" mode)

*** Tip ***
***********

Use "s" or "f" to get quick previews of the "switched" fractal for the current
cursor position - see the V1.6 new features section above for details.

*** Tip ***
***********

The keypad number keys 1-9 are used for quick modifications to the
real and imaginary constants:
 Use keypad 4 or keypad 6 to change the real (x) constant
 Use keypad 2 or keypad 8 to change the imaginary (y) constant
 Keypad keys 1,3,7,9 all modify both constants
 Keypad 5 resets both constants to zero.
The modifications are very small (1E-07) so just pressing the above keys
will only make very small changes to your fractal (unless you're on really
high magnification), however holding down shift and/or control and/or alt
while pressing the above keys will multiply the changes:
+either shift   = *10
+either control = *100
+either alt     = *1000
NB. these three keys work in combination eg. +shift+control+alt = *1000000
    giving a change of 0.1 to the constants.

Press "c" to edit the colours (see "edit colours" below)

You can edit most of the values in the "Info" when it's displayed.
(see "edit parameters" below)
Pressing up/down/left/right will all enter edit mode, you can also
enter edit mode using the mouse:
Move the pointer to the far left of the screen on the info line
with the value you wish to change. When you are in the correct place
the description for that line and the first editable field will be
highlighted. Left-click the mouse to edit.

*****************
* Edit Colours. * ("c")
*****************

In edit colours mode the text on the mouse (when visible) displays the
palette number under the pointer.

The palette entries at the end of spreads are the ones outlined in white,
henceforth these entries are referred to as "nodes". A selected node has
this box slightly shrunk. On first entry to colour editing no nodes are
selected.

Use escape to exit edit colours without applying changes or
press "c" again to exit using the new colours.

Use pgup/pgdn or up/down to scroll through the palette.
pgup/pgdn scroll a page at a time, up/down scroll a line at a time.
Shift and up/down scroll one palette entry at a time.

Use Home to go to the palette start
Use End to go to the palette end

*** Edit Colours Tip ***
************************

Use tab to toggle palette display
In full palette display the sliders still work but left mouse only sets
the rgb slider values to the palette colour clicked on and right mouse will
switch back to magnified palette at the palette colour clicked on.

Use shift+Tab to change the size of the magnified palette display, small
mode allows you to see colour changes to the fractal image as you edit
the palette.
The small version is floating, you may left-click and hold
(anywhere on the small palette) to drag the small palette around the screen.

*** Edit Colours Tip ***
************************

While viewing the magnified palette (large! or small) left-clicking on a
pixel of the fractal on view will set the start position of the palette
display to the palette number of the pixel selected, so you know the node
positions near that colour and may easily modify the values for the required
parts of your fractal.

Use left mouse to select a different "node"
Use left mouse to set the sliders to the palette colour under the pointer
Use left mouse to move the RGB sliders (can hold it)

Use "o" to optimise the palette for the current fractal image.

NB. Below, assume the palette colours following the last node will be
recalculated (using wrap or random) unless stated otherwise.

Clicking on a node with right mouse will set the node colour
to the RGB sliders colour value.

Use BOTH mouse buttons on a "non-node" to make it a node, if beyond the last
existing node it must be within 256 entries of the last node.
Use BOTH mouse buttons to erase a node and its spread
NB. erasing a node drops all following NODES back one, hence all colours
    following the erased node will be moved.

*** Edit Colours Tip ***
************************

Use control plus BOTH mouse buttons to make a non-node beyond the current
last node AND ALL INTERVENING RANDOM/WRAP NODES into node/s.
(no distance limit, no colour changes involved)
Use control plus BOTH mouse buttons to delete all nodes from the node clicked
on to the end of the palette.
(no colour changes involved)

Use del to delete the currently selected node
NB. deleting a node turns that palette colour to a normal spread value,
    only the section between the previous node and the next is affected.
    (And the colours following the last node)
    You can only delete a node if the distance from the previous node to
    the next node is <= 256 palette colours.

*** Edit Colours Tip ***
************************

Use left/right arrow keys to move the selected node, you can only move
a node between its two neighbours, or move the last node up to 256 palette
colours from the penultimate one.
Use Shift + left/right arrow keys to move the selected node AND ALL
following nodes - you may only move to a maximum of 256 entries from
the previous node.
Use Control + left/right arrow keys to move the selected node AND ALL
following nodes, setting ALL following spread distances to that from the
previous node (max 256).

Use Insert to insert a new node next to the selected one.

Holding down left control when left-clicking on a node will mark that node as
one end of a block.
Holding down right control when left-clicking on a node will mark that node
as the other end of a block.
Marking block-ends has no effect on the colours.

To overwrite a section of a palette with a block:
1. Mark the block
2. Select the first node to be overwritten (plain left-click)
3. Press shift+insert (the selected destination MUST be displayed)

To paste (insert) a block into the palette:
1. Mark the block
2. Select the node for the insert position (plain left-click)
3. Press control+insert (the selected destination MUST be displayed)

To move a block:
1. Mark the block
2. Select the destination node for the move (plain left-click)
3. Press shift+control+insert (the selected destination MUST be displayed)

To delete a block:
1. Mark the block
2. Select either end of the block (plain left-click)
4. Press control + delete (the selected block end MUST be displayed)

When you have marked a block you may also:
1. Use "r" to reverse the order of the block
2. Use shift+"r" to reverse just the colours of the block
3. Use control+"r" to reverse the spreadlengths of the block

NB. Not all destinations are valid for paste/move.

*** Edit Colours Tip ***
************************

Pressing either control+"s" while editing the colours will allow you
to save the palette either as a new colourfile, append it to
the current colourfile, update/overwrite one of the palettes in
the current colourfile, append another colourfile or update/overwrite
one of the palettes in another colourfile.
You can cancel the save (before pressing enter on the savename)
by pressing escape.
NB. If you choose to save it to a new colourfile or modify another
colourfile then MMFrac will switch to that colourfile.

Pressing either control+"l" (ie. "L") while editing the colours will
allow you to load a new colourfile.

There should initially be two colourfiles with MMFrac, both in a
sub-folder called "colours", these are "MMFrac.mfc" and "Islands.mfc".
MMFrac.mfc is basically just the default test colourfile.
Islands.mfc is an example of one way of organising a palette for use
with "potential" colouring modes - see the Atolls in my gallery.

Web address: http://skyscraper.fortunecity.com/terabyte/966/

E-Mail: davemakin@x-stream.co.uk

********************
* Edit parameters. * (arrow keys/left mouse-click on edit line)
********************

For a description of the effect/ranges of the various parameters, see
"The Parameters" below.

On entry into edit mode a text cursor "_" will appear at the end of the
active field and you may now edit the entry.

While editing you can change fields using the left/right arrow keys.

On first entry into a field the unchanged value is highlighted as
black on white. Pressing a valid new key starts a fresh value in the
numeric fields, backspace will backspace the last character. Once
a field has changed it is highlighted in white on black.

"delete" will always delete the whole of a numeric field.
Backspace functions as normal.
In the text-fields use the up/down arrows to scroll through the
available selections. (Use shift to move faster in some fields)
NB. the up/down arrows may change fields if the current field is
numeric.

Some fields now contain two or three entries, one may be changed by
typing, another using the up/down arrows,
the third (if any) by using pageup/pagedown.
In some fields using shift will speed up modification of the value
when using up/down or pageup/pagedown.

You may enter floating point values in the relevant fields eg.
1.56 E-10 or 0.0005675 or -123456.007 or even 12189.0045 E-12

In the integer fields only positive values are allowed. If you attempt
to enter a figure too large then the value will be set to the
maximum allowed.

*** Edit Parameters Tip ***
***************************

IF THE CURRENT VALUE IN A FIELD IS INVALID THEN THE TEXT CURSOR "_"
AT THE END OF THE FIELD WILL BE CHANGED TO "?"

If you wish to change multiple values simply set each one in turn by
changing fields using the arrow keys.

To exit edit-mode without applying the changes press "esc".

When you are happy with your new values press "enter".

If, on pressing enter, one or more fields are invalid then MMFrac
will ignore the invalid values and reset the field/s to the previous
valid value/s.

Some fields are inter-dependant, in these cases editing one field
will change the colour of inter-dependant fields and you won't be
able to edit those without setting the other back to the previous
value.
These are:-

(left OR right) AND (centre X OR X magnification)
(top OR bottom) AND (centre Y or Y magnification)

After pressing enter a new fractal will be generated if necessary.
Changing only the palette or the lake colour do not require a re-render.

When a fractal is being generated the mouse cursor will change from
pink to greyscale, however you can still edit or even zoom. Also the text
on the mouse cursor will turn red.
A fractal generation can be interrupted at any time by you requesting
a zoom, or pressing any keys/buttons that change the fractal.

Outer colouring mode "Potential Error !" is an interesting mistake I made
when trying to improve the Potential-colouring mode. It produces some very
nice pictures when you choose the right palette.

*******************
* The Parameters. *
*******************

Top of the information is the "Fractal Type".
This can be switched between Mandelbrot/Julia and Landscape/Plasma types.

The next editable field is the "Fractal Name". This is actually the
sub-type/render method field. Currently the sub-types are:-

   Standard, TwoSquare, Lambda, Phoenix, Phoenix complex,
   Barnsley1, Barnsley2, Barnsley3, Manowar, Fastdraw
   Xsquared, ExpMDz, zDExpM, Volterra-Lotka, Tetrate
   Magnet1, Magnet2, Poly Real coeffs, Poly Imag coeffs
   Poly Complex coeffs, Lambda Poly, Phoenix Poly, Phoenix Poly complex
   and ZZ poly

All are available in "Mandelbrot" or "Julia" mode.
(Most but not all are true Mandelbrot/Julia switchable)

With rendering modes:-

 1. One-Pass
 2. Solid-Guessing
 3. Three-Pass
 4. Dissolve

To change from Mandelbrot to Julia or change rendering mode when editing this
field use the up/down arrows.

*** Parameters Tip ***
**********************

To change sub-type use shift with the up/down arrows (this will keep the same
rendering mode).

If you choose any of the polynomial types you will be prompted for the degree
of polynomial you require and the relevant coefficients of z^n once you have
pressed "enter" to generate a new fractal. Pressing escape while prompted for
the degree or one of the coefficients will use the current values for the
polynomial fractal.
The real and imaginary coefficient versions are only there for faster
rendering of polynomials, they can be reproduced using the complex polynomial
with the appropriate coefficients set to zero but this would take longer
to draw.

Next are the fields for display coords, these should be fairly
self-explanatory. You can use these to set the "corner" coordinates of your
fractal. If you change these then the dependant magnification/centre values
will be locked. They are floating-point numeric fields.

The magnification is split into two, the x and y values. This allows you to
stretch/scale the fractals if you so wish. You can even enter a negative
value for the magnification to reverse that axis.
Again these are floating-point numeric fields.
To go with the magnification are the screen centre coordinates. These are also
floating-point numeric fields.
Modification of the magnification or centre values will cause the dependant
"corner" values to be locked.

*** Parameters Tip ***
**********************

The real and imaginary constants are also floating-point numeric fields and
allow you to set the complex start value for Mandelbrot fractals or the
constant value for Julia fractals.
The constant fields also contain the rotation values, change these using the
up/down arrows or pageup/pagedown.
Use shift to modify the values more quickly.
You may also toggle deformation mode when editing the imaginary constant
field using the insert key.

When not editing you can modify the constant using (shift)(alt)(control)
with the keypad number keys (see above under "normal keys").

The max iterations is an integer field, range 16 to 32768 and defines the
maximum number of iterations before exiting the recursions. Larger values will
slow down fractal generation but produce more detail at higher magnifications.

The Bailout value is again an integer field. It's range is 2 to 2147483647.
This is the bailout comparision and is used to decide when the iterations are
tending to infinity.
This field also has the convergent bailout value, you can change this using
the up/down arrows. Using shift with up/down will change the detection
method without modifying the numeric bailout.

The convergent detection methods will detect convergence to point attractors
and you may select modes "All", "Mag", "Det" or "One" to "Eight".
Mode "All" attempts to detect all occurrences of point attraction,
mode "Mag" is specifically for detecting attraction to (1,0) as in the
"Magnet" type fractals,
mode "Det" is essentially the same as "All" except that it will attempt to
detect specific attractor values for use in the following modes,
"One" will only find convergence to the "most popular" attractor found using
mode "Det" hence you must have rendered the same fractal using mode "Det"
prior to switching to mode "One"
Modes "Two" to "Eight" are the same as mode "One" in that you must use mode
"Det" first but these modes will test for convergence for more than just one
value (assuming "Det" found more than one point attractor).

The period limit is also an integer field, range 0 to 32. This is used in
optimising the "lake" areas as these are the slowest to draw. The higher the
value the faster (but more prone to errors) the fractals will be drawn.
Setting this to a value of "0" disables periodic checking (and hence removes
any such errors).

The escape field lets you select what actual values are checked against the
infinity value for bailout. Changing this from the normal "modulus" value
can produce interesting results. Although a lot of escape conditions are
selectable some only vary slightly in their results (just enough to warrant
inclusion). The best thing I can say is "Play around a bit" with the escape
conditions, the various colouring modes and palettes. This condition only
applies to divergent bailout.

In the next two fields you may reduce the size of the area which MMFrac uses
for drawing a fractal to less than the full-screen. This is useful on slower
systems if the lower resolution video modes are unavailable. You can also use
this facility to render multiple fractals "inside" each other if you like (do
the biggest one first obviously !)
Following the display size are given the actual screen resolution and colour
settings.

Next come the possible colouring modes "Out" and "In". Again just play around
with these till you find something you like. NB. changing palettes will also
have major effects on how these look !
NB. most of these colouring modes are altered by changing the
"colouring adjustments".

*** Parameters Tip ***
**********************

As well as using up/down keys to change the out-colouring mode, you can also
use pageup/pagedown or enter a "Skew" value when you are on one of the
"Cilia" out-colouring modes. Also use shift+pageup/pagedown to set the cilia
ATN angle to use "previous" ie. Prev1,Prev2,Prev3 or off.
Use the "-" key to reverse the direction of the skew.

The colouring adjustments modify how the colouring modes are used to produce
palette colours as follows:

 Map: This allows you to set how the colouring calculation is mapped to the
      palette and is useful for when you have too many/too few or badly
      spread colours. There are two items in the field, use up/down arrows
      to change the mapping mode or type a value for scaling the mapping.
      (0=default scaling)

 Adjust1 and Adjust2 may each contain one or two values, one is just a value
 to be typed in, the other (if available) may be altered using the up/down
 arrows.

 Real and Imag are two floating point fields and used only for some of the
 new "smoothing" modes. They may also have a second value which you can alter
 using the up/down arrows.

 See below for more detail on the adjustments.

Following the colouring adjustment values is the in-colour offset value, you
may give this a non-zero value to offset the palette colour start value for
in-colouring with respect to out-colouring.

The last editable field is the lake colour. This is now a "hexadecimal" field
and sets the red/green/blue values of the lake colour.
eg. FFFFFF=white, FF0000=red, 00FF00=green, 0000FF=blue, 000000=black
    FF00FF=magenta, FF8000=orange, FFa0a0=pink etc.
Each digit may by a number (0 to 9) or a letter (A-F).

*** Tip ***
***********

***********************
* COLOUR ADJUSTMENTS. *
***********************

1. For the old (v1.2) colouring modes.
--------------------------------------
   (ie. Outfill from "Iteration" down to the last "Bof" mode
   and the Infill modes)

Out:
 Adjust1:
    a. Scales the rate of travel through the palette based on the iteration
       count.
       The range of values allowed will change depending on "maxiterations".
       All colouring modes (in or out) using "iteration" or "iter" are
       affected by this field (including biomorph).
       A value of zero means no scaling, the higher the value the faster the
       colours will change based on iteration count.
    b. Modifies the "Max Iter" colour so that it coincides with that produced
       when iteration colouring is scaled eg. "Iter(med) & Max Iter"

 Adjust2:
    a. Sets the biomorph colour (palette number), 32768=lake.
    b. For the "Esc Angle" modes it sets the number of different colours to
       use for the escape angle.
       0 and 1 use optimised code to produced 2/4 or 4/8 colours.
       Values of 2 and above will produce that number of colours.
    c. In all cases of "Iter +" this value will scale whatever is added to
       "Iter" to increase/decrease the effect.
       0 uses the unscaled default amount, large values cause larger numbers
       of colours to be used.
    d. This is the palette colour used for "Adjust Colour" out-mode.
    e. Modifies the colours produced by all the out "BoF" modes.
       A value of 0 scales the colour to the (adjusted) "Max Iter" value.
       A value of 1 causes the whole palette to be used (possibly).
       Other values will scale the colour range, the larger the value, the
       more colours will be used.

In:
 Adjust1:
    a. Modifies the colours produced by "Escape Magnitude".
       A value of 0 scales the colour to the (adjusted) "Max Iter" value.
       A value of 1 causes the whole palette to be used (possibly).
       Other values will scale the colour range, the larger the value, the
       more colours will be used.
    b. This is the palette colour used for "Adjust Colour" in-mode.
    c. Modifies the colours produced by all the in "BoF" modes.
       A value of 0 scales the colour to the (adjusted) "Max Iter" value.
       A value of 1 causes the whole palette to be used (possibly).
       Other values will scale the colour range, the larger the value, the
       more colours will be used.

*** Tip ***
***********

2. For the new (v1.4+) colouring modes.
--------------------------------------
   (ie. Outfill from "DistGen" to "ZmagDiv")

When not editing use shift+home to set defaults when using these modes for
all fractals except the polynomials. (except for "Zmag" mode)

NB. Below, # of colours is the number of colours to use
    BEFORE applying mapping.

    The scaling values are 0=linear 1=default else n/4096)

   DistGen:
       Adjust1: scales # of colours used for divergent areas
       F1: scales the affect of the iteration count on these colours
       Adjust2: scales # of colours used for convergent areas
       F2: scales the affect on these colours of the iteration count
       Real/Imaginary: Set the exponent value for divergent colouring
       F3/F4: Modify the exponent for convergent colouring

   DistCon:
       Adjust2: scales # of colours used for convergent areas
       F2: scales the affect of the iteration count on these colours
       Real/Imaginary: Set the exponent value for divergent colouring
       F3/F4: Modify the exponent for convergent colouring

   DistDiv:
       Adjust1: scales # of colours used for divergent areas
       F1: scales the affect on these colours of the iteration count
       Real/Imaginary: Set the exponent value for divergent colouring

   FDistGen: (NB. Divergent exponent "fixed" at "+2")
       Adjust1: scales # of colours used for divergent areas
       F1: scales the affect of the iteration count on these colours
       Adjust2: scales # of colours used for convergent areas
       F2: scales the affect on these colours of the iteration count
       Real/Imaginary: Used only for convergent exponent
       F3/F4: Modify the exponent for convergent colouring

   FDistDiv: (NB. Exponent "fixed" at "+2")
       Adjust1: scales # of colours used for divergent areas
       F1: scales the affect of the iteration count on these colours

   CiliaExpGen:  (NB. will appear as "CellsExpGen" or "S-BricksExpGen" etc.)
       Adjust1: "bailout" value to use instead of actual divergent bailout
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Real: offset for positioning divergent "layers"
       F3: layer to layer rotation offset for divergent areas
       Imaginary: offset for positioning convergent "layers"
       F4: layer to layer rotation offset for convergent areas

   CiliaExpCon:  (NB. will appear as "CellsExpCon" or "S-BricksExpCon" etc.)
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Imaginary: offset for positioning convergent "layers"
       F4: layer to layer rotation offset for convergent areas

   CiliaExpDiv:  (NB. will appear as "CellsExpDiv" or "S-BricksExpDiv" etc.)
       Adjust1: "bailout" value to use instead of actual divergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Real: offset for positioning divergent "layers"
       F3: layer to layer rotation offset for divergent areas

   SmoothExpGen:
       Adjust1: "bailout" value to use instead of actual divergent bailout
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Further scales # of colours to use for convergent areas

   SmoothExpCon:
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use

   SmoothExpDiv:
       Adjust1: "bailout" value to use instead of actual divergent bailout
       Adjust2: scales # of colours to use

   CiliaIterGen:  (NB. will appear as "CellsIterGen" or "S-BricksIterGen" etc.)
       Adjust1: "bailout" value to use instead of actual divergent bailout
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"
       F4: layer to layer rotation offset for convergent areas

   CiliaIterCon:  (NB. will appear as "CellsIterCon" or "S-BricksIterCon" etc.)
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"
       F4: layer to layer rotation offset

   CiliaIterDiv:  (NB. will appear as "CellsIterDiv" or "S-BricksIterDiv" etc.)
       Adjust1: "bailout" value to use instead of actual divergent bailout
       Adjust2: scales # of colours to use
       F2: Scales the affect of the iteration count on the colouring
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"

   SmoothIterGen:
       Adjust1: "bailout" value to use instead of actual divergent bailout
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       F2: Further scales # of colours to use for convergent areas
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"

   SmoothIterCon:
       F1: "bailout" value to use instead of actual convergent bailout
       Adjust2: scales # of colours to use
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"

   SmoothIterDiv:
       Adjust1: "bailout" value to use instead of actual divergent bailout
       Adjust2: scales # of colours to use
       F2: Further scales # of colours to use for convergent areas
       Real/Imaginary: Set the exponent value for colouring
       F3: scales the magnitude of the "fractional iteration"

   Zmag:
       Adjust1: scales # of colours to use (Best used with "Out Map LogLog")

For the Orbit Trap coloring modes see the V2.0 new features section.

********************
* Cilia Image Mode *
********************

*** Tip ***
***********

This mode allows the mapping of an image loaded into the palette (using F11)
onto the fractal.
To use it simply select a "Cilia" outfill mode eg. "CellsIterDiv" then
while still editing the Outfill field use pageup/pagedown to change the
Cilia mode to an Image mode eg. "S-ImageIterDiv" or "Image2IterDiv".
Then press return (don't worry about the current fractal image).
Then press "F11" to load a ".bmp" to use as the palette image.
(Any .BMP will do but only whole images with less than or equal to 32768
pixels will be shown properly - the closer to 32768 pixels the better,
eg. 256*128, 181*181 208*156 etc.)
When the ".bmp" is loaded the palette should change - if it didn't then
try again - checking the path\filename was correct - there's no error
message !
Now press shift+home and when the image is rendered I highly recommemd
using colour scrolling ! (With max update speed set - control+F10)
You can use the insert key to flip the horizontal/vertical orientation
of the image, or shift+insert to mirror the image or control+insert to flip
the image.
Try the different Cilia "Image" colouring modes - they work best with "F2"
set to zero ie. no effect of the iteration count on colouring (see above).
If the image you loaded was 256*128 (or 128*256 then flipped h/v) then you
will be able to see it correctly displayed when you look at the "entire"
palette ("c" then tab).
There are three default images - "maps\image", "maps\image1" and "maps\image2"

*********************
* Work in progress. *
*********************

I will be adding more to this help file as I get time and as more features
are added to MMFrac.

The following upgrades are already in progress:-

1. Add more "Direct RGB" colouring modes ie. RGB values calculated rather
   than using a palette (NB. hi-colour images using this method would
   only be saved with an RGB resolution of 5 bits each)
2. Allow block copying between different palettes.
3a. Allow spreading across a block - ie. >256 colours
3b. Allow setting all colours in a block to the same value
3c. Add a mode setting all colours beyond the end of the spreads
    to either the last spread colour, or the lake colour.
4. Automatically paste/overlay multiple copies of a marked block into
   the palette.
5. Add more escapes/infills/outfills/MJ fractals.
7. Add other image file formats for saving - HELP WANTED ! (see end)
8. Add more help in the program, including edit-field specific items.
9. Add other types of escape-time fractals.
10. Add other types of fractal eg. IFS etc.
11. Add non-linear colour fading for the palette spreads.
12. Add menu for video mode selection.
13. Add "Be square" for when relative magnification isn't.
15. Add save palette as well as colourfile ie. not in text format so
    smaller files. Save to include flag/seed for random/wrap and default
    cycling offset ?
16. Output direct to a file for producing extremely large images.
17. Add deep-zooming for all fractals only needing add/sub/mul and logic
    operations (using my large&huge floating point code)
112. Finish the real-time zooming mode (like XAOS).
113. Finish the formula routines - ie. can write your own fractal formulas.
115. Optimise all the above as far as possible !

200. Create a Windows GUI version of MMFrac.

Please note I am hoping to enable the real-time zooming on as many fractal
types as possible, including user formulas.

NB. Due to the work involved later versions of MMFrac may become
Shareware or even "commercially" available by E-Mail or snailmail only.

Things to add :-

1. Add suggestions from YOU !

****************
* Help Wanted. *
****************

Anyone out there with ASSEMBLY code for converting 24/32 bit images
to JPG PNG AVI MPG etc. etc. that they are willing to pass on please feel
free to do so !! (especially JPG) (TIF's are still a bit big !)
Also for saving images in .GIF format, for images where <=256 colours
are actually used.
You will be credited in the help/program (if you so desire).

Send any stuff to:

E-Mail: makinmagic@themutual.net

Web address: http://skyscraper.fortunecity.com/terabyte/966/

To repeat myself - I am NOT interested in C/C++/visual basic or any other
"high" level language code for the image formats.

Press escape or "h" to exit help.

******************
* Update History *
******************

***************************
* MMFrac V1.5 NEW Feature *
***************************

1. Now allows rendering of 2D cross sections from a 3D space using "X"
   as the horizontal, "Y" as the vertical and any one of 5760 lines in
   the complex plane of the standard constant as the third dimension.
   Allows 3D rotation around all three of these axes, as well as a
   "deformation" option.
   This applies TO ALL fractal types as the transforms are done before
   entering the pixel loops.
   Magnification works as normal when using the 3D rotations as does
   the Mandelbrot/Julia switch but the Mandelbrot/Julia switch does
   not work "correctly" in deformation mode in that the cross-over
   is not done at the correct coordinates or with the correct constant.

2. Please note that (as in MMFrac1.4) the "box-magnify" method will
   not work correctly when using the shift key if the rotation values
   are in use.
   "Box-magnify" using the control key will work fine.

****************************
* MMFrac V1.4 NEW Features *
****************************

1. Now saves as ".bmp", ".pcx" or ".tif" (24-bit) or ".tif" 256 colour.

2. One new fractal type - "Xsquared"

3. Added a LARGE number of out-colouring modes including:-

   iteration smoothing, exponential smoothing,zmag colouring,
   distance estimator and "cilia" modes including image mapping

4. Finite point attractors may now be treated as "out" with the new
   convergence detection.

5. Added non-linear palette mapping.

6. Added rotation.

7. Added a palette offset parameter for in-colouring mode.

8. For many of the new colouring modes, using shift+"home" will set
   the colouring parameters to reasonable values for that fractal in
   that colouring mode (also resetting the default state of the
   fractal type). This excludes the polynomial types.

9. Standard divergent detection may now be disabled.

10. Prototype tutorial file added (using "t")

11. You may now use Alt + a key 1 to 7 to select a true colour mode
    (if available) or Alt + a key F1 to F7 to select a high colour
    mode (if available).

12. You can now load a ".bmp" image to be used as (part of) the palette
    for use with the "Cilia" image mode using F11.
    (Check out with colour scrolling !)

13. You can flip your palette image using (shift)(control)insert.

14. When editing the info or reading the help or the tutorial the fractal
    background is now set to black for legibility reasons !
    NB. Any fractal in progress is unaffected and will continue to be
    created.

****************************
* MMFrac V1.2 NEW Features *
****************************

1. As you may already have read (above) image files are now saved in
   ".pcx" format, usually saving quite a lot of hard-drive space !

2. Another 14 Mandelbrot/Julia Fractals:-

   Phoenix, Phoenix complex, Barnsley1, Barnsley2, Barnsley3
   Manowar, Fastdraw, Volterra-Lotka, Tetrate, Magnet1, Magnet2
   Phoenix Poly, Phoenix Poly complex, ZZ poly

   Fastdraw is (x+iy)*iy+c where Z=x+iy which I haven't seen used
   elsewhere ! A bit strange since it's probably the fastest fractal
   to produce (and about the simplest).

3. Added 16 new colouring modes related to and including BoF60/Bof61
   for use as either in-colouring or out-colouring.

4. Changing resolution or editing the palette no longer resets the
   colour-cycling and you can edit the palette with the cycling staying
   at the current offset position.

5. You can "optimise" a palette for the current fractal when editing
   the colours using "o". This moves the colours used by the
   current fractal to start at palette entry zero and modifies the
   fractal image accordingly. This option is complememted by the "o"
   key in normal mode which modifies the current fractal so the colours
   it uses start at palette entry zero, without moving the palette colours.

6. Holding down shift or control with the left mouse button pressed now
   allows you to drag a "magnify" box around an area you wish to view.
   Using control keeps the current relative scale, using shift rescales
   the selected area to the screen.

7. Pressing "home" now resets to the default state of the current
   fractal type rather than resetting to the standard Mandelbrot.

8. Periodicity checking is vastly improved, the period optimisation
   mode has increased speed still more and it is now possible to
   get very accurate period-in-colouring using the "Period (all)" mode.
   This mode is slower than "Period (opt)" since it is not used for
   early-exit optimisation but instead continues searching for a better
   periodicity value until escape-time, resulting in very accurate
   periodicity colouring.
   NB. It is important to use the Period limit value for adjusting
   the effect of both "Period (opt)" AND "Period All", the optimum
   value for the period limit will vary depending on which period mode
   is in use, the maximum iteration found, the magnification,
   the escape mode/infinity value and of course the fractal type.
   The lower the period limit, the more accurate the period values found
   will be but some periodicity may be missed. The higher the period limit,
   the less accurate the period values will be, but periodicity is less
   likely to be missed. Also higher period limit values will improve the
   performance of the periodicity optimisation of all infill/outfill
   mode combinations where the optimisation is applied.

9. Random palettes are now remembered correctly when using undo/redo
   because the palette "seed" value is stored, the same goes for when
   changing video mode. Also changing to the random palette using
   the info-text or p/shift p will use the current random palette
   without changing it - to create a new random palette press r.

10. You can now force the addition of the current fractal parameters to
    the undo buffer using alt+u. This is useful as it stores the current
    palette (including random ones) allowing you to try other palettes
    but undo if you change your mind. This option was required as switching
    palettes alone does not automatically add anything to the undo buffer.

11. The ability to view this help within MMFrac was added.
