MandelPAUG v2.1 25 Jan 91 An enhanced Mandelbrot and Julia set fractal generator exclusively for the Amiga computer! This is a fully functional implementation of the MandFXP program which was written by Bruce Dawson and Steve Larocque of CygnusSoft Software in Vancouver, B.C. CygnusSoft Software released MandFXP as freely redistributable along with its source code. This version was produced by Jerry D. Hedden for inclusion in the Philadelphia Amiga Users Group's (PAUG) Public Domain Software Library. Compared to previous releases, this version has the complete on-line help function, a fully implemented "Mandelbrot and Julia set movie" mode, and sports many improvements in the user-interface. Non-visible changes include code cleanup, numerous bug fixes, better utilization of chip ram, and special code for utilizing 68020 32-bit multiplication. The algorithmic portions of the original MandFXP source are largely unchanged. Introduction and Theory ~~~~~~~~~~~~~~~~~~~~~~~ The Mandelbrot set and the Julia set are both what is known as 'fractals'. For each pixel, a mathematical operation is performed repeatedly on its coordinates until either the result grows larger than a certain limit (two) or the operation has been performed the maximum number of times selected by the user. This is why Mandelbrot programs take so long. For each pixel they may have to perform the same operation hundreds of times! If the result of the operation still hasn't exceeded two when the operation has been performed the maximum number of times, the pixel is considered to be in the Mandelbrot set (or Julia set) and is colored black. One important thing about fractals is that they are infinitely complex. No matter how far you zoom in, there will always be more detail farther in. If you seem to be running out of detail, it is because the maximum number of iterations is set too low. Raise it, and more of the details along the boundary of the set will appear. For more information try the book 'The Fractal Geometry of Nature' by Benoit Mandelbrot [Freeman Press] (he explains it better than could be done in the limited space available here), or past issues of Scientific American. To get a feel for why Mandelbrot images take so much time to draw, let's examine the case where the maximum iterations is set to 32 and the drawing area is 320x200 covering the full Mandelbrot set. Generating the image will require over 1,000,000 multiplications, 1,000,000 additions, 700,000 subtractions and tens of millions of other operations. No wonder... Outstanding Features of the MandelPAUG Program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ So just what does MandelPAUG have to offer? - Produces Mandelbrot and Julia sets in both two and three dimensions. - Very fast!! Uses custom, optimized algorithms for computations, and features a 'remember mode' that reduces recalculations. - Up to over 300 decimal places of accuracy. Varies with extent of zoom. - Full control over the number of iterations to be performed. Selectable color increments. - Full control over screen types and depth, window size, colors, etc. - Images can be saved as IFF files. Even partially completed images can be saved, and then brought back in for completion. - Full zoom in and zoom out control. Even scrolling of images is handled. - Images and specs can be saved as presets for fast recall. An 'undo' function can be used to recall the last image/spec. - Extensive on-line help! A very user-friendly interface. - Mandelbrot and Julia set Movies! Straight zoom-in or pan while zooming. Can be saved and loaded from disk. Check it out and enjoy!!! Before you run ~~~~~~~~~~~~~~ MandelPAUG requires the use of req.library for its file, color and text requesters. Therefore, you need to copy the 'req.library' file to your libs: directory. If run from the CLI, set the stack to 8000 first. Help ~~~~ The on-line help function can be reached from the menu or by pressing the Help key. From there, select the menu items you need information on. When done, exit the help function by pressing the escape key. The on-line help function is primarily designed as a quick reference. More details on any particular function can be found in this doc file. Documentation ~~~~~~~~~~~~~ The remainder of this file contains detailed information on the functions available in the MandelPAUG program. There is a great deal of information here. Please take the time to read through it in order to get the maximum utility and enjoyment from the program. The information presented below pretty much follows the order of menu item in the program. New/Reset ~~~~~~~~~ Resets the program back to the startup conditions: full Mandelbrot set with default settings. The user's disk-stored defaults, if found, will be used; otherwise, hardwired defaults will be set. The file used for the disk-stored defaults can be of any type that the program handles (since they all store the default information). However, the file must be named MandelPAUG.def. Opening Files ~~~~~~~~~~~~~ Loads in location, iterations, colors, etc. information, as well as image data (if saved). If 'Specs Only' were stored, then the program will start calculating the picture 'from scratch'. If saved with it's Image, it will load the image, and, if it was only a partially completed picture, will resume calculations where it had left off. Open defaults attempts to load default settings from the file MandelPAUG.def located in the current directory. The program then recalculates the image using these settings and the current location information. Saving Files ~~~~~~~~~~~~ Saves current program information to a file on disk. The user is given the option of storing the Specs (settings and location information), or the Image (which includes the Specs). The Image need not be complete, and when loaded, the program will continue calculations, if required. The program uses IFF standards, so a saved Image will be compatible with other programs that work with IFF pictures. Saving Defaults stores current settings (but not location information) that are used on startup, and when requested by the user. The Defaults file will be called MandelPAUG.def. IFF Files ~~~~~~~~~ The files that MandelPAUG stores are readable by paint programs, picture viewing programs, and anything else that handles IFF files. The extra data that MandelPAUG puts in the file will just be ignored by other programs. However, if you modify a MandelPAUG file with some other program (a paint program, for instance), don't try to load it back into MandelPAUG, as all the extra data that MandelPAUG requires will have been stripped away. Read/Write Errors ~~~~~~~~~~~~~~~~~ If something funky happens while reading or writing a file, you'll probably get an error message. The message will probably refer to the specific IFF chunk or program variable that couldn't be dealt with. The information may not be of much use other than to let you know that the file is probably unusable. It could be indicative of a bug, but most likely it'll be a problem with the disk media. Printing ~~~~~~~~ Obviously, these options require the use of a printer. Specs - Prints out current location and setting information. Image (Sync) - This prints out the image with the program being tied-up until the printing is done. Image (ASync) - As above, except spawns a separate task for the print job that multitasks with MandelPAUG. You might want to play with the colors a bit before printing, especially turning the black of the set to white to save on ribbon usage. Title Bar ~~~~~~~~~ The screens title bar can be toggled on and off. Window Size ~~~~~~~~~~~ Allows the user to select the size of the drawing area. The drawing area is always centered in the middle of the screen. A new image is generated in the new window using the previous location information. If the new window's shape is very different, the resulting image will be distorted. Use Restore Aspect in the Zoom submenus to correct this, if desired. Display Type ~~~~~~~~~~~~ You can choose between the high (640 pixels) and low (320 pixels) horizontal resolutions, and between the interlaced (400 rows) and non-interlaced (200 rows) vertical resolutions. Note that if the resolution is changed, the program will have to recalculate the image from the top. Some high resolution modes may cause screen contention (and thus a decrease in speed of up to 50%), if fast memory is not available. See the Bitplanes section for more information. Bitplanes ~~~~~~~~~ The number of bitplanes determines the number of colors available (as indicated by the menu items), and of course, each bitplane added uses proportionally more chip memory. Note that if the number of bitplanes is changed, the program will have to recalculate the image from the top (except if Remember Mode is On). Increasing the number of bitplanes increases the amount of 'work' the graphics chip has to do to display the screen. Hi-res mode (640 pixels) also increases the graphics chip's loading (interlace mode doesn't). If the load is too high, the chip will 'steal cycles' normally available to the CPU for accessing chip RAM. This 'contention' can result in a slowdown of programs running in chip RAM. The 'Settings' menu item will display the potential amount of contention for a particular screen. If the program is running in fast RAM, there is no contention, and this number can be ignored. Using a screen blanker, or placing the program's screen behind another with less contention (a normal Workbench screen, for example) will also eliminate (or at least reduce) contention. Modifying Colors ~~~~~~~~~~~~~~~~ Brings up a color requester for changing the current color set. Keyboard shortcuts for the requester: Arrow keys change the color selection; R, G and B increase/decrease the color's components depending on whether or not the shift is pressed; Left-Amiga-V and -B are 'Okay' and 'Cancel', respectively. It is suggested that colors 0 and 1 be left as black and white, respectively. Black represents pixels in the set, and white is used for boundary pixels. Loading Color Sets ~~~~~~~~~~~~~~~~~~ Loads one of the three stored color sets as the current (displayed) set. Save the current set before using this feature, if you have modified the colors. Saving Color Sets ~~~~~~~~~~~~~~~~~ Stores the current colors in one of three color set buffers for later use. Saving a color set will overwrite the data currently stored in that buffer. This function does not store colors on disk. Save Defaults performs that function. Color Cycling ~~~~~~~~~~~~~ The color cycling menu options are: Turn color cycling on and off; Change the cycling direction; and Set the delay time between cycling steps. Enter a value between 1 and 10000. To shift colors a single step out or in, use the '<' and '>' keys, respectively. If Cycling is On when the program is generating an image, colors will cycle one step after each line is drawn (after each pixel, if precision is three or higher). If Cycling is On when the image is saved, IFF cycling data will be added that can be used by other programs. Color Increment ~~~~~~~~~~~~~~~ The number of iterations done on a pixel determines its color. With an increment of one, successive iteration counts map to different colors. Thus, color bands will represent regions where the iterations is the same for each pixel. When the bands get too thin, especially when close to the set, increasing the color increment will widen the bands by mapping more than one successive count to the same color. Boundary Thickness ~~~~~~~~~~~~~~~~~~ Pictures of the Mandelbrot set tend to look best if those pixels in the set are colored black, and those very near the boundary of the set are colored white. This option allows you to set the percent of the iteration interval that will be colored using color 1 (which should normally be left as white for this effect). For example, with iterations set at 512, a 15% boundary will cause pixels with counts between about 435 and 511 to be colored white. Dimensions ~~~~~~~~~~ Select between a two- and three-dimensional view of the fractal. In the three-dimensional view, each 'point' is drawn as a line whose height is equal to the number of iterations for that point. This creates a rugged, surrealistic landscape with steep, colorful mountains rising towards the black hole that is the Mandelbrot (or Julia) set. The effects created with the three-dimensional view vary from astounding to dismal and messy. If some of your 3-D pictures don't look impressive, perhaps try somewhere else. Increasing the color increment reduces the contrast between the hills and valleys and improves some pictures. Pause ~~~~~ Select this when you want the program to temporarily stop calculating. This is useful especially on high iteration counts and a precision of 2 words, as the program will take several seconds before responding to the mouse button being depressed. When the pause has 'taken effect', the display will flash. When ready to resume, select this option again. Priority ~~~~~~~~ When calculating, MandelPAUG will consume as much CPU time as the system will allow, and even though it multitasks properly, you may notice a slow-down in the operation of system functions or other programs. Lowering the priority will still allow the program to consume all the 'idle' CPU time, and will keep it from bogging down the system. Zoom In Options ~~~~~~~~~~~~~~~ The zoom in options (Corner/Corner, Center/Radius, Corner/Proportional, and Center/Proportional) all allow you to specify a certain area of the image to zoom in on. In all cases, press the left mouse button and hold it down while moving the mouse to draw a box around the area you want to zoom in on. Upon releasing the button, you will be asked to confirm or cancel the zoom. There is a cancel menu for use before you start drawing a box. While drawing, releasing the mouse button outside the window will cancel the zoom. A '1-pixel' box (mouse not moved) will also cancel the zoom. Corner/Corner: With this function the corners of the box are set where the mouse button is pressed and released. As a result, the box can be any shape. This allows you to create distorted images by drawing oblong rectangles. This function gives you the most flexible control over the zoom area. Center/Radius: The center of the box is set where the mouse button is pressed, and one of the box's corners follows the mouse's movements. Corner/Proportional: One corner of the box is set where the mouse button is pressed. Mouse movement will draw a box that retains the proportions of the original image. Thus, no distortion occurs from the zoom. Center/Proportional: Like Corner/Proportional, except the box's center is set where the mouse button is pressed. Restore Aspect ~~~~~~~~~~~~~~ This function will correct the distortion caused in previous zooms. The 'zoom in' variety will use the smaller 'axis ratio' for restoring the aspect so that you end up zooming in towards the center of the window. The 'zoom out' variety uses the larger ratio which results in a zooming out. Zoom Out All The Way ~~~~~~~~~~~~~~~~~~~~ Takes you all the way back to the full fractal set. Zoom In/Out Times X ~~~~~~~~~~~~~~~~~~~ These functions will zoom in/out from the center of the window by the specified factor (2, 4, 8, or 16). Click to Set Center of New Image ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Click on the location you want the next image to be centered on. After selecting your 'new center', you'll be asked to confirm/cancel the operation. There is also a cancel menu for use before you click the mouse button. After confirmation, the program will start generating a new image centered on your 'click'. Click to Shift Image to New Center ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lines will be drawn on the display to identify the center of the image. Click on the location you want scrolled to the center. After selecting your 'new center', you'll be asked to confirm/cancel the operation. There is also a cancel menu for use before you click the mouse button. After confirmation, the program will start scrolling the image to center the location you clicked on. To stop the scrolling, select cancel from menu. Scrolling will stop after the completion of the current step. The wait pointer will disappear when scrolling has completed/ceased. The 5 key on the keypad is a keyboard shortcut for this function. Set Image Domain Manually ~~~~~~~~~~~~~~~~~~~~~~~~~ This allows you to specify the exact image area by entering the coordinates for the corners. You may enter the data with up to 300 digits of accuracy. Only fifteen digits of each number are displayed when in lo-res (thirty-five in hi-res). The other digits scroll as you type. Storing Presets ~~~~~~~~~~~~~~~ You use these functions to store the picture (or location) you are viewing to a buffer in memory. The image (or spec) can be recalled later using the Load Presets menu. When you store the area, it is saved into memory using the current Preset Storage Type (Image or Specs) at the bottom of the Store Presets submenu. You can choose between storing location information or the entire picture. Obviously, storing the image uses more memory. When you have something stored in one of the presets, an 'I' or an 'S' in menu item's text will remind you of what is stored there. Keyboard shortcuts for storing presets are '!' through ')' (i.e., shifted '1' through '0'). Loading Presets ~~~~~~~~~~~~~~~ Pictures or locations that have been saved to memory are redisplayed with this function. Keyboard shortcuts have been provided for loading the pictures so that a short slide show effect can be created. You can either hit one of the number keys (1 to 0) to display one of the presets, or you can hit '=' (for '+') or '-' to display the next or previous preset with an image stored in it. By holding down either the '=' or '-' key you can make quite an effective high-speed slide show. (This feature is somewhat obsolete with the implementation of the movie mode.) Undo ~~~~ The 'UNDO' function will return the program to the state before it last had to redraw the screen (you can even undo an undo). It uses the current Previous Storage type (Specs or Image) specified at the bottom of the menu. The options allow you to decide how much information the computer will keep track of for the UNDO function. If Specs is selected, only the location, window size, iterations, etc. is remembered, but none of the image is retained. With Image, 'everything' is remembered. Obviously, retaining the Image uses more memory. Iteration Count ~~~~~~~~~~~~~~~ Allows you to set the maximum number of calculations the program will perform for each pixel. Any pixel that reaches this maximum is considered to be in the Mandelbrot set and is colored black. Higher numbers take longer, but produce 'better looking' pictures. The Set Maximum item allows you to enter your own value for the maximum number of iterations to be performed on each pixel. When selected, a requester appears for you to enter a value between 2 and 32767. Remember, higher values result in proportionally longer times for generating pictures. The value you specify will be set in the next to the last menu item. Fractal Equation Selection ~~~~~~~~~~~~~~~~~~~~~~~~~~ The Julia set is very similar to the Mandelbrot set. Both use the equation z = z^2 + c, where z and c are complex numbers. Both use the location of each individual pixel as the initial value of z. Further, the Mandelbrot set uses the location of each pixel as the value of c, whereas the Julia set uses a constant c for the entire image. This constant value of c is set by the user, either manually when selecting the 'Julia Set' option, or automatically by clicking on a Mandelbrot image after selection the 'Click Julia c' option. The concept behind the automatic entry is that each point in the Mandelbrot set has an associated Julia set. The 'connected-' or 'fragmented-'ness of a Julia set image is affected by how far its c value is from the edge of the Mandelbrot set. When going from the Mandelbrot set to a Julia set, the last Mandelbrot set information is stored in a special preset. Whether specs, or specs and image are retained is determined by the setting at the bottom of the Store Presets menu. Upon 'returning' to the Mandelbrot set, this preset information is used to regenerate the display. Remember Mode ~~~~~~~~~~~~~ This mode allows MandelPAUG to keep a 'memory' of the iterations required for each pixel. While the cost in terms of memory usage will be heavy, the benefits can be well worth it. With this enabled, you can change the number of bitplanes, or the color increment, or the boundary thickness, or the dimension and the program will intelligently recalculate only that which is necessary. Most of the above will require NO recalculations at all! Only drawing time would be required. Lights, Camera, Action... Here comes Mandelbrot movies!!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Perhaps the most stupendous feature of the MandelPAUG program is the ability to automatically produce a series of images that can be "connected" together to form a movie. The effects that can be produced with this feature are rare and beautiful, and probably not available anywhere else on a personal computer. You can make movies from the Mandelbrot set, from any of the infinite number Julia sets, or make a movie of a series of Julia sets. Movies on Disk ~~~~~~~~~~~~~~ The frames of a movie are saved as individual IFF files, and have filename suffixes ranging from '.001' to '.999'. When saving to disk, if you supply a filename with no suffix, the frames will start with '.001'. If you supply a suffix, the program will use it (e.g., if you supply 'movie.005', that will be the name given to the first frame; the second will be 'movie.006', and so on). When loading, if you supply a filename with no suffix, the program will attempt to load your filename with suffix '.001' added. If your filename has a suffix, it will load that as the first frame, and proceed sequentially. Loading will halt when it runs out of files to load, or when the Maximum Frames count is reached (or sooner if you run out of memory). (E.g., if you specify 'movie.003' and a max of 5 frames, the program will load 'movie.003' through 'movie.007'.) Movie frames must all be of the same screen type. If a loaded frame has a different screen type from the previous frame, the movie will be deleted from memory. (This can come about when concatenating two movies by renaming the frame files.) Movie Playback ~~~~~~~~~~~~~~ Movie playback can only be performed by pressing F1 (i.e., there is no menu item for playing a movie). Once started, the movie will play continuously until another key (not F1) is pressed. Movie Playback Delay ~~~~~~~~~~~~~~~~~~~~ Allows you to set a delay from 0 to 3600 that is used between frames when playing back a movie. A delay of 60 equates to about 1 second. Loading a Movie ~~~~~~~~~~~~~~~ Allows you to load a previously saved movie from disk. The program will load frames from the one specified until it runs out of frames or until it has loaded the maximum number specified in the 'Frames' menu item. Saving a Movie ~~~~~~~~~~~~~~ Allows you to save a movie currently in memory to disk. Frames are stored as individual IFF files that are numbered sequentially. If a numeric suffix is supplied in the filename, it will be used for numbering the saved frames. Note that the specification data stored in frame files will be incorrect, except for the last frame. Make the movie to disk if you require proper specs in each frame's file. Maximum Number of Movie Frames ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Allows you to set the maximum number of frames in a movie. Where to Make the Movie ~~~~~~~~~~~~~~~~~~~~~~~ Movie frames can be saved to disk as they are completed, can be kept in memory for subsequent playback, or both. The default is to make it in memory, but not to disk. With 'Make to Disk', frames are saved as individual IFF files that are numbered sequentially. When you start making a movie, you'll be asked for a filename. If a numeric extension is supplied in the filename, it will be used for numbering the frames. Making to disk will ensure that each frame's file contains proper specs that can be subsequently used by the program, if required. Set Multiplier for Movie Zooms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Allows you to set a 'multiplier' from 1 to 65535 that will used to determine the zoom factor between movie frames. The zoom factor will be 65536 divided by the multiplier (e.g., 32768 would be a zoom of 2; 43691 a zoom of 1.5). Set Multiplier With Mouse ~~~~~~~~~~~~~~~~~~~~~~~~~ Allows you to set the 'multiplier' using the mouse. Frame the size of the window you want zoomed in on for each movie frame, and then click the mouse button. Zoom-In On Center Movie ~~~~~~~~~~~~~~~~~~~~~~~ Makes a 'zoom in on the center' type movie on the current image; using the 'multiplier' to determine the zoom factor between frames. Zoom-In On an Area Movie ~~~~~~~~~~~~~~~~~~~~~~~~ Hold the mouse button and frame a area you want zoomed in on for the movie. The options allow you to set an area proportional to the current window either by 'dragging' the box from corner to corner, or by clicking on the center and dragging outward. The program will then make a movie that zooms and shifts from frame to frame. The zoom factor is determined automatically based on the size of the area you select and the number in the Frames menu item. Preset 1 to Preset 2 Movie ~~~~~~~~~~~~~~~~~~~~~~~~~~ This feature makes a movie that spans from the information stored in Preset 1 to that stored in Preset 2. In other words, the first frame will be what is specified in Preset 1, the last uses Preset 2, and the frames in between will zoom and pan between the two. Obviously, all that is required is that information be set in Presets 1 and 2. The zoom factor is determined automatically based on the data in the Presets and the number in the Frames menu item. Preset 1 can be set with either an image or a spec. If it is an image, the image will be used (and completed if only partially done). Preset 2 can be image or spec, too. However, the program only uses location data from Preset 2. Thus, even if Preset 2 contains an image, it will not be used, and the last frame of the movie will be calculated in full. Julia Set Movies ~~~~~~~~~~~~~~~~ Julia set movies are a series of full Julia set images in which the 'c' value changes between frames. First, setup on a initial Mandelbrot set image. Don't zoom in too far or the 'c' values won't change much and the frames will all look alike. Next, press F9 or use the menu for Julia Movie. Now click the mouse on the Mandelbrot image, and while holding down the mouse button, 'drag' a line. The Julia set images will use 'c' values along this line at intervals determined by the number of frames you specify. Julia set movies can be made in RAM or to disk, saved, loaded and played back just like 'zoom-in' movies. Delete the Movie From Memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Deletes a movie from memory, and releases the memory it used. You don't have to clear out one movie before making or loading another; the program will do that automatically. Cut! ~~~~ You can cancel a movie in the making with the cancel menu. That will cause the current image to be the last frame, and control will return to you when that image is finished. Show Current Settings ~~~~~~~~~~~~~~~~~~~~~ This displays information about the current program settings. Most of the items refer to current options selectable by the user. See the Bitplanes section for information about contention. The Image Domain refers to the coordinates for the left edge, horizontal center, right edge, top edge, vertical center and bottom edge of the display. The Precision refers to the number of 16-bit words of data used to represent numbers in the program. As you zoom in, the Precision will increase and so will the calculation times. You can zoom in up to 31 words of precision. (I don't think you'll ever get that far. The most I ever did was 7, and it took 2.5 DAYS! to generate a hi-res interlaced image on a 68010 processor.) The time at the bottom of the display refers to the amount of time the program has spent generating the current image. It is intended to give you an idea as to how rapidly picture generation is proceeding, and may not perfectly accurate (or even correct). In particular, many menu operations do not 'pause the clock' (although some do), and scrolling after the picture has completed does not add to the time. Help Mode ~~~~~~~~~ When in help mode, just select a menu item, and any information on the item will be displayed. Some items may tell you to refer to this doc file for specific information (the trivial one do that). Some items may have more than one page of information. If is at the bottom of a page, click with the mouse or hit space to get the next page. When done with help, click the close gadget or hit escape. The help key or a '?' can be used to access the help mode in addition to using the menu. Keyboard Usage ~~~~~~~~~~~~~~ Amiga users have come to appreciate the ability to use single keystrokes to access functions instead of having to constantly use the menus. Thus, MandelPAUG allows menu items with shortcuts to be accessed by typing the shortcut key all by itself (as well as with the Right-Amiga key combination). Menu keys (and alternates): X : New/reset O : Open spec/image S : Save image P : Spawn task to print image W : Change window size K : Modify colors Tab : Turn color cycling on/off . : Change color cycling direction to 'in' , : Change color cycling direction to 'out' Space/Caps lock : Pause Q/Escape : Quit D : Zoom in corner/corner (along diagonal) R : Zoom in center/radius C : Zoom in corner/proportional M : Zoom in center/proportional (from middle) ] : Zoom in two times } : Zoom in sixteen times A : Restore aspect (zoom in) Z : Zoom out all the way [ : Zoom out two times { : Zoom out sixteen times Keypad 5 : Click on center with scrolling ! thru ) : Store presets 1 thru 0 : Load presets U/Backspace : Undo J : Click on Mandelbrot image to set Julia set 'c' value F2 : Enter 'frame delay' for movie playback (60 = 1 sec.) F3 : Enter number of frames to make/load F4 : Toggle make 'to disk' F5 : Toggle make 'in RAM' F6 : Set 'multiplier' with mouse F7 : Make a central zoom movie F8 : Make movie using presets 1 and 2 F9 : Make a Julia set movie F10 : Erase movie from memory I : Show information on current image ?/Help : Help mode Some functions, by the nature of their operations, cannot be accessed through menus. These include: F1 : Play movie continuously (press any other key to stop) > : Cycle colors one step 'in' < : Cycle colors one step 'out' - : Display previous image stored in presets = : Display next image stored in presets The image can be scrolled using either the numeric keypad, or the arrow keys. The numeric keypad is configured to scroll the window as follows: 7-up,left 8-up 9-up,right 4-left 6-right 1-down,left 2-down 3-down,right The arrow keys function analogously. Using the shift key with a scrolling key will repeat the step 10 times. To stop multiple scrolling, select cancel from the menu. Scrolling will stop after the completion of the current step. The wait pointer will disappear when scrolling has completed/ceased. There are keyboard shortcuts that can be used when entering the image domain or entering the 'c' value for the Julia set. Hitting return moves the cursor to the next 'box'. On the last box, the cursor disappears. At this point, you can: Hit return to put the cursor back to the first box; hit 'Y' or Left-Amiga-V to simulate selecting the confirm gadget; or hit 'N', 'Q', Escape, or Left-Amiga-B for cancel. There are also a number of keyboard shortcuts that can be used with the color requester. See information on 'Modify Colors' for details. "Unusual" Features ~~~~~~~~~~~~~~~~~~ The frame files for a movie that is made in memory and then saved to disk will all contain the location information for the last frame (i.e., the location data will not match the image except for the last frame). Thus, strange things may occur if one of these files is loaded as a separate image for zooming, movie making, etc. Making the movie to disk will ensure that correct location data is saved in each frame file. If a movie is present in memory, and the display characteristics are changed (bit planes, interlace, resolution, etc.), the movie will be deleted from memory. Bugs ~~~~ None!!! I fixed all the bugs I was informed of. Many thanks to all those people that brought them to my attention. Yet, as I like to say: "There's always one more bug!" So, please, let me know if you find any. Source Code ~~~~~~~~~~~ Source code is available for both MandelPAUG and its 'parent' MandFXP. Send either $5.00 or a self-addressed-stamped mailer with a blank disk to the address below. Questions, Bug Reports, Source Requests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I can be contacted at: Mailing address: Jerry D. Hedden 28 Windemere Dr. Sicklerville, NJ 08081-3023 Home phone: 609-629-3975 Internet: hedden@esdsdf.dnet.ge.com