History starts at first public release. The history order has been
reversed so that new features are at the top.

-----------------------------------------------------------------------------
4-Jun-98:
	- Fixed little error in DJGPP port so that it can compile (
	  include of system/system.h in djvidsys.cpp).
	- Fixed cs.mak: renamed 'sinclude' to 'include'. DJGPP/GNU
	  make doesn't seem to recognize 'sinclude'.
	- Received updated Visual C++ project files for Windows from
	  Nathaniel.
	- Received new makefile.wat from Andrew Zabolotny for compiling
	  Watcom/DOS version. This replaces the old makefile.wcc.
	- *** Release of 0.10 ***
3-Jun-98:
	- Received patch from Andrew Zabolotny for the first MMX support
	  for Crystal Space! He has currently only accelerated the
	  Z fill in draw_scanline_map (both 8 and 16 bit). You can enable
	  MMX in the configuration file with MMX=true. You can also toggle
	  it on/off using the console command 'mmx'.
	  Note that if your CPU doesn't support MMX, CS will detect this
	  and use the normal routines.
	  Andrew also did a small reorganization of the assembler stuff.
	  The processor specific things have moved to the system directory:
	  there is a new directory i386 for intel stuff and m68k for
	  motorolla stuff. See README.Andrew for more info.
	- Fixed the bug with LIGHTMAP_SIZE set to some value other than 16
	  (this bug only occured on levels which contained dynamic lights
	  (NOT floating lights)). NOTE HOWEVER that I'm not sure that the
	  bug is also fixed in the Direct3D port. I had to change some
	  things there and it is very well possible that there are problems
	  there!!!
	- LIGHTMAP_SIZE option can now also be set from local cryst.cfg
	  file (the one inside the level archive). This overrides the
	  value from 'cryst.cfg'.
	- Reading cryst.cfg/local cryst.cfg is a bit better in class Textures.
	- Fixed obscure bug in 16-bit texture cache which could cause
	  crashes on machines which don't allow writing words at non-word
	  aligned addresses.
	- *** Release of 0.09_036 ***
2-Jun-98:
	- Disabled PNG and JPG support by default from cs.mak. This will
	  make the default compilation for users easier. You can enable
	  it again if you want.
	- Updated various defaults in cryst.cfg to better defaults.
	- Restored 'make depend' so that it always remakes the dependencies.
	- *** Release of 0.09_035 ***
	- Received some patches from Nathaniel for Direct3D.
1-Jun-98:
	- Decreased waiting time at startup from 2 to 1 second.
	- Implemented private memory pool for texture cache. This
	  should make things more efficient. The current implementation
	  is rather primitive but already things are speeding up
	  slightly. More special allocation algorithms specialized for
	  the texture cache should be implemented.
31-May-98:
	- Created new MIPMAP_VERYNICE option (set MIPMAP_NICE=verynice
	  in cryst.cfg) which gives a kind of mipmapping which is MUCH
	  better (looks very good) but uses more memory on the cache.
	  Normally mipmap level 1 (level 0 is not mipmapped) is a
	  texture with width and height divided by 2. If you use
	  'verynice' then mipmap level 1 has the same size as level 0
	  but the texture is blended somewhat. Level 2 and level 3
	  are smaller as usual.
	  Because this blending looks very good and also because 'verynice'
	  uses a lot of texture cache memory, it is recommended to decrease
	  the values of DMIPMAP1, DMIPMAP2, and DMIPMAP3. This will cause
	  the mipmapped versions to come into effect sooner.
	  I recommend something like 8, 15, and 30 if using 640x480.
	- When reading the config file, also recognize 'true' and 'on'
	  instead of only 'yes' for boolean options.
	- New BLEND_MIPMAP option in cryst.cfg. If set to yes, mipmap level
	  0 (the original texture) is blended in a prepass. After this
	  the normal mipmap creation occurs (depending on the setting
	  of MIPMAP_NICE). If the resolution is high enough and depending
	  on what textures you use, this can give a nice result. There
	  is no performance penalty with using this option (which is
	  not true for MIPMAP_NICE=verynice).
	- Show MIPMAP_NICE setting at init.
	- Mipmapping is calculated much better now since mipmap levels
	  which are two levels away from each other are now calculated
	  in one pass instead of two (previously every mipmap level was
	  calculated using the previous mipmap level. Now, mipmap levels
	  can be calculated using a still earlier mipmap level).
	  This results in much nicer mipmaps (with less displacement
	  as well).
	- Added three configuration options: MIPMAP_FILTER_1, MIPMAP_FILTER_2,
	  and BLEND_FILTER. MIPMAP_FILTER_1 is a 3x3 box filter which is
	  used for mipmapping one level. MIPMAP_FILTER_2 is a 5x5 box
	  filter which is used for mipmapping two levels.
	  BLEND_FILTER is a 3x3 box filter which is used for blending
	  (either with BLEND_MIPMAP=yes or for MIPMAP_NICE=vernice).
	- Better init messages.
30-May-98:
	- Fixed two bugs for compiling CS on Windows version with
	  Watcom C++.
29-May-98:
	- Fixed bug with calculation of 8 and 16-bit floating light tables.
	  Blue and green floating lights were wrong (they looked right from
	  a distance but in fact where not right at all).
	- Received a new patch from Andrew Zabolotny with the following
	  changes:
		- DrawPolygon is VERY good now. At last, this version of
		  DrawPolygon does not wobble anymore, it does not overflow
		  (but we still need the overflow tests in draw_scanline),
		  and there are no gaps between polygons (this was fixed
		  before, I'm just summarizing here).
		- Added dynamic font selection to SimpleConsole based on
		  display resolution. With 320x200 a VERY TINY font is
		  selected (looks a bit ugly, see a change from Jorrit
		  below).
		- Added WINDOWX, WINDOWY, WINDOWWIDTH, and WINDOWHEIGHT
		  to cryst.cfg for OS/2. They control window position and
		  client rectangle size.
		- Bugfix in OS/2 port.
	- I added a CONFONT configuration file option so that you can now
	  control which font is choosen. Default is 'auto' which will
	  use the automatic font selection from Andrew. Other options are
	  'tiny' (a very tiny font), 'courier' (the font used in the last
	  two revisions), and 'police' (the original font used in all previous
	  versions of Crystal Space).
	- New Watcom/DOS port by Slavik Levtchenko. Not guaranteed to work
	  'from-the'shelf'.
	- Updated docs/config.txt for all new (and some old) configuration
	  options.
	- *** Release of 0.09_034 ***
	- The startup message really appears on the graphics window now.
	- Small fixes from Nathaniel for Windows port.
28-May-98:
	- Added X specific function to SysGraphics2D which is used while
	  simulating a 15/16-bit display on an 8-bit display. It will replace
	  the standard 3:3:2 truecolor palette with a palette specifically
	  designed to view the current frame. The palette will be optimal
	  for the frame. This function is assigned to the F1 key.
	- Added F2 key for simulated palette. This key restores the
	  standard 3:3:2 truecolor palette.
	- Moved initial Crystal Space message so that it appears on the
	  open graphics window.
	- Moved F2 key to F3 and add function to calculate greyscale
	  palette to F2 key (for simulation of 15/16-bit on 8-bit display).
	- Added virtual function 'perform_extension' to csSystemDriver.
	  With this function specific ports can add system dependent
	  extensions. The X version uses this mechanism to add the
	  functionality for the F1, F2, and F3 keys as explained above.
27-May-98:
	- Fixed bug with the recalc of lightmaps. Now it should correctly
	  recalculate stuff. There were actually two bugs: the first one
	  has to do with light which couldn't pass through portals anymore
	  and the other bug was that thing surfaces were not correctly
	  lighted.
	- Removed extra Clear in console because I will fix the SHM problem
	  an other way later.
	- Andrew Zabolotny send me another patch which greatly increases
	  the stability of the triangle drawer. The triangle drawer doesn't
	  wobble at all :-) Now we only need to eliminate the small remaining
	  wobble in DrawPolygon.
	- Added new '-sdepth' commandline option to the X port. With this
	  option you can simulate a certain display depth. For example, let's
	  assume that you are running an 8-bit display but you want to test
	  if your 16-bit draw_scanline routine is running allright. Then
	  you can just run Crystal Space with '-sdepth 16'. The display
	  will still be 8-bit but all the rest of Crystal Space will think
	  that it is running in 16-bit. Note that this option decreases the
	  speed considerably since the ::Print function does the conversion
	  every frame. Also the quality is not very good since 16-bit
	  is simulated on 8-bit by converting to a 3:3:2 truecolor format.
	  Note that 8-bit simulation on 16-bit has not been tested yet. It
	  may work but it can just as well not work. I will test this
	  tomorrow.
	  In future I will add the possibility of simulating 8 or 16 bit
	  on a 24-bit display. That way you can test and run the X version
	  of Crystal Space even if your display is set to 24-bits.
	- *** Release of 0.09_033 ***
	- As suspected, simulation of 8-bit on a 16-bit display was
	  not completely ready yet. But now it works.
	- Added support for function keys F1 to F12. Only the X port
	  supports these at the moment.
26-May-98:
	- Added MSG_DEBUG_xF options for CsPrintf. These flush the output
	  to debug.txt to make sure that the output will surely be
	  there in the event of a crash.
	- Added 'sanity' call in several of the main world classes to have
	  a way to check if the object is still valid.
	- New patch from Andrew Zabolotny:
		- DrawPolygon should not 'wobble' anymore (or wobble less) :-)
		  I checked it, and it still wobbles but it is better now.
		- Unfinished work on the triangle drawer (for sprites). It
		  is now already more accurate (but still not perfect).
	- Added a lot of CHK() macro calls to various 'new' and 'delete'
	  calls so that I could use the memory debugger.
	- I had to disable the assembler version of Scan16::draw_scanline_map
	  because it crashed. Andrew will have to look at this I think.
	- Added Scan16::draw_scanline_z_buf and
	  Scan16::draw_scanline_z_buf_private. These two missing functions
	  are needed for z-buffered, unlighted, 16-bit texture mapping.
	- Fixed fps/stats/coords printing so that it uses the console
	  foreground color instead of hardcoded 255. Hardcoded 255 would
	  give white on 8-bit displays but some dark blue on 16-bit displays.
	  Now it gives whatever you have set for the console foreground
	  color (default white).
	- I had to add an extra Clear with a different color to the
	  Print of console. Otherwise I would get flashing black parts
	  on the console (depending on the amount of text displayed).
	  I don't know why. I suspect that this is a bug in the SHM
	  because if I disable SHM everything works fine without the
	  clear. Hmm, maybe there is a reason. In the current version
	  of the console the 3D display is no longer rendered. This means
	  that the console updates MUCH faster. Maybe too fast. This would
	  also explain why the problem lessens if the amount of text
	  increases. If the amount of text on the console is high the
	  update will be slower. Maybe I need to wait before the SHM
	  copy is finished or something?
	- If SHM extension is enabled for X version it will autodetect
	  if SHM is available and automatically disable it if not.
25-May-98:
	- Two fixes for Windows version from Nathaniel.
	- Applied patch from Andrew Zabolotny with the following changes:
		- New DrawPolygon routine which doesn't have any gaps
		  between the polygons!!! Unfortunatelly it no longer has
		  sub-pixel/sub-texel accuracy which means that textures
		  'wobble' when you move slowly towards them. So the old
		  DrawPolygon (which can be re-enabled in render/graph3d.cpp
		  if wanted) looks nicer but has problems with the borders
		  while the new DrawPolygon has perfectly fitting polygons
		  but it doesn't map the texture as smoothly.
		  Can someone who understands sub-pixel/sub-texel accuracy
		  have a look here?
		- 'table_white8' is no longer recomputed if not needed. There
		  was a bug with color 0 being selected by the random color
		  picker. But 0 is not a valid color in CS textures.
		- Removed csGraphics2D::Ready (). BeginDraw() returns a bool
		  which indicates if graphic context is ready or not.
		- BeginFrame is replaced with BeginDraw and can be used both
		  for selecting 3D rendering mode or 2D rendering mode. There
		  can be multiple switches to 3D graphics and 2D graphics
		  without having to call FinishDraw() in between.
		- Direct3D port has been changed to work with above changes.
		  It is possible that this broke the Direct3D port (although
		  care has been take that this should not be the case).
		- Changed font in SimpleConsole to proportional Courier. This
		  way a little more text fits horizontally in 320x200.
		- Fixed bug with incorrect texture mapping when lighting is
		  turned off. The bugfix may even speed up the lighted
		  texture mapper a little (>>shifter_w is replaced by >>16).
		- Create an assembler version of 16-bit draw_scanline_map
		  routine. For Andrew this gives a speed gain from 22 fps to
		  24 fps.
		- Almost fixed texture coorindates overflow BUT still by
		  adding other tests under the STUPID_TEST define. At least
		  it is more stable this way. But more work still needs to
		  be done here.
		- Fixed a bug in Textures::compute_palette (). Alloc[255]
		  has been set to false here. This caused CSWS not to display
		  white color.
	- *** Release of 0.09_032 ***
22-May-98:
	- Added DemoWrite virtual function in csSystemDriver which can
	  be overridden by an application to provide better functionality
	  in case of MSG_INITIALIZATION (for new Printf() routine).
	- LINEMAX configuration file option is now checked. You can now
	  safely say LINEMAX=100000 and this will be truncated to the
	  actual number of lines that you have available.
	- If you compiled the Windows version with no DIRECT3D compiled
	  then the 'auto' DRIVER configuration option would not work.
	  I fixed it so that 'auto' is equivalent to 'software' when
	  DIRECT3D is not included.
	- Changed all (most?) debugprintf/conprintf/pprintf calls to
	  the corresponding CsPrintf call.
	- Crystal Space immediatelly opens the display now and starts
	  displaying startup messages there. I hope this doesn't give any
	  problems on the different ports. Please tell me if there is a
	  problem with this.
	- Used MessageBox in windows to create specific Alert and Warn
	  functions in SysSystemDriver (untested).
	- *** Release of 0.09_030 ***
	- Got a patch from Ivan Avramovic <iavramov@ibm.net> which makes
	  the matrix/vector functions better.
	- *** Release of 0.09_031 ***
21-May-98:
	- DJGPP port works correctly now. The keyboard handler has
	  been fixed and 16-bit mode is support if you compile CS
	  with ALLEGRO enabled. Since only the ALLEGRO version supports
	  15/16-bit this is now enabled by default in the makefile.djg.
	  The non-ALLEGRO version does not support 16-bit yet but it
	  is functional. Use -depth or DEPTH to enable 15/16-bit mode.
	- Put a virtual destructor in Portal to prevent warning from
	  recent GCC versions (PGCC in my case).
	- Changed X11 port to use X Windows only and not the X Toolkit.
	  This gives more control over when and how I open the window
	  and also allows to put data on the window at startup (this is
	  going to be needed later). Note that this is a fundamental
	  change and I hope that it doesn't break things.
	  Move old versions of xwin.cpp and xwin.h to attic in case I
	  need to revert to them for whatever reason.
	- SysGraphics2D::Open of the X11 port opens the window instead
	  of the constructor.
	- Add virtual FlushOutput () to csGraphics2D. This is needed
	  for X Windows which needs some extra action before the
	  graphics is really displayed (unless you are in the standard
	  event loop).
	- Added debug_level to csSystemDriver to indicate the global
	  debugging level of Crystal Space.
	- Added Printf to csSystemDriver which should be the only
	  printf routine that is ever called from now one (keep in
	  mind that I haven't hunted down all printf, pprintf,
	  debugprintf, ... yet). Printf has a mode parameter which
	  indicates what the reason is for printing and thus also
	  where the message should appear (debug.txt, console or
	  standard output).
	- Added virtual Alert and Warn routines to csSystemDriver which
	  should be overriden if you want a real alert (like a MessageBox
	  or something). Alert and Warn are called from the new Printf
	  routine.
20-May-98:
	- Little fix in djgpp.cpp.
	- Added new console command 'ilace', new commandline options
	  '-ilace' and '-noilace' and new configuration file option
	  INTERLACE (yes or no). With this option you can enable
	  interlacing. This only works for the software version but
	  it can greatly speed up the frame rate (double in some
	  cases). The downside is the motion blur when moving (although
	  this can also be seen as a nice side-effect).
	- Little fix for windows version (also remember to add portal.cpp
	  to the project file).
19-May-98:
	- Received new installation instructions for Amiga from Maurice
	  Vosmeijer.
	- Fixed bug which caused the colors of some levels to be wrong
	  in true_rgb mode.
	- Enhanced Portal class. It now contains all code to warp space
	  and also a virtual function 'draw' which actually performs
	  the needed operations for drawing a new sector through a portal
	  (including space warping). Portal can now be subclassed so that
	  you could have portals to other engines (landscape engines for
	  example). Just make a subclass of Portal and provide a new
	  definition of 'draw'.
	  Removed all portal functions from Polygon3D.
	- Fixed a few bugs and made the code more robust so that the
	  LIGHTMAP_SIZE configuration flag actually works. Set LIGHTMAP_SIZE
	  to 4 or 8 for more accurate lightmaps (less blocky). Note that
	  this increases the size of the lightmaps (they will be recomputed
	  automatically so don't try this on large.zip unless you have a
	  fast computer) and decreases the speed of the texture cache.
	  mirror.zip is a level where you can experiment quickly (it is not
	  very large) and the blockiness is very visible there.
	- Enhanced Portal class again and also made a new PortalCS class
	  which encapsulates the current Sector based implementation.
	  I also added a lot of lighting and collision detection functions
	  to Portal which also need to be implemented by every subclass.
	  Here I have a little problem. Much is dependent on Polygon3D
	  and Sector. But both are structures which might not be needed
	  by another engine. So I need to make the routines more general.
	  I can try to make a new class Region which encapsulates a
	  general region where you can be (currently only sector, but
	  specialized regions can then be made for landscapes for example).
	  The problem is that Sector already inherits from PolygonSet so
	  I can't easily let Sector inherit from Region as well. So I'll
	  have to use object decomposition.
	  For Polygon3D I could use PolygonInt which is already a superclass
	  of Polygon3D. But I'm not sure that is good enough.
	- Added the new csRegion class (unused yet).
	- *** Release of 0.09_029 ***
18-May-98:
	- Received new patch for Windows/Direct3D version from Dan Ogles.
	- Received new patch from Andrew Zabolotny with the following changes:
	    - Changes on OS/2 port and CSWS.
	    - Two new documents: csws.html (for the Window System) and
	      os2notes.html (specific OS/2 notes).
	    - Replaved NO_DIRECT3D by DO_DIRECT3D (positive option instead
	      of negative).
	    - Bugfix in Archive. precalc.zip will now correctly be
	      created even if it didn't exist before (that was not
	      the case previously).
	- Changed cs.mak so that just typing make will show a help with
	  all possible targets. Type 'make -f ... cs' to just make the
	  Crystal Space demo (WalkTest). (Note! Currently only CS seems
	  to work correctly, there are problems with the other programs
	  probably due to conflicts between the patch from Dan Ogles and
	  the one from Andrew Zabolotny).
	- Removed -arep/-noarep and AUTOREP options for X11 version of CS
	  since these are no needed with the new keyboard system. As a
	  consequence there is also no need anymore to delay quitting
	  CS until the next event.
	- Received new project files for Windows/Visual C++ from Dan Ogles.
	- *** Release of 0.09_028 ***
15-May-98:
	- Made several of the error messages clearer (also include a short
	  help of what could be done to fix the problem).
	- *** Release of 0.09_027 ***
	- Removed gdd16.* since it is no longer needed (integrated in win32.cpp).
	- Fixed win32 port as directed by Nathaniel.
	- I have confirmed that the SVGALIB port works in 15/16-bit mode
	  (I have been able to get my SVGALIB working ok).
	- The type of texture system and mixing mode is now also put
	  in debug.txt for diagnostics.
	- For some strange reason my GNU LIBC on my new Stampede Linux
	  system seems not to support milliseconds for clock() and ftime()
	  (they are only accurate upto a second). I don't know why this
	  is and if this is considered normal. But I had to fix this by
	  changing the linux and svgalib verson of timing.cpp. It now use
	  times() which is a bit less accurate (100 times per second).
14-May-98:
	- Split World::load_file into World::load_file and World::initialize.
	- I tried to make sure that completing the pixel format structure
	  (pfmt) should only be done in Open but I failed. Too many of
	  the internal computed stuff depends on the pixel format (the whole
	  initialization of Textures). So for now, the initialization of
	  pfmt SHOULD happen inside the constructor of SysGraphics2D!
	- Got the much needed patch from Dan Ogles to let the Windows/Direct3D
	  port work correctly. There is now also support for 16-bit mode.
	  Many thanks to Bart van Langen as well for also sending a similar
	  patch. Unfortunatelly for him the patch from Dan Ogles was somewhat
	  more finished.
	- *** Release of 0.09_026 ***
	- Received yet another cleanup patch from Andrew Zabolotny.
	- Error at line 355 in win32.cpp. Blue and green were reversed.
	- Better error checking in ::Open of system dependent classes.
	  They actually return false to the top-most caller if there
	  is an error.
	- SVGALIB port should work as far as I know but for some strange
	  reason the 16-bit modes don't seem to work for me.
13-May-98:
	- Update SVGALIB version for new keyboard system.
	- Added WalkTest::world_file so that you can again specify
	  the world file from the commandline (this didn't work anymore).
	- Screen is now properly cleared the first time you start
	  Crystal Space in the X version.
	- precalc.zip is now supported better. It is no longer part
	  of the main file but supported inside the World class.
	  This way you can more easily do development on world files
	  without having to make a zip file for them. Crystal Space
	  will just use precalc.zip to store all precalculated
	  tables and lightmaps.
	  Currently there is still a bug. If Crystal Space is run
	  with precalc.zip empty or non-existant then only one
	  file will be added to precalc.zip. The next time you run
	  Crystal Space it will be correct however. A fix is to just
	  create precalc.zip with some dummy file (Crystal Space will
	  just ignore it).
	- Better error checking for reading the textures. Actually,
	  the error checking was ok but it didn't print any messages
	  (just failed silently).
	- Replaced all 'INTERNAL ERROR' messages with 'ENGINE FAILURE' :-)
	- Received a new patch from Andrew Apted fixing his GGI port
	  for the latest Andrew-Zabolotny-patches.
	- Made signal handler in SVGALIB and X11 versions better. It no
	  longer causes a series of crashes if the program is just interrupted
	  and it does not dump the whole world to debug.txt if ^C is pressed
	  (thanks to Andrew Apted for this).
	- Moved the closing of the windows console to a after the main loop.
	  Somehow it moved before main_loop which would close the console
	  to early (pprintf is still used later on for diagnostics).
	- Split Textures::load into Textures::load and Textures::initialize.
	- Maurice Vosmeijer <Maurice.Vosmeijer@ehv.sc.philips.com> reported
	  a few needed changes to make the Amiga port work better (at least
	  compile).
12-May-98:
	- Received yet another patch from Andrew Zabolotny with the
	  following changes:
	    - WinMain has been moved to win32.cpp. The program's entry
	      point is now always main().
	    - Keyboard::Fill and Mouse::Fill have been removed.
	    - All global variables have been moved in respective
	      classes as static variables.
	    - All debug variables have been moved into
	      general/walktest/main.cpp.
	    - All switches related to debugging have been moved
	      into keys.cpp.
	    - All commands related to debugging have been moved
	      into keys.cpp.
	  See README2.Andrew for more information from Andrew
	  himself.
11-May-98:
	- Added several draw_scanline functions for drawing unlighted
	  textures in private mode.
	- Added unlighted, 16-bit, private mode texture drawer.
	- Received patch from Andrew Apted for 16-bit support for his
	  GGI port. Note that his 16-bit support currently hardcodes
	  5:6:5 format for RGB.
	  The GGI port reads the DEPTH field in 'cryst.cfg' for selecting
	  the right depth and also supports the -depth commandline option.
	- Received a large patch from Andrew Zabolotny with the following
	  changes:
	    - Console has been enhanced: it has a cursor, it works in 16-bit
	      and Crystal Space does no longer render when the console is
	      active. This last part greatly enhances the typing speed (upto
	      a point where the console will become unuseable on certain
	      ports: see the README.Andrew from Andrew on how to fix this for
	      some port).
	    - csGraphics2D has been enhanced to work in 16-bit mode.
	    - Many global variables have been removed. Repeat after me!
	      'Global variables are evil!', and say this three times :-)
	    - 16-bit support for OS/2 (using DEPTH in cryst.cfg and
	      -depth 16 on the commandline).
	    - Included a test for the Crystal Space Window System.
	      It is in general/cswstest. To build it defineu
	      CSWSTEST=cswstest.exe or whatever in your makefile.???.
	    - Fixed bug for transparent textures.
	    - Scaling of 2D sprites.
	  I included the file README.Andrew for you to read. It documents
	  his changes. Please try to implement the new keyboard handler
	  system as is explained in that file.
	- Fixed console patch so that the transparent console works again
	  as expected.
	- *** Release of 0.09_025 ***
10-May-98:
	- Added a number of documents. Split a number of documents
	  into smaller documents. Moved a few documents.
9-May-98:
	- Andrew Zabolotny was so nice to switch keys to uppercase
	  when shift is pressed. As a consequence several keys
	  didn't work anymore because keys.cpp didn't expect this.
	  I fixed keys.cpp.
8-May-98:
	- document.txt updated for new display modes.
	- *** Release of 0.09_024 ***
7-May-98:
	- Transparency didn't work correctly in truergb mode.
	- The conversion from RGB to WRB was not very good. The
	  reason was that the palette was computed the old way (adjusting
	  for ambient values) and this is not needed anymore.
	- Added some lookup tables (yes, new ones :-) for supporting
	  colored floating lights in 8-bit display mode in combination
	  with true_rgb mixing mode.
	- Removed the fast_rgb mode (NOT the fast_wxx modes) because it
	  is ugly (really ugly) and you should use true_rgb instead.
	- Started adding support for textures with private colormap.
	- Added commandline option -txtmode to set the mode that the
	  textures are in ('global' (as it was), 'private' (private
	  colormap, and '24bit' (pure 24-bit)). '24-bit' is not
	  supported yet.
	- Added config file option 'TXTMODE' for the same thing.
	- Private colormap support almost works but currently for 8-bit
	  display only and unlighted textures are not drawn correctly.
	- *** Release of 0.09_023 ***
	- 'private' colormap mode also works for 16-bit display mode.
	- Bug fixed when reading the local 'cryst.cfg' file. The TXTMODE
	  was overwritten. The local 'cryst.cfg' can also contain
	  the TXTMODE field.
6-May-98:
	- Converted lights to always work with R,G,B. The WRB mode
	  will be implemented by converting the lightmaps instead
	  of changing the lights. This way the ugliness of the WRB
	  mode will only be visible in one place.
	- Lightmaps are now always saved in R,G,B mode and only
	  converted at run-time to W,R,B or NOCOLOR if needed.
	  This means that lightmaps never need to be recalculated if
	  you switch a mixing mode or if you go to Direct3D mode or 16-bit
	  mode.
	- The dynamic extension upon the static lights also work correctly
	  now (RGB).
	- The NOCOLOR mode works again (there was a problem with the
	  creation of the po2 lightmaps). (note NOCOLOR will currently
	  not work in 16-bit mode).
	- Much better lookup table system. It is cleaner, only the
	  tables that are really needed are allocated, and it even
	  works :-)
	- The precalculated tables are now called 'table_fast_xxx',
	  'table_white8', and 'table_alpha'. ('light.tables' and
	  'alpha.tables' are no longer needed and can be removed from
	  your zip files).
	- Added -mixing commandline option so that you can set the
	  mixing mode from the commandline (previously this could only
	  be set from cryst.cfg (either local or global).
	  The commandline option overrides the options in cryst.cfg
	  (but going to truecolor mode still overrides these options).
	- Added -fastrgb and -slowrgb mode so that you can set
	  the slow (but accurate) and fast (but inaccurate) modes
	  from the commandline. Same behaviour as with mixing command-
	  line option.
	- Updated documentation a little (document.txt) for the new
	  features.
	- *** Release of 0.09_022 ***
	- Fixed bug in 16-bit mode with unlighted textures. Unlighted
	  textures don't work yet but they were not ignored as they
	  should.
	- Changed X port a little so that it doesn't draw if the window
	  isn't ready yet (GetPixelAt (0,0) should be different to 0).
	- Transparent scanline drawer implemented in 16-bit.
	- Unlighted texture drawer implemented in 16-bit.
	- Sprites work in 16-bit mode. The drawer uses an extra
	  lookup to convert 8-bit to 16-bit but this extra lookup
	  was going to be needed anyway for future sprite lighting.
	- Floating lights work in 16-bit mode (but no very efficient).
	- Added new lookup tables for floating lights in 16-bit.
	  These lookup tables could be consider optional (maybe
	  I will make them an option in future) but with them you
	  can have colored floating lights (red, green or blue only;
	  no mixing possible).
	- 16-bit alpha mapper is now no longer hardcoded for my
	  system.
5-May-98:
	- Made 16-bit texture cache a subclass of 8-bit texture cache.
	- Received Yet Another Patch from Andrew Zabolotny on his
	  window system.
	- *** Release of 0.09_021 ***
	- First visibile results of 16-bit mode!!! It seems to work
	  and it looks nice :-)
	- Added -recalc commandline option to force recalculation of
	  the lightmaps.
	- Z buffer scanline drawer works in 16-bit mode as well.
	- First version of 16-bit alpha mapping (does not work correctly
	  yet).
5-May-98:
	- Started work on 16-bit mode.
	- First add support to system dependent classes for getting
	  the format of a pixel.
	- Add 16-bit support in the calculation of the lookup tables.
	- First implementation of a 16-bit texture cache.
4-May-98:
	- Received new patch from Andrew Zabolotny on his window
	  system.
1-May-98:
	- Received new patch from Andrew Zabolotny to his triangle
	  drawer routine.
28-Apr-98:
	- Received a patch from Dan Ogles so that the windowed palette
	  mode works now.
	- Received a better version of the DrawTriangle routine from
	  Andrew Zabolotny. It still overflows but not very often.
	  More work needs to be done yet. This version also doesn't
	  have subpixel/subtexel correction so the texture wobbles
	  a bit :-)
	  The code from Andrew is in render/drawtri.h and it included by
	  render/graph3d.cpp.
	- *** Release of 0.09_020 ***
27-Apr-98:
	- Received a new patch from Andrew Zabolotny on his window
	  system and a small change to the system dependent classes.
24-Apr-98:
	- Received a new Direct3D patch from Dan Ogles.
	- Added 'render/drawtri.bug' which is a cleaner implementation
	  of DrawTriangle. But it doesn't work correctly!
	- *** Release of 0.09_019 ***
17-Apr-98:
	- Thanks to a suggestion of Duane McDonnel I changed my triangle
	  texture mapping code to a more stable formula to calculate the
	  constant du, dv, and dz. This still doesn't quiet fix the overflow
	  problems but we're getting there (slowly)...
	- Received a working Amiga port from Ralf Eisele
	  <eiselera@pcpool1.informatik.uni-ulm.de>.
	  There are specific Amiga installation instructions in the
	  'INSTALL' file.
	- Collision detection with walls is better. It is (normally)
	  no longer possible to cross two portals at once and end in
	  never-never land :-)
	- Collision detection with things is implemented.
	- Received a lot of patches from Andrew Zabolotny for his csws
	  system (window system) that he is going to use for his editor.
	  There is also support for more than one font (instead of only
	  police.fnt). This support is not used in Crystal Space yet.
	- *** Release of 0.09_018 ***
16-Apr-98:
	- Received patch for GGI version from Andrew Apted.
	  All event names have changed from ev... to csev.... This is
	  because there are clashes with the GGI system.
	- (u,v) overflow in 3D triangle drawer will be a little better
	  (but not fixed completely though).
14-Apr-98:
	- Received a large patch for Direct3D. This should solve most
	  of the problems (according to Dan Ogles). There is also support
	  for the new 3D sprites.
	- Made the initial viewport a little larger (the border arround the
	  screen is somewhat smaller).
	- *** Release of 0.09_017 ***
11-Apr-98:
	- Optimized sprites a little:
	  if frame rate is 9.6 (640x480) without the sprite, it will go
	  to 4.2 while displaying a fullscreen sprite with 18 visible
	  and 18 invisible (backface culled) triangles.
	- Moved old non-functional sprite code (sprite.* and gvo.*) to attic.
	- Split sprites into SpriteTemplates and sprites. A sprite
	  is spawned from a sprite template which contains the definition
	  of the sprite and frames.
	- Added FRAME command to sprite. This sets the starting frame.
	- Updated todo.html, who.html and worldfmt.txt.
9-Apr-98:
	- Added SPRITE command also to ROOM statement.
	- Updated world format document for sprites.
	- Added a new level sprite.zip which demonstrates two simple sprites.
	- *** Release of 0.09_016 ***
	- Display of edges works for 3D sprites (debugging).
	- Added debugging capabilities for sprites (dump routine).
	- Visibility check for 3D triangles (sprites) is better (less
	  artifacts when a sprite is partially visible).
	- Remove GetZBuffer call I had to add to Graph3D. It is no
	  longer needed since G3DTriangle is part of Graph3D.
8-Apr-98:
	- Nathaniel sent me an update to the Windows port. The
	  Direct3D port has not been tested however.
	- I did a few modifications to the GGI port so that it may
	  actually be closer to working. But I can't test it.
	- *** Release of 0.09_015 ***
	- Received project file for Windows version (Visual C++).
	- A few new fixes from Nathaniel which I forgot.
	- Added csSprite3D class!! This is a 3D sprite class which
	  is based on triangle meshes and a single texture.
	- Added SPRITE command to SECTOR statement.
	- Extended Graph3D with a G3DTriangle and a DrawTriangle.
	  This is used by the csSprite3D class. Hardware accelerated
	  versions can then provide their own versions of DrawTriangle.
7-Apr-98:
	- Made a new document ('warping.txt') which explains space
	  warping a bit.
	- Nathaniel sent me an update to the Watcom/DOS port. It should
	  work now with the new system dependent classes.
	- *** Release of 0.09_014 ***
6-Apr-98:
	- Changed format of Z buffer from 16:16 fixed point to
	  8:24 fixed point. This extra precision is not needed for the
	  Z buffer itself but for the texture mapper which does a Z
	  fill and requires this precision. Keep in mind that the Z
	  buffer contains 1/z, so a maximum value of 256 is rather
	  sufficient.
	- Changed selection of mipmapping level according to the mean
	  Z distance between minimum and maximum Z depth of the polygon
	  instead of only the minimum. I think this is better.
	- Alt and Ctrl were swapped. This error was caused in
	  util/input/csinput.cpp in the 'new csEvent' calls. I fixed this.
	- Decreased the 'SMALL_D' component test from 0.06 to 0.01.
	  0.06 was too large and caused visible polygons to become
	  fully flat.
4-Apr-98:
	- Added even more debugging facilities. Pressing with the
	  mouse button will not only dump the value of the Z
	  buffer at that point but also check all polygons that
	  are drawn at that point (show the names on stdout)
	  and dump them in debug.txt.
	- Extended the Graph3d class with a DrawPolygonDebug function
	  which does exactly the same as DrawPolygon except that it
	  doesn't draw anything but instead dumps all internal
	  calculated values to debug.txt. This is of course also useful
	  for debugging purposes. DrawPolygonDebug is automatically
	  called instead of the usual DrawPolygon for all polygons
	  that you click on with the mouse.
3-Apr-98:
	- *** Release of 0.09_013 ***
	- Fixed a bug. The MIPMAP and LIGHTING settings did not
	  transfer from THING templates to THINGS.
	- Flat texture mapper correctly fills the Z buffer now.
	- Added code so that pressing mouse button will dump the
	  contents of the Z buffer at that location (for debugging
	  purposes).
	- New command 'things' to toggle the displaying of
	  Things on/off (default on). Also assigned to the 'ctr-t'
	  key.
2-Apr-98:
	- Made sure SVGALIB and DJGPP work under the new system
	  classes.
1-Apr-98:
	- Andrew Zabolotny send me some MAJOR MAJOR patches to the
	  system dependent stuff. There are a lot of new support
	  classes (see system/system.h and also util/input/*).
	  The X port (Solaris, Linux and general Unix) work with
	  the new changes (only Solaris has currently been tested).
	  The OS/2 port will also work (since this is the one that
	  Andrew uses). The other ports are changed but have not
	  been tested. I will test DJGPP and SVGALIB myself tomorrow
	  but the other ports will have to be tested and possibly
	  corrected by the respective creators.
	- Included with Crystal Space is a new window system (see
	  the 'csws' directory). This is going to be used for the
	  Crystal Space editor (MazeD) but there are undoubtedly other
	  uses. Andrew wrote this.
	- The MazeD editor is already included but it is not
	  functional yet. Andrew wrote this.
	- There is a new 2D sprite class. It is currently not fully
	  integrated yet (i.e. you can't just put a 2D sprite in the
	  world yet). Andrew wrote this.
	- Andrew (he seems to have a lot of time :-) also converted
	  the makefile system again. 'make.dep' does not exist anymore.
	  Instead it is 'cs.mak'.
	- IN GENERAL I STRONGLY RECOMMEND DELETING ALL OLD FILES
	  BEFORE INSTALLING THIS NEW VERSION. Many files have moved
	  or have been deleted and it will be confusing if any old
	  files are still present.
	- I added support for more mouse buttons in X version (just
	  so I could add something from myself here :-)
	- Fixed bug in util/def.h which would prevent the SVGALIB
	  port from compiling.
	- Removed 'virtual' in constructor of SVGALIB system dependent
	  graphics class (to remove warning from GCC).
30-Mar-98:
	- A few fixes to include files for Win32 version (thanks to
	  Nathaniel).
	- The history file has been turned around :-) (only the days though,
	  the items in each day are still chronological from top to bottom).
27-Mar-98:
	- Sebestyen Zoltan <szoli@valerie.inf.elte.hu> mentioned how I could
	  convert makefile.lnx so that it works under BSD. From that info
	  I created makefile.bsd.
	- The PolyPlane::set_texture_space functions now use the standard
	  TextureTrans class which was already present but just not used.
	- Removed various includes which were not really needed and also
	  wrong with the layered hierarchy (for example, something in
	  'engine' should not be concerned with 'scripts').
	- Split key handling from general/main.cpp to general/keys.cpp.
	- *** Release of 0.09_012 ***
26-Mar-98:
	- Removed ViewPolygon class because Polygon2D offers the same
	  functionality.
	- Updated todo.html.
	- Choose between optimization, debugging or profiling can now be done
	  from make.dep instead of makefile.*. The makefile.* define
	  HOW_OPTIMIZE, HOW_DEBUG and HOW_PROFILE and in make.dep you choose
	  one.
	- Moved G3D_ID from render to engine and renamed it to CS_ID.
	  The unique ID of every CsObject is logically a part of the
	  engine and not of the renderer. The renderer just uses that
	  ID.
	- 'make clean' does now only clean the Crystal Space directory
	  and not zlib, libpng or libjpeg.
	- *** Release of 0.09_011 ***
	- Moved camera.h from 'general' to 'engine'. It was accidently put
	  in 'general' but it really doesn't belong there.
	- Split physics class from Camera class. There is now a
	  PhysicalObjectInt class which serves as an interface (again JAVA
	  terminology). An object must inherit from PhysicalObjectInt so
	  that the Physics class can operate physical properties on it.
	  Camera inherits from PhysicalObjectInt.
25-Mar-98:
	- Removed a few global variables from main.cpp.
	- Moved create_lighted_texture_... functions from PolyTexture
	  to TextureCache. They are logically part of the software texture
	  cache and not of the 'engine' layer.
24-Mar-98:
	- Created new PolygonInt and PolygonParentInt classes. These classes
	  have no implementation and no data. They serve as 'interfaces' (in
	  JAVA terminology). PolygonInt is defined in 'geometry' and serves
	  as the interface between the BSP (which is also in 'geometry') and
	  Polygon3D (which is in 'engine'). Polygon3D inherits from PolygonInt
	  (with multiple inheritance) so that it can be fed to the BSP tree
	  class.
	  This kind of interfacing is an experiment to see if it is useful and
	  general enough. Using this it should be possible to create BSP trees
	  for any kind of polygon without having to create a new BSP class.
	  IMPORTANT! Multiple inheritance in C++ is not very clean. You have to
	  be very careful. For example, it is possible to cast from PolygonInt*
	  to Polygon3D* and the other way around. However, it is NOT possible
	  to cast from PolygonInt** to Polygon3D**!!!!! The reason is that
	  casting from PolygonInt* to Polygon3D* changes the internal value of
	  the pointer (because of multiple inheritance) and this cannot be
	  done in general when casting PolygonInt** to Polygon3D**.
	- Received patch from Dan Ogles to Direct3D. Lightmap-rendering code
	  is temporarily disabled because it doesn't work.
	- Split texture cache code from texture.h and moved it to
	  render/software/tcache.*.
	- Removed 'textures' and 'g' from Scan class and moved them to 'World'.
	  The 'engine' layer should not refer to 'Scan' since it is part of
	  the 'render/software' sub-layer.
	- *** Release of 0.09_010 ***
	- A few patches from Nathaniel to get things working on Windows.
	  Also a new CrystalSpace.dsp (without libjpeg currently).
22-Mar-98:
	- Changed 'make.dep' to make it easier to maintain (uses even more GNU
	  make features now). There is no need anymore to change 'make.dep' when
	  new source files are added.
21-Mar-98:
	- Started major change of directory structure so that Crystal Space
	  is structured into a more logical and layered way.
	  There are currently seven main layers:
	  	- geometry (low-level 3D and 2D math layer)
		- util (various utility classes)
		- engine (the portal engine)
		- render (the renderer)
		- scripts (the scripting system)
		- general (general stuff)
		- system (system dependent stuff)
	  The ultimate purpose of this layered approach is that there is
	  a clean seperation between the several layers and also a clean
	  hierarchical order. For example, 'geometry' contains basic
	  3D stuff and should be able to stand on its own without using any
	  of the 'engine' or 'general' stuff.
20-Mar-98:
	- I discovered that there was a clear of the Z buffer every frame.
	  This is no longer needed since Z fill is used while drawing
	  everything.
	- *** Release of 0.09_009 ***
19-Mar-98:
	- Andrew sent me a patch for mouse button support. This is needed
	  for his new MazeD project (an editor for Crystal Space).
	- 'make depend' should work now (thanks to Andrew).
18-Mar-98:
	- A few patches from Andrew: archive.* have been cleaned up.
	  A few modifications to the OS/2 port. Some modifications to
	  'make.dep'.
	- Andrew also added 'void do_focus' which should be called
	  when user switches focus from Crystal Space window to
	  other application.
17-Mar-98:
	- Received makefile for Windows NT and GCC from Paul Garceau
	  <pgarceau@teleport.com>.
	- Received new project files from Nathaniel.
	- Received Joystick source for Watcom/DOS from Nathaniel. His code
	  has been put into the contributions directory.
	- In the root of the Crystal Space distribution you will find a small
	  archive (wcc_make.tgz) containing two fixed makefiles for Watcom
	  for zlib en libpng (from Nathaniel).
	- *** Release of 0.09_008 ***
16-Mar-98:
	- Andrew Apted <ajapted@netspace.net.au> ported Crystal Space to use
	  the GGI library (more information at http://www.ggi-project.org/).
	- Enhanced mouse capabilities for DJGPP donated by Tor Andersson
	  <d97ta@efd.lth.se>.
13-Mar-98:
	- Tor Andersson send me a lot of fixes to get the DJGPP version to
	  compile correctly.
	- Fixed pngimage.cpp so that it will also work on non-GCC compilers.
	- Removed u_char, u_int, and u_long types in archive.*.
	- Tor Andersson was so nice to add JPG support to Crystal Space just
	  like I wanted yesterday :-)
	- *** Release of 0.09_007 ***
	- Another few fixes for DJGPP.
12-Mar-98:
	- Removed a few warnings that were still there. With gcc
	  and -Wall (all warnings enabled) I get no more warnings.
	- Renamed pcx.c to pcx.cpp (the only remaining file with
	  .c extension).
	- Made 'make.dep' a bit smaller using some makefile
	  tricks.
	- Added DO_TGA, DO_GIF and DO_PNG options to control what
	  graphic formats are supported.
	- Rationalized all makefiles using 'make.dep'. Only the system
	  specific stuff is now in makefile.lnx, makefile.sol, ...
	  All flags can be set from within 'make.dep'. Edit 'make.dep'
	  if you want to make configurable changes (like the above
	  DO_TGA flags and so on).
	  A consequence of this is that GNU make is required ('gmake').
	  I hope this does not cause too much troubles.
	- Added makefile for Windows for a pnglib DLL (made by Nathaniel).
	- Received new rd_jpg.c code from Tor Andersson (you can find this
	  in contributions/File.zip). Isn't someone willing to make a JPG
	  extension to Crystal Space just as is done with PNG and TGA?
	- *** Release of 0.09_006 ***
10-Mar-98:
	- Received code from Andrew Zabolotny to read PNG graphic
	  files.
	- Included libpng directory needed for reading PNG files.
	- *** Release of 0.09_005 ***
27-Feb-98:
	- Reading ZIP files finally works on a SPARC station. Let's assume
	  for the moment that all endianness and structure packing problems
	  are solved for now :-)
	- Crystal Space is now officially under LGPL. Read COPYING for more
	  details.
	- *** Release of 0.09_001 ***
 2-Mar-98:
	- Jaroslav Benkovsky <benkovsk@www.pvtnet.cz> mentioned that
	  svga.cpp includes a wrong include file. Has been fixed.
	- Fixed archive.cpp and archive.h for compile errors under Visual
	  C++.
 3-Mar-98:
	- Changes to archive class (from Andrew Zabolotny) to support
	  read-only archives. Changes to the archive are then put in
	  a 'fallback' like directory. Using this scheme you can easily
	  distribute a game on a CD-ROM and later apply patches by
	  putting them in a seperate directory. These patches will then
	  override the CD-ROM versions.
	- Little fix in watcom.cpp.
	- *** Release of 0.09_002 ***
 4-Mar-98:
	- Moved 'csar' to attic.
	- Fixed some zip (large.zip and perf.zip) files which got corrupt
	  one way or the other.
	- Fixed writing to ZIP archives. There was a problem with endianess
	  there. This problem occured whenever CS tried to replace a
	  file in a ZIP archive. The central directory entry would be
	  corrupt (although CS could still read the archive).
	- Removed executables and libraries from source archive.
	- *** Release of 0.09_003 ***
	- Dan Ogles send me a patch to his Direct3D port.
	- Dan Ogles reported a memory leak in the new archive code.
	  I fixed it.
	- Nathaniel sent me a fix so that the new archive code can
	  be compiled with Visual C++. This fix is not tested!
	- Added system independent memory debugger to Crystal Space.
	  Enable this memory debugger with -DMEM_CHECK. When this
	  memory debugger is enabled it will place boundaries of 16 bytes
	  before and after every memory block and check if it is overwritten
	  when the block is freed. It will show where the block is allocated
	  and where it is freed. It will also check for memory that is
	  freed twice or memory that has never been allocated.
	  You can also enable -DMEM_CHECK_EXTENSIVE together with -DMEM_CHECK.
	  If this is enabled CS will never really free memory but fill
	  all freed memory with a constant value ('X' in this case).
	  When CS quits it will check all freed memory and see if it
	  is still filled with 'X'. If not it will tell you what the
	  error is, dump some memory and show where the memory block is
	  allocated. This error means that some memory has been freed
	  but still used after it has been freed. As you can imagine this
	  option is VERY heavy. You need lots of memory for this (since
	  nothing is freed).
	  I checked CS with this and everything seems clean.
	- *** Release of 0.09_004 ***
 5-Mar-98:
	- Compile bug fixed in djgpp.cpp (with old graph structure).
	- Received new project file for Watcom C++ Windows version from
	  bob@imperium.ru (no idea what his name is).
	- Fixed archive for windows again (wrong include files).
	- Commandline arguments should work now in Windows version (thanks
	  to Nathaniel).
	- Added first version of syntax for world file format (worldfmt.txt).
	  This is a first step towards the full documentation for the world file
	  format.
 9-Mar-98:
	- Added a few fixes to get CS working on an IRIX/SGI system.
	  Received from Jon Heiner <jonh@MIT.EDU>
	- Changed definition of OS_UNIX. OS_UNIX is now automatically
	  defined whenever another unix OS is chosen (like OS_LINUX,
	  OS_SOLARIS or OS_IRIX currently). OS_UNIX is now the
	  prefered define to use for Unix specific features.
24-Feb-98:
	- Put new version of sound lib in contributions directory (received
	  from Nathaniel).
	- Received patch to OS/2 port from Andrew.
	- Received code to read ZIP files instead of CSAR files in Crystal
	  Space (from Andrew Zabolotny).
23-Feb-98:
	- Added OS/2 port made by Andrew Zabolotny <bit@freya.etu.ru>.
	- Added a compilation flag NO_DIRECT3D with which you can disable
	  Direct3D support. This is useful if you want to compile Crystal
	  Space on a Windows or Windows NT platform which doesn't have
	  the Direct3D stuff.
18-Feb-98:
	- Nathaniel sent me a new configuration utility with support for new
	  CONBG, COLOREDBG and LINEHISTORY options.
	- Added fixes from Dan Ogles to his Direct3D port.
16-Feb-98:
	- Nathaniel sent me some changes to his console: history of commands
	  (with PgUp/PgDn keys), wrapping of command lines which are too bug
	  for width of display and colored or transparent background (useful
	  for debugging).
	- Nathaniel sent me a new configuration utility with changed MESSAGE
	  support and new DRIVER configuration flag.
	- Added fixes from Dan Ogles to his Direct3D port.
13-Feb-98:
	- Received a few additional patches from Dan Ogles on his Direct3D
	  port with another major speed increase.
12-Feb-98:
	- Incorporated Direct3D support patch from Dan Ogles.
	  There is a new configuration file option DRIVER which you can
	  set to 'software', 'direct3d', 'opengl', or 'glide'.
	  Currently only 'software' and 'direct3d' are supported and
	  'direct3d' is only supported for the Windows port.
	- Much of the FltLight code has been moved to graph3d.cpp since
	  it is hardware dependent.
	- FULL_SCREEN variable is now available for all ports and it
	  set to the appropriate value.
	- Added new 'wincsar' utility (Windows version of csar with a nice
	  GUI) ported by Nathaniel.
	- To prevent potential problems the buffer that is read from a
	  world file is now NULL-terminated.
10-Feb-98:
	- Started creating HTML documentation using Doc++.
9-Feb-98:
	- Transparent textures work again. And better than ever! There is
	  support for lighting of the non-transparent parts and the Z buffer
	  is correctly filled so that sprites and dynamic lighting will work
	  (sprites will not work because there aren't any but you get
	  the meaning :-)
	- To prevent mapping of color 0 (which is used for transparency) color 0
	  is now mapped to 0 in all levels of light. It couldn't be used for
	  textures in any case because 0 is reserved for black regardless of
	  gamma level (and 255 for white).
	- New draw_scanline_transp_map added to support transparent textures
	  with lighting.
	- Overflow errors in find_rgb_slow could cause the wrong color to be
	  returned (with the strange effect that the color tables are
	  recomputed every time and the undesirable effect that 255 is used
	  inside textures).
5-Feb-98:
	- Removed support for filters since it is hard to maintain, kind of ugly,
	  difficult (or impossible) to implement and hardware and can be replaced
	  in almost all cases by alpha transparency.
	  I moved the code to the 'attic' directory for historical reasons.
	- Try to make transparent texture feature working again.
4-Feb-98: V0.09
	- Made new class FileImage which is an abstract class for implementing
	  and recognizing different file types.
	  gifload.cpp has been rewritten as a subclass of FileImage (gifload.cpp
	  has been removed).
	  FileImage supports 24-bit images. These are scaled down to 8-bit by
	  TextureMM.
	- TGA support has been added as a subclass FileTgaImage.
	- Allocate alpha_maps instead of just declaring them. This makes
	  the executable with GCC some 128K smaller!
-----------------------------------------------------------------------------
3-Feb-98:
	- Received a few patches and a working Watcom/DOS makefile from Bart
	  van Langen <bart.van.langen@dyme.nl>.
	- Forgot to update version number to 0.08 :-(
	- Set DEBUG=no in cryst.cfg.
2-Feb-98: V0.08
	- Received a few patches for the DJGPP, Watcom and Windows
	  versions from Nathaniel.
-----------------------------------------------------------------------------
30-Jan-98:
	- Output current version, screen resolution and chosen world file to
	  'debug.txt' so that we can use this together with the performance
	  test evaluation.
	- If you pressed the '2' key before the '1' key you could get a crash.
	- Collision detection of the camera with walls works again.
	- 'version' and 'about' commands work :-)
	- Made the help in the console a lot shorter (there were too many
	  commands to get on one screen). Maybe I should start thinking about
	  paging.
	- true_rgb works again. I had to add an additional white light table
	  to get it working.
	- Phil Harvey sent me a slightly faster version of find_rgb_slow.
	  This should make the startup of Crystal Space slightly faster.
	- FltLights are now known by the World class. It maintains a linked
	  list of them and draws all dynamic lights from this list every
	  frame.
	- Added 'addlight', 'dellight', 'dellights', 'picklight',
	  and 'droplight' commands to control FltLights.
	- Binded key '1' to 'addlight', 'shf-1' to 'dellight',
	  'alt-1' to 'dellights', '2' to 'picklight', and 'shf-2'
	  to 'droplight'.
	- Added ';' comment capabilities to the console (for scripts).
	- Empty lines are also ignored by the console.
	- Added five new tests to 'perf.scr' (floating light enabled).
	- Added '-exec' commandline option to execute a script. For
	  example, to start the performance tests you can now do:
	  	cryst perf.csa -exec perf.scr
29-Jan-98:
	- Changed all #include's to contain a pathname relative to the
	  root of the source archive:
	  	#include "world.h" becomes #include "world/world.h"
	- Removed all ugly #ifdef/#endif constructs around #include
	  statements.
	- There is a -DNO_BOOL_TYPE that you can optionally define if
	  your compiler doesn't support the 'true', 'false', and 'bool'
	  keywords.
	- From now on it is the intention that boolean return values
	  and parameters should be written with the 'bool' type.
	  And 'TRUE' and 'FALSE' should be written with 'true' and
	  'false'. This is more conformant with recent C++ standards.
	  The -DNO_BOOL_TYPE define will define 'true', 'false',
	  and 'bool' in case your compiler doesn't support them.
	- I tried to find all uses of boolean variables and replace them
	  with 'bool' type parameters. 'do_xxx' types of variables which
	  are NOT boolean have been renamed to 'cfg_xxx' to avoid
	  confusion.
	- Removed key to load world file since it is not needed and
	  currently does not work very well either.
	- Crystal Space exits graciously if it can't open the world file.
	  This is probably better than just crashing the computer :-)
	- Crystal Space exits graciously if it can't open some texture
	  file.
	- Added 'exec' console command to start an ASCII script. This
	  script can contain console commands. Every line from this script
	  is executed one line at a time at every new frame.
	- Added 'coordset' console command to set a coordinate.
	  Format is 'coordset sector,x,y,z'.
	- Added 'facenorth', 'facesouth', 'facewest', faceeast', facedown',
	  and 'faceup' commands to set the orientation of the camera.
	- Added 'cls' command to clear the console.
	- 'perftest' command also writes to 'debug.txt'.
	- Added 'cmessage' to write a message to the console.
	- Added 'dmessage' to write a message to 'debug.txt'.
	- Added 'dnl' to write a newline to 'debug.txt'.
	- Added 'perf.csa' and 'perf.scr' to have an easier way to
	  do performance tests. Just start Crystal Space with 'perf.csa',
	  switch to the console, and type 'exec perf.scr'.
	  When everything is done you will have some performance test
	  information in 'debug.txt' (appended at the end of that file).
	  You can then restart Crystal Space and do everything again but
	  first press '1' to get the dynamic light on. This will test
	  with dynamic lighting.
27-Jan-98:
	- Thanks to a suggestion of Karlis Freivalds I managed to
	  optimize the FltLight drawing a lot.
	- Fixed DJGPP and SVGALIB version so that they compile.
	- Added support for keys '0' through '9' in the SVGALIB version.
	- Added support for multi-color FltLight. Color of a FltLight is
	  specified with r,g,b but only one color (or white) can be used
	  at the same time. If true_rgb mode is used currently only
	  white dynamic lights are supported.
	- Added new project files for Watcom from Nathaniel.
26-Jan-98:
	- I discovered that the draw_scanline routines did a stupid
	  interpolation of the 1/z value every 16 pixels. But 1/z is
	  linear in screen space! There is no need to interpolate it.
	  This should make the renderer a little more efficient and
	  it will also make the Z fill I added a few days ago a LOT
	  more efficient.
	- Robert Blum fixed a bug with a graphicsPalette array being
	  too short (255 instead of 256).
	- FltLight routine now works in fixed point. It has not been
	  fully optimized yet but it seems to work more or less.
	  You can have a look at it with the '1' and '2' keys. '1'
	  toggles the creation of the dynamic light (default is off).
	  When you press '1' a pulsating dynamic light is created which
	  floats 5 units in front of you. It will move together with you.
	  If you then press '2' the dynamic light will remain fixed
	  on that position. So you can move away and look at it from
	  another direction.
	  There is currently a limitation of one dynamic light. This
	  limitation is just a limitation of the interface, not of the
	  FltLight class itself. The engine also does not know about
	  FltLight's yet. It is handled in 'main.cpp'.

	  PROBLEM 1: a FltLight will currently disappear when you move
	  too close to it.
	  PROBLEM 2: it could be faster (I hope :-)
	  PROBLEM 3: because it adds lighting after all other lighting
	  has happened it will not work as well to light truly dark
	  areas.
	- Received updated source for configuration utility of Nathaniel.
	- Nathaniel sent me some patches for compiling the Watcom version
	  of Crystal Space (both Windows and DOS version) regarding
	  vesa 2. He also included updated project files (although they
	  will not work with my changes to the source directories).
	- After I posted this beta version Nathaniel sent me a new bugfix
	  for his configurator :-)
	- Nathaniel sent me a little patch for win32.cpp so that the keys
	  '0' through '9' work (I wonder if this has something to do with
	  my dynamic lighting code :-)
	- Nathaniel sent me a Windows 'csar' executable and some Visual C
	  project files for 'csar'.
24-Jan-98:
	- Optimized FltLight drawing (not finished yet though).
	- Changed white_light table so that it can only make things
	  brighter (instead of using 200 as the default light level,
	  0 is now the default light level).
23-Jan-98:
	- Wrote FltLight class which is a dynamic lighting class based on
	  the Z buffer. It is not completely finished yet though.
	- Enabled Z-fill in draw_scanline routines since it is needed for
	  the FltLight class. This slows down the engine somewhat though
	  (from 11FPS to 9FPS).
	- Received Crystal Space Configuration Utility from Nathaniel.
	  It is a seperate application (currently only for Windows and
	  DOS) and you can find it in the 'config' directory next to
	  'csar' and 'cryst'.
22-Jan-98:
	- Converted gifload.c to gifload.cpp (made it C++ compatible).
	  Also use 'new' and 'delete' in all cases (there was a bug here:
	  an array was allocated with 'new' but freed with 'free')
	  (bug found by Robert Blum).
	- Split 'version.h' from 'def.h' which contains version number.
	- Rearranged code in several directories for clarity.
	  I updated 'make.dep' so that all the GNU makefiles should
	  work (these are: makefile.unx, makefile.sol, makefile.svg,
	  makefile.lnx and makefile.djg). All other makefiles and
	  project files will not work anymore. Please send patches
	  to me.
	- Removed 'global.h' and put functionality in 'types.h'.
	- Create a 'def_sys' directory which contains a general version
	  of system dependent files. A port should try to use these
	  versions unless this is not possible for some reason. In that
	  case it can create a new version of the specific file in its
	  own directory (for example, there is a general 'printf.cpp' file
	  which works for most ports but for Windows there is a specific
	  'printf.cpp' file in the 'win32' directory).
	- Removed time and fopen functions from all system specific code
	  and moved to 'def_sys'.
	- Added fix to Windows 'pprintf' version from Robert Blum so that
	  there can be no more buffer overrun.
	- Tor Andersson augmented his donated 'File.zip' (in 'contributions')
	  with code to read PNG files.
20-Jan-98:
	- I made a new directory 'contributions' inside the archive which
	  contains other code which several people donated to Crystal
	  Space but which has not yet been integrated into the engine. If
	  you think you can integrate it properly, please feel free to
	  do this.
	- Nathaniel sent me the first sound support code. The code has
	  not been integrated with CS yet. You can find it in the
	  'contributions' directory ('Mixing.zip').
	- I also added 'File.zip' to the 'contributions' directory, which
	  is some code I got from Tor Andersson a while ago. It contains
	  routines for loading several graphic file formats.
	- Tor Andersson sent me a virtual machine which can be used as
	  a scripting language inside Crystal Space. But since it has not
	  been integrated yet (it is also unfinished) I added it to the
	  'contributions' directory ('Vm.zip').
	- I also added a 'joystick.cpp' file to the 'contributions' directory
	  which is an example on how to add joystick support in Linux.
	  This file was donated by Gary Clark.
	- Made a new file 'endian.cpp' which contains a few routines to
	  help writing files without having to worry about endianess.
	  This functionality was part of archive.cpp but since I also need
	  it elsewhere I have moved it.
	- The lightmap information that is saved inside a CSAR file is now
	  almost completely system independent. There is still a small
	  chance of some lightmaps being recalculated when you switch from
	  one system to another with the same CSAR file. This is because there
	  are floating point values in the files which can be computed
	  slightly differently on the other systems (slightly different
	  precision and so on). Since Crystal Space checks for the
	  accuracy of the lightmaps by testing some of the values in
	  the saved structures it can happen that a lightmap will be
	  recalculated.
	  The 'light.tables' file will be recalculated as well. I still
	  have no clue why this happens. I checked the two different
	  light.tables files (one from Linux and one from Solaris) and
	  there are a lot of differences. I have to check this closer
	  some time.
	- Split 'printf' into a seperate file for every system. I'd like
	  to have almost no DO_X11, DO_WIN32, ... or whatever conditionals
	  in the root tree of the Crystal Space code. Therefore every
	  system has its own version of 'printf.cpp'. Currently only
	  the Windows version does something special although the Svgalib
	  version and maybe the Macintosh version as well could also
	  benefit from a special 'printf' version.
	- Removed several harmless compilation warnings.
	- Included the 'u' component test again in draw_scanline because
	  the visible artifacts where a bit too ugly to see.
15-Jan-98:
	- Changed the CSAR format and utility to make it more system
	  independent and extensible. Endianess and padding of structures
	  does not matter anymore. There is a version number in the archive.
	  As a consequence the old archives are not compitable anymore,
	  the CSAR files included with Crystal Space are all the new
	  format.
	- Rewrite scan.cpp with a large macro system. scanline.inc is a
	  new file which contains parameterized code to generate a
	  draw_scanline routine. You define SCANFUNC, SCANINIT, SCANLOOP,
	  and SCANMAP and include "scanline.inc" to define your specific
	  draw_scanline function. See "scanline.inc" for more detailed
	  information.
	  The advantage of this aproach is of course that there is now
	  only one place that you need to change when you need to update
	  the draw_scanline routines: scanline.inc.
	- Anis Ahmad gave me an update makefile for 'csar' and 'cryst'
	  for Watcom/DOS.
	- Added patch of Dan Ogles to have a working 'printf' function
	  for the Windows port. All 'printf' calls have been replaced
	  by 'pprintf'.
10-Jan-98:
	- Added yet another patch from Allessandro Russo which makes
	  the restoration of autorepeat in the X version even better.
	  You don't have to generate another event anymore before
	  Crystal Space quits.
	- Several people send me some small patches to make 'list.h'
	  and 'sprite.h' compilable on VC and Watcom. Some of these
	  patches were somewhat conflicting. I hope it will work now.
	  Otherwise, please tell me.
	- Anis Ahmad gave me a makefile for 'csar' for Watcom/DOS.
	- Added 'cryst.wpj' Watcom C++ project file (version 11) that
	  you can use instead of makefile.wwc (for the Windows version).
1-Jan-98:
	- Today my daughter Maaike Tyberghein is born!
30-Dec-97:
	- I did not manage to fix the (u,v) problem in the texture mapper
	  completely. I think it is a fundamental problem that needs a
	  fundamental solution. Only I can't find it. At least I have now
	  managed to avoid the 'u' test. The 'v' test is the only one
	  that remains.
	  The result of all these fixes is that the Windows version of
	  Crystal Space should also be a lot more stable.
	- By accident I discovered that the texture mapper routines did
	  too much work! The lighted texture for the texture mapper has a
	  width that is a power of 2. But not all of that width is really
	  needed. So the texture mapper only needs to fill the needed
	  width. I suspect that this will give a speed increase of about
	  50% for the texture cache. This is certainly welcome.
29-Dec-97:
	- I'm slowly trying to remove all occurences of overflows from
	  the texture cache in the draw_scanline routines. I fixed:
	  	- The case where interpolating 16 pixels further caused
		  the computations to go beyond the horizon of the polygon
		  plane.
		- There was a bug in the case that the D component was
		  very small. I choose a wrong value for 'O' and thus
		  the computation of 1/z was wrong.
		- In case the D component is very small I now also set
		  the u_div_z and v_div_z computation to some default
		  (u,v) value: (0,0) in this case.
	- There is now a margin above and below the lighted texture in
	  the texture map. This is the easiest way I could find to fix
	  the overflow problem. Currently this margin is not filled with
	  any useful data however. This still needs to be done.
28-Dec-97:
	- Decreased D component check in Graphics3D::DrawPolygon from 0.001
	  to 0.02. This makes sure that really flat polygons do not cause
	  an overflow in the texture mapper.
	- Added 'X' option in 'csar' to extract a file to standard output.
	- Added 'e' option in 'csar' to directly edit a file from within
	  the archive. This feature currently works by executing 'vi' on
	  a temporary file in '/tmp' so it will only work on Unix.
	- Added 'hi' command to console to hilight a polygon (for
	  debugging purposes).
	- The Unix version of Crystal Space will save the current coordinates
	  to 'coord.bug' when Crystal Space crashes. That way it is easier
	  to go back to some place where a crash occured.
27-Dec-97:
	- Fixed bug with the computation of light.tables with
	  MIXLIGHTS==NOCOLOR.
	- New mipmapping choices with the 'mipmap' command to test all the
	  mipmap levels.
26-Dec-97:
	- Use a 'precalc.csa' archive instead of a directory. This is much
	  more efficient and easier to handle.
	- Created 'csar' archiver utility to handle CSA archives.
	- Crystal Space now supports loading all data from a CSA archive.
	  This means that you can store the world file, the textures, the
	  precalculated lightmaps, the precalculated alpha maps and the
	  precalculated lighting table inside one CSA file and load it
	  as such. The old way is still supported.
	- In addition, when a texture is not found in the CSA file it
	  will be loaded from the normal 'data' directory.
	- SAVE_RGB_ALLOC has been removed since the light.tables files
	  is now in the CSA archive.
	- It is now possible to store 'cryst.cfg' in the CSA archive.
	  Currently MIXLIGHTS and FAST_RGB_ALLOC are supported. They
	  will override the values in the main 'cryst.cfg'.
25-Dec-97:
	- Added Archive class to implement an archive of files. Currently
	  this is implemented by a directory.
	- Use a 'precalc' archive (and directory) to store the lightmaps
	  we just computed. This means that startup will be much
	  faster the second time Crystal Space starts.
2-Dec-97:
	- Added first non-functional 3D sprite code from Darius Snapkauskas.
	  It doesn't work yet but the stubs are there.
	- Added patch from Alessandro Russo <alessandro.russo@ntt.it> that
	  fixes the autorepeat restore problem a little (but still not very
	  good though, you need to generate another event after you press
	  the 'q' button :-)
	- Added patch from Gary Clark which should fix the problem that under
	  some X Windows versions the Window of CS would not start displaying
	  immediatelly.
1-Dec-97:
	- Applied a few fixes which Karlis Freivalds <karlisf@cclu.lv>
	  sent me to wcc/watcom.cpp.
	- Discovered another bug in the lighting routines which I fixed
	  by removing a test in polygon.cpp. So the lighting routines work
	  now but are VERY VERY slow. I need to optimize or rewrite this
	  again. Better would be to rewrite this as seen from the polygon
	  instead of from the light.
	- I fixed the bug with portals as seen from within a mirrored
	  space.
30-Nov-97:
	- Light shining now also works on portal polygons with alpha.
	- Added command 'portals' to disable/enable portal drawing.
	- Added command 'transp' to disable/enable transparent/filtered/
	  alpha drawing.
	- Added command 'coordshow' to disable/enable showing of coordinates
	  at runtime.
	- Apparently the shining of lights through a warping portal is
	  finaly fixed. I have to double check to make sure though.
	- Fixed an old bug which could cause mipmapping of transparent
	  textures to go wrong completely.
	- Fixed a bug in Polygon::intersect_ray which occured when
	  the ray vector was perpendicular to the plane of the polygon
	  to test. In that case the test would return success even if
	  the polygon was somewhere else.
	- Optimization in light shining routines: for every 16x16 texel
	  grid on a lightmap I did 3 divisions and 9 multiplications in
	  PolyTexture::shine. Now I only do 3 multiplications.
	- Added feature to camera so that moving through a warping portal
	  also applies the transformation to the camera matrix. This means
	  that when you walk through a mirror you will just be deflected
	  back :-)
	  The feature works but there are still a few problems.
	- Added 'LEN' to ROOM/TEX statement to set the scale of a texture.
	- Changed the syntax of the PORTAL statement inside ROOM from:
	  PORTAL ('poly','room') to PORTAL (POLYGON ('poly') SECTOR ('room')).
	  And also added two optional parameters: ALPHA (x) to set the
	  alpha value and WARP (MATRIX (...) V (...)) to set the warping
	  factor.
29-Nov-97:
	- Removed all uses of the Vertex class. In PolygonSet we just use
	  three arrays of Vector3 (world, object, and camera space). The
	  reason I did this is that Vertex was a cumbersome class at best
	  and I also have need of more than one camera space set. This
	  was difficult to do with Vertex.
	- Fixed the bug with a BSP split of a polygon and the texture for
	  the texture cache. When a BSP splits a polygon it will create new
	  PolyTexture objects for the split object and recompute the bounding
	  boxes of both polygons. This way the polygons are handled seperately
	  in the texture cache.
	- Added WORLDFILE config option and the ability to specify a world file
	  on the commandline. Default is still 'world'.
	- Added r,g,b fields to portal structure that will be used to
	  change the color/intensity of the light that passes through a
	  portal. This is not implemented yet, but the fields are here.
	- Changed 'make.dep' makefile to use 'gcc -MM' instead of
	  'makedepend'. 'makedepend' is MUCH faster but it is not supported
	  in DJGPP and gives many errors on my Linux system (maybe it's
	  on old version of makedepend).
	  Since 'gcc -MM' is slower it is also no longer default.
	  You have to say 'make -f makefile.xxx depend' to regenerate
	  the dependencies.
	- Added the capability to PolygonSet to be transformed to
	  camera space more than once. This is mainly to allow warping
	  portals to jump to the same sector (for mirrors).
	- New 'AUTOREP' config option and -arep/-noarep commandline option
	  to control autorepeat. This is only for the X Windows version
	  of Crystal Space. When AUTOREP is disabled ('no') walking
	  through the world will be much smoother. The disadvantage is
	  that Crystal Space is not able to restore autorepeat (I have no
	  idea why) after it quits. If you disable autorepeat and you
	  want to close Crystal Space WITH autorepeat back on, you should
	  first select another window and then interrupt Crystal Space with
	  ctr-c (or 'kill').
	- Alpha transparency works. There are three levels: 25, 50, and
	  75%. Enable for a portal polygon with 'ALPHA (25)'.
	  This effect combined with mirrors is REALLY nice!
28-Nov-97:
	- Started working on correct lighting support for mirroring.
	  Apparently this is not as easy as it seems.
	- Remove todo.txt and faq.txt (only maintain todo.html and faq.html
	  now).
	- Rewrote the hit_beam code to calculate lighting and shadows to
	  correctly keep warping portals in mind.
	  The shadow caster is also much more accurate now. In the original
	  world file there were several places where strange lighting
	  patches appeared. These are now gone.
	- Added support back for saving light tables and a flag to enable
	  accurate RGB allocation again. With FAST_RGB_ALLOC you can control
	  the new fast RGB allocator of Gary Clark. This version is much
	  faster and thus needs no external file ('lights.tables') to save
	  the RGB values. But the quality is not as good as the original
	  allocator (that can be obtained with FAST_RGB_ALLOC=no).
	  With SAVE_RGB_ALLOC you can control where the RGB tables will
	  be saved (and will only be used if FAST_RGB_ALLOC=no). Crystal
	  Space will automatically check a few colors in this table to
	  check if the file is ok. If not it will automatically regenerate
	  it. Note that FAST_RGB_ALLOC and SAVE_RGB_ALLOC are ONLY used
	  when MIXLIGHTS is not equal to 'true_rgb'. Otherwise you have no
	  choice but to use the faster way.
27-Nov-97:
	- Added 'MIXLIGHTS' flag in cryst.cfg to choose between 'fast'
	  and 'slow' mixing of lights. 'slow' mixing gives the more
	  accurate RGB mixing of Gary Clark. If this is enabled the
	  TABLE1, TABLE2, and TABLE3 flags in cryst.cfg are ignored.
	- Removed all 'red_table', 'blue_table', ... names from the code
	  and replace with 'table1', 'table2', ... instead.
	- Added AMBIENT_RED, AMBIENT_GREEN, and AMBIENT_BLUE flags in
	  'cryst.cfg'. These flags control the ambient light for a
	  polygon that receives no lighting. Default is 40. These flags
	  are only used if MIXLIGHTS is set to 'slow'.
	  If MIXLIGHTS is set to 'fast', AMBIENT_WHITE is used instead
	  to control the ambient lighting level of the white table (if
	  there is a white table).
	- Removed TABLE1, TABLE2, and TABLE3 flags. The functionality of
	  this is now replaced with MIXLIGHTS. This flag can now have the
	  following values:
	  	- true_rgb	slow but accurate RGB mixing.
		- fast_rgb	faster (less accurate) RGB mixing.
		- fast_wrb	White, red, and blue lights.
		- fast_wrg	White, red, and green lights.
		- fast_wbg	White, blue, and green lights.
	  The speed we are talking about is the speed of the texture cache.
	- AMBIENT_RED, GREEN, BLUE, and WHITE work a little differently
	  now. First of all, these fields are always used in all cases
	  (independent of the value of MIXLIGHTS). AMBIENT_WHITE controls
	  the ambient white value. AMBIENT_RED/GREEN/BLUE control the
	  additional red/green/blue ambient value.
	- Removed -color/-nocolor and COLOR configuration option and
	  replaced with MIXLIGHTS=nocolor option.
	- Updated document.txt for all latest new changes.
	- Updated faq.txt/faq.html for all latest new changes.
	- Changed 5:5:5 distribution for RGB (from Gary Clark) to
	  6:6:4 since that gives a much nicer result.
	- Added a white light table to make uniform lighting
	  work in all cases.
	- Added allocation/deallocation of lighting tables in class Textures
	  so that we only allocate the table we really need.
	- Added support for SECTOR in COLLECTION object.
	- Split create_lighted_texture in four parts for the main
	  MIXLIGHTS methodologies.
	- New LIGHTMAP_SIZE cryst.cfg option to set the lightmap size
	  (default 16).
26-Nov-97:
	- Fixed NULL pointer bug in the handling of the new portal
	  class.
	- Started working on the mirror system.
	- Let Sector::draw share a bit more code. The code to draw a set
	  of polygons is independent of the use of a BSP.
	- Basic mirroring seems to work. Only draw_filled had to be changed
	  to correct the clockwise order of the vertices.
	- Applied patch of Gary Clark for true R,G,B lights.
	  There is also no need anymore for the light.tables file.
	- Applied a few changes to the patch so that it can be disabled/
	  enabled at startup time.
	- A few cosmetic changes to texture.h/cpp.
	- Lights are now always given with (R,G,B) values and possibly
	  converted to W,R,B (or some other configuration) if fast mixing
	  is enabled.
25-Nov-97:
	- Rewrote intersect_segment so that it correctly uses the BSP
	  if it is present.
	- Moved three Plane equations (world, space, camera) from Polygon3D
	  to PolyPlane where they belong. Also moved a lot of functions
	  (like distance, close, visible_from_point, ...) as well since
	  they don't need polygon information; only the plane.
	- There was a bug in the world file which I only noticed now
	  because planes are shared (I used a wrong plane for a sloped
	  polygon).
	- Made a seperate class of a portal (also containing the non-
	  functional space warping system: mirrors).
24-Nov-97:
	- Moved get_uv() in polygon.cpp to attic since it is a function that
	  only documents what is going on but is not really used.
	- Made Plane class a bit more complete and also added some data to
	  that class so that planes can start using that class instead
	  of using 'float A,B,C,D'.
	- Added add_vertex_smart to PolygonSet and Polygon3D so that
	  you can add vertices and the routine will automatically check
	  if the vertex already exists and use that instead.
	  Used this new routine in the merge routine from ThingTemplate
	  to Thing.
	- Added Polygon3D::split_by_plane to split a polygon by a plane.
	  This is going to be used by the BSP routine.
	- Added copy constructor to Polygon3D so that you can easily create
	  a copy of a polygon. Note! This function does not work perfectly
	  yet. There is still the problem of data that is currently
	  unshareable. This can be fixed easily however. Still todo.
	- Added a BSP tree which can be used for PolygonSets. The code is
	  not used (and tested) yet. I will integrate it as an optional
	  feature for a Sector soon.
	- Added BSP command to PolygonSet (Sector and Thing) so that
	  it will now build a BSP when this command is present.
	- Added BSP support to the drawing of Sectors and to my amazement
	  it seems to work. But don't despair! There will be bugs in there
	  somewhere. Rest assured that I will find them.
	- Yes indeed. I found a few bugs but now everything seems to
	  work for sure.
	- Note that as long as the drawing with sectors is not done using
	  Z-fill, we can't use Things in a BSP room since the Things is
	  drawn AFTER all polygons of the Sector and it may well be that
	  a polygon of the Sector is actually covering the Thing.
	  This will be fixed as soon as we have Z-fill.
21-Nov-97:
	- Moved 'geomutil.c' to 'attic'.
	- Applied patch from Alessandro Russo to make movement in the X
	  version of Crystal Space better. Autorepeat is disabled and it is
	  possible to press several keys together. For example, you can now
	  walk forward by pressing the arrow up key and later press shift
	  to increase the speed without having to release/press the arrow
	  key again. You can also walk forward and turn left at the same
	  time. There is a small problem with this patch however. It tries
	  to correctly restore autorepeat after CS quits. This does not
	  seem to work correctly (at least it doesn't work on my X server).
	  If you have the problem that pressing 'q' or using 'quit' from
	  the console does not correctly restore autorepeat than this can
	  be fixed by switching to another window (which on my server
	  correctly restores autorepeat) and then killing or interrupting
	  CS (with ctr-c for example).
	- Changed the patch so that the old system works as well. Normally
	  this should mean that a port need not be changed immediatelly
	  to support the new do_update() function. Currently only the
	  X port supports this. I have not been able to test the other
	  ports yet but normally they should work as for them it appears
	  that nothing has changed.
	  See 'system.h' for more info about what you need to do to enhance
	  a port so that it works with the new (and better) system.
	- Started the move from stuff to the new Graphics3D layer.
	  Wrote Graphics3D::DrawPolygon() (copy from Polygon2D::draw_filled ()
	  more or less).
	- Started integration (optional at first) of the new experimental
	  Graphics3D layer with the rest of the engine.
	- Succesfully made the switch to the new Graphics3D layer but it
	  still lacks lots of features. To disable the new Graphics3D layer
	  set USE_GRAPH3D in def.h to 0.
20-Nov-97:
	- After a lengthy discussion with Gary Clark concerning the upcoming
	  Graphics3D classes for hardware (3D card) abstraction we started
	  implementing things.
	- Made first proposal for Graphics3D class.
	- Added G3DNewID() and G3DResetID() to create a unique numbering
	  system for all objects in CS.
	- CsObject (and thus, Sector, Thing, Light, ...) have a unique ID now.
	- Split CsObject into CsObject and CsObjectTrigger. CsObjectTrigger
	  is a subclass of CsObject which supports triggers (not all CsObjects
	  need that support).
	- Polygon3D and PolyPlane are now also CsObject's which means that
	  they also have the unique ID.
	- CLights is now also a CsObject (and thus has an id).
	- The non-functional DynLight class is now also a CsObject.
17-Nov-97:
	- The Unforgiven project of the cruXaders joins forces with Crystal
	  Space!
14-Nov-97:
	- Received texture TStone22.gif from Tor Anderson.
	- Added World::dump.
	- Added 'dump' command in console to dump as much information
	  as possible about the world.
	- Added PolyPlane::dump.
	- Rationalized scan.h: removed all unneeded variables.
	- Added debug_dump() function in main.cpp and a signal handler
	  in xlib/xwin.cpp so that debug_dump() is called whenever
	  Crystal Space crashes. This should help debugging. Other
	  ports can also call debug_dump() if they have the capability
	  of intercepting a crash.
	- SVGALIB port also calls debug_dump().
	- New '-debug'/'-nodebug' commandline options, 'DEBUG'
	  configuration file option and 'debug' command in console
	  to enable/disable more information for debugging. This
	  information is then kept in various parts in the
	  engine (most information comes from Polygon2D::draw_filled)
	  and displayed in 'debug_dump()' after a crash (only on
	  Unix systems currently).
	- Commandline option help is more compact.
	- In an attempt to fix one part of the (u,v) texture mapping
	  bug (I mean here the bug that requires the (u,v) test in
	  all draw_scanline routines) I test on the D component of the
	  plane normal in camera space. If this is too small I have
	  a special case.
13-Nov-97:
	- In an effort to find the u,v limit draw_scanline bug I created
	  a 'perfect' texture mapper which does not do interpolation every
	  16 pixels. With the Shf-'p' key or 'perfect' command you can
	  enable this mode.
	- Created the text 'texmap.txt' to help better understand how
	  the mathematical formulas behind texture mapping work.
	- Large debug dumps of objects happen always in 'debug.txt'
	  regardless of the console settings.
11-Nov-97:
	- Created a new room (a Thing library) right of the stairs
	  where you can look at a few shapes.
	- Enhanced Matrix3::load so that you can also say ROT_X,
	  ROT_Y, and ROT_Z around some angle.
	- Fixed Thing::transform. Rotations are applied cummulative
	  but it applied the new transformation wrong so that it was
	  done first instead of last.
	- New 'ACTIVATE(script)' keyword to directly activate a
	  script for some object.
	- Changed 'clear' color to white so that you can more easily
	  see the gaps between the polygons (this is for debugging,
	  there should be no gaps).
	- Fixed a few bugs in the dynamic lighting system which may
	  have caused system-dependent problems (memory overwrite,
	  or just not functioning).
	- Added LIGHTX support for SECTOR and THING (this will be
	  used as the default dynamic light for all polygons inside
	  the object unless the polygon overrides this default).
	- Even though PolyTexture::shine is not a critical function
	  (it is only calculated at startup to compute the lightmaps)
	  I optimized it a bit to make startup somewhat faster.
	  Don't expect spectacular speedups though.
	- Show statistics after loading the world file (the number
	  of polygons, sectors, portals, things, and lights that
	  are loaded).
10-Nov-97:
	- It is now possible to have THING and SIXFACE statements
	  outside ROOM and SECTOR statements. This will define a
	  THING template that can then be used from within a real
	  THING with the TEMPLATE command.
9-Nov-97:
	- Created new classes ThingTemplate and PolygonTemplate to
	  create templates for Things. So you can make libraries of
	  Things to use in worlds.
	- Create new TextureTrans static class to encapsulate the
	  methods that transform vector/length information to
	  a texture matrix/vector.
8-Nov-97:
	- General cleanup, added some comments, removed obsolete
	  code ('attic' directory), removed all references to
	  'texnr' and replaced with a pointer to a texture.
7-Nov-97:
	- Added CsScript and CsRunScript ADT classes and the
	  LanguageLayer. Rewrote old script language so that it uses
	  this languagelayer and virtual classes.
	- Optimized texture cache by replacing some divisions and
	  mutliplications by shifts.
	- Optimized the texture cache loop a bit too.
	- Added IntScript and IntRunScript classes to implement
	  internal C function scripts.
6-Nov-97:
	- Rewrote texture.cpp with a new class TextureMM which
	  encapsulates a texture in all its mipmapped forms.
	- Disabling texture mapping (flat shading) is now better
	  since a mean color is calculated for every texture which is
	  used then.
	- Moved a few functions from public to private in Polygon3D.
5-Nov-97:
	- Incorporated new patch for watcom.cpp from Nathaniel.
	  -vga and -vesa commandline options have been removed.
	  VESA config file option has been removed.
	  Support for keys 0 .. 9.
31-Oct-97:
	- Finished rewrite of all the load routines.
30-Oct-97:
	- Converted Polygon::load to the new parsing utils.
	- Added a %D option to ScanStr to read a list of integers.
	- Converted PolyPlane::load to the new parsing utils.
	- Added a %F option to ScanStr to read a list of floats.
	- Syntax of TRIGGER in COLLECTION has changed to
    		TRIGGER (<object> , 'activate' -> <script>)
29-Oct-97:
	- The mailing list: crystal@linux.it is created!
	- Continued the rewrite of various load routines (like load_sixface).
	- Included a 'make depend' option in the makefiles based on 'make.dep'
	  to create dependencies in an easy way.
	  The makefiles that support this will do a 'make depend'
	  automatically whenever the normal 'make' is done.
28-Oct-97:
	- Based on a suggestion from Phil Harvey I added a polygon counter.
	  With -stats (or -nostats) on the commandline, 'STATS' in the config
	  file, or 'stats' in the console, you can enable/disable statistics
	  (default disabled). It shows the number of polygons considered
	  for drawing, the actual number of polygons drawn, and the number
	  of portals that were drawn (in that order).
	- Rewrote Sector::load_room with the new parsing utilities. This
	  means that the whole syntax of a room has changed (see the world
	  file how it is changed).
	- Rewrote Sector::load with the new parsing utilities.
	- Rewrote Thing::load with the new parsing utilities.
	- Made ScanStr function that works a bit like sscanf but it is
	  more specifically useful for Crystal Space parsing (it understands
	  things like %b for boolean values for example).
27-Oct-97:
	- Received new parser module from Steve. This should make the parsing
	  of the ASCII world file a bit more readable :-)
	  Note that this will require a change of the world file format.
	- Received new dynlight module wich implements constant lighting and
	  a few other tweaks.
	- I removed all the 'save' routines since they are not useful anymore.
	- Rewrote Texture::load using the new parse routines. This means that
	  the syntax has changed to:
	     TEXTURE 'name' (TRANSPARENT (-1) FILTER (0, 'dark_glass'))
	  The default for TRANSPARENT is now -1 so it need not be specified.
	- Rewrote Light::load using the new parse routines. This means that
	  the syntax has changed to:
	     LIGHT (<x>,<y>,<z>:<dist>,<str>,<redstr>,<bluestr>,<dynamic>)
24-Oct-97:
	- Nathaniel sent me an updated Windows 32 port. It is almost working
	  correctly now.
	- I made faq.html and put a link to this file on my page.
	- I made walkthru.txt which gives a brief walkthru of the main
	  rendering loop. It is useful as a navigation aid to help better
	  understanding of my code.
23-Oct-97:
	- Steve sent me some enhancements to his dynamic lighting stuff.
	  It starts to work very nicely now!
22-Oct-97: V0.07
	- Made Sector::load_room a bit more readable and also added LIGHTX
	  statement so that you can attach a uniform dynamic light to one
	  or more polygons.
-----------------------------------------------------------------------------
21-Oct-97:
	- Put all textures that are not used by the included world file
	  in a seperate archive to save space.
	- Prepare for distribution.
20-Oct-97:
	- Nathaniel sent me an input console extension!!! Now we can
	  start adding command like in Quake. I will add 'quit' and
	  'help' very soon :-)
	- Added new Command class to encapsulate the behaviour of all
	  commands. Commands can be executed from within the console
	  and with the keyboard.
	- Added commands 'quit', 'help', 'capture', 'perftest', 'cachedump',
	  'cacheclr', 'physics', 'lighting', 'texture', 'edges', 'turn',
	  'activate', 'lightmap', 'mipmap', 'console', 'fov', 'gamma',
	  'dmipmap1', 'dmipmap2', 'dmipmap3', 'fclear', 'fps',
	  'coorddump', 'coordsave', and 'coordload'.
	- Added keydefinition for 'fov' ('f' and 'shf-f').
	- Most keys are now defined with a keymap table. This is the
	  first step towards fully defineable keys (like the Quake 'bind'
	  command).
17-Oct-97:
	- Thanks to Tor Anderson I now have a good formula for gamma
	  which works much better.
	- Added new keys 'g' and 'G' to change the gamma value (intensity
	  of the display).
	- Removed obsolete online editing functions that were connected to
	  keys 'e', 'm', 'v', 'x', 'y', or 'z'.
	- Changed definition of key 'e' so that it shows the edges of all
	  polygons (it's a toggle). This is useful for debugging world
	  files where you think something is wrong with the polygons but
	  you don't know what.
	- Added alt-c key to show where we are on the console (sector
	  and location).
	- Excluded color 0 and 255 from usage in the textures. These are
	  now constant black and white entries. We can then use these
	  two colors for messages (for example). The reason we excluded
	  them from the textures is that gamma correction should not
	  affect the color of the messages (and another reason is that
	  you can't change the RGB values of color 0 and 255 on a Windows
	  platform, as far as I know).
	- Added new CONFG config file option and -confg commandline
	  option to set the color that is used for console output.
	  Default is '255,255,255' (white).
16-Oct-97:
	- Added a new kind of dynamic lighting which is less accurate
	  (no shadows and a whole polygon is evenly lit) is slower
	  at render time but it is MUCH faster to change the intensity
	  of a light. This kind of dynamic lighting is very useful
	  for fluorescent lights and similar flickering lights.
	  Made by Steve Israelson.
	  Note! this feature is unfinished.
	- Added -color and -nocolor options (and similar COLOR
	  configuration file option) to disable colored lighting. This
	  does not make the renderer faster but the texture cache
	  will be filled faster. Crystal Space will also use a lot
	  less memory with colored lighting disabled.
	- If -nolight is given, -nocolor is automatic. It makes no
	  sense to disable lighting and still allow colored
	  lighting.
	- Added -dmipmap1, -dmipmap2, and -dmipmap3 options (and
	  corresponding DMIPMAP1, ... config file options) to set the
	  distance at which the three levels of mipmapping start
	  working. Decreasing these values results in less memory usage
	  and a faster texture cache but of course the textures will
	  be blurred. Increasing these values results in the reverse.
	  The textures will be sharper. If you increase these values
	  too much the textures will be too sharp. After all, that's
	  the purpose of mipmapping.
	- Added -gamma commandline option and corresponding GAMMA
	  config file option to set the gamma value of the display
	  (makes the display look lighter/darker). Default value
	  is 1.0.
	- All documents moved to new 'docs' directory.
14-Oct-97:
	- Nathaniel sent me the first 32-bit windows version with source
	  so that I can actually try to compile it.
	- Nathaniel also made a nice console (output only currently) that
	  should work on all systems.
	- Nathaniel added:
	    -line commandline option to set the number of console lines.
	    -fps commandline option to enable the display
	     of the frame rate on the console.
	    FPS config file option to do the same.
	    LINEMAX config file option to set the maximum number of
	    lines for the console.
	    MESSAGE config file option to disable the console (default
	    enabled).
	- I then added:
	    -nofps commandline option to disable the FPS rating.
	- I also added -physics and -nophysics commandline options to
	  enable/disable the new preliminary physics system. Physics
	  is disabled by default.
	  There is also a PHYSICS config file option for the same
	  thing.
	- Create 'faq.txt' answering many frequently asked questions.
	- Changed MESSAGE option so that you can control where the
	  messages go. Value can be 'console', 'stdout', or 'file'
	  (debug.txt is the file that is used for the third option).
9-Oct-97:
	- Steve Israelson sent me the first version of the physics system.
	  It is still very preliminary and does seem to be a little
	  sluggish but it is a start.
6-Oct-97:
	- New Polygon3D::intersect_segment which really works in 3D and
	  should be faster.
3-Oct-97:
	- New 'data' directory containing all data (what else :-)
	- New System::SystemFopen routine to translate '/' to whatever
	  the OS uses.
	- Made a 'make.dep' include file for the makefile that is used
	  by all Unix makefiles.
	- Polygon3D and PolygonSet are a little better with regards to
	  adding polygons and/or vertices. The tables are now increased
	  dynamically with no need to set a predefined maximum anymore.
	  This means that MAX_VERTICES and MAX_POLYGON are no longer
	  needed (and allowed) in world files.
	  This also means that Crystal Space uses less memory since
	  the default maxima where too big.
2-Oct-97:
	- Non-assembler draw_scanline routines are optimized a bit (trying
	  to overlap division with integer loop). This will cause a
	  speed-up on Pentium processors but it may cause a slow-down
	  on other processors (there is one extra division for every
	  scanline and every polygon on that scanline). If the slow-down
	  is there and too large we will have to put conditionals around
	  the optimization.
	- Frame rates are now measured more accuratelly (with milliseconds
	  instead of seconds).
1-Oct-97:
	- Added better support for commandline options. There are now
	  system dependent options (like -mode) and system independent
	  options (like -clear and -help). Width and height can now
	  also be set from the config file.
	- It is now possible to change the resolution at startup
	  time (no need to recompile anymore for that).
	- Added system independent options: -clear and -noclear.
	  With -clear you can force the clear of the display every
	  frame (this is useful for debugging purposes). Default
	  is -noclear (this is faster as well).
	- Added -help to get help for all commandline options.
	- Added system independent options: -light and -nolight.
	  With -nolight the lighting system will not be initialized.
	  This is mainly provided for faster startup while you are
	  still testing a world file and you are not interested in
	  correct lighting.
	- Added -fov option to set the aspect ratio (as a factor
	  used for perspective correction, not as an angle!).
	- Added -cache option to set the texture cache size (default
	  5000000).
25-Sep-97:
	- The first Pentium optimized scan draw routine is here (thanks
	  to Arnold for this. He even hasn't got a Pentium to test
	  his routines on. So his work is completely theoretical)!
	  It is still not completely optimal (probably mostly due to the
	  rounding error in u/v space which I still need to remove).
	  On my computer I go from 6-8FPS to 8-11FPS (640x480 on a
	  90MHz pentium).
23-Sep-97:
	- Received a correctly working version of the Amiga port.
22-Sep-97: V0.06
	- Implemented dynamic lighting!!! Every light can be made dynamic.
	  Dynamic lights still can't change their position but their
	  intensity/color can change. Shadows are preserved in this process.
	  Note that large dynamic lights have large memory overhead because
	  every polygon that is hit by the light will have extra lightmaps.
	  There is also a large performance penalty when the light intensity
	  changes (only then).
	  This kind of dynamic lighting is ideal for turning on/off lights
	  in some room (for example).
	  There are still some things that need to be done.
	- Enhanced the script language so that it can change the intensity
	  or color of a dynamic light. This is still primitive though: it
	  works by putting a light in a collection (so lights are CsObjects
	  now). The 'dim' command will accept three intensities for the
	  three light tables and change the light. Currently it can only
	  access the first light of a collection. This will have to be
	  changed soon.
-----------------------------------------------------------------------------
19-Sep-97:
	- The ALLEGRO port also works again (with the same
	  makefile.djg). Two advantages of the ALLEGRO port are
	  that you can run Crystal Space in 800x600 and that the
	  messages appear on screen.
18-Sep-97:
	- I managed to get the SVGALIB version working starting from
	  the code I gave to Nathaniel and which he adapted to his
	  new system structure.
	- The DJGPP code is fully functional again. Unfortunately
	  the ALLEGRO port from Murat is gone. I will try to add it
	  again soon.
	- The Macintosh port is now functional thanks to Steve.
17-Sep-97:
	- Started to incorporate Macintosh port made by Steve Israelson
	  <pfhorte@rogers.wave.ca>.
	- Started to incorporate Amiga port made by Jyrki O Saarinen
	  <jxsaarin@cc.helsinki.fi>.
15-Sep-97:
	- Enhanced script language (support for the old language has been
	  removed). The language is still primitive but it now has a much
	  better base to start with. Currently the following commands are
	  supported:
	     - loop <num> { <code> }
	       to execute <code> <num> times.
	     - forever { <code> }
	       to execute <code> forever.
	     - move <vector>
	       to perform a relative move of the object this script is
	       attached too.
	     - transform <matrix>
	       to perform a transformation.
	     - wait
	       to return control to the engine.
	     - quit
	       to quit the script.
	     - return
	       to return from a code sequence.
	- Added support for COLLECTION objects needed for the script
	  language. A COLLECTION object is just a collection of other
	  objects. Scripts can operate on a collection at once.
14-Sep-97:
	- Steve Israelson <pfhorte@rogers.wave.ca> suggested a few
	  enhancements to the inner draw_scanline functions to benifit
	  processors with many registers (like the PowerPC and 680x0 and
	  unlike the Pentium). He also removed the need for the loop
	  counter ('i') in the inner loop.
10-Sep-97: V0.05
	- David N. Arnold <derek_arnold@fuse.net> has enhanced the DOS
	  port made by Murat. He added C++ classes and VESA support.
	- Nathaniel Saint Martin <nsaintmartin@mfoptima.fr> enhanced Arnold's
	  DOS port again so that Watcom C++ is supported.
	- FIRST_LEN/SECOND_LEN in world file for texture orientation is
	  now by default set to 1.
	- 'THING' objects are now also supported from within a 'ROOM'
	  (and not only from within a 'SECTOR').
	- Changed the way that 'MOVE' is handled from within a 'THING'.
	  Now it works like it works in 'SIXFACE': the '=' between
	  'MOVE' and '(' is no longer required and the sign of the
	  vector has been changed.
	- The keyword 'VECTOR' is no longer required nor allowed to
	  indicate vectors. Vectors are recognized by the fact that they
	  start with a '('.
	- 'TEXNR' can now also be set from with a 'THING' or 'SECTOR'.
	  In this case it indicates the default texture to use for all the
	  polygons in the thing or sector (each polygon can still override
	  this default by setting 'TEXNR' itself).
	- New 'LEN' keyword that can be set from within a 'TEXTURE'
	  statement. If this keyword is given no other keywords are needed.
	  The engine will automatically take the two first vertices of the
	  polygon. Make an orthogonal base using those vertices and the
	  plane of the polygon. The base is then normalized using the given
	  length. This option is now also default (with LEN set to 1) if
	  no TEXTURE statement is given for a POLYGON.
	- New 'TEXLEN' keyword to set the default 'LEN', 'FIRST_LEN', and
	  'SECOND_LEN' for all following polygons (except the ones that
	  override this) from within a 'THING' or 'SECTOR'.
	- MATRIX specifications can now also be given as a number. This is
	  interpreted as the identity matrix multiplied with that number.
	  So MATRIX .5 is equivalent to MATRIX (.5,0,0, 0,.5,0, 0,0,.5).
-----------------------------------------------------------------------------
9-Sep-97: V0.04
	- Texture mapper is MUCH more accurate. When moving in the world
  	  with the previous version of Crystal Space you could see all the
  	  textures wobbling a bit in various directions. This would not
  	  really contribute to the feeling of a solid world :-)
  	  This effect was especially visible in low resolution fullscreen
  	  modes (like DOS).
  	  This is now fixed completely. The textures are now rock-solid!
  	  All this is done by REMOVING a bit of accuracy in the texture
  	  mapper :-)
	- The mipmapper is MUCH more accurate for shadow computing. Shadows
  	  are correct even for polygons at great distance. In the previous
  	  version of Crystal Space you could have ugly 'shadow-jumping'.
  	  For example, while moving towards some wall with shadows, the
  	  shadows would suddenly become different when a different mipmap
  	  level was selected.
  	  This is now completely eliminated with the disadvantage that the
  	  texture cacher now needs somewhat more time to cache-in far
  	  away polygons.
  	  With the Alt-t key you can toggle between:
  		  - The new accurate mode (default).
		  - An intermediate mode in which the shadows for polygons
	  	    far away are reasonably accurate. This is a bit faster
	  	    than accurate mode and seems good enough.
		  - Inaccurate mode (ugly mode).
  	  To see the difference you need to clear the texture cache after
  	  changing the mode. Use 'r' to clear the cache.
	- For X Windows only: the shared memory extension can now be turned
  	  on/off with the config file. In 'cryst.cfg' you can set XSHM=yes
  	  to turn on the shared memory extension.
  	  Note that the shared memory extension gives a significant speed
  	  increase but it does not work on all X servers.
	- New 'MIPMAP' and 'LIGHTING' flags in polygon and 'TEXTURE_MIPMAP'
  	  and 'TEXTURE_LIGHTING' flags for room so that you can disable
  	  lighting and/or mipmapping for a specific polygon. This can be
  	  useful for:
  		  - sky textures.
		  - textures meant to be used for light surfaces. These should
	  	    be fully lit.
	- Added a street scene to the demo world file.
5-Sep-97: V0.03
	- Metin Demircioglu <demircio@boun.edu.tr> has his first DOS port
	  with DJGPP ready. I incorporated it to the official Crystal Space
	  distribution.
	- 'Polygon' class renamed to 'Polygon3D' to make porting to Windows
	  easier.
	- Many filenames changed to only 8+3 characters (for DOS).
-----------------------------------------------------------------------------
27-Aug-97: V0.02
	- Pierre Barthe mentioned a lot of lone variables and other warnings.
	  I enabled -Wall for gcc and removed all of them. I have no warnings
	  anymore. Some of these warnings were bugs. These bugs have now
	  been fixed automagically :-)
	- Bug fixed with 'warp_space' test (Pierre Barthe).
-----------------------------------------------------------------------------
26-Aug-97: V0.01
	- First public release.
-----------------------------------------------------------------------------

