Mandelbrot Madness!

Version 2.0 -- Technical Information

[Return to Index]

MM! File Listing

Below is a listing of all the files installed with Mandelbrot Madness! and the purpose they serve. Note that some files are optional and may only be installed if you explicitly chose to enable that functionality.

Mandelbrot Madness.exe The core application executable. This is the program you run when you actually use MM! Without this, you won't get very far.
PaletteBuilder.exe The PaletteBuilder helper application. While this is commonly loaded by clicking the PaletteBuilder button in the main toolbar, it can be run as a separate application.
mmbatch.exe Optional. A command-line console version of MM! that lets you render fractals in unattended batch mode.
MMCommon.dll A library file that contains code common to MM!'s various parts. Without this, you won't get very far.
Additional libraries used for opening, saving, and converting to and from MOB files. These are required because MOB files are Java-based, not .NET-based, so they cannot be opened natively by .NET applications. This fact is a quirk of implementation, though, so all you really need to worry about is that these libraries are present and accounted for.
mmxv1.xsd An XML schema definition describing the MM XML file format. Without this file, you will not be able to open or save MM XML files.
help/* MM! online help files. These are simple HTML documents and images, and the help system actually launches your default Web browser to display them. MM! will complain if you try to launch the help contents and it can't find these files.
mandel.ico A Windows icon file, just because.
unins*.* Uninstall files. These can be safely ignored, but don't remove them.
PathTweaker.exe A small helper application required by the install and uninstall programs. This will only be installed if you install batch mode and can be safely ignored.


Supported File Types

Mandelbrot Madness! supports three different parameter file types and five image file types:

MM XML files
MM XML files (which usually have the extension ".mm") are new to MM! starting with this version. These files are XML files that contain all the parameter information needed to generate a given image. Like MOB files below, MM XML files can include palette information, meaning all your information can be contained in a single file. MM XML files can be saved as raw text, or they can also be compressed using GZIP compression to save space. A new feature unique to this format is prerendered image data. When you generate an image, you can elect to store prerendered image data in the resulting XML. When the file is reopened, you can use the prerendered data as a shortcut to the expensive fractal generation step. If you take advantage of prerendering, however, it is strongly recommended that you enable compression, as prerender data can make your MM XML files very large. At the time of this writing, MM XML files cannot be opened by any other version of MM!, although MM XML support is planned for the next version of Mandelbrot Madness! JAVA (version 4.1).

MMJ files
MMJ files are application-specific text files that store parameter information for creating MM! images. Using MMJ files, you can store the exact parameters required to generate a given image and, combined with using a PAL file, you can store custom palette information as well. An MMJ and PAL file combination uses far less space than the corresponding image file, and can be read by MM! or MMJ! on any platform. If you want to show a friend a certain image you created, let them zoom in from that point, and save bandwidth sending it to them, this is the way to go!

It should be noted that the MMJ file format has changed between MMJ! 2.x and higher versions. This was necessary to support zooming in Julia set images. These two file versions are not compatible. This version of MM! can read both versions of the file, but cannot write the 2.x version. Similarly, MMJ! 2.x cannot read a parameter file written by this version of MM! A conversion utility is included as part of this installation; you can learn more about this utility in the command line utilities section. (Versions 4.0 and 3.x of MMJ! use the same MMJ file format as this program, so no conversion is necessary between them.)

PAL files
PAL files store color palette information. MM! primarily uses the JASC-PAL file format developed by Jasc Software (now owned by Corel) and used in their popular Paint Shop Pro image editing software. I used the JASC-PAL format because it is simple to read and create, since it is merely a text file. Note that other programs may use this extension, such as the Microsoft PAL format. MM! can read Microsoft PAL files, but will only write JASC PAL files. You can create your own PAL files using the PaletteBuilder helper application, or saving a palette along with an MMJ parameter file. MM! can only read 16- and 256-color palettes.

MOB files
MOB files were introduced in MMJ! version 3.1. A MOB file is a compressed binary file that contains both the parameter information of the MMJ file and the palette information of the PAL file. They can only be read by versions 3.1 and above of MMJ! and this version of MM! Their primary advantage is their smaller size and the fact they keep the parameter and palette information in the same place. Their biggest disadvantage is that they are not compatible with version of MMJ! before 3.1.

PNG files
The PNG (Portable Network Graphics) format is a graphics file format developed as a replacement for the patent-troubled CompuServer GIF format. PNG offers lossless compression and has many additional features unavailable in restrictive GIFs. In addition, it is free from patent snares, unlike GIF's entanglements with Unisys. MM! uses PNG as its default image file format. MM! cannot open PNG files; it can only save them. For more information on PNG, see the official PNG web site at We recommend the use of PNG files over other image formats because of their strong lossless compression and the clarity of the resulting image.

Windows Bitmap (BMP) files
Windows bitmaps are uncompressed image files that have been a standard on Microsoft operating systems since Windows began. Because of its ubiquitous wide-spread use (thanks to Microsoft's ubiquitous wide-spread use of Windows), BMP files are excellent for sharing with others, even if they don't use Windows. The primary caveat to BMPs are that they are uncompressed, and thus images with large dimensions can have very large file sizes. We recommend the use of BMPs when using PNGs are either not an option or not preferred.

Tagged Image File Format (TIFF) files
TIFF files have long been used for exchanging images. While TIFFs are very flexible, that also makes them difficult to implement. Most image editors should be able to open TIFF files generated by MM! without any difficulty.

Compuserve GIF files
GIF files were the first great portable image format on the Internet, and thus you'd be hard pressed not to find someone who can read them. Unfortunately, GIFs technical limitations and questionable patent history has made this format unpopular, especially among developers. Also unfortunately, while we have included GIF support in MM! (mostly because it was ridiculously easy to implement, thanks to .NET), we do not recommend its use. Our testing experiences have shown that .NET's GIF implementation dithers all images to the Netscape "safety" palette, forcing the resulting image file to be badly garbled. Your mileage may vary. We're investigating a few fixes for this problem, but since the above formats produce very acceptable results, it's very low on our priority list.

JPEG files
Created by the Joint Photographic Experts Group, JPEG files are excellent for compressing and storing photographic data. Unfortunately, this compression scheme makes them rather impractical for compressing fractals. Our testing experiences have shown that .NET's JPEG implementation compresses images in a way that may be suitable for photos, but will greatly distort images generated by MM! Thus, we do not recommend saving your fractals generated by MM! in JPEG format. Of course, in the tradition of giving you enough rope to hang yourself if you so desire, you are free to use it if you want.


Known Bugs

Unfortunately, even the best of programs have "bugs." (It's just that the best of 'em don't have as many!) Here are a few of the known bugs in MM! that I am working on fixing. Please do not report these; I already know about them. If you find what you think is a bug, follow these actions:

  1. Check this list for known bugs first. If you can't find it here...
  2. Check the FAQ to make sure what you found is really a bug and not a quirk of Java that has no workaround. If you can't find your problem there...
  3. Mail me at and give me the following information:

I can't guarantee that I can fix all problems, especially since I don't have access to all the platforms you could run MM! on. However, I will certainly try. Now, as promised, here's that bug list:


The MM! Wish List

The "Wish List" is a list of additional features I'd like to implement in the near future for MM! Some are things that I would love to have (once I figure out how to do them); others are things I would have put in here, but I didn't have time or would have had to redesign the program from the ground up to include. Anyway, here's some things to look for in MM! v2.1 (or 3.0, or 2000...):


[Return to Index]

© Copyright 2007, Jeffrey T. Darlington. All rights reserved.