Kobo Deluxe v0.5.1
	* Fixed segfault with weird audio buffer sizes.
	* *Maybe* clears the screen a bit sooner... (One
	  could see a magnified desktop or garbage display
	  for a moment on some systems.)
	* When there is no profile, the automatic New Player
	  dialog sends you on to the main menu, rather than
	  back to the intro.
	* Added a bunch of AGW explosion sounds.
	* Added new "big ship" launch and escape sound.
	* Fixed infinite loop bug in filemapper_t::get_next().
	  (Thanks Joey Hess!)
	* New "core destroyed" sound.
	* When compiled with PROFILE_AUDIO, the 'R' key
	  reloads all sound effects.
	* Integer atan2() approximation for sprite rotation.
	* "Fixed" cubic resampler. (There will be a jump of one
	  sample when switching to/from cubic interpolation.)
	* New player fire sounds, including overheat warning.
	* Tweaked various sounds and related logic.
	* 10% health award for core destroyed, and another 25%
	  for stage cleared. (No more 100% for stage cleared!)
	* Health can now be up to 200%, but will decrease
	  quickly towards 100%.
	* Destupified the bargraph_t value() interface...
	* Waveform info after loading with logverbosity >= 2.
	* Added pause sound.
	* Added "Safe video settings" message when "escape
	  hammering" is detected.
	* Explosions can now actually show the first frame.
	* Explosion "random start frame" removed.
	* Initial white flash for explosions.
	* Fewer bonus lives! (We have the health bonus now...)
	* Default and rock explos assume half speed of objects.
	* Added player bolt impact fx.
	* Improved player explosion.
	* Bomb detonation fx directed at the player.
	* Fixed a positional audio wrap bug.
	* Configurable "Cannon Sound Suppression."
	* Configurable overheat warning buzzer.
	* Doubled rock health for Newbie skill.

Kobo Deluxe v0.5.0
	* Added 'autoshot' command line switch for grabbing
	  ingame screenshot series.
	* Added animated rocks.
	* Added 88.2, 96, 176.4 and 192 kHz sample rates.
	* Default video mode changed to 640x480.
	* Option 'internalres' considered obsolete. (Was
	  never implemented.)
	* s_filter_scale() fallback from Scale2x and
	  Diamond2x for non 2x factor changed to bilinear.
	* Newbie mode changes:
		* Three alternating nose/wing guns.
		* Two alternating rearward wing guns.
	* Fixed nonsense values for the SDL_GL_DOUBLEBUFFER
	  attribute. (Thanks, Sam Palmer!)
	* Fixed Y/N buttons in the requester dialogs.
	* Some new explosions, enemy bullets and other gfx.
	* Fixed segfault in myship.cpp in (the extremely
	  unlikely) case of running out of sprite objects.
	* 'pushmove' now counts as a cheat. (No highscores.)
	* Added simple parallax starfield, along with none/
	  old/parallax starfield style switch.
	* Intro mode now sets it's own fixed logic rate.
	* Enemy definitions now have "death handlers".
	* Invisible enemies no longer allocate sprites.
	* Background color fade in damage noise flash and
	  noise-out effects.
	* Map now marks cores as needed to select orientation
	  specific core tiles.
	* Broken base branches are left as is.
	* No dithering for the logo mask! (Thanks again,
	  Sam Palmer! :-)
	* Separated map tile index from map state bits.
	* Added alternate straight sections in bases.
	* OpenGL vsync is now optional.
	* Added 'S' key for screenshot. (PrintScreen is
	  stolen by some desktop environments.)
	* Larger fps counter, for 1000+ rates...
	* Corrected cs_engine_t.time type. Animation should
	  be smooth and reliable now!
	* Tweaked screen.png a little. (Contrast, AA, ...)
	* "Audio Options" renamed "Sound Options".
	* Rocks are now destructible again (255 hits in
	  Classic mode; other values in new skill levels).
	  They also have an explosion all of their own.
	* Special detonation animation for bombs.
	* Bullets, player, enemies etc in separate layers.
	* More firepower in the "Gamer" skill level.
	* Benchmark based progress bar.
	* Framework overlay now rendered as small tiles in
	  the corners of the playfield window, to avoid full
	  window impact on slow video cards in OpenGL mode.
	* glSDL:
		* Now compiles with OpenGL disabled. (Thanks,
		  Michael Sterrett!)
	* Gamer mode changes:
		* Higher firing rate.
	* Added "videopages" option to make smart refresh work
	  with triple buffered displays, and for disabling
	  smart refresh if all else fails.
	* Fixed weird audio fragment sizes.
	* Fixed cubic interpolation -1 sample index bug in
	  a_mixers.h.
	* Graphics loader refactored; gets parameters from a
	  table, and provides more verbose error messages.
	* New "Boomerang" fighters with 16 rotations.
	* New fighter ship. (Replaces the teal missile.)
	* New gray, red and blue missiles.
	* Disabled colorkey filter in gfxengine.
	* New "loading" logo.
	* Slightly slower (more readable) scroll text.
	* Added window_t::textwidth_fxp(), to fix the unsmooth
	  text scrolling.
	* Added "How to play" screen.
	* Added "Highscores only for Classic mode!" notice.
	* Added optional mouse capture when playing. Pause or
	  abort game to release!
	* Added joystick selection. (Thanks, Erik Auerswald!)
	* Decided the substantial change in appearance calls
	  for a minor version bump, so: 0.5.0.
	* The -help switch is now handled as a proper command,
	  avoiding the stupid "unknown argument" error.
	* Added -options_man command to output option docs in
	  Un*x man format.
	* Updated the Un*x man file, and replaced the README
	  with a rendition of the man file.
	* Made a new README from the man file.
	* New counter font.
	* Fixed some minor compiler warnings.
	* Updated the TODO.

Kobo Deluxe v0.4.1
	* Got fed up with these "pre" version codes that
	  don't fit into package versioning systems and
	  look generally silly.
	* Implemented logic/audio timeline sync for
	  constant sound effect latency. Events are no
	  longer quantized to buffers.
	* Improved the latency selector a bit.
	* Latency calculations now assume 2 fragments for
	  SDL. (We use 3 fragments for OSS.)
	* Latency calculation now picks the *closest*
	  buffer size; not the biggest one with lower or
	  equal latency.
	* Removed "games" from the install paths on Un*x
	  systems, and moved the score files to the more
	  correct $(sharedstatedir). The install target
	  now works as expected for an autoconf build.
	* Reverb and limiter controls replaced with the
	  simplified "Ambience" and "Volume Boost"
	  controls.
	* Mega stoopid bug fixed: If video initialization
	  failed after changing video settings from the
	  options menu, the game would start back up
	  anyway - without a display!
	* kobo.cpp now keeps a copy of the preferences,
	  so safe settings can be restored should reinit
	  inside the run/reinit loop fail.
	* LoadRAW_S8() became LoadRAW(), and can now load
	  "raw" files with an 8 byte header containing "RAW"
	  followed by the audio_formats_t format code, and
	  a 32 bit sample rate in big endian format. The
	  MSB of the format code byte is set if the
	  waveform is looped.
	* Implemented SaveRAW(). (Always saves in the above
	  format.)
	* Implemented quick hack sound caching by providing
	  a script that saves all sounds to disk, and
	  alternative loader scripts that use those instead
	  of the AGW sounds. This currently generates 2 MB
	  of raw audio data.
	* Added window_t::refresh() to enable the engine
	  to correctly handle windows that aren't repainted
	  every frame.
	* Added endian swapping code for 16 and 32 bit raw
	  audio files. Files are in big endian, so this
	  code is only compiled on little endian archs.
	* The mixers in a_tools.h now test for the zero
	  samples in debug builds.
	* Removed in-game music pausing/restarting.
	* Game Over no longer stops the game logic.
	* Player profiles cannot be symlinks. (Security.)
	* When loading a "raw" file, audio_wave_load()
	  takes looped/one-shot from the file.
	* AGW w_load() and w_save() now tells EEL about
	  errors! (Kinda' handy... :-)
	* Replaced "fine.raw" with "breakdown1.agw".
	  (The "fortress destroyed" sound.)
	* Replaced "shot.raw" with "missile1.agw".
	  (The player fire sound.)
	* Fixed sound FX bug: _enemy::hit() used x and y
	  fields of _enemy objects after release().
	* Another sleeping bug: _myship::explode()
	  generated lots of huge, nasty coordinates.
	* Removed "expl3.raw" completely, and removed
	  "bomb.raw" from "core destroyed."
	* Added a logger with redirection capabilities.
	* Fixed mouse control bug; the crosshair hot-spot
	  offset was wrong in some resolutions, because
	  of the border that's put around the screen in
	  certain resolutions and in windowed modes.
	* display_t refactored to use refresh().
	* Added dashboard.(cpp|h) and refactored the health
	  bar to use refresh().
	* The framework is now rendered through refresh().
	* Removed the pixel_* cruft in the _screen class.
	* The _radar class becomes radar_window_t, which
	  is a window_t with callback driven rendering.
	* window_t gets offscreen window/surface support.
	* gfxengine now whines a little if it has to change
	  the buffering mode from the requested one.
	* The health bar is only visible if there's more
	  than one health point maximum. (So, it's no longer
	  visible in Classic Mode.)
	* gfxengine_t should now initialize the dirtyrect
	  management for page flipping properly.
	* Removed the odd "OpenGL" resolutions in the video
	  options.
	* No buffering mode for OpenGL in video options.
	* Removed AC_FUNC_MALLOC. Who needs malloc(0)...?
	* Added logfile and logformat options.
	* Removed all extern "C" clauses around C includes.
	* Fixed the "selector tube" heights; the surfaces
	  were much taller than the images.
	* Tweaked the cleanalpha filter parameters.
	* Optimized the dither filter; it doesn't *have*
	  to touch all the data to just do nothing... :-)
	* Optimized the image processing filters.
	* Added "No Alpha Blending" feature.
	* Moved the sprite filters into filters.h.
	* loadrect() renamed copyrect() and is now
	  applying scaling to coordinates like all other
	  calls.
	* SemiTriple removed from buffering modes. You get
	  the same setup with doublebuffer(1); shadow(1).
	* Old retrace sync cruft removed.
	* ESC from any "normal" state now gives you some
	  version of the main menu.
	* Added brightness/contrast filter.
	* Moved less h/w related stuff from "Video Options"
	  into a new "Graphics Options" section.
	* Added generic 'flags' field to filter arguments,
	  and threw in a global s_filter_flags as well.
	* Removed window dependency from gamestate.(cpp|h)
	  and changed the license to LGPL.
	* Upgraded to glSDL 0.7, w/ dynamic OpenGL loading.
	* Added "Random" and "4x4 Filter" dithering methods.
	* All graphics converted to PNG format.
	* Added support for scaling to (almost) arbitrary
	  resolutions, including lower than the native
	  resolution of the graphics.
	* The command line usage message now generates the
	  list of recognized options from the prefs object.
	* Buffer overflow bug in new_player_t fixed. (?)
	  (Thanks to Donny Viszneki for reporting it!)
	* Fixed a free()/delete bug in filemapper_t.
	* Rewrote most of the radar display code.
	* Removed unused scrolling cruft in window_t.
	* Changed version to 0.4.1. Too many 0.4something.
	* Made the player ship cursor flash slightly.
	* Fixed missing slash before the config file name.
	  (Never noticed this before, as it apparently
	  affects only Mac OS X.)
	* Fixed the title screen cheat mode indicator.
	* Thanks to Antonio Messina, who managed to break
	  the game logic desipte a broken arm:
		* Fixed difficulty wrap at stage 1601.
		* Added option always_fire.
	* Fixed missing gamecontrol_t constructor.
	* Bilinear scaling without oversampling is now
	  actually *without* oversampling.
	* Optimization: Scaling checks for clipping or
	  clamping only near the edges of surfaces.
	* The SDL audio callback now deals with "evil"
	  buffer sizes. (Thanks to Hans de Goede!)
	* Losing window focus now pauses the game. (Thanks,
	  Marianne Ibbotson!)
	* Upgraded to glSDL 0.8.
	* gfxengine no longer shuts down the SDL video
	  subsystem when hiding, as this causes problems
	  with glSDL for no gain.
	* Implemented selectable Newbie, Oldie and Elite
	  skill levels.
	* kobo_form_t:xoffs now also works for button().
	* Added kobo_form_t:medium().
	* Added "spread" fire for Newbie mode.
	* Lower rear fire rate for Elite mode.
	* Max number of saved scores per profile increased
	  to 100.
	* Added cannon heat/cooling simulation.
	* Added Video Mode Manager vidmodes.[ch]
	* Some ships flying around in intro mode.
	* New screen layout.
	* Optimized and improved the video noise effect.
	* Menu highlight bar:
		* Faster movement.
		* Parallax "slime" effect.
		* Zoom-to-size effect.
	* Made more room for extreme scores in Hall of Fame.
	* Red noise to indicate damage.
	* Snappier health bar.
	* Added gun temperature bars.
	* Upgraded to glSDL 0.9. (Colorkey fix.)
	* Sound control cleanup; added sound.(h|cpp).
	* Changed to Classic mode + four "New Mode" skill
	  levels; Newbie, Gamer, Elite and God.
	* maxfps default changed from disabled to 100.
	* Added CharOffset table to SoFont, to avoid mixing
	  actual character positions up with source blitting
	  extents.
	* Fixed rectangle size calculations and rounding in
	  the graphics engine. (Improves rendering accuracy
	  in "odd" resolutions.)
	* Fixed screen border refresh.
	* Added hotspot logic to the sprite engine.
	* New player "plasma bolts" and two new explosions.
	* Incomplete base destruction bug fixed (?)
	* Fractional frame times use double instead of float.
	* Added configurable time filter.
	* Default scale mode changed to Bilinear.
	* Bilinear+Oversampling removed from config menu.
	* Added "Strictly Regulated" frame rate limiter.
	* Options moved to "System Options":
		* Maximum Frame Rate
		* Strictly Regulated Frame Rate
		* Time Filter
		* Motion Interpolation
	* Removed some unimplemented video driver enums.
	* Current score and stage is now checked when
	  quitting from within a game.
	* Image filters are now removed properly.
	* Added window centering for "some platforms".
	* Hammering on Escape is trapped and aborts the
	  game when loading, or switches to a safe video mode
	  when running.
	* Some refactoring to hunt down memory leaks and other
	  issues. Most statically allocated objects gone.
	* Sped up the slow, annoying nibble effects.
	* "Weird characters" in New Player name editor fixed.
	* Proper Yes/No dialog for exit and abort game.
	* Unused song ballad1 + instruments removed.
	* "Dummy" score file (for WinZIP) is now minimal, no
	  scores, no stages finished.

Kobo Deluxe v0.4pre10 (Unofficial Debian/PPC fix release)
	* #include "config.h" was missing in e_getargs.c...
	* Applied security fix for saving the user config.
	* Added default case in glSDL's _print_glerror(),
	  since I get flooded with warnings otherwise.
	  (All GL_* are in an enum in my new GL.h.)
	* Added max_FPS feature, to restrict the frame
	  rate. Useful on video drivers without retrace
	  sync and/or when you want to reduce CPU load.
	  (Thanks to Martijn van Oosterhout for the
	  original patch!)
	* Added man page, contributed by Joey Hess.
	* Fixed some minor typos in the man page.
	* Added resolutions 1600x1200 and 1920x1440 and
	  2048x1536, for extreme/insane users. ;-)
	* Removed 57 unused AGW scripts. (These belong to
	  Audiality, which is now a separate project.)
	* Updated and shortened the scroll text.
	* Added monitor noise effect with sound effect.
	* Fixed two related bugs in s_filter_scale() that
	  would 1) cause NEAREST to be one pixel off
	  vertically and 2) linear interpolation modes to
	  be off by half a pixel horizontally.
	* Tweaked the death explosion, so it expands,
	  decays and ends, instead of just rolling for as
	  long as the player is dead, as it used to be.
	* Added Game Over sound effect.
	* Dead player no longer takes hits. (This avoids
	  the hysterical thumping of bullets hitting the
	  non-existent ship during the death sequence.)
	* Added README.osx, which points out that you may
	  have to create the score-dir to make Kobo DL
	  work. This applies to other archs as well, so
	  perhaps I should put it in an FAQ or something?
	  (Thanks to Adam Marks the the Mac OS X binary!)
	* Tweaked launch.agw. (More turbine; less noise.)
	* Added Get Ready sound effect.
	* Exiting pause mode now throws you right back
	  in the game. (No "get ready" state.)
	* Added configurable "get ready" countdown.
	* "Get ready" countdown now ends by starting the
	  game, rather than entering pause mode.
	* Controls are reset whenever you get a new ship.
	* Improved the loading status screen a bit.
	* Added shrinking and green->red fading bar
	  during the last second of the "Get Ready"
	  countdown. (0.7 s in "Quick Start" mode.)
	* Added a critical error state with a red
	  flashing box and stuff. This shows up if a
	  player profile cannot be created, or if
	  starting a game fails for some reason.
	* The game now remembers the last map played
	  until you quit, instead of resetting to the
	  last completed map all the time. (Thanks to
	  David Andersson for the idea!)
	* Fixes backported from Audiality:
		* midi_process() was called even if MIDI
		  input was not enabled, resulting in the
		  engine waiting for data on stdin once
		  per buffer... *heh* Fixed.
		* OSS MIDI input fixed. (When soft through
		  was disabled, the device would be opened
		  write only! The drivers I used before
		  obviously always opened RDWR...)
		* Poly and mono Patch Plugins now
		  initialize the primary output and send
		  busses for voices. (So *that's* why my
		  mixes broke... Oops!)
		* New, properly working envelope generator
		  backported from Audiality.
		* VE_ISET event eliminated - only IRAMP
		  is used for ramped voice controls.
	* glSDL changes for glSDL-0.4:
		* "no TexInfo" changed from 0xffffffff to
		  0, since SDL 1.2.5 and up inits the
		  unused1 field to that, specifically for
		  glSDL.
		* Added compile time and runtime warnings
		  for SDL versions prior to 1.2.5.

Kobo Deluxe v0.4pre9 (Debian/PPC fix release; first try)
	* EEL changes:
		* Stole eel_get_argsv() from the not yet
		  released Audiality 0.1.0. (Fixed some
		  more va_list issues.)
	* glSDL changes for glSDL-0.4:
		* Added (gl)SDL_SaveBMP().
		* "Fixed" OpenGL pixel format for
		  glReadPixels. (Maybe I got the glSDL pixel
		  format wrong? Dunno, and I'm on an ATI card
		  and driver so I don't trust anything...)
		* Fixed _glSDL_BlitFromGL() (I think...)
	* Removed the "Intelligent Display Abstraction
	  Layer" for now, as it's not yet usable.
	* Added screen() property to gfxengine_t, to have
	  a standard way of rendering to the full screen
	  area.
	* Added gfxengine_t::clear() method.
	* Added coarse clipping to SoFont. (The scroller
	  made the coords wrap in 1280x1024. *heh*)

Kobo Deluxe v0.4pre9 (unreleased)
	* Started hacking the "Intelligent Display Abstraction
	  Layer".
	* glSDL changes for glSDL-0.4:
		* Fixed C++ issue with IMG_Load().
		* Fixed stupid M$isms: Textures are now
		  *uploaded* to the card.
		* SDL_OPENGLBLIT removed. (Used only to
		  prevent certain unimplemented stuff from
		  causing *really* Bad Things to happen.)
		* Depth buffer silliness fixed. (We don't
		  use the depth buffer...)
		* "fake_screen" is now a real surface.
		* Implemented blitting from the screen.
		* Implemented blitting within the screen.
		* Implemented screen locking/unlocking.
		* Fixed prototype for glSDL_GetVideoSurface().
	* EEL changes:
		* Added eel_load_from_mem(). (Thanks to
		  Florian Schulze!)
		* Cleaned up the EEL script management
		  code a little.
		* Using va_copy() in e_getargs.c, since
		  assignments are not legal on all
		  platforms. (Thanks, Andreas Heck!)

Kobo Deluxe v0.4pre8
	* Added Extreme Pickyness Mode (--enable-epm).
	  (Unfortunately, this is not enough to ensure that
	  stuff compiles on gcc 3.x. Guess I'll just have to
	  install gcc3, or rely on gcc3 users reporting all
	  warnings and errors.)
	* Some const string issues fixed. (Returning a const
	  string as "char *" and the like.)
	* Removed all AdLib stuff and support for non-
	  standard MIDI file variants. However cool it might
	  be to play those files, I have no use for it and
	  can't maintain it in this project.
	* Removed old bogus stuff from the comments in
	  filemap.h.
	* Minor cleanups in filemap.cpp.
	* Some GCC3 fixes in score.cpp. (String copying...)
	* Scroll text updated.
	* Improved scroller "speed throttling".
	* Returning to the intro now restores the "demo" map.
	* Added Electric Fence to the Extreme Pickyness Mode.
	* Started cleaning up the C code using Splint. (Can
	  someone please donate a FlexLint license...? :-)
	* load_sounds() in kobo.cpp fixed; it wouldn't load
	  the music if the sound effects were loaded with
	  a previous call.
	* Somewhere along the way, I managed to get the
	  intro to generate a new demo map on every intro
	  screen switch. Fixed.
	* Audio engine changes:
		* Added OSS 'pollaudio' for debugging.
		* Fixed index outside array in
		  audio_wave_free()!
		* Tightened up the API - signs only where
		  needed and things like that.
		* 0 dB peak amplitude for 32 bit waveforms
		  changed to [-1.0, +1.0].
		* ptab_init() now takes an integer argument.
		  (No implicit float->fixp16:16 conversion.)
		* Ports and "clients" are now named for
		  debugging/tracing, although client names
		  exist only if AEV_TRACING is compiled in.
		* Cleaned up audio event system names.
		  Everything is now aev_<something>, and most
		  names have been significantly shortened.
		* Added aev_init() macro for ports! (Aargh!)
		* Open/close of subsystems cleaned up. All
		  subsystems now have audio_*_open/close()
		  calls, and should (hopefully) clean up
		  properly when closed.
		* Audio engine open/close API changed;
		  the full sequence is now:
			audio_open()	(optional)
			audio_start()
			audio_stop()	(optional)
			audio_close()
		  Note that the waveform and scripting
		  subsystems will still initialize
		  themselves automatically if used before
		  calling audio_open().
		! The last two seem to have fixed the
		  issues with restarting the engine on
		  Linux! Remains to see if that was the
		  whole problem...
	BENCHMARK:	speed1.agw renders in 27.2 s.
			speed2.agw renders in 21.5 s.
			Total: 48.7 s.
		* Added block based processing framework.
		* Implemented block read, write and add.
		* Added block based envelope processing.
		* Using the new envelope interface - but
		  still processing one sample at a time.
	(BENCHMARK:	speed.agw renders in 34.2 s!)
		* Using 32 frame blocks in wca_filter()
		  and wca_gain().
	(BENCHMARK:	speed.agw renders in 33.6 s.
			wca_filter() disabled: 31 s.)
		* Converted wca_osc() to block based
		  processing, and made some minor
		  optimizations.
		* WCA_SYNC for WCA_NOISE fixed. Each sync
		  pulse now shifts in a new value through
		  the S&H as well.
		* Fixed bug in spectrum oscillators: They
		  would produce no output with a mod1 input
		  of less than 1.0. They now produce pure
		  sine, as originally intended.
		* HSPECTRUM and PHSPECTRUM fixed: They
		  actually didn't separate roll-off control
		  for odd and even harmonics at all! (Thus,
		  they were basically just broken versions
		  of SPECTRUM...)
		* SPECTRUM modulation mapping unified; MOD1
		  now always controls the overtone stepping.
		* The new AHSPECTRUM replaces PHSPECTRUM.
		* HSPECTRUM becomes a AHSPECTRUM with
		  multiplicative overtone stepping control.
	BENCHMARK:	speed1.agw:	10.2 s. 167% faster.
			speed2.agw:	17.7 s. 21% faster.
			Total: 27.9 s. 75% faster.
		Obviously, the optimizations worked out
		rather well. Next, we'll try to do something
		about those spectrum oscillators...		

Kobo Deluxe v0.4pre7
	* Old samples boosted by 70%, to compensate for the
	  lack of an illogical amplification factor in the
	  new engine. :-)
	* The screwed up scroll position during the "Game
	  Over" state fixed.
	* "Early bullets", flickering and other crap fixed.
	* gfxengine_t and sprite.[ch]: Added clampcolor() and
	  s_clampcolor (for specifying what color and alpha
	  to assume for areas outside images), and changed
	  the color format to Uint8 in the range [0,255], to
	  be consistent with the change in window_t.
	* manage: Selecting a starting stage before staring
	  a game now preserves the actual map that is
	  generated. You don't get a new version of the
	  same level, but the exact map you're looking at
	  before starting the game.
	* radar: Fixed potential color allocation bug when
	  changing video mode; it used to initialize only
	  once during the game life time...
	* radar: Tweaked colors, and made the the blue
	  launcher nodes visible on the radar.
	* Options 'cheat' and 'indicator' are now commands
	  rather than switches, so they cannot be saved in
	  the configuration by accident.
	* Split the "push move" mode off from 'indicator'
	  into a feature of it's own, activated with
	  the 'pushmove' command.
	* Game and Control options moved to the top of the
	  options main menu.
	* Scrolling radar implemented. Can be disabled in
	  Game Options, to work like the old version.
	* gfxengine_t make slightly more robust WRT calls
	  being made while the screen is closed.
	* Switching between fullscreen and windowed modes
	  can now be done at any time with the usual ALT+ENTER
	  shortcut. :-) Special case activates pause mode if
	  it's done in the middle of a game.
	* Random number generator split in two; pubrand and
	  gamerand, and get_seed() member added, as a
	  preparation for demo recording and playback.
	* 'P' and the mighty strange Pause Key parsed and
	  routed to the pause function. (This is also used
	  internally, as a neat way of telling whatever state
	  might be active to pause.)
	* Touched up the screen framework artwork a little.
	* Optimized background rendering some. (Occasional
	  clipped extra row and column of tiles eliminated.)
	* Stupid bug in window_t::invalidate() found and
	  killed: gfxengine_t clips invalidated rects, so we
	  need to make sure our window is selected!
	* window_t now supports background images. clear()
	  takes an optional SDL_Rect, and blits from the
	  image, if there is one, or fills with the
	  background color as in previous versions.)
	* Background graphics in the displays and the radar
	  screen! :-)
	* Added dither plugin with hard-coded 2x2 filter.
	* Added options to turn dithering off.
	* Added kludge for OpenGL cards that can't handle
	  RGBA8, but turns it into RGBA4, and a switch to
	  enable it if required.
	* sprite: S_BLITMODE_NORMAL renamed S_BLITMODE_AUTO.
	  (Makes more sense!)
	* Option broken_numdia (Broken NumPad Diagonals)
	  added - I want to use the page up/down keys for
	  other stuff, even if *some* systems can't decode
	  the numpad correctly! :-/
	* Added the algorithmically constructed sound
	  effect "SOUND_LAUNCH".
	* Separated the AGW scripting engine core from the
	  audio engine and made it the "Extensible Embeddable
	  Language". (a_agw.[ch] now contain only the AGW
	  extension to EEL.)
	* Added the algorithmically constructed sound
	  effect "SOUND_LAUNCH2", for the "blue balls".
	* Fixed some bugs in filemapper_t.
	* Any jerking, flickering etc when entering a new
	  stage should now be *completely* eliminated. I
	  think... ;-)
	* Intro doesn't conflict with stage 100 any more.
	* Implemented 2D positional sound effects. :-)
	* Added screenshot feature. (OpenGL not implemented,
	  as the current glSDL cannot read the screen surface.)
	  Saves BMP only, and is connected to PrintScreen and
	  SysReq.
	* EEL now uses the same callback prototype for all
	  extensions, whether they are commands, operators
	  or functions.
	* Ported Jeremy Sheeley's player profiles patch
	  from 0.3, and tweaked the user interface a little.
	* Fixed double initialization of the manage object.
	* Extended the score file format into a more powerful,
	  versionned "profile file format".
	* file.(h|cpp) and parts of score.(h|cpp) replaced
	  with pfile.(h|cpp), which implements a generic,
	  portable "toolkit" for platform independent binary
	  data file access.
	* Added game.(h|cpp), which collects all configurable
	  game parameters in one place.
	* The "speed" parameter is now considered a cheat,
	  and is no more available from within the game.
	* Last player profile is remembered in the config.
	* Added optional "Diagonals Emphasis Filter". (I'd
	  say it only makes control feel sluggish most of the
	  time, but it might work for someone... I'm open to
	  suggestions if anyone has an idea for a smarter
	  filter.)
	* Eliminated extra calls to score_manager_t::record().
	* Start level selection in intro mode removed.
	* Implemented collision/health system. When two
	  "collidable" objects collide, the damage of each
	  object is subtracted from the health of the other.
	  (Object properties set so that the game will
	  play exactly like the original with the single
	  player default settings for the player ship.)
	* Turned the "shield = -1" feature into 'shootable'.
	* Added health bar.
	* Threw in detection and fix to read broken 73 byte
	  scorefiles from older Win32 versions. (Seems like
	  the new code works right on Win32 as well, BTW.)
	* Various fixes and additions to filemapper_t.
	  (Scanning multiple directories, most importantly.)
	* Removed "./scores" from the SCORES path for now,
	  as it's actually the same place as the default
	  score dir on Win32. (You'd get all profiles and
	  scores twice, that is.)
	* Removed "bgm.raw" as it's not used anymore.
	* No hyphen before the "pre" from now on!
	* glSDL changes:
		* Applications can now set the colorkey of
		  of surface *after* SDL_DisplayFormat() -
		  although it will just discard the TexInfo,
		  resulting in the surface being converted
		  before the first blit, and after every
		  change in the surface.
		* Silly intermediate buffer eliminated in
		  _DownloadTexture().
		* glSDL automatically stretches resolutions
		  below 640x480 using an integer factor.
	* Audio engine changes:
		* Benchmarking tries to use gettimeofday() if
		  not compiled for x86 CPUs.
		* a_tools.h got some cleaning up, some new
		  macros, and mixing functions optimized with
		  a Duff's Device variant.
		* __mastervol() is obsoleted by the groups,
		  and was killed to save some cycles. (It ate
		  almost 1% of my P-III 933!)
		* Ditched the "Smart Stereo" Limiter - it's
		  not loud enough, and should be replaced with
		  something that drives the signal non-linear
		  to squeeze more power in when the signal
		  isn't panned center.
		* Dropped the saturating 32->16 bit converter,
		  and fixed the limiter so that it reliably
		  *limits* the signal the way it should.
		* Limiter does no longer invert the signal.
		* Added ACC_PRIORITY.
		* Added controls for Channel Inserts.
		* Channel default controls (used in DETACH
		  mode) removed. Just expect channel controls
		  to stay where you leave them, and
		  everything should be fine - and faster!
		* Implemented dynamic voice allocation.
		* ACC_DETACH now effectively means
		  "polyphonic mode". "Detached" voices are
		  still owned by the channel that launched
		  them - but just as before, channel
		  controls don't affect voices directly after
		  they're launched. (Even that may change
		  eventually...)
		* Ripped mid.cpp and mid.h from the AdLib FM
		  player AdPlug 1.1. Started stripping off
		  the FM stuff and converting it to C and the
		  "midisock" interface.
		* Added primitive VU-meter to the voice mixer.
		* Implemented audio_wave_convert(), using the
		  voice mixer in interpolated 16x oversampled
		  mode.
		* Added simple enhancer and noise gate
		  functions to the init time wave API.
		* Hacked basic polyphony support into a_midicon.
		* ACC_RANDTRIG is now *really* a 16:16 fixp
		  value, to allow finer control of the
		  randomize depth. (Next, I'll make the section
		  end marker fixed point, to allow sub sample
		  accurate loop timing - as well as finer
		  RETRIG and RANDTRIG control. :-)
		* Fabricated a nice 3'rd degree LUT for
		  various MIDI -> Linear Control mapping.
		* Introduced a more solid scheme for keeping
		  track of allocated voices.
		* audio_channel_play() now takes 16:16 linear
		  pitch and 16:16 volume, instead of the bogus
		  MIDI format arguments.
		* Added audio_wave_filter().
		* DETACH mode split into ADM_POLY and
		  ADM_FULL, to natively support the slightly
		  different ways DETACH mode is used by
		  midicon and for sound effects.
		* Added cubic (4-point) interpolation, based
		  on a formula by Olli Niemitalo. Low freq
		  sines sound *perfect* - no audible distortion
		  whatsoever. It sounds great up to 1:1, but
		  runs into trouble in the upper half of the
		  octave above 1:1 - linear 2X+ sounds better
		  from there and up. The best part is that the
		  CPU usage is somewhere in between linear 2X
		  and linear 4X on a P-III.
		* Volume ramping bug fixed: The "boot strap"
		  values calculated when starting new voices
		  were wrong, and resulted in an undesired
		  fade in over one buffer.
		* "Playing" indicator below the per-voice VUs.
		* Waveform size restrictions eliminated! (Well,
		  you'd probably have trouble with 2+ GB on 32
		  bit systems... ;-)
		* Dynamic voice allocation now always starts
		  with voice 0 in the first pass, when looking
		  for unused voices. (The other passes are still
		  starting at the voice after the last voice
		  allocated, to favor the "oldest" voice when
		  there are multiple equivalent choices.)
		* Implemented MIDI CCs 120, 121, 123, 126 & 127.
		* Added SILENT and RESTING states to the plugin
		  API, to deal with silent output efficiently.
		* Optimized bus handling; now, bus send buffer
		  clearing and other stuff isn't even considered
		  unless a bus actually is in use.
		* Implemented the Bus Control MIDI CCs. (39...55
		  on the first AUDIO_MAX_BUSSES channels.)
		* Reverb SNR improved. The internal precision is
		  now 8 bits higher than that of the I/O, which
		  produces "perfect" results down to the LSB in
		  the final output.
		* Implemented CCs 88, 89 and 91; "primary bus",
		  "send bus" and "send level".
		* Added SINEMORPH, SPECTRUM, and LSPECTRUM
		  oscillators.
		* Changed ACC_PITCH to fixed point linear freq,
		  where the integer bits correspond to MIDI
		  pitch. That is, 60.0 now does what 1.0 used
		  to do, and to step up one octave, add 12.0
		  instead of multiplying by 2.0.
		* Various oscillators and stuff added to the
		  Waveform Construction API.
		* Added bandlimiting or oversampling to all
		  Waveform Construction API oscillators.
		* Modulation API cleaned up.
		* Voice mixer code cleaned up a bit.
		* Voices now use timestamped events for control.
		* "Plugin style" API for patches separates the
		  channel->voice bindings from the engine core.
	    BENCHMARKING NOTE: Right now it takes 60 seconds to
		load and render the 72 AGW sounds I've created
		so far. Although most of the code is currently
		*very* inefficient, only the SPECTRUM oscillators
		are really so slow that it matters.
	* Audio Voice Mixer benchmark results, 20020111:
	   (P-III 933, 48 kHz, 20 ms latency, playing
	   an 8 kHz 8 bit stereo sample in 32 voices,
	   compiler optimizations disabled. Unit is percent
	   of total CPU time.)
	   -----------------------------------------------
		Very Low:	6.9%
		Low:		14.5%
		Normal:		10.1%
		High:		17.9%
		Very High:	136% (overload!)

	   (Same, but with gcc/g++ -O3 optimization.)
	   -----------------------------------------------
		Very Low:	3.5%
		Low:		6.5%
		Normal:		4.6%
		High:		7.9%
		Very High:	78% (causes underruns)

	   Obviously, on this machine, the "Normal" mode,
	   which is using plain linear interpolation, is
	   almost as fast as the "Very Low" mode, whereas
	   the "Low" mode is more expensive. This is to be
	   expected from CPUs with fast multiplications.
	* Audio Voice Mixer benchmark results, 20020503:
	   (Same machine, same settings, same test, but with
	   the new cubic interpolating mixer, internal
	   fragment size limit, timestamped events etc. With
	   -O3 optimizations.)
	   -----------------------------------------------
		Very Low:	4.5%
		Low:		6.8%
		Normal:		5.5%
		High:		8.2%
		Very High:	9.5%

	  Higher loads occur only when pushing the pitch more
	  than ~1.5 octaves above fs in "Very High" quality.
	  (That results in linear interpolation w/ 4x+
	  oversampling, which is pretty slow.)


*** The Audio Engine: Why the GPLed files?

    The sound code used in Kobo Deluxe was originally written
    by Masanao Izumo <mo@goice.co.jp>, for XKobo 1.11+.
    Masanao also added the sound effect samples that are still
    being used.

    You may have noticed that, while most, if not all of the
    current audio engine is new code, which is LGPLed, a few
    files (a_globals.[ch] and audio.[ch]) are GPLed, and
    contain a copyright notice mentioning Masanao Izumo.
    
    This effectively means that the whole audio engine has
    to be used under the terms of the GPL; not the LGPL.

    As this will probably be too restrective for many of the
    users the engine is targetting, I've contacted Masanao
    for a resolution, but have yet to receive a response.

						David Olofson

Kobo Deluxe v0.4-pre6
	* I've compiled with -Wall and nearly all of the
	  additional warning switches (not activated by -Wall)
	  to verify all code. Many things that non-gcc
	  compilers could complain about should be fixed in
	  this version.
	* "Video Driver" option not shown if there's only one
	  choice. (Which is the case if you build w/o OpenGL.)
	* Exit with ESCAPE from config menues fixed - now
	  cancels any changes and plays the appropriate sfx.
	* Solaris package building script 'buildpkg.sh' and
	  required configure.in fix by Andreas Spngberg added.
	* String copy bug in cfgparse.cpp fixed. (Andreas
	  Spngberg.)
	* Switching between windowed and fullscreen modes no
	  more results the screen being offset.
	* Screen centering fixed.
	* Border in windowed mode fixed.
	* Cleaned up audio config menu, and added volume
	  controls for sfx, (future) intro music and in-game
	  music. (Note that the "Master Volume" is still
	  there, and it's still digital...)
	* Icreased the number of volume levels available in
	  the audio config menu. (Used to be 25% increments.)
	* Added redefined() and accept() to config_parser_t.
	* Non-interactive widgets handled correctly in menues.
	* Added headers to configuration menues.
	* Added 'unit' string to ct_spin_t.
	* window_t::select() now comes in a private flavor
	  without checks.
	* Config menues now make use of OS_UPDATE_* flags in
	  addition to the OS_CANCEL tag, to allow instant
	  effect controls to cancel/undo properly.
	* config_form_t nowhas a virtual member undo_hook()
	  that's called by undo(). (Used to make ESC exit work.)
	* Audio engine changes:
		* Channels are separated into voices (mixing)
		  and channels (control abstraction) levels.
		* Groups added for easy channel management.
		* The API provides access to channels and
		  groups, but not direct access to voices.
		* All fixed point values are now 16:16.
		* API variants with float arguments added.
		* AC_DETACH added. (Easy SFX control.)
		* Panning/balance control added.
		* Added "waves" to get rid of sample pointers.
		* AC_SPEED removed. (Obsoleted by the internal
		  conversion to original wave sample rates.)
		* Fixed bug in reverb: Right input missing!
		* Another reverb bug: The delay buffer was too
		  short for >=32000 kHz with the current taps.
		* Implemented AC_RETRIG and AC_RANDTRIG.
		* Improved resampling frequency accuracy.
		* Improved looping accuracy and quality.
		* Added MIDI input implementation for OSS and
		  ALSA raw MIDI interfaces.
		* Fixed potential crash bug; mixing buffer
		  size variable would be wrong if the desired
		  buffer size couldn't be set!
		* Added higher quality voice resamplers.
		* sound.[ch] replaced by a_wave.[ch].
		* Auto trig w/ timeout on the oscilloscope.
		* 8 & 16 bit mono + 16 bit stereo added.
		* Engine code restructured and modularized.
		* "Waveform Construction API" added.
		* Channel->bus->master mixing architecture.
		* FX plugin API added. (Internal, for now.)
		* Reverb LPF cutoff made configurable and
		  independent of the sample rate.
	* Added generic "browsing" API to config_parser_t.
	* Added a copy of LGPL 2.1, and started sorting out
	  which licence applies where. (Basically, the old code
	  is GPL, while most of the new code I've written from
	  scratch is LGPL.)
	* Added window_t::center_token[_fxp]() for nice columns.
	* Started documenting a little...
	* Added "Audio CPU Load" screen for gcc/x86. (Needs
	  high resolution timestamping, and I'm using RDTSC for
	  now.)
	* Added text alignment system for the ct_* widgets, to
	  make use of the new center_token() methods.
	* Various tweaks and adjustments.
	* Credits updated.

Kobo Deluxe v0.4-pre5
	* New versioning rules introduced;
		* Any -preX suffix should *always* be included
		  in AM_INIT_AUTOMAKE().
		* No more development snapshots - every package
		  released has a version number of it's own,
		  with a -preX suffix if appropriate.
	* Surface leak when reloading graphics fixed.
	* gfxengine_t::unload() now takes -1 (default) for
	  unloading all banks.
	* gfxengine_t::unload() also destroys SoFont objects!
	* Void pointer arithmetics and some bogus braces fixed.
	  (Thanks, Riki!)
	* Moved sound effects out into files. (Raw format for
	  now, as WAV doesn't support signed 8 bit data...)
	* Minor sound code cleanups.
	* bgmfile.[ch] removed. (Used to be Linux only anyway...)
	* config_parser_t created. (prefs_t is now derived from
	  that class, and contains no parsing code whatsoever.)
	  Also eliminates duplication of "command" decoding for
	  non-config stuff like -showcfg, -debug and -fps.
	* SDL_VIDEOEXPOSE is *finally* at least handled! :-)
	* Removed gcc-only compiler flags and fixed other stuff
	  that caused trouble with some compilers. (Thanks to
	  Andreas Spngberg for the Solaris patch!)
	* Menu and state code cleaned up a little.
	* Configuration menu split up into Video, Audio,
	  Controls and Game.
	* ct_list_t now interprets change(0) (ie button press
	  or similar) as change(1), rather than just ignoring
	  it.

Kobo Deluxe v0.4-pre4
	* Replaced corrupted README.jp.
	* Delayed fps printout to program exit, as some setups
	  have serious trouble with output to the console while
	  running the game.
	* Fixed a sleeping bug in the gl_blendfunc() wrapper.
	* It's now possible to quit gracefully while loading
	  data. (Check when updating the progress bar.)
	* Old style mouse control is back. (Not that I
	  understand how anyone could play with that... :-)
	* Bigger and more visible mouse crosshair.
	* Added 'mouse' switch and 'mousemode' variable to
	  config. (MMD_RELATIVE not yet implemented!)
	* Video config cleaned up - unsupported OpenGL
	  settings removed.
	* Radar window code cleaned up and simplified.
	* window_t::alloc_color renamed to map_rgb, which is
	  more appropriate. The new version takes either three
	  Uint8 components (rather than X style Uint16), or an
	  Uint32 for "HTML style" hex codes.
	* Diagonal rocket sprites lined up with diagonal Kobo
	  (the player's ship! :-) sprites. (The ship has an
	  offset of +1 pixel in y in the gfx)
	* Added missing (8'th) frame to explosion animation.
	* glSDL:
		* Some tiling bugs fixed.
		* Single tile case optimized.
		* Vertical tiling implemented.
		* Horizontal and vertical tiling across multiple
		  textures implemented! (Not both h & v, though.)
		* Off-screen blits are culled.
	* Benchmark results:
	     P-III 933, Matrox G400, XFree86 4.1.0-17mdk:
		Resolution	SDL 2D	glSDL	ratio
		-----------------------------------------------
		1280x1024	16	60	3.8
		960x720		28	102	3.6
		640x480		62	202	3.3
		320x240		227	205	0.9

	  Note that OpenGL is pumping quite a bit more pixels
	  than SDL's RLE blitter in this game, due to the alpha
	  blended window frame. Here are the results with no
	  frame:
	     P-III 933, Matrox G400, XFree86 4.1.0-17mdk:
		Resolution	SDL 2D	glSDL	ratio
		-----------------------------------------------
		1280x1024	18	93	5.2
		960x720		32	163	5.1
		640x480		70	205	2.9
		320x240		256	205	0.8
	  Notice how glSDL appears to win even more in higher
	  resolutions, while it loses a little to SDL 2D in the
	  low end, where fill rate becomes next to insignificant
	  to OpenGL.

Kobo Deluxe v0.4-pre3
	* Hitting the window close button now causes a "brutal"
	  quit, just like hitting ctrl-C in the console.
	* Mac OS X OpenGL build script fix.
	* Now uses SDL_opengl.h if present. (Dunno if the check
	  is totally portable, though - but if it fail, at least
	  things shouldn't be worse than with the old way.)
	* Implemented tiling of wide surfaces.
		* Does *not* support multiple textures, so it
		  won't help with wide *and* tall surfaces, that
		  simply won't fit in one texture. (Sorry,
		  256x256 people! ;-)
		* The rendering loop for tall surface tiling is
		  missing... (Mostly a matter of cut'n'paste +
		  search'n'replace.)
		* Anyway, this means that Kobo Deluxe now
		  RENDERS PERFECTLY ON OPENGL! :-)

Kobo Deluxe v0.4-pre2
	* The glSDL layer:
		* Now uses handles instead of pointers!
		* Various bugs and stability issues fixed.
		--> Still misses vital features.
		--> Leaks textures - or at least TexInfos.
	* Some double buffer compatibility issues fixed.
	* "Stall" when rebuilding menues fixed.

Kobo Deluxe v0.4-pre1
	* Build with OpenGL on X fixed - without breaking Win32
	  and Mac OS X!
	* Added dummy score file to keep stupid WinZip from
	  removing 'scoredir'...
	* Added README.jp translated by Tsuyoshi Iguchi (?).

Kobo Deluxe v0.3
	* Name officially changed to 'Kobo Deluxe'
	* Upgraded to sfifo-1.2.
	* Various configure script fixes.
	* Added README file.
	* Updated logo.
	* Added filemapper_t, to handle paths on all platforms.
	* Rearranged main loop to handle re-initialization.
	* Fixed garbage after name in score files.
	* Rearranged score management code slightly.
	* Added prefs_t, which can parse, read and write options
	  from/to command line args and files.
	* Kobo now tries to save a backup of the user score file
	  in the user's home dir.
	* Cleaned up the game state system a bit, and added
	  confirmation dialogs before aborting game or quitting
	  Kobo.
	* Added various eye candy.
	* Added "Options" page.
	* Class myship now releases the player ship object as well
	  when turned off. (myship, and a bunch of other objects,
	  won't be destroyed and re-created when reinitializing.)
	* Moved graphics/ and audio/ from source to include path.
	* Added sound effects to the user interface.
	* Added Mac OS X fixes by Max Horn <max@quendi.de>
	* Quits on window close event (Max Horn <max@quendi.de>)
	* Paths for Mac OS X bundles added.
	* Fixed +/- keys for selecting level. (Thanks Max!)
	* Automatic timed logo/highscore switch added.
	* Credits screen added.
	* Simple scroll text added.
	* Win32 and Mac OS X bundle install styles added.
	* Added feedback delay based reverb with LP filters.
	* Added limiter/AGC with threshold and release params.
	* Joystick support; Samuel Hart <criswell@geekcomix.com>.
	* Filter plugin support added to "sprite".
	* Plugins added: rgb8, rgba8, cleanalpha, key2alpha, scale
	  and displayformat.
	* Implemented the "size" feature with three different
	  scaling filter modes.
	* Sprite and tile "palettes" separated for correct scaling.
	* Added various "fade out" effects.
	* Added "LOADING" screen.
	* Added "Screen Buffer Mode" setting with single, double,
	  semi triple and half buffering modes. (Note that the game
	  doesn't yet support all of them properly.)
	* Added FPS counter. (-fps switch)
	* Progress bar while loading and converting data.
	* gamestatemanager_t instead of those switch() statements...
	* Added "Get Ready" and "Game Over" states.
	* Improved filemapper_t and score_t portability. (I think...)
	* Removed annoying key state clearing.
	* SoFont:
		* CleanSurface() now only cleans the top row.
		* Fixed rounding when spacer width is odd.
		* No testing of '|' (for cursor) if the font
		  doesn't have it.
	* CS engine:
		* Freeing free objects won't crash the engine.
		* Safer and (probably) faster wrapping code.
	* "width" and "height" replace "size" option.
	* Cleaned up config_form_t and added a "rebuild" action for
	  dynamic configuration panels.
	* Added config options and gfxengine_t::driver(). (No OpenGL
	  code yet. OpenGL options hidden in "options".)
	* Added a thin black border in windowed mode.
	* Proper clipping done by window_t::invalidate() and
	  gfxengine_t::invalidate().
	* Sprite and text calls for fixed point coordinates added.
	* Fixed gfxengine_t::loadrect() - it dropped the RLE!
	* Added contrast and offset parameters to cleanalpha plugin.
	* Audio engine:
		* Added "nearest sample" resampling support.
		* Improved sample looping accuracy.
		* Added "samplerate" option.
		* Random pitch effect on some sound effects.
	* Improved pause mode. (Switches to "get ready".)
	* BTN_FIRE can now be used to start game from intro.
	* Cleanup + fix: SHIPS display is now updated correctly.
	* Added quick hack OpenGL rendering layer. (64 bit broken!)
	* "Escape" in pause mode now sends you to "Abort Game?".
	* Added AdvanceMAME "Scale2x" scaling filter.
	* Gave up on Scale2x + fuzziness factor - it just won't work
	  for 256+ color graphics. (It's still there, though.)
	* Added Diamond2x scaling filter - The Best so far! Also
	  very fast, even without serious optimizations.
	* Various scaling filter bug fixes and cleanups.
	* C++ extension changed from '.C' to '.cpp'.
	* Linux/i586/VGA vidsync hack removed.
	* Added main menu with "Start Game!", "Options" etc.
	* sprite.c: Size check for loading sprite palettes.
	* Added rotating tube effect for menu highlighting.

*** Name changed to "Kobo Deluxe".

SKobo v0.2
	* "sprite.c" now uses SDL_DisplayFormatAlpha().
	* Various autoconf checks added and implemented.
	* Audio ported to SDL. (OSS support remains.)
	* "-latency XXX" argument to set maximum desired audio
	  latency in milliseconds. Default is 50 ms.
	* Added control API to audio engine. (Moved looping there.)
	* Initial Win32 support:
		* Hacked temporary kludge in score.C
		* Added _snprintf define for snprintf()

SKobo v0.1 update (forgot to mention this...)
	* GIMPed new "Kobo Next Generation" logo.
	* Added the display_t class, which inherits from window_t,
	  and forms a display with a caption and text field.
	* Added GIMPed framework for the whole screen.
	* Re-implemented the "starfield" by grabbing 64 starry
	  tiles from an XKobo screenshot.
	* Centered radar screen vertically, moving "stage" and
	  "ships" down below the radar screen.
	* Added "HIGHSCORE" display.

SKobo v0.1
	* Removed all X specific code.
	* Added graphics and control system code from Project Spitfire.
	* Wrote gfxengine_t class. (Control system + video wrapper.)
	* Rearranged source tree and switched to autoconf/automake.
	* Wrote window_t class. (Clipping, scrolling etc.)
	* Fixed some bugs in sprite.c and cs.c. (*heh*)
	* Added text using the C++ version of SFont; SoFont.
	* Changed audiodev_t to open in nonblocking mode, to avoid the
	  game going to sleep if the device is busy. SKobo disables
	  sound FX if the audio device cannot be opened.
	* Pixeled new font and GIMPed a temorary logo.
	* Added alpha blended frame with rounded corners.
	* Added scrolling background (level 20) in intro mode.
	* Selecting starting level now shows the selected level in
	  the radar display and intro screen background.
	* Enlarged the core diameter by two pixels.

*** David Olofson <do@reologica.se> forks from 'V1.11+-do3', and
    calls the new branch SKobo, with version numbers starting over
    at 0.1.

V1.11+-do3
	* Cleaned up audio code and API.
	* Added sample looping feature.
	* Changed mixed fp/integer mixer into integer-only.
	* Increased internal mixer level to avoid dropping bits.
	* Fixed silly bug from -do2: The original sound was indeed
	  in stereo! <:*)

V1.11+-do2
	* Adjusted sound effects reference level. (Louder sfx.)

V1.11+-do1
	* Ported sound to OSS
	* Sound is enabled by default (use -nosound to disable)
	* Made audio run asynchronously with lock-free command FIFO

*** David Olofson <do@reologica.se> picks up XKobo 1.11+ from Izumo,
    adding '-doX' to the version code.

V1.11+
	* SGI sound added.
	* Triple size mode added.

*** Masanao Izumo <mo@goice.co.jp> picks up XKobo 1.11, appending
    '+' to the version code.

V1.11
	* ??

V1.10
	* fixed an endianness problem of score files
	* secure score files

V1.9
	* take measure against system calls interrupted by SIGALRM
	* '-hiscores' option
	* bonus ships

V1.8
	* add close() in file.C

V1.7
	* enabled to move on diagonals using the numeric keypad

V1.6
	* support for Solaris 2

V1.5
	* ceased to use semaphores
        * fixed a strange usage of setitimer
        * '-wait' option

V1.4
	* '-cheat' option
	* enabled to play using a mouse
	* enabled to compile with gcc-2.7.0

V1.3
	* fixed a bug about '-fit' option
	* enabled to select a stage to play

V1.2
	* support for TrueColor X server
	* '-fit' option
	* '-doublesize' option

V1.1 
	* first uploaded to tsx-11.mit.edu
