Hexen II: Hammer of Thyrion

Development Progress	:
---------------------------

2011-11-21 (SVN):
    * Provided cd-rip scripts for less common game media, i.e. the Xplosiv
      re-release and the Matrox m3D oem versions of Hexen II.  Reformatted
      README.music file and added m3d tracks information.  Updated the rpm
      spec file.

2011-11-21 (SVN):
    * vid_sdl.c (VID_PrepareModes): Sort the list of modes using a copy
      instead of modifying the order of original list from SDL_ListModes,
      otherwise weird things might just happen at least with SDL 1.2.14
      and newer. This fixes the bug where, with resolutions lower than
      the desktop, the image wasn't being stretched to fill the screen
      as reported by Sander van Dijk.
    * h2patch: updated uhexen2 version to report 1.5.1.
    * launcher: minor makefile tidy-up.
    * quakedef.h: updated beta date stamp to 2011-11-21.

2011-11-20 (SVN):
    * Updated Visual Studio project files after the moved sources.
    * gl_rlight.c: Moved under h2shared. Used the hexen2 version.
    * r_misc.c (R_LineGraph2): Made the function static.
    * r_sprite.c: Moved under h2shared. Used the hexen2 version whose only
      difference from the hexenworld version was a developer mode print.
    * gl_rmain.c, r_sprite.c (R_GetSpriteframe): Made the "no such frame"
      a developer mode print.
    * quakedef.h: updated beta date stamp to 2011-11-20.

2011-11-18 (SVN):
    * Removed the alphanumeric-only limitation on the config file and game
      save directory names. Doesn't seem necessary.
    * quakedef.h: updated beta date stamp to 2011-11-18.

2011-11-14 (SVN):
    * gtk-launcher: Cleaned up the Makefile.
    * gtk-launcher: Removed an obsoleted macro.

2011-11-12 (SVN):
    * quakedef.h: updated beta date stamp to 2011-11-12.
    * net_udp.c: Fixed FIONREAD ioctl to take an int* argument instead of
      an unsigned long*.

2011-11-11 (SVN):
    * net: Tidied NET_CheckSockets() and NET_WaitReadTimeout() procedures
      which are actually the same. Renamed them to NET_CheckReadTimeout()
      and made them to look the same.
    * quakedef.h: updated beta date stamp to 2011-11-11.

2011-11-10 (SVN):
    * quakedef.h: updated beta date stamp to 2011-11-10.

2011-11-10 (SVN):
    * hw_utils/hwmquery, hw_utils/hwrcon: Many clean-ups. Bumped versions.

2011-11-10 (SVN):
    * net: ioctl_list(2) says FIONBIO takes const int * argument: Changed
      all to do so for unix platforms. Kept the windows versions to take a
      u_long argument.

2011-11-10 (SVN):
    * hw_utils/hwmaster: Removed two unnecessary NULL assignments after
      freeing a pointer.
    * hw_utils/hwmquery: Fixed a compiler warning in 64 bit due to ssize_t.

2011-11-09 (SVN):
    * quakedef.h: updated beta date stamp to 2011-11-09.
    * hw_utils/hwmaster: Removed the unnecessary registered server counting
      code from Mst_SendList(). In protocol.h, renamed M2C_MASTER_REPLY to
      M2C_SERVERLST, added A2S_ECHO from the engine side header to be in
      sync with it, removed the unused A2A_ECHO, A2M_LIST and M2A_SENDLIST
      macros.
    * hw_utils/hwmquery: Cleaned up. Fixed broken logic that would prevent
      all the servers received from hwmaster being displayed. Renamed the
      M2C_MASTER_REPLY macro to M2C_SERVERLST to be in sync with hwmaster.
      Incremented the version number to 0.2.3.
    * hwutils/hwrcon: Removed USE_HUFFMAN ifdefs which haven't been used to
      this day.

2011-11-07 (SVN):
    * gtk-launcher: Removed the extra '&' before the array variable `info'
      when passing it to fread() as the buffer in scan_pak_files(). Allowed
      the "scanning for mods" console prints only for DEBUG builds. Several
      minor cleanups.

2011-11-06 (SVN):
    * gtk-launcher: Removed needless gtk_widget_ref() and gtk_widget_show()
      calls for GtkEntry widgets which are already part of GtkCombo widgets.
      Seems like copy/paste errors.  Also removed unnecessary vars pointing
      to such widgets.

2011-11-05 (SVN):
    * gtk-launcher: Removed an unused variable from create_window2().
    * gtk-launcher: Replaced gtk_editable_get_chars() usage by the more
      convenient gtk_entry_get_text().
    * gtk-launcher: Removed evil code trying to understand the selection
      in a combo box, properly used gtk_list_child_position() everywhere,
      instead.
    * gtk-launcher: Removed the evil "lock" variable and properly used
      gtk_signal_handler_block() and gtk_signal_handler_unblock() where
      necessary.
    * gtk-launcher: Added RES_MINGL macro, used it in Make_ResMenu() to
      clean up the confusing resolution list start offset.

2011-11-04 (SVN):
    * gtk-launcher: Did missing constifications, made it to compile using
      g++.

2011-11-02 (SVN):
    * vid_ext.c: Fixed stack corruption in dos_getmemory()/seginfo due to
      the missing balancing dos_freememory() calls in VID_InitExtra() and
      VID_ExtraGetModeInfo() for failures and unwanted cases. The bug was
      discovered when h2dos.exe was compiled using gcc-4.5.4.
    * dos_v2.c: Add Sys_Error() calls to dos_getmemory() against reaching
      MAX_SEGINFO and dos_freememory() against uncached seginfo.
    * quakedef.h: updated beta date stamp to 2011-11-02.

2011-10-30 (SVN):
    * cd_sdl.c: Reverted the CDAudio_Update() change from 27 Oct: it does
      not make things better.  Removed the SDL_CDStatus() check before the
      error message in case of SDL_CDPlay() failures: I don't really know
      the significance to it and witnessed that it masked the error report
      once, so I don't see any merit in its presence.

2011-10-30 (SVN):
    * oslibs, windows codecs: Recompiled mpg123 from latest 1.13.4 release.

2011-10-27 (SVN):
    * cd_sdl.c: Simplified, making it similar to cd_linux.c or cd_bsd.c by
      performing checks every two seconds in CDAudio_Update() and caching
      the last check time.

2011-10-26 (SVN):
    * recompiled all windows x64 dlls using a new, gcc-4.5-based toolchain.

2011-10-24 (SVN):
    * engine, sys_unix.c (Sys_GetUserdir): Adjustments to failure messages.
      Moved Sys_mkdir() call to the caller main(). Made the local home_dir
      pointer const.
    * hw_utils, hwmaster/sys_main.c: Likewise.
    * bumped versions for the hexen2 engine to 1.24, hexenworld to 0.24 and
      hwmaster to 1.2.7.

2011-10-24 (SVN):
    * launcher/main.c (Sys_Error): Removed exitcode argument and made it
      to always use EXIT_FAILURE. Adjusted callers.
      (Sys_SearchCommand): Adjustments to failure messages. Added some
      paranoid checks against buffer size deficiencies.
      (Sys_FindBinDir): Constified the filename argument. Adjustments to
      failure messages. Added some paranoid checks against buffer size
      deficiencies. Handled some unlikely corner cases.
      (Sys_GetUserdir): Adjustments to failure messages. Moved Sys_mkdir
      call to the caller (main()). Made the local home_dir pointer const.
      (main): Removed zeroing the basedir array; not necessary anymore.
      Adjusted Sys_FindBinDir() call after the above mentioned changes.
      Moved Sys_mkdir() call for userdir from Sys_GetUserdir() to here.
    * launcher_defs.h: Incremented the version to 1.0.6.

2011-10-24 (SVN):
    * launcher/main.c (Sys_SearchCommand): Changed the size of the arrays
      used with realpath() from MAX_OSPATH to PATH_MAX.  This "fixes" the
      umm, "crash" when launcher is compiled against new glibc, because
      glibc refuses to work further when it detects that the destination
      size is smaller than PATH_MAX. This is a workaround for now. Better
      fix would be defining MAX_OSPATH as PATH_MAX when that is available,
      but that would bump the stack space usage. Will work on this more.

2011-10-24 (SVN):
    * launcher/main.c (Sys_SearchCommand): Did missing constification.
    * quakedef.h: updated beta datestamp to 2011-10-24.

2011-10-22 (SVN):
    * Removed all references to the unsupported GL_INTENSITY, GL_ALPHA
      and GL_RGBA4 lightmap formats.

2011-10-22 (SVN):
    * cd_dos.c: Added support for -cddev command line switch. Added code
      to retrieve all available CD-ROM drive letters.
    * quakedef.h: updated beta datestamp to 2011-10-22.

2011-10-20 (SVN):
    * oslibs/windows/scitech/include/mgraph.h: Commented out unnecessary
      includes of some C++ headers and removed the now unused mglrect.hpp
      and mglpoint.hpp.

2011-10-20 (SVN):
    * Added Steve's syntax checking patch, dating back from early 2009,
      among the optional patches.  I'd like get back to it some day..

2011-10-19 (SVN):
    * launcher: updated uhexen2 version to report 1.5.1
    * Updated README.dos document with relation to the CWSDPMI version
      included in the binary package.
    * quakedef.h: updated beta datestamp to 2011-10-19.

2011-10-19 (SVN):
    * Fixed the dos version's failure on computers with more than 2GB of
      memory. Works best with CWSDPMI r7. The issue was reported here:
      http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2011/09/20/21:15:20
      Thanks go to Rugxulo for reporting the issue and testing the fix.
      Quoting him further: "With CWSDPMI r5 by default, it can't load the
      page tables (not enough low memory), but that's an old quirk due to
      him putting it all in low (conventional) memory because 4 kb pages
      for "big RAM" (greater than 512+ MB machines, IIRC) takes a lot of
      space."

2011-10-19 (SVN):
    * Fixed compilation with sound disabled.

2011-10-19 (SVN):
    * Xcode project file for Mac OS X: Updated from Steven.

2011-10-18 (SVN):
    * Updated the Visual Studio project files.
    * Made all projects to always use our own q_strlcpy and q_strlcat.
    * Made all projects to use q_(v)snprintf from libs/common.

2011-10-18 (SVN):
    * Removed mididef.h and moved midi driver init and shutdown procedure
      prototypes to bgmusic.h. Removed common include of cdaudio.h from
      quakedef.h, included it in places where necessary.

2011-10-18 (SVN):
    * Split docs/CHANGES, moved logs up to 1.4.3-release into CHANGES.old
    * Updated 1.5.1 release notes file.
    * quakedef.h: updated beta datestamp to 2011-10-18.

2011-10-18 (SVN):
    * midi_mac.c: Tidied up.

2011-10-17 (SVN):
    * quakedef.h: updated beta datestamp to 2011-10-17.

2011-10-17 (SVN):
    * windows midi: Fixed several broken error checks. Removed irrelevant
      or dead code at several places. Renamed a lot of variables, as well
      as structure members from brain-dead winblows style to our own, so
      that I can read more easily. Changed midi-to-stream converter to use
      FS_fread() and friends, keeping the midi file open during playback:
      The old code used to load the whole midi file into hunk memory, but
      there were no 100% guarantee that the data wouldn't be overwritten
      during a level change. Therefore this is much safer. OTOH, multiple
      disk reads shouldn't be a problem even for ancient computers because
      the files are small. Changed the structures so that headers prepared
      boolean is not a single global variable any longer but is per-buffer
      now. Added missing origin and copyright headers. Possibly some other
      cleanups I forgot. More might follow later.

2011-10-17 (SVN):
    * Deleted midstuff.h. Made mid2strm.c and midi_win.c to use the new
      midifile.h header.

2011-10-17 (SVN):
    * libs/common: Added new midifile.h header for common MIDI constants
      and structures. Information is compiled from widely available open
      sources.

2011-10-14 (SVN):
    * utils Makefiles: Removed the extra "bin" directory, removed the
      DESTDIR from the makefiles and BIN_DIR from the scripts. Added
      distclean target to all makefiles. Adjusted the rpm spec file
      for the build system changes.
    * Added new ReleaseNotes-1.5.1 document. Only two entries for now,
      will grow as we move on.

2011-10-14 (SVN):
    * libs/timidity/Makefile: Made clean to remove libtimidity.a too.
    * Makefiles: Renamed all "cleaner" targets to "distclean". Added
      distclean to most Makefiles who were lacking it.
    * engine Makefiles: Added new localclean target to clean only in the
      working directory. Made the clean targets to clean libs/timidity
      too. Adjusted quick-build scripts to use localclean as necessary.

2011-10-14 (SVN):
    * quakedef.h: updated beta datestamp to 2011-10-14.

2011-10-14 (SVN):
    * sbar.c (SB_InvChanged): Further cleanup for startpos adjustments.

2011-10-13 (SVN):
    * sbar.c (SB_InvChanged): Fixed a nit from previous patch when there
      are no items in the inventory.

2011-10-13 (SVN):
    * sbar.c (SB_InvChanged): Commented out original code which used to
      break start position of the scrolling inventory and made sure that
      the start position is set correctly upon an inventory change.

2011-10-13 (SVN):
    * Applied the engine-side mkdir and getuserdir changes to the gtk-
      launcher code.

2011-10-13 (SVN):
    * Updated some of the web links in the documents.

2011-10-09 (SVN):
    * quakedef.h: updated beta datestamp to 2011-10-09.

2011-10-09 (SVN):
    * server.h, world.c: Removed definition of DAMAGE_AIM which has never
      been used. Added comments about some other spawn and entity flags.

2011-10-09 (SVN):
    * cl_demo.c (CL_WriteDemoMessage): Removed the unnecessary check for
      cls.demorecording.

2011-10-08 (SVN):
    * r_main.c (R_EdgeDrawing): Better documentation of what is going
      on with the pointers going out of scope. Tidy up.

2011-10-08 (SVN):
    * hexenworld, R_DrawName: Fixed a typo in a comment.
    * hexenworld: documented what cl_doc global is.

2011-10-07 (SVN):
    * q_endian.h: Updates to endianism detection macro checks.

2011-09-24 (SVN):
    * Sys_mkdir: Reverted the strerror() output from DOS versions. Not
      really necessary for that platform, so they stay in for the unix
      versions for now.

2011-09-24 (SVN):
    * userdir.h: Define user directory name macros based on the target
      platform.

2011-09-24 (SVN):
    * Print strerror(errno) in case of failure in Sys_mkdir(). In
      Sys_GetUserdir(), call Sys_mkdir() with the crash flag set.

2011-09-22 (SVN):
    * gl_rsurf.c (R_DrawBrushModel): Add missing gl_zfix.value check to
      the commented out code (for completeness and for future reference.)

2011-09-22 (SVN):
    * midi_mac.c: Removed unused variable bMidiInited. Renamed bPaused
      to midi_paused.

2011-09-22 (SVN):
    * draw.c, gl_draw.c (Draw_ConsoleBackground): Some more tidy-up for
      version information printing.

2011-09-22 (SVN):
    * Xcode project file for Mac OS X: Updated from Steven. Deleted the
      unnecessary user files.

2011-09-22 (SVN):
    * screen.c, gl_screen.c, quakefs.h: Removed the unistd.h, io.h and
      io_msvc.h includes. They aren't necessary since the removal of
      the relevant CRT functions' direct usage since v1.5.0.

2011-09-22 (SVN):
    * glquake.h: Removed extern declaration for d_15to8table[] which is
      non-existant since v1.5.0.

2011-09-22 (SVN):
    * common.h: Fixed a typo in a comment.

2011-09-22 (SVN):
    * quakedef.h: Bumped version to 1.5.1 in the development tree.
    * docs: Changed version to read 1.5.1.

2011-09-17 (1.5.0-final / SVN):
    * in_dos.c (IN_Init): Make sure the command line switch actually has
      an argument. From Sander van Dijk.
    * in_svgalib.c (IN_InitMouse): Likewise.

2011-09-15 (SVN):
    * Bumped version date to 2011-09-15. Removed the beta status and
      marked as final.

2011-09-15 (SVN):
    * model.c, gl_model.c: Added new external_ents cvar in parallel to
      the old QIP code.

2011-09-15 (SVN):
    * gl_model.c (Mod_LoadLighting): Tidied up lit file loading code.

2011-09-15 (SVN):
    * Added gl_zfix as a new cvar to enable/disable the z-fighting fix
      on the fly. From Sander van Dijk.

2011-09-10 (SVN):
    * Bumped beta version date to 2011-09-10.

2011-09-10 (SVN):
    * host_string.c (Host_LoadStrings): Changed some console prints to
      developer mode only. Changed magic numbers 13 and 10 to '\r' and
      '\n'.
    * cl_parse.c (CL_ParseServerInfo): Changed server protocol console
      print to developer mode only.
    * cl_string.c (CL_LoadInfoStrings, CL_LoadPuzzleStrings):  Changed
      some console prints to developer mode only. Changed magic numbers
      13 and 10 to '\r' and '\n'.
    * gl_model.c (Mod_LoadLighting): Changed colored or white light load
      console prints to developer mode only.
    * pr_edict.c (PR_LoadProgs): Changed progs name and crc console print
      to developer mode only.

2011-09-10 (SVN):
    * Minor updates to COMPILE and TODO documents.

2011-08-21 (SVN):
    * snd_mp3.c (S_MP3_CodecOpenStream): Don't Z_Free() stream's private
      data when not allocating on the zone.

2011-08-13 (SVN):
    * r_shared.h: Moved to h2shared directory.  Used the hw version which
      defined NUMSTACKSURFACES as 1000 instead of 800.

2011-08-13 (SVN):
    * d_polyse.c: Moved to h2shared directory. Used the hexen2 version
      which has special treatments for initialleftheight==1 and height==1
      in D_RasterizeAliasPolySmooth().

2011-08-13 (SVN):
    * d_scan.c, r_draw.c: Moved to h2shared directory.

2011-08-13 (SVN):
    * vid_sdl.c (VID_PrepareModes): Avoid resolutions>=MAXWIDTH*MAXHEIGHT
      otherwise the software renderer segfaults with r_waterwarp

2011-08-13 (SVN):
    * hexenworld: Fix the software renderer segmentation fault at max
      resolution (1280x1024) with r_waterwarp:
    * r_draw.c, r_main.c, r_shared.h (sintable, intsintable): Matched
      the array sizes to those of their hexen2 counterparts.
    * d_scan.c (D_WarpScreen): Matched the rowptr and column array sizes
      to those of their hexen2 counterparts.

2011-08-13 (SVN):
    * hexenworld (R_DrawName): Did missing string constification.

2011-08-08 (SVN):
    * Added dependencies to all timidity objects in timidity/Makefile.
      In the engine makefiles, added $(TIMIDEPS) to the .PHONY list so
      that make will always make the timidity/Makefile ensuring up-to-
      date timidity/libtimidity.a.

2011-08-07 (SVN):
    * Changed GL_LoadTexture() to use texture flags, adjusted callers.

2011-08-07 (SVN):
    * docs/README.music: Adjusted for the menu entry changes.

2011-08-07 (SVN):
    * pr_exec.c (PR_Profile_f): Replaced two obvious tolower() calls by
      explicit ascii characters.

2011-08-07 (SVN):
    * menu.c: Adjusted music type menu so that midi-only or all-codecs
      can be selected.

2011-08-05 (SVN):
    * Document updates: Deleted ReleaseNotes-1.4.4, merged its content
      into ReleaseNotes-1.5.0.  Updated README.dos.  Updated the GPLv2
      document from the gnu ftp repo.  Updated rpm spec file.  Changed
      the beta version date to 2011-08-05.

2011-08-04 (SVN):
    * snd_gus.c: Did missing string constifications.

2011-08-03 (SVN):
    * gl_draw.c (GL_Upload32): Removed an unnecessary duplicated block
      of code for the no-mipmap+no-resample case.

2011-08-03 (SVN):
    * in_win.c: As per feature request #3383989, added support for the
      6th joystick axis for up movement controlled by joyupthreshold
      and joyupsensitivity. Ported from the quake2 source.

2011-08-02 (SVN):
    * hexen2/cl_input.c (CL_BaseMove): Simplified the "speed key or slow
      key" decision by using an xor in the if condition.
    * hexenworld/client/cl_input.c (CL_BaseMove): Ported the "speed key
      to act as slow key" behaviour from hexen2 to hexenworld.

2011-08-02 (SVN):
    * quakefs.c, quakefs.h: Removed the FS_LoadBufFile() method.

2011-08-02 (SVN):
    * draw.h, gl_draw.c: Removed Draw_PicFileBuf() which is not needed
      for a long time now.

2011-08-02 (SVN):
    * gl_vidnt.c, gl_vidsdl.c: Changed VID_SetPalette() to not use the
      FS_LoadBufFile() method.

2011-08-02 (SVN):
    * Bumped beta version date to 2011-08-02.

2011-08-02 (SVN):
    * Removed Quake texture resampler and 8bit texture extensions code,
      kept the Hexen II versions instead.

2011-08-02 (SVN):
    * gl_draw.c (GL_Upload8): Tidy up and clean up the confusing alpha
      loops.

2011-07-28 (SVN):
    * h2patch (get_millisecs): For DOS, don't do the 64bit multiplication
      and live with a minor precision loss.

2011-07-28 (SVN):
    * vid_mgl4.c: Even though this driver is only for x86-win32, replaced
      GWL_WNDPROC usage by GWLP_WNDPROC for sake of self-consistency.

2011-07-27 (SVN):
    * sys_dos.c: More console print adjustments.
    * sys_unix.c, sys_win.c, sys_dos.c: Made console prints consistent.

2011-07-27 (SVN):
    * debuglog.c: Removed the O_APPEND flag when opening the log file. It
      was a legacy from Quake who used to open and close the log file on
      every write. Commented out the Sys_unlink() call and added O_TRUNC
      to the open flags. Replaced an fprintf() by Sys_PrintTerm().

2011-07-27 (SVN):
    * hexen2/sys_win.c, hexenworld/client/sys_win.c (WinMain): Instead
      of using an empty string, use GetModuleFileName() to get the app's
      name. Remove the useless S_BlockSound() call. Detect early whether
      we are a dedicated server and allocate a console as the first job.
      Check for console allocation error cases. Separate the init splash
      window creation into a Sys_CreateInitSplash() helper procedure.

2011-07-27 (SVN):
    * printsys.h (DEBUG_Printf): Fixed a harmless copy and paste error
      in the C99 case of the macro.

2011-07-26 (SVN):
    * utils: updated the makefiles.

2011-07-26 (SVN):
    * Fixes for djgpp version check.

2011-07-25 (SVN):
    * libs/common/q_stdinc.h: Moved stdio.h include before q_stdint.h.

2011-07-25 (SVN):
    * utils, cmdlib.c (GetTime): Replaced time() by platform specific
      code.

2011-07-25 (SVN):
    * sys_unix.c, sys_win.c, sys_dos.c: Added Sys_DateTimeString() as a
      new helper procedure to get date/time in the "MM/DD/YYYY HH:MM:SS"
      format.
    * debuglog.c, host_cmd.c: Replaced the time() and strftime() calls by
      Sys_DateTimeString().

2011-07-25 (SVN):
    * hexen2/server/sys_win.c, hexenworld/server/sys_win.c: Replaced most
      of the crt calls, including conio code, by windows api calls. Clean
      up and tidy up.

2011-07-25 (SVN):
    * utils/common/cmdlib.c, util_io.c: Removed commented out code.

2011-07-25 (SVN):
    * h2patch/h2patch3.c: For DOS, replace gettimeofday() by uclock().

2011-07-25 (SVN):
    * sys_dos.c: Added information about uclock() extracted from DJGPP
      manual pages.

2011-07-25 (SVN):
    * hexen2/sys_win.c, hexenworld/client/sys_win.c: Replaced most of the
      crt calls by windows api calls. Clean up and tidy up.

2011-07-25 (SVN):
    * sys_win.c: Removed commented out macro.

2011-07-25 (SVN):
    * h2patch/h2patch3.c: Minor cleanup for Sys_unlink() and Sys_rename().

2011-07-25 (SVN):
    * zone.c: Renamed the memblock_t and zonelist_t id members to magic
      for better readability. Renamed zonelist_t idx member to id.

2011-07-20 (SVN):
    * hexenworld/server/pr_edict.c: Fixed segmentation fault in case of
      bad pointer in NUM_FOR_EDICT().  Removed extra title prints from
      ED_PrintEdict_f() and ED_PrintEdicts().

2011-07-20 (SVN):
    * Bumped beta version date to 2011-07-20 .
    * hexen2/Makefile: Allowed ogg/vorbis for dos builds. For now I am
      using tremor for dos, but it also builds and runs perfectly fine
      with libvorbis too. The DOS build define CODECS_USE_ZONE which is
      essential.
    * Makefiles: Added the CODECS_USE_ZONE compile time option. If set
      to yes, codecs will allocate on the zone instead of system memory
      which may be useful for ports to memory-tight platforms. Cleaned
      up the makefiles a bit.
    * oslibs/dos/codecs: Recompiled libmad to use Z_SECZONE. Added ogg
      and vorbis import libraries and headers.
    * oslibs/windows/codecs/include/vorbis/vorbisenc.h: Deleted unused
      header.
    * snd_mp3.c: Unless CODECS_USE_ZONE is defined, leave Z_ alone and
      allocate libmad decoding buffers (ca. 64kb) on the system memory.
    * zone.c: Added setup for secondary zone size for CODECS_USE_ZONE.
    * h2config.h: Added memory requirements for mp3 and vorbis decoders
      in preparation for CODECS_USE_ZONE feature.
    * updated documents.

2011-07-19 (SVN):
    * zone.c: Revised multiple zones management. Keep a linked list of
      initialized zones and search properly. More foolproof against
      zoneid assignment screw-ups, too (see svn revisions 4152 and 4153
      from today.)

2011-07-19 (SVN):
    * zone.c (Z_TagMalloc): Fixed id assignment oversight for Z_SECZONE
      which would seriously mess up zone-allocated pointers in Z_Free().
      The bug had been there since the introduction of secondary zone 4
      years ago...

2011-07-17 (SVN):
    * hexenworld/shared/model.h (qmodel_t): Disabled the cache_user_t
      member for server-only builds.

2011-07-17 (SVN):
    * zone.c (Z_Realloc): If expanding size, zero-fill the expanded part
      of the memory before returning, which is Z_Malloc() behavior.

2011-07-17 (SVN):
    * dos/mplpc.c (socket): Return INVALID_SOCKET instead of -1 for error.
      Changed retval type to SOCKET.

2011-07-17 (SVN):
    * zone.c, zone.h: Mark Z_??? functions as EXTERN_C. Coding style tidy
      up.
    * zone.c (MEM_Printf): Added missing '&&' in the macro.

2011-07-15 (SVN):
    * sys_dos.c, vid_dos.c: Remove Sys_DisableTerm() and Sys_EnableTerm()
      and use the sys_nostdout cvar set in a read-only way, instead.
    * sys_dos.c: Use remove() for Sys_unlink(), because djgpp already
      redirects unlink() to remove().
    * sys_unix.c, sys_win.c: Clean up Sys_FindFirstFile/Sys_FindNextFile
      routines.

2011-07-14 (SVN):
    * sys_dos.c: Removed some useless prototypes and tidied it a bit.

2011-07-14 (SVN):
    * enabled dos builds of h2ded.
    * netcomx.c, net_ser.c: Added proper SERVERONLY ifdefs so that they
      compile for h2ded. (Pretty much useless for a server-only build,
      but for completeness only.)

2011-07-14 (SVN):
    * net_main.c: SchedulePollProcedure() may be needed in server-only
      builds too (i.e. dos), so removed the SERVERONLY ifdef around it.

2011-07-13 (SVN):
    * h2ded, host.c (_Host_Frame): Don't allow very long or short frames
      analogous to the client-server application's Host_FilterTime().
      This fixes the sword rack anomalies in the demo2 and village1 maps
      as detailed in bug #3344613:
      http://sourceforge.net/tracker/?func=detail&aid=3344613&group_id=124987&atid=701006
    * Bump beta version/date to 1.5.0-rc6/2011-07-13, update documents.

2011-07-12 (SVN):
    * libs/timidity/instrum_dls.c: Fixed "comparison between signed and
      unsigned integer expressions" warnings.

2011-07-11 (SVN):
    * Added support for libtremor (libvorbisidec) as the integer-only
      libvorbisfile alternative for ogg decoding.
    * Updated compilation instructions document after libtremor support.

2011-07-10 (SVN):
    * hexen2/server/host.c (Host_Init): Execute server.cfg after setting
      host_initialized as true and unlocking the early-read cvars.
    * hexenworld/server/sv_main.c (SV_Init): Likewise.

2011-07-10 (SVN):
    * Fixed many of the "comparison between signed and unsigned integer
      expressions" warnings.

2011-07-10 (SVN):
    * draw.c, gl_draw.c (Draw_ConsoleBackground): Cleaned and simplified
      the function: no need making a copy of the engine signature string.

2011-07-10 (SVN):
    * re-diff'ed the optional standalone games patch after quakefs.c
      changes.
    * quakefs.c: Fixed a 'set but not used' warning in FS_Init(). Coding
      style cleanup.

2011-07-10 (SVN):
    * menu.c, net_comx.c: Did missing string constifications.

2011-07-10 (SVN):
    * net_main.c, net_dgrm.c: Added proper SERVERONLY ifdefs and removed
      the h2ded-specific extra copies. Removed the DEBUG build conditions
      around the unexpected reply address prints.

2011-07-10 (SVN):
    * hexen2 net: Added NO_LOOP_DRIVER and IS_LOOP_DRIVER macros and made
      the confusing loop driver checks more readable and flexible.

2011-07-10 (SVN):
    * hexen2/sv_main.c, hexenworld/server/sv_init.c: Refactored the code
      returning the full level name into new SV_GetLevelname() procedure.
    * server.h: Added prototype for SV_GetLevelname().
    * hexen2/host_cmd.c (Host_Map_f): Use SV_GetLevelname().
    * hexen2/host_cmd.c (Host_SavegameComment): Likewise.
    * hexen2/sv_main.c (SV_SendServerinfo): Likewise.
    * hexenworld/server/sv_ccmds.c (SV_Map_f): Likewise.
    * hexenworld/server/sv_user.c (SV_New_f): Likewise.

2011-07-10 (SVN):
    * README: updated web links.

2011-07-07 (SVN):
    * bspfile.h: Made the hexen2 and hw versions of MAX_MAP_CLIPNODES,
      MAX_MAP_PLANES and MAX_MAP_ENTSTRING values to mirror the ones
      defined in the mapping utilities, which are 65535, 16384 and 81920
      respectively. These changes doesn't affect anything at the game
      engine side. I still need to decide on what to do with differences
      in MAX_MAP_LEAFS values between all three of the files.

2011-07-07 (SVN):
    * model.h, gl_model.h (SURF_DRAWBLACK,SURF_TRANSLUCENT,SURF_DONTWARP,
      SURF_UNDERWATER): Eliminated opengl/software and hexen2/hexenworld
      versions' differences.  These surface draw flags are client-side
      only, therefore the changes do not cause any compatibility issues
      at all.  So, SURF_TRANSLUCENT is 0x80, SURF_UNDERWATER is 0x100,
      SURF_DRAWBLACK is 0x200 and SURF_DONTWARP is 0x400 everywhere now.

2011-07-07 (SVN):
    * Bump beta version/date to 1.5.0-rc5/2011-07-07, update documents.

2011-07-07 (SVN):
    * pr_exec.c (PR_ExecuteProgram):  Implemented some of LordHavoc's
      optimizations mostly by removing the temoprary eval_t a*,*b and *c
      variables and replacing them by OPA, OPB and OPC macros. Removed
      the statement index s and used the statement pointer instead,
      updating the pr_xstatement global whenever necessary. Moved the i,
      startFrame, endFrame and val variables from toplevel context to
      case context.  Removed Raven's pentium-specific timesnap code.
      Updated profiling code.  These changes, specifically the temporary
      eval_t pointers' removal, cures a miscompilation by ancient gcc
      versions <= 2.95.x:  With PR_RunError() marked with the noreturn
      attribute, compiling with the -fomit-frame-pointer switch resulted
      in bad code which segfaulted. Now those old compilers are just OK
      with this combination, too.

2011-07-05 (SVN):
    * oslibs/dos/djlib/vsnprntf.c: Added compatibility macro for _IONTERM.

2011-07-05 (SVN):
    * docs: Updated compilation instructions and recommened software.

2011-07-05 (SVN):
    * Updated makefiles with dos targets to add $(OSLIBS)/dos to includes
      path.

2011-07-05 (SVN):
    * libs/common/q_stdint.h: Added new shared header to include a proper
      stdint.h.  Included this new header in other places.

2011-07-05 (SVN):
    * oslibs/dos/djstdint/stdint.h, inttypes.h: Added from djgpp v2.04 for
      use with older djgpp versions.
    * oslibs/dos/djstdint: Added new djstdint directory.

2011-07-05 (SVN):
    * oslibs/dos/djlib/vsnprntf.c: Added vsnprintf() from djgpp v2.04 for
      use with older djgpp versions.
    * oslibs/dos/djlib: Added new djlib directory.

2011-07-03 (SVN):
    * gamecode/hc/h2/pstboar.hc: commented out unreferenced create_swarm()
      function which is already disabled or removed in all other versions.

2011-07-03 (SVN):
    * net_ser.c, vid_ext.c: Fix strict aliasing violations in dos port.

2011-07-02 (SVN):
    * Updated gamecode README file and 1.5.0 release notes file.

2011-07-01 (SVN):
    * skullwiz.hc (skullwiz_ininit): Reset .enemy and .goalentity to world.
      Fixes bug #3314808 where a blinked away wizard wouldn't reappear if
      there was a summoned imp even after it went away.

2011-07-01 (SVN):
    * soul.hc: In case of rider bosses, don't spawn a soul sphere, because
      it will be inaccessible anyways and will confuse the player. Removed
      the temporary MOVETYPE_NONE assignment before droptofloor() call, as
      it's actually unnecessary.

2011-06-30 (SVN):
    * snake.hc (wake_effect): Set FL_ALIVE flag before calling snake_wake().
      Fixes bug #3314810 where the summoned imp didn't pick the Egypt snake
      boss as an enemy.

2011-06-29 (SVN):
    * docs/BUGS: Updated the list of known bugs.

2011-06-29 (SVN):
    * hexen2/host.c (Host_ClearMemory): Do not check if host_hunklevel is
      set before freeing the hunk allocations.  The order in Host_Init()
      is clear and Host_ClearMemory must not be hit before host_hunklevel
      is set. (otherwise, there _will_ be much trouble...)
    * hexenworld/cl_main.c (Host_ClearMemory): Likewise.

2011-06-29 (SVN):
    * gl_model.c (Mod_LoadSpriteFrame): Removed some useless memset calls
      onto newly hunk allocated memory. Hunk_Alloc() already clears the
      memory before returning it.
    * model.c (Mod_LoadSpriteFrame): Likewise.
    * sv_main.c (SV_SpawnServer): Likewise.

2011-06-28 (SVN):
    * Increased localmodels array size to 8 (better alignment and safer
      against any possible future changes to the MAX_MODELS macro.)

2011-06-28 (SVN):
    * gl_vidsdl.c (VID_PrepareModes): Call qsort() only if we have more
      than one elements to sort.
    * gl_vidnt.c (VID_SortModes): Likewise.
    * vid_sdl.c (VID_PrepareModes): Likewise.
    * quakefs.c (FS_Maplist_f): Likewise.

2011-06-27 (SVN):
    * oslibs/codecs/dos/libmad.a: Recompiled and documented the changes.

2011-06-26 (SVN):
    * dos/mplib.c: Clean up, make all functions static,
    * dos/mplpc.c: Clean up, include mplib.c.
    * hexen2/Makefile: Adjust for the mplib.c change.

2011-06-26 (SVN):
    * dosisms.h: Removed dos_usleep(), made the only caller in sys_dos.c
      to call usleep directly. Removed unused dos_getheapsize function,
      made it a macro expanding to _go32_dpmi_remaining_physical_memory.
      Added new macro DJGPP_NO_INLINES which is not defined by default
      except for debug builds. When DJGPP_NO_INLINES is not defined, use
      djgpp inline versions of inportb, inportw, outportb and outportw
      directly.

2011-06-26 (SVN):
    * dosisms.h: Commented out regs_t which is the same as __dmpi_regs.
      Included dpmi.h.
    * dos_v2.c: Adjusted for regs_t to __dpmi_regs change. Minor cleanup.
    * vid_ext.c, vid_vga.c: No need for dpmi.h include now that dosisms.h
      already includes it.

2011-06-26 (SVN):
    * hexenworld/server/model.c (Mod_LoadFaces): Remove the strncmp call
      for just one "*" character and test for the '*' character instead.

2011-06-25 (SVN):
    * dos_v2.c, in_dos.c, snd_gus.c, snd_sb.c, sys_dos.c: Minor clean up
      for unused globals, missing dos.h includes, etc.

2011-06-25 (SVN):
    * common.h: For dos, define q_str[n]casecmp as str[n]cmpi to avoid
      the actual redirection to them in djgpp libc.

2011-06-25 (SVN):
    * net_udp.c (udp_scan_iface):  Cast the char array to caddr_t when
      assigning it to the ifc_buf member of struct ifconf.

2011-06-25 (SVN):
    * Minor tidy up in DOS networking sources.

2011-06-25 (SVN):
    * net_udp.c, net_wins.c (UDP_CheckNewConnections): Remove redundant
      comment.

2011-06-24 (SVN):
    * Updated the documentation after the default audio driver changes.
    * snd_sys.c (S_DriversInit): Register the untested sunaudio driver
      the first in order to make it the last choice.  If sdl audio is
      compiled for any supported platform, then register sdl audio the
      last to make it the default choice.

2011-06-24 (SVN):
    * Makefiles: Always keep the debug symbols in and use strip if they
      are not required. Always add the default CPUFLAGS to CFLAGS along
      with the ARGCHFLAGS. Make debug- builds possible for the h2patch
      application. Remove the -fno-builtin option from the xdelta3 build
      flags. Change -O3 to -O2 in the xdelta3 optimized build flags.

2011-06-23 (SVN):
    * gamecode, soul.hc: Made the soul sphere in sync with the skull or
      the cross. Changed the model lighting style to fullbright so now
      the skull and the cross are well discernible in dark places. The
      soul sphere can now gain momentum during spawning and fly around
      instead of hovering over the dead body and sometimes got stuck.
      Scaled down the soul at the end of its lifetime. Added the demoness
      among the list of bad people in the portals version in parallel to
      the hw version. Corrected some inconsistencies and minor errors.

2011-06-23 (SVN):
    * host_string.c (Host_LoadStrings): Remove the sprintf() call from
      the hexenworld '^' to '\n' translation and just store '\n' at the
      position where '^' is found.

2011-06-23 (SVN):
    * hexen2/cl_string.c: Copied from pr_strng.c, now holds only the
      strings for the client-side puzzle piece and objectives displays.
      Removed misleading pr_ prefix from the info_strings variables.
      Accordingly, renamed PR_LoadPuzzleStrings and PR_LoadInfoStrings
      to CL_LoadPuzzleStrings and CL_LoadInfoStrings.
    * h2shared/host_string.c, host_string.h: Renamed from pr_strng.c
      and pr_strng.h, now holds only the string resource shared between
      client and server. Renamed the global variables from misleading
      pr_ prefixed form to host_ prefixed form. Renamed PR_LoadStrings
      to Host_LoadStrings, accordingly.
    * Makefiles: Updated after the cl_string.c and host_string.c changes.
    * Xcode and Visual Studio project files: Updated likewise.

2011-06-22 (SVN):
    * progs.h: Sync h2 and hw versions and move to h2shared directory.
    * pr_edict.c (PR_LoadProgs): Sync h2 and hw progs crc calculation.
    * pr_cmds.c: Multiple clean ups. Added notes to some bound checks.
      Removed the union from PF_updateInfoPlaque() and made it to do
      the bit test and bit set using unsigned varibles. Also made it
      to PR_RunError if the objective index is greater than 63.
    * client.h (client_state_t), server.h (client_t): Change info_mask
      and info_mask2 from signed int to unsigned int.
    * host_cmd.c: Remove some dead and commented out code.
    * progs.h: Mark PR_RunError() as a noreturn function: it doesn't
      return because it calls Host_Error() whics is also a noreturn
      function.

2011-06-20 (SVN):
    * scripts/cdrip_hexen2.sh, cdrip_missionpack.sh: Minor tidy up.
    * rpm/hexen2.spec: Install the cd-rip scripts.
    * Minor updates to the TODO and README.music documents.
    * Moved Host_Version_f from host_cmd.c to host.c.
    * model.c, gl_model.c: Cleanup for local/global mins/maxs variables.

2011-06-19 (SVN):
    * Bumped beta date to 2011-06-19. Updated the 1.5.0 release notes.
    * host_cmd.c (LoadGamestate): Before calling ED_ParseEdict(), default
      to active edict because ED_ParseEdict() will set it to free if it
      really is. Fixes a game load bug where a freed entity slot within
      the map's original num_edicts range is reused for a dropped a soul
      sphere and the game then re-saved: see bug entry #3287803.  Noticed
      by Thomas.  No need to clear the edict from within LoadGamestate(),
      either, because ED_ParseEdict() will already do it for us, since
      SaveGamestate() doesn't write entnum 0.

2011-06-19 (SVN):
    * removed my old ugly hack of reducing teleport push speed to 225 in
      order to overcome the problem of reaching the Cathedral's balcony
      and the holy cross (triggers.hc::teleport_touch), and added Thomas'
      modified entities file for the Cathedral map instead. The modified
      ent file moves the teleport destination to the left side of the
      balcony as the solution.

2011-06-19 (SVN):
    * subs.hc (SUB_Remove): Added a note in the portals version that it
      calling stopSound() is cutting off many sounds, for instance when
      harvesting soul spheres. Only the portals version of SUB_Remove()
      calls stopSound(self,0).
    * updated gamecode README file.

2011-06-19 (SVN):
    * medusa.hc (medusa_decap_init, medusa_die): Make sure that the gaze
      attack sound doesn't persist when medusa is dead.

2011-06-19 (SVN):
    * moved the gamecode/devel directory out of hc.
    * reorganized the reference sources directory.

2011-06-18 (SVN):
    * Bumped beta date to 2011-06-18. Updated the 1.5.0 release notes.
    * host_cmd.c (LoadGamestate): When loading a saved game, restore the
      extra edicts that were created during game play. The generated
      edicts are not available during the map parsing by ED_LoadFromFile
      and lost upon reloading. This includes items dropped by monsters,
      items "dropped" by an item_spawner such as the prizes in the Temple
      of Mars (romeric5), health spheres generated by the Crusader's Holy
      Strength ability, or a respawning-candidate killed monster in the
      expansion pack's nightmare mode. Issue analyzed by Thomas Freundt.
      Issue was in original hexen2 source. Closes/fixes bug 3287803.

2011-06-18 (SVN):
    * hexen2/server/host_cmd.c (Host_Say_f, Host_Tell_f): Remove trailing
      quote only if it is present. Adjustments, mostly inspired from the
      darkplaces engine. (Change from 2010-08-31 rev.3729 missed hitting
      this file.)

2011-06-17 (SVN):
    * hexen2/progdefs.h: Removed incorrect comments about v1.09 progs.dat
      (was misled by dhcc).  Documented the globals structure differences
      better, added a globals structure for the v1.03 progs for reference.

2011-06-17 (SVN):
    * gamecode, eidolon.hc: Fixed eidolon_guarding() and eidolon_run() to
      check whether self.oldenemy (player) is still alive.

2011-06-17 (SVN):
    * gamecode, imp.hc (summoned_imp_die): Clear the FL_ALIVE flag for the
      gib case, too.
    * gamecode, imp.hc (summoned_imp_die): Clear the FL_ALIVE flag before
      removing, otherwise eidolon might get confused.

2011-06-17 (SVN):
    * gamecode, waypoint.hc (ResetWaypoints): Play with self.controller's
      fields only if self.controller is not 0.

2011-06-17 (SVN):
    * gamecode, monsters.hc (walkmonster_start_go): Added missing return
      statement after removing a stuck summoned monster.

2011-06-17 (SVN):
    * gamecode, h2/imp.hc: Remove the flapping sound if a summoned imp is
      gibbed. (fix was in other hcode trees, only original h2 was missing
      it.)

2011-06-15 (SVN):
    * libs/timidity/timidity.c (read_config_file): Don't underflow array
      when parsing timidity config file. (From SDL_sound mercurial repo.)

2011-06-15 (SVN):
    * host_cmd.c (Host_Quit_f): Shorten the no-confirm quit condition:
      (cls.state!=ca_dedicated && cls.state!=ca_disconnected) condenses
      to cls.state==ca_connected.

2011-06-15 (SVN):
    * libs/timidity/timidity.c (read_config_file): honor the return code
      from recursive read_config_file() call for the "source" directive.
      from timidity-0.2i bugfix patch found at
      http://www.onicos.com/staff/iz/timidity/
    * libs/timidity/instrum.c (load_instrument): Fix shadowing warnings
      due to reuse of variables i and tmp.
    * libs/timidity/instrum_dls.c: Fix gcc's shadowing warnings due to
      the stupid name clash with index().
    * libs/timidity/timidity.c (read_config_file): close the file before
      returning in error cases.

2011-06-15 (SVN):
    * host_cmd.c (Host_Quit_f): Quit without confirmation when issuing
      'quit' from the console, i.e. when not connected. (Steven's patch.)

2011-06-13 (SVN):
    * gtk launcher: Changed so that there is now a "default" option for
      sound driver. If sound is selected as default, no driver option
      will be passed to the command line. Fixed the command line switch
      for the sunaudio option. Ensured that the sound setting stays the
      same across launcher binaries compiled for different environments.

2011-06-13 (SVN):
    * Updated Visual Studio project files.
    * Bumped beta version and date to 1.5.0-rc4/2011-06-13.  Updated
      documentation.

2011-06-13 (SVN):
    * Moved sys_dos.c out of the dos subdirectory, fixed the Makefile for
      dos targets.

2011-06-13 (SVN):
    * Changed sound driver interface so that snd_sys.c sends a linked
      list of drivers to snd_dma.c and snd_dma.c tries all of them until
      one of them successfully initializes.  If the user specifies a
      specific driver on the command line such as by -sndalsa, then the
      specified driver is tried only.  This mimics the windows snd_win.c
      behavior where dsound and wave drivers were tried.  This helps
      linux/unix users where we have three drivers to start the engine
      with sound working.  While we were there, separated dsound out of
      snd_win.c into its own snd_dsound.c, so that the two sources are
      independent.  Also severed the connections between snd_gus.c and
      snd_sb.c.

2011-06-13 (SVN):
    * Moved several dos driver sources under h2shared.

2011-06-13 (SVN):
    * bgmusic.c, snd_codec.h, snd_codeci.h: Changed MIDIDRIVER_MID back
      to 1U<<31. Changed other music types as shifts of 1U instead of 1.

2011-06-12 (SVN):
    * bgmusic.c: Changed MIDIDRIVER_MID definition from 1<<31 to 1<<30.

2011-06-12 (SVN):
    * Fixed compilation when ENDIAN_RUNTIME_DETECT is defined as 1 (bug
      was introduced in previous commit at rev.4028.)
    * Tidy ups various places for endian ifdefs. Use new host_bigendian
      where needed.
    * q_endian.c, q_endian.h: Changed host_bigendian to be an int so that
      sources not having qboolean can still include q_endian.h.
    * q_endian.c: Added host_bigendian as a new global.

2011-06-11 (SVN):
    * q_stdinc.h: Updated notes about qboolean and C++ bool types, added
      compile time asserts.

2011-06-07 (SVN):
    * gamecode, hc: Created new devel directory. Moved excessively long
      analysis details from buddha.hc, eidolon.hc and mezzoman.hc to the
      corresponding text files under the new directory.

2011-06-07 (SVN):
    * utils, hcc: Fixed broken switch statement compilation when there is
      an implicit break in the last case.  Hcc emits an additional break op
      when it hits an implicit break, but it used to forget incrementing
      the switch statement's b value accordingly, which resulted in broken
      progs.  Has been broken since Raven's h2_utils and h2mputil releases.
      Works properly now.

2011-06-07 (SVN):
    * Updated hexen2 macosx xcode project file: fixed file paths after the
      libs/common/ directory addition and added bgmusic.c and snd_codec.c
      among the sources, added ../../h2shared and ../../../libs/common to
      all HEADER_SEARCH_PATHS definitions.  Possibly and hopefully, these
      would make hexen2 and glhexen2 to build for osx again, but requires
      Levent's love and care.  No ogg or mp3 codecs are added to build and
      those require Levent, too.

2011-06-05 (SVN):
    * rpm spec file: bumped version to 1.5.0-rc3.

2011-06-05 (SVN):
    * Dropped support for the old version of hcc tool.  Adjusted all
      build scripts, updated documents.  Added a diff file in the hcc
      directory showing the differences between the old and new versions
      for reference.

2011-06-04 (SVN):
    * Updated 1.5.0 release notes file.

2011-06-04 (SVN):
    * h2patch: Added Visual Studio project files.
    * h2patch, libs/xdelta3: Fixed Visual Studio compilation (stdint.h).
    * Updated Visual Studio project files after the libs/common changes.

2011-06-03 (SVN):
    * utils/dcc: Updates to the dcc README file.
    * gamecode/patch111: Minor update to patchdat.txt.

2011-06-03 (SVN):
    * Moved adivtab.h and anorms.h under the libs/common/ directory.
    * Moved pr_comp.h under the libs/common/ directory.
    * Moved spritegn.h and genmodel.h under the libs/common/ directory.

2011-06-03 (SVN):
    * utils, hcc, dcc: Macroized the "I+" string as IMMEDIATE_NAME and
      used it. Synced all hcc, dcc and engine versions of pr_comp.h.

2011-06-03 (SVN):
    * utils/dcc/pr_comp.h: Changed the types of a, b and c members of the
      dstatement_t structure from unsigned short to signed short which is
      the normal case for qcc and hcc. This prepares dcc to use a global
      pr_comp.h.
    * utils/dcc/dcc.c: Since dstatement_t->a, b and c are change to signed
      short, adjusted the decompiler code to operate correctly:  When a
      dstatement_t->a, b or c (signed short) value is passed to a function
      taking a gofs_t argument and the function compares that value to a
      ddef_t->ofs value (unsigned short), then the dstatement_t->a, b or c
      value must be explicitly cast to unsigned short in the function call.
      BackBuildReturnType() is an exception, because it compares its gofs_t
      argument to dstatement_t->a, b or c values, therefore there must not
      be a casting for that case.

2011-06-03 (SVN):
    * utils/dcc: Minor cleanup: Moved the static vsline, dsline and funcname
      arrays back into their functions.  Made the temp_val, func_headers and
      PR_FILE variables static to dcc.c, added a global Init_Dcc() function
      to initialize them.  Moved global variable and function declarations
      to a new dcc.h, made dcc.c and hcc.c to include dcc.h. Made hcc.c to
      call Init_Dcc() just after calling InitData().

2011-06-03 (SVN):
    * utils/dcc/dcc.c (DccStatement): Statement pointer k in a for loop was
      being initialized using an unsigned statement->a value and this used
      to result in a mistake of emitting while instead of if.  The current
      hw hcode is an example: see the if (map_next == "map_sequence_start")
      check in while(1) loop in world.hc::GetNextMap(). The code is changed
      to use statement->a explicitly cast to signed short, just like in the
      similar case found in AddProgramFlowInfo().

2011-06-02 (SVN):
    * Removed Visual Studio 2008 project files, because the VS2005 versions
      perfectly import into VS2008.

2011-06-02 (SVN):
    * Recompiled all windows x64 libraries using the latest mingw-w64 tools.

2011-06-01 (SVN):
    * Moved crc.c and crc.h under libs/common/. Removed utils/common/crc.[ch]
      and added utils/hcc[_old]/crchash.[ch]. Those hash functions are only
      for progs the compiler and include crc.[ch].
    * Moved hwal.h, pakfile.h, q_endian.c, qsnprint.c, qsnprint.h, strl_fn.h,
      strlcpy.c and strlcat.c to under libs/common/ .

2011-06-01 (SVN):
    * Makefiles: Added build rules for $(LIBS_DIR)/common/%.c so that I
      can move some commonly used sources under libs/common/ .

2011-06-01 (SVN):
    * Changed beta version stamp to 2011-06-01.
    * rpm/hexen2.spec: Updated after the h2patch/xdelta3 changes.

2011-06-01 (SVN):
    * docs/ReleaseNotes-1.5.0: Updated after the h2patch/xdelta3 changes.
    * docs/README: Updated after the h2patch/xdelta3 changes.

2011-06-01 (SVN):
    * gamecode/patch111: Renamed README.txt file to patchdat.txt.

2011-06-01 (SVN):
    * h2patch: Added a standalone pak patch application built upon the
      xdelta3 library.

2011-06-01 (SVN):
    * launcher/Makefile: Fix flags.

2011-06-01 (SVN):
    * gamecode/patch111: README.txt update.
    * launcher: Bumped version to 1.0.5.

2011-06-01 (SVN):
    * gamecode/patch111: Added xdelta3-generated pak patch files.

2011-06-01 (SVN):
    * libs/common: Added new directory. Moved arch_def.h, compiler.h,
      net_sys.h, q_endian.h and q_stdinc.h, which are commonly used
      headers in almost all uhexen2 tree, to under libs/common.  More
      may follow later.

2011-06-01 (SVN):
    * launcher: Changed the patch facility to use new xdelta3 library.
      Addition of patch data will follow shortly.

2011-06-01 (SVN):
    * libs/xdelta3: Removed large amount of code not needed by our use.
      Added progress bar stuff. Added djgpp support. Improved mingw
      support. Fixed compiler warnings. Some other cleanups.
    * libs/xdelta3: Added Joshua P. MacDonald's xdelta3 library and some
      of its main() extras.
    * libs/md5: Created new libs directory. Moved md5.* from launcher to
      the new place.
    * launcher: removed loki_xdelta.* and moved apply_patch.* out of the
      xpatch directory.
    * gamecode/pak_v111, libs/xdelta11: Removed (moved to /old).

2011-05-25 (SVN):
    * libs/xdelta11 (Makefile.xd): Removed XDELTA_OBJS objects from the
      libxdelta.a target. Changed the xdelta target to use libxdelta.a.

2011-05-25 (SVN):
    * hexenworld/server/sv_init.c (SV_SpawnServer):  Increment realtime
      merely by a fraction before each SV_Physics() call, otherwise
      SV_Physics() actually returns immediately without doing anything.
      This was the reason for the long- and well-known hexenworld server
      crash for the romeric5 map.  Patch from Thomas Freundt.
    * Changed beta version stamp to 2011-05-25.

2011-05-25 (SVN):
    * Reverted HexenC LinkDoors() changes from 2011-05-22, rev. 3972,
      engine fix for the romeric5 crash will follow.
    * Reverted ents_not_loaded addition from 2011-05-22, rev. 3970.

2011-05-23 (SVN):
    * added Thomas' egypt1 ankh_platform stuff as an optional patch.

2011-05-22 (SVN):
    * hexenworld gamecode: Really fixed the HexenWorld server crash upon
      running the romeric5 (Temple of Mars) map which loads fine now on
      all machines we tested.  The problem was that timing-dependent
      hackings associated with func_door_rotating not working as expected
      under hexenworld, so such hacks are eliminated.  The solution also
      includes making sure that all doors have been initialized before
      LinkDoors() is called the first time. See new func_linkdoors_cnt()
      procedure and the linkdoors_cnt and EntInitDone globals and the
      places they are used in doors.hc, triggers.hc and world.hc.  The
      solution is applied to hexenworld, as well as to siege HexenC code.
      The old work around of increasing the nexthink value to 2s in
      trigger_interval() is reverted.
    * Changed beta version stamp to 2011-05-22.

2011-05-22 (SVN):
    * pr_edict.c:  Added ents_not_loaded as a new cvar holding knowlegde
      that the loading of entities is not complete.  It is set to 1 upon
      entering PR_LoadProgs() and 0 just before leaving ED_LoadFromFile().
      This cvar will be used by the hexenworld progs to overcome timing
      problems associated with func_door_rotating, i.e. the well-known
      crash with the romeric5 map due to the four swinging blades.

2011-05-22 (SVN):
    * mapfixes: Added README file to explain what they are.  Added note
      that the fixed entities of the data1 maps must be used with v1.11
      of hexen2 maps. Updated the rpm spec file to install the new README
      files.

2011-05-22 (SVN):
    * oslibs, dxsdk: Updated dx headers from mingw-w64 svn repo rev.4173.

2011-05-21 (SVN):
    * quakefs.c (FS_Init): Use the new Cvar_SetROM() to set the oem and
      registered cvars.

2011-05-21 (SVN):
    * cvar.c, cvar.h: Added Cvar_SetROM() and Cvar_SetValueROM() to set
      a CVAR_ROM variable from within the engine.

2011-05-20 (SVN):
    * mapfixes, tower.ent: Repositioned the bronze golem in the elevator
      so that it doesn't die immediately because of getting stuck. From
      Thomas. Updated the rpm spec file to install the new ent file.

2011-05-20 (SVN):
    * made COM_ExtractExtension to call COM_FileGetExtension.

2011-05-20 (SVN):
    * Removed S_FileExtension, replaced its use by COM_FileGetExtension.
      Adjusted all users because COM_FileGetExtension doesn't include
      the leading dot for the extension, nor does it ever return NULL.

2011-05-20 (SVN):
    * bgmusic.c: moved the commented out code to bgmusic.old so that the
      file's contents can be followed more easily.

2011-05-20 (SVN):
    * added COM_FileGetExtension to return a file's extension or empty
      string if there is none. renamed the existing COM_FileExtension
      to COM_ExtractExtension and tidied it a bit.

2011-05-19 (SVN):
    * strings.txt: Removed explicit line breaks from the cathedral holy
      pool room message at line 92: they were leading to poor alignment
      and this is in parallel to the cathedral entrance message at line
      137, too.  Patch from Sander van Dijk.

2011-05-19 (SVN):
    * gamecode, triggers.hc (trigger_interval): Reverted nexttink value
      to 0.1 for the hexen2 and the expansion pack versions.  Increased
      it further to 2.0 for hexenworld and siege versions, because 0.3
      was seen to be not enough on two old pentium3-500 and 650 machines.
      Changed documentation because this obviously not a proper fix but
      a work around.  Further work on this may (or may not) follow.

2011-05-17 (SVN):
    * gamecode, triggers.hc (trigger_interval): Fixed issue which used to
      crash HexenWorld server if one attempted to run romeric5 (Temple of
      Mars) map. Fix was effected by slightly relaxing the initialization
      time of the four pendula in the level. Since the fix affects only
      the initialization, change was applied to all triggers.hc versions.
      Documented the issue in the source. Fix by Thomas Freundt.

2011-05-14 (SVN):
    * gamecode, mezzoman.hc: Fixed a HexenC bug which would prevent a
      yakman from appearing during the 'Trial of Strength' in the 'Temple
      of Phurbu' (tibet7) level of the mission pack, rendering the level
      not completable. Fix by Thomas Freundt.

2011-05-14 (SVN):
    * opengl: Commented out the glPolygonOffset solution for z-fighting
      and enabled the alternative solution of MH. glPolygonOffset caused
      unacceptable side effects, at least in 16 bpp mode, and there is no
      guarantee that there won't be any side effects with other hardware
      and/or other conditions.
    * Changed beta version stamp to 2011-05-14.

2011-05-10 (SVN):
    * opengl: Implemented the glPolygonOffset solution to fix the infamous
      brush model z-fighting.  Added an alternative solution in commented
      out form.  The flickering overlapping textures problem should be
      largely fixed now.
    * Updated the list of known bugs.
    * Updated 1.5.0 release notes file.
    * Changed beta version stamp to 1.5.0-rc3/2011-05-10.

2011-05-09 (SVN):
    * strings.txt: fixed egypt2 wheel of ages message to report 360 degrees
      instead of 30 when it "points to a jackal". patch from Sander van Dijk.
    * gamecode: fixed a mission pack HexenC bug where a pentacle monster
      in the tibet1 map became invulnerable when it got crushed by a door.
      documented the design flaw in the entity union which was responsible.

2011-05-08 (SVN):
    * Updated 1.5.0 release notes file.

2011-05-08 (SVN):
    * opengl: always use GL_LINEAR as lightmap filter. made gl_texturemode
      command not affect lightmaps.

2011-05-05 (SVN):
    * gamecode, mezzoman.hc: Fixed a bug where werepanthers became "undead"
      when an assassin killed them by her bombs. Fix by Thomas Freundt.

2011-05-04 (SVN):
    * mapfixes, demo2.ent and egypt4.ent: Added minor entity fixes for demo2
      and egypt4 maps from Thomas Freundt. Updated the rpm spec file.

2011-05-04 (SVN):
    * gamecode, eidolon.hc: fixed a bug which might prevent Eidolon to land.
      fixed more Eidolon bugs which might prevent the finale screen to trigger.
      Analyzed and fixed by Thomas Freundt.

2011-04-24 (SVN):
    * updated rpm spec file and other docs for 1.5.0-rc2.

2011-04-24 (SVN):
    * glquake.h, gl_func.h, gl_draw.c, gl_vidnt.c, gl_vidsdl.c, gl_rmisc.c,
      gl_rsurf.c, gl_ngraph.c: abandoned texture_extension_number, switched
      to glGenTextures() which is an opengl 1.1 requirement.

2011-04-24 (SVN):
    * gl_rmisc.c (R_InitExtraTextures): New procedure. Assign values to
      playertextures array here.
      (R_Init): Move resetting of gl_extra_textures to R_InitExtraTextures().
      Call R_InitExtraTextures().
      (R_TranslatePlayerSkin): Reloading of playertextures doesn't like
      GL_LoadTexture() and its associated glDeleteTextures() call, not sure
      why for now, so I have to do this the old way by overwriting them
      without deleting the old texture until I figure it out. Fixes bug
      3288081.
    * glquake.h (R_InitExtraTextures): Add prototype for the new procedure.
    * gl_vidnt.c, gl_vidsdl.c (VID_ChangeVideoMode): Call the new
      R_InitExtraTextures() procedure to reassign names to playertextures
      and to reset gl_extra_textures arrays.
    * Bumped version to 1.5.0-rc2.

2011-04-23 (SVN):
    * gamecode, portals/buddha.hc: Fixed a bug which used to prevent the
      finale screen to trigger if Praevus were killed too quickly in
      buddha_die() and buddha_run(). Analyzed and fixed by Thomas Freundt.
      While we were there, did some cleanup in buddha_die() as well.

2011-04-22 (SVN):
    * oslibs/codecs:  updated libmpg123 windows libraries to the latest
      stable 1.13.3 version.

2011-04-12 (SVN):
    * fixed several gcc-4.6 -Wunused-but-set-variable warnings.

2011-04-07 (SVN):
    * updated the COMPILE document for recent software versions.

2011-04-01 (SVN):
    * q_stdinc.h: Visual Studio 2010 provides a stdint.h, so use it for
      VS2010 and later instead the header from the msinttypes project.

2011-03-30 (SVN):
    * Minor Makefile cleanup.

2011-03-11 (SVN):
    * README.music: Added audio track information for the Hexen II "xplosiv"
      release (thanks to Sander van Dijk.)
    * README: Corrected/updated some information regarding ogg/mp3 playback.

2011-03-10 (SVN):
    * snd_timidity.c, snd_wildmidi.c: removed the broken reinit functions.
      updated some fixme and todo notes.

2011-03-08 (SVN):
    * Minor documentation corrections.
    * rpm spec file: fix license tag as GPLv2. add missing missing pack map
      entity fixes to the packaged files list.

2011-03-03 (SVN):
    * Changed beta version date stamp to 2011-03-03.

2011-03-03 (SVN):
    * rpm spec file: Nasm version 0.98 can not be supported anymore due to
      its inability to handle -I arguments. Bumped minimum required version
      to 0.98.38.

2011-03-03 (SVN):
    * created new directory oslibs to hold os-specific headers and libraries
      and moved the contents of w32stuff directory to it. adjusted all the
      makefiles and the project files accordingly.

2011-03-01 (SVN):
    * model.c, gl_model.c: relaxed searchpath requirements for external ent
      and lit file loading: they are now allowed from the same game directory
      as the map itself as well as from a searchpath with a higher priority.

2011-03-01 (SVN):
    * quakefs.c (FS_LoadPackFile): remove the extra '&' before the array
      variable `info' when passing it to fread() as the buffer.
    * Changed beta version date stamp to 2011-03-01.

2011-02-27 (SVN):
    * quakefs.c (FS_OpenFile): fix bug where the path_id was not being set
      for files from a directory tree and resulting in wrong decisions in
      the callers of FS_FileExists().

2011-02-27 (SVN):
    * Changed beta version date stamp to 2011-02-27.

2011-02-27 (SVN):
    * bgmusic.c: fix an oversight which used to cause a segfault when a midi
      driver is available and the requested music file isn't found.

2011-02-27 (SVN):
    * sys_unix.c, sys_win.c (sys_throttle): add new cvar, default value 0.02.
      (main): sleep 1 ms if the time passed since the last Host_Frame() call
      is less than the value of sys_throttle.
    * sys_dos.c (sys_throttle): add new cvar to the dos version too, but only
      for compatibility. dos version shall not throttle.
    * hexen2/host.c (Host_InitLocal): register the new cvar sys_throttle.
    * hexenworld/client/cl_main.c (CL_Init): likewise.
    * hexen2/host.h (sys_throttle): add extern declaration for the new cvar.
    * hexenworld/client/host.h (sys_throttle): likewise.
    * docs/ReleaseNotes-1.5.0: documented the new feature.

2011-02-27 (SVN):
    * rpm spec file: add support for building against libmpg123 instead of
      libmad.

2011-02-25 (SVN):
    * sys_unix.c, sys_win.c:  minor cleanups. made SDL version checks to
      happen even if the binary is run as a dedicated server.

2011-02-23 (SVN):
    * w32stuff/codecs: update libmpg123 header, import libraries and dlls
      to version 1.13.2.

2011-02-21 (SVN):
    * snd_mix.c, minor cleanup: eliminated stupid multiple casting in
      SND_PaintChannelFrom8(), added braces to the inner for loop in
      SND_InitScaletable().

2011-02-21 (SVN):
    * Updated windows README file for the 1.11 patch web links.

2011-02-21 (SVN):
    * Updated 1.5.0 release notes file.

2011-02-18 (SVN):
    * utils/common/util_io.c:  ported several platform-specific file io
      changes from game engine to the utilities and added a few new procs.
      added dos-specific procs. updated the callers of modified functions
      accordingly.

2011-02-17 (SVN):
    * Updated 1.5.0 release notes file. Changed beta version date stamp
      to 2011-02-17.

2011-02-17 (SVN):
    * snd_mpg123.c: Print a message if mpg123_init() fails.

2011-02-17 (SVN):
    * README.music: update the document for the -noextmusic command line
      option and the bgm_extmusic cvar.

2011-02-17 (SVN):
    * model.c, gl_model.c: changed the `ignored' messages from Con_DPrintf
      to Con_Printf for external lit and ent files.

2011-02-16 (SVN):
    * bgmusic.c: small updates and tidy-ups.

2011-02-16 (SVN):
    * w32stuff/codecs: add libmpg123 header, import libraries and dlls
      for windows builds in case they use libmpg123 for mp3 support.
    * w32stuff/dxsdk: update _mingw_dxhelper.h from mingw-w64 svn repo.

2011-02-16 (SVN):
    * bgmusic.c: drop support for track<nn> music file search. change the
      music file search method to prioritize searchpath order as opposed
      to preferred file format order. add support for -noextmusic command
      line option and bgm_extmusic cvar from quakespasm.
    * bgmusic.h: add an extern for bgm_extmusic.
    * README.music: update the document after these changes.

2011-02-16 (SVN):
    * quakefs.h: minor tidy-up.

2011-02-15 (SVN):
    * bgmusic.c: some reorganization without any actual code change.
      (BGM_PlayCDtrack): added new procedure from the quakespasm version
      of the file. not actually used in hexen2, at least not yet, only
      for reference.
    * bgmusic.h (BGM_PlayCDtrack): added prototype.

2011-02-14 (SVN):
    * snd_mpg123.c: added new codec for mp3 playback using libmpg123 as
      an alternative to the existing one using libmad. requires at least
      mpg123-1.12.0, i.e. api version 25.

2011-02-12 (SVN):
    * sys_unix.c, sys_win.c, sys_dos.c: added Sys_rename().
    * sys.h: added prototype for Sys_rename().
    * hexenworld/client/cl_parse.c (CL_ParseDownload): use Sys_rename()
      instead of rename().

2011-02-11 (SVN):
    * sys_dos.c (Sys_CopyFile): don't use findfirst(). use filelength()
      and getftime()/setftime().

2011-02-11 (SVN):
    * sys_win.c (Sys_FileType): new procedure, using GetFileAttributes().
    * sys_unix.c (Sys_FileType): new procedure, using stat().
    * sys_dos.c (Sys_FileType): new procedure, using _chmod().
    * sys.h (Sys_FileType): add prototype for the new procedure.
    * quakefs.c (FS_FileInGamedir): change return type to qboolean. use
      Sys_FileType() instead of access() system call.
    * quakefs.h: add FS_ENT_NONE, FS_ENT_FILE and FS_ENT_DIRECTORY macros,
      similar to darkplaces.
      (FS_FileInGamedir): adjust prototype.
    * gl_vidsdl.c (GL_OpenLibrary): use Sys_FileType() instead of access()
      system call.
    * screen.c, gl_screen.c (SCR_ScreenShot_f): use Sys_FileType() instead
      of access() system call.
    * hexenworld/client/cl_parse.c: adjust for FS_FileInGamedir() return
      type change.

2011-02-10 (SVN):
    * quakefs.c (FS_OpenFile): use Sys_filesize() to detect the presence
      of a file in the directory tree. allow calling of the function with
      NULL file argument.
      (FS_FileExists): new procedure, returning whether the file is found
      in the hexen2 filesystem.
      (FS_LoadFile): removed redundant assignment to fs_filesize.
      (FS_filelength): removed static.
    * quakefs.h (FS_OpenFile): add prototype.

2011-02-10 (SVN):
    * snd_codec.c (S_CodecUtilOpen):  cast for length must be long.

2011-02-08 (SVN):
    * quakefs.c (FS_fread): fixed coding style.

2011-02-08 (SVN):
    * fixed linkage when we are configured for no sound (bgmnull*.c).

2011-02-08 (SVN):
    * common.h: added note that X_OK (0x01) must not be used in windows
      code.
    * quakeinc.h: include sys.h earlier.

2011-02-08 (SVN):
    * bgmusic.c: minor cleanup for codec type preferences.

2011-02-08 (SVN):
    * sys.h: Added prototype for long Sys_filesize(const char *).
    * sys_unix.c, sys_win.c, sys_dos.c: Added Sys_filesize().

2011-02-08 (SVN):
    * bgmusic.c (BGM_Play*): fixes for cases where a midi driver and
      a midi streamer are both available.

2011-02-07 (SVN):
    * bgmusic.c: Added new procedure BGM_PlayMIDIorMusic() to handle
      map-dictated midi/music playback.  Added several TODO notes.
    * bgmusic.h: Added prototype for BGM_PlayMIDIorMusic().
    * cl_parse.c, menu.c: Adjusted for new BGM_PlayMIDIorMusic().

2011-02-02 (SVN):
    * sys_dos.c (Sys_CopyFile, Sys_FindFirstFile, Sys_FindNextFile):
      use dos-specific calls instead of unix compatibility functions.
    * sys_dos.c: includes cleanup.

2011-02-02 (SVN):
    * quakefs: renamed FS_CopyFromFile() to FS_WriteFileFromHandle(),
      adjusted its callers.

2011-01-30 (SVN):
    * updated copyright years for several sound related sources.
    * snd_mp3.c: removed useless rudimentary info checks.

2011-01-30 (SVN):
    * snd_mp3.c: sync with sox project CVS repo and add mp3_madseek()
      as a new private function. make S_MP3_CodecRewindStream() to use
      the new mp3_madseek() function.

2011-01-28 (SVN):
    * quakefs.c, FS_OpenFile: Removed code making it not to go beyond
      base if not a registered version. Removed override_pak argument.
      Adjusted all callers of the function accordingly.

2011-01-26 (SVN):
    * hexen2/keys.c (Key_Event): Removed code making the ctrl-alt-del
      combination to error out.

2011-01-23 (SVN):
    * added shell scripts for easy ripping of hexen2 cdaudio tracks

2011-01-18 (SVN):
    * snd_mix.c (SND_PaintChannelFrom16): multiplication might cause
      integer overflow as observed in quakespasm with the warpspasm
      mod depending on the volume level. so, moved the right shifting
      to left/right volume before the multiplication.

2011-01-15 (SVN):
    * cd_bsd.c, cd_linux.c: print strerror() information along with
      errno for more useful debug messages.

2011-01-12 (SVN):
    * Added Visual Studio 2010 project files for hexen2 and hexenworld.
      Added vsyasm note to COMPILE document for assembler usage under
      vs2010. Added vsyasm Visual Studio 2010 integration files under
      w32stuff/yasm/vs2010/.

2011-01-12 (SVN):
    * net_sys.h: revert previous commit undefining EWOULDBLOCK and
      ECONNREFUSED for windows.  define new macros NET_EWOULDBLOCK and
      NET_ECONNREFUSED for both unix and for windows and change the
      users accordingly.
    * net_udp.c, net_wins.c, net_wipx.c, net.c, hwterm.c, hwmquery.c:
      adjust for the new NET_EWOULDBLOCK and NET_ECONNREFUSED macros.

2011-01-12 (SVN):
    * net_sys.h: the new MS SDKs define EWOULDBLOCK and ECONNREFUSED,
      so we must undefine them before redefining.

2011-01-10 (SVN):
    * bgmusic.c: remove some unnecessary comments.
      (BGM_Play): call BGM_Stop() before anything else. don't do anything
      if there are no music handlers. in case of a midi file, if the midi
      drivers fails, try with the streamer too if it is available.

2011-01-10 (SVN):
    * bgm*: Updated copyright years.

2011-01-07 (SVN):
    * hwmaster/net.c (NET_GetPacket): Don't read the address of the peer
      until we know we've actually read a packet.

2011-01-05 (SVN):
    * Bumped gamecode version to 1.20. Updated documentation and scripts.

2011-01-05 (SVN):
    * Fixed trigger_crosslevel problem with spawnflag 8 thanks to Keith
      Rozett.  The problem was documented here:
      http://sourceforge.net/projects/uhexen2/forums/forum/425207/topic/3531685
      http://sourceforge.net/tracker/?func=detail&atid=701008&aid=2956045&group_id=124987
      Hitting the button in romeric2 spawns a Stone of Summoning in the
      treasure room of the Temple of Mars, however, since the crosslevel
      trigger using spawnflag 8 which is the same as SPAWNFLAG_ACTIVATED
      the spawner doesn't work when you enter romeric5. This is because
      trigger_crosslevel() calls InitTrigger() and InitTrigger() sets
      the inactive property to TRUE if it detects SPAWNFLAG_ACTIVATE. But
      that shouldn't happen since crosslevel triggers can't be deactivated
      anyway. So, the lazy solution here is set the the inactive property
      back to FALSE after calling InitTrigger() in trigger_crosslevel().

2011-01-04 (SVN):
    * mapfixes/tibet9.ent: Added an entity fix for tibet9.bsp of the
      expansion pack where objective #49 was never cleared. See the
      corresponding txt file for details. Analyzed and fixed by Thomas
      Freundt.
    * mapfixes/tibet2.ent: Added an entity fix for tibet2.bsp of the
      expansion pack where the trigger_objective for objective #26 used
      to have the NOT_HARD spawnflag not set. See the corresponding txt
      file for details. Analyzed and fixed by Thomas Freundt.
    * rpm spec file: install the newly added tibet2/tibet9 entity fixes.

2011-01-02 (SVN):
    * bgmusic.c (BGM_Play_noext): Made it to accept allowed_types as a
      new parameter. Adjusted the rest of the file.

2011-01-02 (SVN):
    * Made CDAudio_Play() to return success (0) or failure (-1) instead
      of void. In cd_bsd.c and cd_linux.c, added missing return in case
      of CDROMRESUME ioctl failure in CDAudio_Play().

2010-12-30 (SVN):
    * Minor housekeeping.

2010-12-29 (SVN):
    * d_part.c (D_DrawParticle): Fixed segmentation fault with Crusader's
      ice mace in C-only software renderer code seen on x86_64-linux.
      Crusader's ice particles hitting a wall gives us -2 as the color,
      causing a big boom. So, we use signed int as the color's type and
      clamp to 0-511 as needed.

2010-12-29 (SVN):
    * Updated ReleaseNotes file for 1.5.0 after today's changes.

2010-12-29 (SVN):
    * Re-diff'ed the StandaloneMods patch after the recent changes.

2010-12-29 (SVN):
    * rpm spec file: install entity fixes handling map quirks.
    * added copies of *.txt files along with the *.ent files explaining
      what they do.
    * mapfixes/romeric5.ent: Another entity fix for romeric5.bsp where the
      plaque erroneously reports the return destination as Hall of Heroes
      instead of Reflecting Pool.  From Thomas Freundt.

2010-12-29 (SVN):
    * model.c, gl_model.c (Mod_LoadEntities): Added support for loading
      external *.ent files instead of using the embedded data. This can
      be useful for handling several map quirks. The path_id of the ent
      file is checked and accepted only if it is coming from the same
      game directory as for the map itself.

2010-12-29 (SVN):
    * gl_model.c (Mod_LoadLighting): Free the hunk-allocated memory in
      case of broken or unsupported lit file versions. Check the path_id
      of the lit file and accept only if it is coming from the same game
      directory as for the map itself.

2010-12-29 (SVN):
    * model.h, gl_model.h (qmodel_t): Added a path_id member to store
      the information about the game directory from where the model is
      loaded.
    * model.c, gl_model.c (Mod_LoadModel): Send the path_id member of
      the model to FS_Load* function, instead of NULL.

2010-12-29 (SVN):
    * quakefs.c (searchpath_t):  Added new member `path_id', an unsigned
      int identifier assigned to the game directory. Remember that main
      <install_dir>/game1 and the unix <userdir>/game1 have the same id.
      The id starts as 1 for the first data1 directory. For every new
      directory, the value is the left-shifted version of the previous
      one.  Made FS_OpenFile() to accept a path_id pointer argument and
      storing the id in it if it isn't NULL. Made all FS_Load* functions
      to accept a path_id pointer argument similarly. Adjusted callers
      of FS_OpenFile() and FS_Load*() functions accordingly.

2010-12-26 (SVN):
    * timidity/common.c, instrum.c, readmidi.c: Return NULL instead of 0
      from functions returning a pointer.

2010-12-26 (SVN):
    * midi_mac.c (MIDI_Update): Instead of calling MIDI_Rewind, just call
      the relevant quicktime functions directly.

2010-12-26 (SVN):
    * vid_win.c: Changed type of pDIBBase to void* and adjusted the rest
      of the code accordingly. Fixes dereferencing type-punned pointer and
      strict-aliasing rules breakage warnings from certain gcc versions.

2010-12-26 (SVN):
    * w32stuff/codecs/dos/libmad.a: Recompiled by replacing calloc() and
      malloc() calls by Z_Malloc() and free() by Z_Free() and eliminating
      decoder.c content which aren't used.

2010-12-26 (SVN):
    * timidity/instrum_dls.c (load_instrument_dls): Revert previous commit
      and add a cleaner solution for the dls_ins uninitialized warning.
    * timidity/instrum_dls.c (load_instrument_dls): Check if cInstruments
      is 0 and return NULL in that case.  Avoids a gcc warning that dls_ins
      might be used uninitialized.

2010-12-26 (SVN):
    * snd_timidity.c: Added note that it is supposed to be compiled against
      the included timidity library.

2010-12-26 (SVN):
    * timidity.h (MidSongOptions): Added an uint8 width member just after
      channels. Not actually used by the library yet, but it will at least
      serve as a padding. Also added an uint16 padding member just after
      buffer_size.

2010-12-26 (SVN):
    * Fix timidity strict aliasing warnings from certain gcc versions:
    - playmidi.c (mid_song_read_wave): Changed to accept a sint8 pointer
      instead of void*. Removed the sint8** casts from the compute_data()
      calls.
    - timidity.h (mid_song_read_wave): Adjusted prototype.
    - snd_timidity.c (midi_buf_t): Changed midi_buffer type from unsigned
      char to sint8.

2010-12-25 (SVN):
    * Enabled wav and mp3 music streaming for dos builds. They are not
      that practical for dos, but not harmful, either.
    * Added a static dos version of libmad.a under w32stuff/codecs/dos.

2010-12-21 (SVN):
    * hexen2 & hw clients: Move libtimidity build rule to the new makefile
      fragment libs/timidity/_timi.mak. Include this fragment in makefiles
      using libtimidity.a.
    * libs/timidity/_timi.mak: New makefile fragment for libtimidity build
      rule, with debug option included.

2010-12-21 (SVN):
    * libs/timidity: Added debug build option to the makefile.
    * timidity/resample.c: Fix builds with -DTIMIDITY_DEBUG.

2010-12-21 (SVN):
    * libs/xdelta11: Remove an unnecessary entry from the makefile.
    * launcher: Fix gtk1 builds and enable debug builds against xdelta.
    * libs/xdelta11: Enable debug builds.

2010-12-21 (SVN):
    * timidity/dls1.h, dls2.h, instrum_dls.c, timidity_internal.h: Fix most
      of the gcc pedantic warnings. Make it compile using very old gcc.
    * timidity/options.h:  Use NULL as terminator in PATCH_EXT_LIST, not 0.

2010-12-20 (SVN):
    * timidity.c (mid_exit): Remove unnecessary NULL assignment to members
      when freeing the parents.
    * Make timidity to compile using cplusplus compilers: add missing type
      casts, avoid `new' as variable name, assign pointers to NULL instead
      of 0. Change type of next from void* to a pointer of structure's own
      type in PathList and MidEventList.

2010-12-20 (SVN):
    * Makefiles: dropped circular dependencies for (gl)hexen2 and (gl)hwcl,
      so that make doesn't complain.

2010-12-20 (SVN):
    * A lot of Makefile reorganization at all places.

2010-12-20 (SVN):
    * h2shared/snd_mp3.c: Use the enumerated value MAD_ERROR_NONE instead of
      0 when clearing error.
      (S_MP3_CodecReadStream): Add missing byte* cast to the buffer argument.

2010-12-20 (SVN):
    * h2shared/snd_wave.c (WAV_FindRIFFChunk): Constified the chunk argument.

2010-12-20 (SVN):
    * gtk launcher: fix the demo-only build.

2010-12-19 (SVN):
    * Bumped uhexen2 version to 1.5.0-rc1.  Bumped the hexen2 engine version
      to 1.23 and hexenworld engine version to 0.23.  Added ReleaseNotes-1.5.0
      as a new document.  Updated the rest of the documents for version number
      change.

2010-12-19 (SVN):
    * rpm spec file update:
    - Added new build options after the music playback changes.
    - Dropped SDL_mixer dependency which is not used anymore.
    - Added README.music among the installed documents.
    - Reworked the style we use for passing the build options to the makefiles.
    - Fixed icon path.

2010-12-19 (SVN):
    * snd_mem.c (S_LoadSound): Return NULL if zero samples are found, not
      false.

2010-12-19 (SVN):
    * Updated Visual Studio project files after the latest changes.

2010-12-19 (SVN):
    * Updated documentation after music changes.  Added README.music as a
      new document.

2010-12-19 (SVN):
    * External music files support using decoder libraries and the new
      raw samples interface:
    - bgmusic.c, bgmusic.h: New BGM interface for background music handling.
      Handles streaming music as raw sound samples and runs the midi driver.
      Source documented and is pretty much obvious, end user documents will
      follow.
    - cd_bsd.c, cd_linux.c, cd_win.c, cd_dos.c, cd_sdl.c: Moved bgmvolume
      boundary checking to bgmusic.c upon value changes.
    - gl_vidnt.c, gl_vidsdl.c, vid_mgl4.c, vid_sdl.c, vid_win.c: Include
      bgmusic.h. Replace MIDI_Pause() calls by BGM_Pause() and BGM_Resume().
    - cl_main.c, cl_parse.c, host.c, menu: Include bgmusic.h. Replace all
      MIDI_Play(), MIDI_Stop(), MIDI_Pause() calls by BGM_Play(), BGM_Stop(),
      BGM_Pause() and BGM_Resume().
    - host.c, cl_main.c: Remove MIDI_Update() calls from the main loop and
      replace by BGM_Update(). BGM_Update() is called before S_Update() and
      CDAudio_Update(). In Host_Init(), call BGM_Init() after other audio
      init calls. In Host_Shutdown(), call BGM_Shutdown() before all other
      audio shutdown calls.
    - snd_dma.c: Include snd_codec.h and bgmusic.h. Call S_CodecInit() from
      S_Init(). Call S_CodecShutdown() from S_Shutdown().
    - midi_sdl.c: Removed in favor of the new snd_timidity.c. Also removed
      the associated extra patches.
    - sdl_inc.h: Removed all SDL_mixer dependencies. SDL_mixer is so dead..
    - mididef.h: Removed prototypes for MIDI_Play, MIDI_Stop, MIDI_Pause,
      MIDI_Loop, MIDI_Update which are either not public anymore or removed.
      Removed macros which obsoleted now.
    - midi_mac.c, midi_win.c, midi_nul.c, mid2strm.c: Integration into the
      new BGM interface: Music loop is now checked by BGM by the new global
      bgmloop. Moved bgmvolume boundary checking to bgmusic.c upon value
      changes. Removed the midi_play, midi_stop, midi_pause and midi_loop
      console commands in favor of the newly added music, music_stop,
      music_loop, music_pause and music_resume commands from bgmusic.c.
      The MIDI_Play() procedures no longer mess with the file path, it is
      handled by bgm.  All midi drivers now export a midi_driver_t structure
      to BGM.  Functions adjusted for the interface changes.
    - midi_drv.h: New header for midi driver and bgm cooperation.
    - bgmusic.c, bgmusic.h: New sources for BGM interface.
    - bgmnull.c, bgmnull_midi.c, bgmnull_none.c: BGM source for cases where
      the engine is configured for no sound.
    - snd_codec.c, snd_codec.h: New public codec interface for streaming
      music as raw samples. Adapted from quake2 and ioquake3 with changes.
      Individual codecs are responsible for handling any necessary byte swap
      operations.
    - snd_codeci.h: New header for snd_codec internals.
    - snd_timidity.c, snd_timidity.h: New sources for midi playback through
      codec/raw samples interface. Useful when there is no driver for midi.
      Default for unix targets.
    - snd_wildmidi.c, snd_wildmidi.h: Alternative solution using WildMidi as
      opposed to timidity. Works OK, but not supported for now.
    - snd_wave.c, snd_wave.h: Codec for WAV format streaming music. Adapted
      from ioquake3.
    - snd_vorbis.c, snd_vorbis.h: Codec for Ogg/Vorbis format streaming music.
    - snd_mp3.c, snd_mp3.h: Codec for MP3 format streaming music using libmad.
      Adapted from the SoX project with changes.
    - Makefiles: Adjusted for the new sources. Added switches USE_CODEC_WAVE,
      USE_CODEC_MP3, USE_CODEC_VORBIS, USE_CODEC_TIMIDITY, USE_CODEC_WILDMIDI
      for enabling and disabling individual codecs. Wildmidi is disabled for
      all targets. For DOS, all codecs are disabled. For windows, Timidity is
      disabled because there is a working midi driver.

2010-12-18 (SVN):
    * reorganized scitech and dxsdk directories under w32stuff.
    * added libmad, libogg and libvorbis headers and import libraries
      for windows builds under w32stuff/codecs.

2010-12-18 (SVN):
    * midi_win.c:  Ignore midi hardware volume adjustemnt capability
      under windows vista/7, see this reference why:
      http://msdn.microsoft.com/en-us/library/dd798480(VS.85).aspx#1
      "This [midiOutSetVolume] function does not set the MIDI device
      volume when using a software synthesizer under Windows Vista
      or Windows 7, but instead alters the application-specific volume
      level in the system mixer. This means that if your application
      also outputs digital audio, the volume level of that audio will
      be reduced or increased by the same amount."

2010-12-18 (SVN):
    * sys_win.c: Detect windows vista/7 and store in global WinVista.
    * winquake.h: Add extern declaration for global boolean WinVista.

2010-12-18 (SVN):
    * snd_dma.c: Minor cleanups in volume value boundary checking.
    * Reorganized cdaudio volume handling for all drivers. If volume is 0,
      don't bother advancing and pause.

2010-12-17 (SVN):
    * small cleanups, mostly whitespace.

2010-12-17 (SVN):
    * scripts/makefile.inc: Set AR and RANLIB when necessary.

2010-12-17 (SVN):
    * Makefiles: Added LIBS_DIR as a new var defined as (UHEXEN2_TOP)/libs.

2010-12-17 (SVN):
    * libs/timidity/q_endian.h: Added from the engine directory.
      timidity_internal.h: Include q_endian.h and use the provided macros.
      instrum.c, output.h: Adjusted for q_endian.h.

2010-12-17 (SVN):
    * q_endian.h, q_endian.c: Remove PDP stuff which isn't supported.
    * gl_vidnt.c, gl_vidsdl.c, glquake.h: Likewise.

2010-12-17 (SVN):
    * libs/timidity/timidity.h.in: Deleted unused file.
    * libs/timidity/instrum_dls.c (LoadRIFF, AllocRegions, AllocInstruments,
      AllocWaveList): Replaced all malloc() usage by safe_malloc().
    * libs/timidity/timidity.c (mid_init): Added /usr/share/timidity and
      /etc/timidity to the timidity.cfg search paths.
    * libs/timidity/instrum.c,instrum_dls.c,instrum.h,timidity.c,timidity.h,
      common.c,common.h: Const correctness on char* pointers. Fixed "pointer
      targets in assignment differ in signedness" warnings in instrum_dls.c.
    * libs/timidity/timidity.c (mid_exit): Set freed pointers to NULL so that
      a reinitialization of the library doesn't crash.
    * libs/timidity/resample.c (pre_resample): Fixed a memory corruption bug.
      Fix from SDL_sound repository.
    * libs/timidity: Added a Makefile and some cross-build scripts. Changed
      DEBUG to TIMIDITY_DEBUG.
    * libs/timidity: Imported v0.1.0 sources from the libtimidity project.

2010-12-17 (SVN):
    * moved xdelta11 under the libs directory.

2010-12-17 (SVN):
    * added libs as a new directory for third party stuff.

2010-12-15 (SVN):
    * Renamed mstrconv.c to mid2strm.c and midi_win.h to mid2strm.h. Adjusted
      makefiles and visual studio project files.

2010-12-14 (SVN):
    * hexen2 and hexenworld Makefiles: Minor adjustments.

2010-12-13 (SVN):
    * hexen2 and hexenworld Makefiles: Reorganized.

    * quakefs.c: Always include errno.h, because the FS_* stdio functions
      play with errno.

    * snd_dma.c (S_FileExtension): Add new function which returns the given
      sound file's extension including the dot, or NULL.
    * q_sound.h (S_FileExtension): Add prototype for the new function.

2010-12-11 (SVN):
    * cross defs: Add ranlib among the target tools.

    * Preparing for streaming music through S_RawSamples, part #2:
    - q_sound.h: Add new macro MAX_RAW_SAMPLES, defined as 8192. Add externs
      for new globals s_rawsamples and s_rawend. Add prototype for the new
      S_RawSamples function.
    - snd_dma.c: Add new globals s_rawsamples and s_rawend. Reset s_rawend to 0
      in S_ClearBuffer. Add new function S_RawSamples, adapted from quake2 with
      its 8 bit stereo playback fixed.
    - snd_mix.c: In S_PaintChannels, check against s_rawend and copy from the
      streaming sound source if necessary.

    * snd_dma.c: Added missing cfgfile.h include.

    * set svn:keywords Id on the files that had changes since the cvs times.

2010-12-10 (SVN):
    * Preparing for streaming music through soon-to-be-added S_RawSamples:
    - snd_mix.c: snd_vol is static now. it is calculated in S_PaintChannels and
      only used in SND_PaintChannelFrom16. all its other uses are removed from
      Snd_WriteLinearBlastStereo16, S_TransferStereo16, S_TransferPaintBuffer.
      The way it way, the sound volume was applied to the whole final contents
      of the paint buffer, but with this new quake2+ way we can add raw samples
      to the paint buffer with its own volume, such as bgmvolume. However, this
      makes the snd_scaletable to be recalculated everytime the sfxvolume is,
      changed, therefore it is adjusted that way to incorporate sfxvolume.
    - snd_mixa.asm: snd_vol is no longer used in Snd_WriteLinearBlastStereo16,
      therefore no need to push, play with and pop the esi register.
    - snd_dma.c: Added old_volume to detect sfxvolume changes. Made S_Update to
      compare it to sfxvolume.value and call SND_InitScaletable() if it changed.
      During init phase in S_Init, early-read volume and bgmvolume from config
      and also check for "+" overrides to them from the command line, then lock
      them until Host_Init is done. This way, the volume settings will be in
      effect without a glitch when the very first sound is played, and one can
      happily do "glhexen2 +volume <n>", too, if he wants.

    * snd_mix.c: Increased PAINTBUFFER_SIZE from 512 to 2048.

    * quakefs.c, quakefs.h: Added new structure fshandle_t. Added new procedures
      FS_fread, FS_fseek, FS_ftell, FS_rewind, FS_feof, FS_ferror and FS_fclose.
      The new FS_*() stdio replacements are necessary if one is to perform non-
      sequential reads on files reopened on pak files because bookkeeping about
      file start/end positions is needed. Allocating and filling in the fshandle_t
      structure is the users' responsibility when the file is initially opened.

    * cfgfile.c (CFG_ReadCvarOverrides): Added new helper procedure to read the
      "+" command line override values of cvars in a given list. it doesn't care
      about the config file. to be called after CFG_ReadCvars and before locking
      the cvars. this may come in handy when we early-read cvars and lock them
      where stuffcmds cannot change them.
      cfgfile.h (CFG_ReadCvarOverrides): Added prototype.

    * q_sound.h: add WAV_FORMAT_PCM as a new macro, defined as 1.
      snd_mem.h (S_LoadSound): use WAV_FORMAT_PCM. reject wav files which are
      neither 8 nor 16 bit. reject wav files which have zero samples. report
      the wav file name with the error messages so that they mean something.

2010-11-27 (CVS):
    * Added the updated egypt5.bsp entities fixing the Dark Pharaoh's Scepter
      appearing a little stuck in the wall. from Thomas Freundt.

2010-11-25 (CVS):
    * Updated the release notes file for 1.4.4.
    * Updated the beta version number and date.

2010-11-23 (CVS):
    * Updated the README file for the -alsadev command line argument.

2010-11-21 (CVS):
    * Makefile: Add -lm to the common unix LDFLAGS. When compiling with alsa
      option, add -ldl to the LDFLAGS.

2010-11-17 (CVS):
    * snd_dma.c (S_StartSound): Allow initially silent channels to be active
      because the player might teleport to them. From quakeforge/darkplaces.
      Fixes the lost teleport sounds when playing on a h2ded server, such as
      in demo3 level when going through the mill portal, or in village1, etc.

2010-11-14 (CVS):
    * Host_Init: Set host_initialized as true before executing hexen.rc.
    * Host_Init: In case one of the command's execution fails and causes a
      longjmp() call such as by way of a Host_Error(), we would segfault
      because we haven't saved the stack context/environment. This was the
      case with a command line like "glh2 +connect localhost" without any
      servers running. So, added a setjmp() call before Cbuf_Execute().
    * Updated the release notes file for 1.4.4.
    * Updated the beta version number and date.

2010-11-13 (CVS):
    * snd_alsa.c: Set the buffer size manually before setting the period size.
      Works around non-power of two buffer size problems on some systems.
      (adapted from darkplaces.)
    * snd_alsa.c: Print the device name upon snd_pcm_open failures.
    * alsa_funcs.h: Added more functions in commented out form for future use.
    * utils/lmp2pcx: Tweaked and documented palette file usage, allowed the
      embedded palette again.

2010-11-07 (CVS):
    * Updated README, BUGS and COMPILE documents.

2010-11-05 (CVS):
    * cl_parse.c (CL_ParseServerMessage): pause/resume midi (background music)
      along with cdaudio upon svc_setpause.
    * zone.c: Increased default zone memory size to 384 KB. Increased maximum
      zone memory size to 2 MB.
    * cd_win.c: Fixed MCI errors when resuming the last track of a cdrom.
    * Updated the release notes file for 1.4.4.

2010-10-30 (CVS):
    * h2config.h: Renamed from h2option.h and tidied a bit.
    * Killed the DO_MESH_CACHE compile time option.
    * Text and HUD scaling patch from Steven:
    - menu.c: move the menu item from opengl fetures menu to the main options
      as a slider.
    - gl_vidsdl.c, gl_vidnt.c: adjust VID_ChangeConsize(), VID_ReportConsize()
      and VID_ConWidth() accordingly.
    - vid.h: adjust the VID_ChangeConsize() and VID_ReportConsize() prototypes
      accordingly.

2010-10-28 (CVS):
    * Updated the release notes file for 1.4.4.
    * menu.c (M_Options_Draw): Use enumerated values for the y offset, instead
      of absolute numbers for better maintainability.

2010-10-27 (CVS):
    * jsh2color (Makefile, MSVC project files): Changed stack reserve size to
      4 MB for windows builds.

2010-10-24 (CVS):
    * jsh2color/ltface.c (SINGLEMAP): TEX_SPECIAL cases don't fit into 18*18
      lightmap size and the code still wants to play them (see TestLightFace()
      calling CalcFaceExtents() with a no-failure flag), so I bumped the
      SINGLEMAP definition from 18*18*4 to 64*64*4. Otherwise the surf pointer
      goes out of bounds in CalcPoints() and also probably in SingleLightFace(),
      SkyLightFace() and TestSingleLightFace() and overwrites other data
      resulting in stack corruption. Added bound checks and Error() statements
      in the relevant functions.  This is surely a workaround, better solutions
      are welcome.
    * cmd.c (Cmd_StuffCmds_f): Fix so that arguments to commands can have '-'
      or '+' within their names.  A command like "hexen2 +map mymap-01" works
      properly now.
    * Updated the release notes file for 1.4.4.

2010-10-11 (CVS):
    * pr_exec.c: Increased MAX_STACK_DEPTH from 32 to 64.  Prevents a rare
      stack overflow error when battling bosses with assassin class, using
      the tome of power and launching at the enemy A LOT of projectiles.
      The problem was reported and the fix was tested by Ruber Eaglenest.

2010-10-05 (CVS):
    * Updated README and Features files.

2010-10-04 (CVS):
    * replace several occasions of Z_Malloc() + strcpy() by Z_Strdup().

2010-08-31 (CVS):
    * hexen2, hewenworld, utils: add printf format attribute to q_vsnprintf()
    * hexen2/host_cmd.c (Host_Say_f, Host_Tell_f): Remove trailing quote
      only if it is present. Adjustments, mostly inspired from the darkplaces
      engine.
    * hexenworld/sv_user.c (SV_Say): Remove trailing quote only if present.

2010-08-28 (CVS): Windows mouse fixes from Steven:
    * in_win.c (IN_RestoreMouse): New procedure, calling IN_ActivateMouse()
      and IN_HideMouse() only for direct input driver.
      (IN_ActivateMouse): Check for _enable_mouse cvar before activating,
      also hide the cursor.
    * vid_win.c (AppActivate): Call the new IN_RestoreMouse() in windowed
      mode instead of IN_ActivateMouse().
    * vid_mgl4.c (AppActivate): Same as in vid_win.c.
    * gl_vidnt.c (AppActivate): Same as in vid_win.c. Deal with the mouse
      after finishing with the window operations.
    * input.h (IN_RestoreMouse): Add prototype.

2010-08-24 (CVS):
    * Bumped the version numbers for 1.4.4-pre10 / Aug. 23, 2010.

2010-08-23 (CVS):
    * updated the MS Visual Studio project files after the software renderer
      updates.
    * cd_sdl.c (export_cddev_arg): New helper function, a bad and ugly hack
      to work around SDL's cdrom device detection when it doesn't work on
      unix-like platforms and doesn't recognize the user's choice of device.
      Called it from CDAudio_Init() before initializing SDL_cdrom.
    * cd_sdl.c: Updated -cddev argument parsing based on the code we added
      to quakespasm.
    * cd_win.c: Added -cddev as a new command line option for choosing the
      cdrom drive to use. Syntax: -cddev <DriveLetter>
    * vid_mgl4.c: Copied from vid_win.c. SciTech MGL is for Win32-x86 only.
    * vid_win.c: Added a new version of windows software video driver based
      on Quake2 and an initial work by MH with many modifications to make
      it work in uhexen2. Uses only DIB sections/GDI for now. Compiles and
      works for both win32 (both x86-asm and C-only) and for win64 (C-only).
      - TODO: Add back more low resolutions.
      - TODO: Add DDRAW (see Quake2)
      - TODO: Better video mode management? Early config reading?
    * Makefiles: Added USE_MGL a new variable for windows targets, adjusted
      for mgl and dib/gdi video drivers.
    * build_cross_win64.sh: Software renderer works for Win64 now. Adjusted
      the cross-compilation scripts.
    * TODO file: Updated.

2010-08-22 (CVS):
    * r_main.c (R_EdgeDrawing): Apparently the x86 assembler code has magic
      to look for the array vars ledges and lsurfs on the stack, therefore
      they have to stay as local to R_EdgeDrawing() when compiling with x86
      asm enabled: added proper id386 ifdefs for them, which fixes the win32
      version and makes it work again. For normal cases, however, they still
      stay static.

2010-08-09 (CVS):
    * net_sys.h, net_def.h: struct sockaddr has unsigned char sa_len as the
      first member in BSD variants and the family member is also an unsigned
      char instead of unsigned short. So, we define HAVE_SA_LEN for those BSD
      variants and check for the offsetof for the sa_family member and also
      change the struct qsockaddr to mirror that. This would matter in places
      such as UDP_AddrCompare():  if one of the two addresses being compared
      is really a sockaddr that was only cast to qsockaddr and the other is a
      real qsockaddr, the qsa_family values are different because in the fake
      qsockaddr, we are reading the sa_len field and not the sa_family field.

2010-06-23 (CVS):
    * updated the directx headers under dxsdk_new from mingw-w64 svn repo rev.
      2611.

2010-06-04 (CVS):
    * net_defs.h (net_driver_t): Removed the controlSock member. It is not used
      for any purpose in either of Loop, Datagram or Serial drivers. It used to
      be assigned the value returned by the Init() procedure of the relevant
      driver which is either 0 for success or -1 for failure, therefore there is
      no purpose to it at all.
      net_main.c (NET_Init): Removed the controlSocket var and adjusted for the
      net_driver_t change.
    * net_dgrm.c (Datagram_Init): Initialize banAddr and banMask before all else,
      just in case.

2010-06-03 (CVS):
    * removed references of NO_UNIT_AT_A_TIME from the makefiles. not needed
      any longer.

2010-06-01 (CVS):
    * gl_model.c (Mod_LoadTextures): Don't use "min" or "max" as a var name.
      net_dgrm.c (Net_Test_f): Likewise.
      pr_cmds.c (SetMinMaxSize, PF_setsize): Likewise.
      pr_exec.c (PR_Profile_f): Likewise.

2010-05-08 (CVS, 1.4.4-pre9):
    * bumped the gamecode version to 1.19b to indicate the newly added
      mapfixes section.
    * minor update to the mkrelease script.
    * added _NO_PREFIX to NASMFLAGS for win64. although we don't have any
      x86_64 asm today, this is to make me remember the symbol decoration
      convention for M$ x64.
    * updated the beta version date to 2010-05-08.
    * updated version numbers in the launcher README file.
    * HoT version 1.4.4-pre9 (2010-05-08.)

2010-05-07 (CVS):
    * added visual studio project files for pakx and paklist.

2010-05-03 (CVS):
    * Some Makefile tidy-up.
    * updated the list of supported compilers.

2010-04-24 (CVS):
    * removed the old OSX icons from the XCode project directory.
    * made the m_state enum public through menu.h. adjusted its users
      accordingly.
    * bumped the beta date to 2010-04-24

2010-03-29 (CVS):
    * net_sys.h (windows): no need to include windows.h, because it is
      already included by winsock[2].h. do not force winsock2 for win64
      if not specified on the compiler command line.

2010-03-23 (CVS):
    * hexen2, cl_tent.c (CL_UpdateTEnts): fixed bad loop counter usage.
    * increased the maximum number of video mode slots to 128 for opengl
      (wgl and sdl) and to 64 for software (mgl and sdl) drivers.
    * bumped the beta date to 2010-03-23

2010-03-09 (CVS):
    * zone.c, zone.h: added Hunk_Strdup() as a new utility function.
    * zone.c (Z_Realloc): Fixed the old_size value.
    * made sv.model_precache, sv.sound_precache and sv.lightstyles pointers to
      strings again. adjusted PR_SetEngineString() to work with this change.
      in sv_main.c, assigned a static array of zeroes to sv.model_precache[0]
      and sv.sound_precache[0], so that it would work with the mentioned change.
      adjusted pr_cmds.c to use the engine's original shortcuts so that it does
      not go through the whole array to not find a non-existant string.
    * updated the beta version date to 2010-03-09.

2010-03-07 (CVS):
    * hexen2, net_wins.c: changed return type of BlockingHook to INT_PTR. it
      is required to be FARPROC, which is an int in win32, but an INT_PTR in
      win64.

2010-03-01 (CVS):
    * hexenworld/Client/cl_parse.c: upon svc_cdtrack, start cd music  only if
      bgmtype is set as "cd", otherwise stop cdaudio. (bug reported by RaVeN.)
      moved the svc_midi_name case just below the svc_cdtrack case for better
      readability.
    * hexen2/cl_parse.c: reorganized the code for svc_cdtrack for some better
      readability.
    * updated release notes file for 1.4.4 (2010-03-01.)
    * updated the beta version date to 2010-03-01.

2010-02-23 (CVS):
    * utils: added pak as a new group. added pakx as a tiny pak extraction tool.
    * utils: stripped off extra line feed from some error messages.
    * utils: reorganized the pak tools. added paklist as a tiny pak information
      tool.
    * added the updated romeric5.bsp entities fixing a buggy cross-level prize.
      from Keith Rozett.

2010-02-22 (CVS):
    * hexenworld: moved Huffman initialization to Host_Init().
    * hexenworld, huffman: added a compile-time macro USE_HUNKMEM, on by default.
      if we are compiling for DOS, force-enable USE_HUNKMEM.
    * utils: added null checks for the agruments of CreatePath and Q_CopyFile.
    * utils, common: added back SafeMalloc.
    * utils: fixed genmodel compilation after reintroduction of SafeMalloc.
    * utils, common: made Q_filelength to return long instead of int.
    * utils, util_io: replaced Q_CopyFile from the game engine's unix version.
      added Q_CopyFromFile which reads from an open FILE*.
    * utils, dcc: fixed compiler warning after Q_filelength return type change.

2010-02-03 (CVS):
    * dxsdk_new: updated dinput.h and dsound.h from the mingw-w64 svn repo (r1833,
      2010-02-03.)

2010-01-27 (CVS):
    * cd_sdl.c: for SDL-1.3, do not compile actual code but include cd_null.c,
      instead.
    * SDL-1.3, at least as it is today, doesn't have the Uint32 colorkey and
      Uint8 alpha members in SDL_PixelFormat which is a member of SDL_VideoInfo
      structure. removed their reference from our video code.
    * sdl_inc.h: if we are compiling against SDL-1.3.x, then require version 1.3.0 or
      newer at runtime, too. SDL-1.3 is still in active development and its API hasn't
      solidified yet.  As of this writing, SDL-1.2 and 1.3 has some api differences:
      see, for example, SDL_GetMouseState() which is not binary compatible between
      SDL-1.2/1.3: http://forums.libsdl.org/viewtopic.php?t=5458.  For now, I am
      limiting our own requirement to the compiled version, the SDL_NEW_VERSION_REJECT
      macro added newly for this purpose.
    * sys_unix.c: if we are compiling against SDL-1.2.x, reject SDL libraries of version
      1.3 or newer (use the new SDL_NEW_VERSION_REJECT macro) at runtime.
    * sdl_inc.h: if we are compiling against SDL-1.3, require SDL_mixer version
      1.2.11 or newer. shuffled the ifdefs around for arguably better readability.

2010-01-26 (CVS):
    * copied over svgalib support of hexen2 to hexenworld client.
    * updated release notes for 1.4.4 (2010-01-26.)

2010-01-24 (CVS):
    * made more of error return checks, namely return values from stat(),
      fstat(), open() and rename(), by the book by checking for equality
      to -1, not for being negative, this time in xdelta and launcher.

2010-01-23 (CVS):
    * made the return code check for SDL_WM_ToggleFullScreen() by the book
      by checking for quality to 1, not for being positive.
    * made more of error return checks, namely return values from open(),
      mprotect(), SDL_Init(), SDL_InitSubSystem(), SDL_GL_LoadLibrary(),
      SDL_OpenAudio() and SDL_CD*(), by the book by checking for equality
      to -1, not for being negative.
    * updated beta version date stamp to 2010-01-23.

2010-01-18 (CVS):
    * increased the maximum number of video mode slots to 60 for opengl
      (wgl and sdl) and to 40 for software (mgl and sdl) drivers.
    * updated beta version date stamp to 2010-01-18.

2010-01-11 (CVS):
    * pre and postfix gcc attribute specifiers by '__'
    * updated beta version date stamp to 2010-01-11.

2010-01-06 (CVS):
    * Latest Xcode project files (Mac OS X) from Levent (2010-01-06.)

2009-12-30 (CVS):
    * MacOSX fixes from Levent (2009-12-30.)

2009-12-27 (CVS, 1.4.4-pre8):
    * HoT version 1.4.4-pre8 (2009-12-27.)

2009-10-19 (CVS):
    * R_EdgeDrawing() is called twice by R_RenderView_(), first with Translucent
      as false where the three pointers r_edges, surfaces and surf_max are set
      to the automatic array, then with Translucent as true where R_EdgeDrawing()
      does not actually set the pointers and the code assumed them to be still
      valid, but they pointed to variables which went out of scope by that time.
      the result used to be seen on the demo3 map as disappearing alias models
      depending on the view angle when compiled for x86_64 without optimisation.
      moving the two array variables ledges and lsurfs to the top of the source
      as static variables solves the problem. thusly fixed in r_main.c. updated
      the list of known bugs.  it is amazing how this thing worked correctly for
      all these years.

2009-10-15 (CVS):
    * updated SDLMain.m for Mac OS X, again, to the latest from SDL-1.2 branch.

2009-10-13 (CVS):
    * updated SDLMain.m for Mac OS X to the latest from SDL-1.2 branch.
    * updated msinttypes headers to r26 from googlecode.

2009-10-04 (CVS):
    * added win64 cross-compilation notes to the makefiles. adjusted makefile.inc so
      that cross-compilation to win64 from within msys would be possible. added note
      to the hexen2 and hexenworld client makefiles that SDL dropped support for cd
      audio in version 1.3.0 and later. updated a note in svgalib client's makefile.

2009-09-21 (CVS):
    * sv_effect.c: fixed strict aliasing issues in reading chunk type and count from
      saved games.
    * minor update to Mac OS X Cocoa error message box code.
    * updated SDLMain.h for Mac OS X to the latest from SDL-1.2 branch.
    * updated msinttypes headers to r25 from googlecode.

2009-08-02 (CVS, 1.4.4-pre7 ):
    * HoT version 1.4.4-pre7 (2009-08-02.)

2009-07-16 (CVS):
    * scitech mgraph headers: tweak the __cdecl defnition for gcc case.
    * scitech mgraph headers: rename the _HUGE define to _MGL_HUGE to avoid
      conflicts with an MSVC global.

2009-07-14 (CVS):
    * hexen2/hwcl, sys_win.c: fixed compilation with c++ compilers, ie. g++.

2009-07-08 (CVS):
    * snd_alsa.c, zone.c: in c99 mode, use generic versions of the variadic macros
      instead of gcc-specific ones.
    * xdelta: removed the extra semicolon after the function edsio_edsio_init().

2009-07-06 (CVS):
    * launcher (gtk): fixed the GtkSpinButton runtime warnings about setting an
      adjustment with non-zero page size being deprecated with new GTK+ versions:
      just set the page_size values to 0 in gtk_adjustment_new().

2009-06-22 (CVS):
    * reformatted hcc and dhcc output giving 10 digits to the size fields.
    * cl_demo.c (h2/h2w): several small cleanups.
    * console.h, menu.h, r_local.h: sync'ed h2 and h2w versions.
    * view.c, gl_screen.c: don't draw the crosshair during demo playback.
    * remove the extra copies of fxgamma stuff which are not needed nowadays.
      move 3dfxgamma directory to 00_unused when making a release tarball.

2009-06-14 (CVS):
    * midi_sdl.c: reduced the audio buffers param from 4096 to 512. removed some
      of the unnecessary debug messages. removed unnecessary midi_endmusicfnc
      function pointer. reduced the fade-in time from 2000 to 500 milliseconds.
      adjusted MIDI_Loop() so that it calls MIDI_EndMusicFinished() only when
      necessary. made MIDI_EndMusicFinished() to set bPlaying to false when not
      looping. re-diff'ed the external music file support and midi with sdlsnd
      patches after these changes.

2009-06-10 (CVS):
    * compiler.h:  added a __no_optimize macro wrapping around the new optimize
      attribute of gcc-4.4.

2009-05-26 (CVS):
    * updated msinttypes headers to r24

2009-05-12 (CVS):
    * utils: added proper TLS support for vis with gcc >= 4.3

2009-05-08 (CVS):
    * added nasm.rules file (adapted from the vbam project) as an alternative custom
      build tool for visual studio.
    * updated the compilation instructions with relation to using nasm from within
      visual studio.

2009-05-05 (CVS):
    * utils: fixed strict aliasing violation warnings from g++-4.x series compilers.
      a few comparison between signed and unsigned warnings are also fixed.
    * quakefs.c (FS_Init): do not attempt to create the userdir for base folders if
      they are the same as the base game directories.
    * quakefs.c (FS_Init): removed a redundant strlcpy call.
    * updated the StandaloneMods patch after today's changes.

2009-04-30 (CVS, 1.4.4-pre6):
    * net: multiple fixes and cleanups after the recent changes.
    * updated 1.4.4 release notes.
    * changed beta version date to 2009-04-30.

2009-04-29 (CVS):
    * hexenworld: use the newly added unix/windows socket api compatibility macros.
      made net_socket private to net.c. added a new NET_ procedure, NET_CheckSocket(),
      returning the result from the select() call on the net_socket, and removed the
      select() calls from sys_* files.  while we were there, changed NET_GetPacket to
      return int instead of qboolean.
    * added winsock error codes as a header file, with static __WSAE_StrError()
      function returning the proper string.
    * net_sys.h: added a socketerror macro to receive error strings either by
      strerror() or by newly added __WSAE_StrError() of wsaerror.h.
    * wsaerror.h: minor update.
    * used the newly added wsaerror.h in hexenworld engine and utilities.
    * used the newly added wsaerror.h in hexen2 engine (net_wins.c, net_wipx.c).
      also added some strerror debug output to net_udp.c .
    * hexen2 net_udp.c, net_wins.c, net_wipx.c: fixed compilation after the previous
      commit.
    * bumped the version to 1.4.4-pre6/2009-04-29.

2009-04-28 (CVS):
    * added new definitions sys_socket_t, INVALID_SOCKET and SOCKET_ERROR to net_sys.h
      in order to provide compatibility between unix/windows socket api usage.
    * added dos_sock.h compatibility header, made net_sys.h to provide some dos
      data, too.
    * hexen2: use the newly added unix/windows socket api compatibility macros:
      using just an int as the socketfd wasn't a problem until we added win64
      support: the windows SOCKET type is not only unsigned but may actually be
      wider (uintptr_t which is 8 bytes on win64). hexenworld will have similar
      changes, soon.
      as a side effect, I also separated the functions and data exported through
      net.h into two: net.h now holds all public exports and the new net_defs.h
      holds the exports only required by the net layer. besides the net_* files,
      host_cmd.c and sv_main.c are the only reasonable foreign importers of
      net_defs.h: they require accessing the qsocket_s structure members. The
      only one that doesn't fit is menu.c needing some net exports, but it may
      be properly handled, later on.
    * use the new definitions sys_socket_t, INVALID_SOCKET and SOCKET_ERROR in the
      hexenworld utilities.
    * bumped hexenworld utilities' versions, hwmquery to 0.2.2, hwrcon and hwterm
      to 1.2.6.

2009-04-25 (CVS):
    * constified host_parms->basedir and host_parms->userdir. fixed an oversight
      where when "-basedir" is specified on the command line, host_parms->userdir
      used to be left unmodified if the user diectories are not enabled.
    * re-diff'ed the standalone mods patch.

2009-04-21 (CVS):
    * minor cleanup in cross compilation scripts.

2009-04-11 (CVS):
    * hexen2/dos/net_ser.c, hexenworld/Server/pr_cmds.c: fixed a few more printf
      calls which were passed a string as the format string.

2009-04-07 (CVS):
    * synchronized the directx headers with the mingw-w64 svn repository
      revision 740.

2009-03-26/27 (CVS):
    * deleted all visual studio *.sln and *.vcproj files, added them in zipped form
      for both visual studio 2005 and for 2008, instead. users only need to unzip the
      necessary version and all will work.
    * added a local copy of yasm.rules file to our w32stuff directory.

2009-03-04 (CVS):
    * hexen2 and hwcl msvc project files: fixed resource compiler preprocessor
      definitions for the software renderer.

2009-02-20/24 (CVS):
    * added visual studio project files for the utilities. all uhexen2 executables
      can now be compiled by msvc.
    * util_io.c: avoid including io_msvc.h before conio.h (include order)
    * jscolor.c: avoid including io_msvc.h before conio.h (include order)
    * compiler.h: added empty definition of __extension__ for gcc versions < 2.8.0
      and for compilers other than gcc.
    * ddraw.h: synchronized with the mingw-w64 subversion repository:
      Rev. 628: Add to some unnamed unions/structure the __extension__
      extension so that people using -std=gnu89 get happy, too.
      Rev. 634: Add definition of DUMMYUNIONNAME1.
    * dinput.h: synchronized with the mingw-w64 subversion repository:
      Rev. 638: Add additional keyboard scan codes (DIK_...) provided by
      http://www.alrj.org/docs/hardware/keycode.txt

2009-02-02/2009-02-03 (CVS, 1.4.4-pre5):
    * HoT version 1.4.4-pre5 (2009-02-02.)

2009-01-30/2009-02-02 (CVS):
    * more updates to the compilation instructions (2009-01-30.)
    * utils, io: use windows api for the findfirst & co.
    * hwmquery.vcproj: no need for unicode character set
    * a bunch of directx header fixes from the wine git repository:
    * ddraw.h, dinput.h: Some DirectX headers are supposed to define COM_NO_WINDOWS_H
      (wine git 6688acce7dbb00ceea4e755fe0f4a771a5520c24)
    * ddraw.h: Fix the name of DDSPD_IUNKNOWNPOINTER
      (wine git 47b6392b44dca86b8c61daa902bd35e73cca5e2f)
    * ddraw.h: Define DD_OK to S_OK instead of 0. Add define for DD_FALSE.
      (wine git fd4a8941032458a9b2870d0068e6fb020a9c9e0c)
    * ddraw.h: Fix a IDirectDrawSurface4 method (EnumAttachedSurfaces) prototype.
      (wine git 6bdaaa74f3310da48790c3122786aa764f4e221a)
    * ddraw.h: Fix the EnumOverlayZOrders prototype.
      (wine git 9a080691c6904c0da762690312cc86ee96326dbc)
    * ddraw.h: Fix the IDirectDraw4_RestoreAllSurfaces macro.
      (wine git c2e5752ac62e646bcb46c0741cd0083179e3c9ed)
    * dinput.h: Fix IDirectInputEffect_GetEffectStatus macro definitions.
      (wine git 2a0e659335ecf1d8967c75c9efe164c2d9d0214c)
    * dsound.h: Update prototypes for IDirectSoundBuffer::Lock/Unlock.
      (wine git 9b4f99782ef27239927a0c5d0ae8e788df17cb76)
    * dxsdk_new, dinput.h:  reverted the wine ifdef removal change
      (wine git bf08b35c0730636ab3dbc4dee0a9f6fa28113b7a). also added
      a dinput8 ifdef to DIDEVICEOBJECTDATA for the uAppData member.
      these directx headers from wine seem to be more tuned to wine
      internal use than for being general purpose, therefore, more
      work might be needed in the dxsdk_new directory, or we might
      just use the headers from the directx sdk itself.
    * reverted my old change which removed directx3 compatibility
      version requirement for win64: directinput code still needs
      old versions. besides the directx headers from wine (the ones
      in our dxsdk_new directory) seem to be more tuned to wine
      internal use than for being general purpose, therefore, more
      work might be needed in the dxsdk_new directory and/or in our
      directx code for the very new versions.

2009-01-22/29 (CVS):
    * added Visual Studio 2008 project files for hexen2, glhexen2, h2ded, hwsv,
      hwmaster, hwcl, glhwcl, and hw_utils (hwmquery, hwrcon, hwterm).  project
      files for the utils will be added shortly.
    * docs: updated windows compilation instructions.
    * hexenworld net: NET_GetPacket can really hit WSAECONNRESET, so made it
      non-fatal.
    * keys.c, sys.h, sys_win.c, sys_unix.c, sys_dos.c: moved the windows specific
      clipboard handling code from keys.c into the new Sys_GetClipboardData() in
      sys_win.c.
    * keys.c, clipboard pasting: no need to increment the pointer when terminating
      it. moved K_INS insert mode handling down in order to make SHIFT-INS paste
      code to work.
    * sys_win.c: limited clipbord text cap to MAXCMDLINE (256).
    * midi_mac.c, midi_win.c: minor tidy up.
    * compiler.h: moved offsetof definition to q_stdinc.h
    * compiler.h: MSVC recognizes __inline, not inline.
    * keys.c, msg_io.c, sizebuf.c: minor MSVC warning fixes.
    * w32stuff: added io_msvc.h as a workaround for MSVC underscore prefixed
      io.h function names, because new MSVC versions spit deprecation warnings
      for the ones that aren't prefixed. make sure to include it AFTER io.h,
      conio.h and direct.h.
    * common.h: added pragmas in order to disable some of the MSVC silent
      conversion warnings (4244, 4305 and 4267).
    * huffman.c: disabled the MSVC 4305 (double to float possible truncation)
      warnings.
    * winquake.h, vid_win.c: moved the MSVC warning 4229 pragma from winquake.h
      to vid_win.c which is where it is intended for.
    * pr_exec.c: fixed MSVC x64 DEBUG builds (TIMESNAP asm code.)
    * sys_win.c, sys_main.c, genmodel.c, jscolor.c: switched to _prefixed io and
      conio functions where it is windows-only code
    * updated io_msvc.h wrappers to support more compilers in the future (watcom
      and lcc).
    * debuglog.c, msg_io.c, sizebuf.c: minor clean-ups
    * hwmaster, master.c: minor warning fix.
    * hwmquery.c: fixed hwmquery compilation using MSVC (ssize_t type definition).
    * q_stdinc.h: added ssize_t (lowercase) type definition for MSVC.
    * updated beta version and date (2009-01-29, 1.4.4-pre5)

2009-01-20 (CVS):
    * simply error out if mission pack support is requested and it isn't found.
      ignoring it and running the ordinary game is confusing. don't silently
      ignore the request and error out if we aren't playing the registered game,
      too.

2009-01-19 (CVS):
    * documented some network related command line options.

2009-01-18 (CVS):
    * pr_exec.c: the profile command can only be run when the server is active.
    * gl_rmisc.c: the envmap command can only be run when there's something to
      render, ie. when connected to a server. besides, the refdef must be restored
      when it is completed.

2009-01-10/15 (CVS):
    * cl_effect.c, sv_effect.c: indentation and whitespace cleanup.
      cl_effect.h: removed. moved the types and definitions to the
      new effects.h header and the function prototypes to server.h
      and client.h.
    * updated beta version and date (2009-01-15, 1.4.4-pre5)

2009-01-07/08 (CVS):
    * screen.c, gl_screen.c: added a fixme note about the "load failed bug".
    * hexenworld console: con_chat has never been used. removed it.
    * hexen2 console: the drawinput argument to Con_DrawConsole() has never been
      used (always true). removed it.
    * hexenworld console: allocate the console structure on the hunk.
    * hexenworld console: fixed and tidied up the colored printing. the additional
      text_attr member in the console stucture wasn't used correctly and it wasn't
      necessary, because the hexen2 solution is better: using short type for the
      text buffer instead of char and using 256 as the colored text mask instead of
      128. the ormask is fixed similarly. did some whitespace/indentation cleanup,
      too.
    * hexen2 console: started synchronizing the hexen2 and hexenworld console
      code. as a side effect, the weird 'mirrored prints' at high resolutions
      such as 1280x960 disappeared. more might follow.
    * renamed the socket argument of the net functions. no code change, just cosmetics.

2009-01-04 (CVS, 1.4.4-pre4):
    * gl_vidnt.c: we don't free and reload the opengl dll during resolution
      changing anymore. a combination of Vista and ATI crashes with it. the
      dll already loaded at program init is still valid, we aren't changing
      the opengl library, so no problems without it.
    * updated release notes for 1.4.4 (2009-01-04, 1.4.4-pre4)
    * updated the list of known bugs (2009-01-04.)
    * bumped version to 1.4.4-pre4 (Jan. 04, 2009.)

2009-01-03 (CVS):
    * net_dgrm.c: fixed a Con_Printf call that is passed a string as the format string.
    * net_udp.c, net_wins.c: cast h_addr_list[0] to in_addr_t*, instead of int*.
    * net_dgrm.c: no need for  Con_DPrintf for forged packet prints, they are already
      in debug builds only.
    * net_udp.c, net_wins.c, net_mp.c, net_wipx.c: init cleanup #1: automatic
      changing of the "hostname" cvar according to internet hostname has been
      removed. servers will be called "UNNAMED" if they don't set it.  did a
      little formatting and whitespace tidy-up, too, while I was there.
    * net_udp.c, net_wins.c, net_mp.c, net_wipx.c: init cleanup #2: gethostname
      and/or gethostbyname failures needn't fail UDP_Init outright. in case they
      fail, set myAddr to INADDR_LOOPBACK.

2009-01-02 (CVS):
    * Mac OS X: updated SDLMain.m from SDL subversion repository (rev 3579 from
      the SDL-1.2 branch.)
    * added NDEBUG among the CFLAGS when not building debug binaries. (I just
      have to be careful with assert() now.)
    * windows midi: fixed leftovers from the recent return code cleanup.
    * sys_win.c, WinMain: return 0, not TRUE. not that it actually matters..

2009-01-01 (CVS):
    * dos, net_bw.c: replaced the typecast assignment of port bits.
    * sdl midi: removed the dlsym check very old SDL_mixer versions detection.
      not needed with new machines and the readme files clearly state that 1.2.4
      is needed.
    * re-diff'ed the external music files support extra patch.
    * re-diff'ed the midi with sdlaudio extra test patch.
    * hexen2 net, net_wins.c, net_wipx.c: fixed the gcc-4.4 / mingw64 warnings:
      broadcastaddr is now declared as struct sockaddr_in instead of qsockaddr.
	win_stuff/net_wins.c: In function 'WINS_Init':
	win_stuff/net_wins.c:180: warning: dereferencing pointer 'broadcastaddr.107'
	does break strict-aliasing rules
	win_stuff/net_wins.c:180: note: initialized from here
	win_stuff/net_wins.c:181: warning: dereferencing pointer 'broadcastaddr.107'
	does break strict-aliasing rules
	win_stuff/net_wins.c:181: note: initialized from here
	win_stuff/net_wins.c:182: warning: dereferencing pointer 'broadcastaddr.107'
	does break strict-aliasing rules
	win_stuff/net_wins.c:182: note: initialized from here
	win_stuff/net_wipx.c: In function 'WIPX_Init':
	win_stuff/net_wipx.c:117: warning: dereferencing pointer 'broadcastaddr.102'
	does break strict-aliasing rules
	win_stuff/net_wipx.c:117: note: initialized from here
	win_stuff/net_wipx.c:120: warning: dereferencing pointer 'broadcastaddr.102'
	does break strict-aliasing rules
	win_stuff/net_wipx.c:120: note: initialized from here
    * hexen2 net, net_udp.c, net_mp.c: applied the same gcc-4.4 clean-ups / fixes
      that went into net_wins.c.

2008-12-31 (CVS):
    * several updates to docs.
    * version bump (1.4.4-pre4 / 2009-01-01.)

2008-12-30 (CVS):
    * hwmaster: made SV_AnalysePacket to output a proper hexdump of the packet
      (from the quakeforge tree.)
    * hexen2 net: renamed qsockaddr structure members sa_family to qsa_family
      and sa_data to qsa_data in order to avoid any possible confusion. besides,
      old CVS logs of quakeforge say that this fixed their compilation issues
      on Irix.
    * fixed gcc-4.4 warnings in the net layer revealed by the mingw64
      (mingw-w64.sf.net) compiler. most of them are fixed by using memcpy in place
      of typecast assingment.
	(hexen2 net:)
	win_stuff/net_wipx.c: In function 'WIPX_Write':
	win_stuff/net_wipx.c:292: warning: dereferencing type-punned pointer will
	break strict-aliasing rules
	net_dgrm.c: In function 'NET_Ban_f':
	net_dgrm.c:98: warning: dereferencing pointer 'banAddr.101' does break
	strict-aliasing rules
	net_dgrm.c:98: note: initialized from here
	net_dgrm.c:99: warning: dereferencing pointer 'banMask.102' does break
	strict-aliasing rules
	net_dgrm.c:99: note: initialized from here
	(hexenworld, hw_utils:)
	net_wins.c: In function 'NetadrToSockadr':
	net_wins.c:46: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	net_wins.c: In function 'SockadrToNetadr':
	net_wins.c:52: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	net_wins.c: In function 'NET_SendPacket':
	net_wins.c:46: warning: dereferencing pointer '({anonymous})' does break
	strict-aliasing rules
	net_wins.c:46: note: initialized from here
	net_wins.c: In function 'NET_StringToAdr':
	net_wins.c:116: warning: dereferencing pointer '({anonymous})' does break
	strict-aliasing rules
	net_wins.c:116: note: initialized from here
	net_wins.c:123: warning: dereferencing pointer '({anonymous})' does break
	strict-aliasing rules
	net_wins.c:123: note: initialized from here
	net_wins.c: In function 'NET_GetPacket':
	net_wins.c:52: warning: dereferencing pointer '({anonymous})' does break
	strict-aliasing rules
	net_wins.c:52: note: initialized from here
	sv_main.c: In function 'StringToFilter':
	sv_main.c:866: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	sv_main.c:867: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	sv_main.c: In function 'SV_ListIP_f':
	sv_main.c:945: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	sv_main.c: In function 'SV_WriteIP_f':
	sv_main.c:976: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	sv_main.c: In function 'SV_FilterPacket':
	sv_main.c:1012: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
    * hexen2 net: minor clean-ups.

2008-12-28 (CVS):
    * net_sys.h: minor clean-up.
    * hwmaster: small updates and clean-ups.
    * hwmaster: bumped version to 1.2.6.
    * hexenworld, net: added NET_CompareBaseAdr.
    * hexenworld, net: added net_loopback_adr
    * hexenworld, cl_main.c: use NET_CompareBaseAdr and remove system net headers.
    * hexen2 net, windows: use net_sys.h.
    * h2ded: sys_win.c doesn't need winsock.h.
    * hwsv, hwmaster: sys_win winsock includes.
    * winquake.h: made it to include only windows.h. other headers will be
      explicitly included by whoever needs them.

2008-12-27 (CVS):
    * utils, light.c: fixed win64 warning. this is actually a workaround,
      because of the argument passed to the thread function and should be
      further looked into in the future.
	light.c: In function 'LightThread':
	light.c:54: warning: cast from pointer to integer of different size
    * utils, hcc, pr_lex.c: fixed gcc-4.4 warning.
	pr_lex.c: In function 'LexPunctuation':
	pr_lex.c:438: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
    * utils, bspfile.c, soundpvs.c: fixed gcc-4.4 warnings.
	bspfile.c: In function 'PrintBSPFileSizes':
	bspfile.c:369: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
	soundpvs.c: In function 'CalcAmbientSounds':
	soundpvs.c:107: warning: dereferencing type-punned pointer will break
	strict-aliasing rules
    * utils: moved threads code to the common directory.
    * utils: revised the ifdefs for the threads support.
    * updated the TODO list (2008-12-27.)

2008-12-26 (CVS):
    * launcher pak patch: set the pak files' read+write permissions for the user
      (and for the group) if we can, because if the files were copied from the
      cdrom, some perms would be missing and access() would fail the R_OK|W_OK
      check. proper regular file check. other small clean-ups/tidy-ups..
    * launcher pak patch: reverted the md5 code update (having problems with the
      binaries generated from that code for windows and dos..)

2008-12-24 (CVS):
    * makefiles, windows: fixed windres commands.
    * cd_win.c: inttypes.h include isn't necessary.
    * fixed gcc-4.4 warnings from glpic structure member assignments. anything better??
	gl_draw.c: In function 'Draw_CachePicNoTrans':
	gl_draw.c:771: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:770: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:769: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:768: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:763: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:756: note: initialized from here
	gl_draw.c: In function 'Draw_CachePic':
	gl_draw.c:237: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:236: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:235: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:234: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:233: warning: dereferencing pointer 'gl' does break strict-aliasing rules
	gl_draw.c:232: note: initialized from here

2008-12-23 (CVS):
    * windows midi code: changed almost all of the bool functions to return int
      instead. fixed their incorrect and/or misleading documentation about their
      return codes.
    * windows midi: fixed the callback function for win64. hopefully correct.
      caught by the mingw64 compiler:
	midi.c: In function 'MidiProc':
	midi.c:581: warning: cast to pointer from integer of different size
    * gl_draw.c: use the stoc crc functions for texture checksumming.

2008-12-22 (CVS):
    * utils: fixed some 'cast from pointer to integer of different size' warnings
      for win64.
    * utils: removed FileTime(), not really useful.
    * cd_win.c: revised/fixed the printf format strings.
    * hexen2/sys_win.c: fixed atoi to HANDLE cast for win64.
    * updated net_sys.h for winsock2.
    * hexen2/net_wins.c: don't use WSASetBlockingHook with winsock2.
    * winquake.h: updated for winsock2.
    * support for win64 builds: adjusted the makefiles and added build_cross_win64
      scripts.  at present, only cross compilation on linux was tested using the
      mingw-w64 beta builds from mingw-w64.sourceforge.net. there are some warnings
      but they can be fixed and the whole thing should be functional soon.
    * added new directx headers from the extracted from mingw-w64-snapshot-20081115.
      win64 builds will use them instead of the old dx6 headers.
    * don't define directx3 compatibility versions for win64 builds.
    * build the windows versions with WIN32_LEAN_AND_MEAN defined.
    * hcc, hcc_old: fixed printf format strings.

2008-12-21 (CVS):
    * FS_CopyFile: separated the file copying procedure into a new Sys_CopyFile.
    * sv_phys.c: fixed warning from gcc-4.4:
	sv_phys.c: In function 'SV_Physics_Step':
	sv_phys.c:2195: warning: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~'
    * zone.c: don't unconditionally enable Z_DEBUG_COMMANDS for debug builds.
    * zone: added Z_Strdup as a utility.
    * FS_CopyFile, FS_CopyFromFile: use Z_Strdup

2008-12-20 (CVS):
    * launcher: replaced the old md5 code the maintained one from libbsd.
    * launcher, patching: re-written the inter-threads textview log printing to
      use queued logs and mutexes. this fixes the erratic crashes on smp systems,
      such as my Pentium D running with an smp kernel.
    * launcher, patching: remove the old file before renaming the patched version.
      not all implementations overwrite existing files.
    * launcher: cleaned up the huge mess in binary name usage and scanning.
    * launcher: minor clean-up.
    * launcher: bumped version to 1.0.4
    * fixed autotools configure failure in xdelta.
    * Mod_LoadModel: buf needn't be an unsigned int pointer, made it into a
      byte pointer. extracted the mod type from the header by bit shifts.

2008-11-21 (CVS):
    * fixed stupid copy/paste errors in the rpm spec file.
    * hexenworld/gl_model.c: GL_LoadTexture doesn't use mode == 10 for sprites for
      quite some time, now. I must have missed this.
    * glquake.h: minor tidy-up.
    * model.c, gl_model.c: made hexen2 versions look more like the hexenworld ones:
      Mod_LoadAllSkins: the 's' and 'tex_mode' values needn't be calculated in
      every iteration of the for loop.
      Mod_LoadSpriteFrame: doesn't need the model argument. it only provides the
      model name to Hunk_AllocName and so can 'loadname'.
      Mod_LoadSpriteGroup: likewise.
    * snd_dma.c: unconditionally register the sound cvars so that we don't lose
      settings when we do -nosound

2008-11-18 (CVS, 1.4.4-pre3):
    * VID_ReportConsize() should return const
    * bumped the HoT version to 1.4.4-pre3.

2008-11-15 (CVS):
    * updated the list of known bugs.
    * minor documentation updates.
    * killed MoveUserData: it used to be there in order to provide compatibility
      with user directories from HoT-1.4.0 and earlier but they are ancient history
      now.
    * re-diff'ed the StandaloneMods extra patch.
    * updated the beta version timestamp (2008-11-15.)

2008-11-11 (CVS):
    * Makefiles: from now on, 3dfx gamme hacks are disabled by default at compile
      time.
    * hexenworld, net*.c: don't assign 'true' to a non-boolean variable.
    * reverted the standalone free contents support changes from mainstream. it is
      incomplete and it isn't coming along fast enough. the mainstream code will
      be kept clean and the relevant code will be provided as an extra patch.
    * added initial support for standalone free contents (mods) as an extra patch.
    * updated the rpm spec file.
    * updated release notes for HoT-1.4.4.

2008-11-08 (CVS, 1.4.4-pre2):
    * quakefs.c: small tidy-up for FS_Init() procedures.
    * qbsp (writebsp.c): cleaned up TEX_InitWads() after the recent multi-wadfile
      changes and documented it.
    * StandaloneMods.txt: minor clarification.
    * bumped the HoT version to 1.4.4-pre2.

2008-10-31 (CVS):
    * compiler defs: Provide a substitute for offsetof() if we don't have
      one.  make sure __i386__ is defined if __386__ is defined.
    * added compile time asserts to make sure enums are the size of ints for
      structure packing (stolen from SDL headers.)
    * do NOT use the bool of C++ because some structures have boolean and they
      expect it to be 4 bytes long. as a hack, typedef it as int: this fixes the
      broken software renderer binaries from c++ compilers with x86-asm enabled.
    * P.S. : in case of c++ compilers, DO HOPE that the compiler built-ins for
      true and false are 1 and 0 ;)

2008-10-26 (CVS, 1.4.4-pre1):
    * quakefs.[c|h]: added initial support for standalone free contents (mods).
    * documented the standalone mod support (docs/StandaloneMods.txt)
    * bumped the HoT version to 1.4.4-pre1, hexen2 engine version to 1.22, and
      hexenworld engine version to 0.22.

2008-10-25 (CVS):
    * Fixed bug #2176384: In windowed mode, when you save using the menus,
      the game quits the menu without grabbing the mouse properly.
    * fixed a typo in h2option.h.
    * minor re-organization in quakefs.c.
    * external-music-file-support extra patch: documented corresponding midi
      filenames for cdrom audio tracks.

2008-10-15 (CVS):
    * utils, qbsp: constified the path arg of TEX_InitFromWad.
    * utils, qbsp: worldcraft sets the wad value to a full path. so,
      if we encounter a directory separator or a drive indicator in
      the path we don't prepend it with the project path anymore and
      use it as it is.  issue reported by 'leileilol' at
      http://sourceforge.net/forum/forum.php?thread_id=2357371&forum_id=425207
    * qbsp now accepts more than one wad file specified in the value
      of the "wad" key. (feature requested by leileilol.) the wad file
      names must be separated by a semicolon. spaces are allowed in the
      file names. quoted paths aren't allowed.
    * qbsp: reworked the parsing of path information in the wad key value.
      only the absolute path values are not touched, ie. the paths beginning
      with a '/' on unix or with a drive specified string like C: on windows.
      all other values with no path information or relative path information
      are prefixed with the project path.
    * sdl midi: audio_format should be Uint16 type (not that it actually
      matters, but for correctness sake..)
    * added a test patch to support midi when using sdl audio. the patch
      is an extra patch (in 00_Patches, not actually applied.)  its idea
      was adapted from an implementation found in prboom. we use SDL_mixer
      for both sfx and midi here, and use the Mix_SetPostMix() as a hack
      to mix in our sfx. if you use the -nomidi commandline switch, the
      normal sdl audio behavior is restored. this patch received minimal
      testing and is a bit crude. the audio is restricted to 16 bit stereo
      at 22050 Hz and commandline switches don't have any effects on them,
      yet.  NOTE:  if you want to use the external music files patch, you
      must apply this one first.
    * fixed a typo in SrcNotes.txt.

2008-08-19 (CVS):
    * increased the buffersize for sdl audio. made it to print a little more
      detailed info at startup.
    * vid_svgalib: include <sys/io.h> instead of <asm/io.h>

2008-07-24 (CVS):
    * updated msinttypes to r21.

2008-07-15 (CVS):
    * reduced the load fail timeout to 20 seconds in SCR_UpdateScreen. this is
      actually a complex bug and must be fixed somehow. see SrcNotes.txt for its
      details.
    * don't print -window and -fullscreen help entries for the for the svga version.

2008-06-29 (CVS):
    * SVGALib: fixed my stupid error in command line argument checking. it works
      just fine now. then again, if someone can help me configure my mouse with
      svgalib ;)

2008-06-12 (CVS):
    * SCR_EraseCenterString: make sure we don't draw off the bottom of the screen
      (this function isn't used in hexen2, but for completeness sake. the bug was
      fixed in the hexenworld version, too.  ran into this in the tyrquake tree).

2008-06-06 (CVS):
    * minor documentation tidy-ups.

2008-05-14 (CVS):
    * docs: minor tidy-up.
    * added back some unused code for future reference, and for symmetry
      between hexen2 and hexenworld versions, only. doesn't affect the
      current functionality in any way. while we were there, removed the
      last remnants of PF_AwardExperience which was never ever used.

2008-05-12 (CVS):
    * utils/map.c: fixed an array going out-of-bounds warning from gcc-4.3.
      with i >= 4, the for loop was actually stepping into vecs[1] and the
      code was, ehm, 'actually correct'.
	map.c: In function 'ParseBrush':
	map.c:84: warning: array subscript is above array bounds
	map.c:84: warning: array subscript is above array bounds
	map.c:84: warning: array subscript is above array bounds
	map.c:84: warning: array subscript is above array bounds
    * silenced another pair of bogus gcc-4.3 'maybe used uninitialized' warnings.
	sbar.c: In function 'Sbar_DeathmatchOverlay':
	sbar.c:942: warning: 'bottom' may be used uninitialized in this function
	sbar.c:942: warning: 'top' may be used uninitialized in this function
	sbar.c: In function 'Sbar_Draw':
	sbar.c:1070: warning: 'bottom' may be used uninitialized in this function
	sbar.c:1070: note: 'bottom' was declared here
	sbar.c:1070: warning: 'top' may be used uninitialized in this function
	sbar.c:1070: note: 'top' was declared here

2008-04-30 (CVS):
    * stricter checking on the values pulled out of .wav file chunk headers.
      from the tyrquake tree.

2008-04-22 (CVS):
    * renamed model_t to qmodel_t in order to avoid conflicts on solaris.

