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

Short-term cleanups that need to be done:
	- Resolve config/console/commandline mess.
	  Several things are broken currently: gamma, dmipmap1, ...
	- Add to API: absolute versions of Rotate and RotateWorld for csCamera.
	- Resolve confusion with SetTexture() and SetTextureHandle(). We
	  need to be consequent.
	- Consider flattening many of the routines that are now structured to
	  go through all the recursive object layers (csWorld, csSector,
	  csThing, ...)
	- Check the dependencies of libraries/COM objects and try to find
	  includes that don't belong there (like from csengine).

10-Sep-1999
	- *** Release of 0.14_002 ***
30-Aug-1999
	- Eric Sunshine fixed a compilation problem in the BeOS port and also
	  removed more unused code.
	- Eric Sunshine updated INSTALL.BeOS so that it provides instructions
	  for building the JPEG library.  He also updated various other
	  aspects of this document.
26-Aug-1999
	- Eric Sunshine renamed docs/changes.old to changes.txt since Jorrit
	  recently brought it up to date.  Previously it was extremely out of
	  date, which accounted for the .old extension.
	- Andrew Zabolotny applied Seth's "sleep 2" patch to the DOS build
	  scripts.
	- David Fox sent a patch to fix a precedence problem in the UDP macro
	  in common.mak.
	- Siu-Hang Or sent a patch to fix another crasher in MazeD which
	  occurred when adding 3D volumes to an already-existing world.
25-Aug-1999
	- *** Release of 0.14_001 ***
24-Aug-1999
	- Jorrit fixed deletion of curve information in thing templates. It
	  used the wrong type of 'delete []'.
	- Eric Sunshine fixed CSWS and MazeD so that the desktop is correctly
	  repainted in all cases after information has been printed to the
	  console.  This fixes problems where some sub-systems printed
	  informational or debugging output without refreshing the desktop
	  afterward, thus leaving the desktop in an unusable state.
	- Eric Sunshine fixed numerous crashes in MazeD which occurred when
	  creating new shapes and volumes.  A number of places were trying to
	  set the UV coordinates on a csGouraudShaded prior to preparation of
	  the object via Setup().  Other places were adding vertices to a
	  polygon without a container.
23-Aug-1999
	- Minimize splitter in BSP tree creator uses random selection
	  instead of initial polygons. This improves BSP tree creation
	  a LOT!
	- Added vertical line optimization to c-buffer handling. This
	  is a single c-buffer line which holds information about the
	  full-line status of every horizontal line. If that c-buffer
	  line is full then this means that the hole screen is full.
	  Also we can avoid having to scan-convert a polygon if the top
	  and bottom vertices fall inside a span of that vertical
	  c-buffer line. This gives a considerable speed improvement.
	- Stop BSP processing if the c-buffer screen is full.
	- Eric Sunshine performed a major overhaul and re-engineering of the
	  BeOS port of Crystal Space.  The port is now about 95% usable
	  versus 25% prior to this effort.  In addition, numerous bugs were
	  eradicated and the source code has been cleaned up considerably
	  (though it still needs more work).  His changes include:
	    - MazeD is now fully functional.  Previously the user could not
	      even interact with it at any level.
	    - WalkTest is now fully functional.  Previously about 65% of the
	      key bindings were inaccessible.
	    - Completely re-engineered the mouse handling code so that all
	      aspects of the mouse mechanism are now correctly implemented.
	      Previously only mouse-down was implemented properly, which was
	      not very useful.
	    - Completely re-engineered the keyboard handling code so that all
	      aspects of the keyboard mechanism are now correctly implemented.
	      The modifier keys (shift, alternate, control) are now fully
	      implemented.  Previously they were not implemented at all.
	      Fixed a problem with the handling of control-keys.  The old
	      code was not translating them into a form suitable for CS.
	    - Re-engineered SysSystemDriver::Loop() so that it correctly
	      handles the case where it is called recursively.  This case
	      arises when CSWS launches a modal panel.  In the old code, the
	      recursive case was 100% broken.
	    - Fixed the 2D driver so that it completely implements the
	      double-buffering protocol rather than only partially
	      implementing it.  This fixes severe display anomalies in MazeD
	      and CSWS.
	    - Implemented csGraphics2D::SetMouseCursor() so that the mouse
	      pointer is displayed properly in MazeD and CSWS.
	    - The Be application now terminates when Crystal Space requests
	      a shutdown (for instance, when "q" is pressed in WalkTest).
	      Previously it would go into a semi-comatose state where it
	      would only shut down when the user explicitly closed the
	      window.
	    - The rendering window is now closed when the application
	      terminates.  Previously it would hang out for a few seconds
	      after termination since the connection to the display server
	      was not being correctly severed.
	    - Crystal Space is now given a chance to shut down cleanly when
	      the user closes the window or terminates the application via
	      BeOS events (such as cmd-q or cmd-w or closing the window via
	      the mouse).  Previously these type of events forcibly
	      terminated the application without giving Crystal Space a
	      chance to clean up after itself.
	    - The application no longer crashes at termination time when
	      using the OpenGL driver.
	    - Removed a significant amount of unused and dysfunctional code
	      which was copied over from the X-windows port when Xavier
	      first created the BeOS port.
	    - The display window is now centered on the desktop at launch
	      time rather than appearing in the upper-left corner.
	    - Updated the BeOS port documentation to reflect these changes.
	- Eric Sunshine fixed a bug in the common OpenGL makefile where the
	  "clean" target was trying to delete the X-windows OpenGL driver
	  even on non-X platforms.
	- Eric Sunshine removed some obnoxious debugging output from MazeD.
	- Few changes from Thomas Hieber to csgame library.
	- Tiny update to XSystem::GetSubSystemPtr() from Michael Dale Long.
22-Aug-1999
	- Fixed potentially very harmful bug in csPoly3D::MakeRoom().
21-Aug-1999
	- Change from Robert Bate to Mac port: make sure the console is
	  full cleared when starting up and make sure the clipping rect
	  is setup so the console will draw draw the text.
20-Aug-1999
	- Fixed problem in cscom.cpp with 'int i' declaration inside
	  for loop.
	- Some changes from Ivan Avramovic. Minor changes to csMatrix3.
	  The Get?Rotation routines are now implemented as subclasses
	  and the Eigen functions have been moved into the CD lib.
	- Eric Sunshine fixed a new compilation warning about an uninitialized
	  variable in WalkTest.
	- Few fixes from Robert Bate. Also updates to project files.
	- Michael Dale Long updated VC project files for new files.
	  Thomas Hieber fixed CR/LF problem in the updated project files.
19-Aug-1999
	- Added 'statistics' to engine for c-buffer rejection/acception.
	  WalkTest also shows this with the 'stats' command.
	- Added new criteria to BSP tree building to concentrate on more
	  balanced trees (while still keeping splitting in mind).
18-Aug-1999
	- Fixed bug in BSP tree building. If a split happened on the very
	  first level then it is possible that a crash would happen because
	  the first array of polygons would be reallocated. This is fixed
	  by doing a copy first. It is less efficient but at least it
	  doesn't crash.
	- Fixed bug in SplitWithPlane() which is used by BSP splitting
	  code.
	- Two bugfixes to flat shaded texture mapping in DrawPolygonFX
	  from Andrew Zabolotny.
	- Fixed flat color selection in DrawFilled(). If the texture
	  is texture mapped it will take the flat color from the
	  texture instead of the polygon.
	- Fixed init of flat color in csPolygon3D.
17-Aug-1999
	- Small optimization. If a sprite is already marked visible we will
	  not do further processing on the bounding box polygons in the BSP
	  tree.
	- Fixed the c-buffer so that it does not crash when given polygons
	  which fall outside the y range.
	- There is still one problem with the visibility testing for sprites
	  using the c-buffer. If the sprite is too close it may disappear
	  (the c-buffer thinks it is not visible). I will fix that soon.
	- Added '-huge' commandline option to WalkTest. This will create
	  a really huge room full of random polygons. It is used to test
	  the c-buffer system.
	- Added new mode to BSP tree building which is a lot faster. It just
	  takes a maximum of 20 polygons to test for splitting.
	- Some small changes from Andrew Zabolotny. Also added autodetection
	  of installed OpenGL libraries for OS/2.
	- Andrew also fixed a bug in QInt() (for Intel processors only)
	  which caused QInt (1.0) to return 0. This bug could cause the
	  precalculated lighting stuff to fail completely (infinite
	  recursion).
	- Robert Bate updated Macintosh project files.
	- Michael Dale Long updated Windows/VC project files.
	- Thomas Hieber fixed the project file modified by Michael Dale Long.
16-Aug-1999
	- Added csSprite3D::AddBoundingBox().
	- Added a csPoly3D class to csgeom similar to csPoly2D.
	- Added a csPolyIndexed class to csgeom.
	- Added csVector3Array to csgeom. Rewrote csVertexArray to
	  inherit from csVector3Array.
	- Changed csPolygon3D to use the new csPolyIndexed class.
	- Basicly csgeom now knows about the following four polygon classes:
	    - csPolygonInt: which is the general base class for every
	      polygon which should go in a BSP tree. It is a virtual
	      class and cannot be used as such.
	    - csPoly2D: a basic 2D polygon from which you can subclass
	      or which you can use standalone. There is also support
	      for a bounding box in 2D and clipping.
	    - csPoly3D: the same but in 3D. No bounding box and no
	      clipping though.
	    - csPolyIndexed: a polygon which doesn't hold the actual
	      values of the vertices but instead holds indices into
	      some array (which isn't maintained by this class).
	      csPolygon3D and csBspPolygon now use this class.
	- csengine knows about the following three polygon classes:
	    - csPolygon3D: the main polygon class. It uses csPolyIndexed
	      (but not subclassed). It subclasses csPolygonInt so that it
	      can be put in a BSP tree.
	    - csPolygon2D: our main 2D polygon class. It extends csPoly2D
	      by adding functions for drawing a 2D polygon on screen and
	      some others.
	    - csBspPolygon: A polygon specifically created for bounding
	      boxes for sprites and other dynamic actors. It uses
	      csPolyIndexed (but not subclassed). It subclasses csPolygonInt
	      so that it can be put in a BSP tree (in fact, that is its
	      purpose).
	- Basic c-buffer testing on sprites seems to work now. I
	  need to test it further though. I also need to test the
	  performance of this new system. What gain do we really get.
	- Andrew Zabolotny added 32bpp mode support for OS/2. He also
	  fixed RGB lighting in 32bpp modes. Blue and red channels were
	  swapped both for low-endian and big-endian machines.
15-Aug-1999
	- Started work on new bounding box object. This object is
	  specifically designed to be inserted in a BSP tree dynamically.
	  The classes are csBspPolygon and csBspContainer.
14-Aug-1999
	- Added a new BSP mode (BSP_RANDOM) which allows for faster
	  BSP tree creation (but with less quality).
	- Added the calculation of bounding boxes for sprites. Every
	  frame has its own bounding box in object space. For a skeleton
	  sprite, every limb has its bounding box in object space.
	- Thomas Hieber did some cleanup in the API for csWorld and
	  csTexture.
	- Thomas also fixed a workaround for a bug in the Jpeg loader
	  which caused memory to be overwritten.
13-Aug-1999
	- Added an extra parameter to the BSP tree builder so that you
	  can select a criteria on which to choose the BSP splitter.
	  This used to be a #define.
	- Provided the ability to add dynamic polygons to a BSP tree.
	  This is untested currently but the plan is to use this ability
	  to add dynamic (i.e. moving) things and sprites to the BSP tree.
	- Andrew Zabolotny fixed several DJGPP related issues with regards
	  to the dependency generator that he wrote. He also fixed and
	  improved the AA driver (ascii art). It now works on DOS but
	  requires a version of AA lib that only Andrew has (we will soon
	  add that to the CS site).
	- Some other small changes from Andrew.
	- Thomas Hieber added the ability to embed the CS output window
	  into another application.
	- Thomas fixed windows port to have a more consistant timer.
12-Aug-1999
	- Implemented an object pool for csLightPatch. This improves speed
	  of dynamic lighting noticably.
	- Fixed memory leak in CS (introduced recently). This also
	  gives the performance improvement which we were expecting from
	  creating the csTransformationManager but which we didn't
	  really get.
	- Avoided other large allocations at runtime by not allocating
	  a lightmap copy everytime we have to check if dynamic lights
	  altered a lightmap.
	- Fixed an error in sprite lighting which causes unneeded
	  reallocation and deletion of the sprite vertex color arrays.
	  This is another performance enhancement.
	- Added Dumper functions for the new pools.
	- Crystal Space no longer crashes when you exit while a dynamic
	  light is active.
	- Fixed Squawk so that Open is called earlier. This caused a
	  crash otherwise.
	- Edge drawing works now too when c-buffer is enabled.
	- Fixed Blocks so that dynamic gouraud shading works again.
	- Andrew Zabolotny added an Ascii Art library driver! :-) More for
	  fun than something useable...  Fixed/improved some things in
	  engine a bit that he discovered while debugging that driver. For
	  example, console font size choosing should always work okay. Before
	  my changes it can happen that 2D driver sets one width/height but
	  system driver knows about completely different width/height.
	- Thomas Hieber contributed some fixes and update to VC project files.
	- Changes to Macintosh project files from Robert Bate.
	- Eric Sunshine fixed a compilation error in blocks.cpp caused by
	  incorrect resolution of conflicts between the previous two revisions.
11-Aug-1999
	- Only transform a polygon to camera space AFTER clipping instead
	  of before. This improves performance slightly and also fixes
	  a bug with the c-buffer and space warping portals (at least, the
	  bug is almost fixed).
	- Completely fixed the c-buffer problems with space warping
	  portals (i.e. mirrors).
	- Fixed bug with crash at exit when using a bsp tree and a uniform
	  dynamic light.
	- Create a new general csPoly2D class in the csgeom library.
	  The old csPolygon2D class inherits from csPoly2D to add engine
	  specific functions (like perspective correction, drawing, fog, ...)
	  The reason is that we want to use the csPoly2D class in some other
	  parts of csgeom and csgeom cannot depend on csPolygon2D since
	  that lives in the engine.
	- Also moved the csPolygon2DPool from csengine to csgeom and
	  renamed it to csPoly2DPool. It accepts a csPoly2DFactory subclass
	  which is a factory responsible for creating subclass of
	  csPoly2D.
	- csClipper now uses a polygon pool instead of creating new
	  polygons every time we go through a portal.
	- Changes from Robert Bate to update history and installation
	  instructions for the Macintosh.
	- Robert Bate updated the Macintosh project files.
	- Andrew Zabolotny did some changes to Makefile. System configuration
	  scripts can now autodetect additional drivers to build. For example,
	  config script can detect whenever OpenGL headers/libs are installed
	  and set DRIVERS.SYSTEM=c23d/glrender cs2d/glos2.
	- Eric Sunshine worked around a NextStep compiler bug triggered by
	  Jorrit's changes to the polygon code.  Specifically, the static
	  csPolygon2DFactory instance in pol2d.cpp triggered a bug in the
	  compiler which caused it to consume memory endlessly until all swap
	  space was exhausted.
10-Aug-1999
	- Eric Sunshine fixed a bug in MetaDemo.  It was not parsing its
	  command line arguments correctly.  Instead of explicitly looking for
	  a texture name argument, it implicitly assumed that the first
	  argument was always the texture name, even in cases where it was
	  some other perfectly valid string such as -driver or -simdepth.
	- Eric Sunshine eliminated the obnoxious spinning text cursor which
	  was continuously printed to "stdout" by Blocks during game play.
	- Eric Sunshine fixed WalkTest's broken "-infinite" option.  It caused
	  the application to crash during initialization.
	- Eric Sunshine patched 'makedep' (which Andrew added) so that it
	  compiles on NextStep.
	- Eric Sunshine updated many out-of-date documents in the 'docs'
	  directory.  He also renamed a number of documents in order to
	  achieve a more sensible organization and better naming consistency.
	- Split polygon.cpp into polygon.cpp and pol2d.cpp.
	- Fixed memory debugger again. It had unneeded depencies on the
	  system stuff.
	- Fixed an old bug in the lighting calculator. Apparantly allocating
	  an array of zero size can give problems. We need to check if this
	  happens elsewhere.
	- Jorrit checked and there were some other places where this happened:
	  allocation of sprite frames and reading of archive stuff.
	- With the change to the csPolygon3D class and the fixes to the above
	  mentioned bugs, BSP trees work almost perfectly for gouraud shaded
	  polygons. There are still a few problems. Working on them... :-)
	- Remove libs/csengine/bsppol.cpp again because it is not needed
	  anymore.
	- Bugfix: forgot to set a new transformation frame for lighting
	  calculations and csWorld::DrawFunc().
	- Everything seems to work well. Here is the list of currently known
	  bugs (in the c-buffer/bsp system):
	    - A crash at exit when deallocating a csPolygon3D.
	    - Edge display does not work correctly when c-buffer is enabled.
	    - Space warping portals still have problems with c-buffer.
	    - There are still cases that drawing with the BSP tree gives
	      incorrect results.  Very rare though.
	    - The falling blocks in Blocks are not correctly lighted anymore.
	- Changes from Andrew Zabolotny. Fix for DJGPP so that volatile.h is
	  correctly generated. Various other makefile changes.
	- Andrew Zabolotny fixed bug with 32-bit lighted textures in BGRA
	  modes. He also improved the speed of the 32-bit texture cache.
	  He also created new texture caching code for 24-bit textures
	  in 16-bit and 32-bit modes. Faster and allows for correct 2*SRC*DST
	  handling (lights twice as bright).
	- Eric Sunshine moved the MacOS/X Server MAKE_VOLATILE_H bug fix out
	  of Makefile and into macosxs.mak, thus localizing the bug fix and
	  simplifying the configuration phase for other platforms.
	- Eric Sunshine updated INSTALL.NeXT and INSTALL.NeXT-Binary to
	  reflect the fact that Crystal Space no longer automatically performs
	  a "-recalc" when AMBIENT_WHITE changes.
9-Aug-1999
	- Changed merged things (static_thing) so that the original things
	  are removed instead of kept in memory for no useful purpose.
	- Renamed some functions which contained the term 'Lightmap' to the
	  same name but with 'LightMap' instead.
	- Very fundamental change in the csPolygon3D class. This is a change
	  which has a large effect on the API of csPolygon3D. The
	  lighting/texture information has been seperated from csPolygon3D and
	  put in another class (csPolygonTextureType).
	  There are two subclasses of csPolygonTextureType:
	  csLightMapped or csGouraudShaded. The first
	  case is default and represents the usual lightmapped polygon. The
	  second case is a gouraud shaded polygon. This changes makes
	  csPolygon3D a lot cleaner and smaller. In principle this change will
	  also make it easier to add future types. The cleanup is currently
	  mostly in data seperation and API. Most of the lightmap handling
	  code is still in csPolygon3D. This needs to move in the future.
	- Andrew Zabolotny added the 'makedep' application which is a faster
	  dependency generator. It is based on the 'makedepend' from X11
	  distribution. This dependency generator does not need 'gcc' to run
	  but even with 'gcc' it is better because it is faster. You can enable
	  the new 'makedep' in mk/user.mak.
	- Andrew also added changes received from Walt Armour <walt@armour.cx>)
	  which removes warnings for gcc 2.95.
	- Andrew also started a GCC/Win32 port (still incomplete).
	- Thomas Hieber added a pragma to remove a warning for MSVC 5.0 and
	  updated the VC project files.
	- New Macintosh project files from Robert Bate.
8-Aug-1999
	- Continued work on new csTransformationManager class. It is now fully
	  functional and the old NewTransformation()/RestoreTransformation()
	  functions have been removed.
	- Eric Sunshine fixed the 'clean' target in the Makefile so that it
	  also deletes the generated $(OUTDLL) directory.
	- Eric Sunshine fixed problem in Squawk.  It was not properly clearing
	  the console text in double-buffered environments.
	- Eric Sunshine started cleaning up the BeOS port of Crystal Space.
	    - It now builds straight out of the box.  There is no longer any
	      need to relocate or edit makefiles.
	    - It now builds cleanly.  All compilation warnings and errors
	      have been eradicated.
	    - Disabled the excessive debugging output.
	    - Updated the documentation.
	    - Mazed, Shooter, Squawk, CSWSTest, NDrvDemo now compile and run.
	    - The socket library and simple network manager now compile.
	    - The version string now says "BeOS-Intel-GCC" rather than
	      "Unix-Intel-GCC".
	    - The user no longer needs to manually configure for buggy EGCS.
	- Following the decision to use 'CS' universally as Crystal Space's
	  root directory (rather than 'cryst'), Eric Sunshine updated the
	  remaining documentation to correctly reflect this choice.
7-Aug-1999
	- Continued work on better bsp support. Added the
	  csPolygonBspContainer class. Also moved new bsp stuff to
	  libs/csengine/bsppol.cpp.
	- Started work on new csTransformationManager class which will give us
	  a better way to manage world to camera transformations.
6-Aug-1999
	- Wrote an object pool design pattern class for 2D polygons. They
	  are used instead of the global 'clipped' variable which caused
	  nothing but trouble. This is cleaner, more efficient (even for
	  memory) and MUCH easier to program with. The underlying problem
	  is that I'd like to use several 2D polygons at the same time but
	  I don't want to allocate/deallocate them every time they
	  are used. The object pool can do that. There are other places in
	  CS where this object pool could be useful. That's for the future.
	- Added new 'cbuffer' command to WalkTest that you can use to experiment
	  with the new c-buffer mode. It is disabled by default. Jorrit also
	  added a key binding for 'cbuffer toggle' on key 'd'.
	- The c-buffer system works fairly well right now. The current
	  implementation is written specifically with hardware acceleration in
	  mind. It works best for hardware accelerated renderers. But even so
	  the software renderer can achieve a lot of benefit as well. But for
	  the software renderer we can get even more gain by including the
	  c-buffer in the actual rendering instead of only occlusion culling.
	  Also for the future.
	  Note that there are still a few bugs in the current c-buffer handling
	  (for example in the handling of space warping portals).
	- The new c-buffer system only gives benefits in sectors where you
	  have a static bsp (STATBSP() option in sector) and a number of
	  non-moving things which are then merged in that static bsp. Only
	  in this case do you gain anything.
	- Provided a temporary fix so that collisoin detection works if a static
	  thing is used (BSP for non-moving things in a sector). I'm not sure
	  why it didn't work before. This needs more investigation.
	- Because of the need to use STATBSP() more (an option which is not used
	  in any of the current levels) Jorrit noticed a few shortcomings of
	  the STATBSP implementation. The most important one being that gouraud
	  shaded polygons are not handled well. After a little thinking Jorrit
	  decided that it is best to rewrite BSP handling a bit. The current
	  way is too clumsy. Ok, let's start...
	- Added a new class csPolygonBsp. This is a proxy polygon class
	  which will be used in the new BSP trees. A csPolygonBsp is basicly
	  just a collection of vertices and a pointer back to the original
	  polygon. The BSP tree builder will operator on csPolygonBsp
	  instances and split them. The original csPolygon3D objects are
	  unmodified.
	- Eric Sunshine added a "simulated depth" option (-simdepth and
	  VideoDriver/SIMULATE_DEPTH) to the MacOS/X Server, OpenStep, and
	  NextStep ports.
	- Eric Sunshine fixed bugs in a few platform-specific csSystemDriver
	  subclasses where config->GetYesNo() was used instead of
	  config->GetInt() to determine simulated depth.
	- Eric Sunshine fixed a recently-introduced bug in csGraphics2D::
	  complete_pixel_format().  It would go into an infinite loop when
	  called unnecessarily by some 2D graphics drivers at 8-bit depth with
	  the red, green, and blue masks set to zero.
	- Compilation fixes for GCC 2.95 from Michael Dale Long.
	- Andrew Zabolotny fixed the software renderer again.
	- Eric Sunshine fixed a problem where a recent change to netsdrv.cpp
	  caused compilation to fail on OpenStep and NextStep, on account of
	  the unknown "socklen_t" type.
5-Aug-1999
	- Eric Sunshine fixed a compilation warning in djvidsys.cpp where
	  XModeCount was declared without a type.  It is now declared as int.
	- Michael Dale Long did some fixes on ISystem::GetSubSystemPtr().
	- Small change to 2D OpenGL X driver to show 'XSHM' if it is used.
	- Improved the c-buffer implementation to use one global unused
	  list instead of an unused list for every scanline.
	- Continued work on the c-buffer stuff. Note that it is still not
	  enabled and the current queue stuff that I added is already obsolete
	  before being used even once :-)  I'm going to implement it in a much
	  better and more general (and less error prone) method using the object
	  pool design pattern.
	- The CACHE option for the software renderer was mistakenly
	  put in the Hardware config section. Moved to the TextureManager
	  section where it belongs.
	- Eric Sunshine generalized the MacOS/X Server, OpenStep, and NextStep
	  makefiles slightly.
	- Thomas Hieber made D3D port compilable again and fixed the
	  project files for Win/VC.
	- New project files for Macintosh from Robert Bate.
4-Aug-1999
	- Implemented dynamic lighting for gouraud shaded polygons (NOT sprites
	  and curves, that's another matter).
	- Eric Sunshine committed Seth Galbraith's latest version of Squawk
	  to the CVS repository.  He also made the following modifications:
	    - Fixed a problem with the handling of the texture manager.  The
	      palette was being allocated prior to world->Prepare(), whereas
	      it should have been allocated after.
	    - The console now latches palette colors before and after the
	      world has been prepared, thus allowing it to be used at any
	      time, rather than only prior to world preparation.
	    - The background is now erased prior to activation of the 3D views
	      in order to clear away console text which incorrectly appeared
	      in gaps between views.
	- Eric Sunshine fixed oodles of new compilation warnings and a few
	  compilation errors in MazeD.  Also fixed a link error caused by a
	  second definition of csTextureMM::fIgnoreLoadingErrors which
	  incorrectly materialized in me_world.cpp for an unknown reason.
	- Robert Bate fixed compile errors for CodeWarrior (Macintosh).
	- Changed glOrtho again. This fixes the problem of the walls
	  disappearing when you come to close. Unfortunatelly this means
	  that Z buffer is now not accurate anymore :-( We need to find
	  a better solution for this.
	- Jorrit forgot to change the second CalculateFogPolygon() routine
	  so that it also uses Z for distance calculation and not sqrt.
	- Jorrit found an extra pass for the OpenGL renderer which
	  improves quality for SRC*DST mode on the RIVA 128. It almost
	  looks like 2*SRC*DST.
	- Andrew Zabolotny did a cleanup in all 3D drivers:
	    - Made a seperate config file for software renderer
	      (softrndr.cfg) and moved every related configuration
	      parameter from cryst.cfg (etc) to it.
	    - Removed all methods from IGraphics3D interface that are
	      useful only for software renderer, removed them as well
	      from all other renderers.
	    - Fox for 32-bit modes different from RGBA (unlighted textures).
	      Not tested though.
	- Thomas Hieber made MazeD, software renderer, and some other
	  stuff compilable again on MSVC. He also fixed the VC project
	  files.
	- Robert Bate fixed software renderer with regards to DO_MMX.
3-Aug-1999
	- Added 'FILE' keyword in SPRITE template loader so that you can load
	  3DS and MD2 files from within a world file (and every other format
	  that may be supported by the import modules). So now you can do
	  SPRITE 'mySpriteTmpl' (TEXNR ('test.gif') FILE ('test.3ds'))
	- Fixed bug in reading of 3DS texture coordinates. They had to be
	  reversed. i.e. u in a 3DS files corresponds to 1-u in a CS sprite.
	- Fixed another bug in reading of 3DS texture coordinates for
	  different chunks of vertices.  Only the first series of vertices was
	  correctly textured.
	- Changed the Cross Builder Factory (for importing models from other
	  formats) so that there is now also a version which accepts a
	  previously created object.
	- Create a new Cross Builder Factory for thing templates so you can
	  now convert 3DS and MD2 models to things as well (gouraud shaded).
	- Implemented UV coordinates for things templates.
	- Added 'FILE' keyword in THING template loader as well.
	- Michael Dale Long added Initialize() code to GGI 2D driver
	  so that the GGI port works again.
	- Added update to MazeD from Or Siu-Hang with the following changes:
	    - All things in the world all displayed. Previously only one
	      thing was displayed.
	    - The save path was incorrect. The map was saved into
	      cryst directory no matter the path that the user
	      selected.
	    - Some hand-edited map features (like 'start' and
	      'thing') were lost when MazeD loaded and then saved
	      the level. This is now fixed. There are still a
	      few features not supported though.
	    - Portal Expression Generation: select it in edit/select
	      menu, drag accross the portal position and MazeD
	      will gnerate a portal expression for the two sectors involved.
	    - Polygon Mirror Expression. You can now change the
	      attributes of a selected polygon by changing the
	      texture, name, and even the mirror effect of a
	      particular polygon (edit/select/polygon).
	- Fixed long standing bug with csPolyPlane::ObjectToWorld(). This
	  function did not bother to normalize the resulting world plane.
	  Most of the time this does not give problem except when scaling
	  things or polygons. Then this could affect lighting and other
	  parts of the engine. Unfortunatelly this extra normalization
	  is not efficient.
	- Eric Sunshine fixed a problem in 3ds.cpp where the compiler
	  correctly warned that "num_cor3_prev" might have been used
	  uninitialized.
2-Aug-1999
	- Added 'maxpol' debugging functionality to OpenGL renderer (just
	  like software renderer).
	- Experimenting with OpenGL renderer. Fixed a bug already (lightmap
	  scaling).
	- Implemented a c-buffer class (csCBuffer). Project file maintainers
	  need to add libs/csengine/cbuffer.cpp and include/csengine/cbuffer.h.
	- Andrew Zabolotny fixed a bug in the makefile system which caused
	  some changes in user.mak not to be reflected in volatile.h.
	- Andrew did many small changes required to build Win32 version from
	  command line using GNU Make and VC++. He removed DllMain() from
	  several 3D and 2D drivers and moved it to a seperate file
	  libs/cssys/win32/dllentry.cpp. Moved ModuleHandle to csCOM library.
	  Fixed complete_pixel_format() to work around a bug in VC 5.
1-Aug-1999
	- I managed to get hardware accelerated OpenGL in Linux (for my
	  RIVA 128)!
	- Changed glOrtho() settings in OpenGL renderer so that it works better
	  on my RIVA 128 card (problems with Z buffering otherwise).
	- For OpenGL/DrawPolygon() the Z buffer test is disabled when blending
	  a lightmap if Zbuf mode is equal to fill. This gives a noticable
	  performance increase (about 5%).
	- Use Z instead of sqrt for vertex fog distance calculation. This is
	  not as accurate but a lot faster.
31-Jul-1999
	- Michael Dale Long made a small fix in unixconf.sh for IRIX.
	- Michael also fixed a divide by zero bug in OpenGL renderer
	  (with small lightmaps).
	- Gary Haussmann added mdl_read method for reading Quake1 model
	  files. Not yet implemented.
	- Gary also added code to recognize and read in texture coordinate
	  chunks from a 3DS file.
30-Jul-1999
	- Andrew Zabolotny made some changes to vertex fog to try to bring
	  it closer to software. If you have problems with this you can edit
	  libs/csengine/polygon/polygon.cpp and undefine USE_EXP_FOG.
	- Based upon a suggestion by Andrew, Eric Sunshine simplified the
	  MacOS/X Server patch for volatile.h in the Makefile.
	- Thomas Hieber updated Win documentation and removed a lot of
	  MS headers/libs (copyright problems).
	- Andrew Zabolotny also did a small makefile change for the
	  sockets driver and updated the sockets driver for OS/2.
29-Jul-1999
	- Removed support for planed fog. It is obsolete now that we have
	  vertex fog.
	- *** Release of 0.14_000 ***
	- Eric Sunshine fixed a couple of "unused variable" compiler warnings
	  in polygon.cpp.
	- Andrew Zabolotny improved speed of flat shading in software mode.
	- Thomas Hieber added dll's for Win32 (PNG, JPG, and ZLIB).
	- Robert Bate fixed 'loadsprite' in WalkTest for the Macintosh.
	  It allocated a large object on the stack and this is now allocated
	  with 'new'.
	- Robert Bate did some other changes to the Macintosh port (project
	  files mainly).
	- Robert Bate also moved the deletion of the font server and texture
	  cache to the close method so that the mac version can have them
	  destroyed before the OpenGL context that they depend on is destroyed.
	  Macintosh OpenGL also uses the common OpenGL code now.
	- Robert also did some fixes on the Glide stuff.
	- Robert also fixed 8-bit color for the Macintosh version.
	- Thomas Hieber added the latest changes to the input system by
	  Xavier Trochu (DirectInput).
	- Thomas also added WIN32_VOLATILE to the VC project files.
28-Jul-1999
	- Fixed fog in OpenGL. One-layered fog works now.
	- Clipping portals are no longer automatic. There is now a CLIP()
	  keyword which you can use to indicate a portal that clips
	  geometry in the destination sector.
	- Changed behaviour of csIntersect3::Plane() back to old.
	- Fixed testing for endian correctness for import routines. Loading
	  3DS files now works for Solaris.
	- Fixed OpenGL volumetric fog so that it supports multiple layers.
	- Fixed OpenGL volumetric fog so that it works for DrawPolygonFX as
	  well. This fixes sprites and curves. It works but there seem
	  to be a little problems yet. I'm not sure but it seems as if the
	  sprites drawn using fog stand out a little.
	- Xavier Trochu mentioned a bug in the ScanStr routine. It crashed
	  with unmatched quotes.
	- Andrew Zabolotny added correct flat shading for Gouraud-shaded
	  sprites (and non-Gouraud as well). Fixed the bug in walktest
	  that all sprites are unlighted during the very first frame.
	- Thomas Hieber removed a few warnings and updated the VC project
	  file.
	- Thomas also implemented vertex fogging in the D3D driver.
	- Andrew Zabolotny fixed support in OpenGL renderer for
	  Gouraud-shaded flat-colored polygons and added support for
	  non-textured renderer mode (press the 't' key to see this). This
	  is even better than the software renderer because it supports
	  lighting without textures.
27-Jul-1999
	- Added csWorld::EnableLightingCache() with which you can disable
	  the lighting cache (and thus saving of lightmaps to precalc.zip).
	- The lighting cache now gives a warning is the cache is being used
	  while objects (things and sectors) don't have proper names. This
	  is invalid usage of the cache.
	- I added the Squawk demo to CS.
	- Changed Blocks, Walktest (infmaze), Simple, and Squawk so that
	  they disable the lighting cache (no more precalc.zip for them).
	- Fixed ScanStr() so that a dot is also recognized as part of a
	  string.
	- Added 'loadsprite' command to WalkTest which is supposed to be
	  able to add MD2 and 3DS sprites (use 'addsprite' after 'loadsprite'
	  to really add the sprite to the leve). I haven't been able to test
	  it yet because: a) the code for MD2 loading isn't endian correct
	  yet and I'm on Solaris right now. b) It can only load 3ds version
	  3 files and I haven't found any of those.
	- Eric Sunshine fixed a bug in csGraphics2D::complete_pixel_format()
	  where it could go into an infinite loop during calculation of
	  RedBits, GreenBits, or BlueBits on account of accidental sign-
	  extension of its work variable.
	- Eric Sunshine modified the makefile configuration system so that the
	  NO_BOOL_TYPE setting is now stored in config.mak and volatile.h.
	  This setting is used to determine if include/types.h should provide
	  a fake "bool" type for compilers which do not support bool natively.
	- Eric Sunshine modified the makefile system so that the need for
	  NO_BOOL_TYPE is automatically detected during the configuration
	  phase.  Ports which use the GNU makefile system and which manually
	  specified NO_BOOL_TYPE in the past no longer need to do so.
	- Eric Sunshine fixed a bug in unixconf.sh where it was not correctly
	  handling the case when the "which" command failed to find the
	  program in question.
	- Eric Sunshine re-wrote the blitters for the MacOS/X Server,
	  OpenStep, and NextStep ports of Crystal Space so that they now work
	  in 15-bit and 32-bit RGB modes.  Previously they were restricted to
	  8-bit, 256 color palette mode.  Not only does this improve display
	  quality, but it also means that they can now take advantage of all
	  the features which are not available to 8-bit mode.  For instance,
	  sprites are now lighted correctly, bots and the skeletal tree are
	  now properly Gouraud shaded, the translucent green ghost is visible,
	  and Crystal Shooter works.  Testing indicates that the low-level
	  15-bit blitter is just as fast as the old 8-bit one, and the 32-bit
	  blitter is actually faster.
	- Eric Sunshine re-wrote the code which queries for device depth in
	  the MacOS/X Server, OpenStep, and NextStep ports.  It now queries
	  the WindowServer directly instead of the AppKit since the
	  WindowServer has a better notion of its preferred image format.
	  Under NextStep the WindowServer and AppKit will return the same
	  value, howevever as of OpenStep 4.1, the values may differ, and the
	  WindowServer's result should be taken as the truth.
	- Eric Sunshine fixed a bug in the mouse-down method of the MacOS/X
	  Server, OpenStep, and NextStep ports.  The states of the Alternate
	  and Control keys were being incorrectly computed.
	- Eric Sunshine worked around a nasty bug in GNU make on MacOS/X
	  Server.  Specifically, it corrupts the contents of MAKE_VOLATILE_H
	  (and probably other variables) by truncating values which are
	  appended with +=.
	- Eric Sunshine worked around a bizarre bug in the MacOS/X Server PPC
	  compiler, where it would crash with an "internal compiler error" in
	  soft_txt.cpp any time find_rgb_map() was called.  A simple textual
	  reorganization of the file cured the problem.
	- Andrew Zabolotny made some fixes on the software renderer
	  (including the file he forgot yesterday). He also fixed 16-bit
	  unlighted texture drawer.
	- Fog in OpenGL almost works perfectly now. There are still two
	  problems: there is a problem with the thickness calculation in
	  relation to polygons which are oriented sideways from the
	  camera. I'm not sure what is happening here. You'll see the
	  effect soon enough. The other problem is that currently only
	  one layer of fog will work correctly.
	- Jorrit fixed the hardware 3D renderers so that gouraud shading works
	  again.
	- I changed the behaviour of csIntersect3::Plane() a bit.
	- A few changes to docs.
26-Jul-1999
	- Andrew made changes to DrawPolygonFX() (one argument instead of
	  three). He fixed a number of small bugs and adjusted the prototype.
	  It also now safely supports 2*SRC*DST mode by clamping lighting
	  values to (2,2,2).
	- Andrew removed scanln8.inc, scanln16.inc, & scanln32.inc and
	  replaced them with scanln.inc.
	- Unfortunately Andrew forgot to check in the new scanln.inc file,
	  which prevents the software renderer from compiling.  Therefore,
	  Eric Sunshine created a replacement scanln.inc file, as a stop-gap
	  measure, which at least allows the software renderer to compile.
	  Hopefully Andrew will commit his scanln.inc tomorrow if it is any
	  different than the one which Eric created.
	- More changes to makefile system from Andrew Zabolotny.
	- Thomas Hieber did a few changes. He prepared for the new
	  DirectInput keyboard handling (not yet activated) and fixed all
	  binary libraries for the Win port.
	- Some changes to Mac port from Robert Bate (error handling).
25-Jul-1999
	- Eric Sunshine worked around a variable redeclaration error in the
	  new md2.cpp file.  This problem affected older C++ compilers in
	  which the life time of a variable declared in a for(;;) statement is
	  not limited to the for(;;) statement, but instead extends beyond it.
	- Gary Haussmann added code for a 'cross builder' which can take the
	  data read in from various file formats (MD2, 3DS, DXF, ...) and
	  build standard Crystal Space objects from those files.
	- Michael Dale Long fixed project files for new files from Gary
	  Haussmann.
	- Added version of win32.cpp from Xavier Trochu which uses
	  DirectInput for keyboard handling.
	- Xavier Trochu also fixed the Windows OpenGL 2D driver so that the
	  console and FPS display works correctly.
	- Jorrit did an optimization in the software version of DrawPolygon.
24-Jul-1999
	- Changes from Thomas Hieber to fix Win32 again.
23-Jul-1999
	- Small optimization in WhichSide3D (made inline). This could
	  be important for the lighting routines which use this function
	  a LOT.
	- Removed volume.cpp from csgeom library.
	- Fixed MetaDemo for Unix.
	- Changed typedef for COMBOOL to 'int'.
	- Started work on vertex based fogging for the engine and OpenGL.
	- Xavier Trochu fixed a bug in csSprite3D::RemoveFromSector().
	- Andrew Zabolotny removed DrawHorizLine from the 2D drivers and
	  replaced it with DrawBox (which is better).
	- Andrew also added a small speed improvement to DrawPolygonFX and
	  also made it 2*SRC*DST complient (software version).
	- Andrew made some fixes to the makefiles again (echo problem).
	- Some changes to Mac port from Robert Bate.
22-Jul-1999
	- Updated some docs (like the todo and faq).
	- Added a callback to csSprite3D which is called just before the
	  sprite is drawn. This allows games to delay expensive sprite
	  operations until just before the sprite becomes visible.
	  The ghost and skeletal trees use this feature to stop animating
	  once they are no longer visible.
	- Defined COMBOOL as BOOL on Windows (safer).
	- Andrew Zabolotny added a static OpenGL 2D driver for OS/2.
	- Andrew also did some small fixes to the OS/2 port.
	- Significant change to the makefile system from Andrew.
	  First, there is no more need to add support for specific OS
	  targets into root Makefile. It will search the mk/system
	  directory for available targets.
	  'make depend' works better now.
	  volatile.h is now generated only during 'make system' run
	  (along with config.mak). Don't change config.mak manually!
	  (note from Jorrit: as a result of these makefile changes the
	  Linux port will now run about 25-50% faster compared to the
	  previous CVS update. This is no joke! :-)
	- Changed Initialize() function in csWorld so that the IGraphics3D
	  interface pointer is given instead of IGraphicsInfo. The reason is
	  that the 3D engine needs to get the width,height of the display
	  from the 3D rasterizer and not from the graphics subsystem.
	  The 3D rasterizer can fake things and run as if the system is in
	  another resolution (new feature in the software renderer).
	- Added '-smaller' commandline option to the software renderer.
	  With this option the rendering happens in a smaller internal
	  buffer which is then copied to the window every frame. The
	  copy happens with blending so that it looks nice. Simulated
	  640x480 is faster than normal 640x480 (but it does not look
	  as nice). The speed difference is larger with expensive software
	  features like fog and transparency.
	  Note that the 2D drawing is not affected by this. The copy from
	  the internal frame to the real window is done when 3D graphics
	  drawing has ended (before 2D drawing starts).
        - Eric Sunshine added a "platforms" target to the makefile.  This
          allows the user to see the list of platforms for which Crystal Space
          can be configured.  This list used to be available via "make help"
          at all times, but Andrew's recent modifications changed the behavior
          in such a way that it was no longer feasible to display the list of
          platforms once the makefiles were already configured.  The new
          "platforms" target gets around this limitation by only performing
          the extra work needed to generate the platform list if the user
          explicitly requests it.
        - Eric Sunshine worked around some "const versus non-const" warnings
          from the OpenStep compiler which turned up when the ghost was added
          to keys.cpp.  The offending code actually looked fine, which leads
          me to believe that this is another compiler bug.
	- More fixes to the OS/2 OpenGL driver from Andrew Zabolotny.
	- Andrew fixed a bug that made console crash in double-buffered
	  environments.
	- Robert Bate updated the Macintosh project files.
21-Jul-1999
	- Eric Sunshine uploaded new archives of zlib, libpng, and libjpeg
	  to the Crystal Space ftp site which conform to the new beta 13
	  directory hierarchy.
	- Collision detection is now correct for skeleton sprites (but
	  remember that sprite CD is not enabled in WalkTest).
	- The ghost now moves around. It uses real collision detection instead
	  of the hack that the bots use. So this should work much better.
20-Jul-1999
	- Gary Haussmann changed the OpenGL X 2D driver to be a little
	  bit smarter when detecting which supported visuals there are.
	- Gary also added support for user configurable lightmap blending.
	  The user can specify the blend mode to use as LIGHTMAP_MODE
	  in the opengl.cfg file. Also added some init code to properly
	  position the initialization text so you can read it now.
	- Fixed lighting of skeleton sprites.
	- Calculate normals for skeleton sprites (lighting) only once. This
	  means that it is important to iniatialize the skeleton to some
	  useful default setup (set up transformations in skeleton template).
	- Fixed lighting for sprites which are not touched by any light.
	- Fixed bug with delete[] being called too much with skeleton sprites.
	- Did some minor fixes on the changes from Eric Sunshine.
	- For more fun, Jorrit extended the 'addskel' command so that you
	  can now give a negative width. In that case the real width at every
	  node will be random between 1 and -width.
	- Implemented csSprite3D::DeferUpdateLighting() which defers update to
	  sprite lighting until the sprite becomes visible. Much more optimal.
	- Renamed BOOL to COMBOOL for compatiblity problems with BOOL on
	  some systems (like IRIX, MacOS/X Server, OpenStep, and NextStep).
	- Eric Sunshine made these changes:
	    - Made drawing optimizations to csProgressMeter and
	      csProgressPulse.  In many cases the impact of these
	      optimizations on drawing performance is quite dramatic.
	    - Fixed a new compilation warning in cssprite.cpp.
	    - Fixed the MacOS/X Server, OpenStep, and NextStep ports to so
	      that they once again compile following the rename of BOOL to
	      COMBOOL.
	    - Jorrit pointed out that the new library name csapputil is too
	      long for DOS.  It has been renamed to cstools.
	    - Jorrit pointed out that the csengine library had undesirable
	      static dependencies on csProgressMeter and csProgressPulse in
	      the cssys library.  Moved these classes to csengine for now
	      to remove this dependency.  Ultimately these classes should
	      probably be placed elsewhere since they are generic enough to
	      be useful to applications which use cssys but not csengine.  I
	      would do it myself, but I don't have time right now.
	- Added 'addghost' command to show a very nice skeleton green
	  semi-transparent ghost.
	- Michael Dale Long fixed dependency problem in ndrvdemo.mak.
	- Gert Steenssens fixed some Glide compilation errors.
19-Jul-1999
	- Added GetXRotation(), GetYRotation() and GetZRotation() to
	  csMatrix3.
	- Added 'addskel' command to demonstrate the new skeletal sprites.
	  The first argument is the depth. A depth of 1 will create a
	  root and one layer above. The second argument is the width. This
	  is the number of branches created at every depth. A good tree
	  is 'addskel 3,3'. Be careful with large numbers here. The
	  number of triangles grows VERY fast!
	- Eric Sunshine made the following changes:
	    - Fixed the long-standing bug which blanked out every line of the
	      the startup console except for the most recently printed line.
	      This bug affected platforms, such as Windows, MacOS/X Server,
	      OpenStep, and NextStep, which are restricted to performing
	      whole-display updates.
	    - Removed the broken requirement from SimpleConsole that 2D
	      graphics drivers must be able to perform partial display
	      updates.  Now the "area" argument to csGraphics2d::Paint() is
	      once again *advisory-only* as was the intention from the start.
	    - Rewrote SimpleConsole::PutText().  It can now deal with partial
	      lines and supports destructive backspace.
	    - Added csProgressMeter and csProgressPulse which provide simple,
	      console-based user feedback during lengthy computational
	      processes.
	    - Used csProgressMeter & csProgressPulse to completely replace the
	      existing poorly implemented progress meter displayed on the
	      startup console during lighting.  Removed ill-conceived
	      MSG_TICKER, SimpleConsole::ReplaceLastLine(), and
	      SimpleConsole::ShowWork().  This significantly simplified the
	      code.  Progress meter functionality is now high-level, very
	      localized, and reusable, rather than being spread around
	      as numerous special-cases throughout all levels of the system.
	    - Created a new library, csapputil, which contains high-level,
	      specialized objects which may be useful to some application
	      frameworks.
	    - Sufficiently genaralized SimpleConsole, so that it could be
	      moved to csapputil and renamed it to csSimpleConsole.  It can
	      now be used by any application which has need for that sort of
	      functionality.  Previously other applications were using copies
	      of this class for the same purpose.  Now all applications use
	      the shared code.  Renamed the files from scon.{h|cpp} to
	      simpcons.{h|cpp}.
	    - Moved console.h from apps/support to include/cssys/common.
	    - The Command class, apps/support/command.{h|cpp}, is now derived
	      from a new class, csSimpleCommand which defines an interface for
	      high-level command interpreters.
	    - Fixed a bug in csSystemDriver::DemoWrite().  It failed to send
	      BeginDraw() to the 2D graphics driver.
	    - Removed all custom application-specific DemoWrite() methods
	      which simply duplicated, but did not extend, the functionality
	      of the one in csSystemDriver.
	    - Fixed MazeD's console.  There were two problems.  First, a bug
	      in CSWS's appSystemDriver::DemoWrite() prevented messages from
	      even making it to the console, thus it was never displayed.
	      Second, a change in the behavior of csWorld::Prepare() caused
	      the color palette used for the startup console to be wiped clean
	      after it was set up, but before it could be used.  Thus the
	      startup console was incorrectly restricted to white text on a
	      white background.
	    - Made tcache.cpp, tcache16.cpp, and tcache32.cpp compilable on
	      NextStep for HPPA again.  The compiler, which apparently can not
	      deal with long method names (actually long method signatures),
	      was crashing with an internal compiler error when it encountered
	      create_lighted_texture_true_rgb_priv().  Shortened name to a
	      length acceptable to HPPA compiler.  Also renamed similarly
	      named private methods for consistency.
	    - Made various updates to a number of the documents in the 'docs'
	      directory.
	    - Fixed a number of sources and headers in the library directory
	      which were incorrectly including files from apps/support.  Fixed
	      some makefiles which were unnecessarily including apps/support.
	      Hopefully the Crystal Space libraries no longer depend on
	      application specific functionality.
	    - Fixed a couple "unused variable" compiler warnings in
	      mazed/me_app.cpp.
	    - Fixed a broken .PHONY dependency in walktest.mak.
	- Fixes to Macintosh port from Robert Bate.
18-Jul-1999
	- Thomas Hieber replaced DrawPolygonQuick by DrawPolygonFX. He also
	  extended DrawPolygonFX with a new FX_Transparent mixing mode.
	- Thomas also improved the menu of Crystal Shooter.
	- Implemented first proposal for skeleton sprites based on the current
	  sprite system.
17-Jul-1999
	- Thomas Hieber updated documentation for Windows.
	- Thomas added all library headers and libraries for non-CS libraries
	  to CVS to make building CS easier.
16-Jul-1999
	- Jorrit decreased SMALL_Z from 0.1 to 0.01.  This should reduce the
	  chances of the variaus stages of the clipper going wrong and thus
	  remove a lot of the ugly polygon drawings.
	- Received and integrated makefiles for IRIX/SGI from Dmitry
	  Derevyanko <dmitryd@robotics.EECS.Berkeley.EDU>.
	- Or Siu-Hang fixed the Archive class (small bugfix).
	- Jorrit removed the obsolete physics stuff from the engine.
	- Jorrit moved all remaining public include files from libs to include
	  (csgame, csgfxldr, csscript, csws, cssys, csparser, and cssndldr).
	- Eric Sunshine made the following changes:
	    - Updated the MacOS/X Server, OpenStep, and NextStep ports of
	      Crystal Space to work with beta 13.  They had previously worked
	      only with beta 12.
	    - Fixed various compiler warnings generated by MazeD, impexp.cpp,
	      socket driver, math2d.h, and MetaBalls.
	    - Added a 'distclean' target to the makefile which deletes
	      config.mak and volatile.h in addition to the files removed by
	      'clean'.
	    - Updated Makefile to use each platform's description string as
	      specified in common.mak instead of duplicating them locally.
	    - Updated the makefiles so that the drivers2d, drivers3d,
	      netdrivers, snddrivers, and drivers targets work even for
	      platforms which do not use dynamic libraries (that is
	      USE_DLL=no).
	    - Fixed makefile bug: The win32vc platform was incorrectly
	      specified in Makefile and mk/common.mak.
	    - Removed unnecessary DRIVER_SUBMAKEFILES duplication from cs.mak.
	    - The NeXT-specific makefile modifier TARGET_ARCHS is now a
	      "sticky" option in config.mak.
	    - Updated the Primitive Editor to work with beta 13.
	- Large change from Andrew Zabolotny so that all system dependent
	  compile flags are stored in include/volatile.h instead of as flags
	  of the compiler.  This will make it easier in the future to
	  distribute binary distributions of CS (i.e.  'make install').
	- Jorrit prepared the first steps towards full sprite lighting
	  support.  It is not finished yet.
	- Moved Primitive Editor (PrimEdit) to the attic on account of
	  obsolescence.
	- Andrew Zabolotny corrected sprite lighting and also implemented
	  sprite lighting for sprites from world file in WalkTest.
	- Robert Bate fixed the Macintosh port.
15-Jul-1999
	- Added support for multi-sector sprites. Also simplified the
	  rendering process through portals a bit.
	- Removed csPortalCS class and put all functionality in csPortal.
	  There is no need for the current double class situation since
	  the landscape engine is going to be integrated and overriding
	  portal behaviour is still possible this way (like InfMaze does).
	- Fixes from Robert Bate for the Macintosh port.
	- Andrew Zabolotny add scan32a.asm which he forgot earlier.
14-Jul-1999
	- Added a lot of config file variables for collision detection and
	  speed of the new movement system.  Almost everything can be
	  configured now (movement speed, acceleration, jump speed, dimensions
	  of body and legs, ...).  See docs/config.txt (or cryst.cfg) for a
	  list.
	- Fix from Andrew Zabolotny to 'client' in ndrvdemo.
	- Andrew also fixed the X 2D drivers so that they can be included
	  in the same executable (CheckKeyPress() problem).
	- Added missing scan32a.h file for compiling with NASM.
	- Small changes to the makefiles from Andrew Zabolotny.
	- Andrew fixed the 'Black Screen' problem in MetaDemo and
	  Shooter (at least for OS/2).
	- Andrew changed BOOL to bool, TRUE to true, and FALSE to false
	  in libs/csgame and apps/shooter. Also another small fix
	  to the csgame library.
	- Eric Sunshine fixed a macro name (for multiple inclusion) in
	  ndrvscon.h.
	- Thomas Hieber cleaned up the project files for VC a bit.
13-Jul-1999
	- Fixed bug in ClipToPlane() which is only used for portals on
	  things. This bug could cause flickering polygons.
12-Jul-1999
	- New 'dumpvis' command. This command takes the current view
	  and dumps information for the rendering process. You will
	  see what sectors and polygons are rendered and how they are
	  clipped. This is useful for debugging purposes. The output
	  comes into 'debug.txt'.
	  I added 'ctrl-d' as a key shortcut for 'dumpvis'.
	- Fixed bug in engine so that you can safely set low values
	  for LIGHTMAP_SIZE in cryst.cfg. I tested 8 and 4 and this gives
	  really accurate shadows (at the expense of memory and speed of
	  course).
	- Moved a lot of the include files from libs/*.h to include/*.h
	  This includes csengine, csobject, csutil, and cscom.
	- Made csloader a little bit more robust.
	- Change from Andrew Zabolotny to remove automatic store of USE_NASM
	  into config.mak. This has been done so that config scripts (see
	  bin/dosconf.bat) can automatically detect whenever NASM is
	  installed or not and write their own settings of USE_NASM into
	  config.mak. If NASM is not autodetected by "make configure", you
	  will have to add manually "USE_NASM=yes" to config.mak in order
	  to use NASM.
	- Andrew also updated the 32-bit NASM routines:
	  draw_scanline_map_zfil, mmx_draw_scanline_map_zfil,
	  draw_scanline_map_zuse, draw_scanline_map_alpha50,
	  draw_scanline_tex_zfil, mmx_draw_scanline_tex_zfil,
	  draw_scanline_fog and draw_scanline_fog_view.
	  No more separate RGB and BGR fog versions! Now it should work for
	  any pixel encoding with just one routine.
11-Jul-1999
	- Thomas Hieber fixed/enabled mipmapping again in the Direct3D
	  renderer. This also improves performance a little.
	  Transparency will also work on mipmapped textures.
	  Textures are now automatically scaled to their ideal sizes
	  according to hardware restrictions (for example < 256).
	- Thomas also moved a few utility routines to the csutil library.
	- Denis Dmitriev moved 'coodload' and 'coordsave' commands
	  to WalkTest.
	- Denis also made our legs longer so that we can climb the
	  sidewalks in large.zip :-)
	- Thomas added a new build mode 'RelDeb' to the VC projects. This
	  is a release version with debug information.
10-Jul-1999
	- Denis Dmitriev fixed the Direct3D renderer so that the skydome
	  works correctly (problem with Z values being very large).
	- Andrew Zabolotny removed tables.*. Tables are now kept in
	  the Scan structure. New NASM routines for 16-bit fog (about
	  10% improvement).
9-Jul-1999
	- Made loading of worlds slightly more robust in case the
	  world file is corrupt (or just not a world file).
	- I added a fix from Thomas Hieber so that the Direct3D port
	  works correctly on RIVA 128 cards. The problem had to do with
	  the RIVA 128 DX driver not supporting non-square textures.
	  The fix is easy and general.
	- Ivan Avramovic moved the (nearly obsolete) csscript code out
	  of the engine into its own library (csscript). This clean
	  seperation means that the engine no longer depends on that
	  code and that we can safely remove it when something better
	  appears.
	- Andrew Zabolotny modified the X 2D drivers (Software, OpenGL,
	  and Glide) so that autorepeat behaves better. This improves
	  the speed for walking around with the new movement code.
	  He also added support for keypad arrow keys.
	- Andrew also changed the makefiles so that there is no longer
	  a seperate PIC directory if CFLAGS.DLL is empty.
8-Jul-1999
	- Updated makefiles for ndrvdemo. There are now two makefiles. One
	  for the client and one for the server. They generate the executables
	  'client' and 'server' (on Unix). Also did some other fixes (like
	  renaming scon.* to ndrvscon.* and proper txtmgr init).
	- Fixed a bug in the lighting routines (mostly with lighting through
	  portals on things). Fixing this bug happens to be an optimization
	  as well :-)
	- Some changes (bugfixes) to DJGPP port from Andrew Zabolotny.
7-Jul-1999
	- Major bugfix in collision detection code. It crashed completely
	  on sprites. CD with sprites seems to be broken though. But now
	  at least it doesn't crash anymore.
	- Mirroring of sprites and curves is correct now.
	- Drawing gouraud shaded polygons is also somewhat more efficient
	  because I avoided three divides for perspective correction for every
	  triangle (this remark is not for the sprites and curves).
	- orig_triangle is no longer needed with DrawFilled.
	- Made all gouraud shaded drawing (curves, sprites, and skydome) more
	  efficient by avoiding complicated calculations if the original
	  triangle was not clipped.  This also cleans up the code a little.
	- Changed clipper not to use memory allocation for sprite and curve
	  triangles. This makes drawing curves and sprites faster again.
	- Optimized curve drawing.
	- Andrew Zabolotny fixed an additional number of warnings and
	  converted some documents from CR/LF to LF.
	- Andrew also fixed the bug with startup console not working in
	  8-bit mode.
	- Andrew added a 'dosconf.bat' script which will help detect what kind
	  of options the DJGPP compiler understands. This works similar to
	  unixconf.sh. In addition he updated the DOS port to simplify palette
	  stuff, fix a bug with single-page non-X and non-VESA modes, and
	  fix a bug with Matrox VESA BIOS.
	- Serguei Narojnyi (Snaar) updated NdrvDemo and also added VC project
	  files.
6-Jul-1999
	- Andrew Zabolotny made the movement system from Denis Dmitriev time
	  dependent (so that movement speed is correct even if frame rate is
	  different).
	- Andrew also implemented fog in 8-bit mode and fixed alpha value
	  for 8-bit.
	- Andrew fixed SetMousePosition() for OS/2.
	- Fixed dependency on an csengine include file in OpenGL, Direct3D,
	  and Glide renderers.
	- Some fixes to networking code from Serguei Narojnyi (Snaar).
5-Jul-1999
	- I completely removed support for the 'map' command from the engine
	  and moved all of it to WalkTest using the new 'DrawFunc()' system.
	  Again the engine becomes a little cleaner :-)
	- Added csLight::LightingFunc() which is similar to
	  csWorld::DrawFunc() but now for the lighting frustrum calculations.
	- I fixed the crash in OpenGL when pressing on the WalkTest
	  window with third mouse button.
	- Moved polygon and lighting selection from engine to WalkTest.
	- The 'frustrum' command has been moved from apps/support/command.cpp
	  to apps/walktest/walktest.cpp.
	- Frustrum dumping works again (enable edge drawing, select a light
	  with the right mouse button and enable the 'frustrum' command) and
	  is moved from the engine to WalkTest.  So I removed the
	  DumpFrustrum() function which existed in several classes (but wasn't
	  functional).
	- Removed csPolygon3D::hilight and moved to WalkTest.
	- Following a suggestion from Martin Geisse
	  <Hellwig.Geisse@mni.fh-giessen.de> I created a
	  csSpriteTemplate::NewSprite() function which creates a sprite from
	  a template. This is easier and more logical.
	- Patch from Andrew Zabolotny with a signficant speedup in the
	  alpha transparent texture mappers (16 and 32 bit).
	- Other changes from Andrew have to do with cleanup with regards to
	  indentation and also a few fixes to the collision detection system.
	- I removed csSector::HitBeam() with four parameters and
	  csSector::FollowBeam() since they were never used and no longer
	  served a useful function.
	- I changed MetaDemo and Simple so that they also load standard.zip
	  if present. They will try to load stone4.gif from standard.zip.
	- Made documentation a bit (INSTALL, README, walkthru.txt).
4-Jul-1999
	- Renamed csMath3::PlanesClose() to csMath3::PlanesEqual() and
	  added new csMath3::PlanesClose() function which is more correct (it
	  also normalizes the planes before testing equality).
	- Improved MarkRelevantShadowFrustrums() so that it also discards
	  shadow frustrums for shadow objects which are on the same plane
	  as the object being shadowed. This improves shadow calculation
	  for things somewhat (as well as optimizing it) but we're still not
	  completely ready. Polygon of things can sometimes shadow other
	  polygons even if this should not happen.
	- Added csView::GetClipper().
	- Added csWorld::DrawFunc().  This is a special version of
	  csWorld::Draw() which does not draw but instead calls a callback
	  function which you can give it.  Using this it is possible to dump
	  debug information for what you can see on screen.  I plan to change
	  some of the existing features this way so that they are removed from
	  the engine and moved to game specific code (i.e.  WalkTest in this
	  case).
	- I implemented edge display using the new system.  Display of edges
	  is now completely done by the application and not by the engine nor
	  the 3D rasterizers.  I removed G3DRENDERSTATE_EDGESENABLE from all
	  3D renderers.  There are three advantages from this change:
	  	1.  The 'e' key will work on Windows now since edge drawing is
		   done in 2D mode.
		2.  The 'e' key also works for all 3D renderers which support
		   line drawing.  Previously only software supported it.
		3. The engine became cleaner (smaller).
	- The 'edges' command has been moved from apps/support/command.cpp to
	  apps/walktest/walktest.cpp.
	- Increased speed of walking in 3D mode.
2-Jul-1999
	- I optimized the new movement system of Denis so that the gravity/CD
	  tests are only done when the camera moves. This increases
	  performance a bit.
	- Fixed look_up and look_down commands.
	- I also fixed a few bugs in the handling of the new 'status' prefix
	  with key binding.
	- The 'move3d' command works properly now.
	- Received patch from David Huen for the BE software and OpenGL
	  renderers. He also sent me Glide support for BE including a
	  glide2common directory which other Glide ports should use (similar
	  to openglcommon).
	- *** Release of 0.13_012 ***
	- I added the optimization back with csVector3 having no constructor.
	  But I did some VERY extensive testing before doing this. First I
	  created a constructor which initialized the value to 12345678.9.
	  Then I also added a CHECK() function which checked for that value
	  and was called in EVERY csVector3 function. I did find a few
	  problems and solved them.
	- Fixes to software renderer from Andrew Zabolotny to make it more
	  bullet proof. Yet another fix from DrawPolygon to avoid the problem
	  with not generating part of the lightmaps for ares of polygons.
1-Jul-1999
	- Thomas Hieber enabled snap-to-grid in MazeD and he also increased
	  the size of the crosses for vertices.
	- Andrew Zabolotny fixed a bug with the texture manager which
	  could cause VERY big slow-downs at times (and maybe even crashes).
30-Jun-1999
	- I extended the movement system of Denis Dmitriev to implement the
	  old 3d-movement functions again. There are a set of new commands
	  which can be bound to keys for that purpose. The docs/console.txt
	  document has been updated with all new commands.
	- Update documentation.
	- Fix to NASM code from Andrew Zabolotny.
	- Andrew added 'gouraud' console command to toggle gouraud support.
	  There is also a new render state called G3DRENDERSTATE_GOURAUDENABLE.
	  All the renderers where changed to support this flag.
	- Fix to platform dependent QInt() selection.
	- Optimization with removed csVector3 constructor is gone because
	  it appears to give some problems on Windows.
29-Jun-1999
	- I had to remove the optimization mentioned below with regards
	  to triangle drawing. It is more complicated than that. The
	  optimization is still possible though but it needs a little
	  more thinking.
	- Various changes in preparation of the next beta release.
	- Dynamic lighting for missile is now correct immediatelly
	  after creation.
	- Added faster version of csPolygonSet::TransformWorld2Cam()
	  which makes better use of the processor L2 cache. Thanks to
	  Bruce Williams for suggesting this to me.
	- Much improved fog routine for the software renderer. This one
	  is MUCH faster. Thanks to Andrew Zabolotny for this one. Note
	  that the code for 32-bit fog seems not to work correctly on
	  non-Intel platforms (like the SPARC).
	- Andrew also fixed the problem with gouraud shaded triangles which
	  were sometimes rendered wrong.
28-Jun-1999
	- Removed test on rstate_gouraud in software renderer because it
	  is plain wrong.
	- Received and integrated patch from David Huen for the BeOS port.
	- Fixed include file problem on Unix for updated sockets driver.
	- BIG BIG improvement in speed in PreparePolygonQuick(). This should
	  make a huge difference when showing sprites (and curved surfaces).
	  And not only for the software renderer. It was the engine!
	- Small fix to [] operator in csVector3 from Denis Dmitriev.
	- Denis Dmitriev replaced old tri_context code by code from Tomas
	  Moller since old was incorrect in some cases.
	- I removed currentSector from csSprite3D since it is redundant.
	- Denis Dmitriev implemented a new movement system in WalkTest.
	- Serguei Narojnyi (Snaar) fixed another bug in the network code.
26-Jun-1999
	- Serguei Narojnyi (Snaar) SQUASHED a bug in the network driver :-)
25-Jun-1999
	- New csSprite3D::UpdateLighting() to update the lighting of a
	  sprite given an array of lights.
	- Also added normal calculation to sprite frames because this
	  is needed for lighting.
	- New csWorld::GetNearbyLights() function to calculate a list of
	  nearby lights.
	- Added lighting for missile and bot based on environment.
	- Added 'addsprite' command. You can add a sprite with this
	  command like this: 'addsprite bot,5'. 'bot' is the name of
	  a sprite template which needs to be loaded in memory (either
	  from standard.zip or from the level). The size is a scale
	  factor for the sprite. The sprite is put at the current
	  location.
	- Small changes to Crystal Shooter from Thomas Hieber.
	- Update to INSTALL.Win from Thomas.
	- Thomas also added lots of additional error checks in debug
	  mode for the Direct3D5 renderer.
	- Some small other changes from Thomas.
	- Update and fixes to VC project files from Thomas.
24-Jun-1999
	- Renamed MarkVisibleThing() to GetVisibleThings().
	- The optimization with lighting and bounding boxes is active now.
	- The bounding box creation also works for curves now.
	- Andrew Zabolotny moved the specific FPU settings which are
	  (uncommented) in walktest.cpp to support/debug/fpu80x86.h.
	  FPU exceptions are now enabled by default on debug builds
	  and disabled on optimized builds.
	- Andrew added a faster version of QInt() and QInt24() for
	  x86/GCC platforms (and QInt24() also for M68K).
	- Andrew also fixed a few bugs in the NASM code.
	- Andrew changed ALL occurances of 'gouroud' still remaining to
	  'gouraud' and removed an additional number of warnings.
	- Andrew fixed OS/2 port by removing an unneeded WaitSwitch().
	- Andrew avoided an internal compiler error for the sound loader
	  for GCC 2.8.0 and early EGCS/PGCC's.
	- Denis Dmitriev added [] operator to csVector3.
	- Michael Dale Long fixed a small warning in the COM code.
	- Robert Bate updated Macintosh project files with new files.
23-Jun-1999
	- Fixed another serious bug with lighting.
	- Thomas Hieber changed the interface of DrawPolygonFX().
	- Thomas also fixed a small bug in OpenGL driver with regards
	  to gouraud shading.
	- Thomas added fully functional DrawPolygonFX for 16 and 32
	  bit modes in software renderer.
	- Thomas also added some fixes to VC project files.
22-Jun-1999
	- Thomas Hieber cleaned up the software renderer some more.
	  He unified most routines for scanline drawing.
	- Andrew Zabolotny removed a number of errors in the network
	  manager, due to comparing unsigned with negative values.
	  He also removed a few additional warnings.
	- I applied a few small fixes for DOS as suggested by Seth Galbraith.
	- I fixed a serious bug in the precalculated lighting routines.
21-Jun-1999
	- I fixed the Linux makefile for Shooter since the 'csgame' library
	  has changed.
	- I received a large patch from Andrew Zabolotny. He is busy porting
	  all the assembler code for the software renderer to NASM. The new
	  code is not enabled by default yet.
	- Andrew also moved the csCleanable sub-classes outside the functions.
	  This should fix a few compilation problems for some compilers.
	- Andrew also changed several occurances of 'gouroud' to 'gouraud' (I
	  hope this doesn't break things :-)
	- Michael Dale Long updated cvsguide.txt for the new IP number.
	- Thomas Hieber removed a LOT of warnings!
	- I removed another batch of warnings.
	- Siu-hang Or patches MazeD for a directory tree problem.
20-Jun-1999
	- Thomas Hieber added a quick tutorial for MazeD (received from
	  Andrew).
	- Thomas added a number of new files to the 'csgame' library.
	- Denis Dmitriev added MoveTo method in csSprite3D that automatically
	  searches for the correct sector.
19-Jun-1999
	- Added new GetFlags/SetFlags/CheckFlags to csPolygon3D and csThing.
	  Also added CheckFlags to csLight.  This is going to be a new system
	  which I will add to many classes.  It is a consistant interface to
	  set/query boolean settings for objects in the engine.
18-Jun-1999
	- Fixed bug in shadow calculation for things. I think it is now
	  correct. This basicly means that the new lighting algorithm is
	  fully ready except for reflected light which has not been fully
	  tested yet with regards to things (and will most probably not
	  work fully) and also light frustrums which extend from a floating
	  portal.
	- Added 'L' key to autoexec.cfg. This creates a very large white
	  dynamic light which casts shadows for things. It is very useful
	  for testing dynamic lights.
	- Added creation of bounding boxes to things (csPolygonSet but only
	  used by things for now). Those bounding boxes are now also used by
	  the lighting routines to optimize lighting even more (things which
	  are not in the light frustrum are quickly rejected that way).
	- Thomas Hieber added a new DrawPolygonFX function to the 3D
	  subsystem. This is a new variant of DrawPolygon which supports a
	  number of nice and new features. Thomas added DrawPolygonFX for the
	  Direct3D, OpenGL and software (16-bit only) renderers (and stub
	  support for Glide).
	- Thomas also fixed a bug in PreparePolygon (bad triangle clipping
	  for gouraud shaded triangles).
	- Robert Bate added support for RAVE for the Macintosh.
17-Jun-1999
	- Further optimizations on the new lighting system. Reordered a few
	  relevant calculations to discover more rapidly when lighting should
	  not be done for a polygon and also eliminated having to check
	  for shadow frustrums which are not relevant.
	- Due to the previous optimizations it is now possible to enable
	  shadows for things for dynamic lights without loosing too much
	  speed. There are still more optimizations to do so I think I'm
	  going to have an option to any dynamic light so that you can say
	  if things should cast shadows or not.
	- Fixed a severe memory overwrite bug in the lighting routines
	  (dynamic AND static).
	- Add SetFlags/GetFlags to csLight to set and get flags (what did you
	  expect? :-) There is only one flag right now and that is
	  CS_LIGHT_THINGSHADOWS which indicates if the light casts shadows
	  for things. For static lights this is true by default. For dynamic
	  lights this is false by default.
	- Extended 'addlight' console command with a fifth parameter. 0 is
	  without CS_LIGHT_THINGSHADOWS and 1 is with CS_LIGHT_THINGSHADOWS.
	  So 'addlight 1,0,0,100,1' creates a dynamic light at the current
	  position with color red (1,0,0), radius 100 and which causes shadows
	  to be cast from things.
	- With this it is possible to see that the shadow calculation for
	  things is still not completely correct.
	- Thomas Hieber significantly cleaned up the 3D rasterizers so that
	  handling of texture remapping is done in a common base class
	  (csTextureMM).
	- Thomas also changed the D3D renderer to use new gamma values that
	  look much better.
	- Thomas also implemented proper color keying for sprites and portals
	  (for D3D).
	- Some changes to VC project files from Thomas as well.
16-Jun-1999
	- Added CHK macro to many 'new' and 'delete' commands.
	- Fixed memory debugger so that it works again.
	- World is deleted when quitting (this may cause crashes at exit
	  but those crashes have to be solved, not avoided).
	- Fixed small memory leak in engine texture manager (but there
	  are many more left).
	- I added a new csShadowFrustrum class which is now used by the
	  lighting routines.  This is a completely different way to check for
	  shadows for things.  I will test this new system very well and if it
	  works good I will remove the old support (like removing
	  BlockingThings).
	- I removed BlockingThings and CheckForThings to make things simpler.
	- Thomas Hieber significantly cleaned up the G3DPolygon structure to
	  make its usage simpler for all versions of DrawPolygon.
	- Thomas also changed the Windows OpenGL 2D driver to use the new
	  common OpenGL 2D code.
	- Thomas changed system.cpp to set pointer to system to NULL earlier.
	- Thomas added Win VC++ project files for MetaDemo.
15-Jun-1999
	- Applied patch from Or Siu Hang for MazeD. Changes are:
		- Zip file creation/edit/saving is enabled: You may now
		  open a zip file, edit the world, and save it in the same
		  zip or new zip file.
		- You may choose to save model in zip file or ordinary text
		  file by choosing different extension, i.e. "zip? denotes
		  zip format.
		- Portal selection make more easy by displaying only the
		  polygons in current selection.
		- Things description are put in the preamble area. Now you
		  need to add the thing statement in the sector description
		  to make it visible.
	  Known bugs:
		- If the world zip file has only one file, the program will
		  report error when updating the directory of the zip.
		- Cannot load invalid text model file, it would crash.
		  Reason: The program has no knowledge of whether the input
		  file is text or binary.
	- I changed an error to a warning for texture loading (test on
	  power of two) because MazeD will not work otherwise.
	- Denis Dmitriev fixed some bugs in halo handling and also changed
	  the looks of halos (for software and Direct3D).
	- Denis also added a cast to fix compilation on Windows.
	- Added GetShadows() function to csPolygonSet. This is going to be
	  used in the new lighting calculation routines.
	- The lighting routines also calculate shadow frustrums
	  for things now. All the calculations are present but the final
	  shadow frustrums are not yet used.
14-Jun-1999
	- Gary Haussmann added basic 2D functionality for OpenGL in a common
	  directory. Currently only the X OpenGL port uses this but other
	  OpenGL 2D drivers should be rewritten to reuse the code in
	  'openglcommon'.
	- Gary also fixed the 3D OpenGL renderer so that partially transparent
	  portals are actually drawn. He also enabled smooth shading when
	  gouraud shaded sprite polygons are being drawn.
	- Gary added CacheLightedTexture() to the OpenGL renderer for
	  situations where a texture and a lightmap must be mixed before being
	  rendered (this is non-functional currently). Certain situations
	  (namely transparent lighted portals) cannot be rendered correctly
	  with seperate texture and lightmap since the lightmap blends not
	  only the portal but also the stuff showing THROUGH the portal!
	- And Gary also fixed a lightmap cache bug. Everytime a lightmap is
	  cached it was simply compiling the lightmap and sending it to the
	  OpenGL driver. This consumed massive bandwidth even if the lightmap
	  had not changed. Now we properly check the flag set by
	  RecalculateDynamicLights() and don't reload the lightmap if it
	  hasn't changed.
	- I added unix makefiles for the new csgame library and for the
	  Crystal Shooter application from Thomas Hieber.
	- Small changes from Bruce Williams.
12-Jun-1999
	- Update to Windows documentation from Thomas Hieber.
11-Jun-1999
	- Thomas Hieber added the 'csgame' library to CVS and he also added
	  Crystal Shooter as a demo application of that library.
	- Thomas also added additional error checking to several parts of
	  WalkTest and the engine (loading textures for example).
	- Thomas fixed the windows port so that error messages are visible
	  again.
	- Thomas converted all VC project files to binary in the CVS
	  repository.
	- Thomas moved some collision detection code back to the engine
	  where it belongs (from csobject).
8-Jun-1999
	- Fixed csPolygonSet::GetPolygon so that it correctly ignores
	  objects with no name. This fixes the '-infinite' option of
	  WalkTest.
	- I added a new csCleanup class which is intended as a class
	  to which you can register memory that needs to be freed at
	  some time but for which you have no conveniant place to free
	  it. I also added a 'cleanup' vector to csWorld which is
	  freed together with the world. To this you can add temporary
	  arrays which you need for optimizations. The new lighting
	  stuff uses an array like this.
	- The new lighting system is enabled. All functions are now named
	  CalculateLighting(). ShineLightmaps() is gone. Note that this
	  new system offers NO benefits yet over the old system. It is
	  just a rewrite in order to be able to add enhancements more
	  easily which will be what I will be doing next.
	  Normally there should be no difference (neither on functionality
	  or performance) with the old system. If you notice differences,
	  please tell me.
	- Thomas Hieber added a document describing the directory structure
	  fully (dir.txt).
7-Jun-1999
	- Started integrating new csFrustrum class into the precalculated
	  lighting routines.  To that end I created a new CalculateLightmaps()
	  set of functions which will eventually replace the older
	  ShineLightmaps().  The new code is currently still disabled.
6-Jun-1999
	- Added 'dump' function in Dumper for csFrustrum.
	- Continued work on csFrustrum.
	- Patch from Denis Dmitriev so that DrawPolygonQuick does not
	  need the original pi_triangle. This is another significant
	  step towards trying to make a general polygon drawer from
	  DrawPolygonQuick.
5-Jun-1999
	- Added radius argument to 'addbot' so that an optional
	  dynamic light is created with the specified radius which
	  moves with the bot.
4-Jun-1999
	- Fix inifile.cpp to use strcasecmp instead of stricmp.
	- Added Unix makefile for MetaBalls.
3-Jun-1999
	- Started new csFrustrum class.
1-Jun-1999
	- Denis Dmitriev added MetaDemo.
	- Robert Bate added define for stricmp (for Macintosh).
	- Robert fixed problems with the palette for 8 bit color (Macintosh).
31-May-1999
	- Denis Dmitriev fixed reading of ini file so that it is case
	  insensitive.
30-May-1999
	- Thomas Hieber provided consistency concerning linking of libraries.
	  Now all project files are declared as much, not using DLL.
27-May-1999
	- FLATCOL shading works better now.
	- Michael Dale Long updated the GGI makefile so that it compiles
	  again. There is still a problem in the 2D driver though. The
	  init code needs to be moved to Initialize.
	- Increased lightmap resolution of curves. This enhances quality a lot
	  but it slows down lightmap calculation time. We need to find a good
	  trade-off here. It should also be an option specific to the curve so
	  that we can control the lightmap size differently for every curve.
	- Added FastSqrt() function which I received from someone
	  (unfortunatelly I don't remember who). This function is a lot faster
	  than the normal 'sqrt()'. FastSqrt() is currently only used in the
	  curve lightmap calculations.
	- I removed a limitation in the LightMap class for the size of
	  lightmaps.
	- Thomas Hieber fixed a small bug in the guids.cpp file.
	- Robert Bate updated the Macintosh project files. He also increased
	  the memory partition so that the created apps will run.
26-May-1999
	- Received update to MazeD from Siu-Hang <shor@cse.cuhk.edu.hk>.
	  It enables the creation of sectors and portals so that you can
	  start to edit real worlds. It is not a powerful addition in the
	  sense that there is no automatic portal generation and you have
	  to do everything manually but at least it allows to create portals.
	  There are still some problems which we are investigating.
	  He also added several other things like lights and texture
	  support.
	- Andrew Zabolotny did an update to an OS2 script (add check for
	  empty SHELL variable).
	- Robert Bate added guids for RAVE graphics on the Macintosh.
	- Robert also updated the Mac project files and did some fixes on CS.
	- Thomas Hieber further removed references to MFC from project files.
25-May-1999
	- Serguei Narojnyi (Snaar) fixed a Win32 specific bug in the sockets
	  networking driver.
	- I fixed the ndrvdemo makefile so that it works on Unix.
	- Fixed csutil.mak so that it includes the new convertor stuff.
	- Update to the lightmap precalculator from Denis Dmitriev.
	- Denis also updated the DX5 renderer to support gouraud shading
	  in DrawPolygonQuick and fixing lightmap alignment.
	- Denis fixed the fog routines for correct Z buffer test.
	- Integrated new 3D sound files from Nathaniel Saint Martin. Lots of
	  bug fixes and update for EAX from 1.2 to 2.0 sdk.
	- Thomas Hieber removed loading of standard.zip from CSLoader and
	  put it in walktest where it belongs.
	- Thomas enhanced the ds3d sound renderer to have support for proper
	  volume settings.
	- Thomas also cleaned up the rc files for VC (no MFC support required)
	  and removed some of the files in the 'res' folder.
	- Michael Dale Long added the 'cvsguide.txt' file to the documents
	  directory.
24-May-1999
	- Thomas Hieber added a new mechanism for collision detection to
	  interface to the rest of the CS engine. He uses the new
	  object hierarchy system from Ivan Avramovic.
	- Thomas also moved the logo to the right and reenabled the convertor
	  class.
	- Thomas also added range checking for fog to prevent crash.
	- Thomas renamed GetObject to GetObj to avoid problems with Windows
	  header files.
	- Michael Dale Long fixed the ndrvdemo makefile and added workaround
	  for impexp support in walktest (Windows only right now).
	- Bruce Williams added a hook for the new convertor system in
	  WalkTest.
	- Bruce Williams also split his convertor source files into several
	  smaller files.
	- Robert Bate added routines to convert a CS color to a Macintosh
	  color.
	- Robert Bate also added console support to the Macintosh OpenGL
	  2D driver.
23-May-1999
	- Added FLATCOL and GOURAUD commands to POLYGON to specify a polygon
	  which needs gouraud shading instead of texturing.
21-May-1999
	- Denis Dmitriev sent me a patch which dramatically improves the
	  quality of precalculated lightmaps. No more black borders, and
	  the shadows are much smoother! Thanks very much Denis :-)
	- Small patch to compile CS on FreeBSD from Brian Haskin.
	- Small patch from Andrew Kenneth Milton to get FreeBSD to work
	  with the OSS driver.
	- Denis reported a memory leak while looking at a curve of sprite.
	  I fixed this (memory leak was introduced by my previous patch
	  to generalize the code for triangle drawing).
	- Because bots are somewhat annoying and can cause random crashes
	  I disabled them by default. You can still enable them with the
	  '-bots' commandline option.
	- Denis added SetMousePosition support to the OpenGL/Win driver
	  (for 'freelook').
	- Windows OpenGL 2D driver also has the 2D sprite and text
	  capabilities now. But this code should be shared! Thomas Hieber
	  did this.
	- Gary Haussmann added proper support for partially transparent
	  textures to the Unix OpenGL 2D driver. He also extended the OpenGL
	  3D rasterizer to properly support the various transparent polygon
	  modes that CS has (semi-transparent textures and alpha transparency).
	- *** Release of 0.13_011 ***
	- Added support for flat-shading triangles (for curves and sprites)
	  with or without gouraud shading. Also started changing spelling
	  of gouroud to gouraud. Note that gouraud shaded polygon objects
	  still have a bug. I'm investigating this.
	- Andrew Zabolotny added 'apps' target to makefile and also did some
	  other makefile changes.
	- Andrew also started support for compiling CS on Windows (with VC)
	  using the standard makefile system. Note that Thomas Hieber removed
	  some of this work because it broke the Windows port too much.
	- Andrew also revamped support for SetMouseCursor (Windows).
	- Andrew fixed the VC assembly routines so that they compile at least.
20-May-1999
	- Various changes to the Unix OpenGL 2D driver from Gary Haussmann.
	  2D text should be much better now. He also added support for drawing
	  2D sprites.
	- Bruce Williams added an IVCON based format conversion (not
	  interfaced yet).
	- I fixed several compilation errors in libs/csutil/convertor.*
	- Unified much of the code preparing for DrawPolygonQuick. This means
	  that the code that was used to draw sprite triangles, gouraud
	  shaded triangles and curve triangles now use the same setup code.
	- Don't do the texture cache if lighting is disabled.
	- Curves, sprites, and gouraud shaded triangles are no longer lighted
	  when lighting is disabled globally. They still don't obey the
	  disabling of texture mapping though.
	- Fixed 32-bit unlighted texture mappers.
	- Maybe solved the problem with the console only appearing line
	  by line in the windows version. There were two bugs preventing
	  the fix from Andrew to work. One was in WalkTest were Andrew
	  misplaced a test. The other was in the DDraw driver which
	  incorrectly returned 'false' with the DoubleBuffer() function.
	- Fixed the SVGALIB 2D driver so that it works correctly for
	  all depths and resolutions now. The console also works
	  correctly.
	- Fixed the Unix port so that the -noshm option works again.
19-May-1999
	- Denis Dmitriev fixed the lightmap calculator so that there no longer
	  any ugly borders. Thanks Denis!!!
	- Gary Haussmann added console text support to the Unix OpenGL 2D
	  driver. He also fixed the Clear() function.
	- Michael Dale Long fixed the Unix Glide, OpenGL and X 2D drivers to
	  support mice with more than 3 buttons.
	- Update to INSTALL.Win from Thomas Hieber.
	- Ivan Avramovic patched the x2d driver so that there is no longer
	  an error when opening the window offscreen. He also fixed a memory
	  leak when using XSHM.
18-May-1999
	- Started adding csVolume class to csgeom to help lighting routines.
	- Fixed LOD vertex morphing for sprites. It was broken (which caused
	  the top of the bots to be removed).
	- Small fix for lightmap calculation for curves. The lightmap was
	  not properly initialized to black before being filled in.
	  This should cause the garbage in the lightmaps to be removed but
	  it does not solve all the lightmap problems yet.
	- Finally fixed sprite triangle drawing. The fix is not perfect yet
	  but at least the triangles look fine in all cases. I have to ask
	  Andrew to have a better look at this.
	- Included patch from Denis Dmitriev to help continue development
	  of planed fog. It is not yet fully correct though so it is not
	  enabled.
	- Patch from Thomas Hieber to MazeD (he received it from someone
	  else). This patch reenables loading and saving and thus
	  makes it more useful. Note that the loading and saving is
	  still not fully ok (there is a memory leak and saving saves
	  to a world file and not the zip file).
	- Robert Bate added CodeWarrior projects for the Macintosh
	  port.
17-May-1999
	- Patch from Andrew Zabolotny:
		- Fixed CSWSTEST and added some features to have a better
		  test suite for the 2D drivers.
		- Bugfix in CSWS when mouse is grabbed and button is
		  not pressed.
		- Changes to OS/2 script and some other OS/2 changes.
		- Modified GetTransparent methods to return a bool
		  instead of integer. Also fixed transparent color handling
		  in textures for 16bpp and 32bpp. 0 in transparent textures
		  means transparent. Opaque black color is replaced
		  by a very very dark color.
		- Fixed all DrawSpriteXX routines to use 0 as transparent
		  color. Also unified the code of all DrawSpriteXX routines
		  to make it easier to modify them.
		- Renamed mkdir to MKDIR to avoid conflicts with system
		  include files.
		- csRect should inherit from csBase. csBase has now moved
		  to include/csutil/csbase.h.
		- Some cleanup.
		- Fixed 'make depend' to work again.
	- Thomas Hieber fixed a nasty bug in the console.
	- Update to Macintosh port from Robert Bate. He made some changes
	  to make adding OpenGL support for the Mac easier.
16-May-1999
	- Gert Steenssens fixed Linux Glide driver with a temporary fix
	  for WriteChar problem.
	- Bruce Williams started work on a faster DX driver which makes
	  best use of the new StartPolygonQuick function. Nothing
	  functional yet.
15-May-1999
	- Thomas Hieber fixed his logo code so that it doesn't crash if
	  the logo can't be found.
14-May-1999
	- Fix so that config.mak is replaced and not appended too.
	- Precalculated lighting also works through portals on things now.
	  This was not the case earlier.
	- Increased speed of walking forward with the left mouse button.
	- Implemented lighted curves using lightmaps. A lightmap is
	  generated and calculated for every curve. The cache works (i.e.
	  curve lightmaps are also saved on disk like polygon lightmaps).
	  The lighted curves seem to work very well but the following
	  things are missing:
	  	- Lightmaps always have fixed size of 16x16 (not 16x16 pixels
		  for every lumel.  The complete lightmap is 16x16).  This is
		  easy to fix but I should try to find a good size for
		  lightmaps.
		- There are no shadows yet. The curve is lighted according
		  to all lights that are near enough but shadows are ignored.
		- No dynamic lighting yet.
		- Curves don't listen to the 'textured' and 'lighted' flags
		  to disable texture mapping and lighting.
	- Fixes from Andrew Zabolotny to 'make depend' (not completely ready
	  yet). Rename of COLOREDBG to TRANSPBG in cryst.cfg. Several fixes
	  to console as well (it should now work well on double buffered
	  displays).
	- Thomas Hieber added a startup logo to WalkTest.  It does not look
	  very well currently because of a bug with transparent textures in
	  the 2D driver.  Note that you need a new 'standard.zip' for this.
	- Michael Dale Long changed cs.mak to add sound support for Linux.
13-May-1999
	- Ivan Avramovic fixed a bug causing segfaults when deleting
	  copied csObjects. He also added documentation to several files
	  in the csobject library.
	- Thomas Hieber added gamma correction for lightmaps and textures.
	  This will make everything brighter to give it a look comparable
	  to 2*SRC*DEST. Also removed some warnings and fixed the project
	  files to add triangle.*.
	- Patch from Gert Steenssens to fix problems with Glide
	  crashing (DrawLine/DrawPixel methods added).
	- Fixes to Macintosh port from Robert Bate.
12-May-1999
	- Andrew Zabolotny did various changes: update to OS/2 drivers
	  section, add autodetect of " and "pipe" variables. Changes in
	  csdive.
	- Added changes to BeOS port from David Huen.
11-May-1999
	- Added support for flat texture mapping in 32-bit mode. Enhanced
	  speed of 8-bit flat texture mapper. Also added support for flat
	  texture mapping based on lightmap lighting.
	- Lighting and texture flag now work as expected. The 'texture'
	  flag enables flat texture drawing in all display modes. The
	  'lighting' flag enables/disabled lighting also in all display
	  modes and also works with flat texture drawing enabled.
	- New networking code from Serguei Narojnyi.
10-May-1999
	- Texture mapping toggle works again (it was broken).
	  (use the 't' key).
	- Considerably increased speed of the untextured scanline drawer.
	  I'm planning to use the untextured scanline drawer automatically
	  as soon as a polygon is less than 3x3 pixels large (maybe distance
	  is important too?).
9-May-1999
	- Experimented with DrawPolygonDirty routine which is a quick
	  and dirty version of DrawPolygon. It is faster but not that
	  much. And there is a lot of extra code to manage so I decided
	  not to keep the code. Instead we will be doing other things
	  (see 10-May).
7-May-1999
	- Added StartPolygonQuick() and FinishPolygonQuick() to the 3D
	  rasterizers. With those functions it is possible to start
	  a series of triangle drawing more efficiently. The functionality
	  common to drawing a lot of triangles with one texture is put
	  in StartPolygonQuick(). For the software renderer this will only
	  give small benefits but the advantages may be bigger for the
	  hardware accelerated drawers. I already enhanced the OpenGL
	  rasterizer to take advantage of this. I hope this will make
	  a big performance difference.
	  I also added dummy functions for StartPolygonQuick() and
	  FinishPolygonQuick() to the Glide and Direct3D rasterizers. The
	  respective managers should try to make the best use of them.
	- Implemented LOD morphing so that LOD switching is really very
	  smooth now.
	- Some fixes to BeOS port from David Huen.
	- Fix to FreeBSD makefile from Brian Haskin.
	- Applied fix from Thomas Hieber to fix various things for the
	  Windows port. He also fixed MazeD upto the point that it compiles
	  and runs again (at least in software mode/16-bit color).
	  However, I could not get it to run on Unix. It still crashes.
	- Update to Macintosh port from Robert Bate (fixing things).
6-May-1999
	- I seperated the triangle code in csengine/basic/triangle.*. LOD
	  will now operate on general triangle meshes and will no longer
	  depend on sprites.
	- Various small fixes from Charles Duffy <cduffy@bigfoot.com> (mostly
	  removal of warnings).
	- New LOD algorithm based on progressive meshes works! Added 'lod'
	  console command with which you can set the LOD factor for all
	  sprites (no distance checking currently).  A negative 'lod' factor
	  disables the feature and goes back to the old behaviour.  0 means
	  that nothing will be drawn.  1 means that everything will be drawn
	  (but using the LOD algorithm).  Note that sydney looks reasonable
	  even at .5 (50% of all vertices used).  Better looks are possible
	  because my cost function is currently still primitive (only looks at
	  the size of the edge to collapse).
	- Reassigned old behaviour of '=', '[', and ']' keys to '+', '{',
	  and '}' (debugging functionality). Instead '=', '[', and ']'
	  can now be used to control the lod factor while looking at a
	  sprite.
5-May-1999
	- Added flag BUGGY_EGCS_COMPILER in user.mak to enable a bug fix
	  from David Huen. This fix is for egcs versions 1.1.2 and 1.1.3.
	- Update to Mac port from Robert Bate. He adds Glide support for
	  the Macintosh.
	- *** Release of 0.13_010 ***
4-May-1999
	- Integrated patch for BeOS from David Huen <smh1008@cus.cam.ac.uk>.
	- Integrated fixes to Windows/Direct3D and Windows/OpenGL port from
	  Nathaniel Saint Martin.
	- Patch from Thomas Hieber on the Windows port. He implemented
	  SetMousePosition for Windows (so you can use 'freelook'). Various
	  changes to all 3D rasterizers (software, OpenGL, Glide, and
	  Direct3D). Range checking with fog in software mode (to prevent
	  crash). New project files for Windows as well (dll's are generated
	  in cryst. Removed references to absolute local paths. Made release
	  build workable again. Removed all warnings except for one).
	- Gert Steenssens fixed Linux Glide makefile so that it works.
	- Fixed makefile so that it will correctly compile the DJGPP
	  assembly stuff.
	- Large patch from Ivan Avramovic with the following changes:
		- A new csObject design based around the concept of a
		  generic csObject, which can hold any number of csObject
		  children within a subobject tree.  Some of the primary
		  benefits that I've drawn out of this new scheme so far
		  include: adding any number of arbitrary (possibly
		  non-engine related objects to a csObject), naming of
		  csObjects as needed, completeness on the csObject
		  library (a new library in CS), first step towards
		  untying the csScript from the engine (improved
		  scripting interface), ...
		- Some other cleanup changes also related to dependencies
		  between libraries/modules.
		- General cleanup.
	- Patch from Andrew Zabolotny on makefile system. This patch
	  should make it easier to use the makefiles on systems which
	  don't have a unix shell (like DOS).
26-Apr-1999
	- Received new patch to OSS (Linux) sound driver from Norman
	  Kramer (via Gert Steenssens). It doesn't use shared memory,
	  semaphores and a forked process.
	- *** Release of 0.13_009 ***
	- Optimization in DoPerspective.
	- Put the basic LOD stuff in place. It does not work correctly though.
	- LOD works. I still have to integrate it correctly in the engine.
25-Apr-1999
	- Integrated patch from Ivan Avramovic with general cleanups for
	  the loader (he removed some unneeded includes and some other
	  stuff).
	- Integrated patch from Gert Steenssens and Norman Kramer to
	  Linux sound driver (OSS).
	- Integrated patch from Gert Steenssens on the Linux Glide port.
	  Glide is now fixed with the new texture manager. Glide can now
	  also run in windowed mode on X (with FULL_SCREEN configuration
	  value in 'cryst.cfg'). This is slower however.
	- Also small fix to playing of sound code from Gert Steenssens.
	- Integrated new project files for Windows VC++ from Thomas Hieber.
	- Received update to Macintosh port from Robert Bate.
	- Received a small routine from Andrew Zabolotny to control the FPU
	  control word. Using that I can enable more FP exceptions on Linux
	  (like division by zero). I executed the application but could not
	  immediatelly find any exceptions. However, this remains a useful
	  debugging tool when people report strange errors on DJGPP again.
	- Fixed bug in csBoxClipper. Thanks to a demo program that
	  Seth Galbraith sent me I discovered and fixed this bug.
	- Did some work on LOD for sprites. It is not functional yet.
24-Apr-1999
	- Fixed bug with triangle drawing. Now triangles (used on skydomes,
	  sprites, curves, ...) are correctly clipped. However, I'm not
	  satisfied with my current solution. We need more work here.
	  As a consequence of this fix, the falling cubes in the
	  Blocks game look good in all cases.
23-Apr-1999
	- Fixed bug in fog (software rendering). There could be overflows
	  in some of the lookup tables. In order not to compromize speed
	  I added a buffer of 20 extra lookup entries in front of
	  the table. Thanks to Robert Bate for finding out what the
	  bug was all about.
22-Apr-1999
	- Fixed bug in lighting routines. If you had a light source
	  on EXACTLY the same plane as a polygon then it could happen
	  that the polygon got lighted even though it really should not
	  have been lighted.
	- Extended statistics so that number of sprites and curves is
	  also counted and the number of polygons is correct (polygons
	  in Thing templates were not counted).
21-Apr-1999
	- Added error checking (at load time) on portals that go to
	  unknown sectors.
20-Apr-1999
	- Fixed bug in 32-bit gouraud shader. There was an overflow
	  for lights that are too bright. There is still a problem though.
	  On systems which don't group RGB as such the colors are wrong.
	  Therefore we need to do a conversion before calling the
	  gouraud shader.
19-Apr-1999
	- Implemented support for up-side-down skydome (negative radius).
	  There is still a small problem: the vertices have to be specified
	  shifted. This should be fixed in the code.
18-Apr-1999
	- Did some additional work on planed fog.
17-Apr-1999
	- Fixed bug in loading of sprites (it simply didn't work).
16-Apr-1999
	- Received new patch from Ivan Avramovic which further improves
	  the csgeom library.
	- Added new project files for Windows from Thomas Hieber. He has now
	  updated nearly all project files. A few missing ones are Csws and
	  MazeD. He also fixed some of the Windows specific files so that they
	  compile.
	- Converted all WireFrame and collision detection classes to new
	  naming convention.
	- I tried the windows version myself and finally got it running.
	  I modified the project files a little to make this possible.
	- *** Release of 0.13_008 ***
15-Apr-1999
	- New fixes to Glide from Gert Steenssens. Note that Glide is still
	  not functional. It will probably not compile because I could not
	  merge makefile changes from Andrew and Gert. But even if it would
	  compile it will not work because Gert has not finished yet. Have
	  a little patience.
	- I also moved hicache.* and hicache2.* from common to glide as only
	  glide uses this. It is a pity that there isn't some common base
	  for all HighColor caches that are used by Glide, OpenGL, and
	  Direct3D. I should think that it should be possible to find common
	  functionality here and put it in a base class.
	- Support for planed fog nearly finished. However, I cannot use it
	  because we're still investigating bugs in the plane intersector
	  routine.
	- Received patch from Denis Dmitriev to fix his console.
	- Denis also implemented a new bilinear filtering routine which looks
	  EXTREMELY nice.  It is also reasonably fast although possibly not
	  suited for real-time games for the moment.  The routine only works
	  in 16-bit mode (NOT 15-bit!) for now and there appears to be a small
	  problem with colors (but it still looks beautiful).
	- I improved on the patch from Denis to make the console a lot
	  faster (so that I can actually use the new progress bar).
	  The difference is enourmous. Especially on systems that have
	  a slow copy from memory to the video buffer (like X11 without
	  SHM extension).
	- I also added a '-bifilt' commandline option for the software
	  renderer to enable this new feature.
	- Added new project files for Windows from Thomas Hieber. The project
	  files are not complete yet (he finished: com, DirectDraw2D,
	  NetworkDriverNull, NetworkManagerNull, SoftwareRenderer, cspace,
	  SoundRendererNull, SoundRendererSoftware, and walktest).
	- I moved the csTables class (containing various lookup tables) to
	  the software renderer since all those tables are currently only
	  used there. If there is a need for having lookup tables outside
	  the software renderer then we'll have to reconsider this. But for
	  now this will do.
	- Semi-transparent textures (textures with holes) work again but there
	  are a few problems. They don't work in 32-bit mode yet (not
	  implemented yet) and they only work at mipmap level 0. It appears
	  that something is wrong with maintaining transparancy at mipmap
	  levels > 0.
	- Ok, I fixed the above bug. The software renderer correctly takes
	  transparency into acount when mipmapping textures.
	- Fixed bug which could cause crashes when viewing curved surfaces.
	- Renamed all csSprite3D classes (csFrame, ...) to standard
	  naming convention for methods.
	- Changed LightView and RenderView to new naming convention.
	- Converted ThingTemplate and PolygonTemplate to new naming convention.
	- Converted csObject, csObjectTrigger, and Library to new naming
	  convention.
	- Converted LightMap and all related classes to new naming convention.
	- Converted csCollection to new naming convention.
	- Converted PolyTexture and PolyPlane to new naming convention.
	- Converted all the csCurve classes to new naming convention.
14-Apr-1999
	- Patch from Ivan Avramovic to clean up the csgeom library.
	- I had to disable the console patch from Denis Dmitriev because it
	  was too slow for me (screen is updated too often).
	- Added first support in the 3D engine for planed fog.  Now I have to
	  add this support in the 3D software rasterizer to see if it works
	  well.
13-Apr-1999
	- Patch from Andrew Zabolotny with the following changes:
		- CSWS works again in 16-bpp mode (with some visual artifacts).
		- Some changes elsewhere related to CSWS.
		- Several changes to makefiles again (this is a hobby of
		  Andrew :-)  Andrew also added a document (docs/Makefile.txt)
		  explaining the makefile system. This is an essential read
		  if you're a port maintainer.
		- "make depend" now will rebuild only dependencies for
		  components that have been changed, for example if you didn't
		  changed MazeD sources, $(OUTOS)/MazeD.dep won't be rebuilt
		  (unless it is missing). To clear dependenciy files do a
		  "make cleardep".
		- Started MazeD cleanup. For beginning, I've removed csToolBar
		  class and moved all toolbar functionality into csDialog; now
		  toolbars are a particular case of regular dialogs. Also I
		  have split several MazeD source files into many small pieces
		  for modularity.
	- Fixed overflow bug in console patch from Denis Dmitriev.
	- Update to Macintosh port from Robert Bate.  It now functions
	  correctly with the new directory structure.
12-Apr-1999
	- Fixed compilation bug in SVGALIB 2D driver.
	- Reorganized fog drawing so that every object (sector or thing)
	  is responsible for drawing its own fog.
	- Fixes to DOS version.
	- Fix to Windows SetMouseCursor from Serguei Narojnyi (Snaar).
	- Integrated patch from Denis Dmitriev with the following changes:
		- Progress bar (text mode) for lighting at startup.
		- Some other console changes.
		- Mouse support in DOS changed.
		- Modified WalkTest so that movement is time-correct.
		- Accelerated fog a little (not much but every bit counts).
		- Fixed behaviour of printf. This is important for port
		  maintainers which have a printf implementaton other
		  than cssys/general/printf.cpp. Denis changed the DOS
		  port himself.
		- Enhanced texel filtering. It works correctly in 8-bit
		  mode now and only for non-mipmapped texture (looks
		  ugly for mipmapped textures).
10-Apr-1999
	- Seperated csparser from csengine. The engine is now independent
	  of the parser while the parser uses (and requires) the engine.
	- Added fog capabilities to the 3D rasterizer. The 3D rasterizer
	  can now specify wether it supports Z buffered fog (like the
	  software renderer does) or else planed fog. Added GetFogMode()
	  and SetFogMode() to all 3D rasterizers. This is all it does
	  currently. The 3D engine does not yet supported planed fog
	  and none of the 3D rasterizers support it either. Only the
	  framework is there.
9-Apr-1999
	- Finally found a VERY severe bug in the X port. It was actually
	  a bug in the new makefile system.
	- Converted Polygon2D to csPolygon2D and new naming convention.
	  Also moved csPolygon2D definition to new include file (pol2d.h).
	- Converted Thing to csThing and new naming convention.
	- Converted Portal to csPortal and new naming convention.
	- Received patch from Andrew Zabolotny with the following changes:
		- Some changes to 2D driver for registering textures.
		- SetMousePosition() for OS/2 and DOS. This should make
		  the 'freelook' command functional.
		- Removed exit_clean() from Be and Unix system drivers.
		- Andrew also fixed the bug with the X drivers :-)
	- Received patch from Michael Dale Long for the Glide renderer.
	  It is a first patch and things will probably not work right
	  out of the box. Expect more to follow.
	- A few fixes from Cubesoft.
	- *** Release of 0.13_007 ***
	- First steps of seperating csparser and csengine. csparser will
	  use csengine to built a world but csengine will not depend on
	  csparser anymore. In fact you should be able to plug-in any
	  parser and let it use the csengine API to built worlds.
	  This would make it easier to write stuff like 3DS loaders.
8-Apr-1999
	- Fixed SVGALIB driver makefile so that it works again.
6-Apr-1999
	- Small fixes to windows version from Sylvain Rochette.
	- Patch from Andrew Zabolotny with various cleanups and also
	  some fixes for CSWS (not ready yet). MazeD is also still broken.
	- Fixed VERY severe bug with a faulty definition of ABS. This
	  caused various parts of Crystal Space not to function or function
	  very weird. This bug was introduced in 0.13r006.
	- Kludge-patch from Ivan Avramovic to fix the drop in the hole
	  in large.zip (collision detection).
	- Added patch to networking drivers from Serguei Narojnyi (Snaar).
	  He also added html documentation for his drivers (look at
	  docs/csnetdrv.html).
	- Converted Polygon3D to csPolygon3D and new naming convention.
	- Fixed makefile for OSS driver.
	- Fixed makefile for networking. NEED_SOCKET_LIB undefined.
5-Apr-1999
	- In the past PolygonInt and PolygonParentInt were ment for using
	  with multiple inheritance. Someone removed this apparantly. I
	  reintroduced it because I need to seperate csgeom from csengine.
	- PolygonInt and PolygonParentInt are renamed to csPolygonInt
	  and csPolygonParentInt.
	- Received patch from Andrew Zabolotny completing his large makefile
	  patch. Here is a summary of his changes:
	  	- Component-based makefile system.  Every component or library
		  has its own sub-makefile which is located together with the
		  component itself.  The only makefiles which remain in
		  mk/system are the system dependent global makefiles (like
		  linux.mak, os2gcc.mak, djgpp.mak, ...)
	  	- New DO_AIFF, DO_IFF, DO_AU, and DO_WAV flags in user.mak
		  to control what
		- Various files have moved to better places.
	- I did my largest API change yet. I renamed Vector3, Matrix3, Plane,
	  and a few others to csVector3, csMatrix3, ... and also renamed all
	  their methods to the NewNamingConvention().
	- Fix from Ivan Avramovic for some weird perspective project error
	  (EXTREMELY rare, Ivan could not even reproduce it).
	- *** Release of 0.13_006 ***
3-Apr-1999
	- Changed some static fields into non-static fields. This is better.
	- Fixed bug in reading of config file through ISystem interface.
	- New 'maxpol' command to set/get the maximum number of polygons that
	  is drawn every frame.  Normally this is set to a very high number so
	  that this maximum is never reached (2000000000 polygons every frame
	  should suit everones need for the near future :-) You can reduce
	  this number for debugging purposes.  In combination with 'fclear'
	  and binding a keys to 'maxpol ++1' and 'maxpol --1' you can get the
	  effect of drawing one polygon at a time.
2-Apr-1999
	- Changed all csLight methods to the new convention.
	- Received large patch from Andrew Zabolotny with his first work
	  on the new makefile system which properly works with the new
	  directory structure. This is unfinished business.
1-Apr-1999
	- Some work on the tutorial. The first tutorial is finished.
	- Patch from Ivan Avramovic to solve the problem with reflected light
	  not being correctly blocked by things.  This patch should make
	  pseudo-radiosity almost useful.  It is still not completely
	  functional though because 'check_for_things' does not correctly
	  acount for reflection on non-portal thing polygons.
	- Changed all csSector methods to the new convention. Also changed
	  PolygonSet to csPolygonSet and changed all csPolygonSet methods
	  to the new convention. Added both to the API.
30-Mar-1999
	- Patch from Ivan Avramovic to put the Visual C++ specific assembly
	  in a seperate file so that it no longer clutters the math
	  include files.
	- Another patch from Ivan which fixes a very rare clipping bug
	  which could cause polygons to be clipped away when visible.
	- Started work on tutorial. It is only a beginning but have a look
	  at docs/tutorial.html.
	- Small COM related fix to OpenGL renderer from Nathaniel.
	- *** Release of 0.13_005 ***
29-Mar-1999
	- Small change in loading of windows icon (as grabbed from the
	  mailing list :-)
	- Fix to Linux sound driver from Gert Steenssens.
	- Fixed deletion bug in PolygonSet. Two arrays allocated with 'new[]'
	  were deleted with 'delete' (and not with 'delete[]').
	- Denis Dmitriev gave me a new intersector routine for polygonset
	  which I will use to implement fog in a hardware compatible way
	  (whenever I get around to doing that :-)
	- Received update to the Macintosh port from Robert Bate.
28-Mar-1999
	- MAJOR change in the directory structure. This change helps make
	  the distinction between all the seperate packages/components
	  of Crystal Space. Except for all the project files everything
	  should almost work. I modified all source files to get the new
	  include files at the right place but I may have made some
	  mistakes in those source files that I cannot test.
26-Mar-1999
	- Added configurator object to the 3D engine which the system
	  driver will also use to drive commandline options and so on.
	- All praise Ivan Avramovic! :-)  He fixed two bugs in one go.
	  First he fixed the bug with the portals not being clipped
	  correctly when to close to the portal (causing part of the
	  screen not be redrawn). And then he also fixes a related bug
	  which could causes dirty crashes when viewing polygons in
	  rare cases.
	- Nathaniel sent me a large patch containing the following:
		- Fix of VisualC project files.
		- Add ds3d and EAX sound renderers.
		- Fix a3d sound renderer.
		- Fix linux sound driver.
		- Fix Direct3D (DX5) driver.
		- Fix DirectDraw2D driver.
		- Fix OpenGL2D driver for Windows.
	- Robert Bate send me a new patch for the Macintosh port which
	  fixes the Mac sound drivers.
	- *** Release of 0.13_004 ***
	- Added routine from Denis Dmitriev <mrsigma@mail.quik.com> to
	  split a convex polygonset into slices parallel to the view plane.
	  I'm going to use this routine for implementing volumetric fog
	  in a way suitable for the hardware renderers.
25-Mar-1999
	- Did various cleanups in the code. All related to having a
	  3D engine library which is cleanly seperated from the system
	  dependent stuff and the 3D/2D drivers.
	- Patch from Andrew Zabolotny to fix the OS/2 port.
	- Update to macintosh port from Robert Bate.
	- Completely rewrote the 'simple' application (based it on
	  Blocks) to be useful as the reference tutorial CS application.
	  If you want to know how to use CS from your application then
	  'simple' is the way to go :-)
24-Mar-1999
	- Created halo.h from world.h.
	- Updated doc++ documentation in csWorld.
	- Removed the global Gfx2D and Gfx3D defines.  The 3D rasterizer is
	  now a parameter to all 3D functions that require it.  This is better
	  practice and should make it easier to use csWorld for multiple 3D
	  rasterizer at the same time (although this is untested).
	- Removed dependency on system/system.h from the engine code. The
	  plan is that all system dependent stuff belongs to the application
	  code and the engine should not have to use it unless through the
	  ISystem interface.
23-Mar-1999
	- Renamed render files for OpenGL and Software to a more consistant
	  format.
	- Moved csTextureMM to the general texture manager and provided
	  3D rasterizer specific subclasses (csTextureMMSoftware and
	  csTextureMMOpenGL).
	- Greatly simplified the OpenGL and software texture managers
	  by removing obsolete stuff and moving common stuff to the
	  csTextureManager superclass.
	- Fixed Blocks again.
	- *** Release of 0.13_003 ***
	- Added 'freelook' command (boolean). With this command you can
	  enable a freelook like in Quake where the mouse looks around.
	  This command has been bound to the '\' key. Press it once to
	  enable freelook. Press again to disable. Thanks to Leslie
	  Saputra for giving me the code to do freelook. I made his
	  code more general. Note that I had to add a SetMousePosition
	  function to IGraphics2D. Only the Linux port supports this
	  (including the OpenGL renderer). So if you want to see this
	  effect you need to add SetMousePosition support for your
	  platform.
	- Mouse button one moves forwards (works very well in combination
	  with 'freelook'). The old usage of mouse button one (z buffer
	  testing and hilighting of selected polygon) has moved to the
	  right button.
	- Removed delta tracking of software renderer which was only
	  useful for debugging (and was broken anyway).
	- Changed csCamera class to new method naming convention.
	  Also augmented the online documentation (Doc++) format.
	- Added new 'api' target to the makefile. This target will create
	  the API reference document in Doc++ format (HTML). It is basicly
	  a subset of the complete auto-documentation but contains only
	  the classes which are useful for using from Crystal Space
	  applications.
	- Split geometry/math3d.* into geometry/math3d.* and
	  geometry/transform/*
	- Renamed Transform, ReversibleTransform, and OrthoTransform
	  to cs... and renamed all methods to the new naming convention.
	  The Transform classes also speak about 'other' and 'this'
	  space instead of 'world' and 'this'.
22-Mar-1999
	- Implemented IConfig interface which COM modules can implement as a
	  composite COM object to have user-settings which the application can
	  query.
	- Added 'Initialize' method to IGraphics2D and IGraphics3D. This means
	  that the constructor is not allowed to do anything graphics related
	  except open other needed COM drivers. The code previously in the
	  constructor is now in Initialize. I already changed the software
	  renderer and the X11 2D driver but nothing else.
21-Mar-1999
	- Fixed virtual function call in OpenGL renderer by moving 'Clear()'
	  from the parent destructor to the child destructors for the texture
	  and lightmap caches. unfortunately this results in a new bug
	  which I have to investigate further.
	- Made common csTextureManager super-class for
	  csTextureManagerSoftware and csTextureManagerOpenGL.  I still have
	  to move all common functionality there.
20-Mar-1999
	- Decoupled texture manager from 3D driver. That way it can be
	  used more easily as a standalone module for the 2D driver.
19-Mar-1999
	- Added support for 2D driver textures in texture manager. Now,
	  when registering a texture to the texture manager you have to
	  say if you want to use it for 3d and/or for 2d.
	- I fixed csws so that it compiles (untested).
	- I tried to fix MazeD but I failed. Andrew Zabolotny will have
	  to do this.
	- I've done a cleanup of the code based on the main() routine
	  in WalkTest. I tried to make this code as easy and readable
	  as possible. As a consequence I had to change some things in
	  the engine itself.
	- I moved cs3Dview from general to engine and renamed it to
	  csView. In other words: I promoted the class to a real 3D engine
	  class.
	- Removed dependency of ICamera interface from Graphics3D.
	  The camera is a 3D engine concept and the 3D rasterizer should
	  not worry about this. However, the 3D rasterizer needed the
	  FOV from the camera. I now communicate this value in G3DPolygon.
	- Fixed 2D sprite drawing but I could not test it because MazeD
	  is still broken and that's about the only thing that uses
	  2D sprites right now.
	- Removed all MultiSectorObject mess. Now I use csObjVector instead.
	  This is slightly (but only slightly) less efficient but a LOT
	  easier to maintain and understand. Note that the current
	  implementation is still a bit naive. It can be optimized further.
	  But first a clean API :-)
	- Renamed all csWorld functions to the NewNamingConvention.
	- Fixed the OpenGL renderer so that it works again. However, I just
	  used to software texture manager. This is of course overkill.
18-Mar-1999
	- To make things easier and more consistent I removed support
	  for the fast_wxx mixing modes in 8-bit.
	- Renamed TextureMM to csTextureHandle. This class represents the
	  link from the named texture in CS to the ITextureHandle reference
	  as returned by ITextureManager.
	- Renamed Textures to csTextureList.
	- Removed IWorld interface since it is obsolete now (should be
	  rewritten later using IDL).
	- Fixed infinite maze so that it works using the new texture manager.
	- Fixed Blocks so that it works using the new texture manager.
17-Mar-1999
	- Added 8-bit simulation in 32-bit display mode for X11 2D driver.
	  Also added 15/16-bit simulation in 32-bit display mode, 15-bit
	  simulation in 16-bit mode and 16-bit simulation in 15-bit mode.
	  This completes all possible permutations of simulated mode.
	- For testing purposes I extended the 'addlight' command so that
	  you can give parameters. For example 'addlight 1,0,0,100' will
	  add a red light with radius 100 at the current position.
	  'addlight' without parameters will still add the random dynamic
	  light that moves up and down.
	- Continued move of Textures class to 3D rasterizer (pfff... this
	  is a LOT of work).
16-Mar-1999
	- Continued work on moving texture management to 3D rasterizer.
	  The big moment is almost there. Already the software renderer
	  doesn't use the old classes anymore. I also started to delete
	  the old classes.
	- Moved ambient light settings from the Textures class to the
	  csLight class where they fit better.
	- Added read_config() method to csWorld to read all 3D engine
	  specific configuration values. This cleans up some initialization
	  in the main routine.
15-Mar-1999
	- Continued work on moving texture management to 3D rasterizer...
	- Received and integrated a patch from Andrew Zabolotny with the
	  following changes:
		- Moved com/dummy.cpp into system/unix. This is a
		  *Linux-specific* problem, not even sure its a problem for
		  *all* flavours of Linux. Its a bug.  Why it should reside
		  in common source tree? Now this file is referenced only
		  from linux.mak (added to S_SYS_DLL variable); if someone
		  needs it (s)he should do similarily. If someone on other
		  (from Unix) system will encounter same problem, although
		  I doubt it, we'll move it to the system/ directory (but
		  not to COM since its not COM-specific).
		- New directory: mk/scripts/
    		  Added a configuration script common for all Unix flavours.
		- Split djgpp.mak into two, new file: raw2d.mak for 2D driver.
	- *** Release of 0.13_002 ***
14-Mar-1999
	- Continued work on moving texture management to 3D rasterizer...
13-Mar-1999
	- Continued work on moving texture management to 3D rasterizer...
12-Mar-1999
	- Moved graph3d.* to software as it is for the software renderer
	  only. Merged all software, softw16, and softw32 directories
	  into software.
11-Mar-1999
	- Continued work on the ITextureManager interface and the
	  software implementation. Added a few new GUIDs for general
	  use.
10-Mar-1999
	- Applied forgotten patch for A3D support (3D sound)
	  from Nathaniel.
	- Continued work on the ITextureManager interface and the
	  software implementation.
9-Mar-1999
	- Added patch from Norman Kramer to fix the Linux sound driver.
	- Added two project files for OS/2 from Andrew Zabolotny to fix a
	  problem with compiling the network drivers.
	- Started moving Textures class to 3D rasterizer. This movement
	  is 'soft'. I intend to keep the original Textures class functional
	  for as long as possible while implementing all functionality in the
	  new csTextureManagerSoftware class (through the ITextureManager
	  interface).
	- To easy this transition I started cleaning up the Textures and
	  TextureMM classes. The creation of mipmaps is now done in ImageFile
	  instead of TextureMM. This is slightly less efficient but a LOT
	  easier to maintain and it makes code cleaner.  Since this is only
	  done at startup the speed problem is not that big (I don't even
	  notice it).
8-Mar-1999
	- Nathaniel blindly ported Linux and Macintosh sound to the new sound
	  system.  It will probably not work as such but it is a start for
	  porting.  The old files are NOT deleted.  They are kept for
	  reference.  The guids for CLSID_OSSSoundDriver and
	  CLSID_MacSoundDriver need to be added as well.  I already added
	  three new makefiles (mk/system/sndrdrn.mak, sndrdrs.mak, and
	  snddrvn.mak) for the NULL sound driver and renderer and the software
	  sound renderer.  A similar makefile will need to be added for the
	  Linux native driver.
	- Added code from Ayal Pinkus which comes one step closer to lighting
	  the curves. There is no actualy lightmap support yet.
	- *** Release of 0.13_001 ***
5-Mar-1999
	- New patch to BeOS from Xavier Pianet.
	- New 3D sound system from Nathaniel. He considerably rewrote his
	  sound system to use COM. As a consequence the Linux and Macintosh
	  ports will be broken (because of the broken sound code).
4-Mar-1999
	- Patch from Gert Steenssens to fix the Glide port. Now it also
	  has correct lightmaps like the OpenGL port!
	- *** Release of 0.12_003 ***
3-Mar-1999
	- Patch from Eric Sunshine with a fix on the bots. There are cases
	  where the bots could crash Crystal Space. Also some small changes
	  to the NeXT ports.
	- Update to csall.dsw (VC5 project file) from Jason McKnight. The
	  correct dependencies for MazeD are added so that MazeD can compile
	  out of the box.
	- New project files for VC5 from Bart van Langen.
	- Update to DDG from Alex Pfaffe (in contrib).
2-Mar-1999
	- Small fix in csws/cswsutil.cpp.
	- Removed MSG_WARNING call from general/loader (curved surfaces)
	  because MSG_WARNING gives problems in fullscreen Windows.
	- Added two GUIDS from Xavier Pianet for BeOS.
	- Patch from Eric Sunshine to integrate Blocks with the main code.
	  Although Blocks was intended as a demonstration for a seperate
	  program, at this moment it is probably better to include it with
	  the distribution like this because this makes it more accessible
	  to others and shows a good example of CS usage.
	- New project files from Vyacheslav Chupyatov for Watcom C++/Windows.
	- *** Release of 0.12_002 ***
1-Mar-1999
	- Small fix from Eric Sunshine to the sockets code.
	- Small patch from Andrew Apted to the GGI code. He renamed
	  ggi2d.so back to csggi2d.so because there is already a library
	  called libggi2d.so.
	- Small fix from Dmitry Derevyanko so that the X11 port first
	  tries a visual with the same depth as the display. Only then
	  will it try other visuals.
	- Patch from Robert Bate with new project files for the Macintosh
	  port and a little fix to the texture cache.
	- Small fix in Glide port from Gert Steenssens. This fixes a bug
	  with textures which use 1/x aspect ratio.
	- Updated the INSTALL.* documents.
	- Removed OS/2 install document because it is outdated. Copied
	  some relevant parts of the document to NOTES.OS2.
	- Patch from Norman Kramer on config section in linux.mak. I have
	  NOT been able to test this yet. I hope that it works.
	- Small patch from Norman Kramer on linux sound driver.
	- Small Glide patch from Nathaniel Saint Martin for Windows.
	- *** Release of 0.12_001 ***
	- Received the first prototype of the Amiga port from
	  Jesse McClusky <Jesse.McClusky@PSS.Boeing.com>. This version
	  is not very stable and it is a small miracle if you actually
	  manage to compile it but it shows that work is in progress
	  at least.
28-Feb-1999
	- Moved printing of OpenGL version after initialization so that it
	  works.
	- Fixed stupid compilation bug in inifile.cpp.
	- Manually edited the VC5 project files to fix a few problems with
	  the OpenGL renderer project and also try to set the projects
	  to release mode.
	- Fixed bug in timing for unix, OS/2, and DOS. Elapsed_time was
	  not computed correctly.
	- Added 'delbot' command to delete the last added bot.
	- Bots move smoothly through the dungeon now.
	- Random bots are added every 10 seconds.
	- Increased cache to 5000000 because there are places in large.zip
	  where this is needed.
26-Feb-1999
	- Fix to OpenGL from Gary Haussmann. This fix should make no
	  difference for Mesa but it may help hardware accelerated
	  OpenGL implementations for correct texture mapping. We will
	  have to test this.
	- Update to Macintosh port from Robert Bate.
	- Received new networking files from Serguei Narojnyi (Snaar).
	  Also a change to the ISystem interface.
	- Small patch from Alex Pfaffe on the collision detection system
	  which should improve the chance of it working correctly with
	  DJGPP.
	- Patch from Andrew Zabolotny which fixes MazeD in 16-bit mode
	  and also some changes to the OS/2 port.
	  Another patch from him with some changes to the GGI port (yes,
	  both Andrew's work on the GGI port now :-) and some other
	  cosmetic changes.
	- I added 32-bit support for unlighted triangle drawers. This
	  was easy to do and allowed correct viewing of unlighted sprites.
	  Curved surfaces will now also be visible.
	- Received two new ports from Eric Sunshine: Mac OS/X Server DR2 and
	  OpenStep 4.2.  He also fixed various problems in parts of the engine.
	- New project files for VC from Bart van Langen. These should make
	  things easier for beginning users.
	- Added Doom to CS map convertor from Wolfgang Lehrach
	  <wolfg_l@pro-net.co.uk>. It is written in JAVA and seems to work
	  very well. I added it to the contrib directory.
	- Added DDG (Digital Dawn Toolkit) from Alex Pfaffe to the
	  contrib directory. As such this toolkit has no direct relationship
	  to Crystal Space but it can serve as a useful repository for
	  some stuff and more importantly it also serves as the testbed
	  for the ROAM algorithm which we are probably going to use for
	  landscape rendering in Crystal Space.
	- *** Release of 0.11_058 ***
25-Feb-1999
	- Really fixed DJGPP port. I can now compile it again.
24-Feb-1999
	- Small fix for OpenGL from Xavier Pianet.
	- Fix from Andrew Zabolotny for the DJGPP port.  I hope this fixes
	  things.
	- Small fixes from Xavier Pianet on the BeOS port and OpenGL.
	- Received new Visual C++ project files from Bart Van Langen.
	- Small fix for Windows from Vyacheslav Chupyatov. Also new
	  Watcom C++ project files for Windows.
	- Patch for Linux sound driver from Norman Kramer.
23-Feb-1999
	- Compile fix for Visual C++.
	- Received a few patches for Linux/Glide from Gert Steenssens.
	  He still has problems with the lightmaps though.
	- Received an update to the Macintosh port from Robert Bate.
	- Fix to allow static compilation of SVGALIB 2D driver.
	- Fixed bad initialization of shmptr in Linux sound driver.
	  This causes a crash at exit if there is no sound driver (like
	  on my Linux system).
22-Feb-1999
	- Patch from Andrew Apted fixing his GGI port. The Linux software
	  renderer will now automatically choose between GGI, X11, or
	  SVGALIB depending on:
	  	- First it will check if GGI_DISPLAY is defined. If so
		  it uses the GGI target.
		- Then it checks if DISPLAY is defined. If so it uses
		  the X11 target.
		- Otherwise it uses the SVGALIB target.
	  This is only the software renderer that does this. The OpenGL
	  and Glide renderers have their own 2D driver selection and
	  currently only work with X11.
	- Patch from Xavier Pianet to fix the BeOS port. He also reports
	  that the OpenGL stuff is working on BeOS.
	- Small fixes for Linux/Glide from Gert Steenssens. He reports that
	  he has problems with the Glide port if compiled with optimizations
	  on. The main problem in that case is that he doesn't have
	  keyboard/mouse input.
	- Largish patch from Andrew Zabolotny with the following changes:
		- Cleanup of SVGALIB2D driver.
		- Cleanup of x2d (software/X11) and glx2d (OpenGL/X11)
		  drivers. Added hardware mouse cursor support in both.
		  Added focus change event support. Added expose event
		  handling so that if MazeD window is overlapped by other
		  window the covered area is correctly redrawn.
		  Note from Jorrit: I also applied the equivalent changes
		  to the glidex2d (Glide/X11) 2D driver. I couldn't test
		  this by lack of Glide.
		- Some cleanup to the makefiles. OpenGL stuff supports
		  MESA_PATH environment variable which you can use to
		  store user specific locations for the Mesa stuff.
		- Added 'configure' phase to all makefiles. When you do
		  'make linux' it runs linux.mak with MAKESECTION=configure
		  and target=configure. The only target that uses this is
		  linux.mak. It creates a file called 'config.mak'.
	  As always Andrews patches are a bit dangerous. I can confirm that
	  Solaris/X11 and Solaris/OpenGL still work. I can't say much about
	  SVGALIB, GGI, and Glide though. I will test that at home.
	- I also received a new workspace for Visual C++ from Bart Van
	  Langen. He also sent me a few additional fixes to Glide and
	  OpenGL.
	- *** Release of 0.11_057 ***
21-Feb-1999
	- After some very hard work I managed to get the Windows OpenGL port
	  working more or less. It seems to fully work like the Mesa/Linux
	  port. If I force it to use software rendering (which is AWFULLY
	  slow by the way) then it looks exactly like with Mesa. However, if
	  I force it to use hardware rendering then I have two problems:
	  	- First the GL_SRC_COLOR, GL_DEST_COLOR blend mode that I'm
		  using does not seem to work very well but that may be
		  caused by my RIVA 128ZX not supporting that particular
		  type of blending. However, I don't know how I can detect
		  this with OpenGL. In Direct3D you can test for this
		  but can you in OpenGL?
		- Another strange problem that occurs is lightmap shifting.
		  Only if you are close to a polygon is the lightmap mapped
		  correctly onto the polygon. If you move away the lightmap
		  slowly shifts away. I don't know what causes this. I
		  suspected a problem in the code but then this effect
		  should also occur in Mesa or software rendering mode.
		  And there it doesn't happen. Anyone have a clue about
		  this?
	  And then there is the way I use to force software/hardware
	  rendering: if I enable PFD_DOUBLEBUFFER I get hardware rendering
	  (I notice this mainly because it goes VERY fast :-) If I disable
	  PFD_DOUBLEBUFFER I get software rendering. Why is this?
	  Note: util/inifile.cpp and util/csvector.cpp need to be added
	  to the OpenGL Renderer project.
	- Fixed bug with OpenGL 3D driver Z buffer test and lightmaps. If
	  two polygons of a Thing intersected then it was possible that the
	  lightmap of one polygon was drawn over the other polygon.
19-Feb-1999
	- Found the right blending function in OpenGL to get lightmap level
	  128 at 100% lighting. Now the OpenGL port almost looks like
	  the software renderer (I'm using Mesa unaccelerated by the way).
	- Completely fixed the scaling of lightmaps. They are now properly
	  aligned just like in software mode.
	- Enabled GL_LINEAR for lightmaps which is much nicer than
	  GL_NEAREST. Now the lightmaps are properly interpolated. This
	  introduced an error however because the actual lightmap is smaller
	  than the PO2 lightmap in which it is contained. The texture mapping
	  happens with GL_REPEAT and GL_LINEAR wraps the texture coordinates
	  in order to compute it's linear interpolation. To fix this I copied
	  the first row and column to the last physical row and column and also
	  copied the last real row and column to the following.
	- Fixed swap of green and blue in the OpenGL lightmap translation.
	- Conclusion: it is still not perfect. Compared to the software
	  renderer there are still some places where the borders between
	  two polygons are visible (they are not black but there is a color
	  difference). Investigation has to continue here.
	- I enabled GL_LINEAR for texture mapping as well. This looks very
	  nice but is VERY slow if you don't have hardware acceleration.
	  However, since the main point of the OpenGL is for hardware
	  acceleration I'm going to make GL_LINEAR the default. I will soon
	  add an 'opengl.cfg' file similar to the Direct3D and Glide cfg
	  files where you can control this.
	- Added opengl.cfg with two flags: ENABLE_BILINEARMAP and
	  ENABLE_DITHER.
	- WARNING! Having global variables in seperate libraries can be
	  dangerous. In this case I was having a problem with the 'config'
	  variable which is global and defined in CS itself and in all the
	  3D rasterizers. It would be best to make the config variable local
	  to the class but the quick solution which I used is to just use
	  another name for 'config' in the 3D rasterizers.
	- I extended the OpenGL X11 2D driver to support line drawing and
	  pixel drawing and also initial support for text drawing (nothing
	  is drawn yet but I have added the function for it). Note that only
	  the white color is supported.
	- I extended the OpenGL Windows 2D driver in a similar way but I
	  could not test this.
	- Reinstated OpenGL3D::DrawLine (it was commented out) because 2D
	  line drawing is functional now.
	- I tried to implement text printing but this does not seem to
	  work. Another thing that I need to learn yet :-)
	- Added HINT_PERSPECTIVE_FAST flag to opengl.cfg. If set to 'yes'
	  then a hint is given to OpenGL to use fast interpolation of
	  perspective correct texture mapping (like the software renderer).
	  Not all implementions honor this hint so nothing may happen.
	  Default is 'no'.
	- Thanks to Branimir Karadzic I managed to get Gouroud shading for
	  sprite triangles working in OpenGL.
18-Feb-1999
	- Fixed the Unix 2D drivers (SVGALIB, x2d, glx2d, and glide2d) for
	  static linking.
	- Fix from Gary Haussmann for the OpenGL port. He included lightmaps
	  again (but they are not fully correct yet) and also fixed a few
	  other problems (sprite drawing for example).
	- Fix for collision detection from Alex Pfaffe. The street is a
	  safe place to go now :-)
	- Update to project files for Macintosh from Robert Bate.
	- *** Release of 0.11_056 ***
	- First fix for OpenGL lightmaps. The problem was that
	  RecalcDynamicLights was not called in HighColorCache::Add.
	- Fixed drawing of sprite triangles. The problem was that OpenGL
	  blending mode was not disabled (it was enabled by the lightmap
	  code).
	- Second fix for OpenGL lightmaps. Lightmaps are converted to a power
	  of two but the original lightmap is not scaled. The OpenGL port
	  assumed that the lightmap was scaled.
17-Feb-1999
	- Update to FreeBSD makefiles from Brian Haskin.
	- Update to Macintosh port from Robert Bate. He fixed the DrawSprocket
	  support.
	- Update to NextStep port from Eric Sunshine:
		- Implemented a NeXT specific csGraphics2D::SetMouseCursor()
		- The cscmdFocusChangedEvent is now sent upon focus state
		  changes.
		- Added a Pause item to the NextStep menu.
		- The application now pauses automatically when hidden and
		  when in the background.
	- New sound patches from Normal Kramer.
	- I added a really old fix from Ivan Avramovic to fix a really old
	  bug. The bug is the problem that when you are too close to a portal
	  polygon, then part of the polygon is clipped away because it is
	  clipped to the Z plane. He sent this fix a long time ago but I
	  hesitated to add it because it was unfinished. But because I have
	  nothing else I tried it and it works except for reflecting surfaces.
	  I tried to fix it but I failed. Maybe someone else can have a look?
	  The relevant code is in engine/polygon/polygon.cpp and is indicated
	  with the optional EXPERIMENTAL_BUG_FIX define.
	- Received an update to the GLIDE port for Linux from Gert Steenssens.
	  The port seems functional but with a few little bugs here and there.
	  Gert warns that, although he has been careful not to break the
	  Windows Glide port, this might have happened.
	- Fixed bug in '-recalc' so that it always writes a 'precalc_info'
	  file.
	- It is possible that I fixed the DJGPP port (event_queue problem).
	  However, I'm not sure because I didn't test this.
	- Added '-driver' commandline option so that you don't have to go to
	  cryst.cfg everytime to change the driver. You should only give
	  the last part of the 3D driver name (i.e. software, glide, opengl,
	  ...).
16-Feb-1999
	- Various fixes to Glide, sound, ...
	- New INSTALL.Win file from Alex Pfaffe.
	- Changed X11, SVGALIB, and OpenGL makefiles so that they don't
	  add their libraries to the executables. This means that the
	  CS executable is REALLY independent of those drivers.
	- Messed a bit with the OpenGL/Mesa port. Now that I got this working
	  on Linux I'm interested in getting the OpenGL port in full power.
	  However I did not get far. I still need more documentation.
	- Reintroduced the 'inter' command.  It was not functional but now it
	  works again (only for the software renderer).  With this command you
	  can control how frequently the renderer will calculate a perspective
	  correct texture coordinate.  It has the following values: 'smart'
	  (default), 'step16', and 'step32'.  'step16' and 'step32' set a
	  fixed value of 16 and 32 respectively.  'smart' tries to be clever
	  and see from the angle between the polygon and the viewer how many
	  steps would actually be needed.  'smart' is obviously the fastest
	  solution but it is visually not very good.  When you move towards a
	  polygon the texture on it can appear wobbling a bit at times.  This
	  happens when a shift between different interpolation distances
	  occurs.  This is a quality aspect of Crystal Space which we will
	  need to improve on.
	- I also added 'step8' to have even more accuracy.
	- I improved the default 'smart' setting so that the visible pops are
	  much less even though there is no significant speed decrease.
	- Changed mipmapping to the old way of being based on minimum Z
	  distance only and not on the average of minimum and maximum Z.  This
	  is much nicer.
	- Fixed SVGALIB, OpenGL, and X11 2D drivers to properly register a
	  mouse release event.  This is required for proper operation of
	  MazeD.
	- Implemented the 50% and general alpha scanline drawers in 32-bit
	  mode.
	- Removed the 'perfect' mode where a texture mapper is used which has
	  perspective correct texture mapping at every pixel.  I removed it
	  because: it was only implemented in 8-bit mode, it is slow, it did
	  not work very well, it was only partially implemented, and it's
	  unneeded anyway.
15-Feb-1999
	- Andrew Zabolotny send me a patch which the following changes:
		- Fixed DOS/DJGPP port to improve the changes that I
		  made.
		- Added 32-bit mode to OS/2 port. However it is untested
		  since Andrew doesn't have a functional 32-bit mode
		  (only 24-bit).
		- Fixed text color on console in 32-bit mode.
	- Patch from Nathaniel Saint Martin with the following fixes:
		- Fix for broken cscom.cpp (NeXT_STDAPI define).
		- Some fixes to Direct3D and Glide ports.
		- He reports that there is a bug with sprite code.
	- Fix from Robert Bate to the Macintosh port.
	- Changes from Eric Sunshine to the NextStep port:
		- Added NEED_SOCKET_LIB to fix problem with Solaris
		  requiring -lsocket while this is not needed on Linux.
		- Fix NextStep port which was a bit broken by Andrew.
		- The NextStep port also works on m68k hardware now. He
		  had to change the GIF loader for this and some other
		  stuff.
		- The NextStep port also works for sparc and hppa.
	- Fix to Linux sound driver from Norman Krmer. Also a fix to
	  the WAV file loader in general. There should no longer be
	  an audible crack when playing wav files.
	- Patch from Gert Steenssens so that the SVGALIB port can do
	  any resolution and depth.
	- *** Release of 0.11_055 ***
14-Feb-1999
	- Fixed DOS/DJGPP port so that it compiles. However it does not run
	  well. I simply got a black screen and the keyboard beeps.
	- Fixed Windows port so that it compiles but I still got errors at
	  the linking stage.
12-Feb-1999
	- Selection of 2D driver on Linux is done by looking at the DISPLAY
	  variable. If it is set we use the XLib driver. Otherwise the SVGALib
	  driver. We still have to include GGI in this selection somehow.
	  Now we truely have one executable that can work with more than one
	  2D driver!
	- Fixed SVGALIB driver completely.
	- I also managed to get the Linux/OpenGL port working with Mesa.
	  The port appears incomplete: no lightmaps for example but it
	  seems to run fine otherwise.
	- Fixed SysTime() so that it uses times() instead of clock().
11-Feb-1999
	- Fixed compilation of Linux port. Mainly I had to add a dummy 'main'
	  function to all dynamic libraries so that I could link them without
	  using the '-nostdlib' option. The advantage of this is that then
	  the constructors are properly called.
	- Fixed Linux/OpenGL port so that it compiles and also runs initially.
	  However there is a crash immediatelly after opening the window so
	  I still have to investigate what is wrong here.
	- Started fixing SVGALIB port. Everything works except keyboard
	  input :-)
10-Feb-1999
	- Gert Steenssens fixed the SVGALIB port so that it supports 32-bit
	  display mode and also fixed a compilation error.
	- I added 1024x768 and 1280x1024 modes to the SVGALIB port just to
	  be complete :-)
	- Andrew Apted didn't have to do anything. It appears that his GGI
	  port already correctly supports 32-bit mode :-)
	- Update to Macintosh port from Robert Bate to support 32-bit mode.
	- Update to NextStep port from Eric Sunshine. He added support for
	  building NextStep multi-architecture binaries (MAB). With this
	  he can build an executable which can run on multiple CPU types.
	- I modified the DOS/DJGPP port for 32-bit support. However, this is
	  untested and I'm not sure that the Vesa detection code in
	  djvidsys.cpp will correctly open a 32-bit mode (I don't understand
	  that code so somebody else will have to look at that).
	- Received a major patch from Andrew Zabolotny. Normally I would not
	  like to accept this so close to a new official release. However,
	  his patch is actually very good and simplifies things. With his
	  patch it will be possible to have one executable for Unix/Linux and
	  let it work with all Linux compatible 3D and 2D drivers without
	  having to recompile the executable. Note that this doesn't work
	  yet because the name of the 2D driver is still hardcoded (currently
	  to XLib) in the code but this is easy to fix and will be fixed in
	  one of the next versions. Andrew made care to be
	  very careful about this patch. To his credit, I actually was able
	  to compile and run the Solaris version with minimal problems.
	  I have not yet tested the Linux version. This weekend I will
	  test and update (if needed) the Linux X11 and SVGALIB versions,
	  the Windows version and the DJGPP version. Maybe other people
	  can test their ports?
	  So if you want to test a different 2D driver on Linux you will
	  have to edit system/unix/osdefs.h and add the appropriate
	  DISP_... define in the beginning. This is until we fix this.
	- *** Release of 0.11_054 ***
9-Feb-1999
	- We got a new port! Eric Sunshine <sunshine@sunshineco.com> was so
	  kind to port Crystal Space to NextStep. He had to modify a few
	  things in the Crystal Space sources to work around some bugs in
	  the compiler he used. For example, don't use static_cast<> but
	  use STATIC_CAST() instead (a macro which does something else on
	  NextStep).
	- *** Release of 0.11_053 ***
	- Fix to the DJGPP port when clearing the screen.
	- Patch to Windows port from Nathaniel. He added 32-bits support
	  for software and d3d 2d drivers (DirectDraw2D.dll).
	  Also a fix in the selection of screen depth and fixes to the
	  project files.
8-Feb-1999
	- Frederick A. Niles suggested that I should test on failure of
	  opening the X11 display. This is done now.
	- New 'move3d' console command. With this command you can toggle
	  between pure 3D movement (the old way) and 'comfortable' movement
	  (Quake movement). The latter is now default. This basicly affects
	  the left and right arrow keys which now rotate the camera how
	  you would expect it. The '3' key has been assigned to this
	  new command so that you can switch back to the old system if you
	  want.
	- Created 16-bit simulation of 32-bit mode.
	- Implemented fog in 32-bit mode. This looks REALLY very nice but
	  it could be faster.
	- Implemented gouraud shaded triangle drawers in 32-bit mode.
	- Still missing from 32-bit mode:
		- alpha transparancy
		- color 0 transparancy
		- unlighted texture mapping
		- unlighted triangle drawers
		- halos
	- Added 'precalc_info' file to archives. This file contains
	  information about various flags and settings which all affect
	  the lightmap data. Whenever such a flag changes CS will detect
	  this and automatically force recalculation of all lightmaps.
	  Examples of flags which are tested are: the default lightmap
	  size, the radiosity flags, the ambient light levels, the normal
	  light level, ...
	  This also means that it is no longer needed to do a '-recalc'
	  when I change the lightmap format. There is also a 'lightmap
	  version' field in this 'precalc_info' file which can be used
	  to indicate that there has been a global change in the lightmap
	  format.
	- I added a '-norecalc' commandline option which inhibits the
	  automatic lightmap recalculation because of the above flag.
	  Having the flags '-recalc -norecalc' works. It will recalculate
	  all lightmaps but not generate nor use the 'precalc_info'
	  file in the archive.
7-Feb-1999
	- Fixed SVGALIB driver so that it should compile in static mode as
	  well.
	- Started development of 32-bit display mode (no 24-bit!). The XLib
	  2D driver supports 32-bit now and also supports simulation of
	  32-bit mode in 8-bits (because I don't have a functional 32-bit
	  display mode on my computer). The 32-bit display mode forces
	  texture mode to be set to 24-bit. So 32-bit will ONLY work with
	  the XLib driver currently!!
	- Note: currently the only things that are supported in 32-bit
	  mode are normal sector wall drawing and thing drawing. No fog,
	  no alpha tranparancy, no unlighted textures, no sprites, no
	  gouraud shaded triangles, ...
	- Because the texture cache needs to be larger in 32-bit mode (lighted
	  textures are four times as large as with 8-bit mode) I changed the
	  Cache size argument to mean the number of texels in the cache
	  instead of the number of bytes. So a cache of 1000000 actually
	  means 2000000 bytes in 16-bit mode and 4000000 bytes in 32-bit
	  mode.
	- Moved util/memheap.cpp to render/memheap.cpp since the memory
	  heap is only used by the texture cache.
	- Removed the obsolete mipmap_setting. It was not really obsolete
	  but because all options except the default are so ugly I decided
	  to make Crystal Space simpler and remove support for it.
	  Also removed the 'lightmap' console command which controlled
	  this option.
5-Feb-1999
	- I changed the light level at 200 to 128. This means that it is now
	  possible to have much brighter lights while this doesn't affect
	  the quality of darker light-levels much.
	- Small update to Visual C++ project files from Nathaniel.
	- Small fix to Glide2x from Nathaniel.
	- Update to Macintosh port from Robert Bate.
	- Robert also fixed cleaning up the Halo rasterizer after the world
	  is destroyed.
	- Small experiment with color palette.
	- Fixed DJGPP port (untested) so that it should be faster and also
	  not flicker anymore. The problem was related to CS writing directly
	  to video memory. This is not a good idea. CS should always render
	  to an off-screen buffer first (because of alpha transparency).
4-Feb-1999
	- Small fix in makefiles for Glide.
	- Removed who.html.
	- Updated faq.html, todo.html, worldfmt.txt.
	- Duplicated win32/opengl2d directory. Removed the old version.
	- Fixes in config file for Glide and Sound.
2-Feb-1999
	- Gouroud shaded triangles are now correctly lighted even without
	  '-recalc'. This means that the sky.zip level is correct now.
	- New patch to Macintosh port from Robert Bate. The Macintosh also
	  supports sound now!! Join the club Mac :-)
	  See system/maclib/history.mac for Macintosh related changes.
	- Patch to Linux/Glide from Gert Steenssens.
	- New networking code from Serguei Narojnyi. He also added a new
	  network manager. I updated all makefiles (but not sure about the
	  OS/2 ones) so that the new 'netmann' (NULL Network Manager)
	  is included everywhere. I also renamed 'netnull.mak' to 'netdrvn.mak'
	  and 'netsocks.mak' to 'netdrvs.mak'. This is more consistant with
	  the naming scheme selected by Serguei. The libraries will be called:
	  	libnetdrvn.a
		libnetdrvs.a
		libnetmann.a
		libnetmans.a
		netdrvn.so
		netdrvs.so
		netmann.so
		netmans.so
	  There is also an extra option WINSOCKAPI in the system dependent
	  makefiles. If set to 'yes' then you will be able to compile
	  'netdrvs'. I already changed all makefiles to have the correct
	  setting for this.
	- Received patch to MazeD from Nicholas <nicholasfrancis@iname.com>.
	  Here are his remarks:
	  	- Mazed can now save rooms, portals and (almost) Space Warps.
		- It also saves textures - although not with mapping yet.
		- MazeD now also loads and saves lights.
		- There is as yet no design interface to connect the made
		  portals. Neither is there any way to edit the texture info
		  on a polygon.
		- What I reccommend is for people to just make their things
		  in ONE room. what I mean is lots of polys, no portals. This
		  will allow the level designers to get started and get a feel
		  for the engine. I don't think that you can make a playable
		  (or walkable, anyway) level with MazeD just yet. We still
		  need to have maps on all polys.
		- Please tell me about any bugs you encounter. This patch is
		  just the work of one nights frenzied coding, and should be
		  considered extremely alpha :)  -nevertheless, I believe
		  that it is still better that rel 047.
	- *** Release of 0.11_052 ***
1-Feb-1999
	- Fixed MazeD in 16-bit display mode.
	- Patch from Andrew Apted to fix the GGI port.
	- Received new networking files from Serguei Narojnyi (Snaar).
	- Patch from Nathaniel Saint Martin on hardware acceleration.
	  He now has a better way for handling the lightmap code. WARNING!
	  It is possible that this breaks the Linux/Glide and Linux/OpenGL
	  ports!!! Can someone check this? He also has redone the 2d
	  graphics driver for OpenGL (Windows only) using wgl functions.
	- Fixed bug in caching lightmaps in combination with the STATBSP
	  functionality.
	- *** Release of 0.11_051 ***
	- Fixed cs_lib target in makefile.
29-Jan-1999
	- 'Crappy' solution from Seth Galbraith (his own words :-) to the
	  collision detection problem (which manifested itself mainly on
	  DOS/DJGPP).
	- Norman Kramer turned on -pedantic for GCC and removed even
	  more warnings.
	- Patch to Linux/OpenGL from Gary Haussmann.
	- Conversion to COM for SVGALib from Gert Steenssens! Just in time
	  for the next official release :-)
	  He also updated INSTALL.Unix.
	- Avoided a bug with collision detection and curved surfaces.
	  bezex.zip will now work again.
	- Made the makefile a bit more user-friendly. The makefiles will
	  initially be configured for an unknown invalid system. This means
	  that you will not be able to do 'make cs', 'make all', 'make depend',
	  ... or anything initially. First you need to configure your system.
	- Fix to Windows port in SetCacheSize function that I added.
	- *** Release of 0.11_050 ***
28-Jan-1999
	- Made 'linuxpro' target in makefiles to compile for the Pentium Pro
	  processor.
	- The 'linux' and 'solaris' targets autodetect which processor they
	  are using so the linux target should now work automatically on
	  MkLinux and the solaris target should work on Pentium Solaris
	  as well (not tested).
	- Removed '-light/-nolight' commandline options because they have
	  limited use.
	- '-exec' commandline option works again (to execute a script at
	  startup).
	- '-ilace/-noilace' commandline options work again.
	- '-cache' commandline option and TextureMapper/CACHE config file
	  option works again.
	- Patch from Nathaniel Saint Martin on Glide2.  He added 16 bit
	  texturing, fixed all problems with single/multi pass (works correct
	  now both on Voodoo and Voodoo 2).  He also started adding halo
	  support (not functional yet).
	- Removed the '-line' commandline option since it can better be
	  controlled with the LINEMAX config file option.
	- Removed the '-confg' commandline option since it can better be
	  controlled with the CONFG config file option.
	- The special '-sdepth' commandline option has been removed. This
	  option was only for the X11 version but it didn't function any more.
	  You can now get the same functionality by using '-depth Depth' with
	  Depth a negative number (for example '-depth -16'). This features
	  allows you to simulate the given depth on a display which doesn't
	  support that depth (for example, simulate 16-bit on an 8-bit
	  display). Positive numbers for '-depth' are ignored by the X11
	  version (but not by some other ports).
	- Removed 'physics' console command, '-physics/-nophysics' commandline
	  options, and 'PHYSICS' config file option since the current physics
	  system is broken anyway.
	- *** Release of 0.11_049 ***
	- Removed a few other warnings.  One of these warnings may have caused
	  a potential bug.  Collider had virtual functions but no virtual
	  destructor.  This is not good.
	- Shame on me. The Linux version with dynamic linking was STILL not ok.
	  Now I have really tested it. This version works!!!
27-Jan-1999
	- Little fixes to the FreeBSD makefiles.
	- It is no longer needed to set LD_LIBRARY_PATH on Linux/Unix if
	  the *.so files are located in the current directory. Currently
	  the libraries are first search in the system path (both
	  LD_LIBRARY_PATH and what is configured in the system itself)
	  and if that fails it will try the current directory.
	  This works both for WalkTest as for csregsvr.
	- Patch from Nathaniel Saint Martin on Windows port and hardware
	  accelerated versions.
	- Update to Macintosh port from Robert Bate.
	- I removed all warnings which 'gcc -Wall' can give me (except
	  for one which is caused by a X11 function which I cannot find
	  in the include files). So if other compilers still have warnings
	  I'd like to know them.
	- Fixed bug with rendering of volumetric fog when you are inside
	  the fog.
	- New naming system for lightmaps in world files. Sectors and Things
	  must always be uniquely named for this scheme to work correctly.
	  Polygon names do not have to be unique. The polygon in every thing
	  or sector is identified by a relative number (polygon 0 is identified
	  with 0, polygon 1 with 1, and so on).
	  Note that Things must only be named uniquely in one sector.
	- Fixed another problem with dynamic linking on Linux again.
	  NOTE!!! GLOBAL OBJECTS WHICH REQUIRE CONSTRUCTORS FOR PROPER
	  FUNCTIONALITY SHOULD BE AVOIDED. THEY OFTEN DON'T GET CALLED WHEN
	  IN A STATIC OR DYNAMIC LIBRARY!!!
	- I removed the profile documents from the docs directory since they
	  are likely to be somewhat out-dated anyway.
	- Small fix for Linux sound driver from Norman <normank@lycosmail.com>.
26-Jan-1999
	- Fixed problem in COM system which caused dynamic linking with
	  version 047 to be unusable. This version has been tested with
	  static and dynamic linking on Solaris. I have good hopes that it
	  will also work on Linux now.
	- Update to Macintosh port from Robert Bate.
	- *** Release of 0.11_048 ***
25-Jan-1999
	- Various fixes to COM and other stuff from Alex Pfaffe.
	- Fixed Solaris makefile so that I can FINALLY do dynamic linking
	  on Solaris as well.
22-Jan-1999
	- Fixed bug in COM code.
	- Fixed FreeBSD makefile (fixes from Brian Haskin).
	- Update INSTALL and README documentation a little.
	- Added capability to update lighting for one Thing only.
20-Jan-1999
	- Fix from Alex Pfaffe so that the 'c' key works again (he broke it
	  with his latest patch on collision detection).
	- Received a few bug fixes from Vyacheslav Chupyatov <sla@istu.udm.ru>
	  and also Watcom C++ makefiles for the Windows version.
	- New INSTALL.Win from Nathaniel.
	- I updated INSTALL.Unix a bit. The other files still need to be
	  updated.
	- New patch from Nathaniel on the directdetection and direct3ddx5
	  renderer:
        	- Fix compilation with problem with DirectDetection and dx3
		  (NT platform).
        	- Add a member in DirectDetection to test if device support
		  halo effect.
        	- Add minimal Halo effect support: it needs texture with
		  alpha channel (not supported by all hardware), there
		  are two format supported ARGB 4444 (16 bits) and 8888
		  (32 bits), display seem correct but there is no zbuffer
		  test.
        	- Fix bug when alpha texture have a lightmap.
        	- Add 32 bit textures support (not yet very usefull but wait
		  until we add 32 bit render support ;-))
        	- Some other fixes.
        	- New members in Direct3DDx5.cfg.
        		- If you set 'USE_16BIT_TEXTURE' to 'no', renderer
			  tries to get a 8 bit palettized format texture, a
			  16 bit format lightmap and 16 bit with alpha channel
			  for halo. If your device don't support 8 bit
			  palettized (like tnt), it will search for a 16 bits.
			  If your device don't support 16 bit it will search
			  for 32 bit format.
        		  If you set USE_16BIT_TEXTURE to 'yes' it searches for
			  16 bit format (but if it doesn't find this format and
			  find 8 bit, it will use 8 bit).
        		- If you set EXTEND_32BIT_TEXTURE to 'yes' (with
			  USE_16BIT_TEXTURE to 'yes') it will try to find 32
			  bit format for all type of texture (lightmap, halo,
			  texture). But, if your device don't support them
			  (like 3dfx chips), it takes 16 bit format.
        		- Keep 'DISABLE_MIPMAP' to 'yes' because mipmapping has
			  a small bug not which I couldn't find yet.
	- Another large patch from Andrew Zabolotny with his usual
	  'port-breaking' style :-) At least he gets a lot of work
	  done in one patch. Here are his notes:
		- Changed the dynamic-linked modules management. Instead of
    		  csLoadLibrary(), csGetProcAddress(), csFreeAllLibraries the
    		  system-dependent part should now provide the
    		  SysLoadLibrary(), SysGetProcAddress(), SysFreeLibrary()
		  routines.  Everything other (rendundant code) is kept in
		  csCom now.
		- Changed the COM stuff: now the COM registry is kept in an
		  csIniFile that is called csCOM.cfg. First the CS_COM
		  environment is checked, and if it is set the value of that
		  variable is used as registry file name; otherwise the /etc/
		  directory is checked for the file named as above; if it is
		  found it is used as COM registry; and finally if all above
		  tests failed, the "csCOM.cfg" is used in current directory.
		  Also I've changed several lists in com.cpp to use csVector
		  objects - this simplified things a lot.
		- Re-wrote the csregsvr program. Now it is much nicer :-)
		- I rewrote the static COM functionality. Now the static
		  classes should also register (like the dynamically-loaded)
		  but they won't be stored into csCOM.cfg but directly in
		  memory (since registering happens automatically each time
		  during startup). This allowed to remove the kludge in
		  com/csCom.cpp that made it dependent of system files. Now
		  the "static registry" is a csVector derivate (just like for
		  dynamic-linked version) that is filled during startup.
	  	  ***NOTE FROM JORRIT!*** I had to change this system a
		  little because there is a problem with global constructors
		  that are not called for static objects defined in a library
		  (static or shared).  There is now a file 'com/static.cpp'
		  which takes care of calling the registry functions for
		  static linking. Every COM object should also have an include
		  file 'static.h'. Have a look at the current ones to see how
		  this works.
		- I've also removed the kludgy Software_DllInitialize() and
    	  	  Xlib_DllInitialize() calls from system.cpp. If you need
		  initialize something during startup just do it the usual
		  way (like above). But in the case of static libraries you
		  will need to add a line to com/static.cpp to make at least
		  one reference to a symbol from static COM library,
		  otherwise the library will be simply ignored (since there
		  won't be any reference to it).  This change require the
		  presense of -DDISP_XXX defines for all drivers included
		  in static executable. For example, if you will want to build
		  a executable that uses both Xlib and GLX drivers you will
		  have to pass to GCC on the command line at least -DDISP_X11
    	  	  and -DDISP_GLX.
		- The following rendering states work correctly now (previously
		  the corresponding commands didn't work):
    			G3DRENDERSTATE_MMXENABLE		== "mmx"
    			G3DRENDERSTATE_INTERLACINGENABLE	== "ilace"
    			G3DRENDERSTATE_DEBUGENABLE		== "debug"
    			G3DRENDERSTATE_LIGHTFRUSTRUMENABLE	== "frustrum"
    			G3DRENDERSTATE_FILTERINGENABLE		== "texelflt"
    			G3DRENDERSTATE_PERFECTMAPPINGENABLE	== "perfect"
    			G3DRENDERSTATE_LIGHTINGENABLE		== "lighting"
		- Removed the LFLAGS_CS makefile variable: use the EXTRA_LIBS
		  variable instead.
		- Added makefile for Watcom C/C++ on OS/2. I wanted to see how
		  big the difference between WCC optimizer and GCC optimizer
		  is (I have been considered Watcom C optimizes much better
		  *FPU* code). I'm not so sure now.
		    - Watcom: 15.03 secs to render 100 frames: 6.65 fps
		    - Pentium GCC: 12.19 secs to render 100 frames: 8.2 fps
    	  	  Watcom C for now does not use assembler (there are too many
		  warnings and syntax errors in assembler parts, so I disabled
		  them temporarily), so I still have to see how it will work
		  with it.
		- Changed "dd" and "lastD" variables in scaline drawer to
		  "_dest" and "_destend" since Watcom C assembler interpretes
		  "dd" as a reserved word.
		- Changed a lot in makefiles to make them compiler-independent.
		  For example, in linking phase GCC uses "-o $@" while for WCC
		  it should look like "NAME $@". During compiling phase it
		  should look like "-fo=$@". A mess, in other words :-( I also
		  had to make some perverted tricks to avoid the OS/2's shell
		  command line length limit of 1024 characters.  Phew, it was
		  a nightmare :-) GCC is still required for dependencies :-)
		  I'm planning to create a makefile for MSVC under Win32
		  (using GNU Make for building). I don't like to work under
		  their GUI - it sucks, besides their "projects" are a
		  unusable mess.
		- Fixed a lot of bugs in com header files (for example,
		  IUnknown defined QueryInterface as a virtual function
		  while DECLARE_IUNKNOWN defined non-virtual functions).
		  Watcom C warns about this while GCC quietly ignored them.
	- *** Release of 0.11_047 ***
19-Jan-1999
	- Replaced signed CS types by adding the 'S' prefix
	  (Byte -> SByte, Short -> SShort, Long -> SLong, Int -> SInt).
15-Jan-1999
	- Again some fixes to makefiles.
	- Included update to Macintosh port from Rob Bate.
	- Again removed a few warnings.
	- Added patch to collision detection from Alex Pfaffe.
	  Read readmecd.txt for more information.
	- Patch from Nathaniel on Glide and Direct3D: colorkey and
	  alpha mapping are working. There are no seperate files for
	  renderer configuration. Much better quality for Direct3DDX5
	  (with a small speed penalty). There is a bug with mipmapping
	  and D3D port so it is disabled now. There is a bug with glide2x
	  and 16-bit texture mapping in QuickDrawPolygon so 8 bit is
	  used for now. There is a bug with sky and D3D renderer.
	  Only Glide2 and Direct3D5 work for now.
14-Jan-1999
	- csregsvr is no longer included in 'make all' when static
	  linking is used.
13-Jan-1999
	- Received new networking files from Serguei Narojnyi (Snaar).
	  This is a fundamental change.
	- Added a few lines to configuration file for sound from Nathaniel.
	- Added new patches to Direct3D, OpenGL, and Glide renderers from
	  Nathaniel Saint Martin. Glide2 and direct3d5 work (not glide3 and
	  direct3d6 yet).
	- Nathaniel also moved the directory functions from win32.cpp to
	  dir.cpp.
	- Fixed makefiles so that all targets are correctly displayed with
	  'make help'.
	- *** Release of 0.11_046 ***
12-Jan-1999
	- Added cs_lib target to makefile. This creates a static library
	  called 'cslib.a' which you can link with to create your own
	  games. It contains everything except the 'WalkTest' stuff.
	- Added offset to Thing::merge (ThingTemplate*) so that you can
	  now shift a template before merging it.
8-Jan-1999
	- Fixed compilation on Linux. This included making new makefiles
	  for the networking code and fixing a problem with the sound code.
7-Jan-1999
	- Received new networking code from Serguei Narojnyi (Snaar).
	  It should now work on Linux/Unix as well as Windows.
	- Received new Linux sound-driver from Gert Steenssens. This
	  version should give a 'tata' sound at startup :-)
	- Renamed Collection to csCollection.
	- Received a full updated Macintosh port from Rob Bate
	  <rbate@ma.ultranet.com>. I could not integrate all his patches
	  due to conflicts with current patches but most of it should
	  be included. I'd like some feedback about this port.
	- *** Release of 0.11_045 ***
6-Jan-1999
	- Fix for TGA loading from Andrew Apted.
	- Patch from Andrew Zabolotny:
		- Memory debugger works again (there were several small
		  changes that broke him). Added CHK()'s in many places,
		  particularily in places related to COM.
		- Removed a lot of warnings, except for the sound/ directory.
		  The latter has SO MUCH warnings that I don't know, maybe
		  Nathaniel just waits for a more stable version to remove
		  them himself? :-)
		- csSprite object and his components (csFrame, csAction) has
		  been modified to use csObjVector for keeping actions, frames
		  and delays. This removes several memory leaks (and even bugs
		  (?)) in csSprite.
		- I've created a directory called "util/debug" and moved
		  memory.* into that directory. The file is include only if
		  MEM in makefile is not empty.
		- Fixed memory leak: replaced IMPLEMENT_UNKNOWN_DELETE with
		  IMPLEMENT_UNKNOWN since first does not delete created object
		  at all! I don't see a need for IMPLEMENT_UNKNOWN_DELETE at
		  all! Every allocated object should be deleted.  This fix
		  possibly broke (slightly) other 3D renderers since their
		  destructors were NEVER called until now (so some bugs in
		  them can pop up - something can be deleted more than once
		  etc).
		- Added Vector3::Area3 routine that calculates twice the
		  signed area of a triangle formed by three vectors.  I've
		  also changed Moment::compute to use this routine and I
		  believe collision detection bounding hierarchy should
		  compute a bit faster now.
		- General header cleanup.  I've created a new file called
		  system/sysdef.h that should contain all system-dependent
		  #define's etc.  Depending on compiler/OS it includes a
		  system-dependent include file that makes ONLY the
		  definitions (i.e.  sysdrv.h defines the system driver and
		  osdefs.h does only required definitions - i.e.
		  strcasecmp(), opendir() and so on).  There can be (there
		  WILL be :-) something broken because of this but please be
		  nice and try to fix it maximally accurately, i.e.  avoid too
		  many extra includes, system-dependent stuff goes in
		  system-dependent header file if possible and so on.  Please
		  read the comment at the beginning of sysdefs.h for more
		  information.  This file (i.e.  "system/sysdefs.h") should be
		  #include'd at beginning of EACH source code file to give a
		  chance to port maintainers to override unsuitable
		  definitions, define prototypes etc.  For example, OS/2 does
		  not have strcasecmp(), it has stricmp() instead - so in
		  os2/osdefs.h I just #define strcasecmp stricmp and voila!
		  Before I had to include sysdrv.h which is way too big for
		  such a small final result.  This is the first preparation
		  step for further modifications of Crystal Space to make it a
		  library rather than just an executable.  The second step is
		  (I presume) to move all header files in a separate directory
		  (maybe keeping the hierarchy) so that the user that does not
		  need to make modifications to header files should just have
		  the ".a" file and the include directory.
		- I've renamed system/def_sys into system/general. Also I've
		  added a directory system/unix for Unix-specific files (like
		  timing etc).
	- Patch from Nathaniel on Glide, Direct3D, and OpenGL. Not all problems
	  are fixed for the hardware renderers but work is progressing nicely.
	  Note that the new 'sky.zip' level will not work for the hardware
	  renderers because hardware can't handle textures larger than 256x256.
	  We need to find a solution for this (splitting the texture?).
	  Fog, halos and alpha-transparency are not supported yet.
	  Gouroud shading should work.
5-Jan-1999
	- Fixed cs.mak so that it takes the correct libraries with static
	  and dynamic linking. So you can do either 'make linux USE_DLL=no'
	  or 'make linux USE_DLL=yes' and it should work in both cases.
4-Jan-1999
	- Fixed Halo drawer so that it now works in both 555 and 565 16-bit
	  display modes. Also fixed it so that it does not do anything in
	  8-bit display mode.
	- Added cosinus_factor flag for every polygon. If given this flag
	  overrides the global PolyTexture::cfg_cosinus_factor field.
	  We need this flag to be able to disable the cosinus factor for
	  sky polygons. Sky polygons are to be considered infinitely far away
	  (although they really are not).
	- Because some things have changed regarding polygon drawing I will
	  give a summary of the current features. All Crystal Space polygon
	  drawing currently revolves around two main routines: DrawPolygon
	  and DrawPolygonQuick.
	  DrawPolygon:
	  	- Is a general perspective correct polygon drawer intended
		  for arbitrary convex polygons.
		- Can draw unlighted (tiled) or lighted (using lightmaps and
		  the texture cache) polygons.
		- Texture mapping is specified using a transformation from
		  object space to texture space.
		- Supports Z-fill (only fill the Z buffer) and Z-use (fully
		  use the Z buffer) so it can be used by Sectors and Things.
		- Supports alpha transparancy so it can be overlayed on a
		  portal polygon.
		- Is used only for drawing Sector walls and Thing polygons.
	  DrawPolygonQuick:
	  	- Is a perspective INCORRECT polygon drawer. The polygons it
		  can draw are convex clipped versions of a triangle. So
		  DrawPolygonQuick is in fact a triangle drawer which can
		  draw sub-parts of triangles.
		- Can draw unlighted or lighted (using gouraud shading)
		  polygons.
		- Texture mapping is specified by assigning texture
		  coordinates to vertices.
		- Supports Z-fill and Z-use so you can also use it for Sectors
		  and Things.
		- No alpha transparency yet.
		- Can be used for Sector walls and Thing polygons. In addition
		  is also used for sprites and curves.
	- Received new GGI port (COM-patible :-) from Andrew Apted.
	- *** Release of 0.11_044 ***
	- Added network code from Serguei Narojnyi (Snaar). His code is
	  mainly stub-code right now. He has based his networking code
	  on the same principles used by the 2D and 3D subsystems: using COM.
	  System dependent networking drivers can be created and added
	  dynamically to Crystal Space.
2-Jan-1999
	- Made gouraud shader more general: support for both 555 and 565
	  color formats and support for Z buffer in gouraud shader (so it can
	  also be used for Things).
	- Use csColor in Light class instead of seperate red, green, and blue
	  fields. This is cleaner.
	- Implemented gouraud shading support for sprites. csSprite3D has a new
	  set_vertex_color function with which you can set the color of one
	  vertex. This is initial support, we still need some lighting system
	  so that we don't need to set the colors of every vertex ourselves.
	- The static lighting system also affects gouraud shaded triangles now
	  (but only on Things and Sectors, not on sprites or curves!). This is
	  preliminary support. We still need support for dynamic lights and
	  also the static lighting calculations are not remembered like the
	  lightmaps so you need to do '-recalc' every time to see the results.
1-Jan-1999
	- Added new csColor class which represents a color in RGB
	  space. This class should be used instead throughout CS
	  but this is not yet the case.
	- Implemented Gouroud shading with DrawPolygonQuick. The sprite system
	  does not support this yet (still need to perform quick lighting for
	  every vertex) but you can use this with the COLORS statement in
	  combination with UV or UVA (in POLYGON). Currently for the Zfill
	  version only (so not to be used in Things, only as walls of Sectors).
28-Dec-1998
	- Integrated heavily updated Direct3D, Glide, and OpenGL
	  ports for Windows from Nathaniel Saint Martin. I have no clear idea
	  what has changed really since I lost the mail he with his
	  descriptions.
	- Integrated Halo drawer from Dan Ogles. His code currently functions
	  only for 16-bit mode and with the software renderer. The effect
	  is really nice though!
	- Changed halo drawer a little so that it is a little more efficient.
	  No longer calls QueryInterface for every sector that is drawn every
	  frame. QueryInterface is only done once at initialization time
	  (in csWorld::initialize()).
	- New syntax for LIGHT.  The old syntax is still supported (CS checks
	  if there is a colon in the statement and then reverts to the old
	  syntax).  With the new syntax you specify a light as follows:
	  	LIGHT (CENTER (x,y,z) RADIUS (r) COLOR (r,g,b))
	  In addition you have the DYNAMIC() and HALO() statements.
	- Halo's are now disabled by default but you can enable them for
	  a specific light by using the HALO() keyword with the new LIGHT
	  syntax.
	- Added CONVEX() keyword to SIXFACE as well. Although SIXFACE's are
	  always convex in the technical sense it is not good to indicate
	  this by default because the current convex hull handling is not
	  perfect yet (it has problems with sorting because it uses Z sort
	  which is not always correct and it is not yet very efficient,
	  probably because of the call to 'qsort').
	- Fixed bug. When compiling with assembler disabled the sector drawer
	  no longer functioned.
	- Improved speed of CS considerably by removing lots of calls to
	  GetPixelAt in the polygon drawer. GetPixelAt is called via a COM
	  interface from Graphics3D to 2D. This is a lot of overhead. I
	  optimized this by maintaining a table of line pointers in
	  Graphics3D which is updated every frame (to support double
	  buffering for example).
25-Dec-1998
	- Added center point to convex Things. This center point is going
	  to be used for Z-sort. Foggy Things are automatically made
	  convex at loading time.
	- Things and curves in Things can now be drawn using Z fill instead
	  of Z buffer. This allows for support for drawing hulls.
	- Implemented full support for sorting Things with fog or portals.
	  Also implemented sorting hulls (convex things).  Here is how it
	  works now: All Things which are not merged with the static bsp need
	  to be drawn after the bsp tree is drawn.  If there is a static bsp
	  then we cannot do something special for convex things (hulls).  In
	  that case we first draw the non-merged things using normal Z-buffer
	  and only Z sort the foggy things and draw them back to front.  If
	  there is no static bsp then we can also Z sort the hulls and draw
	  then back to front using Z-fill.  A consequence of this algorithm is
	  that if you use a static bsp then you can only use portals in Things
	  that do not move (i.e.  the Thing needs to be merged with the bsp).
	  But the Thing need not be convex in that case.  If you don't use a
	  static bsp then you can use portals in moving Things but the Things
	  containing portals need to be convex.  a static bsp then you can
	  only use portals
24-Dec-1998
	- Created new SKYDOME command in SECTOR. This generates a half-
	  sphere that can be used for a sky. Syntax is:
	    SKYDOME 'mySky' (RADIUS (10000) VERTICES (0,1,2,3,4,5))
	  The created polygons all use the non-perspective correct
	  texture mapper using the current sector texture.
19-Dec-1998
	- Succeeded in making a texture mapped spherical sky.
18-Dec-1998
	- Changed DrawPolygonQuick so that is also listens to the
	  Z buffer mode set by SetZBufMode()!!! This is an important
	  warning for the hardware accelerated versions as well. If
	  z_buf_mode == ZBuf_Use then the Z buffer should be used. This
	  is the original behaviour. If z_buf_mode != ZBuf_Use then only
	  Z-fill is used. This is new behaviour.
	- Added array of uv coordinates to Polygon3D. If this array is
	  set then we are going to use the perspective incorrect texture
	  mapper instead (DrawPolygonQuick).
	- Generalised polygon drawing for Things and sectors and move the
	  code to draw an array of polygons to the common ancestor: PolygonSet.
	  This makes the code smaller and maintanance easier.
	- Implemented UV and UVA commands in polygon loader.  With these
	  commands you specify the texture coordinates to be used for the
	  first three vertices (only for triangles right now).  When you use
	  this command texture mapping of this polygon will happen differently
	  using DrawPolygonQuick (not perspective correct).
17-Dec-1998
	- Incorporated patch from Mattias Engdegard which enhances
	  the way the X11 port opens it's visual and window. Among
	  other things this means that CS will give a nice error message
	  when it can't find a visual with 8, 15, or 16-bit support.
	- Added new version of the 16-bit scanline drawers from Chris
	  Stokes. He continued the very good work of Olivier Langlois.
	- I had to disable the loading of WAVE files from the library
	  again. It doesn't work on Solaris (but it does work on Linux).
	  You can enable it again and try it on your system if you want
	  (the code is in general/loader/csloader.cpp at line 2732).
	  I suspect the bug has to do with a known but hard to find
	  and reproduce bug in the archive code.
	- *** Release of 0.11_043 ***
	- New CIRCLE command in world files. This command is actually
	  a macro for creating vertices in a circle. The syntax is:
	  CIRCLE (x,y,z:rx,ry,rz,num). With (x,y,z) the center of the
	  circle, rx,ry,rz the radius of each axis respectively. One of
	  these rx,ry,rz must be zero. That is then the plane of the
	  circle. num is the number of vertices to generate along the
	  circle. Normally the vertices are generated in clockwise
	  order. If num is negative the the vertices are generated
	  in anti-clockwise order. This macro can be intermingled with
	  other VERTEX commands and will generate the specified number
	  of vertices with the corresponding indices.
	- Discovered and fixed large memory leak in the sprite drawing
	  code.
16-Dec-1998
	- Added freebsd.mak from Andrew Kenneth Milton.
	- Received new 16-bit scanline drawer in from Olivier Langlois
	  in assembly. He reports that it should be about 200% faster!!!
	- Received new versions of math3d.cpp and math3d.h which contains
	  many VC++ assembler optimizations for many used mathematical
	  operations.
	- Received complete Linux/OpenGL port from Gary Haussmann. Note
	  that although all code is there I didn't manage to compile it
	  yet. Since I will not be here most of the time I suggest you
	  ask Gary Haussmann himself for help (he is on the list).
	- New patches to sound from Nathaniel Saint Martin. The missile
	  sound should work now (on Linux and Windows).
	  Also new Visual C++ project files.
15-Dec-1998
	- Added a few fixes from Nathaniel on the Direct3D port.
	- A few fixes to PrimEdit.
	- Received first part of the OpenGL port for Linux from Gary Haussmann
	  <haussman@cthulhu.engr.sgi.com>!
14-Dec-1998
	- New patch from Andrew Zabolotny. Again he changed the 'out'
	  directory structure to prevent limits in DOS. The DJGPP/DOS
	  port is 'almost' working now. Sometimes it runs, sometimes not.
          The walktest executable runs almost all the time (at least debug
	  version) but I had some very strange problems with mazed; it
	  regularily crashes in Matrix3::getinverse function (even deeper:
	  in operator * (Matrix3,float)).  Under debugger it looks VERY
	  strange :-( Can't understand what happens.
	- Fixed bug in pseudo-dynamic lightmap creation. Strange that I
	  never encountered this bug before.
	- Added new patch from Ayal Pinkus to the curve code. Currently
	  it has no support for lighting yet but all other stuff works
	  very well. Note that there is a problem with collision detection
	  and curves. If you have curves in the level you need to turn
	  collision detection off by using the -nocolldet commandline option.
	- Added new version of math3d.h which makes almost all Vector3
	  functions inline. This should give a considerable speed increase in
	  almost all areas of Crystal Space (haven't tested it yet). Philipp
	  Spoth created this with the help of Olivier Langlois.
	- New patch to sound system from Nathaniel Saint Martin. He started
	  support for threads in the Windows version. There is still a problem
	  with the sound support in libraries. So I don't think you will
	  actually hear something when the missile explodes. However, you
	  can try the snd_play console command.
	- Also Nathaniel sent me an update to the Linux sound drivers from
	  Gert Steenssens. According to Nathaniel they should work now.
	- Small change suggested by Michael K.
	- New version of Mdl2Spr from Seth Galbraith. Skins are automatically
	  resized to powers of 2 (can be disabled with -r switch). Skin groups
	  are fully supported (animated skins in Quake).
	- *** Release of 0.11_042 ***
13-Dec-1998
	- Added CONVEX statement for THING with which you can indicate that
	  a Thing is convex. In that case the 3D Engine can do optimizations
	  on that Thing. SIXFACEs are always convex so the optimization is
	  enabled by default there.
	- Added FOG statement to SIXFACE and SIXFACE templates.
	- Implemented volumetric fog for Things. Still preliminary:
		- Putting multiple fog volumes in one sector can give
		  fogging errors (when one is visible in front of the
		  other).
		- Putting a fog volume in a foggy sector will not work
		  correctly.
		- The routine that handles fog could be written better.
		- Foggy objects may not be included in lighting routines.
	  However, the effect is nice and I think it will also be very
	  nice for simulating light which hits particles.
12-Dec-1998
	- Changed the naming of lightmap entries in the cache on disk.
	  The previous naming scheme depended on the names of Sectors,
	  Things and polygons but those are not guaranteed to be unique.
	  The new scheme uses the unique identifier. The disadvantage
	  of this method is that adding a single polygon to the level
	  will probably invalidate almost ALL cache entries.
	- If the '-recalc' option is not given then lightmaps will NEVER
	  be calculated even if they are not in the cache. In that case
	  the lightmaps will just be made black. To recalculate, you must
	  give the -recalc option.
	- Changed default light level from 40 to 20. This means that
	  polygons on which no light falls will be lighted to level 20
	  instead of 40. This looks much nicer.
	- Fixed bug in infinite maze generator which was caused by the
	  introduction of fog.
	- Added s_fog command with which you can set or view the amount of
	  fog in the current sector (the sector where the camera is).
	  Syntax is 's_fog r,g,b,density'.
11-Dec-1998
	- Fixed bug in collision detection code which caused crash when
	  quitting.
	- Changed BSP routines so that the original polygon is kept (but
	  marked as not needing to be drawn). The lighted texture and
	  lightmaps are shared in the original polygon for all other
	  polygons that have been split from that one.
	- Added MOVEABLE keyword to THING and SIXFACE which indicates if a
	  Thing will be able to move.  This option defaults to 'false'.  If
	  'false' the 3D Engine will be able to do special optimizations on
	  that Thing (see the STATBSP option).
	- Added STATBSP command to ROOM and SECTOR. This command is
	  mutually exclusive with BSP. If you use it all unmoveable Things in
	  this sector will be put in a BSP tree for that sector. Those Things
	  can then be drawn using Z fill instead of the Z buffer which is
	  of course considerably more optimal. With the MOVEABLE keyword
	  you can control if a Thing should be included in this BSP tree.
	  Be careful with this. If the BSP tree causes too many polygon
	  splits and the Things are too small then you will actually get a
	  performance loss with this. This feature is much better when used
	  on large Things which are not complex.
	- Added DO_MMX statement in user.mak. So support for MMX compiled in
	  in CS can now be controlled from within the makefiles. As a
	  consequence the MMX support will now work again (it didn't work
	  because the right include files which defined DO_MMX where not
	  included by the right source files).
	- Modified the BSP builder so that it can also optimize based on the
	  minimal amount of splits instead of choosing a polygon which has
	  the most other polygons on the same plane. This generates better
	  BSP trees for the new STATBSP option.
10-Dec-1998
	- Nathaniel Saint Martin added two commands 'snd_volume' and 'snd_play'
	  to experiment with the sound system. 'snd_play' expects the name of
	  a Wav file and 'snd_volume' expects a value between 0 and 1.
	  Note that sound supports only works on Windows right now.
	- Received new version of mdl2spr from Seth Galbraith. It fixes the
	  bugs with the skin vertices. There are still two known problems:
	  1. doesn't export skins to an image format Crystal Space knows.
	  2. doesn't resize skins to a power of two automatically.
	- New Visual C++ project files from Nathaniel.  Nathaniel also
	  seperated the project files from the source files which I think is a
	  very good idea.  All Visual C++ project files can now be found in
	  cryst/src/visualc.
	- New sound system from Nathaniel Saint Martin.  Wave files can be
	  loaded from zip archive (world and library).  standard.zip has been
	  updated with three wav files (for missile sounds).  If the sound
	  system works ok the missile should make some sounds (a 'woosh' sound
	  when fired and a 'boom' sound when exploding :-)
	- Faster version of Polygon3D::clip_poly from Olivier Langlois.
9-Dec-1998
	- Ayal Pinkus added initial support for curved surfaces with my help.
	  I added the framework which will eventually allow any type of
	  curve to be added. Ayal added a Bezier curve with 3x3 control points.
	  There is still nothing to see yet except for a wireframe.
	  We need some more work for that.
7-Dec-1998
	- Received and integrated working Windows port from Dan Ogles. The
	  Direct3D port also works but lightmaps are disabled. There is a
	  bug with lightmaps and Dan would like people to have a look at
	  this bug. He has trouble finding it.
	- Received and integrated patch from Andrew Zabolotny. He improved
	  COM static linking. He also changed the makefiles so that it is
	  easier to compiler for static linking. Use the modifier USE_DLL=no
	  if you want static COM linking (example 'make linux USE_DLL=no').
	- Received and integrated yet another patch from Andrew Zabolotny.
	  This patch contains an almost functional DOS/DJGPP port. It
	  compiles but crashes at startup. So he still has to do some
	  debugging. Also some other changes.
	- Received and integarted patch from Alex Pfaffe with a new version
	  of his collision detection system. See README_CD for all changes.
	  Here is a summary: No longer depends on RAPID (license free!).
	  Some performance enhancements.
	- I removed the DO_CD compilation flag. Collision detection is now
	  always compiled in CS. You can still disabled it using the
	  'colldet' console command however.
	- Changed Polygon3D::clip_poly_plane() again with a new version I
	  received from Philipp Spoth. This version is faster so this should
	  improve overall performance a bit.
	- Implemented suggestion from Jesko Schwarzer <jesko@bigfoot.de>
	  which improved speed of the fog drawers a little.
	- New indent.pro from Andrew Zabolotny which works for indent 1.8.
	- *** Release of 0.11_041 ***
	- Fixed softrndr.cpp for dynamic linking.
	- Fixed linux makefiles for dynamic linking.
	  I had broken the makefile system somewhat. Now it should work better.
4-Dec-1998
	- Improved palette calculation when simulating 16-bit display mode
	  on an 8-bit display (X11 version only).
3-Dec-1998
	- Fixed Scan16::draw_scanline_fog_view_565.
2-Dec-1998
	- Received new sound system from Nathaniel Saint Martin. Also have
	  a look at this documentation: sound.html.
	- Some changes to the BeOS port from Xavier Pianet.
	- Xavier Pianet patches csregsvr so that it accepts multiple
	  libraries on the commandline.
	- *** Release of 0.11_040 ***
1-Dec-1998
	- Added p_alpha command to change the alpha transparency value of a
	  portal.
	- Added general draw_scanline_alpha drawer which can draw any alpha
	  transparent value but is of course slower. It works only in 16-bit
	  mode. In 8-bit mode however we are a bit more clever about selecting
	  the right 25%, 50% or 75% alpha transparency mapper depending on the
	  which alpha value is closest.
	- Added 'extension' command to access the system dependent extensions
	  (like sim_pal, sim_grey, and sim_332) from the console.
	- New 'bind' command to bind a key to a command.  Except for the arrow
	  keys for movement and the tab key there are no default key
	  assignments left.
	- Crystal Space reads 'autoexec.cfg' at startup. This file can then
	  contain bind or other commands.
	- Fixed elapsed time in NextFrame. It was always 0.
	- Added experimental bot which will eventually roam the Crystal Space
	  dungeons. Currently it does not do much except collide agains the
	  nearest wall and often get stuck there. Use the 'addbot' command to
	  add a bot.
30-Nov-1998
	- Moved fog fields from thing.h to polyset.h because I also plan
	  to add volumetric fog to sectors.
	- Added PerformExtension() support back to csGraphics2D. This was
	  removed by the COM port but I need it.
	- This means that the f1, f2, and f3 keys function again when you
	  are in simulated 15/16-bit mode (for the X11 port only). Note that
	  simulate 15/16-bit mode can currently only be selected by
	  recompiling. The -sdepth commandline option is broken.
	- Added volumetric fog support for sectors. It works very well but
	  is still slow. I also added the needed support for volumetric
	  fog volumes in csGraphics3D.
	- IMPORTANT WARNING! Constructors for object declared globally
	  are NOT called automatically if in a DLL.
	  Therefore the creation of the mathematical tables is now
	  put back in initialize instead of the constructor.
	- Considerably improved performance of the fog routines by using
	  fixed point and a lookup table for the 'exp' function. It is still
	  not ideal because there are two divides every pixel.
27-Nov-1998
	- New patch from Andrew Zabolotny:
		- OS/2 port is now functional but with a few problems.
		- MazeD is up again.
		- I've fixed the font IDs - they were completely messed up,
		  for example csFontCourier resulting in displaying Police
		  font, csFontTiny corresponding to Courier and so on. Each
		  font has now a "fixed-width" variant, i.e: csFontCourier
		  and csFontCourierFixed.
		- Fixed up some warnings in source code.
	- Update on the BeOS port from Xavier Pianet.
	- Added some functions to the ITextureContainer COM interface to
	  help the separation of the software texture cache from the 3D
	  Engine.
	- Did more work on the separation of the software texture cache
	  from the 3D Engine. For example, I moved the subtex_size
	  and subtex_dynlight static configuration values from the
	  TextureCache to PolyTexture.
	- Succesfully seperated the software cache from the 3D Engine.
	  Now the render directory is completely unused by the 3D Engine
	  except for the COM interface include files.
	  I also removed the COM interfaces for the texture cache as this
	  is now a private structure of the software renderer and the
	  outside world should now as little as possible about this.
	- Renamed SoftwareRenderer.cpp to softrndr.cpp to make life somewhat
	  easier for DOS systems.
	- *** Release of 0.11_039 ***
	- Fixed compilation bug which prevented proper compiling of version
	  0.11r039.
	- Added util/memheap.cpp to the sources of softrndr.so.
	- Fixed makefile for xlib2d.so target. The -lgcc commandline option
	  to the linker HAS to go after all other object files.
	- Implemented first depth-based fog which will be the basis for
	  the volumetric fog implementation. It works very nicely but it is
	  still slow (unoptimized).
26-Nov-1998
	- As part of the ongoing API cleanup I renamed Sector to csSector,
	  World to csWorld and Camera to csCamera. More will follow soon.
	- Made 'mirror' and 'sector' in csCamera private and provided
	  inline accessory functions.
	- New patch from Andrew Zabolotny with changes to the OS/2 port
	  and also some further changes to the makefile system.
	  There is a chance that the OS/2 port works (it compiles). Andrew
	  wasn't able to test it though.
	- Moved csrect.* from src/engine/basic to src/geometry.
	  Moved csvector.* and csstrvec.* from src/engine/basic to src/util.
	  Moved csbase.h from src/engine/basic to src/util.
	  NOTE! Make sure to update all needed project files and make sure
	  to remove old versions!
	- Renamed Clipper to csClipper, BoxClipper to csBoxClipper and
	  PolygonClipper to csPolygonClipper.
	- List of lights in sector is now a csObjVector. As a consequence
	  the fixed limit of 32 static lights in every sector is now removed!
	- Renamed Sector::[gs]et_level_... to Sector::get_ambient_color
	  and Sector::set_ambient_color.
	- Renamed Light, StatLight, and DynLight to csLight, csStatLight,
	  and csDynLight.
25-Nov-1998
	- Based on a suggestion from Andrew Zabolotny I changed the -O3 in
	  the linux makefile to -O6. According to him the pentium
	  optimizations with pgcc are only enabled with -O4 or higher.
	  I'm curious to see what difference this makes.
	- Received some patches from Andrew Zabolotny:
		- He again considerably changed (improved) the makefile
		  system. Now there is a mk/system directory (the old mk/tmpl
		  directory is obsolete) which contains system targets. For
		  example there is a linux.mak there but also an xlib2d.mak
		  for the X11 2D driver. Type 'make' to see the possible
		  options for your system.
		  He also modified the directory structure in 'out'.
		  system.mak is gone.
		- Added LGPL copyrights to COM stuff.
		- Removed DllMain from drivers because it is Windows specific.
		  Instead created general DllInitialize. Windows DllMain
		  can call this one and other OSes will call it from
		  csLoadLibrary().
		- Made a start at porting OS/2 to COM. It is not ready yet.
	- Fixed bug in lightmap generator with textures that were oriented
	  differently.
	- *** Release of 0.11_038 ***
24-Nov-1998
	- I managed to get the static COM emulation working. This can open the
	  way to the DOS port. The XLib port can now be compiled both as a
	  static COM system or as the usual dynamic COM system (prefered).
	- Based on code from Olivier Langlois I converted the static and
	  dynamic lightmap generators on a scanline drawer.  Not only is this
	  more optimal but this also generates MUCH nicer lightmaps because
	  the border cases are not missed anymore.  Another consequence of
	  this is that it is no longer needed to scale the light-patch before
	  applying it (the scale of the view frustrum when entering a portal
	  is still there.  That's another problem).
	- I fixed the software renderer so that it supports arbitrary mipmaps.
	  The 'verynice' option works again.
	- Changed World::start_sector so that it is NULL when not given.
	- Added elapsed_time and current_time to NextFrame so that these
	  parameters can be used for correct timing. Also added this parameter
	  to the sprite stuff. The sprite stuff already had correct timing but
	  now this happens through this parameter instead of letting it call
	  SystemGetTime() directly.
	- Because this makes the API considerably cleaner I started using
	  csObjVector in World instead of the linked lists that are used now.
	  At least, I'm going to use csObjVector for more static objects.
	  The list of sectors is already converted.
	- Converted list of libraries, PolyPlanes, collections, sprite
	  templates, thing templates, and scripts to csObjVector.
	- Also converted list of thing and sprite templates in library object.
23-Nov-1998
	- Fixed bug with checking of dirty sub-textures which could cause
	  crashes (triggered easily in some cases with a dynamic light).
	- Added modified version of Polygon3D::clip_poly_plane() from Philipp
	  Spoth.  This version avoids the hardcoded limit and should also be a
	  little faster (not really measurable though).
	- Clipper in csView is now only constructed once.
20-Nov-1998
	- Added suggestion from Seth Galbraith to use the cosinus in the
	  lighting routines (so light diminishes depending on the angle from
	  the source of the light with the destination polygon).  This gives a
	  much better effect and I wonder why nobody told me this before :-)
	- Added -cosfact commandline option, COSINUS_FACTOR configuration file
	  option and 'cosfact' console command to control the above option
	  (values between -1 and 1).
	- Changed notation in console (and thus for binding keys) to
	  increment/ decrement a value.  It used to be 'command +x' or
	  'command -x'.  Now it is 'command ++x' or 'command --x'.
18-Nov-1998
	- Optimizations from Olivier Langlois in Matrix3::getinverse () and
	  Vector2::which_side_2d.
	- *** Release of 0.11_037 ***
16-Nov-1998
	- Added 'UV_SHIFT(du,dv)' option in TEXTURE statement of polygons with
	  which you can shift the u,v as given by the other texture statements.
15-Nov-1998
	- Fixed bug in static and dynamic lighting code which could cause
	  dark borders for lightmaps. Lighting is now considerably nicer
	  especially for smaller polygons.
	- Added 'START' command in world file which with you can set the
	  starting location of the camera. Use as follows in a WORLD ()
	  statement: START (sector,x,y,z).
	- Added ACCURATE_THINGS configuration value (and -accthg commandline
	  option) to control a more accurate form of precalculated lighting.
	  In this mode when Things are checked for shadows the surrounding
	  points are also checked.  This results in more accurate lightmaps
	  (more visually pleasing at least) but is a LOT slower (only when
	  actually recalculating the lightmaps).  I still need a better
	  algorithm to handle shadows of Things.  This option is on by
	  default!
14-Nov-1998
	- Fixed bug in texture cache (introduced in 0.11r036) which would
	  cause incorrectly rendered/lighted sub-textures.
	- Really fixed bug with rendering of unlighted textures with COM port.
	  However, there still seems to be a rendering bug with very large
	  unlighted textures which was not present in the past.
	- Changed missile code so that it now stops a little sooner when
	  detecting a collision. Before this patch the missile often exploded
	  just behind the polygon that was hit, giving strange and ugly results.
13-Nov-1998
	- Ryan J. Evans found a bug in operator< for the Box class.
	- Added port to BeOS from Xavier Pianet <xavier@planet.dk>! His
	  port is already COM compliant :-)
	  You can compile his port using the standard makefile (first copy
	  mk/tmpl/beos.mak to mk/system.mak) or else with the included
	  project files. Note that you need to disable optimization and
	  assembler in mk/user.mak. The BeOS port does not run correctly
	  with optimization on currently.
	- 'xlib2d.so' has been renamed to 'lib2d.so'.
	- There are now targets in the makefile to quickly setup the right
	  system ('make linux', 'make solaris', 'make beos').
	- *** Release of 0.11_036 ***
12-Nov-1998
	- Made the next step towards seperation of the software texture cache:
	  the texture cache now uses IPolygonTexture instead of IPolyTexture
	  directly.
10-Nov-1998
	- Fixed bug in drawing of unlighted textures introduced with the
	  COM port. It would simply crash.
	- Included patch from Olivier Langlois which greatly speeds up the
	  calculation of the static lighting when many things are present.
9-Nov-1998
	- Removed a lot of includes from other include files. Sometimes I
	  split include files in order to get a finer granularity and also
	  decrease the number of dependencies.
	- A few type errors fixed with COM functions (Long confused with
	  ULong).
	- *** Release of 0.11_035 ***
8-Nov-1998
	- PolyTexture is no longer part of the texture cache.  PolyTexture is
	  ment to describe how the lighted texture is mapped onto the polygon.
	  The fact that it is or isn't used in a texture cache depends on the
	  3D driver used and should not be part of PolyTexture.  However for
	  optimization reasons we opted to have a void* which is private
	  texture cache data.  This private data points to a structure which
	  is really part of the texture cache.  This change will help move the
	  software texture cache to the software renderer where it belongs.
	- I discovered that my dependency generator is still not perfect. I'd
	  like to use $(OUT) instead of the spellt-out name inside the depency
	  file but I can't get SED to do this for me.
	- Wrote class Dumper which contains all dump functions. This way the
	  real classes don't have to worry about this anymore and this also
	  removes the dependency on system/system.h.
	- Moved the loading of the system dependent Sys... driver classes from
	  system/system.h to system/sysdriv.h and only include sysdriv.h when
	  really needed. This reduces the number of dependencies considerably.
6-Nov-1998
	- Fixed the makefile system a bit.
	- Added BMP loading support for texture from Olivier Langlois.
	  I change the makefile system to support this.
	- Removed the USE_PRIVATE_POOL define and made this code the
	  current code (old code is removed).
	- Removed the USE_NEW_HEAP define and made this code the current
	  code (the code using memheap is kept, the old code is removed).
	- Removed dependency of csobject.h to trigger.h. This dependency
	  caused troubles for make the software renderer library.
	- Started work which will help in the seperation of the software
	  texture cache renderer from Crystal Space.
5-Nov-1998
	- Few fixes from Olivier Langlois (infinite maze).
4-Nov-1998
	- Added patch from Alex Pfaffe which fixes his collision detection
	  code so that the 'c' command works again.
	- Added patches from Andrew Zabolotny regarding MazeD. Note that
	  MazeD doesn't compile anymore because of the COM changes. Andrew
	  will have to fix it first. Anyway, here is what Andrew patches:
	  	- MAX_TEXTURES keyword is now obsolete (ignored for backward
		  compatibility).
		- Added loading of rooms.
		- Added 'draft view setup' dialog (press Ctrl+D).
		- Removed the "modification axis setup" button. Now axis setup
		  dialog can be called by clicking right mouse button on
		  Rotate, Scale2D and scale3D buttons. I.e. the interface is
		  more consistent now - to setup a specific tool click RMB on
		  its icon, and if it can be set up, a dialog will appear.
	- Added sound.txt to docs directory which explains how the sound
	  system works (From Nathaniel Saint Martin).
	- Added sound patch from Nathaniel. Here are the main changes:
		- Better au file support (with u-Law).
		- Added iff/8svx amiga file support.
		- Added aiff mac file support (warning, get format from hex
		  editor).
		- Some patches and module player is broken (need for redesign).
	- Fixed rand1 and rand2 as directed by Olivier Langlois.
	- Added #define cpuid line to mmx.h but in comments because I don't
	  know how it will affect compilers which DO support cpuid.  Comments
	  please? The cpuid define is from Olivier Langlois.
	- Olivier Langlois partially found the bug which caused the infinite
	  maze not to show correct lighting on some systems. The bug is still
	  only partially solved however.
	- *** Release of 0.11_034 ***
3-Nov-1998
	- Fixed several bugs related to commands. Not all console commands
	  are functional yet but 'mipmap' and 'edges' work again.
	- Added CacheRectTexture which eliminates a little of the overhead
	  of calling COM functions.
	- Change makefiles so that dependency files are now put in 'out'.
	  This means you only have to do 'make depend' once.
	- Started work on trying to move the texture cache to the 3D module.
2-Nov-1998
	- Transparency works again.
	- Call for alpha_mask in scanline drawer moved outside scanline
	  routine and CERTAINLY NOT after the 1/z.  This improves performance
	  considerably for the 16-bit renderer.
1-Nov-1998
	- After some debugging I finally got the Linux/X11 port to work WITH
	  the new COM and shared library stuff! This is a great step forward!
	- Since the assembler is now put in a shared libary there were some
	  problems.  Apparently the current assembler code is not compatible
	  with the -fPIC option.  As I don't know how to fix the assembler I
	  just removed the -fPIC option :-) This doesn't seem to give any
	  problems.
30-Oct-1998
	- The Linux port is still not working but I managed to compile all
	  needed stuff. I still have to debug further to see what is going
	  on. The windows port should work although you'll have to change
	  the project files probably because I renamed a few files from
	  *.cxx to *.cpp.
	- *** Release of 0.11_033 ***
28-Oct-1998
	- Yesterday I received the long-awaited COM patch from Dan Ogles.
	  This patch allows seperation of the 3D and 2D graphics classes
	  from Crystal Space. The final goal of this is to allow
	  plug-and-play with a similar phylosophy to what LibGGI can do.
	- Today I started integrating this part in the Linux port and also
	  tried to port Linux/X11 with the new COM system. This is not
	  easy so I only managed to get to a stage of succesful compilation
	  but not any further.
	- In order to help this process I drastically changed the makefile
	  system. There is now a single makefile called 'makefile' which
	  controls everything. It uses auxiliary makefiles which are all
	  located in the 'mk' directory. 'mk/system.mak' and 'mk/user.mak'
	  are important and should be edited by the user before compiling.
23-Oct-1998
	- Added tcache.txt document which explains the texture cache
	  and how the lookup tables are used inside the texture cache.
22-Oct-1998
	- Received assembly DrawLine routine from Olivier Langlois (for
	  Visual C++ only). His routine is almost six times faster. DrawLine
	  is currently used in the wireframe object (could be important for
	  maps later) and while debugging.
	- Received assembly scanline drawers from Olivier Langlois for
	  Visual C++. Finally Visual C++ users can benefit from the same
	  speed enhancement that was already present for GCC users.
	  MMX detecting code has also been ported to Visual C++.
	  He got about 10% speed improvement that way which is also
	  what I observed with the GCC assembly optimizations.
	- Little changes on WireFrame object from Olivier Langlois (Olivier
	  is a big fan of my WireFrame class, I doubt that many other people
	  know that it is even in Crystal Space :-)
	  New function 'apply' that applies a function to all objects in the
	  wireframe. A counter in the WireFrame class that is incremented
	  each time the add_* () methods are called.
	- New patch to sound system from Nathaniel Saint Martin. Changes are:
		- Add primitive .au file support.
        	- Add volume control for audio device.
        	- Sound driver can be disabled.
       		- Some patches...
	- Received new collision detection patch from Alex Pfaffe. Changes are:
		- Collision detection is now on by default if compiled into the
		  system. Use -nocolldet to turn it off. To temporarily disable
		  collision detection while the program runs you can still use
		  '*'.
		- Added CD for MultiSectorObject. Sydney gets some respect and
		  you cannot walk through her anymore :-)
		- Implemented link to collision system via ColliderP class.
		  CD is now almost completely independent from the rest of
		  CS classes.
		- Rewritten version of RAPID now compiles and links. It has all
		  matrix and vector logic replaced with native CS code.
		- Move VTYPE to header file.
	- Fixed small bug in texture.cpp. Thanks to <wormzstudios@iname.com>
	  for spotting this.
	- Unlighted textures (like the sky) and 3D sprites did not work
	  correctly in the latest beta when using 16-bit rendering.  I fixed
	  this.
	- Rodolphe Ortalo <ortalo@laas.fr> sent me an additional purify run
	  for beta 0.11r031. I fixed one bug in event handling related to this.
	  There are still other bugs remaining but I have too little time
	  currently to pursue them further. I've included his purify log so
	  that maybe other people can have a look as well (see purify.log).
	  Note that it is for version 0.11r031 so line numbers may differ
	  slightly with version 0.11r032 or later.
	- *** Release of 0.11_032 ***
21-Oct-1998
	- Removed call to strdup because it is not compatible with
	  the 'delete []' operator.
	- Added -DDISP_... to all makefiles. This is used by cs.mak to
	  put a more specific directory inside 'out'. For example, the linux
	  version will now compile to either: LINUX_X11, LINUX_SVGA, or
	  LINUX_GGI.
	  DO_X11, DO_SVGALIB, and DO_GGI have been replaced throughout all
	  code by DISP_X11, DISP_SVGA, and DISP_GGI.
	- Renamed glide files to shorter filenames so that they will give no
	  problems anymore on DOS compilers.
20-Oct-1998
	- Thanks to Dmitry Derevyanko <dmitryd@robotics.eecs.Berkeley.edu>
	  and his debug run of Purify I managed to fix some bugs. Also thanks
	  for Rodolphe Ortalo <ortalo@laas.fr> for also doing a purify run.
	  Fixes so far:
	  	- In engine/objects/cssprite.cpp: 'delete []' instead of
		  'delete'.
		- evqHead and evqTail were not initialized. I initialized them
		  to 0.
		- Initialized initial palette table to all zero's.
		- Overflow in texture cache fixed.  The texture cache was
		  reading out of the lightmap bounds.  As a consequence the
		  texture cache should also be a LITTLE faster :-)
		- Uninitialized 'Color::len' in loading of ROOM statement.
		- Uninitialized lightmap_up_to_date in Polygon3D.
	- Type VTYPE has been made 'float' by default.
	- Added missing sound patches to system/system.h and system/system.cpp
	  (Dan, they are really small patches.  I hope you don't mind? :-)
	  from Nathaniel Saint Martin.
	- Received update on sound system from Nathaniel. On Windows CS will
	  actually play a sound when started provided it can find tada.wav
	  and/or blues.mod in the current directory.
	- New patch from Andrew Zabolotny:
		- Removed a lot of warnings emitted by gcc -Wall.
		- Fixed new code from Greg Ewing which broke color table
		  lookup for transparent textures. Number 0 is reserved and
		  should always map to 0.
		- MazeD file requester works better now (it will recognize
		  directories properly).
		- 2D scaling and rotation in MazeD works.
		- Ctrl and Alt keys now locks horizontally/vertically during
		  move and scale operations.
		- Implemented "Create 2D figure" functions (triangle, square,
		  ..., N-gon). To setup number of sides for N-gon, right-click
		  on N-gon icon.
		- Added spinbox control (see N-gon setup dialog). As a result,
		  MazeD.zip has changed again.
	- Added d3dcache.cpp from Nathaniel so that the Direct3D port works
	  again but with a bug in the lightmaps and a crash at exit. This is
	  just to have something before Dan Ogles finishes his work.
	- *** Release of 0.11_031 ***
19-Oct-1998
	- Renamed 'collision' directory to 'colldet' to have better
	  support on DOS.
	- Fixed a few bugs regarding the LightView classes. It is
	  possible that these bugs caused a lot of crashes on some
	  systems.
	- Fixed serious bug in various parts of the code related to the
	  use of CHK where CHKB should be used. These bugs could (and
	  would) severly overwrite memory if the memory debugger was enabled.
	  Not a good thing bug few people should worry about this since
	  the memory debugger is not enabled by default!
	- Fixed serious bug in the handling of lightmaps. Thanks to Andrew
	  Zabolotny for spotting this. His fix was (almost) perfect :-)
	  This bug could certainly give problems as memory was freed twice.
16-Oct-1998
	- Added 'lm_grid' debug command which shows an overlayed grid on
	  all lighted textures so that you can see where the lightmap
	  points are and their color. Clear the texture cache after using
	  this command to see the result.
	- Added 'lm_only' debug command which will disable texture rendering
	  and only render the lightmaps. Clear the texture cache after using
	  this command to see the result.
	- Andrew Zabolotny is back! Received a new patch from him with the
	  following changes:
		- Fixed police.fnt. The upper half of the 256-char table was
		  garbage. Now pseudo-graphics is useable.
		- Added new italic font. This is a fixed-width oblique font.
		- For MazeD:
			- Added checkboxes and radio button controls to CSWS.
			- Added the "clear model" dialog (Model->Clear).
			- I've placed move/rotate/scale under a single
			  toolbar submenu. Scaling is now available in two
			  modifications: 2D and 3D
			- Added the "rotation/scaling center" dialog (last
			  entry under "Modify" button on toolbox).
	- Changed makefile.djg so that it will do mkdir with backward slashes.
	- *** Release of 0.11_030 ***
15-Oct-1998
	- Received sound code from Nathaniel Saint Martin. His code is nicely
	  integrated with CS and I think this is an important first step
	  towards useable sound in CS. Note that there is currently only
	  a sound driver for Windows and also note that there are actually
	  no sounds yet in Crystal Space :-)
	- Vyacheslav L. Chupyatov <sla@istu.udm.ru> suggested some fixes
	  so that CS can be compiled with Watcom C++ v11.
14-Oct-1998
	- Received and integrated MemoryHeap class for the texture cache from
	  Olivier Langlois. I have not tested the performance differences yet
	  but if his code is faster I'm going to remove the old stuff.
	- Received patch from Rodolphe Ortalo <ortalo@laas.fr> which allows
	  the new Glide port to work on Linux. I have not really integrated
	  this patch with CS because it touches system dependent stuff and
	  I don't want to make life more difficult for Dan Ogles :-)
	  So just extract the 'linglide.tgz' archive and put the source
	  files in render/glide.
	- Received a patch from Alex Pfaffe on his collision detection
	  code. Here is a summary of his changes (see README_CD for more
	  details):
	  	- Converted RAPID from double to float and also converted it
		  to use Vector3 and Matrix3.
		  Also eliminated unneeded functionality from RAPID.
		- Adding support for Sphere, Segment, Axis Aligned and
  		  coarser Oriented Bounding Box collision testing.
		- Created collision subdir. Moved RAPID code there. So RAPID
		  code can be compiled with standard makefiles.
		  Removed and renamed a few files.
		- Created Collider class. CD code from all over the engine is
		  moved to that class. PS and 3DSprite have a Collider member.
		- Remove CD info from Camera.
		- Remove CD info from World.
		- Remove CD info from Sector.
		- Added support for csSprite3D.
		- Implement collision reaction in walktest.
  			- Camera can not walk through walls.
  			- Will fall if not on floor.
  			- Will climb inclines.
			- There are situations where you can get stuck, or
			  fall out of the level.
		  NOTE FROM JORRIT! This only works if collision detection is
		  enabled from the commandline (-colldet)! Enabling it later
		  using the 'colldet' console command or the '*' key does not
		  seem to work.
		- Performance doesn't show any degradation if collision
	  detection is on or off.
		- Enhanced console display.
	  I must say that this seems to work REALLY well (ignoring a few bugs
	  here and there).  Alex promised me that he is working on a
	  license-free version.  So this seems like the way to go!
	- Received patch from Greg Ewing <greg@cosc.canterbury.ac.nz> which
	  greatly speeds up the computing of the initial palette table.
	- Received new Gnu-Win32 makefiles from Paul Garceau.
	- Cleaned up the infinite maze code.  Made a seperate class
	  InfiniteMaze.  Note that the first part of the maze is not random.
	  Go to the end of the corridor and turn left to start generating in
	  the random maze.  Also note that it may all be black for you.  I'm
	  still looking for this bug.  On some systems it (sometimes) happens
	  that all lightmaps are black.  On my linux system it works however.
	- *** Release of 0.11_029 ***
	- Received profiling results for Glide accelerated version from
	  Rodolphe Ortalo. See gprof.out.large and gprof.out.large.dyn.
13-Oct-1998
	- Fixed a bug in 16-bit texture cache.  As an optimization white light
	  is handled slightly differently than colored light.  However this
	  seems to give ugly visual results.  I fixed this but I'm still not
	  sure why the original routine didn't work correctly.
	- Fixed a bug in the generation of the infinite maze which could cause
	  overlapping sectors.
11-Oct-1998
	- Cleaned up several classes a bit as a result of the new infinite
	  maze.  Creating the infinite maze showed some deficiencies in the
	  current API.
	- Enhanced cs.mak so that is now also generates a seperate directory
	  tree for the profiled version (<SYSTEM>_p) and automatically
	  disables assembler as well.
10-Oct-1998
	- Infinite maze generator works more or less.  Use -infinite on the
	  commandline (no data file required) and you will get an infinite
	  level.  Sectors are created as you go and static lighting is also
	  calculated at run-time.  As you will notice this is not (yet) very
	  efficient.
	  I think there is room for optimization however.
	  Also note that this is a QUICK and DIRTY hack.
	  The one nice thing is the subclass of PortalCS that I use.
	  Polymorphism is nice :-)
	  Note that there is still a bug somewhere which I can't seem to find.
	  On Linux the infinite maze generator works but on Solaris the static
	  lighting seems not calculated correctly.  I don't know how it will
	  behave on other systems.
9-Oct-1998
	- Added sparse 3D matrix. I'm going to use this for an infinite maze
	  generator. This sparse matrix may be useful for other things as well.
7-Oct-1998
	- Added first support for volumetric fog. This will be implemented
	  by using convex Things which are flagged as being a fog volume.
	  The reason that I use a Thing directly and not a sub-class of
	  Thing or PolygonSet is that I'd like to be able to transform a
	  convex Thing to a fog-volume and vice versa.
	  NOTE! There is NO fog yet.
6-Oct-1998
	- Received new collision detection code from Alex Pfaffe. He has
	  switched from using the VCOLLIDE library to the RAPID library (which
	  was already used from within VCOLLIDE). His code can be enabled
	  with the '-colldet' commandline option or else the 'colldet' console
	  command (assigned to '*' key). You can also use the COLLDET config
	  file option.
	  NOTE! I'd like to know how easy it is to compile RAPID on other
	  systems!!! If you have problems you can always disable this
	  collision detection by setting DO_CD=no instead of DO_CD=yes in the
	  cs.mak file. But it would be nice if you could try to compile it
	  with other systems and let me know how it works. You'll probably
	  have to adapt the makefile.
	- Fixed bug with libraries. Now textures declared in a library can
	  also be loaded from that library. It will check in the library
	  first. If that fails it will check the original world file. If that
	  fails it will load from the current directory.
	- Olivier Langlois found and fixed a memory leak in the loader of the
	  configuration file.
	- *** Release of 0.11_028 ***
	- Allocate lightmaps on non-po2 size instead of po2 texture size.
	  Lightmaps will become smaller because of this. Note that this means
	  that all levels will have to be recalculated!!! (use the -recalc
	  option).
5-Oct-1998
	- Received a nice missile sprite from Ayal Pinkus. I included it in
	  standard.zip. I also received a sprite from Seth Galbraith
	  <sgalbrai@linknet.kitsap.lib.wa.us> which I also included. CS now
	  randomly selects one of the missiles. Note that the missile from
	  Seth is rotated 90 degrees. Although this let's you look at the
	  missile from a better angle this is not really what is intended :-)
	  But I'm to lazy to rotate it.
	- Received update to MD2 and MDL sprite convertors from Nathaniel
	  Saint Martin.  See the contrib archive.
1-Oct-1998
	- Added support for putting textures in a library.
	- Updated worldfmt.txt doc for new syntax features.
	- Created the first standard.zip library which contains a missile
	  sprite! The 'fire' command will load this sprite and use it so that
	  there is now a visible missile :-) Please, I'm no graphic designer.
	  The missile looks HORRIBLE :-) Can someone make a nicer missile for
	  me?  A Quake II or Quake model for a missile will do fine as we can
	  convert this to CS.
	- standard.zip is now automatically loaded.
	- *** Release of 0.11_027 ***
30-Sep-1998
	- Added Glide port for Crystal Space from Xavier Trochu and Nathaniel
	  Saint Martin!!! This port is still beta and unfinished. Currently
	  it is also only tested on Windows. In src/render/glide/todogl.html
	  you can find the things that are still missing in this port.
	  Check out http://members.xoom.com/xtrochu/cspace/index.html for
	  information about this port.
	- Added MultiSectorObject, a class that I'm going to use for
	  implementing sprites and Things that can be in several sectors at
	  the same time.
	- Sprites use the MultiSectorObject already but there is no real
	  support for them yet. The MultiSectorObject for the sprite is
	  created currently with one sector only. Sprites are already linked
	  to the World instead of to one or more sectors. So almost
	  everything is there except for the actual rendering changes.
	- Added Library class which represents a library of stuff (mostly
	  sprite and Thing templates, and textures currently). The library
	  stuff is there but it is not functional yet.
	- Loading from library works now and you can add Things and sprites
	  in a library. There is now a LIBRARY keyword which can add to
	  a world file. A library is also a ZIP file which should (among
	  other things) contain a file called 'library'. This 'library' is
	  very much like a world file except that it starts with the keyword
	  'LIBRARY' instead of 'WORLD'. Textures that are used by objects in
	  the library may be put in the library ZIP file.
29-Sep-1998
	- A few small patches from Xavier Trochu for his upcoming Glide port.
	- Fixed a bug which caused dynamic lights to look strange on the
	  Glide port.
	- Changed the software renderer so that it can also work with po2
	  lightmaps. This feature is useful for me so that I can test
	  lightmap changes that I do and be (almost) sure that they will also
	  work with hardware accelerated ports.
	- Solved a small boundary bug with the sub-texture dynamic light
	  extension. I THINK that the code is now correct in all cases.
	- Included a few patches from Xavier Hosxe <xhosxe@cyrano.com> which
	  allows compilation of Crystal Space with the current version of
	  EGCS. It looks as if there is a bug in the EGCS compiler which
	  prevents proper compilation of an otherwise legal construction.
	  The explicit casts that this bugfix require are ugly but needed
	  for EGCS (and harmless for all other compilers).
	- *** Release of 0.11_026 ***
28-Sep-1998
	- Fixed bug in the handling of the dynamic light test commands.
	  Spotted by Xavier Trochu.
	- Fixed bug with dynamic lights in combination with unlightable
	  textures. Thanks to Xavier Trochu for spotting this.
	- Added new notes.txt document which is intended as a memory expansion
	  for my brains :-) It is really unstructured (as is my brain probably
	  :-)
	- Moved light.txt to attic since it is obsolete.
	- Added debug0, debug1, and debug2 console commands which are for
	  general debugging. The specific purpose of every command is not
	  defined and depends on what I (or somebody else) is debugging at
	  a particular time. The 'd' key is assigned to 'debug0 toggle' (so
	  debug0 should generally be a boolean command) and shf-d is assigned
	  to 'debug1'.
	- Clicking on a polygon will now hilight it (like the 'hilight'
	  command). This in addition to the usual debug activities that take
	  place then.
	- Added dump() function to PolyTexture and call this dump function
	  from Polygon3D::dump().
	- Finally solved the bug which prevented the second optimization from
	  working perfectly. There is still a small bug (at this moment only
	  visible in large.zip at the railing of the stairs) but I think I can
	  fix that one easily. The sub-texture dynamic lighting extension
	  optimization is now enabled by default. Enjoy the performance
	  increase (when viewing dynamic lights only).
	  An unfortunate consequence of the fix is that it is no longer
	  possible to share lightmaps internally. Crystal Space can reuse
	  lightmaps over different mipmap levels in order to save (a little)
	  space. This is no longer possible. I don't think this is a big
	  problem however.
	- Implemented internal 24-bit textures. Instead of the default
	  'global' mode (with one shared palette for all textures) and
	  the previous 'private' mode (with every texture having its own
	  palette) we now have '24bit' mode. In this mode every texture
	  is specified in full 24-bit RGB giving best possible quality.
	  Currently only supported for 16-bit rendering.
	- Note that semi-transparent (NOT alpha-mapped) textures currently
	  do not work with the new 24bit mode and that unlighted textures
	  and sprites will also not work.
	- I use an inner texture cache loop donated by Philipp Spoth.  This is
	  the first time somebody donates code which forces me to implement a
	  planned feature sooner :-)
25-Sep-1998
	- I had to disable the extension to the optimization because of a bug
	  which I can't seem to find.  I'll look more closely to this bug in
	  the weekend.  So this version does NOT give the full optimization
	  possible.  If you do want to enable this feature anyway you can
	  still do it with the 'dyncache' command.  The bug will cause some
	  sub-textures to be refreshed incorrectly.
	- Added userdata to csObject.
	- Added new 'fire' command which fires a missile :-) The missile
	  itself is not visible yet (we need a moving sprite for that and I'm
	  not ready yet for sprites moving in and out sectors).  But you can
	  see the light that the missile shines on the walls.  So shooting
	  this missile in the middle of some room will not do much since there
	  are no walls in the vicinity that will be lighted.  Shoot the
	  missile nearby some wall.  Note that the missile will have a random
	  color everytime you shoot.  The spacebar has been assigned to the
	  'fire' command.  The 'activate' command has been moved to the 'a'
	  key.  The 'capture' command has been moved to the alt-a key.  By the
	  way, the missile will explode when it touches a wall.  So be careful
	  :-)
	- Received new texmem.* from Xavier Trochu and a small patch to win32.h.
	- *** Release of 0.11_025 ***
24-Sep-1998
	- Fixed a bug in Matrix3::gettranspose () so that I can really use
	  it for orthonormal transformations.
	- Created OrthoTransform and let Camera inherit from this.
	- I started implementing the sub-texture optimization. With this
	  optimization the textures in the texture cache are not computed
	  completely but only the parts that are actually visible. It starts
	  to work but there is still some work to do.
	- Added new command 'subcache' with which you can control the new
	  optimization. 'subcache 0' disables it (old behaviour) while
	  any other number (power of two) will indicate the size of the given
	  sub-texture.
	- Implemented the second level of sub-texture optimization in
	  combination with dynamic lights.  Dynamic lights only cause
	  recalculations of the parts of the texture that were really changed.
	  Here is a small optimization chart.  This performance test was done
	  in large.zip at the view of the stairs (coordper).  There is a
	  dynamic light of radius 6 just at the stairs.  The display is
	  640x480x16.  I get the following results:
	  	- No dynamic light:         26.3 FPS
		- Without sub-texture opt:  9.8 FPS
		- With sub-texture opt:     13.2 FPS
		- With sub-tex and dyn opt: 16.5 FPS
	  As you can see, both the sub-texture optimization and the dynamic
	  lighting extension have a significant impact on performance.
	- Added new 'dyncache' command which controls the above optimization
	  (on or off).
23-Sep-1998
	- Added new class OrthoTransform which is a special version of
	  ReversibleTransform which is more efficient (doesn't do matrix
	  inversion but just transpose) but is more restricted (only works
	  on orthonormal transformations like the camera matrix).
22-Sep-1998
	- New loader patches from Ivan Avramovic. He is nearing completion
	  of his mission :-)
	- Received a few missing files from Alex Pfaffe to get the interface
	  from CS with the VCOLLIDE library working. Unfortunatelly there
	  are still some other missing files :-(
	- Received batchfile for DOS to make the 'out' directory structure
	  required by the makefiles from Jeff Lundin <jlundin@fz.ml.org>.
	  I incorporated this (UNTESTED) in makefile.djg so that it should
	  be called automatically.
	- *** Release of 0.11_024 ***
21-Sep-1998
	- Antonio Gascon <434961@cepsz.unizar.es> presented me a few notes
	  according inversion of matrices. It appears that with an orthonormal
	  matrix (like the camera matrix is) inversion is the same as
	  transposing the matrix. Since transpose is a LOT simpler and faster
	  this is a good tip. So moving around the world should be a little
	  faster (not noticable probably).
	- Doug Rabson <dfr@nlsystems.com> mentioned that I should free the
	  SHM memory (X port only) as soon as attaching to it. If I don't
	  do this then there could be memory leaks when the program crashes
	  or something.
	- Applied several patches from Olivier Langlois to get CS to compile
	  with Borland C++. Due to time limits I did not manage to apply all
	  the patches.
	- Applied various patches from Xavier Trochu. Also received a new
	  project files for Visual C++ and a new class which is going to be
	  used by the Glide port (the Glide port isn't here yet).
20-Sep-1998
	- Considerable improvement of the 8-bit true_rgb and 16-bit
	  true_rgb texture cache. In 640x480 at the view of the stair
	  (coordper) I get 25FPS without dynamic lights. With a dynamic
	  light (very large radius of 60 units so that all visible textures
	  would have to be recomputed every frame) performance improved from
	  5.5FPS to 6.5FPS. This optimization is achieved by a reorganization
	  of the lookup tables.
19-Sep-1998
	- I discovered that the -ffast-math commandline option for GCC caused
	  problems on my Pentium II processor.  So I removed the option (it
	  didn't do much in any case) from makefile.lnx and makefile.svg.
	- 'Fixed' the problem with the X/SHM extension being overwritten in
	  the X port but not the way I wanted it.  I would have liked to use
	  the CompletionEvent that should work with the XShmPutImage function
	  but I don't seem to get those events (even though 'send_event' in
	  the above function is True).  So now I just do an XSync which is
	  less efficient but it works.
18-Sep-1998
	- Received patch from Alex Pfaffe <AlexPfaffe@csi.com> with an
	  interface to the VCOLLIDE library. This should enable collision
	  detection. Currently it does not work yet (a few files are
	  missing) so the support is disabled.
	- *** Release of 0.11_023 ***
17-Sep-1998
	- Received patch from Ivan Avramovic fixing his point-polygon
	  distance checker. There were some cases in which dynamic lighting
	  would not work correctly because of this.
	- Removed three include files from system/system.h making it a little
	  less dependent on other stuff.
	- Completely removed the floating lights. They are now obsolete and
	  removing them makes the code considerably easier. Code has moved
	  to attic.
	- Updated todo.html.
14-Sep-1998
	- Xavier Trochu mentioned that I should change the variable 'far'
	  into something else as it is already defined in Windows/DOS.
	- New patches from Andrew Zabolotny:
	    - Rewrote the csEventQueue class. It, in general, did not worked
	      as designed. Sometimes queue got filled with garbage (when
	      queue was resized) and the modifications made to it made it
	      non-thread safe. In OS/2 input events are put into queue
	      asynchronously in an another thread.
	    - Sprite loading/saving (saving incomplete). Try loading
	      sydney.zip :-)
11-Sep-1998
	- New algorithm for checking if a light can reach a polygon from
	  Ivan Avramovic.
	- *** Release of 0.11_022 ***
10-Sep-1998
	- Olivier Langlois found a bug in ScanStr. ScanStr confused 'yes'
	  with 'no' :-)  Ivan Avramovic then spotted that if I fixed that
	  bug then I should also fix another one. I did :-)
	- Added untested support for PO2 lightmaps required for hardware
	  accelerated 3D drivers. This has NOT BEEN tested. I need help
	  from Dan Ogles first so that he can implement the new functionality.
	  This means that the Direct3D driver is STILL broken in this release.
	- Received new project files for Visual C++ from Xavier Trochu.
	- Received new loader patches from Ivan Avramovic.
9-Sep-1998
	- First substantial optimization of the dynamic lighting system.
	  The previous version always calculated infinite frustrums
	  as seen from the light. This means that even if the radius
	  of the light is small every polygon that is visible from the
	  position of the light is going to be recalculated in the
	  texture cache as soon as the light moves or changes color/intensity.
	  As can be expected this is slow. Checking for distance GREATLY
	  increases the speed of dynamic lights.
	- Some patches to win32.cpp and some other files from Xavier Trochu.
	- Some patches to win32.cpp and some other files from Nathaniel Saint
	  Martin :-)
	- Ivan Avramovic suggested another fix to the texture cache so that
	  Crystal Space will not crash when exiting (I wonder why I don't get
	  those crashes!)
	- Working on the first changes to support PO2 (power of 2) lightmaps
	  better. PO2 lightmaps will be optional for hardware accelerated
	  ports. The software version does not need it and will not use it.
7-Sep-1998
	- Fundamental change of LightMap classes. PolyLightMap has been
	  renamed to ShadowMap and now only serves a purpose for the
	  pseudo-dynamic lights. LightMap always holds both a static_lm
	  which contains static lighting information and a real_lm
	  which contains the static lighting information and all dynamic
	  and pseudo-dynamic lighting added. This change broke the
	  Direct3D port but Dan Ogles and me are looking into that.
	- Dynamic lights work more or less!!! There is still a lot to
	  do (like support for shadows on things and better optimization
	  for the lighting code, support for mirrors, ...) but it is a
	  start. There is now also support for a linked list of dynamic
	  lights in World (maybe that's not the right place because
	  dynamic lights belong in a sector?)
	- Changed 'addlight', 'dellight' and 'dellights' commands
	  (the '1' key) to use the new dynamic lights instead of the
	  floating lights. Eventually I will probably remove the floating
	  lights as they are becoming obsolete very soon.
	- New patch from Ivan Avramovic containing further changes on the
	  CS Loader.
	- Small patch from Nathaniel Saint Martin on the windows port.
	- *** Release of 0.11_021 ***
3-Sep-1998
	- Received patch from Ivan Avramovic removing a lot of warnings.
	- Received patch from Nathaniel Saint Martin fixing a few Windows
	  errors. Another patch from Nathaniel enables double buffering
	  in the Windows port.
	- Started first work on real good dynamic lighting.
	- Ivan Avramovic found why the last beta crashes on exiting.
	  I fixed this.
2-Sep-1998
	- Received new project files for Visual C++ from Nathaniel.
	- *** Release of 0.11_020 ***
1-Sep-1998
	- Some fixes from Olivier Langlois <olanglois@sympatico.ca> on the
	  event handling system. Apparantly there were some memory leaks.
	- First patch from Ivan Avramovic on a OO-rewrite of the current
	  world file loader. The intended purpose is to seperate the 3D
	  engine objects from the file loading. This makes them more
	  independent on the actual world file format and also forces us
	  to have a better API on the engine objects. This is the first
	  patch. More will follow.
	- Ivan Avramovic send me a file stltest.zip which contains a
	  small test program to test if your compiler can do STL and
	  if it does it correctly. This is just a test to know if we
	  could (in principle) move to STL with little or no problems.
	  Please mail the results of this test (negative or positive)
	  to me.
	- *** Release of 0.11_019 ***
	- Received new patch from Andrew Zabolotny:
	    - I've moved all opendir() code for Windows (which uses
	      _findfirst, _findnext and _findclose) into win32-specific code.
	      I've made a opendir() for Windows using them; if some other port
	      doesn't have opendir() it has to:
    		a) define a variable called __NEED_OPENDIR_PROTOTYPE which
		   will define a prototype for opendir(), readdir() and
		   closedir() in system.h
    		b) Typedef a structure called "DIR" which contains all
		   information related to current opendir ()
    		c) Typedef a structure called "dirent" which contains at least
		   the following members:
			char d_name [MAXPATHLEN + 1];// File name, 0 terminated
			long d_size;		     // File size (bytes)
    		d) implement its system-specific opendir() in system-dependent
		   files, using those prototypes.
    		e) If system does not provide a stat() function, define a
		   function:
       			static inline bool isdir (dirent *de) { ... }
       		   in system header file so that it tells whenever a directory
		   entry is a subdirectory or not. Also define a symbol
		   __NO_GENERIC_ISDIR so that generic isdir() which uses
		   stat() will not be defined.
    	      I've left all Windows code in archive.cpp under a #if 0 so that
	      it can be used for reference for some time. It should be deleted
	      soon, however.
	    - New section in config file:
		[MouseDriver]
		; Double click time in 1/1000 seconds
		DOUBLE_CLICK_TIME = 300
		; Maximal distance that mouse can move between clicks for
		; double click to occur
		DOUBLE_CLICK_DIST = 2
    	      Double click event is generated by csMouseDriver object, so no
    	      system-dependent support is required. Keep in mind that if a
	      double-click event is detected, an csevMouseDoubleClick event is
	      generated _INSTEAD_OF_ second csevMouseDown event. So if you
	      notice that somewhere mouse sometimes "doesn't work" when
	      rapidly clicking mouse, its because of this.
	    - File selection dialog: Press Ctrl+O in MazeD to see it.
	    - Rudimentary loading of worlds in MazeD.  I'm using
	      World::load_file for this, so all CrystalSpace features are
	      available such as ZIP support etc.  Only Things are "translated"
	      for now into MazeD objects, however.
	    - Rudimentary support for saving files. No ZIP support for now.
    	    - Fixed memory leak. PolygonInt and PolygonParentInt classes do
    	      not have a virtual destructor defined. If I remember correctly
	      ANSI C++ draft says that every class that has virtual functions
	      should have a virtual destructor. I've added virtual destructors
	      to these classes and everything went right. I've also changed
	      destructors to "virtual" where appropiate in other classes like
	      "World" etc.
    	      There also were some other problems:
    		- polygon set did not deleted their polygons in destructor
    		- thing templates did not deleted their subpolygons in
		  destructor
    	      Also there is still an unresolved problem with dynamic lights.
	      The dynamic lights system is very dirty, and looks more like a
	      temporary kludge than like a ready susbsystem :-) They're kept
	      in a static array which is filled but never freed. I've did not
	      touched this since I presume things here have to be changed in
	      a much more basical way.  I think dynamic lights should be kept
	      in a chain in World object and chained together through their
	      set_next()/get_next() methods.  Also they should be deleted on
	      world destruction like sectors, things, sprites etc do.
	    - I've changed a bit the hierarchy of some classes, and removed
    	      the multiple inheritance that was sometimes used there. Multiple
    	      inheritance is not too effective, besides its clumsy and hard to
    	      understand such a class hierarchy. Now hierarchy (the part that
	      I've touched) looks like:
    		csBase
     		|
     		+-csRect
     		|
     		+-csVector
     		|  |
     		|  +-csStrVector
     		|  |
     		|  +-csObjVector
     		|
     		+-[entire CSWS class hierarchy]
     		|
     		+-csObject
        		|
        		+-csObjectTrigger
        		|  |
        		|  +-Collection
        		|  |
        		|  +-PolygonParentInt
        		|     |
        		|     +-PolygonSet
        		|        |
        		|        +-Sector
        		|
        		+-PolygonInt
           		|
           		+-Polygon3D
	    - I've included a profile called "indent.pro" which is for GNU
	      indent. I've set it up for "indent" to bring sources to
	      CrystalSpace standards. I think some sources needs a bit of
	      reindenting, for example util/gfx/pcx.cpp, util/gfx/tgaimage.*,
	      engine/light/dynlight.*
25-Aug-1998
	- Patch from Ivan Avramovic so that his enhancements for the
	  image loader also compile on Visual C++. There seems to
	  be a bug in Visual C++ which prevents proper initialization
	  of the image loader. There is now a workaround in
	  system/win32/imageldr.*
	- Received makefiles for Gnu-Win32. With these makefiles you
	  can compile CS on Windows NT. The makefiles are from
	  Paul Garceau.
20-Aug-1998
	- Ivan Avramovic found and fixed the bug which caused some unlighted
	  polygons to be texture mapped incorrectly.
	- Ivan Avramovic send me a new patch for the polygon clipper. Now
	  it should be perfect (knock wood :-)
	- New patch from Ivan Avramovic with an update to the image loader
	  classes.
	- New patch from Andrew Zabolotny for his MazeD editor.
	- Received new Visual C++ project files from Xavier Trochu.
	- *** Release of 0.11_018 ***
	- Added -fno-rtti and -fno-exceptions flags to makefile.djg.
18-Aug-1998
	- Received DLL's and all stuff needed to compile CS on Windows.
	  It contains support for Zlib, LibPNG and LibJPEG. I got these
	  files from Xavier Trochu. I put the thing on my homepage and
	  put a pointer there.
17-Aug-1998
	- Update to GGI port from Andrew Apted which brings this port
	  uptodate to the latest changes in the LibGGI API.
	- Patch from Ivan Avramovic to allow for more dynamic adding
	  of image formats. Using his technique one could even add new
	  image formats from within a game without having to recompile
	  Crystal Space for this.
	- Thomas Ogbuji, Chimezie <thomasog@uiuc.edu> has made a world
	  file editor in JAVA. It is not a real level editor (yet?) but
	  it allows you to better edit world files and also preview
	  the things and textures in it. It is really very nice. I recommend
	  checking it out. You can find the latest version at:
		http://www.ews.uiuc.edu/~thomasog/downloads.html
7-Aug-1998
	- Update to the Crystal Space Launcher (Tcl/Tk) from Charles Vidal.
	- New Visual C++ project files from Trochu Xavier.
	- *** Release of 0.11_017 ***
	- Added test to 'c' (coordload command) so that loading a coordinate
	  file which is not generated for the current world does not crash
	  the engine.
	- New patch for the clipper from Ivan Avramovic. It should be a
	  little more efficient now (reintroduced an optimization which
	  was removed because it had some problems on a SPARC).
6-Aug-1998
	- Added a 'STATIC' keyword to portals. If you use this keyword
	  then the destination will remain static even while the object
	  containing the portal moves. Mirrors don't need this keyword
	  otherwise their destination will keep pointing to the original
	  location where the mirror was. But if you want to have a portal
	  on a thing that always points to the same location then you'll
	  have to do this. Thanks for Ivan Avramovic for suggesting the
	  needed mathematics.
	- Note! At this moment static lighting through warping portals
	  is a little broken for things (it works correctly for normal
	  sectors). This also implies that radiosity is also a little broken.
	  The correct shadows will not be generated.
5-Aug-1998
	- 'coordshow' could cause crashes because the string buffer was
	  not large enough. This has been fixed. Thanks to Ivan Avramovic
	  for finding this.
	- With a bit of cooperation from Ivan Avramovic I removed an
	  optimization in polyclip.inc which only works with convex
	  polygons. In CS all polygons are convex but rounding errors
	  can cause slightly concave polygons to be generated on some
	  systems (mainly SPARC currently).
	- Portals on things seem to work correctly now (with the limitation
	  still present that other things in the same sector may not obscure
	  the portal). They even move with the object. To implement this
	  there are now two warping matrices in a Portal, one for object
	  space and one for world space.
	- Received tcl/tk script from Charles Vidal (vidalc@club-internet.fr)
	  which is a front-end for starting Crystal Space. It works very
	  nicely allready but there are still some bugs (it is the first
	  version). Execute with 'wish launcrys.tcl'.
4-Aug-1998
	- New bugfix suggestion from Ivan Avramovic for portals on Things.
	  Thanks to this suggestion I managed to get portals on things
	  working correctly (at least for displaying, now I still need to
	  fix the radiosity code).
	- Removed some debugging stuff ('[', ']', and '=' keys).
	- Provided a work-around for a crashing bug in the texture mapper.
	  When viewing the sky in room.zip through one of the mirror portals
	  on the cube (which you don't have since it is a new version of
	  room.zip :-) the texture mapper tries to draw a small scanline
	  from -21 to -20. Of course this is outside the screen boundaries
	  so a crash happens. I fixed this by just testing every scan
	  that is drawn to the screen boundaries but I think we need a more
	  fundamental fix. Why is the texture mapper trying to draw that
	  scan?
	- Replaced method to create the mirror matrix for radiosity by
	  Plane::get_reflect. This is more efficient than the eigenvalue/
	  eigenvector approach.
	- Added new 'MIRROR' command to 'WARP' in polygons. If you want
	  a portal to mirror you can now say 'WARP (MIRROR ())'. No need
	  to specify the warping transformation. CS will calculate it for
	  you. Of course you can still specify the transformation your-
	  selves if you want it. That way you still have full control
	  over the warping transformation.
	- Just a little note. Portals in things work but there are still
	  some limitations. You should be careful with portals on things
	  which are in sectors that contain other things as well. The
	  problem that the polygons on things are drawn in arbitrary
	  order because the code assumes that the Z buffer takes care
	  of things. Of course this is no longer true if a polygon on a thing
	  is a portal because then the Z buffer will be filled with
	  information from what was rendered through the portal. There are
	  a number of solutions for this but you have to keep in mind
	  that they have NOT been implemented yet.
3-Aug-1998
	- Ivan Avramovic suggested a bugfix for portals on Things. We are
	  slowly getting there :-) The bugfix was in polyclip.inc and had
	  to do with a bad comparison (>= SMALL_EPSILON is replaced with
	  > 0).
31-Jul-1998
	- Large patch from Ivan Avramovic with the following changes:
	    - The Polygon3D::do_perspective() routine has been rewritten,
	      and now handles perspective projection of points closer than
	      SMALL_Z gracefully.
	    - Remember that polygon reflection matrix that you sent out email
	      about?  Well, lucky for you, I had already implemented it.
	      Check out Plane::get_reflect().
	    - Tracked down and fixed a bug in the Texture routines.
	      The problem was, when Texture is constructed, it takes a
	      width and height value, and assigns internal field based on
	      a switch statement which assumes values that are powers of
	      two >= 8.  In this particular case, it was called with w=4 and
	      h=4, so the internal fields were left uninitialized.
  	      The fix was to expand the switch statement to handle the = 4
	      case. I recommend that someone more familiar with the texture
	      code check this out and see if it's possible for other values
	      not handled by the switch to occur.
	    - Fixed several files to remove compiler warnings.  These include
  	      csws/cscomp.cpp, general/walktest/keys.cpp,
	      general/walktest/main.cpp, system/xlib/xwin.cpp, and
	      util/archive.cpp.  I intentionally left the warnings in scan.cpp
	      and scan16.cpp, because they are reminders of unfinished code.
	    - Improved the clipping code.  I did this by creating a new class,
  	      BoxClipper, which is an optimized polygon clipper that handles
	      the special case of clipping to a rectangular region.
  	      Both BoxClipper and PolygonClipper now derive from a pure
	      abstract base, Clipper.  Also, cs3Dview has been modified to use
	      either a BoxClipper or a PolygonClipper as appropriate.
	    - The RenderView class is now derived from Camera, which gives it
	      some new advantages (such as the fact that it is now a
	      Transform, as I'll talk about below).
	    - I enhanced the Vector2 class by adding arithmetic operators,
	      much the same way that I did with its 3D counterpart earlier.
	    - I similarly enhanced the Box class, since I was already
	      there :).  + for union, * for intersection, etc.
	    - I implemented the classes Transform and ReversibleTransform in
	      math3d.  Since transform operations involving a matrix and a
	      vector are so common (camera, Things, warping portals, ...), the
	      functionality has been consolidated into a single class.
	      Transform maintains a matrix and a vector.  ReversibleTransform,
	      which derives from Transform, additionally maintains the inverse
	      transformation matrix.
	    - The Transform class implements a plane transformation which is
	      shorter and more efficient than the old
	      Plane::transform_world2cam() and Plane::transform_cam2world().
	    - The Camera class now derives from ReversibleTransform.  This
	      reduces overhead while parameter passing and is more intuitive
	      then the old code.
	    - With the math code growing the way it was, math3d has been split
	      up into math3d and math2d.  I reimplemented all of the
	      functionality of the static class Segment in two new static
	      classes, Intersect2 and Intersect3.  With these changes, there
	      is no overlap between the math2d and math3d objects.  Plus, it
	      makes a lot more sense to type Intersect3::plane() than it did
	      to type Segment::intersect_segment_plane(). :)
	    - I reimplemented Portal space warping using a
	      ReversibleTransform.  Have a look, it makes the code a lot
	      simpler and more efficient!
	    - The Thing class also uses a ReversibleTransform now.
	    - I eliminated the redundancy and ambiguity in the
	      Matrix3::inverse() call, by reimplementing it as
	      Matrix3::invert() and Matrix3::getinverse().
  	      The old inverse code inverts a matrix by calculating the
	      inverse in a temporary storage, then setting *this to equal the
	      temporary.  In practice, the inverse call was usually used like
	      this:
		Matrix3 m_inv = m;  m_inv.inverse();
  	      Obviously, there is unnecessary overhead.  The new code would
	      look like this:
		Matrix3 m_inv = m.getinverse();
	      The Matrix3.invert() call would be used to actually invert the
	      given matrix.  This also clears up the verbal ambiguity of what
	      a call like inverse() does (does it invert the matrix or just
	      return the inverse of the matrix?).
	    - The csscript camera routines no longer return pointers, just
	      rvalues.  Aside from being most likely moot (once Dan's done
	      with the new scripting), and necessary (because of C++ data
	      protection and the new Transform class), it's a good idea,
	      because you wouldn't want a script to be poking around at the
	      internals of the Camera.
	    - The PolySet transformation routine no longer does visibility
	      testing, because 1) it's done later on anyway, and 2) it
	      interferes with the new perspective algorithm.
	    - Added a few routines to Polygon2D to retrieve specific vertices,
  	      get_first(), get_last(), and get_vertex(int).
	- *** Release of 0.11_016 ***
	- Fix from Ivan Avramovic to his BoxClipper.
30-Jul-1998
	- Added LightView struct which is all the info needed for static
	  lighting. This is similar to the RenderView structure which
	  is all information needed for rendering (this is an implementation
	  enhancement and is not visible from the outside).
	- Light is now correctly reflected by mirrors and reflecting surfaces.
	- Added new -reflect commandline parameter which is to be used
	  together with -recalc and controls the number of reflections that
	  are allowed for static lighting (through mirrors only). In fact it
	  controls how many times the same light beam will affect the same
	  sector. Default is 1 which means that mirrors will not reflect light.
	- Added new 'Lighting' section in cryst.cfg. Added new 'REFLECT'
	  option in Lighting section which is equivalent to -reflect
	  commandline option.
	- Changed config.txt so that all sections are also mentioned with
	  every configuration option.
	- Moved cfg_alpha and cfg_fog to Portal class where it belongs.
	- Light shining through portals with alpha mapping will be changed
	  according to the mean value of the texture on the portal and the
	  color of the light. This is the first step. In (the near?) future
	  I plan to really check where the light of beam hits the portal
	  and use the texel point at that position to recolor the light.
	- Added pseudo radiosity system. You can now enable reflection on
	  normal polygons as well as mirrors. In that case you get something
	  which resembles radiosity. Depending on the '-reflect' parameter
	  you actually get better radiosity (more reflections).
	- Added '-rad' and '-norad' commandline options to enable/disable
	  new pseudo-radiosity system. Also added Lighting/RADIOSITY
	  config file option the control radiosity.
29-Jul-1998
	- Lights shine through warping portals correctly.
	- New patch from Andrew Zabolotny:
	    - Fixed the problem with "recycle windows" command. Button first
	      sent this event to his parent then done some other work, which
	      is inacceptable for specifically this command, since upon
	      receiving this command application kills all child windows (then
	      re-opens them, but these are other objects).
	    - Fixed many other problems. The memory debugger is a real help!
	      :-)
	    - Added coordinate axis and coordinate grid to MazeD. Also the
	      buttons related to grid and axes all work (zoom, rotate axis,
	      zoom to rectangle, pan rectangle, toggle axis/grid).
	    - Redone a bit the default window layout so that it could fit for
	      less resolutions (for example, 640x480).
	    - Added a very nice document about MazeD the upcoming editor.
	      Look at docs/mazed.html.
	    - Added INSTALL.OS2.
	- Received a bunch of new project files for Visual C++ and the
	  Windows port from Trochu Xavier <xtrochu@yahoo.com>.
	- New CS2VRML from Thomas Ogbuji Chimezie. JAVA source is now
	  included.
	- *** Release of 0.11_015 ***
28-Jul-1998
	- Enhanced warping portals so that you can now also specify a W
	  vector. The warping transformation is now: P' = M*(P-V) + W
	  This is a more general case of the previous system. Mirroring
	  is still supported as a special case (V equal to W, note that this
	  is default is W is not specified).
	  Explanation: P is the point that needs to be warped. V is the
	  vector that is applied to P before the warping matrix (M) occurs.
	  W is the vector that is applied to the pointer after M happened.
	- Included a test so that CS automatically detects if a space
	  warping portal mirrors space. Previously you could only use space
	  warping for mirrors because CS assumed that space was always
	  mirrored. Now you can make infinite corridors (I tried this and it
	  is fun :-)
24-Jul-1998
	- Added alt-v, alt-n, alt-o and alt-p to PrimEdit to toggle
	  the display of the respective types of objects (see primedit.txt
	  for more info).
23-Jul-1998
	- Added INSTALL.Win which I received from Trochu Xavier
	  <xtrochu@yahoo.com>.
	- In the same spirit I created INSTALL.Amiga (which was originally
	  in INSTALL), INSTALL.Unix and INSTALL.Djg.
	  INSTALL still exists and contains general installation instructions
	  as well as instructions about running Crystal Space.
	- New patch from Andrew Zabolotny:
	    - Small changes to memory debugger.  New CHKB(x) macro which puts
	      curly braces around the included command.  Which means that you
	      can use it like 'if (x) CHKB(a=new...) else CHKB(b=new)'.  (note
	      that you shouldn't put an ';' after CHKB(), especially before
	      "else").
            - Added a small routine which dumps all non-free memory blocks and
              where they were allocated. This way, I've caught some bugs with
	      memory that is allocated in constructor and not deallocated in
	      destructor, for example. For example, Textures class did this
	      (it did not delete all TextureMM * objects). Other big memory
	      leak I've caught was related to SaveArea...RestoreArea() pair
	      (and mouse pointer actively uses them).  Now MazeD eats TONS
	      less memory :-) since previously it gobbled memory simply by
	      moving the mouse.
	    - Made config variable a pointer, i.e. "extern csIniFile
	      *config". This allows a) to precompute something before
	      initializing config file (for example, the path where config
	      file is placed) and b) this allows destroying the object
	      manually (with delete) before dumping memory blocks; this
	      generates much cleaner reports.
	    - Further progress on MazeD. Added zoom in/out functions,
	      panning, coordinate axes, reworked some other things...
	- Update to CS2VRML convertor from Thomas Ogbuji.
	- *** Release of 0.11_014 ***
22-Jul-1998
	- Small patches to Windows version from Trochu Xavier
	  <xtrochu@yahoo.com>.
	- New Patch from Andrew Zabolotny:
	    - Made various changes to the Watcom port (rewritten
	      keyboard and mouse handlers). The mouse handler is
	      currently broken and thus disabled.
	    - Changes to inifile so that it is more compatible with
	      various C++ compilers (problem with visibility of
	      private/public inner classes).
	    - Fixed OS/2 makefile and cs.mak.
	    - Patch to MazeD (the editor). Now you can add and
	      delete vertices. But since there is no save the editor
	      is still not useful :-)
	- Received convertor from CS world files to VRML from Thomas Ogbuji
	  <chimezie.thomas.ogbuji@intel.com>. This version only supports
	  world files using the SECTOR/THING interface (not ROOM/SIXFACE).
	  Currently room.zip and maze.zip are the only levels that use that
	  interface. This limitation is no problem because the ROOM/SIXFACE
	  interface is obsolete in any case.
	  See the contrib directory for cs2vrml.
	  Source for the convertor is not yet included in this version because
	  it needs to be cleaned up.
	- Received new VM (virtual machine) version from Tor Andersson.
	  This VM is probably a good candidate for a VM in Crystal Space.
	  Currently it has not been integrated yet. See in
	  contrib/varia/vm2.zip.
20-Jul-1998
	- Added info about ORIG/FIRST/SECOND to texmap.txt. This is
	  useful information for people wanting to understand the world
	  format.
17-Jul-1998
	- Received patch from Ivan Avramovic. He has totally rewritten
	  the camera class to make it more consistant. He also removed the
	  physics capabilities. They need to be rewritten anyway.
	  Note that this patch is unfinished. Ivan re-introduced an old
	  bug which I fixed by shifting the viewpoint backwards. But Ivan
	  is going to fix this in a much nicer way.
	- New patch from Andrew Zabolotny:
	    - Major rewrite of DJGPP port.  The ALLEGRO port is not affected.
	      The videosystem and mouse handling are totally rewritten.  It
	      uses second videopage if available.  When Flush() is called the
	      visible page is simply flipped instead of copied.  This should
	      be substantialy faster.  It also supports 16 X-modes (8-bit)
	      like 256x200, 360x360, 376x564, and 360x240.  And of course
	      support for 16-bit color modes.
	    - Removed shift, alt, ctrl args from do_keypress - they were
	      obsolete since anyway csKeyboardDriver tracks shift, ctrl
	      and alt state in its Key member variable. Updated all system
	      ports for this.
	    - Completely rewritten keyboard handler for DJGPP. Now it works
	      almost as good as in OS/2 :-) Also I've added a thing that
	      makes keyboard handler behave nicely in OS/2 DOS sessions...
	    - I've fixed the "+D" constraint in MMX code. DJGPP also had
	      problems with it.
	    - Rewritten mouse driver for DJGPP. Now it has almost the same
	      functionality as the OS/2 port (:"-) except system mouse
	      pointers which are always painted by software (i.e. csws).
	      There is a new configuration setting
	      VideoDriver::MouseSensivity which is a float value; default
	      value is 1.0 which sets a reasonable (at least for me) mouse
	      sensivity; to make mouse twice faster one should set
    		[VideoDriver]
    		MouseSensivity = 2.0
	    - Small patch to MazeD.
	    - Important change in makefiles (makefiles using cs.mak). All
	      object files are now put in a 'out/<system>' directory. There
	      is also a seperate tree for debugging and optimizing. This
	      means that you can now switch between debugging and optimizing
	      without having to recompile everything. Note that you need
	      GNU make for this to work (this was already the case, but now
	      even more).
	- *** Release of 0.11_013 ***
10-Jul-1998
	- Update to MazeD editor from Andrew Zabolotny.
	- *** Release of 0.11_012 ***
8-Jul-1998
	- Added updated project files for CS, MazeD, Simple, and PrimEdit
	  for Windows/Visual C++ (from Nathaniel).
	- Updated md2 to CS convertor from Nathaniel.
7-Jul-1998
	- As suggested by an algorithm given to me by Nathaniel (who
	  got it from someone else) I implemented texel filtering. This
	  is still a very experimental feature. First things will slow
	  down considerably while there is still room for optimization
	  (a little). Secondly the filtering causes artifacts at the borders
	  of polygons. This is to be expected since filtering will pick
	  texels from nearby locations. But the nearby location does not
	  need to be on the the polygon actually.
	  Turn the feature on/off with the 'texelflt' command or with
	  the 'alt-t' key (previous definition of 'alt-t' has been
	  removed, it was not very useful).
	  One observation is that texel filtering has almost no effect
	  on polygons which are far away. So one way to speed things up
	  is to only use texel filtering on polygons that are close.
	- Small patch to inifile.cpp from Robert Blum.
	- *** Release of 0.11_011 ***
6-Jul-1998
	- New patch from Andrew Zabolotny with many changes to his CS
	  editor (but still not functional yet) and also a global
	  patch to System::Loop to make this function reentrant.
2-Jul-1998
	- Added a 'hints' section to worldfmt.txt.
1-Jul-1998
	- I found a 3ds reader somewhere on my disk. I made a very
	  small and primitive convertor from it. Please see contrib/3ds.
30-Jun-1998
	- Removed DrawTriangle from g3d_d3d.cpp.
	- Removed warnings and a few little bugs from the md2 and mdl
	  sprite convertors. Also make the convertors work regardless
	  of the endianess of the processor. Also added a makefile
	  (for GNU make).
	  Note! md22spr has not been tested by me (I don't have any
	  md2 models, I don't have Quake II).
	- Put both 'csdoc' and 'docs' inside doc archive.
	  Put 'contrib' and 'attic' inside ctr archive.
	- *** Release of 0.11_010 ***
	- Received patch from Nathaniel with a better next_frame for
	  sprites.
29-Jun-1998
	- Added 'depth' coloring to WireFrame.
	- Added polygon object to WireFrame.
	- Received patch from Andrew Zabolotny:
	    - Polygon clipper should be more accurate (but the Solaris bug
	      is still not fixed, but see below).
	    - I've commented out all constructors from Vector2 class.
	      Believe it or not, with a (even empty) constructor declared,
	      the following definition:
    		  Vector2 Vertices [100];
    	      generates a empty loop in which the empty constructor is
	      called, even if it is inline the empty loop still remains!
	      So this gives also some clocks per each ::Clip routine.
	    - Started work on MazeD (the Crystal Space editor!). Not much
	      done for now.
	- Increased precision of debugging output.
	- Increased precision of camera loading/saving (for debugging).
	- Fixed the bug of the polygon clipper in Solaris by making the
	  test a bit more sloppy.
	- *** Release of 0.11_009 ***
	- Received new sprite code with support for frame sets (actions).
	  These group several frames so that you can have several logical
	  sets of frames inside a sprite (like 'run', 'walk', 'die',
	  'shoot', ...). Also support for changing skins (default skin in
	  sprite template definition and possible to override in sprite
	  instantiation). 3D and 2D texture coordinates have merged into
	  one array to allow for more flexibility (not only the 3D coords
	  can move now, also the 2D texture coords can move). Note that old
	  levels using sprites will no longer work because the format is
	  not compatible.
	- Updated mdl convertor from Nathaniel and a new md2 (Quake II)
	  model convertor (see md22spr directory in contrib).
28-Jun-1998
	- Because I can't get portals in things working ok right now I
	  decided that I needed better debugging tools. Preferably real-time
	  while the engine is running. So I started development on a
	  WireFrame class. This class will also be useful for a map later on.
	  I added the 'map' command with which you can disable the map
	  (default), overlay the map or use the map as standalone.
	  The 'm' key is assigned to the 'map' command.
26-Jun-1998
	- *** Release of 0.11_008 ***
	- Fixed small bug in reading of local config file. This bug only
	  occured if there is NO local config file in the ZIP file.
	- I had to remove a kludge added by Andrew in his archive code.
	  I don't know what harm this will do but I had some problems
	  with files that could not be loaded from a ZIP file.
25-Jun-1998
	- Received small patch from Markus Oberhumer
	  <k3040e4@wildsau.idv-edu.uni-linz.ac.at> for the X port:
	    - Meta keys are also mapped to Alt.
	    - Test in signal handler to avoid recursion (I also
	      added this test to the svgalib and ggilib ports).
	- I discovered what is wrong with the portals in Things.  In fact
	  mirroring portals never did work correctly but in normal sectors
	  (that don't use the BSP) you can never encounter the effect.  The
	  problem is that mirroring works by internally mirroring the camera
	  only (leaving the world unmirrored) and rendering through the 2D
	  clipping portal as seen from the different position.  This works
	  perfectly until there are objects AFTER the mirror.  These will
	  block the view of the mirrored camera since they will now be put in
	  front of the camera (between the camera and the mirroring portal).
	  To fix this I'm changing the internal renderer so that it can now
	  (optionally) clip to an arbitrary plane: the plane of the portal
	  polygon.  I've made it so that there is actually little or no
	  overhead if there are no portals emerging in the middle of the
	  sector (the case that could give problems).
	- Added a new RenderView structure (in engine/rview.h) which
	  combines all the parameters that are used for rendering an object
	  given the current camera. I don't use Camera itself for this
	  because RenderView will be changed by the process of rendering
	  itself (going through portals, mirrors, ...). All 'draw'
	  functions of Sectors, Things, Sprites, ... accept a single
	  RenderView argument now instead of a the old bunch.
	- Received a nice Quake mdl convertor from Nathaniel. Now we
	  can finally use the free editors/viewers available for mdl
	  and convert it to a sprite for Crystal Space. Nice!
	  The code is in the contrib/mdl2spr directory. I have not made a
	  general makefile yet. Currently it only contains a project file
	  for Visual C++. Report to Nathaniel for more comments or bugs.
	- I almost managed to let the portals on things work but I'm not
	  there yet.
24-Jun-1998
	- Changed FOG command so that it accepts a value between
	  0 and 1 instead of 0 and 100.
	- Started support for portals in things. The portals themselves
	  are no problem. Things use standard polygons which support portals.
	  But there appear to be some bugs. I'm looking into it.
	- New patch from Andrew Zabolotny with the following changes:
	    - Allowed assembler routines to work at interpolation step 8
	      as well. This should give more precise texture mapping (but
	      slower of course). However there seem to be some problems with
	      artifacts (according to Andrew).
	    - New polygon clippers. The clipper is now about 30 to 40%
	      faster. In general this will not gain you much FPS since the
	      clipper is not the major CPU eater. But faster is faster.
	      Nobody should complain! :-)
	      NOTE! I JUST DISCOVERED THAT THIS CLIPPER HAS SOME BUGS.
	      They currently only seem to appear on non-intel platforms.
	      Please ignore the possible clipping errors. Andrew will
	      provide a patch soon.
	    - The Z buffered scanline drawers and also the alpha mapped
	      scanline drawers are redone in assembler. This will give
	      a considerable increase of speed. Please have a look at the
	      included BENCHMARK file (from Andrew) to see some of the
	      results.
	    - New method in Graphics2D class: SetMouseCursor which sets mouse
	      cursor shape (arrow or hourglass or whatever). If some shape
	      is not supported, mouse cursor should be hidden and procedure
	      should return false - in this case CSWS will draw mouse cursor
	      itself. By default this method returns "false" for all shapes
	      except "arrow", but all existing ports (except OS/2 of course
	      :-) won't hide cursor if needed mouse cursor shape is not
	      available - at least this should be fixed ASAP by respective
	      port maintainers.
	    - Added a new method to csSystemDriver called Sleep (int msec).
	      It is used by CSWS when it do not have messages in message
	      queue to process. This is used to free CPU for other tasks
	      when a GUI program is idle.
	    - New switch in cfg file: SYS_MOUSE_CURSOR = {yes|no} tells OS/2
	      graphics driver whenever to use system mouse pointers (when a
	      counterpart is available) or use software emulation (which is
	      always available).  In case software cursors are requested,
	      system graphics driver should turn system mouse pointer off
	      (of course only when mouse is over CrystalSpace window). This
	      switch can be also used to turn on/off system mouse cursor in
	      programs that do not implement software emulation (walktest and
	      simple).
	    - Config file has been rewritten. It uses sections now. Also
	      support for comments, saving of INI file if needed (to allow
	      changing options by Crystal Space itself). Support for
	      arbitrary binary values (Base64 format, same as MIME uses).
	      Now you can store textures in config files :-)
	      Fixed bug with reading config files from acrhives with
	      non-standard line ends (LF) on DOS and Macintoshes.
	    - Several small fixes to csws.
23-Jun-1998
	- Updated worldfmt.txt for new FOG command.
	- Bugfix in 'transp off' command. This would crash.
	- Assembler is now automatically disabled if you choose debug.
	- Received patch from Dan Ogles which disables 'verynice' if hardware
	  acceleration is used.
22-Jun-1998
	- Discovered that the flat scanline drawers used the wrong precision
	  for the Z buffer (16:16 fixed point instead of 8:24).
	- Tried to create a fogging scanline drawer. It works but I still have
	  to find a good formula for fog. The 8-bit version is not implemented
	  yet.
	- Added new FOG command to polygon.
	- Fog works now. There was an error in my formulas which was the
	  reason that it didn't work as expected.
	  I still need to generalize fog. Currently it only works in
	  5:6:5 mode.
21-Jun-1998
	- Implemented flat scanline drawers in 16-bit (no texture mapping).
	  This is useful for debugging.
19-Jun-1998
	- Small bugfix to PrimEdit from Nathaniel.
	- Added '45o' status line option to show if 45 degree mode is on.
	- Implemented constrained movement and vertex creation to two
	  planes (intersection of both planes).
	- 'a' key (align) will now also align/create a plane if a polygon
	  is selected (it will align/create a plane corresponding to the
	  plane of the polygon).
	- Polygons can now also be used in addition to planes for constraints
	  of vertices (creation and movement).
	- The behaviour of the grid has changed a bit. If only one plane is
	  selected it will show the 21x21 grid as was before. If two planes
	  are selected it will show 21 dots along the line of intersection
	  of the two planes. The dots are spaced 1 unit from each other.
	  If more than two planes are selected no grid is shown.
	  Thus the grid now shows the constraints that are active (only works
	  for planes though and not for polygons).
	- New patch from Andrew Zabolotny:
	    - Cleanup of graph3d.cpp.
	    - Fixed bug with Z coordinates of vertices of sprite polygons not
	      computed properly.
	    - Little patch to DrawPolygonQuick (1/z instead of z is given
	      as input).
	    - Removed DrawTriangle from Direct3D port.
	    - Fixed a bug with assembler draw_pi_scanline drawing one pixel
	      more than needed.
	    - Implemented the MMX routine for draw_pi_scanline. However, the
	      gain is much too poor :-( about 2%. It wasn't worth the effort.
	    - Bug in MMX instruction list of GAS 2.8.1 (see contrib/binutils
	      for patch to GAS).
	- Patch from Nathaniel so that the three mouse buttons work in the
	  Windows port (important for the editor).
	  Also new project files for Crystal Space, Simple and PrimEdit
	  (for Visual C++/Windows).
	- *** Release of 0.11_007 ***
18-Jun-1998
	- Finished the basic editor. It works now. It can load and save
	  from/to the file 'world.pri'. See the new document
	  'docs/primedit.txt' for a full explanation of all keys and
	  capabilities.
	- *** Release of 0.11_006 ***
	- Added 'drag-box' capability to select multiple vertices at once.
	- Changed behaviour of clicking and selecting so that shift is
	  for multi select and without shift deselects all selected (standard
	  behaviour).
	- New 'N' key to face the camera north.
	- New 'ctrl-n' key to toggle 45 degree mode. In this mode all movement
	  of the camera happens in 45 degree multiples.
17-Jun-1998
	- Continued work on the primitive editor.
	- Patch from Nathaniel which should fix the Direct3D sprites.
	  Let's see if it does.
16-Jun-1998
	- Started work on a primitive vertex/polygon editor for Crystal
	  Space. This should be better than no editor and I think I can
	  do this quickly.
15-Jun-1998
	- Little patch from Nathaniel for Direct3D version (fixes the
	  auto-detection of Direct3D).
	- New patch from Andrew Zabolotny with the following changes:
	    - Old DrawTriangle code moved to attic.
	    - draw_scanline_triangle is now part of Scan and Scan16
	      (it is called draw_pi_scanline for 'perspective incorrect').
	    - Assembly version of draw_pi_scanline with a significant
	      speed improvement (with two sprites almost covering the screen
	      the frame rate jumps from ~15 to ~17.4).
	    - Started work on MMX version of draw_pi_scanline.
	    - Updated documentation on porting Crystal Space to other
	      platforms.
	- *** Release of 0.11_005 ***
11-Jun-1998
	- Increased speed of walking/runnig forward/backward three times (it
	  was a bit too slow to my taste).
	- A new patch from Andrew Zabolotny:
	    - Unified order of vertices in sprite triangles with order of
    	      vertices in clipping view vertices and polygon vertices. Now
	      sprite triangles should be defined in reverse order (relative
	      to previous betas). The order of view polygon and polygons has
	      not been touched.  Now triangles are clockwise in screen space
	      (as seen with Y pointing up) or anti-clockwise (with Y pointing
	      down).
	    - Added a routine called DrawPolygonQuick which draws a
    	      perspective-incorrect texture mapping polygon. It is intended
	      as a replacement to DrawTriangle, since triangle after clipping
	      results in a polygon. DrawTriangle is still in place, but
	      it should be moved into attic/ since it is not used anymore.
	    - Support for interlaced mode in OS/2. Added a method to
	      csGraphics2D bool DoubleBuffer (bool Enable); which turns on/off
	      double buffering. Method returns false if it cannot switch to
	      a particular mode (by default it returns "true" if
	      single-buffered mode is requested and "false" if double-buffered
	      mode is requested).
	    - New command "zbuf" in walktest for debugging z-buffer. Best
	      works in 16-bit color.
	    - Implemented a new draw_triangle_scanline in x86 asm... again not
	      much gain, but this time its gives least something...
	- Since the patch from Andrew most likely destroys the Direct3D port
	  (at least the sprite drawing code) I tried to fix it. The problem
	  is that DrawTriangle is no longer used (it is obsolete). Instead
	  there is DrawPolygonQuick. DrawPolygonQuick has the same parameters
	  as DrawPolygon so I'm counting on using DrawPolygon instead of
	  DrawPolygonQuick for the Direct3D port.
	- *** Release of 0.11_004 ***
	- Change in class structure. 'Light' is now the descendant of all
	  positional lights. 'StatLight' (what was previously called 'Light')
	  is a subclass for the static/pseudo-dynamic lights. 'FltLight'
	  is a subclass for the floating lights. And DynLight is a subclass
	  for the unfinished dynamic lights.
10-Jun-1998
	- FINALLY I found the bug which has been haunting the lighting code.
	  It appeared that I was using the wrong matrix to try to transform
	  texture space to world space :-) Now the lighting code seems to
	  work very good. There is one problem left: the boundaries of
	  polygons. These are not always lighted correctly. I should probably
	  extend the lightmaps a little but I'm not sure yet.
	- Removed old lighting code and moved to 'attic' (in 'old_light'
	  file).
	- *** Release of 0.11_003 ***
9-Jun-1998
	- Added new scan_m68k.S from Maurice Vosmeijer (for Amiga port).
	- Finally the new lighting code starts to work a bit. It still
	  needs a lot of tweaking and a few enhancements (like expanding
	  the view frustrum slightly BEFORE clipping instead of only
	  in the light-shining routine). I also need to optimize it further.
	  Then I will add pseudo-radiosity and alpha-mapped color
	  changes (meaning that a colored light in a church will give nice
	  colored patches of light).
	  There are also some problems at borders of polygons. I'm not
	  sure how to fix these yet.
8-Jun-1998
	- In my continuing debugging quest I enhanced the left-mouse-button
	  press debug a bit so that it shows the coordinates in camera/world
	  space of the point being click on (it uses the Z buffer for that
	  information).
	- Continued debugging of lightmapping code. I still haven't found
	  out what's wrong. I need to get a good night rest before I will
	  really fix it I'm afraid. But don't worry. I just keep trying :-)
	- Received new watcom port from Andrew Zabolotny (who received it
	  from Slavik Levtchenko).
	- Received major patch from Nathaniel Saint Martin for a significant
	  rewrite of the Windows/Direct3D port. Let me know how this works.
	- *** Release of 0.11_002 ***
7-Jun-1998
	- Yes, I know I should be working on debugging the lighting system.
	  But when I was driving to my home I suddenly came on an easy way to
	  increase the framerate. I changed INTERPOL_STEP from a constant
	  into a variable (this slowed down 1% or so) and then I made
	  selection of INTERPOL_STEP dynamic. When z doesn't change much
	  along a scanline then it will use larger interpolation steps.
	  When z changes much it will use the current default (16).
	  This increases speed in general about 10% (10% speed increase
	  for the view of the staircase).
	  I would not be me if I didn't make this option configurable
	  just to see the difference. The new 'inter' command allows three
	  settings: 'smart' (the new default setting), 'step16' (the old
	  default), and 'step32' (just to try this out). I also assigned
	  the key 'alt-p' to toggle between these three settings.
	  Because of limitations in the assembler texture mapper, the
	  interpolation step cannot be set to less than 16 (to 8 for example).
6-Jun-1998
	- Discovered that my new improved lighting system may be fast
	  but it doesn't work that well (to say the least :-) It was
	  an amazing stroke of luck(?) that it worked so well with
	  room.zip (my testlevel) because it didn't work good at ALL
	  with large.zip :-(
	  Now it starts to work finally but I still have a lot of work
	  to do.
	- Edges are drawn in white again in 16-bit truecolor mode.
	- If edge-drawing is enabled (with 'e' key) then the lights
	  are also shown (a red cross and a white cross). The white
	  cross is drawn in perspective so that you can judge how
	  far away the light is depending on the size of the white
	  cross.
	- Added DrawLine in csGraphics3D class (yes 3D!).  This draws a line
	  on screen between two points in camera space and is useful for
	  debugging.
	- If do_edges is enabled (with the 'e' key) then you can click on
	  a light to select it (in addition the normal mouse-click action
	  also occurs: debug dump of the selected polygons).
	- New 'frustrum' command (assigned as a toggle to the 'E' key).
	  When 'frustrum' is enabled it will show the frustrum around
	  the selected light. This means that all polygons that are hit
	  by the light (ignoring things blocking the light) will be
	  hilighted with a white outline indicating where the polygon is
	  hit. Red lines connect the vertices of that outline with the
	  center of the light. That way you get a good idea of where
	  the light may affect polygons. I designed this tool to debug
	  my new lighting system which is based on making a view frustrum
	  arround a light.
	  Try this feature sometimes. It looks really nice :-)
5-Jun-1998
	- Complete rewrite of lighting system. It is MUCH more accurate.
	  MUCH faster and contains MUCH less bugs and it is MUCH more
	  flexible :-)
	  The old lighting system is still present (but unused). This
	  new lighting system is still experimental (hey! we're busy
	  with a new beta! :-)
	- *** Release of 0.11_001 ***
	- Dramatically increased speed of saving lightmaps by writing
	  the archive only once after all lightmaps have been updated.
4-Jun-1998
	- Had a look with a profiler to see what some of the more
	  demanding functions are (I received a level with some spots
	  with more than 450 portals visible :-) and discovered that
	  clip_poly_plane is the largest CPU consumer except for
	  draw_scanline (texture mapping). So I optimized it a little
	  to get a few percents more performance (not much).
	- Received new patch from Nathaniel on the Direct3D version.
	  This fix disabled mipmapping if a card does not support it.
	  Also more support for cards that don't support lightmaps.
-----------------------------------------------------------------------------
4-Jun-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- Fixed two bugs for compiling CS on Windows version with
	  Watcom C++.
29-May-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- Added a number of documents. Split a number of documents
	  into smaller documents. Moved a few documents.
9-May-1998
	- 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-1998
	- document.txt updated for new display modes.
	- *** Release of 0.09_024 ***
7-May-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- Received new patch from Andrew Zabolotny on his window
	  system.
1-May-1998
	- Received new patch from Andrew Zabolotny to his triangle
	  drawer routine.
28-Apr-1998
	- 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-1998
	- Received a new patch from Andrew Zabolotny on his window
	  system and a small change to the system dependent classes.
24-Apr-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- *** 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-1998
	- Made sure SVGALIB and DJGPP work under the new system
	  classes.
1-Apr-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- Received a few additional patches from Dan Ogles on his Direct3D
	  port with another major speed increase.
12-Feb-1998
	- 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-1998
	- Started creating HTML documentation using Doc++.
9-Feb-1998
	- 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-1998
	- 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-1998 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-1998
	- 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-1998 V0.08
	- Received a few patches for the DJGPP, Watcom and Windows
	  versions from Nathaniel.
-----------------------------------------------------------------------------
30-Jan-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- 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-1998
	- Today my daughter Maaike Tyberghein is born!
30-Dec-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- The Unforgiven project of the cruXaders joins forces with Crystal
	  Space!
14-Nov-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- Finished rewrite of all the load routines.
30-Oct-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- Steve sent me some enhancements to his dynamic lighting stuff.
	  It starts to work very nicely now!
22-Oct-1997 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-1997
	- Put all textures that are not used by the included world file
	  in a seperate archive to save space.
	- Prepare for distribution.
20-Oct-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- New Polygon3D::intersect_segment which really works in 3D and
	  should be faster.
3-Oct-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- Received a correctly working version of the Amiga port.
22-Sep-1997 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997
	- 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-1997 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-1997 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-1997 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-1997 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-1997 V0.01
	- First public release.
-----------------------------------------------------------------------------

