Hexen II: Hammer of Thyrion

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

2008-04-04 (1.4.3-final / CVS):
    * fixed the declarations of Host_Error and Host_EndGame: they don't return
      either due to Sys_Error() or longjmp().
    * added server/client definition checks to hexenworld host.h headers, just
      in case.
    * even more clean-up in the makefiles.
    * some tweaks in the objects link order.
    * marked the cvs snapshot from Apr.04 2008 as 1.4.3-final.

2008-04-03 (CVS):
    * msg_suppress_1 is used by the Win32 software (MGL) renderer: removed from
      all other platforms and defined it as false.
    * minor makefile cleanup for svga client.
    * updated release notes for version 1.4.3 (2008-04-03.)
2008-04-02 (CVS):
    * various fixes for the experimental svgalib client.
    * moved msg_suppress_1 from vid files to d_surf.c.
    * build system cleanup (removed sanity checks, added a phony report target
      to engine makefiles, changed the default nasm command for windows from
      nasmw to nasm, maybe a few other things.)
    * minor platform clean-up in vid.h and input.h.
    * added a note to the main makefiles for SDL requirement.
    * added SDLQUAKE as a new preprocessor define: SDLQUAKE must be defined for
      all SDL using platforms / targets.
    * added a makefile for the svgalib-client. the client compiles fine but it
      isn't tested and isn't supported, yet.
    * updated release notes for version 1.4.3.
2008-04-01/02 (CVS):
    * d_polyse.c: added FIXME notes about mistaken use of mainTransTable instead
      of transTable in the T5 series functions, namely D_PolysetRecursiveTriangleT5,
      D_PolysetDrawSpans8T5 and D_PolysetDrawFinalVertsT5.
    * added video and input drivers for svgalib, adapted from quake1 source.
      compiles fine but not tested: not for release at the moment.
    * re-diff'ed the extra patches.

2008-03-31 (CVS):
    * minor update to SrcNotes.txt.
    * removed unnecessary extern declarations from a few C files.
    * renamed sound.h to q_sound.h (avoid probable conflicts with system headers
      on some platforms).
    * re-diff'ed some extra patches.
    * removed unnecessary includes from cd_win.c.
    * removed a few more obsoleted entries from OSX Xcode files.
    * changed beta release version date (2008-03-31 / 1.4.3-rc3).

2008-03-30 (CVS):
    * added back some dead and previously removed software renderer stuff for
      reference. doesn't affect the current functionality.

2008-03-29 (CVS):
    * updated the README documents: removed some stuff which are irrelevant
      or outdated; added an ALSA workaround by Davide Cendron which resolves
      non-power-of-two buffer size issues.
    * updated the TODO list.
    * minor update to SrcNotes.txt.

2008-03-28 (CVS):
    * d_polyse.c: changed to types of the variables pix and pix2 from int to
      unsigned int.
    * d_polyse.c: changed the type of the variable btemp from byte to unsigned int
      because we left shift it while using it as part of an index value (btemp<<8)
      anyway.
    * r_main.c: R_Init() : finish loading of all files before initing the driver and
      performing the protection changes.
    * moved FoundTrans from r_edge.c/r_edgea.asm to r_vars.c/r_varsa.asm following
      the same style of quake1 with such variables.
    * changed beta release version date (2008-03-28 / 1.4.3-rc3).

2008-03-25 (CVS, 1.4.3-rc2):
    * a few updates to the documentation.
    * updated compilation instructions.
    * added link libraries path for directx stuff to the makefiles.
    * added directx link libs for mingw.
    * added sources for building the directx link libs (from icculus.org sources).
    * removed outdated entries from OSX Xcode files.
    * updated beta release version / date (1.4.3-rc2 / 2008-03-25).
    * marked the cvs snapshot from Mar. 25, 2008, as 1.4.3-rc2.

2008-03-21 (CVS):
    * FoundTrans isn't a long but an int, or int32_t to be exact because the asm
      code uses it as a dword. it acts as a bool only. changed the type to int.
    * r_edge.c, d_edge.c: FoundTrans clean-up; matched the C-only code to the
      assembly code. FoundTrans stuff is only in refresh, not in drivers.
    * d_scan.c: removed the old version of D_DrawSingleZSpans which didn't
      match the asm code. the version in use did not reset ZScanCount for
      which reason I don't know at all: enabled the "ZScanCount = 0" line
      which is what the asm code does, anyway.
    * updated the TODO list (2008-03-21.)

2008-03-20 (CVS):
    * various insignificant clean-ups / tidy-ups.
    * fixed a gcc-4.3 / type-punned pointer / strict aliasing warning in
      utils/genmodel/loadtri.c.
    * d_polyse.c: pointer must be cast to intptr_t, not necessarily long.
    * d_polyse.c (D_DrawSubdivT5): d_pcolormap pointer isn't used by T5 functions.
    * updated BUGS (2008-03-20.)

2008-03-19 (CVS):
    * maputils: commented out RecursiveGrowRegion along with its servants whose
      all uses are commented out.. found by a gcc-4.3 warning.
    * silenced a pair of bogus gcc-4.x warnings in sv_phys.c which showed up after
      the mathlib macro clean-ups:
	sv_phys.c: In function 'SV_PushRotate':
	sv_phys.c:941: warning: 'testmove[2]' may be used uninitialized in this function
	sv_phys.c:941: warning: 'testmove[1]' may be used uninitialized in this function
	sv_phys.c:941: warning: 'testmove[0]' may be used uninitialized in this function
	sv_phys.c: In function 'SV_Physics':
	sv_phys.c:2220: warning: 'oldAngle[0]' may be used uninitialized in this function
	sv_phys.c:2220: warning: 'oldAngle[1]' may be used uninitialized in this function
	sv_phys.c:2220: warning: 'oldAngle[2]' may be used uninitialized in this function
	sv_phys.c:2220: warning: 'oldOrigin[0]' may be used uninitialized in this function
	sv_phys.c:2220: warning: 'oldOrigin[1]' may be used uninitialized in this function
	sv_phys.c:2220: warning: 'oldOrigin[2]' may be used uninitialized in this function

2008-03-16 (CVS):
    * nasm symbol prefix handling: added header file asm_nasm.inc and moved
      common definitions into it. created macro _sym_prefix which adds an
      underscore prefix to its given argument: all C-shared symbols are now
      processed by this macro, unless the nasm flags contain _NO_PREFIX. for
      elf targets, we add _NO_PREFIX to the nasm flags and that disables
      symbol prefixing. this has some advantages over what we have been doing
      previously: the "--prefix _" command line option used to prefix all of
      the symbols, not just the ones we wanted. besides, yasm doesn't support
      the --prefix option. now we can use yasm for win32 and dos, too. this
      is actually like the id asm code with the C(label) macro.

2008-03-15 (CVS):
    * removed the END labels from asm files, silencing the assembler
      warning from nasm-2.01 and newer versions:
      'warning: label alone on a line without a colon might be in error'
    * removed unnecessary extern declarations from asm files.
    * transTable, the particle translucency table, is for software renderer
      only. it is used by particle translucency, for EF_SPECIAL_TRANS by
      D_Polyset???T5 functions, and by R_AliasDrawModel.
    * llight is not used in D_PolysetDrawSpans8T5.
    * initialize the translucency tables before R_InitParticles and D_Init
      (just in case).

2008-03-07 (CVS):
    * maputils/flow.c: added missing semicolon after VectorSubstract.
    * mathlib macro clean-up: macros with multiple statements are now
      enclosed in do-while blocks. changed VectorMA and VectorScale into
      macros. not using memcpy for VectorCopy anymore (doesn't work with
      DOUBLEVEC_T). usual whitespace clean-up while we were there.
    * cl_input.c: whitespace.
    * enclosed several macros with multiple statements in do-while blocks.
    * added proper ifdefs to make hexen2 and hexenworld compilable with
      cplusplus compilers (ie. g++) even when using x86 asm: no linkage
      problems anymore.  opengl version runs just fine but the software
      version suffers severe rendering glitches in that mode except for
      the DOS port which surprisingly runs fine.
    * updated BUGS (Mar. 07, 2008.)
    * made in_win.c to compile using cplusplus compilers (ie. g++).

2008-03-04 (CVS):
    * silenced a compiler warning, although a false one, which showed up
      with gcc-4.3.0 (20080301 prerelease).
		pr_cmds.c: In function 'PF_setpuzzlemodel':
		pr_cmds.c:315: warning: array subscript is above array bounds

2008-02-28 (CVS):
    * several documentation updates.

2008-02-08 (CVS):
    * minor doc updates.
    * updated rpm spec file.
    * updated HoT version number in the launcher.

2008-02-07 (CVS, 1.4.3-rc1):
    * another bunch of sprintf/strcpy to snprintf/strlcpy changes.
    * minor tweak: r_part.o must stay among the softobjs and globs despite
      the fact that it is the same. in fact, I should chop it into pieces
      like, r_part.c, gl_rpart.c and cl_part.c, someday..
    * windows fix: limit GlobalMemoryStatus results to 2GiB in order to workaround
      for signed int. found in ezquake.
    * fixed a corner case in StripExtension.
    * some whitespace clean-up.
    * updated release notes for 1.4.3 (2008-02-07.)
    * updated beta release date and version (1.4.3-rc1, 2008-02-07.)

2008-01-29 (CVS):
    * made COM_StripExtension, COM_FileExtension, COM_DefaultExtension and
      COM_FileBase buffer size safe.
    * added back strlcat and strlcpy to the utilities' build.
    * changed the error check macros qerr_strlcat, qerr_strlcpy and
      qerr_snprintf into actual functions. They take two additional arguments:
      the name of the caller function and the line number. Killed the
      Sys_mkdir_err macro, too, Sys_mkdir now takes a second argument,
      qboolean crash.
    * buffer size safety stuff in the utilities after the similar operation
      in the engine tree. actually there is *much* to be done in the utilities
      for q_strlcpy, q_strlcat and q_snprintf usage, but this is a good start.
    * re-diff'ed the external music file support patch after today's api
      changes.
    * utilities: started using q_strlcat, q_strlcpy and q_snprintf: common,
      genmodel, qfiles.
    * minor Sys_FindFirstFile cleanup: Z_Malloc ensures allocation and zeroes
      the memory.
    * fixed huffman.c compilation after today's api changes.
    * fixed compilation by cplusplus compilers (g++) when we configure for
      runtime byte order detection: the usual int to enum problems, added
      proper enum casts in model.c, gl_model.c and genmodel.c. the testing also
      revealed a weird thing in genmodel.c: in its two functions, ReadModel
      and WriteModelFile, byte swap operation on the synctype member is done
      using LittleFloat, not LittleLong, although synctye_t is an enum and has
      nothing to do about float: changed the code to use LittleLong. any ideas
      on this? the modelgen tool of quake1 also uses LittleFloat, hmm...
    * changed the beta release date to 2008-01-29.

2008-01-26 (CVS):
    * don't rely on value to wrap around in get_va_buffer().
    * cl_protocol parsing clean-up: use switch statements for better
      readability.
    * changed the debug message for svc_skybox and svc_mod_name to a
      Con_DPrintf.
    * added some more info about the hexen2 protocols to protocol.h.
    * added 20 among the accepted values for the -protocol command line
      argument. a little tidying up. added a debug message to SV_StartSound
      to make sure everything is ok with the protocol mess. send empty
      strings for svc_mod_name and svc_skybox if running with protocol 20,
      uqe handles those empty strings correctly.
    * handled the SND_OVERFLOW2 crap (used by UQE, for example). those who
      increase the sound limit but don't increment the protocol make their
      implementation incompatible with other older clients because they will
      not be aware of such a mechanism.
    * minor synchronization of headers / comments correction.
    * changed the beta release date to 2008-01-26.

2008-01-22 (CVS):
    * added my SrcNotes.txt among the documents.
    * updated my SrcNotes.txt (2007-01-22).
    * a little whitespace cleanup up pr_exec.c and pr_edict.c. while
      I was there, renamed the global old_progdefs to is_progdefs111.
      added older hwprogs header crc values from hexenworld versions
      0.11 and 0.14 for reference.
    * added further notes / documentation about old progs versions: 1.09
      progheader_crc is the same as that of 1.11!
    * hexenworld server: retired the win_stuff directory which only held
      sys_win.c.
    * updated the mkrelease script.
    * minor cleanups.
    * removed the eula thing from docs, irrelevant after all these years.
    * updated web links again.
    * updated release notes for 1.4.3 (2008-01-13).

2008-01-12 (CVS):
    * q_stdinc.h: added compile time assert macros in order to make sure
      certain types (ie. char, float, int and long) have the right sizes.
      the macro was taken from recent SDL headers. some minor formatting
      cleanup while we were there.
    * tidied up procedures determining the cwd and the userdir.
    * removed q_endian stuff from hwmaster. its only use was doing BigShort
      on a server port constant and it is now done by htons.
    * incremented several version numbers.
    * added detection of byte order (endianism) at runtime as a new compile
      time option. it is off by default, because compile time decision is a
      little bit faster on old hardware. edit the file q_endian.h in order to
      change it. compile time byte order is now checked against the runtime
      detected order before doing anything else.
    * launcher/config_file.c: minor clean-up.
    * launcher: better separation of ui and non-ui parts.
    * launcher: added ui_error for displaying error messages when the gui
      is inactive.

2008-01-10 (CVS):
    * removed an obsoleted comment from arch headers.
    * updated my systest tool source.
    * added msinttypes stuff for M$VC (from msinttypes.googlecode.com)
    * added msinttypes/stdint.h conditional include for M$VC.
    * makefiles: added our locl w32stuff directory to the includes path so
      that include msinttypes/stdint.h works. removed unnecessary mingwdir
      and djgppdir paths.
    * updated release date to 2007-01-10.

2007-12-30 / 2008-01-04 (CVS):
    * small clean-ups in snd_mix.c and snd_win.c
    * console line editing: made insert mode the default (Steven's request).
    * updated release notes for the upcoming 1.4.3 version (2007-12-30.)
    * launcher, md5 checksum: no need for the unpack option.
    * updated release date to 2008-01-04.

2007-12-24 (CVS):
    * changed the sound driver interface to be more like a 'plugin' interface.
      still, I should properly separate the multi-driver cases, such as the
      windows wave and dsound, and the dos blaster and gus cases.
    * moved S_BlockSound and S_UnblockSound to the snd_dma api, added BlockSound
      and UnblockSound among the driver provided functions. made S_BlockSound to
      clear the sound buffer. FIXME: do we really need the blocking at the driver
      level?
    * made sdl input driver to respond to the SDL_ACTIVEEVENT events: made the
      game to block/unblock sound upon focus loss/gain.
    * simplified stub funcs usage in snd_sys.c.
    * made Sys_rmdir and Sys_unlink into actual functions rather than macros.
    * added beginnings of SDL joystick support. not complete at the moment, will
      stay commented out until I finish it.
    * net drivers: rest of the constifications, minor whitespace cleanups.
    * now that the old version of sdl audio driver is removed, removed snd_skippaint
      which was its dependency.
    * added missing memsets to net drivers.
    * removed two unnecessary memsets from net_wipx.c after the previous commit.
    * removed a deprecated comment from glquake.h
    * glquake.h: GL_UNUSED_TEXTURE definition
    * removed the ctype.h includes from winquake.h, not necessary anymore.
    * removed the unistd.h includes from midi_sdl.c and midi_mac.c, not necessary
      any longer.
    * added missing global to vid_dos.c. how did it even link before??
    * insignificant clean-ups in menu.c..
    * removed the snd_restart experimental extra patch. it broke after the sound
      driver interface changes and it wasn't stable enough anyway..
    * updated release date to 2007-12-24.
    * updated the release notes for the upcoming 1.4.3 version.
    * documentation, updated web links.

2007-12-19 (CVS):
    * Several typo fixes. Changed the uhexen2 version number to 1.4.3
      in the documents.

2007-12-14/15 (CVS):
    * updated several headers. retired q_types.h and added q_stdinc.h.
    * updated HoT version to 1.4.3 (rc0 : 2007-12-14.)

2007-12-12 (CVS):
    * updated several OS/arch definitions.
    * snd_sun.c, fixed compilation.

2007-12-08 (CVS):
    * launcher: added a progress bar for the patch operation based on the
      written bytes. tiny clean-ups, if any, while we were there.
    * launcher: incremented version to 1.0.3
    * minor documentation updates after the launcher changes.

2007-12-04 (CVS):
    * added aliases for class definitions because some of them are
      referenced with a different name in the progs.
    * filtered invalid class numbers in Host_Class_f. besides, the demoness
      is only available in the mission pack WITH the mission pack progs
      running, made sure of that, too.
    * hexenworld: fixed a glitch in class selection menu.
    * updated release notes for 1.4.3 (2007-12-04.)
    * updated the list of known bugs (2007-12-04.)

2007-11-25 (CVS):
    * pa3pyx's solution of resized pic size mismatches after resolution
      changes was buggy, because it only handled one picture, probably
      intending the intermission screen only and not others, such as the
      help screens. Draw_CachePicResize now checks against the intended
      dimensions and re-caches when necessary. while we were there, did
      minor cleanups in the users of these funtions.
    * updated release notes for 1.4.3 (2007-11-25.)

2007-11-22 (CVS):
    * added mousewheel support for dos. the latest alpha version of cutemouse
      driver (ctmouse 2.0a4) is needed. use the command line argument -mwheel
      in order to use it if it is available. doesn't work under win9x dos box
      because the windows driver will be in the way.
    * made the cvar r_waterwarp value to be written to the config. replaced
      the cvar gl_waterwarp with r_waterwarp in order to maintain consistency
      between opengl and software versions.

2007-11-17 (CVS):
    * made Sys_Error to pop up an alert panel on Mac OS X.
    * synchronized the Mac OS X xcode project files with Levent's latest.

2007-11-16 (CVS):
    * using memcpy within the same buffer is not safe: replaced such calls
      in cmd.c, net_dgrm.c and net_loop.c with memmove calls.
    * exported edit_line, key_linepos, key_insert and key_lines through keys.h
      and removed the relevant externs from source files.
    * tiny clean-up in Con_DrawInput().
    * keys.c clean-up: used memmove calls when moving text in the same buffer.
      removed some weird behavior with the rightarrow. added word processor
      style ctrl-right and ctrl-left handling.
    * updated release notes for 1.4.3 (2007-11-16.)

2007-11-14 (CVS):
    * commented out the unused introdemofile from client_static structure.
    * more constifications (#6): made COM_SkipPath to return const.
    * fixed another buffer overrun vulnerability in hexenworld huffman
      decoder. while we were there, handled a corner case problem. this
      time all seems fine.
    * updated the huffman files from the main tree for the xqf rcon patch.
    * more constifications (#6): made MSG_ReadString and MSG_ReadStringLine
      to return const.
    * more constifications (#7): backed out some incorrect/unnecessary const
      usage from a few months back.
    * dos, video: fixed the bad coordinates error when someone changes
      resolution during intermissions.
    * more constifications (#8): continue with the utils, hcc and dcc.
    * more constifications (#8): made PR_ValueString and friends to return const.
    * utils, dcc: put a check in DEC_AlreadySeen for DEC_FileCtr to prevent
      segfaults. there is a memory overwrite somewhere that I need to find,
      it happens only when the program is compiled with versions 4.1.x or
      4.2.x of g++ (the cplusplus compiler, and not gcc); here is the output
      after applying this patch:
      Statements for trigger_crosslevel:
      finding declared globals:.
      *** ERROR: ***
      DEC_AlreadySeen: DEC_FileCtr: 690563383 (fname: triggers.hc)
      This patch will stay in until I find the reason for this. [FIXED: see
      below.]
    * utils: fixed the buffer overrun in dhcc when compiled with g++ 4.1.x
      and 4.2.x: the overwrite happened in function DccStatement() at line
      278 when decompiling the trigger_crosslevel (triggers.hc) which has
      a very very long if condition (see the source file itself...)  the
      solution was to increase the size of dsline buffer from 512 to 2048
      (just in case). it seems like we may need to dynamically allocate the
      buffers someday. maybe start using snprintf, strlcat and strlcpy, too?
    * updated release notes for the upcoming 1.4.3 version.

2007-11-12 (CVS):
    * more constifications (#4): things I missed in vid_dos.c/vid_dos.h.
    * x86 assembly is needed for dos-hexen2: adjusted the makefile for it.
      while we were there, made the makefile to error out immediately if one
      wants to build glh2 for dos.
    * more constifications (#5): things I missed in hexenworld/huffman.c.
    * d_surf.c: cleaner size align code in D_SCAlloc, from quakeforge tree.
      should have missed this in 1.4.2-release.
    * hexenworld, huffman compression: instead of allocating memory 511 times
      for each node, just allocate one chunk of memory (512*sizeof(huffnode_t))
      and point to it properly.
    * updated the huffman files from the main tree for the xqf rcon patch.

2007-11-11 (CVS):
    * invented PR_GetProgFilename and took maplist.txt parsing out of
      PR_LoadProgs.
    * const correctness improvement: largely trivial stuff with a few
      places where a little more care was needed.
    * fixed a few warnings about comparison between signed and unsigned
      integer expressions.
    * const correctness improvement, #2: utilities. more work is needed
      here, though.
    * more const stuff (#3) in the utilities. while we are there tidied
      some type casts especially for LoadFile().
    * net_comx.c: fixed compilation after the large commit.

2007-11-07 (CVS):
    * moved all of windows crap from snd_dma.c and snd_mix.c to its
      platform driver file snd_win.c. those things were only about
      locking the directsound buffer, so added SNDDMA_LockBuffer
      (equivalent to SNDDMA_BeginPainting of quake2 and quake3) among
      the driver provided functions. while we are there, fixed a bug
      in our sdl audio implementation (and usage): since sdl output
      is callback based, it needs the same locking before every paint
      and a corresponding unlock before the submit. those calls were
      missing, they are added now.
    * retired the old version of sdl audio driver.
    * abandoned using hunk allocation for windows 'wave' sound.
    * updated release notes for 1.4.3 (2007-11-07.)

2007-11-05 (CVS):
    * added v1.11 pakfile data for the oem (Matrox m3D bundle) version.
      data for older versions (1.08 and 1.10?) of oem are still missing.
    * updated release notes for 1.4.3 (2007-11-05.)
    * launcher: stat() the pakfiles before patching.

2007-11-03 (CVS):
    * win32 resource files, minor update (clean-up).
    * Sys_EnableTerm and Sys_DisableTerm are only for dos.
    * relnotes-1.4.3: fixed a typo.
    * added the OpenBSD version of inet_addr() for dos. while we are there,
      did some minor clean-up in dos_inet.h.
    * added short compilation instructions for DOS.

2007-10-30 (CVS):
    * a few minor warning fixes and clean-ups.
    * fixed my typo in net_comx.c
    * added missing casts in several dos files.

2007-10-26 (CVS):
    * minor makefile tweaks. gave up refusing 'cc' as the compiler. gave
      up using a different name for the launcher demo builds.
    * small update to the common makefile includes.
    * use standart sys_error for the error exit in dos mpath driver.
    * hwmaster functionality is now integrated to qstat and xqf. cleaning
      up the stuff here.

2007-10-24 (CVS):
    * added a mechanism to reserve certain keys to ensure that they always
      stay with their intended hardcoded bindings.. reserved '`', '~' and
      the pause keys.
    * draw.c, gl_draw.c: added a few missing error checks, plugged a very
      minor memleak.
    * added back serial driver functionality for the dos support.
    * fixed the modem connection menus for dos.

2007-10-23 (CVS):
    * added a note about the pause key to Sys_SendKeyEvents.
    * fixed an evil bug in key event handling which prevented almost all
      pause key events on dos.
    * enabled DOS builds of hexen2 software renderer (hey, I still love
      my trusty old dos box!). compilation only tested under under linux
      using djgpp cross toolchain. at present, the beta 2.04 version of
      djgpp is needed because 2.03 and earlier doesn't provide a vsnprintf
      for us. some serial driver functionality, either was already absent
      in hexen2, or was removed by uhexen2, will be added later. the midi
      playback is not there, yet, either. the loading progress bars and the
      rotating skull doesn't work yet. other than those, all things seem
      to work just fine.

2007-10-22 (CVS):
    * added vga screen copy assembly code of quake, converted to nasm
      format.
    * added DOS support files, from quake1 source with minor adaptations
      for uhexen2.
    * net_ser.h and dosisms.h are no longer in the unused files directory.

2007-10-21 (CVS):
    * several tweaks to the makefiles.
    * updated the qstat hwmaster patch for the svn version.

2007-10-20 (CVS):
    * platform definition fixes for DOS.
    * re-enabled Cmd_CheckParm (will be needed later).
    * added DOS conditionals to some includes, most notably unistd.h.
    * minor fixes for -Wshadow warnings.
    * added conditionals around some input functions which are related
      to windowed environments.
    * added dos definitions to snd_sys.
    * dosquake doesn't use vid buffer locking.

2007-10-18 (CVS):
    * more updates to the build scripts.
    * endianness macros clean-up for MASK_rgb.
    * more updates to the build system, removing the rest of weirdness.

2007-10-16 (CVS):
    * more updates to the build scripts.
    * updated the loki_patch and xdelta pak patch scripts. the xdelta
      script is less brain-damaged and now supports the md5 and md5sum
      utilities both and should work on BSD derivatives.

2007-10-15 (CVS):
    * more updates to the endianness stuff.
    * seems like gcc-3.0 wasn't enough for specifying format attributes for
      function pointers: we need gcc >= 3.1. fixed.
    * added systest.c (the stupid little tool I use to see a report of type
      sizes and byte order) to the scripts folder.
    * a few build system tidy-ups: use lowercase host_os names, do not use
      the align directives on platforms other than x86 and x86_64, disable
      3dfx gamma hack when not compiling for linux or freebsd.

2007-10-14 (CVS):
    * fs_gamedir_nopath should actually have an array size of MAX_QPATH.
    * added a new compile time option DO_USERDIRS which allows disabling the
      user directories even on multi-user platforms.
    * re-enabled the use of password file when determining the user's home
      directory.
    * moved the USE_PASSWORD_FILE definition to appropriate headers (h2option.h).
    * fixed a theoretical buffer overrun in Sys_ConsoleInput and printed a
      warning message in such cases.
    * tidied the sleep calls. made Sys_Sleep to take a milliseconds argument.
      while we were there, did a little tidy-up between different versions of
      a few sys* files.
    * tidy-up for MAXPATHLEN definitions in xdelta.
    * disabled USE_PASSWORD_FILE for platforms where it's not needed in sys.h.
    * updates to net_sys.h header.
    * enable sdl sound on more possible platforms.
    * minor things (quicktime include in midi_mac.c).
    * updates and some re-organization in arch_def.h headers.
    * minor update to the Xcode project file.
    * endianness handling: added PDP (NUXI) endian support, inspired from ezquake.
      only serves academic purposes, though.. added a function for detecting the
      byte order at run-time. adjusted the game launcher to use the standart that
      is already in the engine trees.
    * fixed BYTE_ORDER conditional compilation in pr_edict.c: the code must
      be compiled not simply for BIG_ENDIAN but for !LITTLE_ENDIAN cases.
    * fixed the r, g and b shift values in gl_draw.c (thank god they were not
      used there, the little endian values in macglquake must be a bad typo!),
      added the corresponding nuxi values, moved all of them to the glquake.h
      header. removed the BYTE_ORDER conditionals from gl_vid* files and used
      these relevant shift and mask macros.
    * fixed compilation with gcc2: argument format attributes for function
      pointers are not supported for gcc < 3.

2007-10-10 (CVS):
    * pass NULL as the timezone argument to gettimeofday.
    * added a default MAXHOSTNAMELEN definition to net_sys.h in case we don't
      have it through the system headers.
    * always use MAXHOSTNAMELEN as the size of the buffer we give to gethostname().
    * renamed our min and max macros to q_min and q_max and undefined any
      possible default ones to avoid confusion.
    * some proper ifdef usage in xdelta. changed S_IFREG usage with S_ISREG.
    * arch defs: separated MorphOS (and Amiga) from platform_unix. Kiero (the
      MorphOS guy) isn't responding to e-mails, so, it may take some time to
      put those things in order.
    * arch defs, #2: added a FIXME note about MorphOS: Since MorphOS (and Amiga)
      aren't classified as PLATFORM_UNIX, several things may well be broken in
      all of the uhexen2 tree. particularly, search for the __MORPHOS__ ifdefs..

2007-10-08 (CVS):
    * minor documentation updates and corrections after the 1.4.2 release.
    * minor things.
    * re-enabled the success check during wad_base loading: although we
      are doing intensive pak file validity checks during FS_Init, this
      gives more ease of mind.
    * a few more comments in q_types.h and C++ NULL definition if we don't have
      one.
    * fixed the paths in texutils cross compilation scripts.

2007-10-03 (1.4.2-final):
    * marked the cvs snapshot from Oct.03 2007 as 1.4.2-final.

2007-10-02 (CVS):
    * huffman.c: added a note.
    * small final tidy-up in hwmquery.
    * hexenworld tools: added extra patches against qstat and xqf for proper
      rcon and hwmaster functionality.
    * updated docs (2007-10-02.)

2007-10-01 (CVS):
    * documented the quakefs file loading procedures.
    * host_cmd.c: fixed a typo.
    * hexenworld: exported sv_highchars through server.h.
    * hexenworld: a few fixes in info strings handling.
    * removed unnecessary NULL checks on the values returned by Info_ValueForKey
      because it may return an empty string but never NULL. removed the strlen
      usage from empty string checks on the values returned by Info_ValueForKey
      and just used *val or val[0] instead.
    * minor clean-ups in hexenworld utilities.
    * updated the version numbers of the hexenworld utilities.
    * added the missing printf format attributes to print function pointers in
      Host_Status_f and NET_Ban_f.
    * updated documentation (2007-10-01.)

2007-09-29 (CVS):
    * FS_OpenFile didn't set fs_filesize for files not residing in a pak. fixed.
    * implemented deleting of saved games from within the game: pressing the
      delete key in the load or save menu (and pressing y at the dialog) does
      the job. alternatively, the new console command deletesave <savename>
      does the same thing.
    * limited recorded demo file, saved config file and game save directory
      names to alphanumeric only.
    * clean-up in Host_RemoveGIPFiles: replaced two unnecessary snprintf
      usages with strlcpy. replaced a va() call with an snprintf onto the
      already available local array, which is probably safer.
    * allocated the large (256 kb) inverse_pal array on the Hunk rather than
      the stack. while we were there, did a little tidy-up.
    * replaced a few strncpy usage with strlcpy. surely there are some more
      but these are the ones I'm sure about.
    * exported Draw_PicFromFile and Draw_PicFileBuf again, in case we use them
      someday.
    * pr_strng.c: minor trivial clean-up.
    * added Sys_unlink and Sys_rmdir. for platform_unix and platform_windows,
      they are macros defined as the library functions themselves, for others
      it must be implemented.
    * updated documentation (2007-09-29.)

2007-09-26 (CVS):
    * fixed sound buffer address printing.
    * updated the compile instructions for windows.

2007-09-23 (CVS, 1.4.2-rc3):
    * always use our q_snprintf and q_vsnprintf wrappers: it is virtually
      impossible to maintain a list of non-C99 compliant versions.
    * updated the beta release version/date (1.4.2-rc3, 2007-09-23.)

2007-09-22 (CVS, 1.4.2-rc3):
    * to overcome the the portability problems with snprintf and vsnprintf,
      added suitable q_snprintf / q_vsnprintf wrappers with C99 compliant
      return values. updated several other wrapper macros with a consistant
      naming scheme.
    * gl_vidnt.c: added missing newlines to some warning messages.
    * undefine HAVE_STRLCPY and HAVE_STRLCAT in strl_fn.h (just in case..)
    * updated the beta release version/date (1.4.2-rc3, 2007-09-22.)

2007-09-21 (CVS, 1.4.2-rc3):
    * snd_sdl2.c: added missing casts to buffer allocation calls.
    * changed some qboolean types to int in model files where the variables
      are actually assigned values other than true and false. this change,
      especially the one in gl_mesh.c, fixes the broken models in binaries
      compiled using g++ (cplusplus).
    * several more clean-ups in value assignments to qboolean variables.
      a few minor clean-ups here and there.
    * updates to some error routine calls.
    * updates to some error routine calls, #2. a few clean-ups while we are
      here.
    * updated the list of known bugs (2007-09-21.)
    * updated the beta release version/date (1.4.2-rc3, 2007-09-21.)

2007-09-20 (CVS, 1.4.2-rc3):
    * added FS_CopyFromFile to QFS which uses an open file as its source.
      removed MIDI_ExtractFile helper from midi driver files and replaced
      its calls with FS_CopyFromFile.
    * re-diff'ed the external music file support extra patch after the
      FS_CopyFromFile change.
    * windows midi clean-up.
    * sys_win.c: don't use LONG_MAX as the TIME_WRAP_VALUE.
    * changed Xcode project files for Mac OS X to use the new snd audio driver.
    * QFS: FS_CreatePath fixes.
    * sound: made 22050 Hz the default sample rate. removed 22051 from the
      tryrates list.
    * updated the release notes for 1.4.2 (2007-09-20)
    * updated the beta release version/date (1.4.2-rc3, 2007-09-20.)

2007-09-19 (CVS):
    * The new SDL audio driver seems to have fixed the rare bug where the game
      would randomly quit with an error message 'Cache_MakeLRU: active link'.
      Updated the documents accordingly.

2007-09-15 (CVS):
    * clean-up in vid* files: mostly whitespace and readability stuff.
    * changed all technically incorrect unsigned int declarations (unsigned)
      to explicit unsigned int declarations.
    * clean-ups in snd* files: mostly whitespace and readability stuff. while we
      were there, fixed a few technically incorrect return codes (int instead of
      bool), fixed a wrong cast in some memset calls (dma_t* instead of void*),
      made the alsa buffersize warning messages to show up on the game console,
      made OSS driver to use the system definition AFMT_S16_NE when available.
    * updated the list of known bugs for the 'Cache_MakeLRU: active link' error.
    * fixed the reporting of the video mode set when the effective console size
      isn't of same dimensions as the video mode itself.
    * updated windows compilation instructions.
    * exported soundtime through sound.h.
    * added snd_skippaint as a new global: it is set by our current sdl audio
      driver indicating that it already 'paints audio'.  while we were there,
      changed the 'available' member of the snd_driver structure of snd_dma.c
      from qboolean to int.
    * re-diff'ed the alternative snd_sdl and experimental snd_restart extra
      patches.
    * added the new sdl audio driver mainstream. the old driver seems to be
      more problematic, so let's give this one a chance.
    * removed the alternative sdl audio patch from the extra patches directory
      (already added maintream.)
    * activated the new sdl audio driver in the makefiles.
    * updated the notes in the experimental snd_restart patch after the
      latest changes.
    * updated the beta release version/date.
    * updated the release notes for the upcoming 1.4.2 version.

2007-09-09 (CVS):
    * minor clean-up in alias console command.
    * minor whitespace clean-up.
    * made the xbm icon bits non-static: they are used only in the relevant
      VID_SetIcon procedure and the 'static' was a left-over from gimp icon
      file generation.
    * re-enabled the mission pack icon in xbm_icon.h in case we build with
      H2MP pre-defined.
    * changed most of the critical invalid pakfile errors to warning messages
      on the terminal.

2007-09-05 (CVS):
    * fixed pr_stringssize calculation: progs->numstrings already is the
      correct size we should use and the loop for calculating pr_stringssize
      was wrong as hell. the bug was carried over from the twilight project
      which we initially based our 64 bit support on. sigh...
    * updated the beta release version/date.

2007-09-02 (CVS):
    * added two missing null terminations after strncpy calls.
    * precautions against possible buffer overruns in (gl_)model files. the
      loadname array size change was also necessary in order to avoid overruns
      in COM_FileBase.
    * hexenworld, model.c: fixed typo (oops...)

2007-08-30 (CVS):
    * changed all of the string buffer overflows which were previously
      non-critical to Host_Errors (the majority of them were in host_cmd.c
      and host_cmd.c). while we were there, removed the game load/save
      retry messages and changed them into Host_Errors and corrected a few
      return codes of the relevant procedures. added a few missing return
      code checks around SaveGamestate and LoadGamestate calls. these
      changes make hexen2 seem a little less tolerant but more stable and
      secure.
    * menu.c: minor tidy-up.
    * launcher: 'ptr++' tidy-up.

2007-08-28 (CVS):
    * UDP: using the hostent method, myAddr may resolve to 127.0.0.1. added
      interface scanning to overcome the problem. from the quakeforge tree.
    * UDP, unix: added command line option -noifscan, in case someone wants
      to disable network interface scanning for some reason.
    * updated release notes for v1.4.2 (2007-08-27.)
    * made hexen2 dedicated servers to start the demo1 map if map map was
      specified on the command line.
    * a few more safeprint changes in the net files.
    * fixed an incorrect size argument (WIPX_AddrCompare, sa_nodenum, 6, not
      4) in the windows ipx driver.
    * minor cleanup.
    * vid_win.c: whitespace clean-up, dead code removal.
    * net_wins.c: minor clean-up.
    * net_wipx.c: minor clean-up.

2007-08-25 (CVS):
    * net_dgrm.c: Datagram_Init must return -1 if it couldn't initialize
      any drivers.
    * net_udp.c, net_wins.c, net_wipx.c: fixed the bad merge of the -ip
      command line options (-localip was missed and GetSocketAddr had a
      bad usage of the options.) added -bindip as an alternative for the
      -ip option (both are the same, -ip is checked first). changed
      several print calls to safeprints in the init procedures. several
      cleanups in the windows version. documentation update will follow
      shortly.
    * hexenworld: added -bindip as an alternative for the -ip option
      after the similar hexen2 change (both options are the same, -ip is
      checked first).
    * updated documentation after the ip option additions.
    * net_wins.c: another safeprint change (this one got missed
      previously).
    * small update in documentation.

2007-08-23 (CVS):
    * host.c, Host_FindMaxClients: svs.maxclients can't be < 2 for listen and
      dedicated servers.
    * h2ded, net_main.c: removed the port, listen and maxplayers console
      commands. they are for use with the client-server binary through
      the menu system and shouldn't be around for the dedicated server.
    * minor fix in hexenworld map command.
    * net_main.c, h2ded: removed the bool listening which is a leftover from
      the client-server application.
    * ifdef'ed out the SearchForHosts and Connect members of the net_driver_t
      structure for the dedicated server and removed the relevant stubs from
      server/net_dgrm.c.
    * use the standard "struct in_addr" instead of ints or longs for myAddr.
      from the tyrquake tree.
    * Added the "-bindip" option to hexen2: Enables the user to bind to a
      specific IP address on a multi-homed host rather than INADDR_ANY, ie.
      all interfaces. Ported from the tyr-quake tree. Note that using this
      option will prevent us from receiving broadcast packets, so server
      discovery on the LAN will not work if the server uses this option.
      Added -localip command line option: Enables the user to specify an IP
      to use in response packets for serverinfo and connect requests, but
      still binds to INADDR_ANY, therefore it can see the broadcast requests.
      This is really just a work around for the problems inherent when
      embedding the client/server IP addresses inside the network protocol.
      The specific example which drove this implementation is that of a
      multi-homed server who needs to listen on INADDR_ANY in order to
      receive broadcast server discovery requests but needs to know which
      of its IP addresses it should return to the client in the serverinfo
      reply. Really, the client should just look at the source address of
      the serverinfo reply, but we need to stay somewhat backwards compatible
      with old hosts.
    * includes cleanup.
    * net_udp.c: minor things.
    * updated release notes for the 1.4.2 version (2007-08-23.)

2007-08-20 (CVS):
    * fixed a crash when changelevel2 is requested for a non-existant map.
    * snd_win.c: minor cleanup for DirectSoundCreate call.
    * removed the ls_invalid thing which was supposed to prevent unnecessary
      multiple drawing of the loading plaque: first, I seem to have forgotten
      setting it to false after the first draw which made it non-functional
      (sigh). more importantly, multiple Con_Printf calls during the loading
      procedure clobber it: the only way of stopping that is cancelling the
      immediate screen update call in CON_Printf, but no console text during
      the loading stage doesn't look good, so let's remove it already.
    * updated the mission pack new game starting menu procedure and added
      comments to it.

2007-08-14 (CVS):
    * launcher: a more consistant fix for two toggle buttons.
    * launcher: renamed interface.h to launcher_ui.h, interface.c and
      compat_gtk1.h to gtk_ui.c and gtk_ui.h. adjusted the makefile
      accordingly. removed the .gtk1 binary name suffix from gtk-1.2
      builds.
    * updated the rpm spec file (removed the .gtk1 suffix from launcher
      gtk-1.2 builds)
    * updated the documents after the launcher changes.
    * launcher: removed widget_defs.h and merged its contents to gtk_ui.h.
    * launcher: removed the unnecessary delete_handler member from the
      PatchWindow structure.
    * launcher: several tidy-ups.
    * launcher: pointer for the patch thread return value should be unsigned.
    * printsys.h: added a Con_SafeDPrintf macro.
    * console.c: clean-up for Con_SafePrintf calls.
    * changed Con_Printf calls into Con_SafePrintf in the video initialization
      routines.
    * removed the windows message box asking the user for a retry when the
      sound hardware is in use, moved S_Init from vid_win.c to Host_Init.
      while we were there, moved Sbar_Init to a place before S_Init, so all
      init procedures loading some textures are all together.
    * in_win.c: changed Con_Printf calls into Con_SafePrintf in the initialization
      routines.
    * minor re-organization in VID_ChangeVideoMode procedure.
2007-08-13 (CVS):
    * launcher: fixed toggle events for a few buttons. from Steven.
    * gl_rmain.c: setting the v_gamma value isn't necessary, view.c
      already does that for us.
    * gl_model.c, gl_model.h, gl_rmain.c: glow code tidy-up: made the
      glow_color member of the model structure an array of 4 instead
      of 3. removed an unnecessary glTexEnvf call (setting TEXTURE_ENV_MODE
      to GL_REPLACE) from R_DrawAllGlows(). moved torch color setting
      from R_DrawGlow() to Mod_SetAliasModelExtraFlags(). minor clean-ups.

2007-08-09 (CVS):
    * launcher improvements: removed the "save options" button. options
      are saved auto-saved either upon program abort or upon launching
      the binary. moved the 'info and patch' string onto its button and
      removed the 'go' thing. moved the sample rate menu to the front
      tab. added a new 'extra arguments' widget which allows user's own
      additional arguments to be passed to the command line. this was a
      feature request in our tracker. moved all of gtk specific things
      into interface.c and made main.c and all others free of gtk. the
      public ui functions are exported from interface.h, so if someone
      wants to use another api (qt, kde, whatever) they only have to
      re-write interface.c. incremented the version number to 1.0.2. I
      might be able to do some user interface clean-up before the final
      release, but we'll see.
    * a few clean-ups in software renderer.
    * updated the TODO list (2007-08-09.)

2007-08-06 (CVS):
    * small documentation tidy-up.
    * minor clean-up for gl_texturemode and its menu entry.
    * sbar.c, small tidy-ups.
    * sbar.c: use the global MAX_INVENTORY definition instead of INV_MAX_CNT.
      they have the same meaning.
    * implemented Raven's D_PolysetDrawFinalVerts series of functions in C.
      the function affects drawing of alias models past a certain distance
      and the result is most noticable at lower resolutions.
    * updated the TODO list (2007-08-06.)

2007-08-01 (CVS):
    * opengl, clean-up of glBlendFunc calls: our default blendfunc is
      GL_SRC_ALPHA/GL_ONE_MINUS_SRC_ALPHA, no need to specify unless
      we use something else. added missing glBlendFunc restore calls
      in R_DrawAliasModel (gl_rmain.c) for the EF_SPECIAL_TRANS case,
      and in R_BlendLightmaps (gl_rsurf.c) for the GL_RGBA case.
    * fixed particle translucency in C-only software renderer.
    * trivial clean-ups (d_polyse.c).
    * more extern stuff. (btw, why is r_alias.c referencing transTable,
      and not mainTransTable ??)
    * d_scan.c, d_polyse.c, tidy-ups (trivial).
    * d_edge.c, d_surf.c, r_misc.c, more tidy-ups (trivial).
    * switched back to destroying and re-creation of the main window during
      resolution change for the windows opengl version: otherwise we may run
      into failures (at least it happens on my windows xp with an ati card).
      in order to overcome directinput loss, added IN_ReInit procedure which
      re-initializes directinput only.
    * added IN_ReInit to the SDL version for consistancy.
    * when touching entities, it is possible for the next linked entity to be
      freed, and thus unlinked. when this happens, make sure the pointer to the
      next entity to be touched gets updated appropriatly. from the quakeforge
      tree. this was a known quake bug on e2m2 with easy skill. see threads at:
      http://www.quakesrc.org/forums/viewtopic.php?t=3664
      http://www.quakesrc.org/forums/viewtopic.php?t=6633
    * dealt with some minor details in windows opengl version.

2007-07-29 (CVS):
    * added comment labels for texture modes in GL_Upload8.
    * updated the list of known bugs: added more info to the amd64 debug
      builds entry. removed the network non-interoperability entry, can't
      reproduce the report. 2007-07-26.
    * rearranged the compile instructions according to Levent's suggestions.
    * changed S_IFREG and S_IFDIR usage into S_ISREG and S_ISDIR macros.
      commented out one unnecessary S_ISREG check.
    * changed some of our variadic macros so that gcc extensions aren't used
      if running in c99 mode.
    * gl_rmisc.c: removed some dead code.
    * updates to gl_draw.c: texture mode >= 10, hence the sprite boolean in
      the GL_Upload functions were never set or used , removed them along
      wit the associated gl_spritemip cvar. instead of passing another arg
      to fxPalTexImage2D, made fxpal_buf a static variable. cleaned up some
      code in fxPalTexImage2D and GL_Upload8.
    * moved some extern declerations in draw.c and gl_draw.c to appropriate
      headers.
    * removed the gl_texsort patch from the extra patches for now. it doesn't
      work correctly after all.
    * tidy up in glquake.h. separated particle types and enums into the
      new particle.h header which is shared between opengl and software
      renderers and is included from d_iface.h or glquake.h.  also made
      flush_textures a variable for hexenworld again which is less mess
      for us.
    * re-diff'ed the gl_fog extra patch.
    * gl_model.c, trivial clean-up.
    * in_sdl.c, minor things.
    * removed some more of redundant extern declrarations from source files
      and moved smoe of them to proper headers. this is actually a big mess
      and I don't know there is an end to it.

2007-07-25 (CVS):
    * merged a new translucency mechanism for the sprite models. this fixes
      the demoness (succubus) fireball and powered-up acidball translucency.
      still using the original alpha code for the path where no translucency
      flags are set: pa3pyx's alpha code looks rather ugly.. besides, truly
      fixed the problem of extra lines being drawn: we've been calling the
      glTexParameterf after the glBegin call, not before, which was invalid.
      so, disabled the old, messy and incorrect work-around for the fireball
      lines bug.
    * Hunk_AllocName already clears the buffer: no need for manually clearing
      svs.clients, reverted that change from july 15.
    * updated documents for the known bugs and 1.4.2 release notes.

2007-07-22 (1.4.2-rc2 / CVS):
    * updated the compilation instructions.
    * minor documentation updates.
    * marked the snapshot of 22 July 2007 as 1.4.2-rc2.

2007-07-21 (CVS):
    * added comments on type sizes to q_types.h.
    * minor documentation updates.
    * rediff'ed some of the extra patches.
    * removed the unnecessary pak.h header and moved its contents to
      quakefs.c, its only user.

2007-07-20 (CVS):
    * renamed mousestate_sa to menu_disabled_mouse for better clarity.
    * updated documentation (BUGS, TODO, 2007-07-20.)

2007-07-19 (CVS):
    * in_win.c: minor directinput clean-ups. no need for SetCursorPos
      and ClipCursor calls in direct input mode. set mouseinitialized
      and dinput_init to false in IN_Shutdown.
    * vid_win.c: for compatibility with newer Windows versions, changed
      several SetWindowLong calls into SetWindowLongPtr.
    * gl_vidnt.c: made the windows opengl version to re-use its window
      and not destroy it during mode changes. with this, direct input is
      no longer lost after a vid_restart.
    * updated release notess for the 1.4.2 version (2007-07-19.)

2007-07-17 (CVS):
    * input drivers update: removed some redundant code from in_sdl.c,
      a left-over from from AoT from win32-to-sdl porting times. added
      button4 and mousewheel support to win32 dinput code (adapted from
      darkplaces). ported the dinput code from hexenworld to hexen2:
      works properly as it is but I lose input upon vid mode switching,
      to be looked into. some clean-ups elsewhere in the input code.
    * added LINK_DIRECTX as a new makefile option, defaulting to no. if set
      to yes, we shall link to dinput, dsound and dxguid. if set to no, the
      makefile will emit a DX_DLSYM definition to the compiler, we'll load
      the necessary symbols at runtime and we'll be compatible with ancient
      windows versions without a directx installation. the direct input GUID
      definitions taken from the quake3 source.
    * NET_SendToAll: renamed the cryptic state1 and state2 variables to
      something more indicative of their purpose. suggested by Tyrann.
    * in_win.c, snd_win.c: removed the outdated iDirect[xxx]Create definitions.
    * snd_dma.c: removed unused S_AmbientOn, S_AmbientOff and snd_ambient.
    * in_win.c: fixed the mouse button mapping after the recent changes.
    * removed all references to nonintel.c (not needed).

2007-07-15 (CVS):
    * network fixes and clean-ups:  removed remnants of dead functions
      (Datagram_Connect) from the hexen2 dedicated server. removed the
      dead variable configRestored from net_main.c (it used to serve
      something when the serial driver was compiled in quake). changed
      the blocktime argument of NET_SendToAll() to double (the comparison
      is against a double). fixed a bug in NET_SendToAll where it didn't
      skip non-connected clients. cleared svs.clients after allocating it.

2007-07-12 (CVS):
    * strlcat and strlcpy should include arch_def.h .
    * removed the splitbuffer, gamealive and soundalive members of the
      dma_t structure, they aren't used in any way. a few minor things
      here and there.
    * build system updates.

2007-07-10/11 (CVS):
    * made all of the sys* files to use the exact same platform version of
      Sys_DoubleTime. less mess.
    * updated some scripts.
    * updated platform definitions. updated the endianness header.
    * minor updates to some debugging commands.
    * big update of platform definitions.
    * even more of platform definition updates.

2007-07-09 (CVS):
    * msg_io.c: trivial clean-up.
    * huffman.c: fixed a wrong ifdef.
    * minor huffman cleanups.
    * more huffman cleanup: moved all of the debug output stuff to
      huffman.c and made almost all of the debug vars static to it.
      only PrintFreqs() is exported and we don't call it anyways.
    * huffman: other minor things.
    * fix for the z/overlay problem in the non-intel sofware renderer code
      from Juraj Styk:  "The problem was located in R_LeadingEdge() and
      R_LeadingEdgeT() in part that tries to determine which surface should
      be drawn on top another. One part of the test compares z value from
      one surface with z value of another multiplied by constant value of
      (1.01 and 0.99 in this case ). It turns out that this constant is too
      big (asm code used 1.001 and 0.999) and it can cause problem when two
      surfaces overlay one another and are separated only by a little space."
      Juraj, you are the man!
    * updated the list of known bugs.

2007-07-06/08 (CVS):
    * updated the release notes for 1.4.2 (2007-07-06.)
    * small updates to the 3dfx gamma library.
    * renamed the HX2_ALSA macro to ALSA_FUNC.
    * dlsym fixes: added proper casts.
    * updated the external music extra patch after the dlsym changes.
    * updated the lib3dfxgamma exmaples after the dlsym fixes.
    * updated the win32 headers: switched to using the dx6 headers from the
      libsdl site. added back the schitech's mglpoint.hpp and mglrect.hpp
      headers for C++ compatibility.
    * gl_mesh.c: worked around a type-punned pointer. adapted from quakeforge.
    * added proper casts to several alloc calls and assignments. avoided
      new and this usage as our var names. this makes HoT compilable by
      c++ compilers (g++). there are many warnings, but no errors. utils
      and others will be checked, too.
    * g++ casts and stuff, part 2: the utilities. added proper casts to
      several alloc calls and assignments. avoided new and this usage as
      our var names. this makes the utils compilable by g++. there are
      many warnings, but no errors.
    * fixed the gl model borkage after the previous large commit. how
      did this sneak in anyway.. there may be even more.

2007-07-04 (CVS):
    * minor documentation updates.
    * instead of pointing to a stack buffer, the command buffer is allocated
      dynamically (Hunk_Alloc or malloc) again. with this, the hexen2 binaries
      compiled with gcc-4.0.x in unit-at-a-time mode doesn't segfault anymore.
      did the same thing to the client message buffer and net message buffers
      of hexen2, as well. added the old SZ_Alloc functionality to SZ_Init in
      order to handle allocations.
    * adjusted the makefiles after the sizebuf allocation changes. if one
      specifically wants to disable the unit-at-a-time mode, he can either
      edit the the makefiles for cflags, or he can specify it on the command
      line, like: make NO_UNIT_AT_A_TIME=1 [other options]
    * updated the COMPILE document after the gcc-4.0.x unit-at-a-time
      changes.
    * documented the new SZ_Init behavior in sizebuf.h.
    * made the cvar r_transwater to really act as an on/off switch
      for translucency: setting of the SURF_TRANSLUCENT flag for
      water used to depend on r_transwater in Mod_LoadFaces(), and
      since it is only run at the level load if the cvar were set
      to 0 at that time the flag wasn't set and water translucency
      switching wouldn't happen. the previous behavior was probably
      intended to avoid the translucency procedures when r_transwater
      was set to 0. switching works now.
    * gl_mesh.c, minor clean-up: no need for the static paliashdr pointer.
    * utils: removed the bogus gfx/palette.lmp string check from the new
      version of hcc.
    * updated the release notes for the upcoming 1.4.2 version.

2007-07-01 (CVS):
    * Fix (work around) for the spans problem of the non-intel software
      renderer code. From Juraj Styk. Actually, the whole FoundTrans and
      TransCount usage will need a serious audit/clean-up.
    * updated the list of known bugs. updated the todo list.

2007-06-30 (CVS):
    * sys.h: minor clean-ups, removed stale comments.
    * updated the mkrelease script.
    * removed or commented out a lot of non-functional variables. surely
      there are some more, but these are the ones I'm sure about.

2007-06-28 (CVS):
    * utils/dcc: fixed segfaults which were due to an array going out
      of bounds in GetReturnType(). now that the culprit is identified,
      re-applied the static patch. made several clean-ups.
    * utils: dcc, hcc, hcc_old: constifications.

2007-06-27 (CVS):
    * small updates to the documentation.

2007-06-26 (CVS):
    * minor warning fixes, etc.

2007-06-25 (CVS):
    * updated the list of known bugs.

2007-06-24 (CVS):
    * Added T2 versions of D_PolysetDrawSpans8T2 and co. Directly from Juraj Styk:
      "D_PolysetDrawSpans8T2 is very similar to D_PolysetDrawSpans8T. The difference
      is that D_PolysetDrawSpans8T2 perform one more test in which it test if color
      of rendered skin texture is odd or even (assembler code checks if lowest bit
      in register containing color index is 0 actually). If it is even it skips the
      phase when skin color is mixed with color from display buffer and uses skin
      color instead. So part of skin with even numbered colors would be rendered
      opaque while parts with odd numbered colors would be semitransparent and parts
      with color 0 would be fully transparent." Therefore, in D_PolysetDrawSpans8T2,
      if (color_map_idx % 2 == 0) *lpdest = btempl; is just done, instead of doing
      *lpdest = mainTransTable[(btemp<<8) + (*lpdest)];

2007-06-22 (CVS):
    * conproc.c: minor fix to the CreateThread call.
    * made IN_Commands() to return without operation if in_joystick is set
      to 0. this might prevent windows xp weirdos that a few people have
      been reporting: player continuously spinning around on a system with
      no joystick at all..
    * win32 midi: fixed debug builds. removed some commented out code. renamed
      two private procedures for better clarity.

2007-06-18 (CVS):
    * updated Xcode project files for hexen2. from Levent.

2007-06-16 (CVS):
    * added initial support for software renderer without intel assembly:
      lifted from the hexen2 PSP port (http://jurajstyk.host.sk/) of Juraj
      Styk with a few fixes and adjustments. works fairly most of the time,
      even gives a 55.1 fps timedemo for demo1 with viewsize maximized at
      320x240 resolution on a pentium3-800 (256 kb cache size) whereas the
      binary compiled with intel assembly gives 71.7 fps. tested on amd64,
      x86 and ppc.
      known problems: the span drawer gets crazy sometimes and draws a span
      from a point toward the rightmost end of the screen. the places and
      the frequency it happens seem to vary by the gcc version used. to be
      looked into.
    * d_edge.c, d_surf.c, r_misc.c, link_ops.h: fixed a few probable 64
      bit compatibility problems. we now require stdint.h, included from
      q_types.h.
    * fixed more of probable 64 bit compatibility problems. a few minor
      clean-ups here and there.
    * added back the near versions of calls in the assembly files in
      commented out form for reference. before, I removed the nears for
      yasm support, otherwise it used to fail with an error message:
      'no NEAR form of that jump instruction exists'.
    * added cvs version headers to the assembly files.
    * now that the software renderer clients can now be compiled on non-intel,
      removed the x86 exclusive arch dependency from the rpm spec file.
    * updated the documents after the non-intel software renderer changes.
      removed the NonIntel.log and NOTES.porting files.

2007-06-15 (CVS):
    * utils: fixed a stupid bug in qdir.
    * draw.c, gl_draw.c: fixed endianness problems.
    * a little more re-arrangement of asm files.

2007-06-12 (CVS):
    * vid_win.c: removed VID_PostInitFix which is dead for quite some time.
      switched back to Raven's original code in D_ShowLoadingSize for now.
    * draw.c: Draw_EndDisc code is causing problems, at least with mgl-win32.
      the sdl driver seems to work fine either way. Raven's original source
      also had it disabled somehow. disabling it for now.
    * draw.c: updated comments in Draw_EndDisc.
    * launcher: minor typo fix.
    * minor typo fix in documentation. added 'project peanut' to the mods
      section in the README.
    * removed Q_malloc and Q_free: not used. still keeping FS_LoadMallocFile,
      in case it would be needed someday.
    * updated the TODO list.
    * net_dgrm.c: clean-up for Datagram_Reject.
    * docs/README: minor typo fixes.

2007-06-09 (CVS):
    * gl_vidsdl.c: avoid null names in the error message when we can't load
      the gl library.
    * vid_win.c: avoid compiler warnings about mstretch and stretchedmode might
      being used uninitialized.
    * made a few more vars/functions static (vid* files). these should
      be leftovers for quite some time, I think.

2007-06-08 (CVS):
    * made the V_BonusFlash_f, V_DarkFlash_f and V_WhiteFlash_f (bf, df
      and wf) command functions static to view.c. while there, added the
      white flash (wf) command to hexenworld client.
    * the cvar sv_sound_distance will no longer be written to the configs:
      it is a dead cvar, the C code doesn't make use of it, yet the HexenC
      still references it through worldspawn(). removed it from the default
      config files, too.
    * launcher: minor clean-up.
    * utils/hcc: minor clean-up.

2007-06-07 (CVS):
    * X/SDL gamma is of no use for old voodoo1/2, thus, adjusted the
      USE_3DFXGAMMA ifdefs.
    * bound the gamma cvar value in V_CheckGamma() in case someone messes
      with crazy values without using the menu system.
    * changed the GAMMA_MAX to a float value definition.
    * fixed a minor compiler warning.

2007-06-05 (CVS):
    * gl_vidsdl.c: added a missing semicolon to fix compilation of the gamma
      ramps code.

2007-06-04 (CVS):
    * bound the linux 3dfx glide gamma hacks for the old Voodoo Graphics and
      Voodoo2 cards to a new makefile option USE_3DFXGAMMA, enabled by default.
      the compiler generates code only if it sees the USE_3DFXGAMMA definition.
      at runtime, the hack is activated by the -3dfxgamma commandline argument
      only on the old 3dfx cards, but this is for completeness.  also did some
      minor cleanups and fixed a float division bug with GAMMA_MAX.
    * minor cleanup.
    * launcher: made the installation directory widget to grey-out during
      the pak patching process.
    * launcher: exclude the trailing slash when determining the work directory.
    * launcher: patch process should search its data under the specified
      installation directory.
    * launcher: removed unnecessary character check from basedir trailing
      slash removal.

2007-06-02 (CVS):
    * removed unnecessary Cvar_LockVars. used Cvar_LockVar instead.
    * fixed a compilation error when PARANOID option is set:
	world.c: In function 'SV_RecursiveHullCheck':
	world.c:701: error: 'sv_hullmodel' undeclared (first use in this function)
	world.c:701: error: (Each undeclared identifier is reported only once
	world.c:701: error: for each function it appears in.)
	world.c:701: warning: passing argument 2 of 'SV_HullPointContents' makes integer from pointer without a cast
	world.c:701: warning: passing argument 3 of 'SV_HullPointContents' makes pointer from integer without a cast
	make: *** [world.o] Error 1
      I really don't know how many of those paranoid checks actually make sense,
      this is just a compilation fix.
    * updated the comments about the PARANOID compile time option.
    * now that the net_vcr is removed, net_numdrivers and net_numlandrivers
      can be made const again.
    * changed the registration order of deathmatch and coop cvars, so
      that hwsv doesn't spit out a silly run time warning.

2007-06-01 (CVS):
    * cd_null.c: fixed compilation.

2007-05-31 (CVS):
    * launcher: cleaned-up game mod list building (the first entry in the
      lookup table is always available).
    * launcher: made read_config_file to return proper value (the return
      value isn't used, yet, though.)
    * launcher: added ability to specify a different data installation
      directory.
    * launcher: incremented the version to 1.0.1 .
    * updated the documents after the launcher changes.

2007-05-23 (CVS):
    * made the inventory bar to wrap around. from Steven.
    * updated the list of known bugs.
    * minor update to the xdelta makefile.

2007-05-21 (CVS):
    * minor documentation updates. from Steven.
    * updated the Xcode project files for Mac OS X. from Levent.
    * genmodel/loadtri.c: fixed a format warning on x86_64.

2007-05-20 (1.4.2-rc1 / CVS):
    * marked the snapshot of 20 May 2007 as 1.4.2-rc1.

2007-05-15 (CVS):
    * better code for the progs data alignment. adapted from quakeforge.
    * eliminated some unnecessary things from h2ded version of model.c.
      put proper ifdefs around the Mod_ForName calls in pr_cmd.c (they
      are only for alias and sprite models which aren't necessary for
      the dedicated server.)
    * tiny model clean-up. removed the clipbox, clipmins and clipmaxs members
      of the model structure, too: the header says it to be 'solid volume for
      clipping (sent from server)', but the server doesn't do that and cl_ents
      does a bogus check for clipbox in CL_SetSolidEntities which is removed
      now.
    * added more informative hunk tags to model.c of hwsv.
    * added proper ifdefs around the Mod_ForName calls in pr_cmds.c of
      hwsv: it is now more similar to the hexen2 version.
    * added cvs version headers to the makefiles.

2007-05-13 (CVS):
    * snd_win.c: clean-up.
    * cd_win.c: clean-up.
    * made lmp2pcx to load the hexen2 palette data at runtime from the
      palette.lmp file, rather than embedding the palette data itself:
      potential license issues for now. did some additional cleanup here
      and there.
    * removed the hexen2pal header from the lmp2pcx directory for now
      (potential license issues...)
    * made jsh2color to use the bspfile object from utils/common and
      moved the specific stuff to to litfile.{c|h} and jscolor.{c|h}
      files. this beast actually requires ~much~ more cleanup.
    * jsh2color cleanups #2: colour -> color.
    * jsh2color cleanups #3: moved the DecisionTime thing to jscolor.c.
      fixed the declaration of newdlightdata in jscolor.h.
    * re-diff'ed some of the extra patches after the recent changes.
    * added __thisfunc__ as a new macro and added preprocessor stuff
      for its definition in order to workaround different __FUNCTION__
      and __func__ availability and behavior. __func__ of C99 is the
      default.
    * replaced all __FUNCTION__ usage with __thisfunc__ .
    * updated the variadic macros for compilers other than gcc.
    * workaround for an lcc compilation error. lcc currently doesn't
      compile, though: it doesn't like nested variadic macros such as
      those in model.c: to be looked into.
    * several compile fixes. although I tried compiling with lcc, it seemed
      broken when it comes to handling variadic macros.
    * hexenworld//pmovetst.c: commented out unreachable code in
      PM_TestPlayerPosition(). it seems like a mess, though. I need to
      compare QW and HW codes for this function and also for others such
      as NudgePosition(), someday.

2007-05-09 (CVS):
    * enabled the integer value member of the cvar structure.
    * replaced the float value usage of cvars with integer values wherever
      possible.
    * fixed my viewsize borkage after the cvar integer change. a few additional
      tiny clean-ups.
    * utils: added copyright notes for the hexen2 palette data.

2007-05-05 (CVS):
    * some reorganization in the utils: moved bspfile.{c|h}, scriplib.{c.h}
      and hwal.h to the common directory. created texutils as a new group of
      utilities. moved bsp2wal to texutils/bsp2wal. added the lmp2pcx tool
      to texutils. added several palette files to texutils.
    * updated the utilities build scripts after the texutils change.

2007-04-30/05-01 (CVS):
    * snd_alsa.c, sv_move.c: minor fixes.
    * menu.c, sbar.c, world.c: minor cleanups.
    * cvar.c: reverted the %g specifer change in Cvar_SetValue. manually
      removing the trailing zeroes again.
    * midi.c, midi_sdl.c, midi_mac.c, cd_bsd.c, cd_linux.c, cd_sdl.c: updated
      cdaudio and midi volume setting procedures.
    * updated release notes for the upcoming 1.4.2 release.
    * gl_model.c, gl_rmain.c, gl_rsurf.c, gl_warp.c: more clean-ups.
    * gl_vidnt.c, vid_win.c, midi.c, midi.h, mstrconv.c: more clean-ups.
      mostly whitespace.
    * vid_win.c: reverted the MAX_DESC change from the previous commit in
      vid_win.c. the number 13 is relied on in the menu draw.
    * cd_null.c, gl_vidnt.c, vid_win.c, winquake.h: cleanup for
      CDAudio_MessageHandler of win32 version.
    * midi.c: added a success message to win32 midi init.
    * midi.c: win32 midi: prevented MMSYSTEM errors from SetAllChannelVolumes()
      when midi is not alive.

2007-04-28/29 (CVS):
    * fixed multiplayer episode selection in menu.c. performed small clean-ups.
    * more menu clean-ups.
    * added a new GAME_REGISTERED_OLD flag. added new compile time options
      ENABLE_OLD_RETAIL and ENABLE_OLD_DEMO, disabled by default. actually
      the old retail (cdrom 1.03) version seems to run fine but it isn't
      tested and may lead to unexpected behavior, therefore not enabled by
      default. the old demo, on the other hand, does not run as it is, the
      option is added only for reference. I still lack detailed information
      on the oem (the Matrox m3D bundle) version. along with these changes,
      tweaked the launcher information screen.
    * launcher/games.c: fixed typo. ouch..
    * utilities: several fixes for dcc.
    * whitespace clean-up in dcc.

2007-04-26 (CVS):
    * updated the release notes for the upcoming 1.4.2 release.
2007-04-25 (CVS):
    * gl_rlight.c, gl_rmain.c: Lighting fixes and improvements:
      Removed the broken JSHexen2 version of RecursiveLightPointColor and
      merged LordHavoc's implementation from QSG. Made R_DrawViewModel to
      set shadelight along with ambientlight; R_DrawAliasModel no longer
      needs to calc light for the viewmodel.  R_DrawAliasModel now honors
      the EF_ROTATE flag for the GL_RGBA path: bonus items are no longer
      dark and look the same way they do with GL_LUMINANCE lightmaps.
      R_DrawAliasModel now checks the model flags first before doing light
      calculations: unless the model is MLS_NONE, lighting information is
      not used, no need to spend time with R_LightPoint stuff.
      All of these changes had to be done zillions of months ago, how we
      missed them for this much time is a mystery...

2007-04-21/23 (CVS):
    * updated the build_all scripts for the utilities. fixed its README file.
    * added a findfirst/findnext implementation to the utilities io library.
    * minor fix to utilities StripExtension function.
    * removed strlcat and strlcpy from the utilities build: they aren't actually
      used there, yet.
    * made the bsp2wal tool to report the texture dimensions it extracted.
    * made some debug messages to appear in developer mode only.
    * minor cosmetic update to the utilities' Error report.
    * added the -miponly option to the bsp2wal tool. did some clean-up.
    * changed the asterix replace character from dash to underscore.

2007-04-16/20 (CVS):
    * added an extra check to inverse_pal loading to make sure that LoadStackFile
      didn't allocate it on the hunk.
    * minor cleanup in launcher/config_file.c.
    * utilities: fixed the utterly broken project path decision in qbsp. it
      doesn't scan for a maps directory anymore.
    * utilities: added the new bsp2wal tool: It extracts all textures from
      a bsp file. the WAL format, based on a quake2 WAL structure and put
      together by Jacques 'Korax' Krige, is documented in the hwal.h header.
    * utilities: moved some definitions from bsp2wal.c to hwal.h header.
    * added new cvar r_texture_external: whether to use external textures.
      defaults to 0.
    * added abilitiy to load external wal texture files instead of internal
      pixel data of the brush model. works for both the opengl and software
      renderer versions. adapted from Jacques Krige's code. depends on the
      r_texture_external cvar being set to 1.
    * finally merged quakeio stuff into quakefs. separating the two didn't serve
      to much, so this seemed best. this will be the final api in 1.4.2-final.
    * updated the compiler.h header.
    * bsp2wal.c, bspfile.c: constifications.
    * moved the in-memory structures from pakfile.h into a new pak.h. they
      are only used by quakefs. put a copy of the pakfile header into the
      utilities common directory and used it in relevant places.
    * resolved pakfile type conflicts resulting from the previous commit.
    * removed the now unnecessary _FUNC_PRINTF macro and directly used
      __attribute__((format(printf,n,n+1)))
    * added the noreturn attribute to certain functions.
    * renamed dedicated server (h2ded) version of Host_Error to SV_Error,
      which is of noreturn attribute, and defined Host_Error as SV_Error.
    * reverted the dedicated server Host_Error name change: unnecessary.
      properly ifdef'ed the header for two different versions.
    * some fixes to, and a better documentation for SetQdirFromPath(). this
      functionality is actually a major pain...
    * minor fixes in the utilities io functions.
    * utilities: added the FileTime utility function.
    * tiny clean-up in scriplib of genmodel.

2007-04-15 (CVS):
    * cvar update: added a new CVAR_REGISTERED flag set during the initial
      registration process. Cvar_RegisterVariable doesn't allocate a dummy
      string for the var anymore, but sets the string ptr to NULL. Cvar_Set
      doesn't blindly free and reallocate string pointers anymore: it only
      allocates at first time registrations and when the string size differs
      from the original. Cvar_Set returns without doing anything if string
      value is not changed unless it is a first time registration. the
      notifications in Cvar_Set are done only if there was a change. the
      hexenworld and hexen2 versions of cvar.c are synchronized.
    * cvar updates, #2: added a new function Cvar_FindVarAfter and used it
      for CCREQ_RULE_INFO responses in net_dgrm.c and for several things
      in cmd.c. this ends unnecessary global exposure of cvar_vars. found
      this in the darplaces tree.
    * misc documentation updates.
    * launcher: many clean-ups and tweaks.

2007-04-14 (CVS):
    * zone.c: removed unnecessary conditions from Z_CHECKHEAP.
    * quakefs: revised pak data checking.
    * quakefs: more revisions in pak data checking.
    * major updates in the launcher: moved all of the callbacks into the
      interface.c and removed unnecessary pointer arguments passed to them.
      many smallish code clean-ups and whitespace clean-ups here and there.
      created a new games.c and moved mods scanning into it. new feature:
      the launcher now scans the installation directory against known game
      versions for pak file health, and pops up the patch window with a
      short report if it finds something bad.  new feature: the mission
      pack is disabled if it isn't present or if the base game data isn't
      the retail version. similarly, the hexenworld option is disabled if
      it isn't present. new feature: closing the window is now disabled
      while the patch is in progress. the init sequence is changed: we now
      scan game the installation first, then read the config file, register
      a ui_init() function and then do gtk_main(). the return value from
      the patch process now has meaning. the version number is now 1.0.0.
      probably more things that I forgot writing here.

2007-04-11 (CVS):
    * isDedicated usage clean-up.
    * moved the global current_skill to sv_main.c which is its correct place.
    * cache memory isn't used in dedicated server applications. disabled
      its compilation in h2ded and hwsv.
    * maintained missing synchronization between h2 and h2w versions of quakefs.c.
    * ifdef cleanup for Draw_BeginDisc and Draw_EndDisc.
    * zone.c: fixed segfault. silly me...
    * snd_dma.c: initialize the known_sfx and snd_scaletable arrays even if
      the driver initialization fails.
    * re-diff'ed the snd_restart-experimental extra patch.
    * removed gl_test.c and all GLTEST things.
    * zone.c: fixed debug builds.
    * restricted the sys_memory, sys_cache and sys_stats commands to debug
      builds only. if required, the Z_DEBUG_COMMANDS definition in zone.c
      can be edited to change this. completely disabled the Z_CheckHeap()
      usage. if required, Z_CHECKHEAP definition in zone.c can be edited to
      change this in debug builds only.
    * added a sys_zone console command for debug builds.
    * zone.c: fixed debug builds (again...)
    * added the hexenworld MGNET compile time option to h2option.h.

2007-04-10 (CVS):
    * added a short Makefile.xd for building xdelta quickly without autotools
      support. adjusted the Makefile of the launcher accordingly. updated the
      relevant docs.
    * xdelta makefile: removed some of my obsoleted comments.
    * sha is unused in the present xdelta code. removed it from the build.
    * now that xdelta can build without autotools, adjusted the rpm spec file
      accordingly.
    * gl_vidsdl.c, gl_vidnt.c: fixed more of those stupid -Wshadow warnings.
    * sys_unix.c, sys_win.c: cosmetic stuff - updated some debug messages.
    * revised zone memory usage: we now initialize a 256 KB secondary zone for
      static textures (sec_zone), which is especially useful for the software
      renderer. this is done only for the client-server binary, the dedicated
      server apps obviously don't need it. the loading of gfx.wad now uses this
      secondary zone and its reloading (either for video restarts, or through
      Draw_ReInit) is completely safe because we do not rely on its being the
      same file. if a mod ever uses a different gfx.wad, game directory changes
      now correctly reload all of the new files through Draw_ReInit: hexenworld
      currently makes use of DrawReInit and will benefit from this. if hexen2
      supports active game directory changing in the future, it'll benefit from
      this too. as a result of these changes, Z_Malloc now takes zone_id as its
      second argument, all of its calls in the tree are updated accordingly.
      the behavior of Z_Realloc is a bit curious now: a buffer allocated on one
      zone may be reallocated on a different zone, now. Z_ClearZone and Z_TagMalloc
      were never (and should not ever be) intended for public usage: they are
      made private to zone.c now.

2007-04-09 (CVS):
    * fixed the evil of LoadStackFile in loading of the big char widths, we
      are using temp allocation now. added a warning message for an unlikely
      case of a different sized file.
    * updated the LoadBufFile procedure to check for nul buffers. added a
      warning message for cases where the given buffer is of insufficient size.
      provided a better documentation for it.
    * updated the documentation about the evils in our re-loading of gfx.wad.
      updated W_LoadWadFile after the changes in LoadBufFile.

2007-04-08 (CVS):
    * killed COM_InitArgv in hexenworld master server and rearranged things
      to be similar to the game engine.
    * demo recordings covering multiple episodes: stop recording if this is
      a multiplayer game.
    * gl_vidsdl.c, gl_vidnt.c: if we aren't caching model meshes, no need to
      create the relevant directories under userdir.
    * gl_draw clean-up: draw_chars, draw_smallchars and draw_menufont need not
      stay resident. switched from LoadHunkFile/Hunk_FreeToLowMark method to
      LoadTempFile in Draw_Init. took the width/height of bigfont2.lmp from the
      loaded data instead of using hardcoded 160*80 (other places in the code
      relies on this 160*80, though.) gathered pic load failure checking into
      a tiny static procedure named Draw_PicCheckError.
    * loading of bigchar widths file didn't check the result from LoadStackFile.
      made it to check for NULL, and made it to generate the width table in case
      of loading failures.
    * loading of the inverse palette didn't check the result from LoadStackFile.
      made it to check for NULL, and made it to generate the palette in case of
      loading failures.
    * several small things all together: made the load command to get rid of
      console or menu. removed the cvar cl_warncmd. tweaked the init sequence:
      dedicated servers initialize less subsystems: thus V_Init, Chase_Init,
      Key_Init, Con_Init and M_Init, and loading of gfx.wad happen after
      R_InitTextures, and only for graphical clients. the dedicated servers do
      not exec hexen.rc anymore, they just process the command line arguments.
      h2ded and hwsv flush the command buffer from execing server.cfg before
      they process the command line arguments.
    * fixed the silly typo in SV_UserInit from the previous patch.
    * gl_vidsdl.c, gl_vidnt.c: if we aren't caching model meshes, no need to
      create the relevant directories under userdir. (properly conditionalized
      the dirname variable.)
    * more small things: made the connect command to get rid of console or menu.
    * more small things: removed unnecessary code from the playdemo command
      which was supposed to serve getting rid of console or menu.

2007-04-07 (CVS):
    * removed the vcr facility: net_vcr is useless today and now it is one
      less thing to worry about and maintain.
    * removed the global host_time: it was mostly used in net_vcr. now that it
      is removed, replaced the rest of its usage with realtime and killed it.
    * tiny clean-up in Cmd_Argv().
    * tiny clean-up in COM_FileBase().
    * clean-up in Cvar_SetValue (use %g to get the shortest representation).
    * more __FUNCTION__ macro usage: cl_main.c.
    * replaced MAX_IDENTIFIER with MAX_QPATH in glt structure.
    * misc header clean-ups: client.h, keys.h.
    * made M_DrawBigCharacter static to menu.c and moved its content who
      touches the vid buffer into the new callback Draw_BigCharacter in draw.c
      and gl_draw.c. with this arrangement, BigCharWidth need not be a global
      anymore, it is static in menu.c now.

2007-04-05 (CVS):
    * net*: more const correctness stuff.
    * net_udp.c, net_wins.c: fixed a long-standing 0 byte udp packet DoS bug
      (from the quakeforge tree): hexen2 checks to see if there were any bytes
      to be read and if there were 0 bytes, just carying on without reading
      anything. It seems that the 0 byte packet was blocking the queue and so
      a 0 byte recvfrom is needed to make sure it gets removed.
    * keys.c: minor clean-up.
    * net_dgrm.c: clean-up of duplicated code for server sending rejects.
    * introduced DEBUG_Printf, which is equivalent to Sys_DPrintf in debug
      builds but generating no code for normal builds.
    * reserved some spamming debug messages to debug builds only.
    * pr_edict.c: changed the realloc message to a Sys_DPrintf.
    * midi_sdl.c: clean-up of debug messages.
    * used SDL_mixer music type enums in the external-music-file-support patch.

2007-04-03 (CVS, 1.4.2-pre3):
    * fixed the doWhiteFlash server message: this thing is a mission pack
      crap (called from the buddha_die() function of buddha.hc upon death
      of Praevus) and it used to do a V_WhiteFlash_f(), affecting the local
      client only. naturally, the recorded demos didn't carry the message
      and the flash didn't appear. this is the best solution I found.
    * makefiles: for non-x86 but x86_64 cpu, do not disable x86 assembly if
      compiling as 32 bit, otherwise the software renderer fails compilation.
    * hexen2 dedicated server: Host_Init must check sv.active, not sv.name[0]
      before starting the demo1 map.
    * hexen2 dedicated server: Host_Map_f must rely on sv.active, not sv.name[0]
    * hexen2: fixed mapname reporting for dedicated servers.
    * killed some unnecessary r_local.h includes.
    * added qio_filepath: it points to the path of the last file opened through
      QIO. note: not meaningful (NULL) for files in a pak.
    * midi changes: SDL and QuickTime midi will not blindly cache the midi
      files in userdir/gamedir/.midi anymore. if a music file is not in a
      pak file, it will be used directly. otherwise it will be extracted
      directly into the root of userdir as tmpmusic.mid. the userdir/.midi
      cache directory is obsoleted now.
    * since the userdir/.midi directory is now obsoleted, it no longer needs
      to be moved by MoveUserData().
    * re-diff'ed the external-music-file-support patch after the midi changes.
    * hexen2ded: in PF_lightstylestatic copy the value to d_lightstylevalue
      (from the hexenworld server version).
    * removed an old #if 1 of mine from Chase_Update.
    * updated the comments in the external-music-file-support patch.
    * incremented the engine version to 1.19 for Hexen II and 0.19 for HexenWorld.
      incremented the gamecode version to 1.19 for consistancy with the engine
      version. updated the relevant documentation and scripts. marked the snapshot
      of today (Apr. 03, 2007) as 1.4.2-pre3.

2007-04-01 (CVS):
    * cl_parse.c: killed some dead code.
    * 64 bit support: the QuakeC/HexenC interpreter used to use string pointer
      offsets from pr_strings even when the pointers lead to engine data which
      is often well out of 32bit range on a 64bit architecture and they lead to
      crashes. this is resolved by the newly introduced PR_SetEngineString and
      PR_GetString functions which turn any address outside the pr_strings area
      into an index into a table of engine string addresses, adding new string
      addresses to the table as needed. thanks to LordHavoc for pointers about
      this. the engine strings table is allocated with 256 entries at first
      (see the PR_STRING_ALLOCSLOTS definition in pr_edict.c) and its size is
      incremented by 256 as needed and re-allocated on the zone. managing that
      allocation and reallocation is accomplished by the newly added Z_Realloc
      function. sv.model_precache, sv.sound_precache and sv.lightstyles are now
      strings instead of pointers to strings. changed pr_string_temp to cycle
      between 16 static buffers in order to handle many prints in ftos and vtos
      calls. killed the non-functional sv.max_edicts: it always used to be set
      to MAX_EDICTS. probably a few clean-ups here and there also sneaked in.
    * makefiles: automatically disable ia32 assembly on cpus other than x86.
    * pr_edict.c: fixed a compiler warning about printf format string.
    * in_addr_t does not exist in win32 headers: defined it as the type of the
      S_addr of in_addr structure in our net_sys.h header. changed the types of
      banAddr and banMask to in_addr_t in net_dgrm.c: the type may be defined
      differently on different OS'es and/or arch'es.

2007-03-29 (CVS):
    * several clean-ups in pr_cmd.c and pr_edict.c.
    * fixed a few -Wshadow warnings which were still present. the warning
      about channels was when we compiled the sdl midi option and it was
      arising due to clashes with the SDL_mixer.h header. stupid, really,
      but it is gone now.
    * minor tidy-ups in zone.c. also fixed an erronous size check.
    * sys_unix.c: made Sys_FindFirstFile to use Z_Malloc instead of malloc.
      quakefs.c: likewise for the maplist command's string allocation.
      hexenworld/huffman.c: instead of malloc'ing, allocate HuffTree on the
      hunk (Hunk_HighAlloc).

2007-03-25 (CVS):
    * more types clean-up in hexen2 net files. also removed the unused
      SchedulePollProcedure from hexen2 dedicated server. removed unused
      extern PrintStats from net_main.c.
    * made some more the functions in sv_main.c and sv_user.c of hexen2 static.
    * removed the unused externs playercolor and playername from net.h of
      hexen2. renamed plyrcolor back to playercolor in Host_Color_f (it was
      previously giving shadowed global warnings against net.h.)
    * moved initialization of plyrtex to Draw_Init().
    * renamed X11_PATH to X11BASE, some other open source quake engines also
      use that name. documented it in the relevant makefiles.
    * mapname reporting tidy-up.

2007-03-23 (CVS):
    * fixed compilation on windows.
    * makefile fixes: COMPILE_32BITS must also affect DEBUG builds.
    * added extra optimization flags to hexenworld server build. misc clean-ups
      in the makefile.
    * made win32 version of hexenworld server to use timeGetTime(), similar
      to hexen2 dedicated server. misc clean-ups in its sys_win.c.

2007-03-21 (CVS):
    * rpm spec file: fixed renamimg of xdelta binary.
    * net_dgrm.c: types clean-up.

2007-03-20 (CVS, 1.4.2-pre2):
    * net_main.c: cleaned-up the network availablity error for dedicated servers.
    * net_main.c: added commentary on the driver checks in the code.
    * host_cmd.c, sv_effect.c: reverted the rb mode fopen change and replaced
      the ftell/fread usage with fgetc and ungetc.
    * cd_sdl.c: fixed a format string error.
    * menu.c: renamed ReInitMusic to BGM_RestartMusic and cleaned it up.  this
      thing will probably require more care in the future: should we add bgmusic.c
      and bgmusic.h??
    * host.c, host_cmd.c: clean-up.
    * re-organized the asm directory.
    * updated the mkrelease script.
    * marked the snapshot of 2007-03-20 as 1.4.2-pre2.

2007-03-18 (CVS):
    * even simpler solution for the mission pack intro screen scrolling.
    * origin fixes for tomed fires of vorpal sword and purifier: paladin used
      to fire them always from the non-crouched eye position, and it was even
      the worst when he was looking up (and down). I won't be shooting my back
      again when I stand just in front of a wall and fire by tomed purifier
      to the sky from now on ;)
    * updated the documentation and the scripts, etc, for the new gamecode
      version 1.17.
    * updated the print message about svc_mod_name and svc_skybox.
    * host_abortserver is a client thing only and is static to its own file.
      removed setjmp.h from the common headers.
    * moved the userdir definitions to its own header.
    * moved compiler.h and arch_def.h includes from quakedef.h to quakeinc.h.
    * killed h2ded.h and entstate.h. moved the usercmd, entity states and
      client frames stuff to protocol.h. did some whitespace cleaning.
      maybe a few things can still bee moved from quakedef.h to protocol.h,
      but enough for now.
    * minor commentary updates.
    * fixed net driver checks in hexen2 dedicated server: for the client-server
      case, driver == 0 means it's a local connection (loop driver), but for the
      dedicated case, loop isn't compiled.. sigh, this took me a lot of time to
      notice and fix.
    * removed the unused var stats_restored from SV_SpawnServer.
    * updated the RelNotes file for future 1.4.2.

2007-03-16 (CVS):
    * fixed the mapname reporting in the map command: removed the defunct
      mapstring member of the client_static structure and added a mapname
      member to the client_t instead, which holds a copy of the latest map
      file name. also added a map console command to the hexenworld client
      only to display the levelname and filename of the running map.
    * model.h, gl_model.h, quakedef.h: define bitfields using shifts.
    * renamed the MAXPRINTMSG definition to MAX_PRINTMSG for consistancy
      with other MAX definitions. moved it to quakedef.h.
    * fixed system speed dependent mission pack intro text scroll rate.
      inspired from Pa3PyX' sources but implemented differently. the extra
      global introTime is removed and cl.completed_time is used properly,
      instead.
    * fixed the software renderer video options menu not resetting the
      option cursor.

2007-03-15 (CVS):
    * renamed h2_opt.h to h2option.h
    * prevented possible segfaults in hexenworld shownet command.
      fix ported over from hexen2.
    * added missing cvs version headers.
    * cl_parse.c: small clean-ups.
    * updated the mkrelease script.
    * lock the developer cvar during init phase if -developer is specified
      on the command line. otherwise it will be overwritten the the config
      is exec'ed.
    * Consolidated Con_Printf, Con_DPrintf, Con_SafePrintf, Sys_Printf and
      Sys_DPrintf into a single CON_Printf procedure, located in console.c
      for the graphical client, in sv_send.c for hexenworld server, and in
      host.c for hexen II dedicated server. It prepares the message to be
      printed and sends it to the proper handlers according to the flags it
      was called with. The old functions are now macros wrapping around the
      new CON_Printf with correct flags, therefore compatibility the old
      api is preserved. Because of the new flags argument of CON_Printf, an
      unused lags argument was also added to SV_ClientPrintf. Gathered all
      the print prototypes and definitions/macros into the new header file
      printsys.h. Moved the log facility into the new debuglog.c/debuglog.h.
      Made the log system to keep its log file always open during the whole
      session: previously, it closed the file everytime it returned and re-
      opened it when called again. Made the print system to log Sys_Printf
      content: previously that content was never written to the log. For
      this purpose, the log is initialized from within main as early as
      possible. Logging is two level: Normal mode is activated etihre by
      using the standart quake command line switch -condebug or by the
      new -debuglog. Normal mode logs what is seen on the game console and
      the terminal: Therefore if the developer cvar is not set, Con_DPrintf
      and Sys_DPrintf content will be lost. The devel mode is activated by
      using the -devlog command line switch, and this mode will log any
      output regardless of the developer cvar being set.
      On the other hand, the on-the-fly log activation/deactivation in the
      hexenworld server is not touched, neither was its handling of the
      log file, yet.
    * updated the RelNotes file for future 1.4.2.
    * updated the readme files for the logging options.
    * added the Full logging option to the game launcher. updated its HoT
      version to 1.4.2.
    * updated some of the copyright notices.

2007-03-14 (CVS):
    * minor commentary update to cl_effect.h. also changed the CE_BG_EXPLOSION
      definition in hexenworld to CE_LG_EXPLOSION to be consistant with hexen2
      and the gamecode. no actual code change here.
    * clean-up in the init and command line arguments initialization:
      removed many unnecessary double-dash versions of the options,
      updated the documents accordingly.  the command line arguments
      passed to the program are now stored only in the host_parms
      structure. made com_argc and com_argv into macros wrapping around
      the relevant host_parms members. the huge mess in assigning
      com_argc/com_argv and host_parms->arg{c|v} is also cleaned up.
      handling of safe mode arguments is moved to the relevant procs.
      host_parms is now a pointer and is initialized in main().
      Host_Init and friends no longer accept any arguments.  did a
      little house cleaning in main(). for consistancy with the other
      versions, basedir is taken from getcwd() in the dedicated servers.
    * added support for Raven's 1.11 server protocol 18. with this, H.o.T.
      is able to connect to Raven's original 1.11 servers or play the demos
      recorded with that pre-mission pack protocol.  allowed running the
      server using the old pre-mission pack protocol 18 instead of the
      default protocol 19. the -protocol command line switch takes 18 or
      19 as an argument. when protocol 18 is used, games are also saved in
      the old 1.11 format. on the other hand, the engine can now load old
      1.11 style games, as well: game loading is neutral to the save-style:
      1.11 and 1.12 styles are automatically detected and converted to the
      active style as the player progesses through the game.  updated the
      documentation accordingly.
    * fixed the ftell() failures on win32 when loading games with unix
      style line endings: the M$ C library seems to lie to ftell() if
      the file is not opened in binary mode. this was a bitch to find..
    * incremented the engine version to 1.17.
    * updated the RelNotes file for future 1.4.2.

2007-03-08 (CVS):
    * uniform Cmd_AddCommand usage.
    * re-arranged the cmd layer in hwmaster so that it gives smaller and
      readable diff output when compared to its hexen2 counterpart.

2007-03-04 (CVS):
    * more trivial stuff: changed a few if conditions to else if.

2007-03-03 (CVS):
    * h2ded: fixed win32 build.
    * vid_sdl.c, gl_vidsdl.c, gl_vidnt.c: removed unnecessary vmode_t casts.
    * gl_vidsdl.c, gl_vidnt.c: added 'apply changes' and 'reset changes'
      items to the video options menu for the opengl version. for those who
      couldn't figure what to do, there it should be clear enough now ;)
      similar changes will soon be applied to the software renderer version.
    * gl_vidsdl.c, gl_vidnt.c: fixed the downarrow key behavior in the new
      video menu.
    * ported the new video menu style to the software renderer version.
    * updated the release notes file for future v1.4.2 (2007-03-03).

2007-03-02 (CVS):
    * xdelta: tiny cleanups in autogen.sh and configure.in.
    * xdelta: fixed out of memory condition caused by not properly unmapping
      files (from the loki_patch tree: Sam Lantinga, Apr 10, 2001).
    * updated the launcher README file.
    * xdelta: updated the readme file for our customized 1.1.4b version.
    * launcher: fixed a bug in the thread creation failure path.
    * updated the xdelta update patch script.
    * updated the SDL header for new GL attributes added in 1.2.10.
    * added the hard-coded console toggle bind Shift-Escape to the SDL input
      driver (from ioquake3): SDL > 1.2.9 does not support disabling "Dead Key"
      recognition. In order to send "Dead Key" characters (e.g. ~, ', `, and ^),
      you must key a Space (or sometimes the same character again) after the
      character to send it on many international keyboard layouts. This behavior
      makes the hard-coded toggleConsole binds ~ and ` annoying to use on many
      non-US keyboards. This newly added Shift-Esc key combination helps with
      this situation.
    * updated the documentation about the new console key.
    * updated the release notes file for future v1.4.2 (2007-03-02).

2007-03-01 (CVS):
    * xdelta: merged changes from the official 1.1.4 release at xdelta.org
    * xdelta: touched the stamp-ser files in order to avoid Emacs-Lisp.
    * xdelta: updated the readme file for our customized version.
    * launcher: xpatch/loki_xdelta.c: synced with the latest xdelta version.
    * launcher: xpatch/loki_xdelta.c: small clean-up.
    * gamedata: updated the xdelta update patch script for xdelta-1.1.4.
    * updated the README file in gamedata/patchdata about xdelta.

2007-02-28 (CVS):
    * killed some dead vars.
    * updated the net_sys header.

2007-02-26 (CVS):
    * fs_basedir needn't hold a full copy of the basedir. made it a pointer
      instead which works as it is intended.
    * the dwarf class checks in the hexenworld menu system needn't do any
      weird strlen thingies. fs_gamedir_nopath is for these kinds of purposes.
    * fixed win32 builds.
    * cmd.c: always use the __FUNCTION__ macro

2007-02-25 (CVS):
    * h2ded: process the command line arguments at start. if the server is not
      active when initialization is complete, spawn the demo1 map at start just
      as hwsv does.
    * h2ded, map command: don't display the "Currently on" string if sv.name
      is empty.
    * added colored dynamic lights and extra dynamic lights to hexenworld
      opengl client (stuff copied over from hexen2). gl_colored_dynamic_lights
      and gl_extra_dynamic_lights cvars and their menu entries are functional
      now.
    * updated the release notes file for future v1.4.2 (2007-02-25).
    * moved (again) the maplist console command to quakefs.
    * made exporting of searchpath_t structure and fs_searchpaths to depend on
      _NEED_SEARCHPATH_T definition, added _NEED_SEARCHPATH_T to quakefs.c and
      quakeio.c: I don't like making them public. quakefs and quakeio actually
      depend very much on each other but I'd like to keep them separate as much
      as possible.

2007-02-24 (CVS):
    * hexenworld opengl client: fixed bug that dynamic lights had a problem
      with RGBA lightmaps (such as torches didn't illuminate) but luminance
      mode was fine. Lightmaps in RGBA mode are working now. We still haven't
      added proper colored dynamic lights like we did in hexen2, but that's
      for later.
    * removed the defunct cvar cl_prettylights. it way always on and I think
      nobody knew about it.  a tiny clean-up in CL_AllocDlight also went in.
    * updated the BUGS list.
    * updated the release notes file for future v1.4.2 (2007-02-24).

2007-02-23 (CVS):
    * moved the NUM_SAFE_ARGVS definition to common.h, I might use it
      in near future.
    * changed the order of some of the init messages so that they are
      emitted after COM_InitArgv returned and argc and argv members of
      host_parms are assigned. this way, they will be added to the log
      when I merge the new logging stuff.
    * defined the x86 fpu functions as do {} while (0) macroes when not
      using x86 assembly.
    * opengl: killed the empty procedures which served for compatibility with
      the software version. defined them as do {} while (0) macroes.
    * fs_gamedir_nopath (formerly gamedirfile) had an array size of MAX_OSPATH
      which is crazy because it holds one directory name without any path.
      made it 32 chars long which should be more than enough.
    * fixed a tiny typo in sys.h
    * no need to print the effective console size every frame. do that
      only at the beginning and at every actual change.
    * removed a defunct extern from h2ded/host_cmd.c
    * more constification and corrections (draw, gl_draw, menu, sbar).

2007-02-22 (CVS):
    * added the config file reading and init-phase cvar locking to
      the api and took the early reads stuff out of the vid files.
      this is still immature as it was, but it does what we need..
    * Cvar_UnlockVar should return when it hits what it looks for.
    * we only store the texture num of conback now, just like we started doing
      the same for draw_backtile, etc since HoT-1.4.1: we don't store their data,
      only upload them to the opengl pipeline. Draw_ChangeConsize is now history,
      as well, because the conback drawing procedures actually use vid.conwidth,
      not the width member of the now dead qpic_t conback.
    * fixed the wrong slot number check in CL_NewTranslation although its
      caller already does the same check (and does it correctly). in hexen2,
      moved the MAX_SCOREBOARDNAME definition to client.h for consistancy
      with hexenworld. in hexenworld, MAX_SCOREBOARD definition is replaced
      with MAX_CLIENTS but many error messages used the old MAX_SCOREBOARD,
      changed them accordingly. replaced the only occurance of MAX_SCOREBOARD
      in sbar.c with MAX_CLIENTS. for consistancy with hexenworld, replaced
      all MAX_SCOREBOARD usage with MAX_CLIENTS in hexen2.
    * fixed bug that the array size for playertextures must be MAX_CLIENTS, but
      was hardcoded to be 16.
    * fixed bug that netgraphtexture was not reset in Draw_ReInit in hexenworld.
    * added Cvar_LockVar for locking only one cvar.
    * made Cvar_LockVar and Cvar_UnlockVar to employ Cvar_FindVar for cvar
      searching.

2007-02-21 (CVS):
    * added a name tag to the quakeparms structure.
    * moved sys_nostdout from console.c to sys*.c and moved its initialization
      to Host_InitLocal. this is not a frequently used cvar, maybe I remove it
      soon, we'll see...
    * removed an #if 1 around timeBeginPeriod() call. I've been forgetting
      it for a while.

2007-02-20 (CVS):
    * the info_mask members of the client_t and client_state_t structures
      should be of int type, not necessarily long.
    * moved the chase stuff from quakeinc.h to client.h which is where
      they belong.
    * moved msg_suppress_1 from quakeinc.h to vid.h (any place better for
      it to stay?..). moved tha actual var from common.c to vid_win.c and
      vid_sdl.c, the software video driver file, where it belongs.
    * moved the mission pack objectives related vars and declarations to
      more proper places: intro_playing, skip_start and num_intro_msg
      belong to cl_demo, not sv_main. they are now exported through clieht.h
      which is a better place. skip_start and num_intro_msg, on the other
      hand, are not used now commented them out (probably they were used when
      Raven prepared the intro demo t9). the info_mask and info_mask2 are now
      exported through quakeinc.h. (soon, they'll be moved to host.h).
    * moved siege related client stuff from quakeinc.h and cl_parse.c to
      client.h and cl_main.c, which are better places for them.
    * killed the global noclip_anglehack: in hexenworld it isn't used, in
      hexen2, all client-side things achieved by checking the state of that
      bool are now done by if(cl.v.movetype == MOVETYPE_NOCLIP).
    * instead of manually calling IN_DeactivateMouse and IN_ActivateMouse in
      Host_Pause_f, just leave the job to VID_HandlePause: it is purely a
      client-side thing and when it sees the svc_setpause message in
      CL_ParseServerMessage it actually calls VID_HandlePause for god's sake.
    * took the host declarations stuff out of quakeinc.h and placed them into
      the new header host.h. for hexen2, created another new header named
      entstate.h which holds the entity state and client frame structures.
      quakeinc.h and qwsvinc.h headers now only exist as 'the lazy man's
      all-in-one big header for all things': it should die in the future and
      instead of including quakedef.h (which actually does the job of including
      quakeinc.h), each C file should include only the individual necessary
      headers.
    * removed a-million-year-old remainders of parsing code specific to WinMain
      from our main.
    * COM_InitArgv: avoid extra spaces in com_cmdline.
    * made GL_LoadTexture to immediately return for dedicated servers, no
      need to go through the whole procedure. also made Mod_LoadTextures
      to skip actual texture loading for dedicated servers which, in turn,
      skips GL_LoadTexture. in fact no one should ever use the client-server
      binary, let alone the gl-binary as a dedicated server, h2ded is the
      choice for that purpose. this is for correctness only.

2007-02-17 (CVS):
    * killed Con_DebugLog in hexen2/console.c and favored Sys_DebugLog
      in sys*.c. one less difference between hexen2 and hexenworld.
    * increased read buffer size from 4K to 16K for QIO_CopyFile. disabled
      use native win32 CopyFile and favored QIO_CopyFile, instead. added
      null argument check to QIO_CopyFile. made QIO_CopyFile to employ utime()
      and copy the source file's timestamp to destination file (yeah, doing
      a little fancy.)
    * always use the __FUNCTION__ macro.
    * made a IOCTL_FAILURE macro for the failed ioctl reporting job in cd_bsd.c
      and cd_linux.c.
    * removed the compile time warning from midi_sdl.c.
    * request the audio in host-endian format in sdl midi (actually sdl doesn't
      care and does its own thing, but lets be a little more correct.)
    * added a -developer command line argument which sets the developer cvar to
      1 during the init phase (ie. before the config is read). found in tyrquake
      sources.
    * commented out the meaningless developer directive in hexen.rc.
    * h2ded should exec not hexen.rc, but server.cfg, instead, which is similar
      to hwsv. changed that in Host_Init. the use of cl_warncmd is also fixed
      now.
    * moved the mode argument definitions for access(2) from sys.h to quakeio.h
      where they belong.
    * removed meaningless Cvar_Command() check, etc, from Cmd_Exec_f().
    * minor update to Host_Init().

2007-02-16 (CVS):
    * gethostname() may not NUL-terminate the hostname. do it by hand.
    * added a COMPILE_32BITS option to the makefiles.
    * updated the release notes file for future v1.4.2 (post-1.4.2-pre1,
      2007-02-16)

2007-02-15 (CVS):
    * added prefix matching support to the maplist command.
    * cleaned up the maplist command. the duplicate name detection was
      flawed: if, for example, demo22.bsp was hit first, then demo2.bsp
      would be discarded due to the strcasecmp usage. it is fixed now.
      maximum number of maps to be listed is now limited to 256 which
      eliminates the necessity of two pass search in order to determine
      the actual count. in such crazy cases where more than 256 maps are
      present, prefix matching shall be the user's friend.
    * tiny update to the FS_AddGameDirectory procedure.
    * renamed the global gamedirfile to fs_gamedir_nopath and exported it
      through quakefs.h.
    * killed the global variable fs_savedir (formerly com_savedir). it
      doesn't serve any purpose, we always put our saves into fs_userdir.
    * small update to the getcwd usage in sys_unix.c.

2007-02-14 (CVS):
    * the string loading changes in 1.4.2-pre1 (specifically the one made
      on 2007-02-09) broke starting a new game in the mission pack through
      the menu system: because if the game is newly started we shall not
      have strings.txt loaded. it is fixed now.

2007-02-13 (CVS, 1.4.2-pre1):
    * updated the makefiles. removed the idirafter stuff, seems not necessary.
    * moved mathlib.c and mathlib.h to common for the utilities. since all of
      the utils use double as vec_t and genmodel is an exception (uses float),
      added special rules for mathlib.o to the makefiles.
    * performed a large scale splitting on utilities/cmdlib, similar to the one
      I did to common.c of the game tree yesterday. each thing is sent into their
      own file. new files in utils/common: pathutil.c, q_endian.c, util_io.c and
      crc.c, and their *.h counterparts. new headers: q_types.h and util_inc.h.
      dcc and hcc_old are using the thared cmdlib from now on. Q_filetime() is
      removed for good: its only user was genmodel.c::Cmd_Skin(), but the file
      existance check is already done when it calls LoadPCXSkin(), which in turn
      calls LoadFile which in turn uses SafeOpenRead(), therefore it is safe to
      remove it. SafeMalloc() is also removed as a procedure and is made into a
      macro in genmodel/loadtri.c, which is its only user.
    * moved the ASSUMED_LITTLE_ENDIAN compile time warning to q_endian.c
    * fixed compilation of q_endian.c after the above change.
    * splitted glquake.h into two, taking the includes into the new glheader.h
      which properly gets the opengl typedefs for us. we now can include gl_model.h
      separately.
    * updated our common headers.
    * more updates to our common headers.
    * re-diff'ed some of the extra patches.
    * added a ReleaseNotes file for a future 1.4.2 release.
    * marked the snapshot of 2007-02-13 as 1.4.2-pre1.
    * updated the rpm spec file.

2007-02-12 (CVS):
    * imported the xdelta-1.1 sources into our own cvs repository (module
      name: xdelta11, the same as the one in the xdelta project)
    * xdelta: added the auto-generated files back, including the empty
      files stamp-ser and libedsio/stamp-ser1. this gets rid of the
      emacs hassle.
    * xdelta: cleaned up the multiple and recursive includes in the
      generated files
    * xdelta: do not automatically run configure from within autogen.sh
    * xdelta: added --disable-glib2 option to configuration. made
      xdelta-config to remember that option and to emit -D_XD_USE_GLIB1
      upon --cflags
    * xdelta: added glib-1.2 compatibility stuff back, wrapped in
      _XD_USE_GLIB1 ifdefs.
    * xdelta: avoid autotools warnings. (from RedHat/Fedora.)
    * xdelta: gcc-4 fixes for xdelta-1.1.3. (#1, from RedHat/Fedora.)
    * xdelta: gcc-4 patches for xdelta-1.1.3. (#2, from SuSE.)
    * xdelta: not all systems have stdint.h, so switching to inttypes.h
      for now. it would have been better if we had some autotools magic
      for it.
    * xdelta: commented out the SuSE solution for the memory allocation
      bug and merged the RedHat solution. the original RedHat patch only
      changed edsio/fh.c, I added the same thing to edsio/default.c, as
      well. From the original logs: "fix memory allocation bug that
      prevented to apply patches created on x86 platform to be applied on
      x86_64 platform. For some reason, amount of memory to allocate is
      specified in the delta file, but on 64bit platforms, you need more
      space for pointers."
    * xdelta: added a README file for our customized version.
    * launcher: added integrated ability to patch the pak files using
      xdelta11 libraries that I just imported. incremented the version
      number to 0.9.0.
    * updated the documentation about the launcher's patch ability.
    * updated the documentation about the location of xdelta
    * updated the rpm spec file after importing the xdelta libraries.
      made it to build xdelta before the launcher for correct linkage.
    * updated the mkrelease script
    * performed a large scale splitting on common.c and common.h. each
      thing is sent into their own file. new files: quakefs.c, quakeio.c,
      link_ops.c, sizebuf.c, msg_io.c, q_endian.c, and their *.h headers,
      and pakfile.h as a new header. similarly, definitions and includes
      are separated too: quakedef.h contains the definitions only, and
      quakeinc.h (and qwsvinc.h) contains the includes and prototypes
      and declarations. common.c and common.h now only contains misc
      utility stuff, such as procedures command line processing, file
      name processing, other string processing, and replacent functions.
      common quake data types are gathered into a new q_types.h header
      which already includes sys/types.h.
      as a side effect, several functions (along with some global variables)
      were renamed:  quakeio stuff are prefixed with QIO_, and quakefs
      stuff with FS_. see their header files. the procedure for maplist
      command was moved to cl_cmd.c where it actually belongs. hexenworld
      master server was processed accordingly and it now closely resembles
      its game tree counterparts.
      a similar operation is yet to be performed on the utilities..
    * rediffed some of the extra patches after the latest changes.

2007-02-11 (CVS):
    * gathered compiler specific definitions and settings into the
      new compiler.h header. at present, it's only the _FUNC_PRINTF
      stuff, more may come in the future.
    * defs.hc contained 0 amount of code. killing it..
    * took the hexenworld specific info strings stuff out of common.c
      and common.h and put them into new info_str.c and info_str.h.
      similarly, moved the decleration siege global variables to the
      hexenworld client.h header where they belong.

2007-02-10 (CVS):
    * added an advanced parsing of puzzles.txt: it is now parsed at
      its load time only, and is bound to two new global variables,
      puzzle_string_index and puzzle_string_count, similar to those
      of strings.txt and infolist.txt.  broken files (those who are
      not following the file format) are gracefully handled.
    * limited puzzle names to 256.
    * changed all unnecessary atol() calls to atoi().
    * started constifying the utilities sources. mostly the common
      libraries this time. more to come.

2007-02-09 (CVS):
    * fixed parsing of puzzles.txt: Raven seems to have had an ability
      towards doing all things in non-standard way and they did this
      with only dos style line endings in mind (as they had done parsing
      maplist.txt which I fixed in HoT-1.4.1). This used to result in
      the names listed as Unknown in the puzzle pieces inventory display
      (which you can access through a key bound to the +showdm command,
      default: q). the original hexen2 is ok (because it has puzzles.txt
      in a pak file and it is of dos line endings), but the mission pack
      was broken (because we distributed the mp-specific puzzles.txt with
      unix line endings).  it is now fixed.
    * sbar.c: made FindName() to return immediately if puzzles.txt could
      not be loaded.
    * introduced PR_LoadPuzzleStrings() as a tiny client-only function:
      puzzle_strings is a client-only thing, used in sbar.c only. made
      small clean-ups/adjustments here and there.
    * strings.txt and infolist.txt loading: hexen2 (with the 1.12 sources
      that Raven released) is always loading strings.txt and infolist.txt
      only once at init phase (from within Con_Init) and since it is below
      host_hunklevel it stays resident. it seems to have loaded it during
      every level load before, as can be seen from the commented out code
      in cl_parse.c::CL_ParseServerInfo() and sv_main.c::SV_SpawnServer().
      hexenworld actually does it this way, loading them at every level
      start, and it is a good thing because, in hexenworld, the gamedir can
      change between level loads, so can those text files.
      I'm now switching to this earlier method: hexen2 will also load them
      at every level start. test it as much as you can and in any way that
      you can, and report any problems that you run into.
    * info_string stuff (infolist.txt) is a client-only thing, too. it is
      used in (gl_)screen.c only.
    * defined GL_UNUSED_TEXTURE ((GLuint)-1) rather than 0xFFFFFFFFU
    * introduced VA_NUM_BUFFS as a define for the number of static buffers
      va() would cycle through.
    * common.c: small whitespace / coding style clean-up

2007-02-08 (CVS):
    * keys.c, keys.h, in_sdl.c: updates to SDL input driver: removed the
      remnants of win32 joystick code which was in commented out form.
      commented out the joystick cvars until we add SDL jostick support.
      removed the mouse_buttons variable.  removed the SWAP_MOUSE23
      definition and added a lookup table (buttonremap) for converting SDL
      mouse button enums to quake enums and used it in both IN_SendKeyEvents
      and IN_MouseEvent procedures which solves the mouse2/mouse3 problem
      without hacks for good. tidied up the key definitions in keys.h.
      other tiny clean-ups here and there.

2007-02-07 (CVS):
    * converted 20 or so remaining files to have unix line endings.
    * stripped off the CVS log entries at the ends of hundreds of files.
      my cvs tarball is around 500 kb smaller now...
    * added new lines at the ends of 30 or so files which had none.
    * re-diff'ed some of the extra patches.

2007-02-06 (CVS):
    * started an attempt at improving const-correctness all over the
      uhexen2 tree. this was driven by a feature request by Markus
      Elfring a few days ago and this commit now closes that entry.
      here is the tracker address:
      http://sourceforge.net/tracker/?func=detail&atid=701009&aid=1649713&group_id=124987
      notes:
      - there are places I purposefully skipped in the files I already
      touched, see for example wad.c::W_CleanupName(char *, char *),
      which would simply be W_CleanupName (const char *, char *), but
      it has one silly user that employs this function as a means for
      in-place changing of a string (see at the end of W_LoadWadFile()
      function), which makes me doubt about what would be the wise thing
      to do. such things will be looked into in the future.
      - the utilities and the launcher are not yet touched by this, but
      they will be in future.
      - there is always room for improvement in this area. if you have
      anything, send it to us.
    * updated the external-music-file-support patch after the constify
      changes.
    * updated commentaries for common.c functions

2007-02-05 (CVS):
    * minor documentation updates

2007-02-04 (CVS):
    * gl_rmain.c, gl_vidnt.c, gl_vidsdl.c: General cleanup: The vendor,
      renderer, version and extensions vars are not global anymore, no
      one uses them.  Added clarifications to the demoness fires fix.
      Renamed MyglColorTableEXT to glColorTableEXT_fp for consistancy
      with the other gl function pointers. Probably a few other small
      things.
    * updated the list of known bugs.
    * added the tracker information to the external music file support
      extra patch. closed the relevant tracker entry [1597004].

2007-02-02 (CVS):
    * cmd.c, common.c: small whitespace/readability cleanup
    * common.c: updated commentaries
    * common.c: made COM_CreatePath() to check for empty paths
    * common.c: renamed the arguments of COM_CopyFile() for better clarity
    * cmd.c: updated and sanitized the command lister procedures
    * cmd.c: small update in Cmd_CheckCommand(). also updated
      keys.c::CheckForCommand() which is its only user.
    * keys.c: small update in CompleteCommand()
    * draw.h, draw.c, gl_draw.c: small whitespace/readability cleanup

2007-01-29 (CVS):
    * lib3dfxgamma: added an example patch against tyrquake-0.55
    * lib3dfxgamma: added an example patch against quake2 @@ icculus

2007-01-15 (CVS):
    * enabled printf format warnings in gcc. the patch, originally by div0,
      is adapted from the darkplaces project.
    * fixed several printf format warnings

2006-12-25 (CVS):
    * misc clean-up in launcher
    * misc small things
    * added external music file support via SDL_mixer as an extra patch
    * rpm spec file update.

2006-12-20 (CVS):
    * merged the latest OSX Xcode files from Levent

2006-12-19 (CVS):
    * Fixed the following gcc-4.1 warnings in net_vcr.c (fix found in quakeforge
      subversion repository):
	net_vcr.c: In function 'VCR_GetMessage':
	net_vcr.c:68: warning: dereferencing type-punned pointer will break strict-aliasing rules
	net_vcr.c: In function 'VCR_SendMessage':
	net_vcr.c:91: warning: dereferencing type-punned pointer will break strict-aliasing rules
	net_vcr.c: In function 'VCR_CanSendMessage':
	net_vcr.c:106: warning: dereferencing type-punned pointer will break strict-aliasing rules
	net_vcr.c: In function 'VCR_CheckNewConnections':
	net_vcr.c:147: warning: dereferencing type-punned pointer will break strict-aliasing rules

2006-12-01 (1.4.1 rev:1, gamecode-1.16a):
    * Fixed an obscure bug where the assasin with her 4th weapon uses the tome
      of power and can't fire it. The bug was reported by Mathias Schlueter to
      Jacques 'Korax' Krige who forwarded the report to us.  (The bug seems to
      have been introduced in gamecode-1.12g when a patch from Pa3PyX's sources
      was merged. Pa3PyX's own progs as part of his 1.15 package also has the
      same bug.)

2006-11-25 (1.4.1 rev:1):
    * Mac OS X: feed correct data to Sys_StripAppBundle
2006-11-22 (1.4.1 rev:1):
    * Ensured that the basedir always stays the same for Mac OS X. Documented
      the packaging method for Mac OS X. Updated release date to November.

2006-10-30 / 31 (1.4.1-final, last minute fixes):
    * quick fixes for killing some warnings coming up during the
      compilation of the utilities on x86_64
    * hexenc fixes: cleaned up and tweaked hexenworld and siege map cycling.
      fixed hexen2 and hexenworld server crashes upon deathmatch level change
      in cases of a custom map being run and there is no map cycling. mission
      pack actually didn't used to crash but it always failed changing into
      a new level. it is now fixed, as well.
    * since version 1.11 of hexen2 demo already contains the demo3 level and
      it also has necessary stuff for running the hexenworld dm maps, added
      demo3 and the hw dm maps to FindDMLevel(). Similarly changed the hexen2
      and the mission pack versions.
    * added instructions for setting up map cycling to the hexenworld server
      documentation.
    * updated gamecode changelog / README.
    * added a hexenworld strings.txt file for the demo version (which doesn't
      contain a map cyling setup).

2006-10-26 (1.4.1-final):
    * removed irrelevant comment from hexen2/sv_effect.c.
    * for future reference, put the effects saving and loading functions
      back to hexenworld/sv_effect.c in commented out form. currently,
      saving and loading games not are supported in hexenworld.
    * small tweaks to Sys_FindFirstFile and Sys_FindNextFile.
    * made sure that Sys_FindFirstFile and Sys_FindNextFile doesn't return
      directory names.
    * Marked the snapshot of 2006-10-26 as 1.4.1-Final.

2006-10-20/24 (CVS):
    * pr_edict.c: sizeof(void *) is not the same everywhere. use fixed 32 bit
      sizes, as we do in pr_lex.c.
    * merged the bubble_sintable stuff of hexenworld gl_rlight to hexen2.
      the DLIGHT_BUBBLE_WEDGES definition is from tyrquake.
    * dcc: removed the memory members from the pr_info_t structure, disabled
      the ultra-cheap crc hack.
    * jsh2color: changed unnecessary long type usage to int in tex.c.
    * jsh2color: removed the unused tyrlog sources.
    * hexen2/keys.c: don't add a space after the last argument when binding
      keys.
    * menu.c: added proper offsets to the x arguments and removed the extra
      prefixing spaces from the option titles.
    * removed the unused host_basepal and host_colormap from h2ded.
    * fixed the load buffer flag of COM_LoadMallocFile. oops..
    * changed the heapsize limits of hexen2 dedicated server to match those
      of hexenworld server.
    * disabled Q_malloc usage in h2ded: by experimentation, surfedges and
      edges size mostly around 300 kb (in keep5 of the mission pack) and
      even with 8 mb of heap memory the server still runs fine. therefore
      no need for temporary stealing system memory.
    * tiny readability update to SV_SaveEffects.
    * sys_unix.c: exit code must be 1, not 0, if an unsupported SDL version
      is found.
    * gl_draw.c: defined MAX_GL_FILTERS and used it in Draw_TextureMode_f()
      instead of hardcoded values.
    * hexenworld net.c: fixed Sys_Error string formats for gethostname and
      getsockname failures.
    * hexenworld/sv_user.c: model download requests must be checked against
      "models/", not "progs/".
    * hexenworld/sv_main.c: small clean-up in Rcon_Validate().
    * sv_move.c, readability tidy-up and comments on the FL_HUNTFACE flag
      checking: this is a mission-pack-only thing for the monster type
      pentacles. we must double check against the hexenc code to find the
      correct solution in the future.
    * killed the warning about `enemy' might be used uninitialized in
      SV_movestep: it is only set if the noenemy argument of the function
      is false, therefore the warning seems bogus.
    * tiny clean-ups in callbacks.c and config_file.c of the launcher.
    * multiple coding style clean-ups.
    * updated some of the extra patches.
    * updated the list of known bugs.

2006-10-19 (CVS):
    * documentation updates.
    * added Sys_DPrintf: at present, its only user is the hexen2 dedicated
      server. further use of it may come with future versions.

2006-10-18 (CVS):
    * updated compile instructions for windows.
    * updated the rpm spec file for 1.4.1-final:
    - Merged the hexen2 and mission pack packages.
    - Added build option --without midi.
    - Added build option --without asm.
    - Disabled x86 assembly on non-intel cpus.
    - Do not build or package the software renderer versions when not
      using x86 assembly until we fix them properly.
    - Added build option --without alsa.

2006-10-16 (CVS, 1.4.1-rc4):
    * several fixes and tweaks to the standalone hexenworld utilities hwrcon,
      hwterm and hwmquery.
    * error_out clean-up in the hexenworld utilities.
    * added missing parentheses in BuildTree of huffman.c.
    * fixed wrong string format in huffman.c.
    * added (huffnode_t *) casts to malloc calls in huffman.c.
    * fixed wrong comparison in huffman debug code (was either a typo or
      missing parentheses).
    * fixed a buffer overflow vulnerability in hexenworld Huffman decompression.
    * whitespace cleanup in huffman.c.
    * marked the snapshot of 2006-10-16 as 1.4.1-rc4.

2006-10-15 (CVS):
    * updated the windows wave sound driver: made buffer allocation method a
      compile-time option: either allocate on the hunk, or use system memory.
      hunk allocation is still the default.
    * updated the alternative sdl sound driver patch: made buffer allocation
      method a compile-time option: either allocate on the hunk, or use system
      memory. system memory is default. changed the samples multiplier from 10
      to 8 .
    * added comments about the dma buffer allocation in the sound restart patch.

2006-10-14 (CVS):
    * misc typo fixes here and there.

2006-10-13 (CVS):
    * removed the const qualifiers from net_numdrivers and net_numlandrivers
      because vcr enabled builds manually set net_numdrivers to 1.

2006-10-12 (CVS):
    * made the hexen2 progs to work with demo version 1.11: the original
      demo version excluded the necromancer and crusader classes, but the
      later one didn't care and included them. changing some precache_model3
      and precache_sound3 to precache_model and precache_sound solves it.
      the pak file of 1.11 demo version already contains the necessary stuff.
    * made the hexenworld progs to work with demo version 1.11: Raven
      actually did all of the changes, but they seem to have missed
      changing the precache_model2 calls to precache_model in wp_art.hc
      which prevented crusader and necromancer classes to be played with.
    * ported the demo-1.11 precache compatibility changes from hexen2 to
      the mission pack. the mission pack actually has nothing to do with
      the demo version, but this is for the sake of the two trees being
      in sync as much as possible.
    * ported the demo-1.11 precache compatibility changes from hexenworld to
      siege. siege actually doesn't have much to do with the demo, but this
      is for the sake of the two trees being in sync as much as possible.
    * updated release notes for v1.4.1

2006-10-11 (CVS):
    * updated release notes for v1.4.1

2006-10-10 (CVS):
    * ensured the newline if truncation occurs in win32 version of Sys_Error.
    * removed the error timeout stuff from sys_unix.c. it was a left-over from
      sys_win.c.
    * added a Sys_mkdir_err() macro.
    * during init phase, we must error out if certain mkdir calls fail.
    * the in-game console is not ready during filesystem initialization,
      therefore changed the Con_Printf calls there to Sys_Printf.
    * removed an accidental extra semicolon at the end of Sys_DebugLog.
    * tiny sys.h clean-up.

2006-10-07 (CVS):
    * added an experimental patch for restarting sound among the exta patches.
    * free memory from unbound keys.

2006-10-06 (CVS):
    * updated the makefiles and preprocessor definitions:
    * moved the HAVE_GCC_4_0 definition/detection from the include makefiles
      to the actual makefiles,
    * building on windows now requires msys. removed the half-baked support
      for absences a unixish shell,
    * used a unified ifeq syntax in all of the Makefiles,
    * obsoleted _NEED_SDL_MIXER in favor of a new _MIDI_SDLMIXER definition,
    * updated sdl_inc.h and made it always include SDL_mixer.h according to
      the _MIDI_SDLMIXER definition. updated sdl version requirements,
    * removed the pointless NO_MIDIMUSIC definitions from Xcode files.

2006-10-05 (CVS):
    * exported lightmap_textures through glquake.h.
    * added resetting of lightmap_textures to Draw_ReInit(). its absence
      was a serious bug and used to cause texturing errors in hexenworld
      upon gamedir changes.
    * clean-ups about gamedir changing in CL_ParseServerData.
    * updated the sound driver availability macros. updated the
      makefiles with more options.

2006-10-04 (CVS):
    * hexenworld: removed an old comment in CL_ParseServerData.
    * hexenworld: remove old aliases upon gamedir changes.
    * updated Draw_ReInit() procedure.
    * win32 sound: used proper directx macroes and got rid of lpVtbl
      stuff for better readability.

2006-09-29 (CVS, 1.4.1-rc3):
    * made the alias command to display the value of the given alias
      instead of clearing it. added new commands unalias and unaliasall.
    * numerous sound clean-ups.
    * marked the snapshot of 2006-09-29 as 1.4.1-rc3.

2006-09-27 (CVS):
    * a lot of clean-ups in sound and midi files.
    * re-diff'ed the alternative sdl audio patch after the latest changes.
    * commented out some dead code in sv_move.c (SV_NewChaseDir).

2006-09-26 (CVS, 1.4.1-rc2):
    * updated the Xcode files for the recent header change.
    * added string array boundary checks in Host_SavegameComment().
    * marked the snapshot 2006-09-26 as 1.4.1-rc2 .

2006-09-25 (CVS):
    * removed a left-over definition from bothdefs.h.
    * shortened the Q_str*_err macro messages.
    * prevented string buffer overflows in PF_VarString().
    * made va() to cycle between 4 different static buffers. one
      function that uses va() can now be called from another without
      consequences. found in tyr-quake sources.
    * launcher cleanup: removed const qualifiers from string constants,
      removed char casts from formerly const string constants, added
      the -height to the launch arguments (not all resolutions have to
      be of 4:3 ratio), used short versions of some of the arguments,
      increased the version number to 0.8.0.
    * updated release notes for v1.4.1

2006-09-24 (CVS):
    * few more cosmetics and readability stuff (hwclient/net_wins.c,
      hwmaster/net.c, hwmaster/sys_main.c).
    * added missing com_argc checks (and fixed the incorrect ones)
      after several COM_CheckParm calls: SV_InitNet().
    * updated the license document from the gnu ftp.
    * made the make clean commands silent when building the rpms.
    * made the build scripts to exit at the first error encountered.
    * made the gcc version scripts to check its arguments and detect
      whether the given compiler command can be run. made them to work
      under solaris.
    * protected all headers against multiple inclusion.

2006-09-23 (CVS):
    * fixed shameful typoes in vid_sdl.c and gl_vidsdl.c
    * added a short summary to the OSS init success message
    * cosmetics and readability stuff (snd_oss.c)
    * cosmetics and readability stuff (gl_vidnt.c)
    * added missing com_argc checks (and fixed the incorrect ones)
      after several COM_CheckParm calls.
    * documentation updates.

2006-09-22 (CVS):
    * launcher: bound the gllibrary size to MAX_OSPATH instead of 256.
    * launcher: limited the length of text taken from the widget to the
      size of gllibrary. freed the temporary string.
    * launcher: limited the maximum length for the gllibrary entry to
      the size of gllibrary.

2006-09-21 (CVS):
    * commented out mission pack specific window manager icons and
      titles.
    * gathered most, if not all, of our compile time options into a
      header file named "h2_opt.h" with documentation. removed gl_opt.h.
      removed all of the one liner extra patches which played with these
      options. updated the COMPILE document accordingly.
    * removed old and outdated Xcode files.
    * added new MacOSX Xcode files for hexen2.
    * fixed a copy+paste error in the loki_patch script.

2006-09-20 (CVS):
    * removed my old code that disabled the SDL_QUIT event during
      resolution changes.
    * added an 64x64 png icon for hexen2.
    * added the xbm format version of 64x64 hexen2 icon.

2006-09-19 (CVS, 1.4.1-rc1):
    * updated documentation.
    * string sizes stuff, #15: zone.c.
    * string sizes stuff, #16: hwmaster.
    * string sizes stuff, #17: sv_ccmds.c.
    * re-diff'ed some of the extra patches.
    * incremented jsh2color version to 1.2.3 and updated its changelog.
    * marked the snapshot of 2006-09-19 as 1.4.1-rc1.

2006-09-18 (CVS):
    * use snprintf and the strl* functions, #13: menu.c. while we were
      there, exported SAVEGAME_VERSION definition through quakedef.h,
      prevented saved games with invalid version number to be listed.
    * use snprintf and the strl* functions, #14: snd_dma.c and snd_mem.c.
    * updated release notes for the upcoming 1.4.1 version.

2006-09-16 (CVS):
    * multiple changes to common library and downloading procedures:
    * use snprintf and the strl* functions (#10): especially during
      filesystem initialization, errors are not tolerated.
    * killed COM_FileOpenRead
    * made COM_filelength to return size_t.
    * made COM_CreatePath to return error or success.
    * made COM_CreatePath to check if the path it's creating is in
      the com_userdir.
    * a few fixes and tweaking in COM_CopyFile.
    * case insensitive game directory name comparisons where it
      would be necessary.
    * error out immediately if no proper game installation is found.
    * reject relative paths in a few more places.
    * fixes to download console command of hw (which always reported
      rename failures).

2006-09-15 (CVS):
    * fixed another gcc4 warning about type-punning (snd_alsa, although
      in disabled code)
    * pattern_len must be of size_t type in Sys_FindFirstFile
    * use the given path_len and snprintf in Sys_GetUserdir, although
      sprintf is perfectly safe at that point.
    * made the MAXCMDLINE definition public through keys.h
    * made a MAX_IDENTIFIER definition and used it for gltexture_t->identifier
    * made Host_CopyFiles to properly check its string sizes, and made it
      to return at the first time it hits an error.
    * added macros Q_strlcat_err, Q_strlcpy_err and Q_snprintf_err, which
      error out if truncation occurs.
    * use snprintf and the strl* functions, #2: host_cmd.c.
    * made COM_DefaultExtension to check the size of its path argument
      and error out if truncation occurs.
    * use snprintf and the strl* functions, #3: cl_demo.c. while we were
      there, did some additional clean-ups and fixes in CL_Record_f,
      CL_ReRecord_f and CL_PlayDemo_f.
    * use snprintf and the strl* functions, #4: cl_main.c.
    * use snprintf and the strl* functions, #5: cmd.c.
    * use snprintf and the strl* functions, #6: console.c.
    * use snprintf and the strl* functions, #7: draw.c and gl_draw.c.
    * use snprintf and the strl* functions, #8: gl_mesh.c.
    * use snprintf and the strl* functions, #9: gl_rmain.c.
    * use snprintf and the strl* functions, #10: keys.c.
    * use snprintf and the strl* functions, #10: midi_mac.c and midi_sdl.c.
      also did some clean-ups while we were there.
    * dcc doesn't need to keep progs.dat open after reading it.
    * added big endian (byte swapping) support to dcc decompilation.
    * fixes for parsing input from fgets, part-1: fixed and improved parsing
      of maplist.txt. fixes a bug reported for the PalmOS port ZHexen2.
    * fixes for parsing input from fgets, part-2: improved parsing of
      config.cfg during the early read.
    * fixes for parsing input from fgets, part-3: improved parsing of
      launcher_options. also ensured string buffer size safety for the
      gllibrary option.

2006-09-14 (CVS):
    * multiple dcc fixes:
    * Make_Immediate() doesn't need a non-null line argument for mode-2,
      made all such calls to send NULL.
    * the nline variable of Make_Immediate needs to be static.
    * renamed multiple occurances of static char line[].
    * added success checks after several malloc() calls.
    * in DccStatement(), silenced a compiler warning about "cast from
      pointer to integer of different size". the offending line was:
      for ( k = t+(t->a) ; (signed short)k < (signed short)s ; k++)
      signed short casts were changed into int casts.
    * the i586 cpuflag was causing a ~two-fold~ slowdown! removed it..
    * fixed a thinko in DEC_AlreadySeen() regarding DEC_FileCtr (wasn't
      a real-life problem, though.)
    * decompilation of the mission pack progs seems to be fixed (dhcc
      used to emit if instead of while in a few cases before).
    * fixed broken size display.
    * backed out my old static patch: making functions and variables
      local to dcc.c static was the reason for bad compilations with
      gcc-4.x series.

2006-09-13 (CVS):
    * re-visited the includes, gathered all net includes into
      the new net_sys.h, did a platform defines clean-up.
    * made dcc to report elapsed time after decompilations.
    * several fixes for dcc.
    * gcc-4.0 builds of dcc with -O2 are broken. gcc-4.1 builds
      even with -O1 are also broken. removing optimizations for
      now.

2006-09-11 (CVS):
    * added detection for Daniel Borca's SAGE Glide opengl driver.
      updated the 3dfx documentation.
    * removed the stupid char* cast from gl_renderer in strncasecmp
    * SZ_Init was missing in hwmaster. added.
    * SV_StartSound: the sized buffer in hexen2 version and the
      field_mask flag in the hexenworld version weren't used, removed
      them. fixed whitespace and spelling.
    * put SZ_Init() to use everywhere in the source.
    * added human readable defines for the MIDI_Pause modes.
    * removed the semicolon at the end of TRACKERR debug macro in
      midstuff.h (must be an accident). changed whitespace to tabs.

2006-09-10 (CVS):
    * small clean-ups in hexenworld utils
    * added hwmquery, a tiny utility for querying hexenworld master
      servers. as of this writing, qstat (therefore xqf, too) can't
      query a hexenworld master server.
    * updated the win32 splash bitmap of hexen2 (no blueish pixels,
      pure black background now.)

2006-09-07 (CVS):
    * fixes and clean-ups for string sizes in launcher
    * COM_WriteFile() shouldn't Sys_Error if it can't open the file.
      its callers should check the return value, instead.
    * more GL_UNUSED_TEXTURE changes (gl_extra_textures is GLuint)
    * debuglog cleanup
    * misc small stuff

2006-09-03 (CVS):
    * added midi support for Mac OS X through QuickTime
    * added the bsd functions strlcat and strlcpy. taken from OpenBSD.
    * started using the strl* functions and snprintf, #1: vid* files.

2006-08-31 (CVS):
    * fixed finding of actual command path in the launcher
    * incremented launcher version to 0.7.7
    * updated release notes for 1.4.1

2006-08-28 (CVS):
    * re-diff'ed some of the the extra patches

2006-08-26 (CVS):
    * minor documentation updates / corrections
    * updated VectorSet for macro correctness
    * VID_ChangeConsize and VID_ReportConsize are for opengl version only
    * updated the rpm spec file for documents' installation
    * dedicated servers must error out if no network drivers are available
    * incremented engine version of hexen2 to 1.16 and hexenworld to 0.18
    * updated release notes for 1.4.1

2006-08-22 (CVS, 1.4.1-pre10):
    * fixed a typo in the playdemo info message.
    * updated the documentation about the software renderer clients and
      non-x86 cpus.
    * updated the documentation about the sound drivers.
    * marked the snapshot of 2006-08-22 as 1.4.1-pre10

2006-08-19 (CVS):
    * Merged a probably better fix for the mezzoman "assignment to world entity"
      bug (from Steven).
    * documentation update.

2006-08-14 (CVS):
    * exported Draw_AlphaPic() for possible future users
    * exported D_ClearOpenGLTextures() and R_InitParticleTexture()
    * moved flush_textures to gl_rmisc.c
    * introduced COM_LoadZoneFile()
    * changed draw_backtile from qpic_t type into a GLint type and freed its
      data after uploading to the opengl pipeline. Draw_PicFileBuf() is not
      needed anymore. similarly, freed draw_chars (charset: conchars) after
      uploading.
    * made software renderer draw.c to load the charset (draw_chars: conchars)
      into zone instead of hunk. needed for further changes.
    * introduced Draw_ReInit(), to be called when a gamedir change occurs.
      reloads the textures which are loaded back at the init phase. fixes
      hexenworld's wrong charset and conback display problem upon gamedir
      changes.
    * Draw_ReInit(): make sure all of alias models are cleared (opengl vers.)
    * updated gamecode compile instructions
    * updated version number in documentation for upcoming 1.4.1 release
    * updated version number in rpm spec file for upcoming 1.4.1 release
    * updated Features list
    * updated web links in the documentation

2006-08-11 (CVS):
    * Fixed the dreaded mezzoman bug causing the following error:
	SV_StartSound: fangel/deflect.wav not precached
	ADDRESS -14227(?) 537(last_attack).last_attack -14226(?)
	mezzoman.hc : mezzo_reflect_trig_touch
	<NO FUNCTION>
	assignment to world entity
	Host_Error: Program error
    * Disabled impulse 11 (ServerflagsCommand): it is a dev command, can
      be issued from any client and may screw up the server pretty bad..
    * Updated the gamecode README/history: v1.16
    * updated other places for gamecode version 1.16

2006-08-07 (CVS):
    * added console background stretching (cvar: gl_constretch). from Steven.
    * initially I didn't want to use cvars for storing the saved volumes when
      muting/unmuting, but, naturally, that prevented writing the saved volumes
      to the config. Steven was right using cvars.
    * merged Levent's latest Xcode files for 1.4.1-pre9

2006-07-30 (CVS):
    * removed a left-over if condition

2006-07-29 (CVS):
    * back out searchpaths from missing/invalid mission pack installations

2006-07-28 (CVS):
    * fixed typoes in utils/README

2006-07-27 (CVS, 1.4.1-pre9):
    * made scaling of the effective console size (the -conwidth commandline
      argument) adjustable from the menu system, using the std_modes array
      for the size to be emulated. made the user's choice to be remembered
      via the config. deprecated the -conheight argument and used the same
      width/height ratio as in the actual resolution.
    * infodown command is only meant to be used wher the game is actually
      running. made it so.
    * updated the documentation for the -conwidth argument
    * marked the snapshot of 2006-07-27 as 1.4.1-pre9

2006-07-20 (CVS):
    * fixed (actually worked-around) the light_level being
      incorrectly set when we run with rgba lightmaps: one
      major bug it resulted in was that it prevented the
      cloaking ability of the assasin. rgba mode is still
      not perfect and need fixing polishing, I guess...

2006-07-18 (CVS):
    * a few int -> size_t changes for filesize vars
    * fixed a gcc4 warning about signedness mismatch
    * some tidy-up in the hexen2 version of R_DrawParticles: kill checks
      are removed from the renderer function, R_UpdateParticles already
      does that for us. the gl version now picks its texture corrdinates
      from an array. repetitive lines were tidied for better readability.
    * removed H2W ifdefs from the list of required opengl functions
    * removed glTexCoord3f fnom the required opengl functions list.
      it is not employed at present.
    * made draw_disc static. unlike quake, it isn't shared with sbar.
    * made hexen2 software renderer to use r_worldentity like in opengl
      version and hexenworld version. this saved us of many ifdef H2W
      ugliness.
    * D_PolysetCalcGradients in d_polyse.c is for !i386 but contained
      i386 code. still keeping for future reference, though.
    * tiny readability cleanup in Draw_BeginDisc
    * if the error message provided by the server is too long, m_return_reason
      string may not be null terminated. found in tyr-quake.
    * made d_aflatcolor global through d_local.h
    * some random whitespace cleanup
    * random typo corrections

2006-07-17 (CVS):
    * updates to the sunaudio driver: reduced the dma buffer size
      to the original values of ID software. added some endianness
      macros for better readability. made it to acknowledge the
      -sndspeed, -sndbits and -sndmono commandline arguments. Still
      problems with it though (audio can't keep up messages...)
    * renamed our own strings.h to pr_strng.h to avoid clashes
      with <strings.h>: we need <strings.h> for the strcasecmp
      and strncasecmp functions. used -dirafter for the local
      includes where possible. renamed strings.c to pr_strng.c
      for consistancy.

2006-07-16 (CVS):
    * added mute, volumeup and volumedown console commands. patch from
      Steven.
    * clean-up in hexenworld master server: removed dead code (the info,
      heartbeat and players members of the server_t structure were never
      used in any way), added M2C_MASTER_REPLY defined as 'd' and used it
      in Mst_SendList, fixed an error in the packet parser which always
      reported that it received a pingtool server list request even for
      invalid packets, added a "clear" console command to clear the list
      of registered servers, moved the "fil|er" console command addition
      to net.c.
    * whitespace cleanup in hexenworld master server
    * updated the documentation for hexenworld master server

2006-07-15 (CVS):
    * updated the mkrelease script to run on non-linux platforms
    * updates to the build scripts.
    * removed unintended viewmodel movement upon setting viewsize to maximum.
      fix from Jacques Krige.
    * more compile fixes about global vars being declared in multiple
      sources: screenwidth. from the PalmOS port.
    * removed declaration of non-existant prealspandrawer function pointer

2006-07-05 (CVS):
    * updated the MacOSX Xcode files for 1.4.1-pre8. from Levent Yavas.
    * updated the documentation.
    * RPM spec file update: added the dedicated server to the packaged
      binaries, preparing it for a future 1.4.1 release.

2006-07-04 (CVS, 1.4.1-pre8):
    * enabled fullscreen/windowed switching through the menu system
      in cases where instant SDL toggling doesn't work
    * removed unnecessary pthread linkage from hexenworld server
    * marked the snapshot of 2006-07-04 as 1.4.1-pre8

2006-07-03 (CVS):
    * killed stpcpy() usage in utils/dcc
    * made Q_strlwr and Q_strupr global
    * disabled the sys_memory, sys_cache and sys_stats console commands
      for server-only binaries except for debug builds.
    * re-visited the GL data types, made them to be of GL types and solved
      the signedness issues. completely removed the scrap allocation option.
      thanks to Levent Yavas for his help.
    * PF_updateInfoPlaque: changed long type to int to prevent future confusion

2006-07-02 (CVS):
    * uppercased the pr_global_struct() macro for easier detection and searching.
      put that macro in use in hexenworld server for smaller diffs between
      the two versions. (there are no actual code changes here, only style and
      cosmetics.)
    * minor optimiziations to mathlib: added VectorNegate and VectorClear macros
      which stops vec3_origin usage in relevant calculations. renamed the Length
      macro to VectorLength for consistancy. updated the utilities' mathlib for
      similar macro usage as in the engine.

2006-06-30 (CVS):
    * cleaned up win32 version's resource stuff and comctl32 linkage

2006-06-29 (CVS):
    * updated opengl header includes
    * improted Xcode build files for MacOSX. from Levent Yavas.
    * made the asm files to compile with yasm. tested with yasm-0.5.0rc2
    * fixed alsa minimum required version detection (again). only a
      theoretical thing, but just for correctness' sake.
    * qbsp: do the name search in a case insensitive way. some wadfiles
      doesn't have the texture name in expected case.
    * cleaned up some things in the build system. added no sound and
      no cdaudio options. removed static build targets from hexen2
      and hexenworld makefiles. misc small things.

2006-06-25 (CVS, 1.4.1-pre7):
    * added a hexen2 dedicated server which seems to work much better than
      the client/server application running in dedicated mode. model loading
      implementation taken from LordHavoc's old lhnqserver, as it seems better
      than the one in hexenworld server.
    * h2ded: in NET_SendToAll, a check for canSend had to be added. otherwise
      a changelevel issued by the progs doesn't work. if compiled in debug
      mode, it is revealed thatthe message was being attempted to be sent
      while canSend was false. on the otherhand, a changelevel from the
      console seemed fine..
    * separated cl_effect.c and sv_effect.c for easier maintainance
    * renamed CL_CopyFiles to Host_CopyFiles and CL_RemoveGIPFiles to
      Host_RemoveGIPFiles, moved them to host.c
    * added Q_malloc, Q_free and COM_LoadMallocFile, which may become useful.
      found among some old sources by LordHavoc.
    * move the multiplayer game saves while moving the user data, as well.
    * moved mousestate activation stuff to CL_ParseServerInfo
    * better handling of the +attack/-attack demo recording hack
    * added timeBeginPeriod to win32 timeGetTime usage
    * misc clean-ups and prepare for merging a dedicated server
    * marked the snapshot of 2006-06-25 as 1.4.1-pre7

2006-06-17 (CVS, 1.4.1-pre6):
    * merged a newer version of sdl cdaudio driver: lifted from the twilight
      project and applied additional bug fixes. the older driver we took from
      sdlquake was noticably slowing down the game.
    * skip intermissions while recording demos across multiple levels,
      but stop recording at ending scenes.
    * do the GETOSPACE ioctl after setting the parameters and just before
      mmaping /dev/dsp. found in QuDos quake2 port, reported by an anonymous
      forum poster.
    * ifdef'ed the qnx quirk in in_sdl.c, just in case..
    * QNX needs -lsocket as an LDFLAG. added to scripts/makefile.inc
    * lib3dfxgamma must actually be compiled with -fPIC ..
    * updated the makefile of the launcher
    * marked the snapshot of 2006-06-17 as 1.4.1-pre6

2006-06-15 (CVS, 1.4.1-pre5):
    * fixed gcc-4.1 compiler warning in dcc:  In function 'WriteData':
      hcc.c:319: warning: dereferencing type-punned pointer will break
      strict-aliasing rules
    * added big-endian support (byte swapping) to hcc while writing down the
      compiled progs. tested on sparc-solaris and ppc64-linux.
    * added big-endian support (byte swapping) to jsh2color while writing down the
      litfile. tested on sparc-solaris and ppc64-linux.
    * added a script to detect arch and os. taken from loki setup tools.
    * updated build system: stored target machine type to MACH_TYPE, the
      i586 march flag is only used on MACH_TYPE==x86 and is overridable in
      the makefile, added an extra ARCHFLAGS, added -DSUNOS to ARCHFLAGS
      for SunOS.
    * added an experimental SUN Audio driver, adapted from the darkplaces
      project. for native audio in openbsd and netbsd.
    * kept the same standart for alsa sound availablity in snd_sys
    * sunaudio, launcher integration
    * bumped launcher version to 0.7.6
    * Updated help strings with regard to the available sound drivers
    * added (back) the sys/filio.h include of SunOS
    * on some arches -lsocket is needed. added for SunOS, waiting Steve for QNX.
    * net compile fixes on sun/solaris. model_t hack found in the darkplaces
      project.
    * added network compatibility support for Korax's UQE-Hexen2-1.13 (protocol
      version 20, uses two new svc messages which are harmless on client without
      actual support for them).
    * added a comment about win32 needn't be x86 only (how about alpha?..)
    * bumped version to 1.4.1-pre5 / 2006-06-15

2006-06-14 (CVS, 1.4.1-pre4):
    * eliminated some ifdefs by defining flush_textures as 1 in glquake.h for h2w
    * removed bogus retval check from win32 version of Sys_FindFirstFile
    * made console and menu to disappear for playdemo like it does in timedemo.
      thanks go to Korax for notifying me about this.
    * disabled the VCR facility by default. made it a compile time option. after
      all, it is not an ordinary demo recording but a server only feature for
      debugging server bugs.
    * Version 1.4.1-pre4 / 2006-06-14.

2006-06-13 (CVS):
    * removed runtime linkage to winsock: we already link to winsock
      at compile time, and not doing so fails our linkage anyway.

2006-06-12 (CVS):
    * fixed the backspace and return keys not working in the in-game console
      in QNX. magically they did work in the disconnected full screen console.
      from Steven.
    * fixed client segmentation faults in heterogenous client/server situations,
      such as pure hexen2 client vs. mission pack server: we now Host_Error upon
      missing models when connecting to a server.
    * do not sys_error if we can't bind to a network interface at init phase

2006-06-10 (CVS, 1.4.1-pre3):
    * added -cddev commandline argument support to cd_sdl. from Steven.
    * added QNX among the platform names
    * simplified handling of old_bgmtype in menu.c
    * 1.4.1-pre3 / 2006-06-10

2006-06-08 (CVS, 1.4.1-pre3):
    * split strings out of pr_edict.c and sync'ed it with the hexenworld version
    * provide the flags to mprotect() in a more standart way. from Steven.
    * handled mprotect() for qnx systems (no getpagesize()). taken from quakeforge.
      we need to do a better job of of ifdef'ing here, though: do we need autotools
      support ???
    * 1.4.1-pre3 / 2006-06-08

2006-06-03 (CVS, 1.4.1-pre3):
    * fixed broken display of launcher binary name when run using a symlink.
    * cdrom: the case when the user changes track without using the "cd"
      command should now be handled correctly (was accidentally left commented
      out in cd_bsd. also added to cd_linux now). renamed drv_vol0 to orig_vol.
      misc whitespace cleanup.
    * added back the password file method of determining the user's home
      as a compile time option. modified the length check for the homedir
      path length using the length of a would-be-large-enough template.
      small clean-ups here and there.
    * a few MorphOS fixes, hopefully all correct.. those ifdef __MORPHOS__
      stuff are probably correct for AmigaOS, as well.. some header clean-ups
      here and there.
    * bumped engine version to 1.4.1-pre3 / 2006-06-03, hwmaster version to
      1.2.3, and launcher version to 0.7.5.

2006-05-31 (CVS, 1.4.1-pre2):
    * hexen2/view.c: disabled the irritating forced centerview (pitch
      drifting) while flying in hexen2. the behavior now matches that
      of hexenworld.
    * cl_input.c, in_sdl.c, in_win.c, hexenworld/Client/view.c: made
      things a little bit more readable.
    * quakedef.h, bothdefs.h: version 1.4.1-pre2 / 2006-05-31

2006-05-26 (CVS, 1.4.1-pre2):
    * fixed Mac platform defines. Added DragonFly into the platform names.
    * hopefully fixed all linkage errors on MacOSX
    * commented out the unused Sys_kbhit thing in the utilities
    * bumped the version to 1.4.1-pre2 / 2006-05-26

2006-05-20 (CVS, 1.4.1-pre1):
    * snd_oss endianness fixes.
    * cleaned up sound tryrates, etc. changed tryrates array to include
      48000, 24000, and 16000 speeds (this should help 48khz AC97 chips,
      from darkplaces).
    * added 24000 and 16000 sound sampling rates to the launcher. bumped
      its version to 0.7.4.

2006-05-19 (CVS, 1.4.1-pre1):
    * added a compile time option to dicetly activate the mission pack
      support without the need for a commandline option like -portals
      or -h2mp
    * misc clean-up

2006-05-18 (CVS, 1.4.1-pre1):
    * AoT and earlier versions of HoT didn't create <userdir>/data1
      and kept all user the data in <userdir> instead. Starting with
      HoT 1.4.1, we are creating and using <userdir>/data1 . Added a
      procedure in order to update the user direcory accordingly.
    * Made cdaudio and midi to stop upon CL_Disconnect
    * Made COM_WriteFile() to return 0 on success, 1 on write errors
    * Added MacOS and MacOSX to platform names. on macosx, set the userdir
      to ~/Library/Application Support/Hexen2 instead of ~/.hexen2
    * Set bMidiInited to 0 in MIDI_Cleanup()
    * Renamed MIDI_UpdateVolume to MIDI_Update
    * Incremented the version to 1.4.1-pre1

2006-05-17 (CVS):
    * fixed demos freezing upon changing maps in hexen2. fix found
      in Pa3PyX' sources. hexenworld doesn't suffer from this issue.

2006-05-12 (CVS):
    * gl_draw.c, gl_vidsdl.c, gl_vidnt.c: hopefully fixed all endianness
      issues with opengl. placed two FIXMEs around the palettized textures
      code in VID_SetPalette which I am not sure about.
    * doc update: fixed a few typos, etc.

2006-05-05 (CVS):
    * hexen2/net_udp.c: fixed compilation on OpenBSD
    * hw_utils/hwrcon/hwterm.c: fixed compilation on NetBSD
    * made some build scripts more BSD-friendly

2006-04-28 (1.4.0-final):
    * hexen2/pr_edict.c: char seems to be of different signedness on MorphOS,
      so changed the type of NewLineChar to signed char. Thanks go to Michal
      Wozniak for catching this.
    * added an extra patch that restores the old and less slippery Anvil of
      Thyrion friction for original hexen2 games
    * A few minor documentation updates

2006-04-18 (1.4.0-final):
    * back to xdelta for pak binary patching, removed loki_patch: all of its
      fancy bloat can be done in a shell script, which is more customizable.
    * minor documentation updates
    * several packaging tidy-ups
    * minor update to version display stuff
    * 2006-04-18: HoT-1.4.0-final.

2006-04-12 (CVS, 1.4.0-RC3):
    * disabled multitextured sky for 3dfx: it doesn't like GL_DECAL
    * allowed hexenworld to skip the mission pack support if -noportals
      commandline switch is used.
    * added the -portals and -noportals switches to the help output.
    * several documentation updates.
    * marked the snapshot of 12 Apr. 2006 as 1.4.0-RC3

2006-04-10 (CVS):
    * launcher version 0.7.3: changed the portals destiny option into an option
      check button. moved mod combolist preparation to callbacks.c, added an
      extra filename check to hw mod detection. made h2game option to be saved
      in launcher_options, added is_botmatch to decide on -listen and -nolan
      arguments, misc tidy-ups.
    * Made the model data caching (the ms2 files) a compile time opengl option
      defaulting to off (DO_MESH_CACHE): it causes more problems than it solves,
      and there is no easy way to prevent the mesh cache mismatches. You change
      the mdl file with an override file, but you have a cached ms2 file in the
      glhexen directory from the old mdl --> crazy models on the screen. Or, you
      run a mod without the mission pack first and then with mission pack, or
      vice versa, and the ms2 cache from the previous instance would mismatch
      the mdl from the latter --> crazy models on the screen again (in fact,
      this second one can be overcome somehow, but it's not worth the effort.)
      With this option set to 0, no problems...
    * gathered all compile-time opengl options into a gl_opt.h header file.
      changed USE_HEXEN2_PALTEX_CODE and USE_HEXEN2_RESAMPLER_CODE to 0 / 1
      instead of the previous define/undef.
    * changed hwcl client struture to have a 128 length mide_name to be consistent
      with the rest of the tree (h2 and hwsv already had it as 128.)
    * usual whitespace / coding style tidy-ups : d_vars.c, nonintel.c, sv_effect.c,
      cl_effect.c, cl_effect.h, cdaudio.h, mididef.h, hw/progdefs.h, quakedef.h,
      qwswdef.h, bothdefs.h, spritegn.h, client.h, server.h, model.h, gl_model.h,
      vid.h
    * added to extra patches: gl_texsort and R_DrawSequentialPoly()

2006-04-04 (1.4.0-RC2):
    * killed (almost) all H2MP ifdefs: this is the first step in making a
      single binary which handles both h2 and h2mp properly. the only H2MP
      ifdefs left are actually the ones for determining the icon and window
      manager text, so nothing serious. the binary normally will only run the
      original h2 game. if given a -portals or -missionpack or -h2mp argument,
      it will look for the mission pack and run it (this is the same logic
      that quake used.) The only serious side effect is that h2 and h2mp
      progs being different: This will be solved by the next patch by adding
      support for the two progs versions into a single binary.
    * added support for both hexen2-v1.11 and h2mp-v1.12 progs into a single
      hexen2 binary. this essentially completes the h2/h2mp binary merge
      started with the previous patch. many conditionals had to be added
      especially on the server side, but I couldn't notice any serious
      performance loss on a PIII-733 computer. Supportfor multiple progs.dat
      is now advised to be left enabled in order to support mods which uses
      that feature.
    * removed all h2mp targets from the hexen2 makefile. now that we use a
      single binary for both h2 and h2mp, different builds are not necessary.
    * added a maplist.txt with only a 0 in it to the portals directory
      so that the mission pack running a hexen2 boss map wouldn't need
      a progs2.dat
    * launcher v0.7.0: changed binary name handling with respect to recent
      engine changes. other small tidy-ups.
    * updated documentation about running the mission pack. small tidy-ups.
    * duplicated trace setting code in pr_cmds.c made into a new PR_SetTrace
      procedure
    * added detailed comments to COM_Gamedir. added sanity checking for
      reserved game directory names in COM_Gamedir.
    * added support for activating the mission pack by a "-game portals"
      command-line argument.
    * re-diff'ed the hexen2_single_prog and demoness_in_oldmission extra
      patches after these changes
    * marked the snapshot of 2006-04-04 as 1.4.0-RC2

2006-03-31:
    * filename reorganization in the cvs: removed the irritating "_dl_"
      from the hexen2 gl files. renamed the weird xdelta files.
    * continued making static functions and vars static. whitespace and
      coding style cleanup. Also fixed a nasty bug in the hexenworld
      version of r_sprite.c that would show up or platforms where
      sizeof(float) != sizof(float *) (from quakeforge). also removed the
      #warning directives for the non-x86 non-compilability.  added a few
      comments about the non-Intel issue.
    * only add com_userdir to the searchpath if it is different from
      com_gamedir (just in case.)
    * Added a log on compilation for non-x86.
    * minor fixups, minor syncing, whitespace clean-ups
    * fixed -Wshadow warnings
    * fixed compiler warnings (win32)

2006-03-26 (CVS, 1.4.0-RC1):
    * Incremented engine version to 1.15 for hexen2 and 0.17 for hexenworld
    * Updated documentation for compiler support
    * Added basic documentation for hwsv and hwcl
    * Several documentation updates
    * Marked the snapshot of 2006-03-26 as 1.4.0-RC1 (-RC state, finally.)

2006-03-25 (CVS, 1.4.0-pre8):
    * Fixed COM_Gamedir() to properly update com_gamedir in case of directory
      names already in com_base_searchpaths.
    * hw directory check in COM_Gamedir should be only for hexenworld game
    * modified check in COM_LoadPackFile() should only be done for the base
      filesystem directories, otherwise it is always modified game.
    * COM_Gamedir() should add user directories to the searchpath, as well
    * com_base_searchpaths is only what its name implies: the base game
      directories.  so, moved -game argument handling to COM_Gamedir().
      demo versions are not allowed to -game, as usual.
    * COM_Gamedir: add the directory to the searchpath ~after~ adding the
      pakfiles in that dir, so that the dir itself will be placed above the
      pakfiles in the search order.
    * Change the *gamedir serverinfo key properly in COM_Gamedir(), not in
      SV_Gamedir_f(), so that it is properly set when the server is started
      by a -game argument.
    * Added a simple COM_FileInGamedir() which reports the existance of a file
      with read permissions in com_gamedir or com_userdir. -1 is returned on
      failure, ie the return value of the access() function
    * Hexenworld client::CL_ParseServerData(): exec autoexec.cfg upon gamedir
      change as well.  if we are to exec config.cfg, do an unbindall in order
      to clear any weird mod specific key bindings.  for file existance check,
      use the new COM_FileInGamedir().
    * Added support for pak files in the users' directories.
    * Eliminated multiple listings of maps with the same name.
    * Changed the name of the maps command to maplist for consistancy
    * Tiny tidy-ups.

2006-03-24 (CVS, 1.4.0-pre8):
    * Weird patch (TM) :  not just a silly debug message place and content
      change. it actually prevents a weird segfault ;) [here's the deal:
      after merging in the colored lights patch, the game would always
      segfault when run with a command line like "glhexen2 +load s0" with
      the cvar gl_purge_maptex set to 1. It seems like actually printing
      something on the console just after the textures are purged cures
      this thing. this patch is just a band-aid..]
    * Added a flags member to the cvar structure. For now, only a CVAR_ROM
      is defined and employed: is that flag is set, the cvar cannot be set
      unless the CVAR_ROM bit is cleared by the C code. This is still
      incomplete work.
    * Marked the cvars oem and registered as read-only in COM_InitFilesystem
    * Updated the earl-read-cvars in VID_Init and VID_PostInitFix to use the
      new CVAR_ROM flag: they look less clumsy now.
    * made the lightmap format configurable via the menu system using a new
      cvar gl_lightmapfmt. -lm_1 and -lm_4 are still functional as commandline
      overrides even with commandline options dictating a direct load of a map,
      such as +playdemo xxx or +load xxx. updated the opengl features menu with
      new proper notifications about the colored lighting option's level reload
      necessity and with new entries for the ligthmap format.
    * updated the documentation about the lightmap format configurability
      in the menu system.
    * killed the archive, server and info members of the cvar structure. the
      new flags member is now employed for all those purposes. also made all
      non-globally used cvars static.
    * killed cd_unix.c and made a cd_unix.h to be included in all cdaudio
      files for unix. all unix cdaudio files will be compiled, since they are
      protected by the cd_unix.h include.
    * includes cleanup
    * moved include macros for different xbm icons to a new xbm_icon.h header
    * killed a few -Wshadow warnings. killed some more left-over vars.
      killed unnecessary includes, tiny tidy-ups. windows resource files
      clean-up
    * re-diff'ed (again) some of the extra patches after today's changes.

2006-03-21 (CVS, 1.4.0-pre8):
    * Commented out Anvil of Thyrion solution for the original hexen2 friction
      emulation which was hard-set at 6. Merged the solution found in pa3pyx's
      tree.  v1.11 progs doesn't initialize the friction properly (always 0).
      In fact, applying a patch to the progs can easily solve this issue, but
      in that case several unpatched mods would be left broken. Note: Compared
      to the AoT solution down below, this makes pure-hexen2 to feel slightly
      more slippery.
    * there is no savegame compatibility with the Raven's 1.11 versions.
      updated the features list properly.
    * merged needload stuff of model.c from hexen2 to hexenworld client.
    * continued making static functions and vars static. whitespace and coding
      style cleanup. this time in model.c and gl_model.c. also moved the mcache
      cmd addition to Mod_Init and added save-to-file functionality.

2006-03-20 (CVS, 1.4.0-pre8):
    * sbar cvars update: killed non-functional sbtemp. killed cl_sbar
      and cl_hudswap in hexenworld which was a non-functional left-over
      from quakeworld. added a dmtrans cvar (0,1,2) for the software
      renderer deathmatch overlay translucency which was lost after the
      recent DMMode cvar update.
    * hexenworld hcode: fixed the server crash when the server is spawned
      with dmmode 1. solution found in the ghost mod.
    * hexenworld hcode: properly notify users when dmmode is changed.
      also remove the brightfield from the icon holder when dmmode 1
      is abandoned. code found in the the ghost mode.

2006-03-17 (CVS, 1.4.0-pre8):
    * Fixed the snd_scaletable init breakage with gcc-4.1 and -O1 and higher.
      Thanks to Kevin Shanahan (aka Tyrann).
    * Put back mission-pack only objectives stuff back into pure h2 builds,
      it was a total screw-up.
    * lib3dfxgamma, v0.0.4: Fixed incorrect prototype for the grGet function
      (it takes a signed int param*, not unsigned). Also renamed FX_Get to
      FX_GetInteger to be more explicit.
    * The linux 3dfxgamma option is now compiled in. it no longer unnecessarily
      depends on an external lib3dfxgamma.so.
    * Updates to COM_LoadPackFile, COM_CheckRegistered and COM_InitFilesystem:
      killed variables com_modified, com_portals and static_registered. Combined
      all such info into an unsigned gameflags var. If correct versions of pak
      files are installed at correct places, the state will be set: whether we
      have the demo, oem or registered pakfiles, whether the registered game pak
      files are version 1.11, whether it is a modified game (extra pak files in
      the game directory or -game among the commandline switches), and whether
      we have correct versions portals and hexnworld pakfiles. The game will
      refuse to run on incorrect instances, h2mp will refuse to run if portals
      isn't set and hexenworld will refuse to run if hexenworld isn't set.
      Also activated the hexenworld progs crc check which was comment out (who
      knows why): Server will refuse to run if it detects an incorrect crc for
      its hwprogs.dat.
    * Marked the snapshot of 2006-03-17 as 1.4.0-pre8.

2006-03-14 (CVS, 1.4.0-pre7):
    * Added support for colored lights and .lit files;. initially extracted
      from jshexen2 (thanks Michal Wozniak). Colored lights and lit file
      support is now added to hexenworld, as well, although the new cvars
      gl_colored_dynamic_lights and gl_extra_dynamic_light aren't functional
      for it: hexenworld had some sort of "colored" dynamic lights in it,
      and they aren't changed by this patch. The cvars mentions are fully
      functional for hexen2. Colored lights member of the dlight_t in h2
      is changed to be an array of 4, instead of vec3_t as it used to appear
      in jshexen2, so that things look more alike with the hw version. The
      default lightmap format is changed to GL_RGBA, (previously it was
      GL_LUMINANCE.) Command line arguments can be employed to change the
      lightmap format:  -lm_1 : GL_LUMINANCE, -lm_4 : GL_RGBA (default).
      (Note: Would it be a good (AND a feasible) idea to add a menu+cvar
      control for the lightmap format?)
    * added colored light opions to the opengl features menu.
    * added the -lm_1 and -lm_4 commandline switches to the documentation.
    * updated the documentation with regard to several cvar settings and
      their menu entries. several updates to the features list and the
      release notes.
    * launcher: forcefully use the -window argument, since the fullscreen
      and windowed settings are now remembered by the game.
    * more clarification for the conwidth option on the launcher tooltips
      and in the documentation
    * launcher: removed the unnecessary -nomtex option, added a button to
      enable the old GL_LUMINANCE format (the -lm_1 switch.)
    * splitted the huffman stuff out of net.c to go into their own files
    * fixed objectives in the expansion pack which was broken during the
      1.3.0 development cycle by a bad gcc4 fix
    * fixed a bug where with viewsize (scr_viewsize) being set to 120,
      the game wouldn't start with a mini status bar unless the user did
      a size-up/size-down
    * properly macroized the fullscreen intermissions as a compile time
      option. editing only one line in screen.h is now enough.
    * removed the expansion pack only feature of objective strings from
      hexen2-only builds (many new ifdef H2MP stuff).
    * removed the expansion pack only intermission picture and string
      searches from hexen2-only builds.
    * created a hw_utils module to contain standalone hexenworld utilities
      and imported the rcon tool sources
    * continue making static functions and vars static, whitespace and
      coding style cleanup. a few compiler warnings were fixed and tiny
      synchronizations between h2 and h2w versions were done along the
      way.
    * marked the snapshot of 2006-03-14 as 1.4.0-pre7.

2006-03-04 (CVS, 1.4.0-pre6):
    * fixed the win32 cross compile scripts of the utilities.
    * utils/jsh2color: moved external definition file stuff to tex.c;
      small tidy-ups in args parsing; do not allow -the -nodefault switch
      to take effect if the external color definition file cannot be
      accessed; inserted a note about the fact that the effects of the
      -light argument being zeroed (to be examined); bumped its version
      to 1.2.2.
    * re-organized the gl_vid files' layout a bit. win32 and sdl versions
      should now be more "diffable".
    * small opengl headers tidy-up.
    * another large batch of coding style / whitespace cleanup, continued
      to make static functions and variables static, fixed a few warnings
      and a few tiny bugs along the way.
    * marked the snapshot of 2006-03-04 as 1.4.0-pre6.

2006-03-02 (CVS, 1.4.0-pre5):
    * created a new "opengl features" entry under the options menu and
      moved opengl options under it. added new opengl menu options for
      texture filtering, glow effects, multitexturing, stencil buffered
      shadows and texture purging upon map change.
    * automatically get rid of the menu/console when playing a timedemo.
      patch from Steven.
    * got rid of the menu panels upon starting a new games through the
      menu system
    * extra large tidy-up operation in the utilities tree: killed a few
      warnings about uninitialized variables, added -Wno-char-subscripts
      to the hcc compiler flags to silence the "array subscript has type
      char" warnings in pr_lex.c. added a README file for the jsh2color
      utility. re-worked the utilities documentation. fixed an incredibly
      stupid typo in the makefile which has been there for ages. added
      cross compilation scripts to all of the individual util directories.
      unified the cmdlib for all of the utilities; this includes the newer
      version of COM_Parse() of hcc which aslo parses and skips C style
      comments. commented out unused 3DS stuff in genmodel utility (don't
      even know whether it's working.) allowed compilation of the tiny
      bspinfo tool. created a directory named common under the utilities
      and moved cmdlib and qdir stuff into it for shared usage. largely
      reorganized the utilities directory layout:
	- removed older version of map tools. still keeping the old version
	  of hcc for compatibility reasons.
	- moved several directories to the root of the utils directory:
		h2mp_utils/hcc		->  hcc
		h2_utils/hcc		->  hcc_old
		h2mp_utils/utils	->  maputils
		h2mp_utils/genmodel	->  genmodel
		h2mp_utils/qfiles	->  qfiles
	  the cvs history on the affected files are lost, but one can find
	  them in the Attic, etc.
	- probably several other smallish touches.
    * updated the mkrelease script to kill the obsoleted empty directories
    * added features list to the documents directory
    * another large batch of coding style / whitespace cleanup: continued
      to make static functions and variables static and fixed a few warnings
      and a few tiny bugs along the way.
    * updated the README for the gamecode and marked the snapshot of
      2006-02-24 as version 1.15. I'll probably increment the engine
      version to 1.15, too, when H.o.T.-1.4.0 is ready.
    * marked the snapshot of 2006-03-02 as 1.4.0-pre5.

2006-02-23 (CVS, 1.4.0-pre4):
    * large amount of coding style / whitespace cleanup. continued to make
      static functions and variables static and fixed a few warnings and a
      few tiny bugs along the way.
    * fixed a tiny Makefile bug about the USE_X86_ASM flag.
    * marked the snapshot of 2006-02-23 as 1.4.0-pre4.

2006-02-13 (CVS, 1.4.0-pre3):
    * added missing release notes to the spec file
    * added release notes for future-1.4.0, in pre-release state though..

2006-02-12 (CVS, 1.4.0-pre3):
    * removed bogus message from the MAX_GLTEXTURES Sys_Error
    * updated build requirements in the documentation
    * added a filename change case script. added a script for making a
      release tree from the cvs tree.
    * documented palettized (8 bit) textures option
    * updated the TODO list
    * updated the rpm spec file for future H.o.T.-1.4.0
    * updated the mkrelease script (move the spec file to the root of the tree)
    * imported JSH2Colour-1.1 sources into the utilities
    * jsh2color: coding style, whitespace / indentation clean-up. also removed
      unused light.h includes.
    * jsh2color: removed unused files.
    * jsh2color: updated the gpl license file from gnu.org
    * jsh2color: added unix-style versions of data files
    * jsh2color: added makefiles and build scripts
    * jsh2color: made the unix port:
	- several include fixes
	- moved nested externs out of functions
	- fixed type-punning gcc4 warning in LoadBSPFile
	- removed several unnecessary functions from cmdlib
	- synced cmdlib to what we did in HoT main tree:
	  strcasecmp/stricmp macros, endiannes stuff, getwd
	  fixes, etc.
	- added an ioctl fucntion Sys_kbhit as a _kbhit() replacement
	- moved the DecisionTime thing to cmdlib where it belongs.
	  added a simple _getch() replacement to it using getchar().
	- added a paranoid negative check before a sqrt() call
	- killed all unused variable warnings
	- removed several commented-out stuff
	- trying to print the map name through entity->message requires
	  line number (entity->message)-1  to be read from strings.txt,
	  therefore not worth the effort. commented it out. now printing
	  the map file name, only.
	- merged CalcFaceExtentsNoErr into CalcFaceExtents
	- removed unused macros in ltface.c
	- added math optimization flag -ffast-math, which actually cures
	  a segfault when coloring demo2.bsp. Also added -march=i586 and
	  -fexpensive-optimizations flags.
	- removed unnecessary underscored versions of math functions in
	  mathlib
	- converted VectorLenth() into a macro, in mathlib
	- added min/max macroes for unix
	- added fflush(stdout) calls after all printf() calls which don't
	  print a newline.
	- probably a few other minor stuff.
	- bumped version to 1.2
    * jsh2color: Fixed fpmath segfaults: With vec_t defined as double, the
      front and back stuff in TestLine() need to be vec_t as well:  While
      creating lit files for demo2 or castle4, the gcc compiled binaries
      segfault under either of these conditions:
	- the program is not compiled with the -ffast-math flag.
	- compiled with gcc v4 for arches >= pentiumpro: i686,
	  pentium2, or pentium3 without the -msse -mfpmath=sse
	  extra flags.
    * jsh2color: More double/vec_t clean-up
    * jsh2color: Killed unnecessary mathlib.h include in bspfile.c
    * jsh2color: Cosmetic stuff: report the name of the lit file when finished,
      better reporting of map name.
    * jsh2color: Bumped version to 1.2.1
    * jsh2color: added a changelog
    * jsh2color: updated to use uhexen2 build system
    * added jsh2color to the utils build scripts.
    * added jsh2color to the utils README.
    * bumped version to 1.4.0-pre3 (2006-02-12)

2006-01-24 (CVS, 1.4.0-pre2):
    * fixed a silly opengl bug which used to display "weird things (TM)" on
      win32 when antialiasing was set manually.
    * small tweak to fade screen
    * bumped version to 1.4.0-pre2 (2006-01-24)

2006-01-23 (CVS, 1.4.0-pre1):
    * sys_unix.c: added code to sleep a bit when we have no focus or paused, and
      sleep more when we are minimized. inspired from the q3 project at icculus.
    * tidied up the version and help display stuff. bumped the HoT version to
      1.4.0-pre1. added conditionals to properly display beta version strings.

2006-01-22 (CVS):
    * added gcc version detection scripts. our unit-at-a-time problem seems to
      be limited to gcc-4.0 series only. gcc-4.1 seems fine for now. limited
      disabling of that feature to gcc-4.0.x compilers by default, but the
      behavior can always be adjusted by adding a DISABLE_UNIT_AT_A_TIME=0 or
      1 to the make commandline.
    * added nonintel.c to compilation. although it's empty for i386, we can
      make use of it one day.
    * added a Q_isnan for NaN tests with -ffast-math, maybe of use someday.
      taken from the icculus-quake3 project.

2006-01-21 (CVS):
    * gl_vidnt.c: DescribePixelFormat fails with old 3dfx minigl drivers: don't
      Sys_Error.

2006-01-20 (CVS):
    * Switched back to original hexen2 version of GL_ResampleTexture: the h2w
      (quake) code gave slightly sharper but "jaggier" textures here and there.
      bad results were especially detectable on help screens when using old
      cards with small (256 kb) texture size support (read: old voodoo boards).
      by changing the macro USE_HEXEN2_RESAMPLER_CODE from define to undef in
      glquake.h, one can always use the h2w version.
    * Changed palettized texture code macro name from OLD_8_BIT_PALETTE_CODE
      to USE_HEXEN2_PALTEX_CODE.
    * Added debug-mode error reporting to CL_CopyFiles, since we're dealing
      with multiple file access in there (from Steven.)

2006-01-17 (CVS):
    * Made the game to remember its video settings:
      We essentially do an early read of config.cfg while in VID_Init to
      remember the settings (new procedure: VID_EarlyReadConfig). (new
      cvars: vid_config_glx, vid_config_gly, vid_config_swx, vid_config_swy,
      and vid_config_fscr). The commandline still acts as an override. Then,
      it fixes the cvar screw-up caused by the actual read of config.cfg by
      overwriting the affected cvars with the running settings (new tiny
      procedure: VID_PostInitFix, called from Host_Init).
      Implemented here are the screen dimensions, color bits (bpp, for win32,
      cvar: vid_config_bpp), palettized textures and multisampling (fsaa, for
      unix, cvars: vid_config_gl8bit and vid_config_fsaa) options with their
      menu representations and cvar memorizations.
      This method can probably be also used to store/remember the conwidth
      settings. Also applicable is the sound settings, such as the driver,
      sampling rate, format, etc.
      Secondly, the patch sets the fullscreen cvar not by only looking at silly
      values but by looking at the current SDL_Screen flags.
    * Bound win32 window names and classnames to macros for better readablity
    * Win32 software renderer: disabled windirect (vesa) modes by default,
      because they aren't working reliably (at least not on my box). Enabled
      directdraw modes by default, they seem to work OK, for now.
    * Synced win32 software renderers: hexen2 now uses the new driver from h2w
    * Added block_drawing stuff of h2w to hexen2 (new vid_win.c requires it.)
    * Removed Snd_AcquireBuffer and Snd_ReleaseBuffer (was only used by the old
      vid_win.c of hexen2.)

2006-01-16 (CVS):
    * macroized dlsymming of gl functions (similar to dlsymming of alsa
      functions) which freed a lot of crowd from gl_vidXXX files.

2006-01-15 (CVS):
    * switched back to original hexen II code for palettized textures for
      better quality, leaving the newer hexenworld (quake) code as option:
      changing the macro OLD_8_BIT_PALETTE_CODE from define to undef in
      glquake.h will do the switching.

2006-01-14 (CVS):
    * fixed fullscreen/windowed toggling in windows opengl version.
    * fixed the incorrect (misled) usage of modestate values, although
      the result doesn't change.

2006-01-12 (CVS):
    * added video modes enumeration via SDL. added on-the-fly video mode
      changing partially based on the Pa3PyX hexen2 tree. TODO: make the
      game remember its video settings, clean it up, fix it up...
    * created an sdl_inc.h with all sdl version requirements and replaced
      all SDL.h and SDL_mixer.h includes with it. Made the source to compile
      against SDL versions older than 1.2.6 without disabling multisampling.
      Multisampling (fsaa) option is now decided at runtime. Minimum required
      SDL and SDL_mixer versions are now 1.2.4. If compiled without midi,
      minimum SDL required is 1.2.0. Added SDL_mixer version checking to
      sdl-midi with measures to prevent relocation errors.
    * fixed incorrect compatibility define for DWORD
    * small alsa buffersize update taken from the quakeforge tree. also added
      a ALSA_CHECK_ERR macro to make the init procedure more readable. coding
      style cleanup.
    * moved init of platform specific vars and function pointers to snd_sys
    * small update to the sdl sound driver
    * do not change the desined_XXX sound variables in case of failures.
    * sound wnitespace cleanup.
    * used a more readable name for list of symbols in lib3dfxgamma
    * merged quake3 bits to the alternative sdl sound patch to cure most of
      the latency issues and re-diffed after the latest sound changes

2006-01-07 (CVS):
    * cleanup and "static" stuff on the vid files
    * added the last pieces (lightmaps) of adjustable filters which I've
      been forgetting for a very long time
    * made M_DrawCheckbox global
    * tiny whitespace cleanup in sbar.c

2006-01-06 (CVS):
    * killed unnecessary includes in sv_main
    * added a simplified findfirst/findnext implementation: When given a
      directory and a wildcard match pattern, they will find/report the
      matches one after other. Unix implementation uses readdir()/fnmatch(),
      win32 uses FindFirstFile native functions. Sys_FindFirstFile and
      Sys_FindNextFile return filenames only, not a dirent struct, therefore
      there is no attribute matching. this is enough for what we presently
      need in this engine. may be improved in future.
    * put the new Sys_FindFirstFile/Sys_FindNextFile stuff into action.
      also killed the tempdir and trailing slash funnies in host_cmd.c when
      calling CL_CopyFiles and CL_RemoveGIPFiles in saving and loading games.
    * increased minimum heapsize to 16 mb, otherwise hunk allocation errors
      occur with old 8 mb minimum. added a -forcemem commandline switch which
      enables forcing user memory args out of min/max limits when parsing
      the -heapsize and -zone switches.

2005-12-30 (CVS):
    * gl_draw fixes/clean-ups: fixed palettized textures corruption upon
      resolution changing (which will be available by an upcoming patch),
      applied the same fix for scaled data allocation in other texture upload
      functions just to be on the safe side, added detailed info when reporting
      texture cache mismatches, killed unnecessary alpha checking in palettized
      texture upload, several other whitespace clean-ups.

2005-12-29 (CVS):
    * small fixes/clean-ups after the commits from 2005-12-28

2005-12-28 (CVS):
    * added a USE_INTEL_ASM build flag which joins in deciding the value
      of id386 and, apparently, intel assembly usage.
      without the -DUSE_INTEL_ASM flag, the opengl version builds and runs
      just fine, but the software version still needs fixing.
    * the autorepeats patch I applied used does work all times but with this
      exception: when not connected (either to a remote or through loop, aka
      single player), the menu system and keys code does specifically not set
      key_console: start hexen2 and press escape, you'll have the full-screen
      console, but "it doesn't count" for the game, key_dest != key_console .
      I am not sure about the reason for this yet, so here is a hack for auto
      repeats to work in such cases, as well. any better solutions?
    * bound the scroll-to-top/scroll-to-bottom keys to ctrl-home/ctrl-end
      instead of shift-home/shitf-end. the latter used to work only in
      fullscreen console, not in the in-game console.
    * implemented partial tab completion: added char **buf, and int pos
      arguments to the command lister functions. they will no longer print the
      matches unless the buf argument is NULL. this way, command completion
      will collect all the matches and print them at its will. this also allowed
      implementing partial tab completion: typing men and pressing tab will no
      longer stupidly stay at men, but will partially auto complete to menu_,
      now.
    * cleaned up the console tab completion:
      - removed duplicate and unnecessary code, hopefully more readable now.
      bug fixes:
      - fixed edit line not resetting to emptiness when returning from history
        by the down-arrow key
      - fixed earliest history being displayed as an empty line when using the
        up-arrow key (from QIP)
      - fixed null-termination issues in partial completion where after first
        displaying the history command lines (up key) and then going back to the
        edit line (down key) the latest history got appended to the completion
        (this bug was only visable after fixing the first mentioned bug above)
    * added Steven's ShowList as a console function. prints a given list to the
      console with a columnized formatting. ported from Tyrann's tyrquake tree.
    * columnized the output from command completion. from Steven
    * added COM_StrCompare as a quick'n'dirty string comparison function for
      use with qsort
    * sort the tab-completions (COM_StrCompare) before listing them
    * made COM_CopyFile return int and added ferror() calls after every fread()
      and fwrite() calls, so that CL_CopyFiles can behave correctly under unix.
      made SaveGamestate return qboolean, replaced the silly "ERROR: couldn't
      open" message by goto retry_message calls. made Host_Savegame_f to return
      immediately upon SaveGamestate failure.
    * added "maps" command to list all the maps in the searchpath. from Steven.
      shortened and modified by O.S. to use fnmatch instead of scandir and to
      make win32 to list maps not residing in a pakfile.

2005-12-15 (CVS):
    * updated the documentation

2005-12-14 (CVS):
    * fixed my brain damage in sys.h

2005-12-11 (CVS):
    * replaced some broken code in GL_Upload8 with code taken from quake2
    * synchronized different sbar function names between h2 and h2w.
      there was a mess about SB_Changed and Sbar_Changed in h2w, this
      patch fixes that: h2 (and h2w) version of SB_Changed was never
      functional. h2w actually called SB_InvChanged, who knows what
      the original intention was, but that seemed serving to no purpose
      to me. in any case, watching for any new weirdness in h2w would
      be advisable. ability string indexes for the demoness and dwarf
      classes in h2w are fixed. armor class display in h2w is fixed.
      h2 and h2w versions of gl_vidsdl and gl_vidnt are synchronized.
    * updated the software sdl renderer: removed a lot of unnecessary
      things which aren't of use in its current state with no mode
      switching feature. it now follows the same style as in the sdlgl
      version. placed D_BeginDirectRect and D_EndDirectRect bits taken
      from quakeforge, so the rotating skull now works. the loading
      plaque now works in fullscreen modes, which it didn't before.
    * added menu.c arguments to gl version of Draw_TransPicTranslate, and
      macroized M_DrawTransPicTranslate accordingly. this synchronizes h2
      and h2w versions of gl_draw.c
    * ported all of Pa3PyX' changes in hexen2/vid_win.c to hexenworld
    * fixed win32 window restore bug that prevented the screen from being
      updated
    * win32 wheelmouse cleanup
    * killed a compiler warning in in_win.c

2005-12-06 (CVS):
    * updated the 3dfx gamma library to v0.0.3 and added a version
      that can be compiled into an application

2005-12-05 (CVS):
    * fixed compilation of gl_vidnt.c (missing semicolon)

2005-12-04 (CVS):
    * made com_basedir global
    * updated the vsnprintf stuff
    * updated the gamma stuff
    * updated gl library dlopen()ing
    * init stuff cleanup
    * added some hints to README.3dfx about using
      the fxMesa library with games without any
      user-specified opengl library support

2005-11-23 (CVS):
    * hopefully fixed bsd compilation of net_dgram.c
    * changed USE_MIDI definition usage with a NO_MIDIMUSIC definition
    * Major build system update. Includes a workaround for a gcc4
      problem we have been encountering.

2005-11-05 (CVS):
    * better tab-completion: fixed an off-by-one error in deciding
      whether we are in inline-edit mode; made it to report the match
      count if there are more than one matches; cancelled auto-completion
      to the first possible match unless there is only one
    * renamed win32 resource files to win32res.rc, adjusted the makefiles
    * removed dead code using the dead segmentCount variable
    * fixed gcc4 signedness warnings in hexenworld/Server/sv_main.c,
      matched the sv_highchars code to to that of quakeworld
    * fixed some gcc4 warnings

2005-11-02 (CVS):
    * shortened midi file opening for SDL_mixer. the midi cache
      will be directly under <com_userdir>/.midi from now on.
    * set host_hunklevel before execing hexen.rc
    * updated hexen2 version of Cvar_CompleteVariable
    * updated Cvar_RegisterVariable of hexen2 from hexenworld.
      replaced strcpy() in there with a strncpy().
    * killed a silly quake left-over code in Host_Startdemos_f
    * more checks for coop and deathmatch not be set at the same time
    * noexit is supposed to matter only for deathmatch, not for coop
      and singleplayer
    * CheckRules (timelimit and fraglimit) is supposed to matter only
      for deathmatch, not for coop and singleplayer
    * fixed a typo in misc_fireball() (from QIP)

2005-11-01 (CVS):
    * set the playerclass cvar default to paladin. that way, a new
      installation of original hexen2 shall not fail when run first
      time using a +map X commandline argument.

2005-10-22 / 30 (CVS):
    * added list commands for cvars and aliases (cvarlist and
      aliaslist.) changed the old command lister name from list
      to cmdlist.
    * implemented console tab completion
    * adapted insert/overwrite mode console editing by Radix (see at
      quakesrc.org). overwrite mode is default, INS key will toggle
      insert mode. changed the cursor blink to underscore/full-square.
      adapted the tab-completion code to mimic bash style completion.
      changed HOME and END keys' behavior, old habit of displaying the
      topmost/endmost history page is accomplished only when the shift
      key is pressed along, otherwise the cursor will be moved to the
      first/end position.
    * bugfix: set the gl_texlevel before execing hexen.rc, otherwise
      a +map xxx console command shall end up with a broken display.
    * unified the cmd layer of hexen2 and hexenworld
    * round to nearest value, rather than rounding toward zero while
      sending angles and coords. (from the darkplaces project where
      it fixes the crosshair problem.)
    * added a STRINGIFY macro. unified version macros. simplified
      version printing. simplified and enhanced version watermark
      print onto console background. added HoT lines to the quit menu
      (shameless plug)
    * started making local functions static, killing nested externs,
      and const vars clean-up. still not finished even halfway, more
      will follow.
    * fixed "might be used uninitialized" warnings for xyfact and zfact
    * fixed "bestmatch might be used uninitialized" warning, although a
      better understanding is necessary for it.
    * added a missing break in CL_ParseServerMessage of hexen2.
    * fixed those double semicolons.
    * moved d_ifacea.h to <topdir>/asm. the nasm files arent actually
      using it now.
    * fixed a bug causing Draw_EndDisc() to return unconditionally
      without doing anything. coding style is not just cosmetics..
    * syced h2 and h2w versions of D_DrawSurfaces
    * killed pointless calls to D_EndParticles and D_StartParticles
    * killed Draw_DebugChar
    * added a prototype for Draw_Crosshair to draw.h
    * fixed a typo in Sys_error message of FindColor
    * probably a few other clean-ups here and there.
    * a lot of whitespace and coding style clean-ups.

2005-10-21 (CVS):
    * added support for systems without OSS sound.
    * added a paranoid case to S_SoundInfo.
    * killed a few unnecessary sound prints.
    * added more platform defines.
    * added NetBSD and OpenBSD to cd_bsd.
    * merged the gl headers back into glquake.h.
    * merged gl_func_nondl.h into gl_func.h.
    * added a unix makefile option for linking to gl functions at
      runtime, similar to win32 version.
    * hexenworld server shall now flush its logfiles upon every print.
    * made key repeats work.

2005-10-16 (CVS):
    * added math optimization flags to utilities and
      hwsv CFLAS. they are now compiled for i586.

2005-10-14 (CVS):
    * Updated the documentation for sound problems and workarounds

2005-10-13 (CVS):
    * net_wipx.c: fixed wsipx.h include for lcc
    * net_wins.c: conditionalized win32 socklen_t define to non-winsock2 case
    * net_dgrm.c: used standart headers for unix
    * net_udp.c: made UDP_MakeSocketBroadcastCapable static
    * net_udp.c: cosmetic clean-up
    * net_udp.c: removed unnecessary prototypes
    * net_udp.c: close the socket by UDP_CloseSocket in UDP_OpenSocket failures
    * net_udp.c: quietly absorb empty packets
    * hexen2/net_wins.c: mostly cosmetic clean-ups
    * net_wipx.c: clean-ups
    * hexenworld/net*: added ip interface binding option (-ip xxx.xxx.xxx.xxx)
      to hexenworld server. added sanity checking to and fixed the off by one
      error in -ip option of the master server.
    * opengl: moved gl_lightmap format setup to GL_Init
    * gl_rsurf.c: added a missing glDisable(GL_BLEND) for multitextured rendering
      (from Michal Wozniak.)
    * menu.c: M_ScanSaves() and M_ScanMSaves() should actually use com_savedir,
      not com_userdir. By default, they are the same but this is for correctness.
    * hexen2/cl_tent.c: added comment: why break in the middle skipping dlights??

2005-10-03 (CVS):
    * Fix glows of floating models (eg. mana) not floating along with the
      model. Also a fix intersecting of mana boxes with glow. from Michal
      Wozniak.
    * changed hexenworld server log filename from qconsole.log to hwsv.log

2005-10-02 (CVS):
    * killed -Wshadow warnings
    * killed lcd_x and lcd_yaw (the stereoscopic stuff.
      never tested, never used.)
    * removed unnecessary scitech mgl headers

2005-09-30 (CVS):
    * removed unnecessary -lm LDFLAG from hwmaster
    * removed unnecessary -lm LDFLAGs from MinGW compilations
    * killed dcc warning about zero-length format string
    * added back the _GNU_SOURCE flag to dcc, required for stpcpy()
    * removed commented-out typedef from dcc (already is in its header
      file)

2005-09-29 (CVS):
    * break the loop from CRC_Block into CRC_ProcessBlock so that crcs
      can be calculated over multiple blocks (from QuakeForge, for future
      use.)
    * hexenworld/Server/pr_edict.c: CRC_Block() now returns unsigned short
    * added major light speedup version of R_MarkLights by Lord Havoc
    * cleaned-up Host_Init and Host_Shutdown stuff. removed unnecessary
      ca_dedicated checks from CDAudio_Init.
    * cleaned-up hash check stuff in GL_LoadTexture. added crc check as
      an alternative (disabled by default.)
    * avoid glhexen2 and glh2mp segfaults when run as dedicated server

2005-09-28 (CVS):
    * took care of flickering problem while drawing the loading
      plaque (from Pa3PyX.) glFlush is now required. this also
      fixes the problem of loading plaque not being displayed
      when antialiasing is in effect.
    * killed the cvar sys_delay
    * avoid running timerefresh when not connected
    * changed ref value of glAlphaFunc from 0.666 to 0.632 (1 - 1/e) in
      order to avoid clipping of smaller fonts/graphics (from Pa3PyX).
    * renamed ToggleFullScreenSA to VID_ToggleFullscreen which actually
      is of VID_ class and now is easier to locate
    * killed the irritating Poisong_die dprint in hexenworld progs.

2005-09-26 (CVS):
    * flush the command buffer before setting host_initialized to true
    * update the vid_modes only after host_initialized is set to true.
      fixes the issue about correct resolution setting from config.cfg
      not being restored for the win32 software version.
    * merged a few safe fixes of Pa3PyX from hexen2 to hexenworld vid_win.c
    * whitespace and indentation fixes in vid_win.c
    * updated the list of known bugs
    * updated the todo list

2005-09-25 (CVS):
    * fixed a bunch of compiler warnings
    * fixed and activated start-up splash screens of the win32
      version for mingw. removed the ms vc versions
    * widened text splash window for hexenworld to fit
    * different splash text fon h2 h2mp and hexenworld

2005-09-23 (CVS):
    * fixed win32 software version's linkage: added proper libmglfx.a
      for mingw (generated by pexports and dlltool). link against our
      libmglfx.a  with -lmglfx, instead of linking against mglfxi.lib
      with -lmglfxi. added mgl-4.05 redist files to the cvs.

2005-09-21 (CVS):
    * added cross compilation support on unix for the win32 version
    * removed backslash dir separators from hexenworld includes: they
      used to break cross compilation

2005-09-20 (CVS):
    * Moved VERSION_PLATFORM and id386 defines to sys.h, where they belong.
    * Sys_Quit and Sys_Error clean-up: VID_SetDefaultMode, VID_ForceLockState and
      VID_ForceUnlockedAndReturnState are history. Host_Shutdown is called before
      quit/error messages. Placed SDL_UnlockSurface() and MGL_endDirectAccess()
      to VID_Shutdown, just in case. Added the word "HexenWorld" to win32 version
      of hexenworld error window label. Took care of some accidentally repeated
      code. "Fatalized" and added extra linefeeds to the sys_error messages.
    * Fixed hwsv compilation (killed Server/sys.h).

2005-09-19 (CVS):
    * startings of model code unification. mostly cosmetic for now,
      more will follow.
    * fixed a check for isDedicated in Host_WriteConfiguration which
      should be logical
    * added missing newline
    * prevent unnecessary extra zeroes in cvars (from Maddes / QIP)
    * fixed a divide-by-float (matched the software renderer counterpart)
    * can't kill zombie patch (from Maddes / QIP)
    * prevented (in fact, partially) coop and deathmatch cvars being
      both set at the same time (from Maddes / QIP)
    * allowed compilability of the ipx driver with lcc
    * fixed an error message: "MOVETYPE_PUSH with a non bsp model"
      (from Maddes / QIP)
    * When a velocity is checked against sv_maxvelocity the Quake engine
      checks the vector's components (x, y, z) instead of it's resulting
      length. The check should be done just like the sv_maxspeed check.
      (From Maddes QIP)
    * fixed those famous spelling errors

2005-09-17 (CVS):
    * minor ifdef, syntax and defines clean-up
    * removed unnecessary stuff from launcher's Makefile

2005-09-14 (CVS):
    * Fixed win32 version for dlsym'ed gl and wgl function calls
    * Cleaned-up h2/h2mp friction code
    * Added stencil buffered shadows (from jshexen2, code by MrG)
    * Added stencil shadow console option to the READMEs
    * Used the same name for the EffectsT union of hexenworld as hexen2
    * Renamed hwmaster/net_test.c to a more sensible sys_main.c
    * Updated the TODO list
    * Moved qtypes.h to 00_unused
    * Inserted win32 installation instructions to README.win32
    * Documentation tidy-up: Moved all gpl license files into the
      docs directory; moved README.hwmaster to the docs directory;
      renamed hcc.txt of dcc to a more sensible dcc.txt

2005-08-29 (1.3.0-final):
    * released as 1.3.0-final
    * update_h2.sh: updated the pakfile patch script to use OS specific
      versions of loki_patch binary.
    * hexen2.spec: updated according to the final loki_patch package
    * Makefile.unix: fixed static linking and explained the requirements
      for it
    * updated TODO list
    * README: added details for manual installation and patching
    * README, README.demo: added requirements info for glibc
2005-08-22/23:
    * cl_tent.c, (gl_)screen.c: killed some stupid 'may be used
      uninitialized' warnings
    * net_chan.c, sv_main.c: fixed two gcc4 warnings of type "pointer
      targets in passing argument N of 'X' differ in signedness"
    * (gl)screen.c, sbar.c, sbar.h: cleaned-up some of the mess part of
      which partially formed after the fullscreen intermissions merge:
      indentation and whitespace fixes, if 0'ed SB_IntermissionOverlay
      and SB_FinaleOverlay of H2W, killed Sbar_IntermissionOverlay,
      Sbar_FinaleOverlay and SCR_DrawLoading of H2W along with associated
      vars. Will probably need more clean-up and unification in future.
    * screen.c: fixed a silly nested extern declaration
    * screen.c: added the missing notes by ID to the H2 version
    * glwin32.h: fixed a typo
    * common.h, cmdlib.h, defs.h: cleaned up endianness macros
    * added ReleaseNotes to the docs folder
    * hexen2.spec: fixed and updateo the rpm spec file

2005-08-20 (CVS, 1.3.0-rc5c):
    * fixed temporary gip files not being removed and probably caused
      "bad" savegames on win32. removed unnecessary platform defines
      for directory path separators. favored unlink() over DeleteFile()
      on win32. removed a left-over CL_RemoveGIPFiles() from sys_win.c.
    * more finishing touches before 1.3.0-final:
    * added dummy files to some empty directories to avoid build failures
    * copied over endianness stuff from engine trees to the utils
    * utils: removed unnecessary -lm from dcc
    * killed unused dosisms.h header (win32/in_win.c)
    * utils: killed unused stuff in dcc
    * utils: some other minor cleanups
    * moved more unused files to 00_unused

2005-08-19 (CVS, 1.3.0-rc5b):
    * finishing touches before 1.3.0-final:
    * killed erroneous extra comma in snd_win.c
    * replaced Makefile.packaging with Makefile.unix, updated build
      scripts and rpm spec file, added hexenworld build_all scripts,
      added build_win32 scripts.
    * use the same exe names as Raven's versions for win32
    * unix style line endings for more gamecode files
    * replaced gnu.txt with a readable (line-wrapped) version from
      gnu.org for hwmaster

2005-08-18 (CVS, 1.3.0-rc5a):
    * moved music volume update back into frame update. it has its
      merits (such as correct bgmvolume on startup) this way..
    * fixed stupid cd music volume update bug
    * sync'ed h2 and h2w versions of cd_win.c

2005-08-17 (CVS, 1.3.0-rc5):
    * Fixed R_DrawViewModel to not return until it determines the
      light_level, otherwise the player will be considered invisible
      to the monsters.
    * Standardized SDL_mixer includes
    * Makefile fixes for hexenworld server
    * Updated win32 build instructions.
    * Updated the rpm spec file according to the names of the files
      to be released

2005-08-12 (CVS, 1.3.0-rc4a):
    * updated all build scripts for freebsd gmake problem (Steve)
    * updated sdl includes of midi for freebsd (from Steven)
    * removed malloc.h from hwmaster. doesn't seem necessary and
      bsd whines with it. (from Steven)
    * loosened SDL version restrictions depending on the SDL version
      on the build system. will issue a warning if less than 1.2.6

2005-08-11 (CVS, 1.3.0-rc4):
    * 1.3.0-rc4. Everything seem to work fine and this should be
      the last -rc before 1.3.0-final
    * performed small cleanups (killing zombie vars and cvars,
      statements with no effect, etc.)
    * const MODE_FULLSCREEN_DEFAULT have different meanings in
      mgl/win32 and others. fixed.
    * made OSS sound include <sys/soundcard.h> only. I'm afraid we
      may need taking care of <soundcard.h>, <linux/soundcard.h> and
      <machine/soundcard.h> someday.
    * removed the -O2 from win32 assembler flags to avoid
      miscompilation
    * added mgl headers and link libraries and enabled win32 builds
      of the software renderer version. The hexen2 version has
      Pa3PyX's bits merged into it whereas the hexenworld one is
      more true to its original (they need to be unified in future.)
      Original win32-software versions of both hexen2 and quake
      always used to crash on my box, but now works nicely with
      mgl-4.05. Only a few small quirks are present which can be
      fixed in future versions.
    * updated the rpm spec file

2005-08-09 (CVS, 1.3.0-rc3):
    * Prioritized a game directory over its pakfiles in the search
      order which is the behavior of HoT-1.2.4 and older. This bug,
      carried over from hexenworld, disallowed override files to be
      used. The ID guys probably had their concerns while doing this,
      which Raven did change in hexen2 but missed in hexenworld.
    * Added the missing part of Steven's CL_UpdateStreams crash patch
    * Disallowed cycling to a weapon without proper mana (from Steve)
    * Enabled impulse 34, (puzzle piece inventory list) (from Steve)
    * Added default.cfg override files according to the latest changes
    * Updated the gamecode README file

2005-08-08 (CVS, 1.3.0-rc2):
    * Fixed the longstanding StreamEntities crash bug: the compiler
      should have been picking up inappropriate nested loops. Steve,
      you are the man ;)
    * Updated cdaudio init messages
    * Killed the Sys_FileTime crap. now using the standart access()
      function

2005-08-05 (CVS, 1.3.0-rc1):
    * hcc: made main's return type int.
    * hcc: made progs.dat and progdefs.h filenames honor -src option.
    * hcc: no need to write source directory name (from -src option)
      into strings
    * updated the rpm spec file for 1.3.0

2005-08-04 (CVS, 1.3.0-rc1):
    * enough changes went in, therefore let's bump the HoT version
      to 1.3.0, hexen2 engine version to 1.14, hexenworld to 0.16
    * sound: fixed hexenworld not initializing sound on freebsd
      (from Steven.)
    * menu: removed some outdated stuff (lookspring and lookstrafe
      options and +mlook and +klook key bindings) from the menu
    * buildsystem: platform defines cleanup
    * buildsystem: debug defines clean-up
    * buildsystem: compiler flags for debug builds
    * buildsystem: added X11FLAGS for X11 includes. should help
      distros that doesn't have symlinked /usr/X11R6/include/GL as
      /usr/include/GL
    * vid: added support for window manager icon using xbm format
      data. stolen from the quake2 project at icculus, code probably
      by relnev (Steven Fuller)
    * hexenworld: tiny update for failure cases of NET_SendPacket
      and NET_GetPacket
    * hexenworld: disabled Raven/RJR privilege in rcon validation
    * hexenworld: disabled idmaster logging
    * hexenworld: disabled more Raven privileged stuff in SV_Say
    * hcode: map cycling: renamed map_name to a more intuitive
      map_next. cleaned up some dprint's.
    * hcode: killed unused hcode files, moved them to a separate
      directory for reference
    * hcode: minor clean-up in hw and siege
    * code clean-up: tidy up cl_tent.c of hexenworld (from Steve)
    * code clean-up: probably some other tiny clean-ups.
    * documentation: added draftish notes on porting. updated
      all dother documentation.

2005-07-24 (CVS, 1.2.5-pre11):
    * it seems like reducing the number of lightning streams to 8
      is not a good enough workaround for hexenworld client crash:
      Updated docs/BUGS with a detailed description of the problem,
      put the variable StreamEntities[] back in  for good binaries
      compiled with gcc3
    * hopefully fixed bsd cdrom compilation this time
    * fixed midi not playing when midifile exists in the searchpath
      but not in com_userdir/<mod_dir>/.midi
    * re-fixed sdl-midi for better handling of file size
    * unified the common functions for hexen2-hexenworld (big patch,
      so please be on watch for anything broken)
    * increased hexen2 minimum zone size to 256 KB to match that of
      hexenworld's in order to handle the new changes
    * added check for mkdir return code in userdir creation in
      hexenworld master server
    * made Sys_mkdir of the launcher use $HOME instead of the
      passwd struct
    * we may actually need a real Sys_mkdir in hwsv, so added one
    * merged com_sys stuff back into main.c in launcher
    * fixed gl_warp of hexenworld to give 3 args to COM_FOpenFile
    * hexenworld server seemed to have sent the wrong message for
      the cdtrack resulting in no cd music playing. fixed.
    * I seem to have missed one place for linux-only alsa sound
      conditionals which resulted in compile failure on bsd. fixed.
    * separate icons for hexen2 and hexen2mp
    * compile win32 resource as .o, not .res.  makefile fixes for
      the new icon directory.
    * killed the unused visualc stuff
    * misc whitespace clean-ups

2005-07-20 (CVS, 1.2.5-pre10):
    * killed fastfabs, not worthy of keeping anymore
    * made vid_initialized static
    * allowed mini-status when sbar transparency is set, for now
    * added transparent sbar of hexenworld to hexen2 for software mode.
      style fixes in draw.c, draw.h, sbar.c, sbar.h.
    * added the gl_texels console cmd to hexenworld as well. added some
      H2MP and H2W define conditionals.
    * partial fix for hexenwold crosshair 2: send the texture to
      GL_LoadTexture in non-rgba mode. it still won't show up unless the
      game is started with a proper conwidth value.
    * added crosshair 2 support of hexenworld to hexen2.
    * added 32x32 alpha pixmap support from darkplaces project which
      "fixes" the crosshair 2 support. chances are that things maybe
      incomplete here, but I don't care much. (this actually is hiding
      our actual bug where 8-bit upload somehow clobbered the crosshair
      texture.)
    * added crosshair color from quake. performed some small cleanup. I
      hope I won't have to bother with this thing anymore.
    * the crosshair we have here is actually the QuakeWorld crosshair
      which Raven didn't bother changing. it is possible to make class-
      based crosshairs.  our crosshair is now 32x32, but we're drawing in
      16x16 to have a smaller pic. if, in the pixmap, the pixels are not
      drawn in doubles, the final image on the screen may have some of
      the pixels missing. sigh...

2005-07-15 (CVS, 1.2.5-pre9):
    * fixed typo in cd_unix.c for freebsd
    * added a makefile hack to prevent hwsv or hwcl build failures when
      either of them is built first and then the other is attempted to
      be built without doing a make clean
    * documented the modified/unmodified detection
    * updated README.3dfx (the -3dfxgamma argument requires HoT-1.2.5
      and newer)
    * updated BUGS (insignificant typos, etc.)

2005-07-09 (CVS, 1.2.5-pre8):
    * fixed some string length oversights in zone.c.
    * macroized the repetitive console+file printing routines
      for sys_* console commands.
    * added hexen2 version of zone.c to hexenworld.
    * changed all Hunk_Alloc() usage to Hunk_AllocName() for
      easier memory usage tracing (adapted from Pa3PyX).
    * we now allocate on the hunk (or zone) and don't malloc
      system memory unless necessary.
    * increased hexen2 minimum zone size to 128 kb.
    * put back Q_log2() to mathlib, hunk allocation changes to
      snd_win requires that.
    * tiny fixes/clean-ups in win32 sound which now honors user's
      sampling rate and bps requests.
    * similar cleanups in win32 midi.
    * copied hexen2 version of snd_win to hexenworld.
    * fixed win32-hexenworld clipboard pasting code compilation.
    * added win32 clipboard pasting to hexen2 (from hexenworld).
    * SDL version checking and refusal shall not happen for
      dedicated servers.
    * tiny clean-ups in sys_unix.c.
    * moved local unix version of strlwr to zone.c, its only user.
    * added defines for min, max and default heap and zone sizes
      in the launcher.
    * increased minimun zonesize to 128 in the launcher, as well.

2005-07-05 (CVS, 1.2.5-pre7):
    * removed traces of alsa ancient versions support
    * style/whitespace changes and removal of weird alien stuff
      in zone.{c|h}
    * Updated oss driver (added PROT_READ to mmap mode)
    * Updated sdl sound (added soundinfo to init, various
      insignificant things)
    * Updated alsa driver (various insignificant things)

2005-07-02 (CVS, 1.2.5-pre7):
    * Minor cosmetic clean-up in S_Update_() for S_SYS_SDL
    * Added device selection support (-ossdev) to OSS sound.
      Cleaned-up OSS warning/error messages.
    * Updated documentation for -cddev, -alsadev and -ossdev
      arguments
    * commands.txt and edicts.txt will be saved into com_userdir
    * Cleaned-up file saving in zone.c

2005-07-01 (CVS, 1.2.5-pre6):
    * speed key now acts as slow key when "always run" is chosen

2005-06-28 (CVS, 1.2.5-pre6):
    * Added warning messages to snd_sdl for endianness-format
      mismatches
    * Updated documentation about mouse not being initialized
      in fullscreen games when using fluxbox window manager
    * Updated the demo version's README
    * Tiny cosmetic clean-up in snd_sdl.c

2005-06-26 (CVS, 1.2.5-pre6):
    * Added hexen2's glow code to hexenworld without any changes.
      Not that bad at all considering the changes in hexenworld.
      I won't bother anymore with this myself. If anyone has any
      fixes and/or improvements for it, send it this way.  If it
      broke anything, umm, tell that as well ;)
    * Changed those pointless glow style const ints to defines.
    * Added the intermissionScreen CacheFree code to software vid.
      I have ignored this fragment for a long time due to the fact
      we removed video mode switching, but here it is for possible
      future use.

2005-06-25 (CVS, 1.2.5-pre6):
    * added the lib3dfxgamma sources.
    * added lib3dfxgamma (native 3dfx gamma) support to
      the gl versions, activated for voodoo1 and voodoo2
      when -3dfxgamma argument is used.
    * Bumped the teleport-push speed to a highest safe value
      of 225 (250 is still safe, but just in case)
      and restricted that to the Cathedral map when not in
      deathmatch.  Otherwise, Raven's original value (300)
      is used.

2005-06-23 (CVS, 1.2.5-pre5):
    * several typo/spelling fixes

2005-06-22 (CVS, 1.2.5-pre5):
    * added -O2 -Wall flags to utilities' complilation
    * many warning fixes in utilities, it should be
      gcc4-ready now

2005-06-21 (CVS, 1.2.5-pre5):
    * fixed launcher for gcc2 compilation

2005-06-20 (CVS, 1.2.5-pre5):
    * added -conwidth info to the documentation
    * launcher v0.6.1: added conwidth support, included
      1600 in the resolution list, other tiny clean-ups
    * killed a few ugly win32 warnings
    * killed a leftover Q_strncasecmp function in utils
    * added a replacement stpcpy for non-__GLIBC__ cases
    * added MSYS/MinGW makefiles and build scripts for utilities
    * added _GNU_SOURCE define to dhcc compilation

2005-06-19 (CVS, 1.2.5-pre4):
    * added the -conwidth (and -conheight) commandline switches
      enabling a bigger hud display and readable fonts at high
      resolutions. the fonts will be somewhat distorted, though.
      valid conwidth values are values equal or less than the
      window width, 640 is the sanest.
    * synced h2 and h2w versions of GL_Init_Fuctions()
    * win32 stuff: added wheelmouse support and conwidth support
      to hexen2. changed hexenworld's default behavior of default
      640 conwidth to main width unless specified otherwise by the
      user. disabled startup splash screens for now. compile the
      icons in. sycned hexen2 and hexnworld's GL_Init_Functions().
      disabled InitCommonControls() in gl_vidnt. moved
      RegisterWindowMessage for uMSG_MOUSEWHEEL to in_win where
      it belongs. bumped MAXIMUM_WIN_MEMORY to 32 MB. killed
      useless Sys_ConsoleInput in hwcl. several other sycning and
      clean-up.

2005-06-17 (CVS, 1.2.5-pre4):
    * many fixes/clean-ups to the Makefiles
    * several gamma clean-ups, spelling fixes
    * inline fixes in mathlib.h
    * moved gl_max_size and is_3dfx to gl_vidsdl, others
      will use it as externs
    * fifth (succubus) model in hexen2 is for the mission
      pack only and we've been out of bounds in four places
      for ages, fixed it
    * killed the glfunc struct for opengl funtion pointers
    * added a cleaner com_userdir solution for hwsv in
      SV_Gamedir_f()
    * more endianness detection fixes
    * properly ifdef'd unix-only sound things
    * strlwr extern in zone.c is for unix only
    * made Sys_mkdir int for win32 as well
    * restored the game's old userdir behavior on win32
    * fixed many win32 compile failures and warnings
    * restored opengl version's compilability on win32
      using MinGW under MSYS

2005-06-11/12 (CVS, 1.2.5-pre3):
     * cleaned-up includes and hopefully fixed endianness detection
     * enabled alsa only on linux platforms
     * updated all makefiles and build scripts. now I can happily
       do make CC=xxx ..., make/gmake issue should also be fixed.
     * updated cd_linux
     * added cd_unix as a wrapper and a cd_null
     * updated known bugs
     * added a version of cd_bsd: hopefully correct, cannot test its
       functionality right now. it is not used directly but intended
       to be included automagically into cd_unix.c at compile time.
       not enabled right now but be trivially done so by editing the
       makefiles
     * changed all strcasecmp to Q_strcasecmp in unix cdrom code for
       consistency
     * open the cdrom device with O_NONBLOCK in order to prevent
       CDAudio_Init failing when there is no disc in drive
     * misc cdaudio spelling fixes
     * added SDL cdaudio code (from SDLquake with fixes & adaptation)
     * enabled the use of cd_unix.c which includes the correct cdraudio
       code: If USE_SDLCD is set to yes in the makefiles cd_sdl.c will
       be used; otherwise cd_linux.c for linux, cd_bsd.c for freebsd or
       cd_sdl.c for any others.

2005-06-10 (CVS, 1.2.5-pre2):
     * Cleaned up and redesigned the launcher, Version 0.6.0:
     - The "More" mode uses tabs on the right for more bloat
     - Removed -sndmono option
     - Added support for --gllibrary, -3dfxgamma, -fsaa, -vsync,
       -paltex, -nomtex, -nomouse, -heapsize, -zone, -condebug
     - Maybe I add a space for custom arguments one day

2005-06-09 (CVS, 1.2.5-pre2):
     * [launcher] fixed a truely silly typo which is responsible for
       the longstanding "Gtk-CRITICAL **: file gtkwidget.c: line 6502
       (gtk_widget_unref): assertion `GTK_IS_WIDGET (widget)' failed"
       error message upon exitting.

2005-06-08 (CVS, 1.2.5-pre2):
     * Help messages drawn fullscreen for software version, as well
     * Added texture cheksumming (from Pa3PyX) for verification in
       GL_LoadTexture. Die white textures, die die die ;)
     * Ported fullscreen intermissions code to hexenworld.
     * Some more hexen2/hexenworld code syncing.

2005-06-07 (CVS, 1.2.5-pre2):
     * Moved flush_textures decision to svmain.c:SV_SpawnServer()
       again, this time fixing it by not clearing the server struct
       in Host_ShutdownServer(). In fact this logic is still slightly
       flawed, because flush_textures isn't set on map changes in
       client-to-remote server map-change situations.
     * Ported gl texture purge and model recycling code to hexenworld.
       Textures are purged regardless of mapname change (we can't
       detect it early enough), but servers normally wouldn't repeat a
       map anyway.
     * Removed my incorrect paranoia alert in cache mismatch code:
       No paranoia, because gl_purge_maptex may well be false, and
       flush_textures doesn't work for map changes in client-to remote
       server connections.
     * Fixed crosshair texture ("crosshair 2") not shown in hexenworld
       (was a typo while porting GL_LoadTexture changes)
     * Removed a lot of unnecessary/obsoleted files
     * Updated documentation to the state of 1.2.5-pre2 / 2005-06-07

2005-06-06 (CVS, 1.2.5-pre2):
     * fixed alsa minimum required version detection
     * put some notes on decision behavior for -sndspeed argument
     * put my usual requested/obtained sndrate mismatch warning
       in snd_sdl, as well
     * ChaseCam clipping and pitch fixes from quakeforge and
       quakesrc.org (FrikaC). Still not perfect, but much better
       than what we previously had.
     * mlook and lookspring fixes by J.Krige
      ( http://www.quakesrc.org/tutorials/old/1 )
     * considered as 1.2.5-pre2.

2005-06-05 (CVS, 1.2.5-pre1):
     * patches I've been forgetting for quite some time:
     * use GL_LoadTexture for player, particle and sky textures,
     * prevent Z fighting in shadows,
     * increase MAX_MOD_KNOWN for sofwware version as well,
     * enable the irritating water-warp only by a cvar and add
       water-ripple code of Jacques Krige.

2005-06-03 (CVS, 1.2.5-pre1):
     * Latest mouse fixes and clean-ups
     * Updated gamma stuff. Enabled gl-gamma trick to work if all
       else fail (such as in cases of Voodoo1/2). IMO, the gl-gamma
       trick looks very ugly and causes a 5 fps slowdown in 1x
       brightening and 10-12 fps in 2x brightening on my Voodoo2
       box. We'll see..

2005-06-01 (CVS, 1.2.5-pre1):
     * SDL version >= 1.2.6 is now required. Updated the READMEs
       and added a version check at startup.
     * removed win32-only net function prototypes from linquake.h
       and updated linux_inc.h. also moved win32-only ipx netcode
       (this should fix the silly compile errors on bsd.)
     * updated a comment in Client/cl_main.c

2005-05-31 (CVS, 1.2.5-pre1):
     * ported player menu-texture handling, GL_LoadTexture
       and gl-filter changes from hexen2 to hexenworld.

2005-05-30 (CVS, 1.2.5-pre1):
     * updated commandline help display
     * removed obsoleted mkdir from hexenworld's Host_Init
     * added version and help strings to hwmaster
     * lowered the upper heapsize to 64 Mb for hwsv
     * version and help strings for hwsv (not much in help, but...)
     * moved hexenworld HOT_VERSION defines to bothdefs.h
     * consider this as 1.2.5-pre1

2005-05-29 (CVS):
     * Merged skyalpha of hexen2 to hexenworld
     * Added 2-tmu multitexture support (extracted from jshexen2):
       Doesn't work well with fxMesa (Voodoo2): "Unexpected dual
       texture mode encountered" all the time: Voodoo driver doesn't
       support many mtex modes (same goes for 3dfx DRI drivers). The
       particular problem we have is GL_MODULATE/GL_BLEND mode not
       being supported. GL_MODULATE/GL_DECAL is also missing which
       the patch uses for sky
     * Ported texture scale/upload and 8-bit extension functions of
       hexenworld to hexen2. This cures some corrupted textures while
       using paletted textures in hexen2
     * Killed gl_texsort (thus, R_DrawSequentailPoly & co) which was
       fairly broken
     * Reverted AoT changes to hexenworld's gl_rsurf
     * Synced some function and define names between h2 and h2w
     * A lot of whitespace clean-ups

2005-05-25 (CVS):
     * enabled mouse in whole of the options menu group
     * added basic multisampling support (GL_ARB_multisample),
       activated with -fsaa N. That D_ShowLoadingSize doesn't
       display anything with this on is the only issue
     * moved Mesa environment variable handling to gl_vidsdl where
       they belong
     * added a cmdline switch to enable vsync for nvidia users
     * made gl_vidsdl report stencil size as well
     * updated command-line help display
     * updated README for cmdline switches and tweaks
     * fixed small typos in README.3dfx

2005-05-23 (CVS):
     * search the mesh cache directly under com_userdir/glhexen,
       not in search_path. fixes the crazy polygons in mods bug.
     * added 3dfx documentation, updated BUGS.

2005-05-22 (CVS):
     * applied sbar fixes to hexenworld
     * changed default viewsize to 110
     * temporary fix for multiplayer episode selection.
       next time we should get rid of these H2MP defines
       and decide in runtime (com_portals from H2W?)
     * killed cvar sys_quake2 (I dont think anyone uses it)
     * conproc.* is for win32 only, moved them

2005-05-21 (CVS):
     * disabled the rotating skull annoyance in GL mode (used to cause
       problems with voodoo1/mesa6 when using gamma tricks)
     * Big mouse fix and clean-up:
     - revived -nomouse that "disables mouse no matter what"
     - renamed _windowed_mouse to _enable_mouse which is our intention,
       that is, dynamically disabling/enabling mouse while in game
     - old code had many oversights/leftovers that prevented mouse being
       really disabled in fullscreen mode. fixed and cleaned-up here
     - even in windowed mode, when mouse was disabled, mouse buttons and
       the wheel got processed. fixed it here.
     - mouse cursor is never shown while the game is alive, regardless
       of mouse being enabled/disabled (I never liked an ugly pointer
       around while playing) Its only intention would be to be able to
       use the desktop, and for that see, the grab notes below
     - if mouse is disabled, it is un-grabbed in windowed mode. Note: One
       can always use the keyboard shortcut CTRL-G for grabbing-ungrabbing
       the mouse regardless of mouse being enabled/disabled.
     - ToggleFullScreenSA() used to update vid_mode but always forgot
       modestate. It now updates modestate as well.
     - Now that IN_ActivateMouse() and IN_DeactivateMouse() are fixed,
       IN_ActivateMouseSA() and IN_DeactivateMouseSA() are redundant and
       are removed. BTW, I added a new qboolean mousestate_sa (hi Steve)
       which keeps track of whether we intentionally disabled the mouse.
     - mouse disabling in fullscreen mode (in the absence of -nomouse
       arg) is not allowed in this patch, but this is done by a if 1/if 0
       conditional compilation. Next patch will change all those if 1 to
       if 0, and voila!, we can fully disable/enable mouse in fullscreen.
     - moved modestate enums/defines to vid.h so that they can be used
       by other code properly.
     * enabled mouse when in console
     * re-enabled complete disabling/enabling of mousa in fullscreen mode
       (only replaced a bunch of if 1's to if 0's)
     * MINIMUM_MEMORY_LEVELPAK was never used, switched
       to MINIMUM_MEMORY
     * don't Sys_Error on bad -port cmdline argument
     * removed net_serial which has been dead for ages
     * synced wm caption code
     * more syncing of h2/hw vid_sdl and gl_vidsdl
     * fixed vid.h for VID_SetMode for win32

2005-05-20 (CVS):
     * Makefiles clean-up
     * synced h2 and hw versions of sound.h, moved
       two defines to protocol.h where they belong
     * synced h2 and hw versions of cd_linux.c (use the new H2W define)
     * synced h2 and hw versions of snd_dma.c (use the new H2W define)
     * synced h2 and hw versions of crc.c and crc.h
     * synced h2 and hw versions of midi stuff
     * save cache.txt and stats.txt into com_userdir
     * removed all unused IDGODS code
     * removed all unused (never used) non-RJNET and non-QUAKE2RJ code
     * removed all unused (never used) RJNETa and RJNET2 code
     * killed client->privileged (was only available to IDGODS)
     * initial syncing of common.c between h2 and hw: a lot of
       whitespace clean-up, removal of activision secure stuff,
       removal of -path, -proghack, -savedir and -cachedir support,
       better registered version detection and crc checks, etc.
     * removed some windows left-overs from sys_unix
     * separated winquake.h into winquake.h and linquake.h
       changed all occurances of winquake.h to quakeinc.h,
       which includes the correct header
     * keep ID style in declerations (less diff between h2/h2w...)
     * initial slight gl syncing: stripped the platform spesific
       stuff out from glquake.h into glxunix.h and glwin32.h
     * killed unused c_sky_polys in h2

2005-05-18 (CVS):
     * (Re-)added the parms.userdir to all sys_win.c. The platform
       conditionals around some of the com_userdir code of late are now
       unnecessary.
     * separated sys_unix.c and sys_win.c of hwsv to avoid many confusing
       conditionals
     * hopefully restored utils' compilability on win32: platform
       conditionals for includes; Q_strXcasecmp is now only for non
       __GNUC__, otherwise strXcasecmp is used.
     * updated mathlib.* of the utilities (removed underscored versions
       of the functions. dhcc doesnt even use the mathlib, updated its
       makefile...)
     * cleanup of "stricmp, strcmpi, strnicmp, Q_strcasecmp, Q_strncasecmp"
       mess: Q_strXcasecmp will now be used throughout the code which are
       implementation dependant defines for __GNUC__ (strXcasecmp) and
       _WIN32 (strXicmp)

2005-05-17 (CVS):
    * removed underscored versions of string comparison functions
    * removed unused underscored versions of math funcs
    * Q_strXXXXX is now only for !PLATFORM_UNIX
    * macroized some math functions (from Pa3PyX)
    * synced h2 and hw versions of mathlib.* (h2 now has some math
      functions inlined)
    * updated linux_inc.h for the changes above
    * removed unused backingbuf from vid_sdl.c (was a windows leftover)
    * removed some dead platform conditionals
    * reorganized x86 assembly files placement (shuffle practice ;)
    * initial cosmetic cleanups in menu.c and in_sdl.c
    * more obsoleted and/or win32 files clean-up

2005-05-07 (CVS):
    * Backed-out my silly mistake of removing light_level code
      in R_DrawViewModel
    * SV_StartSound should set SND_OVERFLOW, not SND_ATTENUATION.
      sound_num should be incremented/decremented by 256, not 255.
      (ran into this in quakesrc.org tutorials, by Kor Skarn, iirc)
    * Display platform in console background
    * [Hexenworld] Don't refuse to connect upon client/server VERSION
      mismatches. Such things should rely on PROTOCOL_VERSION not simply
      VERSION
2005-05-05 (CVS):
    * [hexenworld] save downloaded files to com_userdir
    * [h2/hw] profile save cleanup (and another MAX_OSPATH fix)
    * [opengl] report both requested and set video modes (matters for bpp)
2005-05-04 (CVS):
    * [launcher] cleanup the i++ mess and bump version slightly (v0.5.1)

2005-04-30 (CVS):
    * Always set the MESA_GLX_FX FX_DONT_FAKE_MULTITEX environment
      variables
    * "Fixed" (in fact, worked-around) Succubus' lightning weapon
      crashing the client if gcc4 compiled client is used, and/or
      the unused StreamEntities[MAX_STREAM_ENTITIES] is removed.
      Weird case..
    * Fixed hexenworld master server compile failure with gcc4
    * Socket length args of recvfrom and getsocklen should be of
      type socklen_t, not int (thanks go to gcc4)
    * Fixed two instances of the warning "dereferencing type-punned
      pointer will break strict-aliasing rules". Playing loose with
      pointers may not be safe
    * Fixed a statement with no effect in cl_tent.c of hwclient
    * Fixed an obscure demo playback bug which caused a fake freeze-
      like appearance when no next demos were found
    * Re-enabled fadescreen for fxMesa driver
    * Fixed a lot of gcc4 warnings about signedness mismatches
    * Silenced many instances of shadowed declarations
    * Removed a bunch of code from R_DrawViewModel(). R_DrawAliasModel()
      already does those things.
    * Removed int texture_mode which seemed to serve nothing
    * Changed texnum member of gltexture_t to be of unsigned int
      type rather than int (fixes a gcc4 warning)
    * Removed unnecessary global decl. of starttime in sys_unix.c
    * Switched to GL_EXT_shared_texture_palette and enabled paletted
      textures in hexen2. For paletted textures to work, the -paltex
      cmdline must be specified for both hexen2 and hexenworld.
    * Applied a big video cleanup patch:
    - Removed a lot of windoze left-overs, unused variables/cvars,
      functions using those vars/cvars serving no purpose (esp. those
      window_rect and window_center stuff, and more). There still are
      things in vid_sdl.c that need to be fully understood, they are
      there, for now.
    - The -window and -w cmdline args are now now removed: They did
      nothing, unless someone did some silly thing like using both -w
      and -f on the same cmdline.
    - The two mode-setting functions (windowed and f/s) are merged
    - The -height arg now is functional only if used in combination
      with -height. Since we only do normal modes, the width switch
      is replaced with the calculation  height = 3*width/4. Issue: We
      need some sanity check in case of both -width and -height args
      are specified
    - -bpp wasn't written into modenum[x].bpp, I did it here. As a
      side note, bpp doesn't affect anything, anyway.
    - The vidmode reporting code now displays the actual bpp value
      being set by SDL.
    - The code used to call VID_SetPalette() very multiple times in
      gl_vidsdl.c, they are now unified in VID_Init: After VID_SetMode,
      VID_SetPalette is called first, and then 8-bit palette if -paltex
      is specified. Note: Didn't touch vid_sdl.c in this manner, but DDOI
      (one of the guys during Dan's porting, perpahs) has a comment on
      a VID_SetPalette call being "Useless?"...
    - Updated gamma stuff: We don't use gamma ramps (in fact we can, we
      have SDL_SetGammaRamp), therefore eliminated V_CheckGamma & friends
      from V_UpdatePalette for PLATFORM_UNIX. Also killed unused function
      WarpPalette.

2005-04-15 (CVS):
    * Added working console input (from hexenworld server).
      Disabled console input in non-dedicated mode.
    * No dedicated server possible in hexenworld client.
    * Save memory.txt into com_userdir for sys_memory cmd.
    * Cure warning: cl_main.c: warning: `return' with no value,
      in function returning non-void
    * Shut up the compiler: gl_rsurf.c, gl_draw.c: warning: control
      reaches end of non-void function

2005-04-14 (CVS):
    * no need to announce MIDI_Cleanup if we'll never do it.
    * -? arg is back (Steve likes it ;)

2005-04-13 (CVS):
    * Removed useless -minmemory cmdline argument
    * Removed useless parms->memsize < minimum_memory check
      in Host_Init()
    * Added lower/upper boundaries (8mb/96mb) for -heapsize arg.
    * Added lower (48kb for hexen2, 256kb for hexenworld)/upper
      (1mb) boundaries for -zone argument (DYNAMIC_SIZE defs and
      zonesize requirements are different for hexen2 and hw.)
    * We won't die if no size is specified after -zone, but will
      ignore the arg.
    * Added null string terminations to hexen2 zone.c, so as to
      prevent garbage on sys_memory console command (found this
      in Pa3PyX)
    * tiny clean-up in COM_InitFilesystem (hexen2)
    * GAMENAME doesn't depend on QUAKE2 definition (hexen2)
    * made GL_Bind a macro (from Pa3PyX)

2005-04-10 (CVS):
    * Various MAX_OSPATH fixes
    * Added version string to hwmaster initialization display
    * Added user directory support to hwmaster. filters.ini will
      now be processed in ~/.hwmaster as ~/.hwmaster/filters.ini
    * Added FreeBSD to VERSION_PLATFORM
    * Bumped the version to 1.2.5 for a new future release,
      updated the specfile

2005-04-09 (CVS):
    * Removed scankey[] and MapKey(), unused for
      SDL/PLATFORM_UNIX
    * More unused/cosmetic clean-ups in vidsdl

2005-04-08 (CVS):
    * added Pa3PyX' fire delay bits for paladin's setstaff
      (gamedata-1.14)
    * removed useless is_PowerVR and isPermedia and unused
      vertex array extension checking from hexenworld
    * 3dfx stuff initial clean-up
    * whitespace cosmetics in gl_vidsdl.c
    * Merged a new R_PolyBlend code (from jshexen2).  Also
      added the GL_DoGamma function (to be called from
      R_PolyBlend) which brightens the display. Commented out
      for now. This little gem can be used to adjust gamma for
      Voodoo1/2/Rush.
    * Enable 8-bit gl extensions only if explicitly required
      by the user (-paltex cmdline arg.) Otherwise, fxMesa is
      rendering is borked, at least with Mesa-3.4.2 on RH-7.3
      in my experience.
    * Added -old3dfx cmdline check. For now, I use it to set
      the MESA_GLX_FX environment variable to "f" and to disable
      fxMesa fake multitexturing. Further future uses possible.

2005-04-06 (CVS):
    * hexenworld/opengl: fixed non-dlsymmed use of some gl
      functions. also fixed a truely silly copy+paste error

2005-04-05 (CVS):
    * dropped the -march=i386 -mcpu=i686 flag: causes problems
      at least on old pentiums with old distros.  going with
      plain -march=i586
    * we dlsym the gl functions and still use -lGL -lGLU ?!!
      bad.. bad....
    * cleaned-up endianness which is now decided at compile time
    * fadescreen ripple effect may stop help/quit screens from
      appearing on 3dfx with Mesa Glide. (from Steve)
    * 3dfx voodoo detection when using Mesa Glide (from Steve)
    * quakeized and added a comment to ToggleFullScreenSA
    * removed my previous restrictions about adding userpaths
      to the searchpath (was added in 1.2.3)
    * Save recorded demos, progs profiles, console debug logs
      and all server logs, etc to com_userdir, not com_gamedir.
      Otherwise these operations shall fail on a system-wide
      installation unless the user is super user.
    * dwarf class was never enabled in hexenworld/siege menu
      system, because com_gamedir is not only a naked dirname
      but a full pathname
    * removed a few quake1 leftovers from hexenworld
    * imported the hexenworld master server 1.2 sources (by
      Marc Allaire, aka. Kor Skarn) into the cvs
    * fixed gcc2 compilation of hwmaster
    * merged a stdin code for hwmaster that doesn't eat 100%
      of the cpu (adapted from quakeforge)
    * added compile instructions for the gamecode
    * updated the specfile for our new loki_patch package

2005-03-24 (CVS):
    * simplified window title creation in launcher
    * fixed a harmless typo in launcher, for correctness' sake

2005-03-19 (CVS):
    * added back the md5sum data for the data1/pak?.pak files
      to the README
    * imported the utility sources to the CVS. how I forgot
      doing that for months is a mystery
    * merged an H2MP 1.12-1.12a axtail patch to the gamecode
      which has been missing in the CVS somehow

2005-03-14 (CVS):
    * updated the build_all scripts
    * small sbar resizing fix in software mode (from Steven)
    * added back console video mode reporting. also removed the
      non-functional findbpp

2005-03-08 (CVS):
    * fixed an oversight in reinit_music which resulted in a
      needless restart of midi music upon pressing Esc twice

1.2.4: Changes since HoT-1.2.3:
2005-03-06:
    * Release 1.2.4-final
    * Added bsd includes to snd_oss.c
    * Added net sanity checks (from Steven)
    * Moved reinit_music to menu.c where it belongs
    * Fixed reinit_music so that it works for the F4 key as well
    * Don't mess with music volume on every frame update, it's
      just silly

2005-03-05 (CVS, 1.2.4-rc5):
    * OSS (and ALSA): Try to use what frequency is actually set:
      I first naively thought that requested-provided frequency
      mismatches wouldn't happen, but I got one weird oss report
      which includes this case. Let's see what this does now...
    * OSS: if failures are hit after mmaping shm->buffer, munmap
      it before quitting

2005-03-03 (CVS, 1.2.4-rc4):
    * fixed and activated munmap of shm->buffer for snd_oss.c
    * commented-out shm->gamealive thing which serves nothing
    * sys_unix.c cleanup: remove dead and/or win32 code
    * removed unreached return from main (it should have been 0,
      btw. from Steve)
    * increased MAX_OSPATH to 256 (from Steve)
    * Sys_Mkdir is now int. Its return code should be checked in
      other places, too (from Steve).
    * Sys_GetUserdir now uses $HOME instead of the passwd struct
      (from Steve)
    * removed h2mp dependency from length check in Sys_GetUserdir,
      seems to serve no purpose (from Steve)

2005-02-23 (CVS, 1.2.4-rc3):
    * final rc for 1.2.4
    * killed hexenworld warning "cl_tent.c:2972: warning: statement
      with no effect". at last we decided that this guy intended |=,
      not &=
    * merged a bunch of hcode (gameplay) fixes/adjustments from Pa3PyX'
      sources which brings the gamecode version to 1.12g.

2005-02-20 (CVS, 1.2.4-rc2):
    * H2MP: Old mission option is now always enabled, removed my
      cmdline thing, killed the cvar m_oldmission;  completely
      disabled the demoness for the old mission, killed my cvar
      m_demoness.
    * Sound: Now processing all command line options in snd_dma.c,
      S_Startup only, targets will do to its bidding first; don't
      die immediately, try setting alternative hw parameters;
      (fwiw, snd_oss.c now applies all hardware settings before
      mmaping the buffer); added a check for requested and set rate
      mismatches which fails S_Startup if found (found it in alsa
      examples, is it necessary at all? commented out for now.)
    * OpenGL: Added comments on gl_picmip scale-down and ugly help
      screens (Steven)
    * H2/HW: Added the new sound options to the help messages
    * Documents: Updated the README files
    * Launcher: New version 0.5.0:  added all sound cmdline options
      (sampling rate, format, stereo); removed "disable joystick"
      option (not functional in the engine for ages); removed the
      "old mission" thing (already made always-enabled in the engine);
      changed Mission Pack checkbox into a radio button grouped with
      the others; added Hexen2 bot mods as extra game types similar
      to hexenworld game types; redesigned the interface: default is
      basic mode which displays the basic options necessary only, a
      new "More" button expands the interface to show more things;
      replaced the resolution slider with a combo; gtk-2 is default
      now, to build for gtk-1.2 type make GTK1=yes.

2005-02-14 (CVS, 1.2.4-rc1):
    * added ability to disable ALSA support at compile time
    * fix mouse not being activated after connecting to a server in
      windowed mode for hexenworld. from Steve.
    * oss sound improvements (from the quakeforge project):
      - retry 3 times opening /dev/dsp
      - open O_NONBLOCK
      - check pagesize when mmaping
      - reset /dev/dsp when closing it (from the twilight project)
    * alsa sound improvements:
      - more error checking and detailed error reporting
      - replicate the order in quakeforge as much as possible

2005-02-12 (CVS):
    * more general clean-up:
      - delete dead win32 code from linux files
      - Kill sound/music messing in vid code: S_Init() and CDAudio_Init()
        are called AFTER VID_Init(), so this should be correct.
        See hexen2/host.c for reasoning on Win32.
      - we can never reach CheckTextureExtensions(), we'll give up
        in GL_Init_Functions() if we don't like the gl_library...
      - also comment out CheckArrayExtensions(), its call is if0'ed out
    * added 48000 to the alsa rate switch
    * added paranoid sound driver checks
    * added missing scrolltitle in the software version of VID_MenuDraw()

2005-02-10 (CVS):
    * removed unused functions SV_SaveEffects, SV_LoadEffects,
      SV_RemoveGIPFiles and SV_CopyFiles from hwsv.
    * fixed a typo in hwcl software draw code
    * fixed a format warning in hwsv

2005-02-09 (CVS):
    * killed a bunch of compiler warnings
    * killed all unused HW menu stuff

2005-02-08 (CVS):
    * video modes clean-up:
      - removed cvar _vid_default_mode_win
      - removed all mode descriptions
      - removed all nummodes and VID_NumModes stuff
      - removed all VID_GetXXX and VID_DescXXX stuff
      - beautified the Video Modes menu screen a little
      - removed firstupdate things (VID_Update() in vid_sdl.c)
    * tiny whitespace cleanup in in_sdl.c
    * draw alpha console background in Hexen2 (Draw_AlphaPic() from HW)
    * if0-out fxPalTexImage2D (we don't use it)
    * display the "meshing XXX" spam for developers only

2005-02-06 (CVS):
    * first sketchy update to the README files regarding
      the recent sound changes
    * move cd_win.c and resource.h to ./win_stuff/
    * tiny makefiles cleanup
    * tiny log entries cleanup in snd_sdl.c, midi_sdl.c

2005-02-05 (CVS):
    * fixed silly copy+paste error in snd_alsa.c
    * fixed demo builds of the launcher
    * fastsqrt.cpp isn't used for ages, moved it to ./obsolete/
    * separated win32 and linux versions of midi files, too much
      mess otherwise
    * midi file paths cleanup: they should have been leftovers
      from times when gamedir and userdir were the same
    * killed Com_WriteFileFullPath(), not used anymore
    * replaced some Con_Printf() with Sys_Printf() in midi_sdl.c
    * added midi volume control (partially from Pa3PyX)
    * updated the midi stuff (volume ctrl, etc) for win32, too
    * fixed possible path length overflows in midi_sdl.c
    * killed Com_LoadHunkFile2() in hexen2 [from HexenWorld]
    * don't try extracting anything if no midi file is given
    * ported all midi changes from hexen2 to hexenworld
    * applied the HexenWorld specific changes to midi_sdl.c and
      enabled midi in the HW makefiles. who knows why it didn't
      work in aot before...

2005-02-04 (CVS):
    * made sdl_audio actually work (finally)
    * some snd_dma.c fixes from the tenebrae project
    * killed fakedma (simsound). one less thing to worry about
    * fixed cd music stops playing on volume change (reported
      by Julien Langer)
    * added actual cdrom volume control via CDROMVOLCTRL.
      cdrom isn't paused when the user volume is 0, anymore
      (should have been a trick to silence the cdrom before
      this control was present). BSD ioctls may be different,
      add conditionals for it one day...
    * added ALSA sound driver (from the quakeforge project)
    * we now build all all the sound drivers in and choose from
      the command line. oss is default
    * removed environment variable support from snd_oss.c.
    * midi fixes for correctness' sake. it still fails with snd_sdl
    * merged small bits from the hw version of midi.c into h2
    * small whitespace cleanups in snd_oss.c, snd_mem.c, snd_dma.c,
      cd_linux.c. Heavy whitespace changes in midi.c, midi.h.
    * removed the noexit (keep me open) thing from launcher
    * removed forking from the launcher which now serves nothing
    * added sound driver selection to the launcher

2005-02-01 (CVS):
    * fixed demos playing without models with -nosound arg
    * initial style-only sound code syncing between h2 and hw
    * sbar fixes from Pa3pyX' sources
    * added missing things to the makefiles
    * launcher:
      - fixed fork/execv again (thanks Steve)
      - fixed args to execv (thanks again Steve)
      - added an option to not close the gui after launching
    * game hcode:
      - added Raven's Siege hcode
      - added+fixed map cycling code to hexenworld and siege
      - added Kor S karn's further fixes to the siege code

2005-01-24 (CVS):
    * consolidate GL_LoadTexture functions
    * fix flush_textures decision which used to be always true
    * add sky alpha
    * gl filter changes

2005-01-23 (CVS):
    * Hexen2/HW: support for mouse buttons 4 and 5 (patch from
      Julien Langer) Let's see if this behaves for everybody.
    * Launcher:  search for known hexenworld game-types and
      provide a list menu. v0.4.8.

1.2.3: Changes since HoT-1.2.2:
2005-01-20
    * Release 1.2.3-final

2005-01-18/19 (CVS, 1.2.3-rc8):
    * Hexen2/HexenWorld:
    - Fixed userdirs to work correctly against the -game arg.
    - Added "qboolean adduser" arg to COM_AddGameDir() (useful esp.
      in HW):  com_userdir evolves gradually. Every search path
      added has a consequence of additon of (multiple) unnecessary
      userpaths. Avoid it where we can. (original aot also added the
      very same userdir multiple times)
    - Changed all instances of "id1" to "data1"
    * Game Launcher (major changes):
    - Fixed (hopefully) fork() / execv()
    - Removed clumsy renderer selection, toggling ogl is enough.
    - Removed res-buttons, made a slider, more compact interface.
    - Made lower/upper bounds of the res-scale renderer-dependant.
    - Disallowed launching when proper binary is absent. Added a
      statusbar which notifies the user for this.
    - Removed already commented-out demoness-in-old-mission.
    - Put the widgets to be played with remotely are put in to
      structs properly for easier handling. The binary output is
      even smaller now.
    - For Gtk2.0 builds, replaced gtk_widget_set_usize() with
      gtk_widget_set_size_request()
    - Much code clean-up (apparently)
    - Removed gtk_widget_set_uposition(). We seem to do fine with
      gtk_fixed_put().
    - Hacked the version number into the window title.  [v0.4.6]
    - Combined a bunch of on_ThisEvent() type callback functions
      which had been doing the same  x = !x  thing
    - Fixed / cleaned-up config_file.c.
    - Version 0.4.7.

2005-01-13 (CVS, 1.2.3-rc7):

    * Fix off-by-one error in demo ending message line calculation.
    * Fixed mouse behavior which was always broken in hexen2-linux.
      Middle-button is MOUSE2, right-button is MOUSE3, not vice versa
      (see SDL_mouse.h). The wheelmouse patch fixed this a little, but
      introduced a mouse2/mouse3 fight in in_sdl.c. It is fixed here.
    * Fixed the debug message about undefined mouse buttons.
    * Did some syncing between H2 and HW versions of input files.
    * Misc cleanups (nitpicking/polishing).

2005-01-08 (CVS, 1.2.3-rc6):

    * don't die on cache mismatch, delete and and reload the new
      texture.
    * slight gl clean-ups.

2005-01-07 (CVS, 1.2.3-rc5):

    * _windowed_mouse default is 1 in gl mode, too.
    * bind Alt+Enter combination to Steven's stuff for fullscreen-
      windowed toggling

2005-01-03 (CVS, 1.2.3-rc4):

    * gl_ztrick disabled by default for hexenworld, too
    * Also compiled against glibc-2.2 with gcc-2.96 (on rh-7.3) and
      included properly in the installer.
    * Fixed a compilation error in case of gcc-2.96

2005-01-02 (CVS, 1.2.3-rc3):

    * Retired AoT, aot and .aot: Change userdir (AOT_USERDIR) to .hexen2
      (for the demo, it's .hexen2demo)
    * Added clarifications about network-compatibility in the docs.
    * Code clean-up in Hexen2 and Launcher. Big clean-up in Hexenworld.

2004-12-29 (CVS, 1.2.3-rc2):

    * Launcher: Some usability tweaks. Removed the mouse option, added
      the disable networking option.
    * Hexen2: Fullscreen/Windowed mode is now switchable. Seems to work
      good. (from Steven).
    * Hexen2: Mouse can now be disabled for fullscreen modes (from Steven).
    * HexenWorld Client: Merge some Hexen2 changes:
      o Fix the fire attacks drawing lines across the screen
      o Don't print gl_extensions which spams the console
      o Partially merge Steven's mouse tweaks from 2004-12-29.

2004-12-28 (CVS):

    * Fixed gameplay issue: Holy item in the Cathedral balcony not
      reachable (automatic install using the installer).
    * Fixed (mostly) gameplay issue: Eidolon loses hostility under
      certain conditions (automatic install using the installer).
    * Fixed gameplay issue: Eidolon fails landing (automatic install
      using the installer).
    * Prepared an installer (using loki_setup tools from CVS / 
      2004-12-26).
    * The Launcher works fine with GTK2 now.
    * Using redhat rpm style arch flags ( -march=i386 -mcpu=i686 ).
    * Fixed textures going AWOL in GL mode upon loading savegames many
      times. This used to result in white info-plaques, for instance
      (adapted from pa3pyx).
    * The "GL GLOWS" menu entry is fixed. It now controls
      gl_other_glows, too.
    * Fixed the gl_other_glows option not being written into config.cfg
    * Previous Weapon entry added to the Customize Controls menu.
    * Removed second arg from the function EmitSkyPolys.
    * Use glGetIntegerv to detect maximum supported texture size, not
      vendor string.
    * gl_max_size is not a cvar anymore. Also killed cvar gl_nobind.
    * Merge newer snd_dma code from HexenWorld to Hexen2.
    * Intermission screens now drawn fullscreen (from pa3pyx).
      This includes the help menu screen where the fonts seemed
      unreadably small.
    * Wheelmouse support is added.
    * Removed console spamming code (gl_extensions, unbinding files, etc.)


1.2.2: Changes since HoT 1.2.1:

    * Launcher is fully functional and works fine with fullscreen opengl
      modes.
    * Fixed fire attacks of Demoness and Praevus drawing lines across
      the screen.
    * The annoying ".dynamic" extensions are removed from the binary names.
    * HexenWorld: dlsym'ed all calls to GL functions with
      SDL_GL_GetProcAddress.
    * Made the music automatically restart when changed in the options
      menu.
    * Heapsize is now 32768 default
    * The final splash screens now centre the messages properly.
    * Added an experimental SDL sound driver. Very buggy for now.
      (We acept patches ;)
    * Mouse grab in window modes, released with menus, pause and console.
      Mouse can be bound in the Options menu in window mode. "-nomouse"
      option works in window mode.


1.2.1: Changes since AoT 1.2.0:

    * New menu items for GL Glow, Chase mode, Draw Shadows.
    * GL glow patch from jshexen2.
    * Interactive video modes in software game disabled.
    * Video Modes menu now displays help message.
    * Height values corresponding to --width are properly added.
    * Screen sizes are selectable with "-width" and "-height" options,
      now. The "-mode" cmdline arg is removed.
    * Proper fullscreen mode(s) for OpenGL.
    * Two general overflow bug-fixes from pa3pyx.
    * BIG code cleanup including retiring some unused files, retiring
      old opengl files, killing many compiler warnings, etc.
    * A range checking bug is fixed along with the No Boss bug.
    * "No Boss" bug in Dan's original linux port fixed: Hexen2 loads
      progs2.dat along with progs.dat, as it should, now.
    * Probably some other minor things that we forgot.

