"Yet Another Mandelbrot Generator" ...this time it's by Steven Goodwin... ...so its's bound to be good!! DOCUMENTATION FILE The generator works by a system of pull down menus. An option is selected by using the right mouse button, and the computer then executes the appropriate section of code. The menus will no longer appear until that event has been carried out. So if the menu bar doesn't appear then press the right button and the computer should quit that section and allow a menu selection. In order to make the menu visible the palette colours will temporarily change. This is more noticeable by looking at the mandelbrot as sections suddenly change colour. This also happens on all dialog boxes that appear. Many of the options are available by means of a special 'hot key'. This does exactly the same as the menu option, but may be used to save time. There is also a special 'workscreen' which uses a simple point and click interface to alter the fractal data. The complete workings of this system is explained later. THE SCREEN The screen itself is a 320x200, 32 colour low res screen. There is also access to the hi-res and EHB modes, and screen sizes larger than the physical monitor size. However, whatever size of screen you use a 320x200 portion is all that will be displayed (unless you have a PAL system, in which case 256 lines will be shown). The rest can be seen by using the cursors, with the optional shift key for speedy movements. THE DISC This disc contains, this document file (I sometimes amaze myself you know!) and the Mandelbrot generator program - YAMG. If you wanted examples, don't worry - there's 14 on the disc! They're held in the Demos directory. There are two pictures for each type of fractal that YAMG can generate. The program also has 8 (count 'em) built in screens. These are all standard mandelbrot renders though. I apologize for the lack of imagination in the use of colour in the demos. This is because I do not have a colour TV!!! I had to plan, design and hope - the screens do look alright - don't they!!??!!?! This program is freely distributable (but with Copyrights retained) providing all the files included here are copied. Please adhere to this. THE PROGRAM It was written in Amos 1.35, and compiled using the Amos Compiler 1.35. As a consequence the AMIGA-A key can be used to revert to the workbench to mutlitask with whatever software you want. You could even view this file as one task to help you through some of the more difficult options. Once loaded, the screen will show the 'initial' view. This is the famous mandelbrot shape, and a dialog box about ME (important things first!!!). Click any mouse button, or press a key, to make it (and again for the next one about HELP) disappear. To zoom-in on the mandelbrot, select an area of the screen using 'set box' from the zoom menu. The box is set by clicking on the top left corner and dragging the other corner. This box can be moved and re-sized as required. Many of the options are be accessed by the pull down menus, speaking of which.... THE MENUS YAMG - the standard file menu. Load IFF - loads an IFF file and .mdata datafile. The mdata file contains the location and fractal type info for the picture. This allows you to re-create the fractal and further zooms at a later date. This file can also be loaded and examined by the file converter program, part of Registered Users Pack. Save IFF - guess what...it saves the IFF file and .mdata file Load pac - loads a pre-packed picture and datafile into a bank that can be viewed with recall (see below) Save pac - saves the packed picture. These packed picture banks are simple AMOS banks and can be loaded as such by another AMOS program. Note: The packing and unpacking of these files will take a couple of seconds. Please bear with it. Recall > - this has eight sub-options. Each one recalls, from memory, a previously drawn mandelbrot. The first three options are initial (to recall the very first mandelbrot - this is the one that is display when you first load the program), last load (the one you loaded specifically from disk) and previous (the one before you loaded or drew the other mandelbrot). It also recalls the palette. The other five are extras, and contain examples. Store > - works exactly like recall, but it stores it instead Erase > - Erases any of the banks stored using the above command. Can be used to save memory for very large renders. Appropriate options will subsequently become un-selectable. Define - A remnant of v1. Used to alter the range of the current fractal. No longer any real use. The work- screen has taken over from it. Workscr - This is THE workscreen. The ULTIMATE in fractal creation. Explained in full later. Help - Goes into the complete on-line HELP system. This has an idiots guide to fractal generation, as well as some handy hints. About - tells you all about ME. VERY IMPORTANT OPTION! Version - tells you which version of the software you're using Quit - not worth mentioning...you'd never want to leave the program - would you!!!?? DRAW - this executes the drawing routines Mandelbrot - Draws the mandelbrot according to your spec. Quasi - This is similar but uses offsets in the equation These offsets are set in the workscreen, or in the Prefs menu (at the far right). Internal - Like mandelbrots, but has detail inside! Mirror - as mandelbrot, but places a mirror across x-axis Can be used for nice effects or speeding up your normal mandelbrot generations. Julia Set - Draws the Julia set according to the 'set point' co-ordinates ONLY. This is a separate option from the 'set box' (and similar). A cross indicates a single point to where the next render will concentrate on. Because of the symetry involved in Julia Sets a 'fast-render' can be generated by a special algorithm. In order for this to work the standard co-ordinates must be -2,2,2,-2 and rendered WITHOUT full screen. (see Julia zoom) Julia Zoom - Once you have render a Julia SET, you may wish to zoom in further. This option allows you to do this by selecting the box you wish to study, and clicking on 'Julia Zoom'. This uses a general purpose Julia algorithm and is slower than the 'Julia Set' option - but still faster than most other fractal generators in AMOS. Logistic - Similar to Julia Set in operation, but using a z=cz(1-z) logistic equation for population growth. (Wow!) The main difference here is that I use one algorithm in both cases, as a consequence, when about to render a zoom you will get a dialog box saying 'point is not set', just ignore it. Z^3 Broid - Like a mandelbrot, but using a cubed function. Z^4 Broid - As Z^3, but with a quaternal function. As soon as you have selected the drawing type (and the current fractal has been stored), you will be presented with a screen asking 'Render Using Full Screen'. If you have selected 'make square' from the 'zoom' menu and wish to keep the aspect ratio then choose NO at this point (I prefer this in all cases). If you wish to emulate most other generators, or draw the fractal to fit into the entire screen (rather than the largest possible square) then choose YES. There are two diagrams that show what screen area the render co-ordinates cover. Once started, the process can be halted by holding down any of the mouse buttons at the end of a line. This causes a dialog box to be shown. You may return to the render if you wish at this point. If not then the last mandelbrot will be recalled from memory. The box (and the cross if applicable) will then be drawn on the screen, in case you thought you were zooming elsewhere. If the fractal is allowed to generate, the palette will be re- coloured (depending on your set-up) and stored. The packing and storing takes a few seconds. You will get a dialog box when it has finished. ZOOM - holds facilities to set, move and adjust the zoom box, and Julia/Logistic point. Set box - use the mouse to select both corners of the box. It is preferable to select the top-left corner first, followed by the bottom right. This is done by dragging the box after clicking on the top left corner. Set point - use the mouse to select the zoom point for both the Julia and Logistic renders. Each of these fractals change depending on the point they 'describe'. The best way to set the point is to recall the initial mandelbrot, and choose a point from there. Set corner A - This is the top-left corner. Set corner B - This is the bottom right. Click and drag on both these options. Adjust coords- You can adjust the numbers by an input style requester. This is useful for drawing screens you have seen in books, although I would use the workscreen - see later. The co-ordinates for the point can also be changed here, but again - I would use the workscreen. Make square >- This automatically adjusts the co-ordinates so the new mandelbrot will appear square and in proportion. Using X (or Y) means it will measure the length of the X side, and make the Y side the same length. The drawn box may not be square on the screen, however, as this depends on the current scaling factors. Nb:Render using the 'central square' option in this case. Move box > - You can use the cursors to move the box pixel by pixel around the screen. Or you can use the mouse. By selecting 'use corner' the top corner the box will move to where the mouse pointer is.Similarly with 'use centre'. You may 'drag' the box around, but if you move it too quickly to the edge of the screen it will stop. Just move it slowly at the edge. This happens because the computer sees if the requested box location is valid (ie on the screen) if not, if won't move it. Simple as that. Clear box - Removes the box from the screen. Clear point - Removes the point (ONLY) from the screen. Mirror - If part of the mandelbrot crosses the X-axis then 'Mirror' will reflect the box around it so the mandelbrot is a mirror image. The computer will automatically choose the mirror mandel procedure if min y = - max y. This will save time when rendering. PALETTE - allows alterations of any/all of the colours used in the creation of your fractal Default - Recalls the default setting for the palette. At present the palette is a gradient scale which I think looks quite effective. This can also be executing by pressing F1. Edit - Allows the editing of individual colours in the palette. To start with, press a key to get rid of the dialog box. Then click on the any of the colours in the fractal and you will be presented with a palette box containing three sliders for Red, Green and Blue. These can be moved by the click and drag operation. You can change the edit colour by, a) clicking on a different colour, or b)clicking on the colour number, and typing a new one in. An input-type requester appears. This is used to change the colours that are too small to be clicked on. You can quit with the usual right mouse button and you can call it with F2, instead of the menu option. Rotate - Spins the palette around giving some very nice effects. There is a PAL PREFS options for altering this to suit you. Option also on F3. Black Palette - Changes all the colours to black. Not as daft as it seems. When rotating 4096 colours, you can start with a black palette and see the fractal emerge from nothingness. DO NOT rotate a blacken palette with only 32 colours, as you will never see anything. F4 does the same job. Re-colour - Re-colours the screen to the first n colours of the current default palette. Set default - Programs the current palette into the default palette. F10 also does this. Init palette - Restores the boot-up palette. Emergency if you make a serious foul-up. Also on ESCape. Pal Prefs > - Because rotating the palette is a very personal thing, there are several options to alter it. Once the mouse button has been released, the option is usually selected. The '*' shows the selected options. The Pal Prefs options are.... Converging - The colours appear to converge (move in) on the mandelbrot. Diverging - The opposite of converging. 32 colours - This doesn't select the number of colours it simply uses the colours in the current palette. This is used for re-coloured pictures. It allows you to rotate just a three colour palette if want. 4096 colours - This simply puts a random colour from the palette on the list of colours to rotate. Random - Changes the entire palette by random numbers. *THIS IS VERY EYE-STRAINING*USE AT RAVES ONLY* Use black - Rotates the colour black as well. This should be OFF for pictures like the initial mandelbrot, but can be used to great effect for in-depth zooms. HIDE ptr. - Removes the pointer during rotating, but can be shown if required. Edit delay - Between each rotation the computer will wait for n 50ths of a second. 1-6 are best. Use slower speeds for demonstrating to granny, eg 50 Nice rotations work by using a gradient palette (i.e. the default) and rotating 32 colours. Use a fast-ish speed 1-3, with a pattern like User 2/4, or any internal mandelbrot. PREFS - the "tailor-made software corporation" present.... Iterations - The number of calculations the computer will perform before giving up and plotting a black dot. For first and second level zooms 32 is enough. But any deeper you will need 100+. You may notice that some first level zooms have round edges. This is not a fault. This is because although there ARE other colour bands, you need more iterations to find them. Quasi: Re - Alter the REal offset to the Quasi mandelbrots. Quasi: Im - Alter the IMaginary offset for Quasi's. Both of these can be used to alter the appearance of a Quasi mandelbrot. Both values should be between -2 and +2 for best effect, with numbers around 0 looking very similar to the original m/brot. It will mean more to fanatics of fractals and registered users (shameless plug!). THE WORKSCREEN This is a major addition made at version 2.00. By entering this you may edit all of the mandelbrot data from a single platform. You simply click on the section you wish to change and a promt and cursor will appear. Change it and press return. To change the type of fractal click on 'Mandelbrot Set' where it says 'Current fractal type is a..'. You will then see the screen change to show all the available types of fractal. Click on one and OK, and the screen will reset. Some fractals use extra data. This can also be changed by clicking on it. To change the type of screen to be used on the next fractal click on the button marked 'screen'. A new screen will now appear. You simply click at the elements you wish to change and a box will appear around them. Certain combinations are not possible, i.e. a 64 colour hi-res mode. To prevent this, such numbers are not selectable - the buttons are removed to stop you trying! If you wish to use these new screen settings, then click on 'USE THESE' on the bottom right edge, otherwise CANCEL is available on the left. You can also use DEFAULT, which selects a 320x200 (256 for PAL users) screen, using 32 colours in lowres. Alternatively you could choose CURRENT which transports the current screen settings into the set-up. Along the bottom of the workscreen are 5 buttons. These are self explanatory. One thing to notice is that after loading a fractal, the screen will revert to the drawing screen so you can see it. In the olden days you could re-DEFINE the bounds of the current fractal, or alter the co-ordinates of the render to be. Now, by simply clicking on the number you wish to change, the entire task is made much easier. Standard input requesters allow input from the user, while a mouse click on another number will store that entry, and access the next (all clever stuff!). The 'standard palette' or 'iterations' buttons will both bring up an extra requester at the bottom of the screen. It is used in the same way as the other input requesters (see above). The help is now described... THE HELP SYSTEM This is an amazing system...I should know...I wrote it. As it allows you to scan backwards and forwards through a set of notes describing the software. It is NOT a copy of this file. It is a complete (shortened) version, specially written for in-program help. It does not contain many of the hints included in this file, but holds all the necessary information to get you out of most problems. Using it is straight forward. Click on the right arrow to go forwards, the left arrow to go back, and the click on the quit button to, well, quit! The arrows only appear if there are more pages in that direction. Check the help page number at the top of the screen if you are unsure about your position. KEY SHORT CUTS With the RIGHT hand AMIGA key.. L - load IFF S - save IFF D - define W - call workscreen V - version Q - Quit With the LEFT hand AMIGA key.. M - draw mandelbrot Q - draw Quasi I - draw internal J - draw julia SET (not zoom) Y - Mirror (about Y-axis) With the ALT keys.. left ALT with 1,2..8, store screen right ALT with 1,2..8, recall screen FUNCTION keys f1 - Default Palette f2 - Edit palette f3 - Rotate palette f4 - Black palette f10 - Set default OTHER KEYS DEL - remove box (and point) from screen ESC - Init. palette HELP - Calls the built-in help system cursors - move the screen around. The addition of a shift key will 'shift' the screen 10 pixels at a time (rather than 1) and 'control' will move the furthest extent in that direction. ...and that's about it. HINTS ON USE IFF FILES are about 10-20K each for 320x200x32 screens. DRAWings take about 5 mins for 1st level zooms (on A500 with 1Mb). They take longer if there's lots of black in them or more iterations. Use mirror if appropriate. ZOOMs should be made square and rendered using the central square for the best display. PALPREFS are for effects only. Save the piccy then play with palette changing. Amiga+A will allow you to multitask Yamg with other software. I can not vounch for the safety of this option, but Yamg is as safe as the next Amos program. VERSION NOTES 1.00 - Very rare! Now a collectors item!!! 1.01 - Upgraded to 32 colours. Added RECALL and STORE commands. 1.02 - Changed file format to include iterations and colours used. Also removed the right hand column of text before saving it and re-printed it afterwards. Saved file space. 1.03 - Added options for RE-COLOUR, SET DEFAULT and INIT PALETTE. 1.04 - Altered palette colours 0 and 2 (background and foreground text) upon depression of right mouse button. Added more hot keys. 2.00 - Added workscreen, multiple modes, help system. Place initial mandelbrot in memory upon loading. Re-worked menus. 2.01 - Extended recall/store. Correctly spelling in help (really Phil - was it worth mentioning that?) 2.02 - Added 3-D buttons to help and workscreens. 2.03 - Changed demo screens. Upgraded to work with PAL/NTSC screens Sped up rendering using nested multiplication. 2.04 - Added mandelbroid and logistics equations. Added default and current buttons on screen editor. Updated mdata file. Made icons look a little better under WB 2. 2.05 - Added render to full screen option. Upgraded lots of things! Changed icons (again), removed 'Yamg' from startup sequence because of bug in Amos (see below). FUTURE VERSIONS Even as you read this, I am improving this software...and writing new titles (Yet Another Shameless Plug!). The next version will probably include another 2 or 3 new equations, the ability to use interlaced screens, any bug fixes that are required and additions to whatever needs it. An advanced palette editor is also planned! During the next year, I'm hoping to buy (shock horror!) SAS C and re-write the drawing routines. This will speed the system up with a bit of luck. If you have already a PD routine that is AMOS call- able routine send it in and be co-credited for YAMG! I am also planning to spend some more time 'tidying up' the source code. That will make it easier for those with the source to understand it! Registered users with the source will obviously get a free update of it. I will also be producing (if I can find an assistant - hint) a fanzine for mandelbrots (and fractals in general). It will include details on how they work, programming techniques and examples galore. The next version will NOT include any demo screens within the program. I am fast running out of memory, and testing the program with them in is becoming a nightmare. Unless a vast amount of **registered** users object to this, all but the initial mandelbrot will be removed from the next version. KNOWN BUGS Oh, how I hate having to admit it, but there's still a couple of bugs in YAMG - but I don't think either of them are my fault (he says, trying to pass the blame). I have noticed the following... The pull down menus do not always disappear once you have release the mouse button, likewise with sub-menu items. The screen does not refresh, and there is no way to clear them. I think this has something to do with the workbench being closed, as I have had no errors when the workbench is open. This is just a guess however, and I await someone to correct me. However, calling the workscreen with AMIGA-W will remove the 'stuck menus', although they will appear the next time you press the right mouse button. The file requester (still) doesn't work. If you 'Cancel' the requester that asks for another disc then Mr. Guru says hello. This has to be AMOS as YAMG has no dealing with this part of the system. I may write my own file requester if I find time, but this is fairly low down my list of 'things to do'. REGISTERED USERS For a measily £5 you will be sent another disc with the latest version of YAMG, the AMOS source code, a file conversion program, source documents, the file spec for the mdata files, more demo screens, a complete description of complex numbers and the mathematics (i.e. nested multiplication) behind YAMG which make it faster than most other AMOS generators. You will also get anything else I think you may like!!! At present there`s over 80K of useful text, so it`s worth registering for this alone! £5 isn't much, but it will allow me to develop more software, and add extensions to YAMG. I will also try to answer any questions you have (about fractals that is!) Past registrations have enabled me to get my internal (only) drive fixed, buy every magazine with the word 'Amiga' in the title, use my Amiga as a disc storage unit and convert my disc boxes to storage boxes for my sweets. Lovely! UPDATES Registered users get FREE updates of all major versions. However, if you do not register you may still request updates for just £1.50 (which includes P&P). Send your cheque/postal order to either address below. DEVELOPMENT DETAILS This ENTIRE system was written by Steven 'Steev' Goodwin in a number of weeks during 1992/93. I have been interested in fractals for several years, and have put all my (relevant) knowledge into this product. It was written in AMOS basic (and compiled using the AMOS compiler) on an A500, with 1Mb ram...NO hard drive, NO second disc drive, NO colour monitor, NO colour TV, NO PC bridgeboard, NO software that comes from anywhere other than from coverdiscs... and several headaches. If anyone wants to take pity - please do! I'm not proud! Any hardware/software you send me will plugged to death in future releases so don't delay! Thanks go to Philip Hart, Mark Ireland and Robert Watkins for ideas and finding a few MINOR bugs (i.e. PROC Call_GURU). Hellos go to David Eade, William Siddons, and Angela (but not Sammy, Duncan or Bertie!). Finally, respect to everyone who makes music - the audio extension of the heart - I'll see you on Top of the Pops next week! COPYRIGHT NOTICES This software is copyright by Steven Goodwin 1992/3. It may, however, be distributed around this mortal coil by anyone, as long as they take no profit from doing so. They must also include every file included here. Any commercial use of this software must be approved by me first. The screens created are obviously PD, although a comment to "Yet Another Mandelbrot Generator" would be appreciated. If you do not wish to register, but are suffering from a guilt complex then you should send me (a poor suffering student) grant supplements and food parcels. This style of software release is thus known as STUDENTWARE. Do remember us students. We are jolly nice people - honest guv!! Look out for more programs, Pop Profiles, MOD files, sound samples and just about anything else that will emerge from me...it's bound to be good! You met me here first! STEVEN GOODWIN STEVEN GOODWIN ROYCE HALL 105 ST. JOHNS ROAD LOUGHBOROUGH UNIVERSITY CLACTON-ON-SEA LOUGHBOROUGH ESSEX CO16 8DB LEICESTERSHIRE LE11 3TZ (until July 1994) (vacation address) The latter is a more stable contact point, although it may a week or so to get to me during each term. The former will get a response within 2 days - but only during term time...the choice is yours!!! S.Goodwin1@lut.ac.uk - for the next year and a bit!