	* Makefile for Linux PPC was missing module p_doorsplus.o, fixed.

	* Fixed most Yadex 1.1.5 warnings in the included example PWAD's.
	  Fixed the makefiles and added more monsters and level ending
	  switches.

	* Implemented the slime trails fix from Lee Killough from MFB.

	* Use bit 13 of linedef flag to block line of sight on 2s lines.
	  Wrote test level map "shadows" to try it out.

	* Implemented the 271, 272 sky propertry tansfer linedefs from
	  MFB. Tested implementation with Boom WAD CATABOOM and made
	  example map "shadows" using SKY2 in MAP01.

	* First try /usr/local/games/xdoom for loading xdoom.wad
	  and then $DOOMWADDIR, prevents cluttering the filesystem
	  with various copies of the file.

	* Extracted WATERMAP from the Boom resource WAD and added it
	  to xdoom.wad, between C_START and C_END labels for support
	  of loadable multiple colormaps.

	* Modified the whole colormap handling to support multiple
	  colormaps. Also merge loadable colormaps from PWAD's between
	  C_START and C_END markers, this is supposed to be Boom
	  compatible.

	* Implemented the 242 linedef fom Boom for sectors with two
	  levels. Tested it with Boom WAD CATABOOM, the deep water
	  now works as intended. Tested further with Boom WAD PAX,
	  this one includes deep water over the player's head.

	* Implemented all the generalized linedefs from Boom.
	  Playtested and debugged with some Boom PWAD's, more
	  testing is required.

	* Fixed possible buffer overrun in searchpath().

	* Displaying 100% secrets for maps without any secrets didn't
	  work, fixed.

	* Implemented the extended sector attributes from Boom.

	* Added the wind/current thingies 5001 and 5002 from Boom to
	  multigen.txt and recompiled info.c/info.h with multigen.
	  No more warnings from da Boom maps about unkown things, neato.

	* Implemented the code from Boom dealing with wind/current
	  thingies: linedefs 224, 225 and 226. Tested the new thingies
	  with Boom PWAD DAWNING, they seem to work OK.

	* Print warnings if first sidedef of linedef is missing and
	  a linedef has 2s flag set, but no second sidedef.

	* Implemented the Boom friction stuff, linedef 223. Tested a bit
	  with Boom PWAD's DAWNING and ARTICA. The icy floors in ARTICA
	  are cool.

	* Added save/load of the pusher and friction thinkers. Raised
	  version number to v1.15, to prevent loading of incompatible
	  files.

	* Some minor improvements in the test PWAD plustst. Forgot to
	  make the laser line repeatable. Flag for wall animation
	  is initialized now by script, so that the state is the same
	  also when player enters sector before script was started.

	* Made the slime river and lava pool in test PWAD boomtst deep
	  water, added multiplayer starts.

Sun Jul 23 21:57:47 2000	<um@compuserve.com>

	* Implemented lots Boom compatible extended linedefs, more Boom
	  levels do work now.

	* Implemented save and load of the new Boom Elevators.

	* Because of the Boom Elevators the save game files are not
	  compatible anymore and the game version number was increased
	  to v1.14, to prevent loading of incompatible files.

	* Substited makefile for Linux PPC with the new one contributed
	  by de savant.

	* Fixed a compile problem with svgalib on Linux PPC, as reported
	  by de savant.

	* Worked in the patches for Irix 6.5 contributed by Marcus Herbert.

Tue Jun 27 09:13:18 2000	<um@compuserve.com>

	* Forgot to create directory ~/.xdoom, fixed.

	* Merged with the Solaris x86 port.

	* Fixed a memory allocation problem for vissprites in r_things.c.

	* Added new linedefs for a silent opening door, to be able to release
	  new stuff into a level unheard by players.

	* COMTXT lump has new data format, NL terminated instead of
	  0 terminated. All example PWAD's adjusted appropriate.

	* Added new linedef to trigger comdev messages by monsters.

Sun Mar  5 20:09:05 2000	<um@compuserve.com>

	* Another review of all sources was in order, to prevent it getting
	  messy again. Weeded out some unused and old stuff and fixed
	  comments.

	* Ported to Linux 2.2.x on Dec Alpha.

	* Implemented line special to switch lasers off for XDoomPlus.
	  Worked a bit on PWAD plustst to test it out.

	* Implemented normal exit switch for XDoomPlus, added to plustst
	  for testing.

	* Queues for ACS script scheduler must be initialized upon entry
	  of every map and not just at game start, fixed.

	* Use ~/.xdoom for the .doomrc file to get out of the way of
	  other doom engines.

	* Option -cdrom is gone, saved game files will be held in ~/.xdoom.
	  Saved games are not compatible between game engines and this
	  avoids loading an incompatible one from another engine.

Sun Dec  5 20:44:44 1999	<um@compuserve.com>

	* Commented out the tests for sprite rotations for the Valve Half-Life
	  PWAD. This one includes rotation sprites for the dead marine.

	* Implemented Boom linedefs 171, 219, 228, 230, 232, 234.
	  This Valve Half-Life PWAD does work OK now.

	* Implemented silent line teleporter 244 from Boom, the replication
	  station prefab made for Boom is working now.

	* Number of sprites calculation still was buggy, Final Doom didn't
	  work anymore on every platform. Should work OK everywhere now with
	  all id IWAD's.

	* Some more fixes for FreeBSD contributed by Priit Jaerv.

	* Under various conditions colors were all wrong on 24bpp and 32bpp
	  X servers. The color masks depend on byte order of the X server,
	  not on byte order of the host, should work correct now everywhere.

	* Oliver Kraus provided options needed to compile with Sun's
	  WorkShop compiler on Solaris SPARC and a new optimization
	  for 32bpp * 2 under X.

	* Under AIX only shareware IWAD worked due to structure packing,
	  fixed, also the commercial IWAD's are working now.

	* Core dumped under Solaris, if DISPLAY variable not set, fixed.

Mon Nov  1 22:55:08 1999	<um@compuserve.com>

	* Forgot to create directory aix for AIX object files, fixed.

	* Fixed another warning from AIX compiler.

	* Overworked makefiles a bit.

	* Integrated FreeBSD ioctl audio module from Priit Jaerv.

	* Integrated FreeBSD libvgl frame buffer module from
	  Priit Jaerv.

Mon Oct 25 06:22:42 1999	<um@compuserve.com>

	* Re-released the whole sources under GPL.

	* Made sure everything is RCS clean in case someone wants
	  to set it up.

	* Improved precision for PI define.

	* Ported to AIX 4.2.

	* Fixed a bug where number of sprites was calculated wrong,
	  resulted in core dump on AIX.

	* Fixed for big endian displaying on 24bpp and 32bpp X servers.

Mon Sep 27 05:11:38 1999	<um@compuserve.com>

	* Some bug fixes for Solaris 2.x on SPARC reported by Oliver Kraus.

	* Fixed the bug where engine got stuck in plustst.wad sometimes,
	  reported by Andre Majorel.

	* Lines which do damage in XDoomPlus should not damage the player,
	  if the god cheat is active. Reported for the laser beam in
	  plustst.wad by Andre Majorel and fixed.

Mon Aug 16 06:07:08 1999	<um@compuserve.com>

	* Use hash routines from Boom to greatly speed up searching
	  for lump names.

	* Fixed merging of PWAD's, so that sprites and flats in PWAD's
	  work. As an example the Chex cereal TC does work ok now.

	* Fixed the chaingun sound linking to pistol sound and added
	  option -nochgun to suppress usage of the extra chaingun sound.

	* Fixed monsters getting stuck in doortracks, if not playing
	  demo in compatibility mode.

	* Added option -stripextbits to strip linedef flag bits which
	  are not used by the original game engine.

	* Added a PWAD which demonstrates the TFE bug.

Tue Jul 20 16:34:33 1999	<um@compuserve.com>

	* Removed translucency from Berserk powerup, as requested by Andre
	  Majorel. Don't know anymore why I made it translucent and he's
	  right, is just another medikit like box. Info.c and info.h
	  recompiled with multigen and substituted.

	* Modified the builtin texture and flat animation stuff based
	  on Boom sources, so that customized tables can be loaded from
	  PWAD's. Added default tables to xdoom.wad and tested some
	  IWAD's and PWAD's, all seems to be fine.

	* In the demo PWAD's lasdemo and trandemo I had replaced the
	  BFALL animated texture with my animated terminal texture.
	  Modified both PWAD's to add the animated terminal texture
	  to the default textures and tested this, to make sure that
	  customized animated textures can be added.

	* Modified the builtin switches list based on Boom sources, so
	  that customized switches can be loaded from PWAD's. Verified
	  with all id IWAD's that the default switch table in xdoom.wad
	  works.

	* Added the multiple use linedef flag from Boom.

	* Made "oof" sound work on 2s lines.

	* Texture scroller 254 was broken, fixed and tested in boomtst.wad,
	  with a scrolling ramp.

	* Added a customized switch texture to boomtst.wad, works OK.

	* Modified the comments constistently to C++ style before adding
	  any more new stuff. I don't like C++ comments in C sources, but
	  better have a consistent style.

	* Started working on the ACS P code interpreter. Level initialization
	  now checks if there is a BEHAVIOR lump and if found, a Hexen style
	  map is assumed. This means that linedefs and things internally
	  now are stored in extended Hexen format, the read routines convert
	  conventional Doom map data into the Hexen style format. Also the
	  scripts from the BHAVIOR lump are loaded. Tested engine with Doom
	  maps, it still seems to work fine.

	* Then added a new game type to tkwadcad (xwadtools), which I call
	  XDoomPlus. This is a Doom map, but in Hexen style format and
	  with a BEHAVIOR lump for the scripts. Then wrote a tiny test
	  level with this new tkwadcad and tested the engine with this
	  PWAD. Works too, so both WAD formats can be used now.

	* Debugged the P code interpreter, implemented the most essential
	  P codes and wrote ACS script for the test PWAD. Doesn't do much more
	  than printing a message yet, but the P code interpreter is working.
	  Tested that level with ZDoom, works too, we are compatible so far.

	* Completed P code interpreter, can handle almost everything other
	  than PolyObjs and sound sequences now.

	* Wrote new module p_specplus.c/.h for handling XDoomPlus line
	  specials. Modified p_map.c so that the movement routines are
	  game type dependend and call the new stuff for XDoomPlus.

	* Implemented ACS_Execute line special, this can start another
	  script when something crosses, uses or hits a line. Added such a
	  trigger line to plustst.wad and played arround with it, until
	  everything worked OK.

	* Implemented XDoomPlus line specials for wall scrollers.

	* Implemented ACS_Suspend and ACS_Terminate line specials.

	* Implemented ZDoom compatible transparent lines. The transparency
	  value in argument 2 is ignored for now, it always uses the
	  default TRANMAP from xdoom.wad.

	* Moved P_UseSpecialLine from p_switch.c into p_spec.c, don't
	  know why it was in there, doesn't belong there.

	* Changed demo handling, playing demos will check for the game version
	  and if not same as game version, play demo in compatibility mode.
	  Recording demos will always record everything now supported by
	  XDoom.

	* Implemented XDoomPlus linedef special, which destroys things. Great
	  fun to set off explosions from linedefs or scripts. I need mines...

	* Implemented XDoomPlus linedef special, which damages things which
	  cross or use the line.

	* Don't abort on unknown things anymore, just print warning and
	  don't spawn them.

	* Documentation work.

Thu Jun 24 16:45:33 1999	<um@compuserve.com>

	* Implemented tagged wall scroller 254 from the Boom sources.

	* Implemented 250 and 251 floor and ceiling scrollers from the
	  Boom sources. Started writing a test PWAD, which will be used
	  to make sure, that Boom features implemented in XDoom work
	  with both engines.

	* Implemented 252 and 253 floor scrollers from the Boom sources,
	  which can carry objects on the floor, nice, love them.

	* Implemented 213/261 for independent floor/ceiling lighting
	  from Boom sources, nice too, allows more realistic lighting.

	* The above work required massive changes in the planes, because
	  I was there anyway I implemented dynamic allocation of the
	  visplanes, openings and vissprites too, from the code used in Boom.

	* For Linux x86 the svgalib version is an own target in the
	  makefiles now, requested by Andre Majorel. I didn't know that
	  there are Linux distributions where svgalib won't be installed
	  by default and people could remove it anyway.

	* Modified some code to use the faster P_FindLineFromLineTag
	  function, using the linked tag list is a lot faster than
	  going through the whole lines.

	* M_CDVOL pic is mandatory now, I don't bother loading it
	  optional anymore, too much other stuff needs to be loaded
	  from xdoom.wad now, without that one could make all and
	  everything optional.

	* Fixed length of some title strings, some were longer than 80
	  chars.

	* Made the drawsegs dynamic allocated, like in Boom. This fixes
	  the 2s line HOM bug. Tested with Lee Killough's PWAD conduits.wad,
	  included in the bsp23x sources. Is included in xwadtools, go figure.

	* Implemented 207/208 silent teleporters from Boom sources.

	* Modified some code to use the faster P_FindSectorFromLineTag
	  function.

	* Implemented 221/222 lower floor triggers from Boom sources.

	* Implemented 268/269 silent monster only teleporters from Boom.

	* Finished source code reformatting, it was an awful stupid work,
	  so don't you mess it up again.
	  JRD would say: "If ya mess 'em up I'll break yer fingers" :)

	* If a level has no secrets, display 100% secrets found in the
	  stats. It is disappointing if one can't find the secrets but
	  there just aren't any...

	* Implemented Boom's way of translucent 2s normal textures with
	  linedef 260 for better compatibility.

	* Changed path in all PWAD makefile to /usr/local/games/xdoom,
	  documentation says to install IWAD's there.

	* Modified the mmap() sound support. Some releases of the OSS
	  driver seem to have a bug, the DMA doesn't always get started
	  and so the output pointer never is increased. The program got
	  stuck under such conditions waiting endless for the sound card
	  to play the DMA buffers. This is fixed, program won't loop
	  endless anymore, just no sound then.

	* Implemented saving and loading of the new thinkers for the
	  scrollers.

	* Implemented saving and loading of the thinker for sliding doors.

	* Implemented saving and loading of the thinkers for force
	  fields.

	* Uhm, seems id forgot to save the flicker thinkers, added
	  those too.

	* Fixed some of the assumptions made like an int has 4 bytes
	  and crap like that. There might be more of this...

	* Fixed the limit on intercepts by making them dynamic allocated,
	  based on sources from Boom.

	* Fixed the limits on active platforms and active ceilings by making
	  them dynamic allocated based on sources from Boom.

	* Implemented tagged manual doors, which switch light on/off in
	  tagged sectors, taken from Boom sources.

	* Fixed the mmap'ed sound support, so that falling back to
	  writing device output works again, if mmap'ing won't work.
	  Needs still more work to stop all sounds and such.

	* A bit assembler optimization for x2 on 8bpp X servers on
	  x86 systems, when compiling with GNU C. Doesn't seem to
	  be faster though.

	* In endtxt.c use ESC sequence to switch terminal to first
	  alternate character set while printing the stuff, and when
	  done switch back to primary character set. Many terminals
	  and good xterms have an IBM PC compatible character set as
	  alternate nowadays...

	* Documentation work.

Mon Jun 14 13:00:58 1999	<um@compuserve.com>

	* Renamed d_french.c to d_french.h, don't know why it was named
	  .c, this was wrong.

	* Moved trigger handling for communication device into p_spec.c,
	  where it belongs.

	* Implemented single shot walk over trigger for the communication
	  device. Modified the example PWADs to use the single shot trigger,
	  is less annoying.

	* Implemented communication with access terminal to activate a
	  deactivated teleporter. Implemented this in the trandemo.wad
	  example.

	* Fixed a bug with the block shoot on 2s flag, didn't work correct
	  for force fields.

	* Implemented sound signal if communication gadget receives a
	  new message.

	* Implemented holstering of weapon.

	* Implemented communication with access terminal to switch a force
	  field off. Example lasdemo.wad modified to make use of this.

	* Replaced id's wall scroller (48) with the thinker based scrolling
	  from Boom. Implemented are 48, 85 and 255 wall scrolling so far.
	  Added 255 scrollers to trandemo.wad to try those out.

	* Implemented Lee Killough's Medusa fix from the Boom sources.
	  Also textures aren't limited to 64k with this anymore.
	  Unlike in other engines I made it conditional compilable, like
	  the other bugfixes too.

	* Raised allocated memory zone to 8mb, the modifications need a
	  bit more dynamic memory now. Made this the minimum too, so that
	  users can't configure it under the limit and then complain that
	  some PWADs don't play anymore.

	* Engine got stuck on trying to play demos from ancient Doom
	  releases. Got rid of the DEMO_VERSION_CHECK define, demos
	  older than 1.4 won't be played, period.

	* Modified xdlaunch so that it looks in /usr/local/games/xdoom
	  if DOOMWADDIR not set, same as the shell wrappers do.

	* Took menu text pics 'horizontal' and 'vertical' from the Boom
	  resource wad, overworked them and added them to xdoom.wad.
	  Then I got rid of the option -mvert and implemented a mouse
	  menu instead, with sliders for setting horizontal and vertical
	  sensitivity.

	* Rebuild xdoom.wad with all images in global namespace,
	  after adding a section for that to wadgc.

	* Documentation work.

Sat Jun  5 13:44:48 1999	<um@compuserve.com>

	* Fixed a problem with musserver not playing resources from files
	  in the current directory used without a path.

	* More patches from Eric Lakin for FreeBSD 3.x.

	* Top level makefile completely overworked with ideas from
	  Andre Majorel.

	* Modified linedef for sliding doors to 300, was 200 before
	  and this is used by Boom already.
	  
	* Modified sliding door code to use 8 frames instead of 4, as
	  id had planned to use. Tried it out with the door images
	  from Andre Majorel and 4 frames sure won't look good.
	  Modified the code further, so that the last frame stays
	  visible, it didn't look good when the door completely vanished.

	* Because the sliding door images are not included in IWADs,
	  the code also needed a modification to look for this images
	  conditional now. The initialization routine barfed because
	  it couldn't find the textures, if the engine was started
	  without a PWAD including the new door textures.

	* The original design made the linedef unblock after the door
	  opened completely and blocking again, after closed completely.
	  It didn't feel right to me, when I was stuck in front of an
	  almost open door, or could sneak through an almost closed door.
	  Original code modified, so that a door can be passed after opened
	  half way, and it blocks again after closd 3/4. It feels more
	  realistic now.

	* LOS for sliding doors was not implemented at all, so they were
	  'see-through', regardless if opened or closed. Implemented this,
	  so that monsters only can look through open doors.

	* Same for bullets, missiles, fist and chainsaw hits, 2s lines
	  always were passable so far. If the 2s is a closed sliding door,
	  now it will block all this.

	* Added sound handling to the sliding door. I think this door should
	  sound different than the regular door, but due to lack of some
	  new sound we'll use the same sounds as for the regular doors for
	  now.

	* Modified sliding door initialization code, so that it supports
	  4 different sliding doors, as id had planned.

	* Moved the linedef flag for translucent middle texture from bit 9 to
	  bit 10, because bit 9 is used by Boom. Modified all example PWADs
	  using translucent textures appropriate.

	* Moved the linedefs for lasers from 20x to 32x, the old used values
	  collided with Boom. Modified the example PWAD appropriate.

	* Implemented new linedef flag to block shoots on 2s lines, so that
	  one cannot shoot through translucent textures like glass or a
	  solid force field, e.g. Make use of the new flag in the demo
	  PWADs for force fields and translucent textures.

	* Reports the used X visual in the engine log, so that one can
	  see what the program found and is using.

	* Worked some on 32bpp True Color support, still doesn't seem to
	  work correctly though.

	* The program still caused a core dump when started on a X display
	  with not supported visual, like 4bpp GrayScale, fixed.

	* Started working on the communication device. So far the device
	  can be activated and deactivated with F5. Graphics looks bad
	  and needs to be overworked.

Sat Mar 27 11:13:35 1999	<um@compuserve.com>

	* Made mouse support working under OpenServer5 for the DGA module,
	  requires usage of the OS event manager which I had to learn about
	  first.

	* Put #ifdef ... #endif arround the various mice defines in i_lmouse.h
	  for Linux svgalib mice support. This might help compiling with
	  different svgalib releases than I used.

	* Implemented Linux Joystick support module and added it into the
	  X, vgalib and 3DFX versions of the program.

	* Worked in patches from Eric Lakin for FreeBSD 3.x.

Tue Feb 23 14:25:47 1999	<um@compuserve.com>

	* External sndserver process can merge sxf lumps from pwads now,
	  even the optional new chaingun sound from xdoom.wad is supported.
	  This only works on OS's with /proc/<pid>/cmdline support and
	  it is a real bad hack too, I'm not proud about. The external
	  processes belong into the trash can and should be rewritten from
	  scratch, so that the game engine tells them exactly what to do.
	  One day I might rewrite the whole crap, for now the hack works
	  and most people just wanna play only anyway, for them it works.

	* Support compilation with the native SCO OS5 compiler under OS5
	  now too. With inlined asembler we can avoid the problem of
	  missing long long support and it's faster anyway. Made compilation
	  with SCO cc the default, probably everyone using OS5 has the
	  SCO compiler, while installing a GNU compiler is additional work.

	* Added release date to the engine output, as suggested by
	  Andre Majorel.

	* Implemented Linux VGA frame buffer module with svgalib,
	  requires root permission, yuck.

	* Because there are 2 modules now using the mouse support from
	  svgalib, I moved the list with the supported mice into an
	  own include file, i_lmouse.h.

	* Implemented VGA frame buffer module for SCO OpenServer5 and 
	  Unixware, needs more work for OS5, is pretty good for UW.

	* Moved the sound update for synchronous builtin sound support
	  into I_StartFrame for all display modules, this is better.

	* Implemented mouse support for SCO Unixware VGA frame buffer
	  module.

	* Pausing the game while iconified was not the right idea because
	  of the demo loop, this is done different and better now.

	* Implemented pausing musserver too, so that the music stops
	  playing, while the game is paused or iconified, same as with
	  CD music support. This is much nicer.

Fri Feb 12 15:10:18 1999	<um@compuserve.com>

	* For diagnose output stdout and stderr was used inconsistently,
	  fixed, all output goes to stdout now.

	* Overworked i_sound.c and made all global variables static,
	  which aren't used in other modules.

	* Removed the OLD_SOUND_DRIVER stuff completely, resetting the DSP
	  doesn't work on all OS/OSS combinations, so we just don't reset
	  it anymore and this won't hurt on anything I tried.

	* Overworked i_sound.c and i_sound.h even more, over the time it
	  got a bit messy. Functions nicely sorted now for SFX and Music
	  API and one common coding style throughout the whole module, is
	  a lot more readable now. Cleaned up comments too, hope this is
	  better understandable now for others.

	* Builtin sound now works with Unixware7, Unixware2 probably
	  too, not tested.

	* Implemented mmap'ed DMA buffer mixing for the synchronous sound
	  update. Works under Unixware and Linux, my OSS driver for
	  Openserver5 when queried says: not supported, but the code will
	  fall back to writing to the device then, which even Quake2 doesn't
	  do :-)

	* For this I had to re-balance the whole sound system. 512 samples
	  per tic cannot keep the DMA buffer filled and 1024 samples per
	  tic cause a significant frame rate drop, so changed that to
	  768 samples per tic. Had to adjust sizes and fragments of the
	  DMA buffers too and made sure it's dividable by 4K, so that
	  it can be mmap'ed on x86. This will be a lot of fun to port to
	  an environment where the page size isn't 4K.

	* The Doom SFX volume always was pretty low compared to other
	  applications. I had raised it for 8bit cards before, because
	  the volume was way to low on my old card, to hear anything.
	  I have raised the volume unconditional now for all type of
	  cards used. I used Quake for comparing the SFX volume and
	  the XDoom max sound volume now is about the same as Quakes.

	* Did same in sndserver sources.

	* Fixed a small bug in the XSHM module, didn't compile without
	  POLL_POINTER anymore.

	* In the endtext printing routine move cursor up one line at the
	  end, so that first line won't scroll out of the terminal.

	* Fixed the few remaining warnings about uninitialized variables.

	* Fixed some more warnings for SCO's UDK compiler under UW7, the
	  remaining ones are bogus or not fixable without causing warning
	  in other environments.

	* Use our own usleep() also on Linux, you never know what the
	  version in the hundreds of libc releases does. Same in
	  musserver.

	* Don't use I_Error() anymore to stop a timed demo.

	* Fixed the bug which caused a map with thing id 0 to crash the
	  engine. Now plutonia.wad from Final Doom works in demo 3, the
	  map includes 2 things with id 0. Thanks to Andre Majorel who
	  pointed out that xdoom will crash on things with id 0.

	* New info.c and info.h, modified multigen.txt so that player
	  missiles also have a smoke trail. Hacks added to g_game.c too,
	  to switch the smoke trail off for demo playing/recording, is
	  only active while playing. I hate this hacks, but I want the
	  demo compatibility with the original games, grumble.

	* The sky textures at least for Ultimate Doom were wrong, fixed,
	  seems to be OK now for all id IWADs.

	* The original games had a hack, which rendered the sky bright and
	  with original colors, when the invulnerability power-up was
	  active. I don't know why id did this, but I never liked it, fixed.

	* Release grabbed mouse while playing demos.

	* Made sure that the chunks allocated from zone memory are 8 byte
	  aligned for 64bit CPU's.

	* Improved performance for 8bpp scale x2 under X a bit by using
	  64 bit integers. This only would get compiled with some GNU C
	  variant, some vendor compilers produce invalid assembler code
	  with shift operations for long long variables.

	* Fixed the whole POSIX signal handling stuff, it was still
	  pretty messy and buggy.

	* Improved the CD audio stuff a bit, the ioctl() module won't
	  hang on CD's anymore, with data tracks only.

	* Improved the synchronous sound handling. The function writing
	  the sound samples to the DSP now will get called from the
	  i_video_* layers. If the sound update flag is set, the sound
	  buffer is written, else we sleep there a bit. This balances
	  the whole I/O stuff much better than the simple minded
	  implementation from before.

Mon Jan 25 17:34:34 1999	<um@compuserve.com>

	* The fixes for bullet and missile eating walls deactivated now too
	  while recording demos. They got out of sync with this fixes, the
	  bullets and missiles travel different distances and the timing
	  gets messed up then.

	* Implemented root permission free usage of mice in the 3DFX
	  DGA module, manual page updated.

	* Re-arranged the config strings in m_misc.c a bit and changed
	  the defaults for mouse setup.

	* Draw icon bitmap and use it for X as the default icon.

	* Don't try to shutdown the graphics anymore in XSHM module in case
	  it wasn't initialized before, that doesn't work well.

	* Allow vertical mouse move events when the menu is active but
	  option -mvert isn't used.

	* Make a punch sound when hitting a wall too, the punch is that
	  hefty that it even makes a puff. So there, I like this better.

	* If there are problems with graphics initialization I_Error
	  is called, which calls I_ShutdownGraphics. No testing for
	  usage of shared memory was done in the XSHM module, and so
	  I_Error was called from there, which called I_ShutdownGraphics,
	  which... Funny eh, fixed.

	* The bugfixes for TFE and bullet/missile eating walls can be
	  compiled conditional now. First I would like to document what
	  was wrong and what was done to correct the bugs. Second if you
	  use XDoom to test PWAD's you made your self, you might not want
	  the bugfixes. If you use XDoom to test self made PWAD's and you
	  give them to others playing then with the original games, as
	  distributed by id, better don't compile a bug fixed XDoom.

	* Give up CPU when waiting for SHM to finish in XSHM module.
	  Idea taken from Colin Phipps lxdoom port for Linux.

	* Same for the 3DFX module, give up CPU after telling the
	  card to switch buffers and display the new frame.

	* Now with a less busy CPU also the asynchrony sound handling does
	  work.

	* Took Colin Phipps idea about polling the mouse pointer instead
	  of event handling it from his lxdoom sources. Much better.

	* Implemented the new thing flags "not deathmatch" and
	  "not cooperative", compatible to Boom. This certainly is a good
	  idea to make better multiplayer levels, off now to add support
	  into tkwadcad...

	* Now, after I got that CD Volume graphics done, the sound volume
	  menu shows this graphics if the resource is found (in xdoom.wad).
	  If not it just displays the CD icon from id's IWAD's, as before.
	  Looks much nicer with the graphics of course.

	* Got the first force field (laser barrier) working. It can be
	  switched off, waits some time and then, if no stuff is in the
	  front-/backsectors, it closes again.

	* Added another lindef special, so that the laser lenses can be
	  shot, which damages the laser and switches it off forever.

	* Added translucent drawing of wall textures, looks much better
	  for the laser beams.

	* There was still one nasty bug in the sfx sound channel handling,
	  if the user set it above the max handled channels the program
	  dumped core. This is fixed now and I have raised the number of
	  possible sound channels to 64, my systems easily can handle
	  32 channels, it sounds better of course.

Mon Jan  4 00:09:17 1999	<um@compuserve.com>

	* Fixed the bullet and missile eating walls when ceiling texture
	  is a sky.

	* If option -grabmouse isn't used, mouse events will be ignored now
	  completely, it was irritating.

	* Vertical mouse movement ignored if option -mvert isn't used. I
	  like it better to use the mouse for horizontal aiming only and
	  use the keyboard for movement. Manual page updated.

	* If iconified pause the game, if not playing demos. Pause while
	  playing demos gets them out of sync.

	* Setting the WM properties is done more completly now, window
	  resizing not possible anymore.

	* Changed options -disp and -geom to the more standard Xlib options,
	  manual page updated too.

	* Integrated Lee Killough's C drawing routines with the TFE fix
	  from the Boom sources.

	* Integrated Lee Killough's x86 assembler drawing routines with the
	  TFE fix from the Boom sources.

Fri Dec  4 18:05:30 1998	<um@compuserve.com>

	* Ops, left the slow vertice drawing code as default in the
	  Voodoo 3DFX module, changed this to the faster image drawing
	  code.

	* Allow to play with keypad cursor keys by default too. Not all
	  keypads have an equal key, allow addition key too, for increasing
	  window size.

	* Added keypad cursor keys to the Voodoo 3DFX code too.

	* Ungrab mouse pointer while game is paused, to that X is
	  usable again.

	* Fixed I_GetTime() so that it won't return a tic lower then
	  the last one on systems with RTC drift correction and NTP.

	* Number of visplanes raised to 512 for one very huge PWAD.

	* NUMKEYS in g_game.c raised to 65536 to allow assignment
	  of all X keydefines.

	* Playing episode 4 of Ultimate Doom didn't work for network
	  games, fixed.

Tue Oct 27 13:38:39 1998	<um@compuserve.com>

	* Returning the focus after destroying the xdoom window was done
	  wrong, fixed, window over which the pointer is will get focus
	  back.

	* Function declarations in i_video.h and i_system.h were messed up,
	  fixed.

	* Renamed i_video.c -> i_video_xshm.c and started writing a new
	  module i_video_3dfx.c, which uses a Voodoo 3DFX as framebuffer
	  by using the 3DFX Glide lib under Linux x86.

	* Changed default key for 180 degree turn to '<', is right besides
	  left shift key on many keyboards, does work now with the keycode
	  mode used for non X framebuffer support.

Sun Sep 20 10:09:11 1998	<udo@umserver.umnet.de>

	* Optimization for 16bpp X server and scaling * 2 and * 3, by doing
	  scaling and colormap transformation together in a single loop. This
	  halves time needed for the transformations and it does matter a
	  lot on lower end machines. On anything better than a Pentium 200
	  one won't notice it.

	* The window haven't had a title, now it has, window managers now
	  can be programmed to handle the xdoom window in some way.

	* Modified builtin sound code, so that it's compatible to the old
	  Voxware sound driver too. Seems to work with latest OSS and the
	  old Voxware driver. Active in Linux Makefile, old 1.2.13 releases
	  can't be upgraded to latest OSS without hacking the driver.

	* 8bit sound volume was to low. New volume table for 8bit sound,
	  with increased values.

	* Commented I_WaitVBL in m_menu.c, so that the quit sound is played
	  immediately, like in original Doom. I guess this hack was because
	  they didn't shutdown sound properly before.

	* Enabled the code for horizontal sliding doors to see what it can
	  do so far. Need to add animated textures into xdoom.wad, probably
	  a new lump TEXTUREX. For now using one of the not animated door
	  textures, but that makes the door working like a force field,
	  poof gone... NOTE: add another new linedef for force fields!
	  That stuff must be pretty old, they were using linedef type 124
	  originally, which is one of the exits nowadays. So I modified it
	  to be activated by linedef type 200, which is unused so far.

	* With the code as was, it was possible to open such a sliding door
	  only from the side with the right linedef. Added the little it
	  needed, to allow opening the door from both sides. The hook was
	  there, wondering why they abandoned this whole thing, we'll see...

Mon Aug 31 16:54:36 1998	<udo@umserver.umnet.de>

	* Included Andre's patch for PWAD lookup.

	* Improved Linux audio CD support, it now will try to play all tracks
	  instead of starting at track 2. The TOC is queried to figure, if a
	  track is audio or data. Loops endless with CD's with data tracks
	  only and needs more improvements to prevent this. So, for now simply
	  don't try to play CD's with data tracks only, eh.

	* The Light Amplification Visor thing was rendered translucent, fixed
	  the multigen state tables and build new info.c/info.h, this didn't
	  look that great after all.

	* Moved the flag bit for translucent rendering into a new and unused
	  bit, so that it doesn't interfere with the multiplayer bits for the
	  player sprite colormaps anymore.

Sat Aug 22 16:17:26 1998	<udo@umserver.umnet.de>

	* Implemented Z_Realloc to be used for data structures allocated
	  static so far.

	* Replaced spechit[MAXSPECIALCROSS] in p_map.c with dynamic
	  allocated memory. Gee, some code even didn't check for the
	  index out of bounds and so some PWAD's caused other memory
	  to be overwritten, resulting in odd crashes sometimes.
	  Whew, that really cool phobos.wad seems to work OK now.

	* While playing around with Plutonia map 12 I ran into
	  another engine limit. Rewrote P_FindNextHighestFloor in
	  p_spec.c, so that it doesn't use a fixed array anymore.

	* While I was at it, I noticed that all the P_Find* functions
	  weren't very elegant. ANSI C guarantees that expressions
	  are evaluated from left with && and ||. No need to use
	  variables, optimized and I don't think it is harder to
	  understand than before. Probably a little bit faster too.

	* Added cheat to get the ammo backpack. Messages added or
	  modified appropriate too.

	* Made missile explosion translucent too. Fine with the original
	  id IWAD's, but how will it look like with the thousands of
	  PWAD's with modified graphics? Different translucency tables
	  maybe for WAD authors, so that they can control this better?

	* Same for barrel explosions and exploding monsters: lost soul,
	  pain elemental.

	* Ups, made the radiation suit translucent and the computer map
	  powerup too. Fixed this in multigen.txt and replaced the info
	  files.

Thu Jul 30 17:26:44 1998	<udo@umserver.umnet.de>

	* I replaced info.c and info.h with the ones generated from
	  multigen. I also took my code hack for translucency flag
	  out of g_game.c, the flag is set in the input file for
	  multigen now. This is much better than the hardcoded crap
	  from before.

	* I modified the hardcoded link of the Chaingun sound to the
	  pistol sound in sounds.c and p_pspr.c. The program now tries
	  to load a sfx lump with the name DSCHGUN and uses the sound
	  from this, if found. If not found it falls back to the pistol
	  sound. This only works because the default behavior is to
	  load the pistol sound for every sound lump not found. The
	  linking of sounds id tried to implement definitely doesn't
	  work.

	* Precaching of sound seems to work OK, no need to do that again
	  in s_sound.c, commented out.

Sun Jun 21 00:23:11 1998	<udo@umserver.umnet.de>

	* Added the option -notrans to switch translucency off completely,
	  some Doom addons like 'A Fistful of Doom' (Western Doom) look
	  really stupid with translucent vultures and such.

	* Added option -noendtxt, so that the end text won't be written.
	  I did this for xdlaunch, it can't display the stuff right in
	  it's log widget anyway. Xdlaunch modified too, it will call
	  xdoom with this option.

	* Also this eye in a symbol isn't translucent anymore, things
	  are changed in conversions addons, and the translucent look
	  might not be appropriate then.

	* Took the detail level out of the menu and commented it out
	  everywhere. This low detail mode wasn't supported correct
	  anyway and it's not interesting to support this very blocky
	  looking mode, you don't want it.

	* Removed the CDAUDIO compile time option, there is the stub
	  module which is needed anyway, so why did I do this in the
	  first place??

	* Volume for the CD player has it's own volume control now,
	  added to menus, initializing the default, saving the
	  setting.... all implemented.

	* Hm, I have no text image for CD audio volume, so I just
	  use the CD icon for this, seems to be available in all
	  id IWADs.

	* Bug in the cheat IDCLEV fixed, should work now with all id IWAD
	  files.

Tue Jun 16 19:44:11 1998	<udo@umserver.umnet.de>

	* Load xdoom.wad after the IWAD, so we can replace resources
	  in the IWADs with our own, besides adding new ones.

	* The 'modified' banner disabled, which was displayed if a PWAD was
	  used. Even with a licensed IWAD id Software won't support this
	  program, so away with that banner and waiting for input.

	* Printing of ENDOOM lump wasn't implemented, done now.

	* 180 degrees turn implemented.

	* Assembler inline stuff for GNU C improved some more.

Wed May 27 01:57:43 1998	<udo@umserver.umnet.de>

	* The game mission wasn't handled correct, a variable gamemission
	  and enums existed, but this was never used. I implemented this
	  as far as I could figure what the fragments were thought for,
	  at least the engine prints the correct title now for all id
	  titles.

	* I used the translucency table from Boom (extended Doom port
	  based on the released sources for DOS) to implement translucent
	  things, like in Boom. The translucency table is stored in a
	  lump called TRANMAP in a new WAD file xdoom.wad. This WAD file
	  is automatically loaded if found and then several things are
	  rendered using the translucency table. If the lump isn't found
	  in any WAD file, the rendering is as in original Doom. This
	  allows WAD file authors easily to use their own translucency
	  table in their WADs.

	* Always run implemented with the Caps Lock key for R5 and R6
	  X servers.

	* Automap zooming in and increasing screen size now works with
	  keys '=' and '+', so it works OK with american and german
	  keyboards, no idea if others still cause problems.

Sun May 24 10:44:56 1998	<udo@umserver.umnet.de>

	* Changed __USE_INLINE__ to USE_INLINE to avoid problems with
	  ANSI C name space.

	* Various fixes in the builtin sound code, made sure the timer
	  based code compiles and works on some machines for those,
	  who want to experiment with this. Still buffer underruns on
	  fast machines, more than one mixing buffer would be needed
	  to avoid this.

	* Timer based sound code now works too with 8bit sound cards.

	* Sound update only was done in the main game loop so far.
	  Added sound update to the 'melt screen' function, so that
	  sound won't be interrupted by this anymore.

	* Moved the little dots showing the frame rate when used with
	  -devparm a bit, better visible now.

	* When option -timedemo is used with builtin sound the game
	  begins to crawl, not sure why this happens. So if this option
	  is used and the engine is compiled with builtin sound, the
	  -nosound option will be set and the timed demo runs as fast
	  as possible then, just without sound. If musserver is used
	  for the sound, a demo can be timed with sound on.

	* When option -timedemo is used the frame rate will be calculated
	  now. Why wasn't this done in the original code already?

	* Option -noblit wasn't implemented completely, fixed.

	* Message 'Using MITSHM extension' only displayed now, if shared
	  memory really will be used.

	* The mouse handling still was buggy, fixed.

	* The first mouse move was jumpy because the last pointer positions
	  just were initialized with 0. Fixed, last pointer positions will be
	  initialized by querying the pointer position after the window
	  was created.

	* Manual page overworked, should describe all options now.

Wed May 13 01:12:37 1998	<udo@umserver.umnet.de>

	* Some more inline code optimizations.

	* Better optimizing with the SCO compiler (Unixware 7) and
	  linking with shared X libs.

	* The inline stuff documented in all makefiles.

	* Ultimate Doom auto detected now if IWAD filename is doom.wad
	  instead of doomu.wad. Documentation changed appropriate.

Sat May  9 00:36:31 1998	<udo@umserver.umnet.de>

	* Assembler inline functions for x86/GNU C improved, isn't
	  necessary to save %eax, always can be scratched.

	* Assembler inline functions implemented for the SCO C compiler
	  too, Unixware7.

Fri May  8 20:36:43 1998	<udo@umserver.umnet.de>

	* Always allow switching between fist and chainsaw, not only
	  if the Berserk powerup is active. Works the same as with
	  shotgun/double shotgun. Small modification compared to
	  original Doom, but I like this better, wondering why they
	  did it anyway...

	* The fixed arithmetic routines implemented as inline assembler
	  for x86 + GNU C compiler.

Thu May  7 19:42:54 1998	<udo@umserver.umnet.de>

	* Further modification of the cda CD audio support module,
	  should work now on all and any OS without leaving zombies
	  and without locking.

	* New CD audio support module implemented using the Linux
	  ioctl() interface for CD audio.

	* Makefiles adjusted, under Linux the ioctl() CD audio
	  support module will be used by default.

	* Documentation about CD audio support improved.

Wed May  6 23:59:25 1998	<udo@umserver.umnet.de>

	* Workaround for a problem in CD audio support module cda for
	  Unixware 7, does work now.

	* Unixware 7 got it's own define now in the Makefiles because
	  of the workaround, the define SCOUW2 is _not_ used anymore
	  for UW7.

	* Using wait() in cda for some more commands like playing the
	  selected track. XDoom hangs for a while until cda starts playing
	  the track, but it definitely feels better when the music starts
	  playing right if a level is entered and without some lagging
	  behind.

	* At startup the default sfx volume was printed, but the default
	  music volume was not, fixed.

Tue May  5 22:25:02 1998	<udo@umserver.umnet.de>

	* Bug fixed in the CD support module for cda, searchpath()
	  uses a static buffer which could be overwritten, so we
	  need to copy the buffer for future reference.

	* Ported to Solaris SPARC 2.5.1 using GNU C 2.8.0, game
	  engine only, no sound yet.

	* Bugfixes in the m_swap stuff for big endian machines.

Sat May  2 12:25:22 1998	<udo@umserver.umnet.de>

	* Documentation for the new CD audio support added.

	* CD audio module for cda improved, if cda is not installed
	  on the system XDoom tries to use musserver instead. Now cda
	  can be compiled as the default module into XDoom for all
	  systems. All Makefiles modified appropriate.

	* Functions in the cda support module commented, should be
	  understandable enough for others to write new support
	  modules.

Fri May  1 20:34:48 1998	<udo@umserver.umnet.de>

	* Abstract layer for CD audio support added to the sound
	  module and 3 CD audio support modules written. A stub
	  module, a dummy module for testing and a real working
	  one, which uses Ti Kan's cda, which is part of xmcd.

Wed Apr 22 19:51:18 1998	<udo@umserver.umnet.de>

	* Sound code fixed so that XDoom just works without sound,
	  if the DSP device is busy or no sound card available.
	  Modified sndserver appropriate too, so this is OK now
	  with builtin sound and sndserver.

Tue Apr 21 11:05:53 1998	<udo@umserver.umnet.de>

	* Dealing with the sfx sound handles was broken, fixed. If
	  compiled with builtin sound the chainsaw will sound right
	  now. Can't be easily fixed if sndserver is used because it
	  can't stop a sound and xdoom doesn't keep track of sfx
	  handles in use with the external process.

Thu Mar  5 17:57:50 1998	<udo@umserver.umnet.de>

	* sndserver and musserver weren't searched along PATH, now
	  they are, added searchp.c and searchp.h and modified
	  i_sound.c appropriate.

	* Documentation overworked, installation is easier now.

	* Got rid of all compiler warnings which were obvious, and
	  it wasn't cool to define htons() and friends self, just
	  because this was broken under Linux once. Buggy OS's
	  can't be fixed in the application, it won't work on other
	  OS's anymore.

	* Option -showkeysym implemented, so that one can see the
	  X events in decimal for remapping them in ~/.doomrc.
	
Tue Mar  3 18:39:41 1998	<udo@umserver.umnet.de>

	More work done on the sound support:

	* The asynchrony, interrupt based builtin sound won't work over
	  a wide range of hardware. It can be tweaked to work mostly
	  OK on a system, but then the timing won't be right for others.
	  The major problem is the UNIX timer resolution of 10ms, it
	  depends on CPU speed and computing overhead for the window
	  magnification and >8bpp palette transformation, if one has
	  sound buffer underruns or not. On fast systems with
	  magnification=1 and a 8bpp X server one always will see buffer
	  underruns, because the span/column drawing functions can do
	  their work in less than 5ms. So this definitely is a dead
	  end, define removed from the Makefile and a comment added
	  to doomdef.h.

	* Added support for 8bit sound cards into the synchronous
	  builtin sound support. This time I added the 8bit support
	  right into the channel mixing routine and now the sound
	  driver DMA buffer fragments are adjusted too appropriate,
	  depending if 8bit mono or 16bit stereo samples are played.
	  Much better working than what I did in sndserver first,
	  less computing overhead and the sound is in sync better
	  with the action on the screen. Sndserver modified so that
	  it works the same now, it plays a lot better on 486 low
	  end machines.

	* Tweaked the DMA buffer fragments until it worked the same
	  good on all my machines running different X servers with
	  8, 16 and 24bpp. Will this work on every piece of hardware
	  now?

Sun Mar  1 14:02:59 1998	<udo@umserver.umnet.de>

	I looked through the xdoom internal sound handling, which is
	documented as experimental and made this working on some systems.
	Gee, where to start with, there were so many things done wrong...

	* First, the size of the final mixing buffers was 512 samples,
	  I got very odd sounding, kinda chopped sound effects with
	  this. I raised the size of the final mixing buffers to 1024
	  samples, that fixed it.

	* Initialization of the sound driver wasn't OSS API comformant,
	  fixed, same as in sndserver now.

	* You do not install your interrupt handler and start the
	  timer for it, before the hardware is initialized. Who says
	  that the hardware initializing code gets done completely,
	  before the first interrupt from the timer happens? Good
	  it's just a game and not a homing missile guidance system,
	  with programming like that you would kill your self.

	* Under UNIX all timers for application are generated and
	  handled by the system tick timer and this one just has a
	  resolution of 10ms on most UNIX systems. Some UNIX's have
	  realtime timers, independent from the system tick, but
	  this isn't any portable. So timer for the interrupt driven,
	  async sound output set to 20ms, a lower value just
	  increases the system load and you can't get less than one
	  tick anyway. A higher value interferes with the games frame
	  rate and it doesn't play smooth anymore.

	* I_StopSound was an empty function, implemented, is called
	  from layers above.

	* The number of sound buffers was hardcoded to 8, whatever
	  you configured in the config file, it had no influence. I
	  modified this appropriate, so that the number of channels
	  is used as configured, 16 channels maximal.

	* The default number of channels was set to 3, this isn't
	  enough, sounds were stopped and replaced with new ones, before
	  they played completely. Default is 8 channels now as in the
	  DOS and Windows versions too, this is a good value to start
	  with.

	* In the sound shutdown routine it didn't finish the sounds
	  in the channel buffers, fixed.

	* I had to add a few more tests of the nosound flag, never
	  tried the builtin sound stuff before, so I missed a few
	  places, should be OK now.

	* Why was ITIMER_REAL used? We don't want the sound be in sync
	  with the wall clock, but in sync with the action on the screen,
	  fixed.

Fri Feb 27 09:03:04 1998	<udo@umserver.umnet.de>

	* Version number increased to 1.11 because of the new coop mode,
	  else key system can't make sure that all nodes are playing
	  in this mode.

Thu Feb 26 19:14:23 1998	<udo@umserver.umnet.de>

	* Finally I found the time for looking into the program
	  dumping core sometimes from the quit menu stuff. This
	  was such a stupid bug I'm not going into details about
	  that, is fixed.

Wed Feb 25 21:34:07 1998	<udo@umserver.umnet.de>

	* While the new coop mode worked it introduced a bug into
	  single user play, fixed.

	* New coop mode added to the network initialization, if the
	  key system says this is altcoop, well, then it is, for the
	  other nodes too.

	* In D_DoomLoop output to invalid fd was done by calling
	  I_SubmitSound, just because we don't have SNDINTR defined :(
	  Moved that into the #ifndef SNDSERV, we are using sndserver,
	  no output to /dev/dsp wanted.

Tue Feb 24 18:08:46 1998 	<udo@umserver.umnet.de>

	* Cooperative multi-player games in Doom always sucked.
	  I have added a new game mode -altcoop, which has more
	  realistic rules for cooperative game play.

	* The option -record wasn't mentioned in the manual page,
	  added.

Sun Feb 22 18:44:03 1998	<udo@umserver.umnet.de>

	* RANGECHECK commented in doomdef.h, define this in the
	  makefiles now if you modify the sources. For release
	  binaries is should be inactive, the program runs faster
	  then.

Wed Feb 18 14:49:20 1998	<udo@umserver.umnet.de>

	* Game crashed in network games after finishing a level.
	  That was because if (french) always is true, right is
	  if (language == french), fixed everywhere.

Mon Feb 16 18:25:59 1998	<udo@umserver.umnet.de>

	* Patch from Achim Oppelt integrated, program now works on
	  X servers with 8, 16, 24 and 32 bpp.

	* Small optimizations in the image drawing routines done
	  for magnification -2 and -3. Something like X_width/2
	  was used in the outer loop, causing this computation
	  done loop count times. Not so good, it uses a
	  pre-calculated variable now, should be a little bit
	  faster.

Sun Feb 15 18:14:44 1998	<udo@umserver.umnet.de>

	* More work done on the mouse event handling, even better
	  now with the various different X servers.

Wed Feb 11 05:20:38 1998	<udo@umserver.umnet.de>

	* Handling of the mouse events modified, this now plays
	  smooth with the mouse, same as the DOS and Windows
	  versions. Mouse support can't be done just with X
	  and one needs DGA X extensions? Uh huh, I see that,
	  comments about this removed ;-)

	* Depending on which window manager is used, the window
	  haven't had the input focus. We're in deep shit with
	  such a window manager and option -grabmouse, so setting
	  of the input focus added.

	* Ported to SCO Unixware 7 using the UDK compiler, good
	  bye GNU C. Unixware 7 is not a shipping product yet, no
	  comments, don't ask.

Mon Feb  9 13:35:27 1998	<udo@umserver.umnet.de>

	* There already was a naughty comment in d_main.c,
	  let me add to that, that we all obviously are too dumb
	  to count and that includes me too :( I hope this is
	  fixed now for good and there aren't mysterious
	  problems anymore, because of messed up alloc heap.
	  It only can become better and we'll get there...
	  sometime.

Sun Feb  8 21:52:18 1998	<udo@umserver.umnet.de>

	* Event handling for mouse movements and buttons enabled,
	  so that one can play around with the mouse support.

	* The -grabmouse option added to the manual page.
	  people might not find out them self.

	* Handling of mouse button 1 was programmed sloppy, it
	  got stuck on some X servers, fixed.

Fri Feb  6 19:03:20 1998	<udo@umserver.umnet.de>

	* Using __BIG_ENDIAN__ certainly wasn't a good idea to figure,
	  if the machine is big or little endian. Depending on the
	  GNU C compiler release this is used internally, OS headers
	  on some platforms mess with this, the result was pure random.
	  As an example the magnification didn't work under Unixware
	  because of this, the display was distorted because wrong
	  endian was used. Thanks Larry for pointing this out, I think
	  I got this fixed now for good.

	* Documentation substituted with the one overworked from Larry,
	  much better.

Fri Jan 26 12:25:40 1998	<udo@umserver.umnet.de>

	* I installed a Caldera LinuxOpen 1.1 Base system on one
	  machine to make sure this stuff will work OK under Linux,
	  hey, originally it was for Linux anyway. This Caldera
	  distribution comes with a 2.0.29 kernel, GNU C 2.7.2.1
	  and a sound driver 3.5.5-beta1. This sound driver is
	  not API compatible to OSS and has various problems,
	  so with advice from 4Front I upgraded it to 3.8s5
	  and this works great with my AWE 64 sound card in
	  this machine.

	* Then integration done with musserver 1.4, so that it
	  plays the Doom music too on UNIX systems. Musserver
	  was written by Michael Heasley and the original
	  integration of musserver into xdoom was done by 4Front.
	  4Front gave me their source base to integrate with
	  mine, thanks guys! I improved on what they had done so
	  far. This works under Linux and Unixware 2.1, the
	  OpenServer 5 OSS driver has a bug and OpenServer 5
	  doesn't have a /proc filesystem, so there still is
	  some work needed to get it working too. The support
	  for musserver is compiled conditional, see the makefiles.
	  Changes to musserver self are documented in it's own
	  log file, see there.

	* There was a real stupid bug in usleep.c which prevented
	  writing of the config file ~/.doomrc under OS5 and UW2.
	  Fixed that, boy, I shouldn't work that late in the night
	  on Doom. Well, no one complained that the config wasn't
	  saved...

	* Someone messed up mb_used, which is the amount of memory
	  used for the heap. The variable is initialized with 6MB,
	  but then set to a default of 2MB in the configuration file?
	  And the configuration setup for mb_used was conditional
	  compiled, depending if SNDSERV was defined or not??
	  I changed that, mb_used is in the configuration file now
	  unconditional and it's set to a default of 6MB. 2MB weren't
	  enough, the engine died with a Z_MALLOC error after playing
	  the first demo in the Eternal 3 wad file. Now the demos
	  in Eternal 3 work without crashing the engine, eventually
	  all demos in combination with huge WAD files should work now.

	* Why the hell was sndserver loaded from DOOMWADDIR, if this
	  environment variable is set? Modified, executables are
	  searched along PATH under UNIX. This now allows different
	  directories for WAD files without the need to copy sndserver
	  into every one and playing from a CD-ROM, the id Software
	  Doom][ CD-ROM doesn't come with sndserver of course.

	* Shutdown of sound and music added to I_Error so that sndserver
	  and musserver shutdown gracefully in case of an error and don't
	  hang around blocking the sound devices. Don't trust on this
	  processes figuring out them self that xdoom terminated, no
	  good style.

	* Woah, DOS filenames in a UNIX program! There was stuff left
	  from the DOS Doom2 version, it has an option -cdrom to be
	  able to play the game from CD. Under the DOS version
	  the CD must be the current directory then and Doom won't
	  be able to write the game save files onto the CD. So
	  this option was added, it creates a directory c:/doomdata,
	  to save games there. Not really necessary in the UNIX version
	  because we have DOOMWADDIR, but the code was there, so I fixed
	  it. Now one can play from CD too without the need to set
	  DOOMWADDIR under UNIX. And of course the DOS filenames
	  are gone <g>

	* The manual page said the game has an option -nosound and
	  that wasn't implemented. Sure, one could move sndserver
	  out of PATH or rename it, but a option for this is much
	  nicer. So I implemented this, but please note that it's
	  only tested with the external sndserver process. I have
	  not had a look yet at the experimental builtin sound stuff
	  and if you compile the program with this, -nosound might
	  create problems then. Maybe I'll have a look at this
	  sometime, but my experience with UNIX tells me that an
	  external process is the right thing.

	* And while we are at it, option -nomusic added too for those
	  who want the sound but don't fancy the music. I know, just
	  boring little details and no super kewl 3D programming,
	  but the boring details are part too about how fun a game
	  is to play.

	* Manual page updated. Redundant stuff from xdoom.txt deleted,
	  and renamed to doom.txt, this is the plain DOS version now,
	  UNIX specific things will be documented in the manual page only,
	  to much work to keep several documentations consistent.
	
Mon Dec 29 20:28:34 1997    <udo@umserver.umnet.de>

	* This won't be just Linux DOOM if I'm through with
	  it, it will be UNIX X DOOM. So I changed the layout
	  of the directories and Makefiles etc. to reflect
	  this.

	* Then first port done to SCO OpenServer 5.0.0, I had
	  to use Robert Lipes GNU development system port, no
	  joy with the UNIX development system. Port was pretty
	  easy to do, even the sound server wasn't too bad, I'm
	  using the OSS driver from 4Front. I had to add usleep.c,
	  usleep() is documented in 5.0.0 but missing in the
	  libs, probably fixed in a later release.

	* Next port done to SCO Unixware 2.1.2, no joy with the
	  UNIX development system either, I used the GNU C 2.7.2
	  port for UNIX SVR4 from ftp.freebird.org. I had to use
	  usleep() too and had to add strcmp.c. The BSD
	  compatibility stuff in UNIX SVR4 doesn't help much, if
	  one can't use the UNIX compiler and has to use GNU C.
	  Oh well, will help with further ports to other platforms,
	  which miss this functions.

	* There was one mistyped SNDSERV define somewhere, which
	  made the program very chatty in the xterm it's started
	  from, fixed this.

	* The [......] engine initialization stuff was broken by
	  more detailed debug output. OK, helpful for programmers
	  working on the sources, but looks ugly for those who
	  just want to play. Fixed this by making it a compile time
	  option, it now looks like in original Doom, I don't know
	  if it functions exactly the same tho.

	* Well, the program as it was released didn't terminate
	  anymore when it tried to play the demo's from the WAD
	  files and found they have a different version. Better
	  than the original id version, but I WANT to see demos,
	  those included in the WAD's and more essential those
	  recorded by others. So I made the version check a
	  compile time option too. Demos work fine with Doom I
	  shareware and commercial version, Doom II, Ultimate
	  Doom and Final Doom.

	* Zooming the map in with = doesn't work with german
	  keyboards, because = is shift + 0. I always hated
	  that, as a revenge I modified it to use the + key
	  instead, as the Doom docs and help screen say anyway.
	  Hm, does this break zooming in for anyone else?
	  Don't know yet, might need some more work than just
	  a hardcoded define.

	* I added a doc directory and threw in the latest Doom
	  FAQ. Then I made a xdoom.txt from the text files id
	  made for Linux and Sun Doom and worked over the UNIX
	  specific parts. Hope id won't be angry with me I did,
	  but I think some documentation is essential and I'm
	  to lazy to write it from scratch. I would appreciate
	  if people could help to keep this file up to date.
	  UNIX manual page hacked from the Sun Doom distribution,
	  same, someone should read over it and help to keep it
	  up to date.

	* TODO: see below, and in the "TODO" file. Enjoy!

Mon Dec 22 20:29:16 1997    <bk@gamers.org>

	* CVS logs and other obsolete stuff removed. Anybody
 	  who wants to keep some revision control now has a
 	  clean slate to start with.

Mon Dec 22 19:53:34 1997    <bk@gamers.org>

	
	* i_sound.c: enabled SNDSERV, as SNDINTR for
 	  some reason just gives ghastly results e.g.
	  on E4M2. Frankly, I am at a loss. SNDSERV is
	  now default, until the internal sound driver
	  is a bit more reliable.
	  Note that the current redundancy means that
	  changes like the one below will have to 
	  be propagated manually to the soundserver
	  sources.

	* m_menu.c: the 4th episode is now removed with
	  the original doom.wad. You need to rename the
	  Ultimate DOOM/Special Edition retail IWAD to
	  doomu.wad now, or you won't see the 4th episode
	  in the menu. The compile time SPECIAL define
	  is thus gone.

Mon Dec 22 17:08:33 1997    <bk@gamers.org>

	* v_video.c (V_DrawPatch): another last minute hack.
	  While shareware, retail, commercial, and plutonia
	  (being a full DOOM2 IWAD) seem to work okay now,
	  TNT gives an error on finishing the first mission:
	   "Patch at -35, -5 exceeds LFB".
	  I changed the error abort into a simple return,
	  thus the patch is ignored. The intermission screen
	  seems to come up okay.
	* TODO: check which patch, and whether it is an IWAD
	  problem.

	* i_sound.c: the sound table is hardwired in
	  sounds.h/sounds.c. As our current crude
 	  sound handling simply loads *all* sounds at
	  startup, we are going to miss some with DOOM1
	  WAD files. I could skip them, but decided to
	  load a placeholder instead (dspistol). It might
	  be good to use a distinct default sound for
	  WAD debug purposes. A zero length sound lump
	  would work, but would not be noticeable.
	  Anyway, shareware and retail work now.
	* TODO: implement proper handling for missing
	  lumps, sound and otherwise.
	  Perhaps move sound table into WAD?

	* g_game.c (G_DoPlayDemo): finally removed the
	  annoying "Demo is from a different game version"
	  abort. It now simply declines to playback the
	  demo, and waits for user input on some
	  do_nothing screen.

	* doomdef.h&Cie.: Lesson of the day - do not
	  replace a bunch of booleans with an enum and
	  use the same identifiers. Point in case:
	   "if ( commercial )" will not give an error,
	  and will always be true as long as the enum
	  value is greater than zero.
	  I found that the DOOM2 vs. DOOM differences
	  are everywhere (weapons, monsters, doors).
	  Number of episodes varies from shareware/commercial
	  to registered to retail, while commercial has
 	  a unique set (two of them, counting the german
	  edition) of maps in one episode. Plus, TNT and
	  Plutonia add some TITLE strings to the mixture.
	  
	  Well, Plutonia and TNT are treated as DOOM2 for
	  now, so you will miss the startup message.

	* wi_stuff.h (NUMEPISODES): removed SPECIAL switch.
	  It is no 4 times 9 for wi_stuff.c internal
	  static arrays - doesn't matter.
	* TODO: unified handling with DOOM 2 - dynamic
	  allocation of arrays.

	* i_sound.c (I_UpdateSound): okay, I separated
 	  the mixing, now done synchonously, along with
	  a flag signalling the timer that the mixing buffer
	  has been updated. The handler is now very short,
	  and I tried several intervals down to 50usecs,
	  w/o complaints. Now the man page says:
	   "system timer resolution currently 10ms". Odd.
	  Anyway, while the double shotgun/plasma rapid
	  fire problem seems to be a bit less disturbing
	  at higher refresh, it's still there. I set the
	  interval to 500usec, which is sufficient for
	  avoiding any buffer update misses.
	  Conclusion after just two days of experimentation:
	  yep, sound driver code isn't fun at all.

	  As for the bug - well, Dave Taylor suggested
	  close distance getting into a divide-by-near-zero
	  situation, screwing up the volume. I can't figure
	  why latency of an external sound driver or screen
	  size affect this, but I am running out of ideas.
	
	* i_sound.c: 
	  Some more experimentation with the timer driven
	  sound. It doesn't work well using an intervall
	  of less then 30 msecs - there will be artifacts
	  with say 50 msecs. This is pretty obvious with
 	  a target frame rate of at least 30fps, methinks.
	  Using the REAL/SIGALRM timer with 30msec gets
	  rid of the artifacts, it seems - at the expense
	  of slowing down things on a P133 to a noticeable
	  jerkiness. Bah.

Mon Dec 22 00:36:54 1997    <bk@gamers.org>

	* info.c: and i_video.c and i_sound.c - don't ask
	  me why some Linux header files are different with
	  gcc vs. g++, or what the complaint about the g++
  	  complaint info.c state table is all about:
	  "initializer element for `states[..].action.acp1' 
	   is not constant"
	  Undid some changes, compiled with gcc, playtested,
	  seems okay. Done for today... yesterday.

	* i_net.c (ntohl): okay, htons/htonl, ntohs,ntohl 
	  are back to haunt me. Copied the macros that
	  on my box aren't used for whatever reason directly
	  into the source. Got rid of all other multiple and
	  undefined references. CC=g++ now compiles (still
	  many warnings) and links, but the binary dumps a
	  core after Init PlayLoop. So be it.

Sun Dec 21 12:38:08 1997    <bk@gamers.org>

	* p_enemy.c (P_NewChaseDir): changed tdir to int,
	  removed the LUTs - spurious locks were due to
	  endless loops created by boneheaded predecessor
	  map. Has to be a better way to do enum dirtype_t
	  anyway. Problem seems to be fixed.

	* CC=gcc again, this time loads of #includes to
	  fix "implicit declarations, and one or two
	  unused variables. DOOM now compiles without
	  any -Wall warnings left, as C.

	* Bug: compiled the reworked code with gcc. Within a
	  solid while of testing and blasting away, it
	  locked once. Got a core, which gdb doesn't grok.
	  Bah.

	* TODO: okay, linkage of g++ build modules give loads
	  of errors, because we have many implicits, plus
	  missing #pragma implementation causing multiple
	  definitions. Yet, this is the very first time DOOM
	  was compiled as C++ without a parsing error. So there.
	
	* sounds.c: included doomtype.h and removed yet another
	            enum { false, true } definition.

	* p_saveg.c  (misc): several. 
	* p_mobj.c   (P_SpawnMobj): (actionf_p1)P_MobjThinker
	* p_spec.c   (EV_DoDonut): (action_p1) T_MoveFloor (twice).
	* p_plats.c  (EV_DoPlat): (actionf_p1) T_PlatRaise.
	* p_plats.c  (EV_StopPlat): (actionf_v)NULL.
	* p_plats.c  (P_ActivateInStasis): same
	* p_lights.c (P_SpawnGlowingLight): (actionf_p1) T_Glow.
	* p_lights.c (P_SpawnStrobeFlash): (actionf_p1) T_StrobeFlash.
	* p_lights.c (P_SpawnLightFlash): (actionf_p1) T_LightFlash.
	* p_lights.c (P_SpawnFireFlicker): (actionf_p1) T_FireFlicker.
	* p_floor.c  (EV_DoFloor): (actionf_p1) T_MoveFloor.
	* p_floor.c  (EV_BuildStairs): same (twice).
	* p_doors.c  (EV_VerticalDoor): (actionf_p1)T_VerticalDoor.
	* p_doors.c  (P_SpawnDoorCloseIn30): same
	* p_doors.c  (P_SpawnDoorRaiseIn5Mins): same
	* p_doors.c  (EV_DoDoor): same
	* p_ceilng.c (EV_CeilingCrushStop): (actionf_v)NULL.
	* p_ceilng.c (EV_DoCeiling): (actionf_p1)T_MoveCeiling.
	* p_ceilng.c (P_ActivateInStasisCeiling): same.
	  These gave g++ errors, but  have been ignored by gcc.

	* r_data.c (R_PrecacheLevel): (actionf_p1)P_MobjThinker.

	* p_saveg.c:  conversions (actionf_p1)T_Whatever.

	* p_tick.c: cast (actionf_v)(-1).

	* p_telept.c: yet another (actionf_p1)P_MobjThinker.
 	
	* p_mobj.c (P_MobjThinker): cast (actionf_v)(-1).
	* TODO:  decent NOP/NULL/Nil function pointer.
	  I'd introduce a global A_NOP() function that
	  chokes up an error message. 
	  Why -1 instead of NULL?

	* p_enemy.c: conversions (actionf_p1)P_MobjThinker.

	* d_think.h/info.h:  think_t is essentially
	  the same action function pointer stuff.
	  I moved the definitions from info.h to
	  d_think.h, and aliased them with a typedef.
	  Now more changes needed.

	* p_enemy.c (successor, predecessor): new LUT,
	  to provide increments/decrements for enum
	  dirtype_t, as g++ complaints:
	  "no post-increment/decrement operator for type"

	* Makefile (CC): okay, tried "g++" once more.
	  A few errors (above). Plus shitloads of warnings
	  (obviously, better "unused" checking with C++,
	   lots of the usual int2enum suspects, implicit
	   declarations, the works).
	 

	* p_mobj.c: action.acp1 used accordingly.
	* p_pspr.c: action.acp2 used accordingly.
	* TODO: info.c:144 warning
	  "missing braces around initializer for `states[0].action'"
 	
	* info.h/info.c: some experimental stuff on
	  action function pointers.
	  
	* TODO: still some sound glitches at startup.
	* i_sound.c: few more cleanups. Made mixing use
	  channel loop instead of unroll, set mixbuffer
	  to zero ot start.
	  Removed some more DOS leftovers (8bit),
	  kept some as comment.

	* hu_stuff.c (HU_Start):
	  More gamemode changes. As in d_main.c, I
	  decided to use DOOM2 as default whenever
	  one needed - it was sold most, and had the
	  superset of items, enemies and monsters.

	* TODO: the handling of WAD specific messages
	  like HU_TITLE, HU_TITLE2, HU_TITLEP etc.
	  should definitely be removed.

	* d_main.c (CheckBetaTest): 
	  Removed outdated, DOS specific BETATEST stuff.
	  d_main.c (IdentifyVersion):
 	  Numerous changes to gamemode handling. 

	* TODO: currently, french language is enabled by
	  detecting an doom2f.wad - yet it needs FRENCH
	  define at compile time. I removed most language
	  stuff, and propose handling that at runtime,
	  using a switch in the config file. Well,
	  mission specific texts won't work outside the
	  WAD anyway.

	* TODO: along the same lines: I suggest removing
	  the misc. devparm switches as well - lots of
	  redundancy not needed anymore.

	* Makefile: finally added a doomstat.c for all
	  the global state variables listing internal
	  engine configuration. Right now, these are
	  scattered everywhere. Declaration to be found
	  in doomstat.h header.

	* f_finale.c (F_StartFinale): 
	  Reworked the entire finale handling based on
	  game mode enum.

	* doomstat.h:
	  Global variables for game mode and language.
	  Removed old booleans.

	* doomdef.h: GameMode_t and Language_t enum added.
          Boolean for language was kinda limiting to 2
	  alternatives (french, english), and five boolean
	  plus #define SPECIAL for game version is just ugly.
	
	* wi_stuff.h: SPECIAL switch compiles two
	  different EXE's, one for 3 episodes of 9 maps
	  each (DOOM 1 registered), one for 4 episodes
	  of 9 maps each (DOOM 1 retail/FinalDOOM).
	  Implicitely, the DOOM2 config (one episode,
 	  34 missions) is handled. How is the german
	  edition (32 missions only) done?
	  Frankly, this is a mess. The problem is that
	  intermission (animated as in DOOM 1, simple
	  backdrop as in DOOM2) as well as certain
	  items (double shotgun) as well as certain
	  rendering stuff (sky texture) depend on this.

	  Plus, it ties into runtime flags as "commercial"
	  as well. Yuck.
	
	  Each change will change the game. Postponed.

	* d_net.c,m_misc.c: removed last two NeXT remains.

	* d_englsh.h,d_french.h,d_main.c,m_misc.c,r_draw.c,v_video.c:
	  more WATCOM remains removed. Kept some stuff that
	  handeld the blocky mode/detailshift in DOS, which
	  is n.a. in Linux - but probably not worth fixing.

Sat Dec 20 15:16:51 1997    <bk@gamers.org>

	* Bug: core dump when using doom.wad or doom1.wad
	  without a "-file UNUSED/doom2.wad". Version
	  dependend handling of stuff (double shotgun)
	  comes to mind.

	* doomdef.h: 
	  SNDSERV enables external sound server
	  support. SNDINTR enables internal sound
	  output with timer (asynchronous). Default
	  is internal, synchronous.

	* i_sound.c (I_HandleSoundTimer): 
	  Okay, the plasma/double shotgun sound bug
	  (crapyy sund when firing nose-to-wall) is
	  obviously a problem with blocking at
	  refresh - smaller screen size makes it go
	  away.
	  I won't do threads w/o a proper gdb, and
	  I can't do whatever Dave Taylor did with
	  LinuxQuake w/o the sources, thus I broke
	  down and implemented a timer based solution.
	  Seems to work fine, given the fact that
	  this is the first time ever I implemented
	  sound handling.

Fri Dec 19 10:02:48 1997    <bk@gamers.org>

	* m_menu.c/i_sound.c/s_sound.c:
 	  Removed a few more inconsistencies due to
	  old internal sound handling (DOS),
	  external (Linux sndserver), and
	  new internal (the unfinished merge of
	  both the former).
	  The Options/Sound/Music volume menu is
 	  accessible now. It was due to an internal
	  scaling of the menu (effective range 0-15),
	  up to 0..120, by multiply with 8 scattered
 	  all over the place, that we got a
	   v_video.c: I_Error ("Bad V_DrawPatch")
	  Now I am using the menu resolution
	  everywhere, and scaling should only be done
	  in the actual mixing/output.
	
	* OK, obviously this hasn't been updated in months.
	  This is because: a) most of the time nothing
	  happened, and b) when something got done, it was
	  too much to keep track of it by CVS and/or ChangeLog.

	  Basically, what happened in the meantime is that
	  I did not find a publisher who believed that the book
	  sales would be worth doing it. Within the limited
	  amount of time that I could dedicate to a project
	  that will not generate any revenue whatsoever,
	  I spent some time on cleaning up the Linux code
	  base which works, essentially. I might or might not
	  be able to participate in a Mesa+Voodoo+Glide based
	  GLDOOM port for Linux. I won't waste a minute on
	  Win32 without getting paid for it.
  
	  Because of the legal issues involved with the
	  DMX sound library id licensed for DOS DOOM, Linuxdoom
	  is the only code base that has sound support at all.
	  Other UNIX ports (SGI, Sun) could probably be revived
	  and integrated w/o too many problems. There is no
	  Win32 port - I never had access to WinDOOM or
	  Jim Dose's GLDOOM sources. There is no Linux
	  OpenGL (read: Mesa) support yet - that'd involve
	  internal changes which will best be done after a
 	  public source release.

	  John Carmack opted for a release of the Linux code.
	  I have removed all DMX references I could get a
	  hold of, but preserved some of the original
	  sound handling within DOOM that interfaced
	  with DMX. Linuxdoom (like previous UNIX ports)
	  used a separate sound server binary. I did some
	  work on putting the sound server module back into
	  the engine. It works, but shutdown (pending sounds),
 	  and sound output parallel to refresh (blocking)
	  is crappy, and there is a problem with double
	  shotgun and plasma at close distance (as well as
	  with lots of other noises going on). As the
	  mixing code is identical to the separate
	  soundserver, and as it doesn't seem to be a
	  blocking issue, I am currently at a loss - I
 	  wonder whether the IPC communication with the
	  soundserver process introduced a delay that
	  changed behaviour, or whether I simply overlooked
	  a bug. I am currently lacking the time to track
	  this down, so I am keeping both internal and
	  soundserver source.

	  I did remove DOS and Watcom specifics. I did also
	  remove the texture mapping and fixed point assembly.
	  From my experience, it isn't worth the trouble
	  to ue GCC inline assembler, as performance of 
	  the same loop written in C is perfectly sufficient.
	  On demand I will put both assembly modules into some
	  documentation, as they are probably of historic
	  interest.

	  There is no Sun DGA, Irix, or other non-Linux stuff
	  in this code base (at least, not intentionally). 
	  They will be back when ports to other UNIX 
	  environments will be merged back (I can't do 
	  testing, and the modules were separate and not
	  consistent, so I refrained from wasting time on
	  this prior to a public release).

	  While I made only minor changes to the actual code
	  (some fixes, some cleaning up of SHM and audio),
	  I did a huge amount of shuffling around. I
 	  introduced many more header files and modules,
	  some of them laughably small (doing these changes
 	  is bound to screw up CVS, so no CVS record anymore
	  for the time being). I would introduce even more
	  separation if I had the time. Splitting the
	  animation/AI/behaviour code that defines 
	  "DOOM - The Game" into a separate game.so (like
          Quake2 does) should definitely be done. Separating
	  a ref_soft.so aka "DOOM - The Engine", and defining
	  a clean interface prior to introducing a ref_gl.so
	  is recommended as well.

	  I am going to purge some more leftovers, remove 
	  the obsolete CVS history except for comments,
  	  and try to clean up the last "implicit declaration"
 	  and "unused variable" warnings. Except for enabling
	  cheats in nightmare (to have more fun while testing),
	  I did not change the game mechanics at all. I would
	  strongly advise against doing so w/o the proper
	  separations suggested above. I will not waste time
	  on fixing detail and blocky mode, lack of resize,
	  or other stuff that it better addressed by a proper
	  GLDOOM port.

	
Sat Aug 16 08:07:16 1997    <bk@hal.gamers.org>

	* p_pspr.c:
 	  Moved the sprite animation stuff from doomdef.h here.

	* info.h:
	  Added #ifndef __INFO__ for multiple inclusion. I am
	  not going to deal with multigen, or changing the
	  original DOOM monster animation anyway.

	* p_spec.h/c:
 	  Moved anim_t etc., locally used only. There is
	  another anim_t in wi_stuff.h/c, now local as well,
	  so collisions on header inclusion should not occur.
          #include "doomdef.h"
          #include "doomstat.h"
	  these should now be topmost includes.
	
	* doomstat.h, doomdef.h, wi_stuff.h, d_player.h:
	  I moved wbstartstruct_t to d_player.h, and wminfo
	  to doomstat.h. Basically, I will try to move all
	  global state related stuff into doomstat.h, and
	  all data structures defined for state variables
	  into doomdef.h - this will be kinda greek tragedy,
	  and never finished, but a body can try.

	* wi_stuff.h/c, wi_data.h: 
          Removed wi_data.h, put all local stuff blah... see
	  below.
          I have found several unused global variables,
	  started outcommenting them with //U, will remove
	  them later. It might be Watcom/PC stuff, or
	  somebody put the actual numbers into the implementation
	  instead of using STARDIST, ANIMPERIOD & Cie.
	
	* st_stuff.h/c: from doomdef.h, local stuff moved
	  into st_stuff.c, etc.
	  In the current revisions, I am tolerating warnings
	  of the "implicit declaration" kind - the linker
	  resolves the stuff, and it will be handy in 
	  unmangling the modules once the headers contain
	  only the globally visible stuff.

	* am_map.h/c, am_data.h:
 	  Removed am_data.h, put all local stuff into
	  am_map.c, moved globally needed headers from
	  doomdef.h into am_map.h.

	* p_saveg.h, p_setup.h, p_tick.h:
 	  created, stuff from doomde.h moved there

	* d_main.c, d_net.c, doomdef.h: 
	  Decided to dump mprintf, as only needed for
	  Watcom support which is not going to happen.

	* doomdef.h: 
	  Moved function prototypes to appropriate headers:
	  d_main.h, d_net.h.

Fri Aug 15 16:38:53 1997    <bk@hal.gamers.org>

	* doomstat.h:
	  added a few more comments, regrouped some of the
	  state variables.

	* doomdata.h: added a few more comments.

Thu Aug 14 10:38:37 1997    <bk@hal.gamers.org>

	* g_game.c (G_DoLoadLevel): 
	  copied the skyflatnum determination here, from
	  the R_InitSkyMap - once should be sufficient.

	* Makefile, r_sky.h/c: 
	  added r_sky module. The sky handling was scattered
	  over r_bsp, r_main, r_plane, doomstat.h...

	* r_bsp.c, r_main.c, r_segs.c:
 	  Removed RD_* calls from R_debug.m, NeXT switches.

	* r_local.h:
	  Removed the R_debug.m NeXT specific debugging
	  code headers. Removed "drawbsp" flag from
	  here, and r_main.c, too.

	* r_data.c: 
	  Started to remove NORMALUNIX switches, using
	  LINUX instead. Basically, different UNIX
	  platforms using the same code should simply
	  be ANDed in the #ifdef switches.

	* r_draw.c:
	  Removed some more, but not all WATCOMC support.
	  There is an unresolved problem with the fuzzy
	  blitting in the lowres (blocky) modes - either
	  the "detailshift" flag triggered lowres mode
	  will be removed, or the bug has to be fixed.

	* r_bsp.h, r_draw.h, r_things.h, r_data.h,
	  r_segs.h, r_main.h, r_plane.h: 
          Created from r_local.h. 
	
	* Back to work.
	  Till March 22nd, a lot of source shuffling and addition
	  of new header files, separating stuff, and creating
	  new, smaller modules. Some Watcom/PC/DMX/NeXT etc.
	  related stuff got removed, but not all (yet). None of
	  this ended up in the Log (sorry) or the revision control
	  (CVS is not well suited while number of files and
	  respective names change a lot, especially if stuff gets
	  deleted and/or re-introduced).
	  Major change: part of the sound code got copied from the
	  separate Linux sndserver sources to the linuxdoom source.
	  Re-integration and removal of sndserver pending.
	  Nothing of importance happend since then (priorities).

Mon Feb  3 16:41:05 1997    <bk@gamers.org ()>

        * m_misc.c:
          Created m_argv, m_random and m_bbox, kept remains in m_misc
          for the time being. Misc. files changed to include only
          necessary modules. Moved bbox definitions from doomdata.h. 

        * m_menu.h:
          Created from doomdef.h. Misc. changes in dependend modules.
          I am not going to list every affected file from now on.
          See Log entries within each file. 

        * dstrings.h:
          Now handles multi-language support and switches.
          So far, only english (default) and french are available. 

        * d_englsh.h: 
          Created from dstrings.h. 

        * g_game.h:
          Created, from doomdef.h. 

        * am_map.c, st_stuff.c, wi_stuff.c: 
        * Makefile: 
          Added m_cheat, removed dutils. Doubly linked list stuff unused.

        * m_cheat.h, m_cheat.c:
          Created, basci cheat string scrambling and check, from dutils.h
          and dutils.c. 

        * doomdef.h
          Moved screen declaration to v_video.h.

        * dutils.h, dutils.c
          Remode code for f_wipe.h and f_wipe.c.

        * Makefile
        * d_main.c,
          Added f_wipe files.

        * f_wipe.h, f_wipe.c: 
          Created, screen wipe/melt at mission begin, from dutils.h
          and dutils.c.

        * d_textur.h:
          Created from doomdata.h. Separates all the patch/texture
          defintions. Needed for v_video module. 

        * r_local.h, wi_stuff.h, st_lib.h, hu_lib.h: 
        * i_x.c, d_main.c, m_menu.c, m_misc.c: 
          Added v_video.h.

        * v_video.h:
          Created. Using headers from doomdef.h. Forward of patch_t.
          Moved bool and byte to doomtype.h.

Thu Jan 30 20:50:16 1997    <bk@gamers.org ()>

        * doomtype.h:
          Created, for fixed_t. Should add angle_t here, too.

        * tables.c: 
          Added SlopeDiv from r_main.c, added all defines and typedefs
          related to basic trig table use here, removed it.
          Currently "tables.h" is included in doomdef.h and
          r_local.h, too. This is not too cleanly separated, but
          we have to start somewhere, right?

        * tables.h:
          Created from doomdef.h.
          Note that tables.c had fixed size tables, while doomdef.h
          calculated from the value of FINEANGLES. In addition,
	  entries were given as either "int" or "fixed_t". Bad boys.  

        * z_zone.c: 
        * s_sound.c: 
        * hu_stuff.c: 
        * st_lib.c, st_stuff.c: 
        * wi_stuff.c: 
        * w_wad.c: 
        * r_things.c, r_plane.c, r_draw.c, r_data.c: 
        * p_tick.c, p_mobj.c, p_spec.c, p_setup.c, p_lights.c, 
          p_plats.c, p_floor.c, p_doors.c, p_ceilng.c: 
        * am_map.c: 
        * m_misc.c, m_menu.c: 
        * g_game.c: 
        * d_main.c: 
        * f_finale.c:
          Added #include "z_zone.h". 

        * z_zone.h: 
          Created, from stuff in doomdef.h

        * CVS checkin. Reformatting run, last one.
          Took a week to go through all the sources, w/o even
          looking to closely.

        * st_stuff.c (ST_Responder): 
          Removed a first tiny bit of redundancy (NO_CLIP checks).
	  Should remove idspispod completely, later.

Wed Jan 29 19:53:43 1997    <bk@gamers.org ()>

        * Another one, while we are on it. All S (Sound) files.

        * CVS checkin. Reformatting run, all R (Refresh) files.

        * r_draw.c (R_DrawSpanLow): 
          The non-Watcom, non-asm lowres mode was just a copy
	  of the default mode. As detailshift was used to scale
	  the image down, lowres mode just filled the left half
	  of the buffer.
        * r_draw.c (R_DrawColumnLow): 
          Tried the same hack for walls, horribly broken.
	  Postponed. 

Tue Jan 28 19:32:48 1997    <bk@gamers.org ()>

        * CVS checkin. Another reformatting run. Did all P files.

        * p_spec.c: P_FindNextHighestFloor
          The number of adjoining sectors is limited to 20, because
	  of a temporary LUT needed for determining lowest height
	  in adjacent sectors. No overflow checking is done.

Sun Jan 26 08:41:21 1997    <bk@gamers.org ()>

        * Another CVS checkin of a formatting run.
          D,F,G,HU,I,M have been changed.

        * Note: in initial and current release,
           linuxxdoom -3 -file plutonia.wad, idclev 12
          produces a Segmentation fault.

Wed Jan 22 14:03:00 1997    <bk@gamers.org ()>

        * m_menu.c:
           initializer-string for array of chars is too long (skullName)
           warning: unused parameter `int choice' (a couple of times)

        * Attempt to compile as C++. Loads of warnings, a couple of errors.
          p_enemy.c (P_Move):
          r_things.c (R_ProjectSprite)
           `catch', `throw', and `try' are all C++ reserved words,
           thus changed "try" to "try_ok". Fixed.
          p_pspr.c: In function `void P_SetPsprite(struct player_s *, ... )':
           too many arguments to function
           No convenient fix - state->action is declared void action(),
           but called w/o, with one, or with two parameters.
           There are more like this. Going to be a tough one.
	   Union of pointers?
          Postponed.

	r_plane.c: In function `void R_DrawPlanes()':
          s_sound.c: In function `int S_AdjustSoundParams(struct mobj_s *, .. )':
          p_map.c: In function `bool PIT_StompThing(struct mobj_s *)':
          p_maputl.c: In function `int P_AproxDistance(int, int)':
          r_main.c: In function `int R_PointToDist(int, int)':
          p_enemy.c: In function `void P_NewChaseDir(struct mobj_s *)':
           warning: implicit declaration of function `int abs(...)'  <stdlib.h>

Wed Jan 22 12:15:00 1997    <bk@gamers.org ()>

        * CVS checkin of purification run. Sources now compile
          without any "-Wall" warnings.

        * Note: with -file "tnt.wad", we get an "Error: Bad V_DrawPatch"
          abort each time we enter an exit. Invalid or missing
          intermission screen?

        * Makefile (CFLAGS): added -Wall, first purification run.

          d_main.c: In function `D_DoomMain':
           warning: implicit declaration of function `mkdir'   <fcntl.h>

          i_unix.c: In function `I_StartSound':
           warning: control reaches end of non-void function
          i_unix.c: In function `I_InitNetwork':
           warning: implicit declaration of function `inet_addr' <arpa/inet.h>
          i_unix.c: At top level:
           warning: `endianness' defined but not used

          i_x.c: In function `I_Error':
           warning: unused variable `string'
          i_x.c: In function `I_GetEvent':
           warning: suggest parentheses around arithmetic in operand of |
          i_x.c: In function `I_FinishUpdate':
           warning: unused variable `bigscreen'
          i_x.c: In function `grabsharedmemory':
           warning: implicit declaration of function `getuid'  <unistd.h>
           warning: unused variable `done'
          i_x.c: In function `I_InitGraphics':
           warning: suggest parentheses around assignment used as truth value
           warning: char format, different type arg (arg 3)
           warning: char format, different type arg (arg 5)
           warning: implicit declaration of function `XShmGetEventBase'
          i_x.c: In function `InitExpand2':
           warning: unused variable `jexp'
           warning: unused variable `iexp'

          m_menu.c: In function `M_ReadSaveStrings':
           warning: implicit declaration of function `read'    <sys/types.h>
           warning: implicit declaration of function `close'   <unistd.h>

	m_misc.c: In function `M_WriteFile':
           warning: implicit declaration of function `write'
           warning: implicit declaration of function `close'
          m_misc.c: In function `M_ReadFile':
           warning: implicit declaration of function `read'
          m_misc.c: In function `M_ScreenShot':
           warning: implicit declaration of function `access'  <unistd.h>

	p_pspr.c: In function `P_MovePsprites': 
	 suggest parentheses around assignment used as truth value

          p_spec.c: In function `P_SpawnSpecials':
           warning: implicit declaration of function `atoi'    <stdlib.h>

	w_wad.c: In function `strupr':
           warning: implicit declaration of function `toupper' <ctype.h>
          w_wad.c: In function `W_AddFile':
           warning: implicit declaration of function `read'    <sys/types.h>
           warning: implicit declaration of function `lseek'
           warning: implicit declaration of function `close'   <unistd.h>

          wi_stuff.c: In function `WI_loadData':
           warning: unused variable `pic'
          wi_stuff.c: At top level:
           warning: `background' defined but not used

Tue Jan 21 22:00:00 1997    <bk@gamers.org ()>

        * doomdata.h (__BYTEBOOL__):
          Use builtin ANSI C++ bool.

        * d_main.c (IdentifyVersion): 
          Bug fix: insufficient malloc created errors in malloc/realloc
	  calls later on. Welcome to the risks of Copy'n'paste. 

Tue Jan 21 13:20:05 1997    <bk@gamers.org ()>

        * First formatting checkin.
          A word of explanation: prior to making any changes to the
	  source, a couple of formatting runs will be made, followed
	  by some purification runs.
	  For this run, the Emacs mode selection line has been changed
	  to use C++ style indenting (cc-mode.el).  Each file has
	  been automatically reformatted using Emacs indent-region.
	  A few files have been changed manually already (i.e.,
	  comments, use of tabs).
	  Warning: using "diff" to compare files of different states
	  during the reformatting will not give useful results.

        * hu_stuff.c: 
          fixed "assignment discard const", the last remaining error
          message with default compilation.
                      

Sun Jan 19 14:27:06 1997    <bk@gamers.org ()>

        * Makefile:
          Minor fix for sndserver target, removed linuxsdoom target
          for the time being, added CVS header (kind of).

        * Initial CVS checkin. 

        * soundsrv/irix/linux/sun.c: 
          Changed includes (irix.h removed, soundsrv.h included).

        * i_svga.c: 
          Changed to DOS 8+3.

        * soundsrv.h/c:
          Changed to DOS 8+3, included irix.h in soundsrv.h.

        * r_local.h:
          Same for PI, include math.h with Linux.

        * doomdef.h: 
          Got rid of multiply defined warnings for Linux, 
          included values.h.

        * FILES2:
          created a commented list of all files, removed a few
          more files (sndserver test, NeXT leftovers, DMX header).
          Identified the following main modules (see FILES2):
          AM, HU, M, P, R, S, ST, W, WI. Some stuff is separate
          (Z, F), some not clearly separable (G, D). System specific
          interfaces are in I. Some of the latter replace i_main.c
          (i.e. the void/int main(argc,argv) call), e.g. SVGA,
          others (X11, SHM, DGA) don't. There is a certain amount
          of overlap, and the largest module (with possibly most
          overlap) is P - playing, i.e. all the games state and
          animation handling.
          Dithering is currently not used.

Sat Jan 18 15:14:41 1997    <bk@gamers.org ()>

        * r_draw.c: 
          fixed !defined(USEASM) lines for R_DrawColumn/Span.
          Removed fpfunc.o/S from Makefile, now compiling
          X11 w/o any assembler.
          Got a running linuxxdoom again. We are in business.
          This source is going to be used for the initial CVS
          check in.

        * Tried a quick hack compiling it as COFF a.out instead
          of ELF, with "gcc -b i486-linuxaout". Same linker
          errors. 
          Tried removing -DUSE_ASM. Still using fpfunc.S.


        * Tried linuxxdoom.
          Compile run: some warnings (redefinition of MAX/MIN
           SHORT/INT/LONG) in doomdef.h and (PI redefined)
           r_local.h.
          Link run: crashed, undefined references in 
            d_main.c: undefined reference to  `FixedDiv2'
            am_map.c:  undefined reference to `FixedMul'
            r_main.c:  undefined reference to `R_DrawColumn'
            r_main.c:  undefined reference to `R_DrawSpan'
            r_plane.c: undefined reference to `FixedMul'
            
          This stuff is defined in fpfunc.S (Fixed point) and
          in r_draw.c (assembler in tmap.S not used).
          However, "nm," shows that r_draw.o does not include
          the drawing functions (see below - USE_ASM).
          Furthermore, the global symbols in fpfunc.S begin
          with an underscore, "_FixedMul" and "_FixedDiv2".
 
          More problems within fpfunc.o: undefined references to 

             `_dc_yl'      `_dc_yh'
             `_ylookup'
             `_centery'
             `_dc_x'
             `_columnofs'
             `_dc_iscale'
             `_dc_texturemid'
             `_dc_source'
             `_dc_colormap'

             `_ds_y'       `_ds_x1'      `_ds_x2'
             `_ds_xfrac'   `_ds_yfrac'
             `_ds_xstep'   `_ds_ystep'
             `_ds_colormap'
             `_ds_source'

          Again, underscore problem.
          Note: tmap.S currently obsolete, as somebody pasted all
          the texture mapping assembly into fpfunc.S. Gotta clean
          that up.

        * Created initial release from CD sources, created ChangeLog.
          Let the games begin.


        **************************************************************
	DOOM source code ChangeLog file
	**************************************************************

