ffff20

advertisement
*************************************************************************
*
****
FAST FPU FRACTAL FUN (FFFF) v2.0
****
****
(C) 01/10/1995
Daniele Paccaloni [DDT/HBT]
****
*************************************************************************
*
***
Contact me in Internet at:
paccalon@linux.infosquare.it
***
***
or
paccalon@ghost.dsi.unimi.it
***
*************************************************************************
*
0.-1 : FFFF HISTORY
* v1.0 : First release. Only used 320x200 with 256 colors (MCGA).
* v1.1 : Never released. Added some little improvements as well as
model specific registers support giving exact MFLOPS values
(pentium or better CPU).
Core routine a bit faster.
* v2.0 : Uses 800x600 with 32768 colors (VESA SVGA, HiColor mode).
Up to 32000 colors simultaneously on screen for unmatched
rendering
quality.
Added a palette editor.
Custom mouse pointer routines using old authentic golden-days
Amiga's arrow shape.
Added zoom-box.
Added global zoom-out function that restores the whole set.
Keyboard buffer is now flushed on exit.
0.0 : INTRODUCTION
Another Mandelbrot set generator.... why should i care ? I have plenty.
Well... there are 4 main reasons for you should care:
1) FFFF is the first Mandelbrot generator working in hicolor gfx modes
thus using up to 32768 different colors on screen.
... or at least the first i have seen ... :)
2) FFFF has the fastest hi-res Mandelbrot core routine. Even faster than
Fractint when using floating point maths.
If my pentium's MSR says right FFFF should be calculating at a speed
of
about 26 MFLOPS (100 MHz pentium).
3) FFFF is SMALL !!! Executable is 4460 bytes (less than half this doc
size)
!!! You can fit it in any disk. (It's 100% machine code. 000% C code).
4) FFFF is FREEWARE! But if you want to send me money, hardware, food,
girls, please DO IT ! :)
You are free to use FFFF and to copy it, but you must NOT modify
the original archive.
If you register sending me $5 (five US dollars) you will receive all
future updates (my address is at the end of this doc).
1.0 : WHAT DO I NEED TO RUN FFFF ?
Read before you complain...
Evenif the code is pentium optimized you just need a 80386 (at least)
and of course a math coprocessor.
If you have a pentium you will get the REAL performance, consider that
FFFF is tuned for the pentium's FPU.
Any of the following processors will run FFFF:
* 80386
+ 80387
* 80486SX + 80487
* 80486DX
* 80486DX2
* 80486DX4
* Pentium (Don't worry, the Mandelbrot formula has no FDIV inside! :).
* P6 (or Pentium-PRO) ?
(not tested yet :)
You need less than 80 KB of available RAM to run FFFF.
You need a mouse driver (any should work since release 2.0 has custom
built
in cursor routines).
----- VERY IMPORTANT: ----You need a SVGA supporting 800x600 with 32768 colors. Your SVGA should
have
a VESA BIOS supporting the bank change function (all decent new SVGA have
this
function). If your SVGA BIOS cant do this, please load a recent VESA TSR
(like
UNIVESA.EXE or UNIVBE.EXE).
If you have some problems (you see only a mangled image on the top of the
screen) this is probably due to your SVGA BIOS not correctly supporting
the
VESA bank change function: loading a recent VBE TSR (i like UNIVBE.EXE)
should
solve the problem.
If printed messages appear splitted or stretched or do not appear at all
it's
not my fault.
Especially on many Cirrus boards the BIOS print routine does not work
right
in hicolor modes. It's time for them to FIX this.
I use a Diamond Stealth-64 and all's fine.
1.1 : HOW IS IT POSSIBLE ? FASTER THAN FRACTINT ?
Well, not always. Fractint, at low zoom levels, uses integercalculations
and will be faster. Also, Fractint has a guessing algorithm, nice trick
to speedup calculation of areas of the same color.
When is FFFF faster ?? Well, when you go deep-zooming inside complicated
areas of the mandelbrot set (like i do :).
If you only want to see the entire set then use Fractint ! Fractint also
uses
mirroring on the X axis, that halves the time to render the entire set
but
is completely useless when you start to zoom !
1.2 : HOW DO I USE FFFF ?
When you start FFFF, it will calculate the entire Mandelbrot set.
When it's done there will appear the mouse pointer arrow and you can
zoom.
You can stop the calculation any time, just keep SPACE pressed until it
stops !
Remember that when the calculation is in progress you can't see the mouse
arrow, nor you can zoom or edit the palette. The only thing you can do
when
FFFF is calculating is wait or press SPACE to stop it. Choose one...
Now, click on the upper left corner of the box you want to zoom and KEEP
the
button pressed. Release it when you are on the lower right corner of the
box
to zoom. In this version of FFFF i have at last included a zoom-box so
that
even the dullest user can use it easily.
If you want to increase/decrease the number of iterations used by the
formula
just keep the right mouse button pressed and move the mouse to the
right/left.
The default number of iterations is 255, you'll want to increase it when
zooming if the black region is too large (up to 65535).
More iterations mean more time to render !
If you zoom too many times then you will see the screen all filled with
same-color pixels... congratulations, you've reached the 10^15 zoom
limit of the floating point coprocessor.
The fractal trip is one way. If you want to zoom on another area then
press the 'R' key to zoom-out to the whole set.
You can exit from FFFF using the ESC key.
1.3 : WHY 32000 COLORS ? HOW DO I EDIT THEM ?
All other Mandelbrot programs use 256 or less colors. They are many
but...
sometimes, zooming in complicated zones using many iterations (like on
big
"galaxies") you will see your 256 colors repeated cyclically (i.e.
iterations
1, 257, 513, 1025 will all use the same color: color 1) thus rendering a
color-poor, boring or even confused image.
FFFF v2.0 is using a palette of 32000 colors. Any color of the palette
has
32 levels of R, B and G so the possible color hues are 32^3=32768.
This allows you to associate a different color to any iteration in the
range
1..32000. Since it's hard to calculate a Mandelbrot image with more than
32000 iterations (i haven't a Cray supercomputer, yet..), you can change
the
color of any iteration without affecting the color of another one.
When the program starts the palette is the default one, generated by a
simple
parametric sawtooth function. All colors in the palette (0 to 31999) are
defined.
You can edit your 32000 colors palette using the Palette Editor (press
the P
key after the calculation stops).
You will see four color bands, one representing the red function, another
the
green function, another the blue function and another the current
palette.
In the x-axis there's the color number. Since the screen is 800 pixels
wide
you can view only 800 colors at a time. When you first enter the Palette
Editor you see color 0..799 (color page 0), pressing the "Cursor Right"
or
"Cursor Left" keys you can move to other color pages. Color page 27h, for
example, shows colors 31200..31999.
Color pages other than 0 are useful only if calculating the mandelbrot
using
more than 800 iterations (obviously).
To edit each color just move the mouse to the corresponding x position
and
press the left key on the wanted value in the R,G or B function bands.
Keep the button pressed and slowly move the mouse to edit adiacent
colors.
You CANT redefine color 0 (BLACK, the Mandelbrot inside color) because i
hate
mandelbrot inside colors other than BLACK.
To rotate the palette left or right press the cursor DOWN or UP keys.
When your palette looks nice, press the SPACE bar to return to the
previous
image. It will be recomputed because of the new color palette.
1.4 : FUTURE RELEASES
Planning a 16M colors version.
I will include a screen saver (TGA files) for all registered users ($5).
If i get enough messages of people saying i should improve the GUI, i
will :)
But gimme feedback !
Model specific registers will report exact MFLOPS values for your system
if you
have a pentium or better CPU (this feature is already implemented but
results
are not shown, sorry).
1.5 : FINAL WORDS !
I coded FFFF because i love fractals. I also want to show that on an
MSDOS
machine there can be nice programs even if they do not need 10 MB of disk
space
(or require 8 Mb of RAM).
The secret for FAST&SMALL is 100% MACHINE CODE !!!
Let me know for any comment or suggestion !
Contact me:
EMAIL : paccalon@linux.infosquare.it (use this if you can)
or
paccalon@ghost.dsi.unimi.it
MAIL
: Daniele Paccaloni
Via Agadir 10/A,
20097 S.Donato (MILAN)
ITALY
Download