Version 3.0 MOST SIGNIFICANT CHANGE: o Richard M. Stallman agreed with adding XaoS into GNU project Fixes: o XaoS is now sticky bit save when svgadriver enabled o Fixed crash in resizing in stereogram mode o Fixed crash in stereogram mode+different scanline/width o Fixed crash with dealing NaN sizes o Fixed small bug in mkrealloctable o Fixed ctrl87.c to do not make compilation problems anymore (was renamed to i386.c :) but also some register conflicts fixed. o Fixed memory owerflowing in julia code o Removed GIF code due to patent problems o Timer library and ui code now handles better low resolution timers Also measuring of time for status line changed. So gives bit different results now :) (lower but more exact) o Fixed few minnor bugs in solid guessing. Now it should be more effective. But who knows... o -incoloring now works Major code reorganization. o New palette functions supports x truecolor, truecolor24, hicolor and maxcolor handling x allocation/set palette scheme o New nice image structure that suppotrs: x truecolor, truecolor24, hicolor, maxcolor, and 256 colors x nonstandard order of lines (like one in windoze etc..) x double buffering x palette functions o New partially object oriented filter sistem x allows elegant way to add effects like stereogram generation x makes possible to reduce resolution after stereogram etc.. x combination of various calculation algorithms is now possible in elegant way x makes source code much cleaner and extensible o New user interface helper library x makes easy to add new user interfaces or use as a part of some other program x implemented in cleaner way than old ugly-interface x hides XaoS's internals and provides easy to understand set of functions for users of XaoS engine. o XaoS now uses center/range possitioning instead of left top/right bottom becase: x it is better human readable (you can see zoom easily) x it is more exact (small difference do not fall to zero as soon as in normal system) x it is easier to handle in rotation (you can do still same operations - zooms, movements like in unrotated. x better fits operation permited in(zooming view/moving) x I expect will look better in save files x simplified many operations performed on it. o As the side effect: x old ugly interface code is a bit obsolette. Requires small changes into drivers x no more large zoom_context. Context is now divided into many parts. So many structures should be used by other parts of XaoS separately. x zoom.[ch] splitted into fractal routines and zooming engine. This makes easier add ingnew zooming/calculation methods (like on in fractos, boundary detection...) x most of siggnificant data structures are copied into fixed memory locations before start of calculation. I expect it will speed up accesing its field because complex traveling throught pointers will be avoided and reduces number of parameters passed to calculation functions. At the other hand it should bring many problems in multithreading. In calculating one image at many procesors should be OK. Since these structures are same. Calculating of multiple images at time should be real problem. But why not use multitasking? or some hack with redefinig this structures back into pointers should be possible in this cases. x less multiplyings but more memory accesses in calcline/column should speedup on pentiums with fast cache. x autopilot now should work at many contexts at time x better implementation of fill x many new bugs but few old fixed x ugly interface code was greatly simplified since everything interesting went into ui_helper x resizing and such stuff is now much simplier x palette rotation implemented in cleaner way. Now does not require changes into drivers. Uses new setpalette driver function. I can not imagine hardware, where setpalette is imposible but rotation possible. x timer library now passes userdata to handlers - required for implementation of rotatepalette x palette rotatin in truecolor modes is not possible anymore (since xaos is not internally 8bit) Cleanups: o New macro system for formulas that allows easy manipulation with calculation loops. But looks ugly. Is that cleanup? o Julia code is now automatically generated for formulas.. o Directory structure, XaoS divided into several libs (engine,ui,util,drivers) o Simplier configuration headers o timerlib:wait mechanizm has obsoletted by much better slowdown mechanizm Speedups: o Boundary detection for new images o I've browsed mkrealloctable and removed few unnecesary ifs. Maybe it speeded up.. o MAGICAL VALUE OF 100 FPS IS GONE!!!! Now you can see 120 FPS on pentium :) New completly fixedpoint mkrealloctable performs very well! (isn't that cool idea? just simple precalclate everything into fixedpoint that depends on the zoom and do rest in integers ? :))) I am so silly coder! now XaoS usually does not fall under 7fps on my 486 so it works in acceprable performance. maybe we should add logo "Ready for 486!(tm)" :) (and whats about fixed point calculation loops? :) Fixedpoint brought many advantages - precalculated pow tables, no owerflowing/NaN/precisity problems, many variables changed to constants(since distance between lines is statically 512) and much more :) Now we should start thinking about deepzoom feature since most of XaoS is already resolution independent. New mkrealloctable is approx twice as fast on pentium (tests on 486 should be interesting) o Dynamical resolution lowering now performs much better (Should help especially on 486) o Better dynamical resolution timeout choice - keeps higher framerate during zooming but lowers after zooming stops. o At 386 uses uptimized versions of memset and memcpy o A bit faster julia calculation loop o Autopilot code is now simplier, faster, has better out of range and lowqualitty detection and seems to have better results o Macro system in calculation loop caused instant speedup. Why? o New new possition caluclation algorithm. Seems to be a bit faster and produces better results o Random dot generator now reduces resolution to 1/4, because brain is unable to decode image inormations at normal resolution. :) o New uncompressed loops - one iteration for mandelbrot is just about 14 instructions (was 23) o Periodicity checking Fabrice Premel o Another 1/8 speedup caused by forcing register allocation (i386 only) o Malloc/free is now called less often (once per frame) New features: o BeOs driver. Jens Kilian o Truecolor(24/32-little and big edian), Hicolor, Realcolor, Fixedcolor and monochrome support o Interlace filter that instantly makes your computer twice as fast! o Motion blur filter o Dithering filter o Julia preview for all formula types o Image rotation o New AA-lib driver that does high qualitty text mode rendering see AA project homepage at http://www.ta.jcu.cz/aa o Two edge detection filters o Palette emulation filter o Emboss filter o SMP support using threads o Two new palette generation algorithms o Changed default window size to 480x360 because I hope that XaoS is now fast enought to work in resonable speed at this resolution o Animated tutorials: Introduction to fractal features overview whats new o New outcoloring modes: o Potential o Another colorfull decomposition o Smooth (for truecolor/truecolor24/hicolor/realcolor displays) o New incoloring modes o decomposition-like o real/imag o Save images into PNG format. Problem is that now XaoS requires zlib and pnglib that should bring problems to users compiling XaoS at UNIX workstations. I personally dislike writing of image saving code. Please if you have some, or you want to write code, that don't require these libraries, let me know. o Saving of possition. o Documentation is now in texinfo format. Describes some XaoS internals o Timer library: x handler should remove its timer when activated x New slowdown, stop and resume functions x Runtime switching between allegro compatible mode and uclock mode o Configure script now does simple autodetection for long double - enables it just at intel compatible platforms, since it is sure, that it works well there. Let me know about other platforms with fast working long double o New file README.compilers, that discuss optimizing switches/problems with various compilers/platforms. UI Changes o added -delay option as suggested by Johan Hagman o added -maxframerate option that is similiar to -delay o added -letterspersec option to changes subtitles speed o added -threads command line option o added menu for saving o added .XaoSrc file o new -play, -load, -letterspersec options o major rewrite o 'E' now handle filters (not just stereogram) o 'O' now handler image rOtation o 'B' for perbutation o Help should be paged using up and down arrow o 'S' now have menu for various saving options also during animation recording 'S' menu contains some special commands like clearing of sceeen or text ourput primitives o 'V' now handles "various stuff menu" - menu with not so often used thinks. So 'K' 'G' 'T' and 'D' are free again :) o Palette rotation renamed to color cycling to reduce confusin with image rotation. So it is activated by 'Y' now. o Julia mode is not disabled after keypress. o Configuration file o Drivers now provides information about textwidth and function to clear screen o New timming code allowing better replay at different resolution/computer o dynamic time for dynamic resolution (nice feature :) now works better on architectures with unexact timming(like dos with old timming routines) PLAN9 Changes o Updated driver to work better with new user interface code, some cleanups o -nopalette switch is now handled better - XaoS enables dithering so output is almost identical to user palette mode. Just it is a bit slower and requires more memory. o Removed mkfile, since it became obsolette because of source code reorganization. I am still unable to write mkfiles since some required files seems to be missing in "demo" installation so back to mk script :( o Suport for 1bpp displays SVGA Changes o Supports truecolor, missordered truecolor, truecolor24, hicolor and realcolor modes o Some hacks in order to make thread stuff working X11 Changes o support for fullscreen mode so XaoS can act as screensaver. Johan Hagman o works on alphas and other 64bit architectures in hicolor/truecolor mode Alexander V. Lukyanov (this change is now obsolette since hicolor/truecolor is in the main engine now) o removed some XFlush calls so XaoS is now MUCH faster, but should make problems at old servers. Use -sync o Fixed resize and keysym crash o Supports truecolor, missordered truecolor, hicolor, realcolor and fixedcolor o Uses private colormap as default since shared colormap looks too ugly. (note that shared colormap scheme is still supported, but features are bit limited) o added -display switch o Now have normal, wait and replay mouse o Handles keyboard better. o Reduced memory usage in X11 modes o Support for black and white modes DOS Changes o supports new allegro(2.2)-better dialog, portability, higher resolutions o fixed timming - now it works in much higher framerate(not limited to 18.2 and even to 3.64 in dynamic resolution) o new -i_love_bill for windows friendly mode o Now compiles with lfn enabled o does not work under linux dosemulator anymore (dosemulator guys fixed the problem, so it works again :) o Updated for work-in-progress allegro(www.talula.demon.co.uk) now supports truecolor, hicolor and realcolor, also driver is much simplier since custom dialog code is not required anymore. o Have new lovely wait cursor ------------------------------------------------------------------------------- Version 2.2 Fixes: o bug in palette changing code o more detections for various curses versions o small well hidden bug in reallocation algorithm discovered. o removed passing in registers to avoid compiler bug o now allows unzoom greater than MAX_INT again o symetry handling works for deeper unzooms too. o more test for owerflowing/underflowing of resolution. so now produces garbage but does not crash(feature?) o more exact zooming/unzooming o better framerate handling o fixes for pgcc - do not generate faults.. Cleanups: o char * -> unsigned char * o mkrealloctable o some optimizations for pipelining o cleaned code to compile with -pedantic -traditional -Wall o ugly interface-better menu code, drawing fractal etc.. o all timing code changed to use timer library o approximation algorithm o functions called maximally once per frame are not inlined anymore o created few directories for documentation etc.. o Minor changes in color indexing o palette changing code o rewrote solid guessing o some variables in drivers structure changed to flags Speedups: o symetry handling code in mkrealloc table optimized a bit. now is faster,shorter and does better job. :) o non x/y symetries disabled because they slowes down for now.. o approximation algorithm optimized-lots of memory accesses avoided-great speedup.. now performs much better(16fps -> 18 on 486) also small hidden bug discovered, pricing redesigned a bit and loops simplified-divided into more loops function is now longer. Also taken special care to minimize number of PRICE calls mkrealloc tables is not main problem anymore. Handles correctly all situations I tryed and is quite fast. o approximation algorithm is now fixed point sprprisingly very small speedup..(but much smaller code) o better newton and barnsley calculation routines New features: o added fast preview mode for julias (julia.c) o configure coprocesor on 386/gnuc o created timer library that allows nice timing. asynchronous operations and lots of other funny stuff.. Bad thing is that XaoS does not work anymore w/o function for getting time in milisec/usec. Gettimeofday, ftime and plan9 /dev/msec are supported. Others can be added to timmers.c and timmers.h. Please send me modified version o improved configure script o Added additional statistics functions good for testing of algorithm o lots of tests for speed done..(see doc/speed) o completly new calculatenewinterruptible. This function acts like calculatenew but may be interrupted(using interrupt varibale) and then makes image with lower resolution This makes possible to reduce resolution on the fly if required o approximation algorithm now works well with new calculatenewinterruptible o improved palette changing o Improved solid guessing for variable range instead of range 2 also another special loop w/o sg when sg impossible o do_fractal now supports both-interruptible/uninterruptible modes o Added magnet fractal o Added julia form of newton(bit tricky but looks well) o Added julia form of octo o Added support for random dot stereograms o pass is now string-more readable informations o mailing lists (xaos,xaos-announce,xaos-devel) see doc/README Documentation changes: o new tutorial o new algorithm descriptions o new PROBLEMS file o new README.gcc file o new xaosman.txt file o updates for new versions UI Changes: o improved speed detection in ministatus o added 'j' for julia modes o added 'd' for default palette o added 't' for fast calculation modes control o added 'g' for solid guessing options o added 'o' for rotating o added '0' for magnet o added 'e' for random dot stereogram o changed to use timer library o does not crash with deep unzooms o added support for palette rotating o extended timing stuff for suport sync timing group.. this group is called "quite" often.. o added support for new resolution lowering feature o now operates with exact screen sizes-no more fractal deformations.. o automatical detection of optimal framerate for new resolution lowering algorithm X11 changes: o more sanity checking for mitshm initialization o Added support for rotating palette for private colormap and truecolor modes. 8bpp pseudocolor w/o privatecolormap is impossible.. o Uses X' function for autodetection screen size in milimeters.. (is this reilable?) SVGA changes: o Waits for retrace before displaying..looks better curses changes: o Use capital letter for G and E to avid collisions with ugly interface o Compatible with ncurses w/o redrawwin MS-DOG,X11 and SVGA driver: o Added support for palette rotating ------------------------------------------------------------------------------- Version 2.1 o >>>>FINALLY<<<< discovered and implemented PROVED TO BE OPTIMAL dynamical aproximation algorithm in linear time!!! It is still bit slow..but it is here! It should slow down at the begining but certainly speeds up during zoom Also allows deeper zoom o added out of memory checks to make xaos safer on non unix platforms o autopilot is now timed by same way as all other parts are. Now will act same on all computers(I hope) o Memorry corruption bug fixed - it caused problems with ysizes not dividable by 2 with some other strange situations. o New README.interface This helps others to extend XaoS or use its routines in their software o Added many sanity checking to make easy debugging of new ports o small cleanups (unused variables etc..) o minnor speedups o added OS/2 port(graphics 320x200 and text) By Thomas A. K. Kjaer o added macintosh support by Tapio K. Vocadlo (thanks) o added support for different scanline size than width. for Mac and X11 port >>WARNING<< changes to driver API:alloc_buffers now returns line size(usually width) o Thomas' email updated o Bit less agresive to gcc optimizer..no more compiler crashes.. I hope UI Changes: o <- and -> stops calculation o driver changing disabled when just one driver available o status line o minnor cleanups Plan 9 changes: o mkfile by Scott Schwartz o correct timming. Thanks to Niger Roles and others on 9fans list MS-DOS Changes: o hiddes mouse at resizes - do not cause crashes anymore X11 Changes: o private colormap support o Fixed freed memory accessing bug.. o added switches: -private -usedefault -nomitshm o improved autodetection of best available visual-if defaultvisual!=pseudocolor try truecolor first..do not use truecolor visuals on pseudocolor displays(look ugly) also supports 8bpptruecolor, staticcolor and grayscale(untested) o Fixed bug in changing number of entries that caused problems on SGI ------------------------------------------------------------------------------- Version 2.0 o Configure script. o Added biomorph outcoloring mode o Compiles now with -O2 - no -O3 required.. but kept -O6 for invoking pgcc optimizations o Many changes to make binary file smaller...consts, static, no inlines and so on.. about 10KB from full XaoS saved.. o Long doubles automatically disabled on SunOs o added new curses based interface. Have you ever seen realtime 256 color fractal zoomer with text based output? :) o Now just one compact binary for all available drivers o Faster startup..(three times) o Compiles w/o many warnings(except these in libraries and implicit definitions) with -ansi -pedantic -traditional -Wall o Autopilot not detects "oscillating" and too deep zoom so it can work to infinity...can run as demo w/o any user input.. also auto detects major changes done by user and reinitializes variables... so it restarts after changing of fractal type and so on.. o many many new bugs! But remember! Its not bug! Its feature! Ugly interface changes: o Completely redesigned-hardware depended parts are now coded as drivers with common interface-easier adding of new architectures but looks as ugly as in previous releases :) o Added changing of display driver on the fly o Displays calculation status o Possibility of interrupting calculation o Reduced size of output program (for example SVGAlib version from 48 to 37) o speed changing is now with displaying of status.. o all ports modified for new interface o better status informations o new keys: '?'/'/' status information 'r' recalculate 'z' interrupt 'v' driver change ' ' Redraw screen(or display current calculation status) o new hyperugly text browser that displays long and interesting help text o Command line options support. Now you may configure XaoS quite well..(turn on autopilot, set iterations etc..) o Changes to make drivers non reentrant SVGAlib prot changes: o Ui_svga is now event handled. It does not stay in wait loop anymore. o Keys are now buffered-no more problems with disabling autopilot o Added command line option: -mode to select graphics mode o Now handles text in xmodes w/o seg. faults o Fixed possible crash after resizing o for compatibility with old SVGAlib keeps old non event handled keyboard interface....but not recommended at all! PLAN9 port changes: o During porting to new ui interface I found nasty bug in displaying. Now plan9 port is IMWHO surprisingly fast. 8c produces quite good code. still crashes in higher resolution and has color problems o added keys [,] for changing iterations and ;,' for speed o Better palette handling MS-DOS port changes: o Keys are now buffered-no more problems with disabling autopilot o Compiled using DJGPP 2.01. So many DJGPP's bugs fixed :) X11 port changes: o Fixed some bugs that caused troubles when memory is not zeroed.. o Added support for 16bpp, 24bpp and 32bpp truecolor visuals o Fixed bug that caused possible crashes before freeing images (resizing etc..) o Removed unnecessary INLINEs in xlib.c/xlib.h .. makes binary size bit smaller. Algorithm revisions: o Many areas inside set are not calculated o realloc_t - most often used array is now 32byte aligned.. o Better newton calculating code-math now optimized by hand. o Small fixes in symmetry handling code also minor speedups o Mandelbrot calculation rewrote into 386 assembly.. less than 5% speedup :((( (gcc guys:good work! :) note that this is only for Intel platforms-xaos is still compatible with non Intel computers :) because of out coloring bugs disabled for now.. o Completely new reallocing algorithms. Now proved to be optimal but because of ugly looking results returned back to original one current algoritmus is just about 20% slower than hypothetical optimal one..still trying :) o Assembler fast inlined memcpy...also just for 386+ o Changed solid guessing method so it is up to 20% more effective in hope that no more mistakes introduced startup speed on 486 was reduced from 6 seconds to 4 in fact it seems to make less errors than previous one :) o Small changes in Barnsley code o Minor fixes in symmetry code ------------------------------------------------------------------------------- Version 1.2 New features: o New recalculating with non rectangular pixels. (for full screen modes) great for modes X :) o New palette with white background o Added coprocessor configuration into MS-DOS port - some coloring modes are MUCH faster because of no more SIGFPE ignoring.. o Added support for 1280x1024 and 1600x1200 into MS-DOS port o Default type changed back to double because long double is non standard o 9x15 font changed to more compatible and better looking fixed. o First release of plan9 port (very interesting OS see http://plan9.att.com..trial version if free)-not complete yet..colors looks ugly and keys like arrows does not work.. someone who can help me? o Added key defines for old SVGAlib compatibility. Fixes: o Fixed bug that caused problems on dos configuration with lot of free memory :) o Fixed symmetry handling in binary decomposition+lambda planes o fixed some bugs that caused core dumps on non Intel architectures o Floating point exception is now ignored-no more problems with random overflowing...(but great slowdown in cases that caused sigfpe) o lots of cleanups for plan9 cc. o Width of font is autodetected. fixed problems with non-standard X servers o Avoided pgcc bug that caused wrong calculating of octo fractal o Fixed color inside set(not fixed 0) o Fixed color handling in X11 ------------------------------------------------------------------------------- Version 1.1 o Removed unusable fixedpoint routines(386 users - go back to 1.0!) o New planes (toggled by pressing "i") - mu (normal complex plane) - 1/mu (inversed) - 1/(mu+0.25) - lambda - 1/lambda - 1/(lambda-1) - 1/(mu-1.40115) o Symmetry code completely redesigned o Added "m" into help o Better approximation algorithm in "mkrealloctable"; now it is about twice faster with a small zooming step o Approximation in approximation for yet better..also twice faster o Lots of cleanups o port for MS-DOG called chappi o Default palette is now same at all architectures o Some memory overflowing fixes(oops) o Fixed some divisions by zero o Number_t clean-allows deeper zoom for long doubles ------------------------------------------------------------------------------- Version 1.0 o First Release -------------------------------------------------------------------------------