Hexen II: Hammer of Thyrion

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

2016-01-10 (SVN):
    * zone.c: fix padding in memblock_t struct to work as intended.
      the previous layout was probably harmless but wasted a few bytes.
      (from quakespasm svn r1275, patch by Eric Wasylishen.)
    * DOS: experimental support for several pci sound cards.
    * bump version date stamp to 2016-01-10.

2015-11-01 (SVN):
    * changed version date stamp to 2015-11-01.

2015-10-31 (SVN):
    * hcode: change many statements like x=x|y into x(+)y, so that it's
      simply done with a BITSET op.  also changed a few statements like
      x=x-(x&y) into x(-)y, so that it's simply done with a BITCLR op.
      other minor tidy-ups.

2015-10-15 (SVN):
    * change gl_multitexture and gl_texture_NPOT settings to take effect
      only at context creation.

2015-09-18/2015-10-11 (SVN):
    * add support for DOS opengl rendering on 3dfx voodoo cards.

2015-08-23 (SVN):
    * prevent a possible buffer overflow in Cbuf_Execute.

2015-08-12 (SVN):
    * hexenworld: if the client sends '*caps' userinfo with a 'c', the
      server now returns protocol 26 instead of 25 and sends the sound
      and model lists in small chunks like quakeworld does. this avoids
      packet fragmentation. as a result, DOS version of hexenworld runs
      properly: ip4 fragment reassembly issues of watt-32 still haven't
      been solved, so this is a way around it.  old clients versus new
      servers and new clients versus old servers aren't affected: they
      work the way they used to before. thanks to Frank Sapone for help
      and testing.

2015-08-05 (SVN):
    * msg.c (MSG_ReadString, MSG_ReadStringLine): replaced MSG_ReadChar
      with MSG_ReadByte to avoid potentional vulnerability (icculus.org
      quake2 svn rev. 180.)

2015-04-17 (SVN):
    * removed the gtk launcher app.

2015-04-07 (SVN):
    * common/q_endian.h: update to use __ORDER_???_ENDIAN__ macros from
      new gcc and clang. whitespace tidy-up.
    * common/q_endian.c: whitespace tidy-up.
    * timidity/timi_endian.h: update to use __ORDER_???_ENDIAN__ macros
      from new gcc and clang. whitespace tidy-up.
    * timidity/dls_compat.h: fix (harmless) typo.

2015-04-01 (SVN):
    * NET_ constifications. pass netadr_t as reference instead of copy.
    * changed version date stamp to 2015-04-01.

2015-03-10 (SVN):
    * timidity updates from https://github.com/sezero/libtimidity/ :
      renamed previously added unused MidSongOptions->width to _pad, so
      it is reserved. made song_load() to validate the passed options.
      fixed song_load() so that MID_AUDIO_U16MSB audio format option is
      handled correctly. limited the acceptable sample rate range to
      4000-256000.

2015-03-07 (SVN):
    * timidity updates from https://github.com/sezero/libtimidity/ :
    * instrum.c (free_instrument): remove a useless+pointless sample ptr
      NULL check.
    * instrum.c (load_instrument), instrum_dls.c (load_region_dls): no
      need initializing the extra samples at the end, because the sample
      is alloc'ed using calloc()
    * instrum_dls.c (load_instrument_dls): fixed the segfaulting bugs
      introduced by r5375 (github commit 68df4a5). simplified malloc()
      failure management by adding+using free_mid_instrument() copied
      from instrum.c.
    * timidity.c (do_song_load): tidy-up the failure/success cases.
      general whitespace tidy-up.
    * playmidi.c (select_sample):  fix a dls bug introduced by r5394.

2015-03-03 (SVN):
    * snd_sdl.c: remove superfluous SDL_PauseAudio() and SDL_LockAudio()
      calls from the Shutdown() proc.
    * changed version date stamp to 2015-03-03.

2015-02-20 (SVN):
    * snd_flac.c, snd_mpg123.c: fix incorrect usage of decoder function
      return value in RewindStream() procedures.
    * bgmusic.c (BGM_UpdateStream): print msg if stream rewinding fails.
    * changed version date stamp to 2015-02-20.

2015-02-14 (SVN):
    * timidity: surround the struct _MidSample:low_vel and high_vel
      stuff with TIMIDITY_USE_DLS ifdefs.
    * timidity: fix resampler crashes (e.g. in rs_loop()) with broken
      situations.
    * timidity, resample.c (rs_plain): PRECALC_LOOPS counter bug fix.
      from timidity++-2.8.0 (1999-11-19 Masanao Izumo <mo@goice.co.jp>)
      Original form: i = (le - ofs) / incr + 1;        (Original)
      Fixed form:    i = (le - ofs + incr - 1) / incr; (Correct)

2014-11-28 (SVN):
    * q_endian.h: add WORDS_BIGENDIAN macro for autotools compatibility.
    * libs, timidity: sync with libTiMidity fork at
      https://github.com/sezero/libtimidity/
    * bumped the version date stamp to 2014-10-28.

2014-11-21/27 (SVN):
    * oslibs (macosx, windows): recompiled the FLAC decoder with
      CVE-2014-8962 and CVE-2014-9028 fixes applied from mainstream.

2014-11-22 (SVN):
    * gl_screen.c (SCR_ScreenShot_f): make sure we don't Sys_Error()
      due to buffer allocation failures.
    * bumped the version date stamp to 2014-11-22.

2014-10-20 (SVN):
    * fix issues on Windows systems with DPI scaling.
    * bumped the version date stamp to 2014-10-20.

2014-10-18 (SVN):
    * make sure that SDL_Quit() is called upon exit.

2014-10-10 (SVN):
    * engine/h2shared/common.c: override the stock djgpp versions of
      stricmp and strnicmp by our own q_strcasecmp and q_strncasecmp.
    * bumped the version date stamp to 2014-10-10.

2014-08-25 (SVN):
    * Revert Pa3PyX solution for cross-map demos, apply Baker's fix
      instead (http://forums.inside3d.com/viewtopic.php?f=3&t=2397).

2014-07-01 (SVN):
    * move MAX_OSPATH definition to q_stdinc.h. define it as PATH_MAX,
      or as MAXPATHLEN, _MAX_PATH, MAX_PATH, or CCHMAXPATH if either of
      them is available, or as 1024 if none are available. this would
      make us safer in deep installation directory paths.  darkplaces
      engine seems to do the same.
    * remove USE_PASSWORD_FILE compile time option for the unix builds
      and use it unconditionally already.

2014-06-28 (SVN):
    * utils, jsh2color: ignore minlight values from the -light command
      line switch: eliminates the majority of the ugly black patches
      from eidolon and rider2c maps. bump its version to 1.2.6.
    * bumped the version date stamp to 2014-06-28.

2014-06-15 (SVN):
    * SDLMain.m: replace CPS* stuff with activateIgnoringOtherApps.

      CPS stuff are deprecated and emit warnings at runtime, e.g.:
	warning: CPSGetCurrentProcess(): This call is deprecated and
		 should not be called anymore
	warning: CPSSetForegroundOperationState() (as above)
	warning: capture_display; Captured mirror master 0x350000c1
		 (unit 1) on behalf of slave 0x042716c0 (unit 0)

      http://lists.libsdl.org/pipermail/sdl-libsdl.org/2006-April/055454.html
      suggests doing something like:
	ProcessSerialNumber psn = { 0, kCurrentProcess};
	TransformProcessType (&psn, kProcessTransformToForegroundApplication);
	SetFrontProcess (&psn);

      and SetFrontProcess() is deprecated in 10.9. Processes.h suggests
	[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]
      to make one's own application frontmost.

2014-04-28 (SVN):
    * model.c, gl_model.c, sv_model.c (CalcSurfaceExtents): add double
      casts to floating point calculation so that 64 bit/sse2 builds'
      precision matches those of x87 floating point.  (from QuakeSpasm,
      patch by Eric Wasylishen.)

2014-04-28 (SVN):
    * gl_screen.c: fix screenshots when width isn't a multiple of 4.
      explained by Sander van Dijk.
    * bumped the version date stamp to 2014-04-28.

2014-04-27 (SVN):
    * HWAL texture loading is now a compile time option in h2config.h.
      default is disabled: it was a dead project of Korax, no one ever
      made *.wal files for hexen2.
    * bumped the version date stamp to 2014-04-27.

2014-04-26 (SVN):
    * Avoid using COM_DefaultExtension() whenever possible: it may lead
      to unpredictable results. Use a new procedure COM_AddExtension()
      which appends the given extension to the path if the one it has,
      if any, doesn't match.
    * bumped the version date stamp to 2014-04-26.

2014-04-24 (SVN):
    * oslibs/dos: recompile watt32 library after replacing all access()
      calls with _chmod(), so that it does not pull in monstrous deps.

2014-04-24 (SVN):
    * Unix (at least Linux) man pages for mkdir(2) document the EEXIST
      error: "pathname already exists (not necessarily as a directory).
      This includes the case where pathname is a symbolic link, dangling
      or not." So, add a check to see if the existing pathname is really
      a directory.
    * bumped the version date stamp to 2014-04-24.

2014-04-18 (SVN):
    * osx port: update SDLMain.m from SDL hg repository/SDL-1.2 branch.
    * bumped the version date stamp to 2014-04-18.

2014-04-17 (SVN):
    * meteor.hc (tornato_spin): fixed typo in pain_finished equality
      check: if(self.pain_finished==-1), not if(self.pain_finished=-1).
      issue was present since at least v0.42.
    * bumped the version date stamp to 2014-04-17.

2014-03-11 (SVN):
    * revert the r5197 'use a different approach to ignore mouse events'
      (1) the bug reporter found that it's an SDL-1.2 bug regarding IME:
      http://sf.net/p/uhexen2/discussion/425207/thread/6f168cfb/
      https://bugzilla.libsdl.org/show_bug.cgi?id=2325
      fixed in the hg repo: https://hg.libsdl.org/SDL/rev/0aade9c0203f
      (2) we have never managed to reproduce the reported bug, only one
      user reported the bug, and (3) the workaround caused a regression
      where the first ever keyboard key hit is missed.
    * bumped the version date stamp to 2014-03-11.

2014-03-08 (SVN):
    * snd_wildmidi.c: fix wrong endianism handling. make it compatible
      with upcoming libWildMidi-0.4.x.
    * bumped the version date stamp to 2014-03-08.

2014-02-22 (SVN):
    * timidity/instrum.c (load_instrument): allocate the sp data with 2
      padding samples, not just 1. fixes invalid reads from resampler,
      seen with the old MIDIA patchset. (timidity++-2.13 and newer does
      the same thing.)
    * bumped the version date stamp to 2014-02-22.

2013-12-14 (SVN):
    * stats.hc (AwardExperience): Crusader partial healing at certain
      experience thresholds now starts at level 3 to be consistent with
      the manual.
    * bumped the version date stamp to 2013-12-14.

2013-12-14 (SVN):
    * stats.hc (AwardExperience): eliminated the duplicated IsPlayer
      check. whitespace cleanups.

2013-12-13 (SVN):
    * oslibs/dos: recompile watt32 library with a few fixes applied.
      update watt-32 web links in the docs.

2013-10-31 (SVN):
    * sys_unix.c, sys_amiga.c, sys_dos.c: removed a useless memset and
      simplified error checks in Sys_CopyFile(). minor tidy-ups.
    * quakefs.c: ditto for FS_WriteFileFromHandle().
    * utils, util_io.c: ditto for Q_CopyFile and Q_WriteFileFromHandle.
    * update version date stamp to 2013-10-31.

2013-10-30 (SVN):
    * amiga: copy over changes from r5253 to engine/hexen2/server/ and
      hw_utils/hwmaster/ versions of sys_amiga.c. also copy changes to
      relevant sources at the utils side.
    * sys_amiga.c: tidy-up pattern_helper() a bit. fix line alignment-
      whitespace in Sys_GetClipboardData().
    * vid_cgx.c: remove trailing whitespace.

2013-10-29 (SVN):
    * modified the amiga files to compile on AmigaOS 3.

2013-10-23 (SVN):
    * snd_umx.c: support umx files from unreal 1997/98 beta version.

2013-10-15 (SVN):
    * snd_mikmod.c: fix return type of the Seek function.
    * snd_umx.c: update XM detection. other minor tidy-ups.
    * update version date stamp to 2013-10-15.

2013-09-27 (SVN):
    * add new stdio replacement FS_fgetc() and use it in snd_mikmod.c
    * update version date stamp to 2013-09-27.

2013-09-25 (SVN):
    * replace all ctype.h functions/macros and strcasecmp/strncasecmp()
      by locale-insensitive versions, new header q_ctype.h.
    * update version date stamp to 2013-09-25.

2013-09-24 (SVN):
    * update version date stamp to 2013-09-24.
    * support for Unreal UMX container. not enabled by default: edit the
      Makefile for USE_CODEC_UMX or add "USE_CODEC_UMX=yes" to your make
      command line arguments.
    * snd codec layer updates: changed codec_open() to operate only on a
      stream pointer and moved all file open/close stuff to snd_codec.c.
      codec_open now only returns true or false upon success or failure
      instead of a stream pointer. added new snd_codec.c toplevel helper
      S_CodecForwardStream(), which allows one codec to hand over its
      stream from its codec_open() to another codec.
    * some tidy-up in FS* stdio replacement functions. add FS_filelength
      to the FS_* api.

2013-09-23 (SVN):
    * added tracker music (mod) support. it is not enabled by default,
      edit Makefile for either USE_CODEC_MIKMOD or USE_CODEC_MODPLUG, or
      add "USE_CODEC_MIKMOD=yes" to your make command line arguments.

2013-08-12 (SVN):
    * cd_win.c (CDAudio_Init): if the user gave a valid -cddev argument,
      include MCI_OPEN_ELEMENT among the sent MCI flags.
    * update version date stamp to 2013-08-12.
    * docs/AUTHORS: add Burçak Öztürk under contributors:testing.

2013-08-08 (SVN):
    * oslibs: macosx, windows: recompile libopusfile using latest stable
      v0.3 release. (only a windows code change and a few extra comments
      in opusfile.h header since the previous build.)

2013-08-08 (SVN):
    * utils, hcc: added new command line option -os which compacts the
      strings heap by eliminating duplicates in CopyString(), procedure
      based on fteqcc. added ability of separately specifiying which old
      behaviors will be reproduced by the new -pf and -sc command line
      switches. made the -old command line switch to combine -pf and -sc
      behaviors together. documented the new options in the help output.
    * utils, dhcc: added -info command line switch to the decompiler so
      that it only print brief info about the progs and exits. fixed the
      strings printer so that it doesn't print the nul terminator. added
      a new string heap duplicate finder procedure to CopyString() which
      is based on fteqcc and is much faster than the old brute-force.

2013-08-05 (SVN):
    * specials.hc (CheckAbilities): fixed missing parentheses around two
      OR'ed constants in the drawflags bittest. (issue was present since
      at least v1.03.)
    * ravenai.hc: commented out all functions except for LocateTarget()
      and CheckMonsterAttack(). all of them are unused.
    * fangel.hc (fangel_deathframes): removed an unused local.
    * fablacde.hc: commented out unused frame_BLADE
    * client.hc (changelevel_touch): fixed parentheses around noxit cvar
      checks (typo was introduced in v1.15.) in siege version, removed
      the start map check (no such map in hexen2/hexen2world.)
    * allplay.hc (DeathBubbles,DeathSound), mummy.hc (mummy_die), rat.hc
      (rat_touch), triggers.hc (hurt_touch): removed the useless return
      statements from the end of the functions.
    * MG_AI.hc (CheckJump): changed several else if statements to simple
      ifs whose parent if already always return.
    * triggers.hc (quake_shake_next): removed useless initialization of
      local entity variable to world.
    * hc code, several: added braces around several nested ifs, various
      whitespace tidy-ups.

2013-08-02 (SVN):
    * siege/strings.txt: fixed mistakes I introduced long long time ago.
    * siege/client.hc: in Climb(), changed a bitwise and to logical and
      to better match the code to v0.15 (was a typo from KS's changes.)
      in PlayerPostThink(), fixed a misplaced else case for the landing
      sound code to better match the code to v0.15 (was a typo from KS's
      changes.) in ClientObituary(), changed targ.deathtype check from
      falling to fall to match the v0.15.x code elsewhere in client.hc.
      miscellaneous whitespace changes.
    * update version date stamp to 2013-08-02.

2013-07-30 (SVN):
    * midi_osx.c: fixed an unlikely memory leak in GetSequenceLength().
      tidied up several #ifdefs by adding compatibility macros at top
      of the file. changed some obvious else if usage into pure if in
      GetSequenceAudioUnit(). changed the AUGraphGetNodeInfo() call in
      ppc/10.2 builds to take NULL classdata and classdata size params
      instead of dummy locals.

2013-07-28 (SVN):
    * portals/damage.hc (T_Damage): make sure target is a player before
      checking its camera_time and return: spider.spiderActiveCount and
      player.camera_time overlap in entity union and can make spiders
      invincible, otherwise. issue has been there since Raven's v1.12.

2013-07-28 (SVN):
    * hc/siege/progs.src: removed again raven, snake, spider, scorpion,
      skullwiz, medusa, archer, hydra, faspell, fablade and fangel hc
      files from build. (they were added to build along with KS's siege
      changes back in 2005 at r247, but they aren't really used, and
      they weren't in siege-v0.15 release build either...)
    * hc/siege/client.hc (PlayerTouch): fix misplaced braces to match
      original siege-0.15 code better. (actually doesn't matter much,
      because deathmatch will always be set in hexenworld.)

2013-07-27 (SVN):
    * snd_mp3.c (mp3_startread): set the missing stream->info.bits value
      (for completeness only.)

2013-07-27 (SVN):
    * incremented uhexen2 version to 1.5.7 and date-stamp to 2013-07-27,
      incremented gamecode version to 1.29, incremented the game engine
      versions for hexen2 to 1.29 and hexenworld to 0.29.

2013-07-26 (SVN):
    * combat.hc (FireMelee): broke the long if condition for assassin's
      backstab in to smaller three nested ifs ordered in the likelihood
      of truth. in the siege version, changed some of the if conditions
      into else if (the player class checks.)

2013-07-26 (SVN):
    * ravenstf.hc (create_raven_shot2, hw and siege versions): removed
      the DAMAGE_YES assignment to missile.solid, just like we did for
      the h2 and portals versions years ago. (it should have been there
      by mistake or a left over as was noticed by Pa3PyX, which used to
      cause the missiles to be of SOLID_TRIGGER type and collide with
      each other.)
    * ravenstf.hc (missle_straight, hw and siege versions): removed the
      useless return statement from the end of the function.

2013-07-25 (SVN):
    * snd_flac.c (flac_write_func): don't byteswap the 16 bit values.
      they seem to be in native-endian format. thanks to Levent Yavas
      for testing on a big endian platform (ppc/OSX 10.4).

2013-07-25 (SVN):
    * removed the gl_dogamma hack. some updates to the sdl and fx gamma
      code.

2013-07-24 (SVN):
    * docs/COMPILE: add note about old Visual Studio versions.  update
      the nasm recommended versions.

2013-07-24 (SVN):
    * gl_vidsdl.c (VID_InitGamma): send 1.0 to SDL_SetGamma() instead of
      v_gamma.value.
      (VID_ShutdownGamma): Add missing SDL_SetGamma(1,1,1) call when not
      compiled to use SDL's GammaRamps api.

2013-07-23 (SVN):
    * snd_mp3.c (mp3_startread): don't error upon a short read as it may
      be a short but still a valid file.

2013-07-22 (SVN):
    * snd_codec: store the samplebits value in the snd_info_t struct,
      and add a new blocksize field to it which the flac decoder can
      use. updated decoder sources for the snd_info_t changes, where
      I made minor tidy-ups too, tightening several format checks and
      fixing a few gotchas in snd_wave.c and snd_mem.c.
    * snd_flac.c: adjusted for snd_info_t changes. no longed storing
      metadata->data.stream_info in our private data, but just storing
      a pointer to the stream->info structure. No longer checking the
      metadata total_samples field (the FLAC__StreamMetadata_StreamInfo
      doesn't seem to have any alignment or pack attributes and I don't
      safe with its offset across different compilers), but added check
      to make sure that we hit and parsed a STREAMINFO metadata instead,
      and our new state seems just fine for validating the file.

2013-07-22 (SVN):
    * docs/ReleaseNotes: updated for a future release.

2013-07-21 (SVN):
    * added flac music support. it is not enabled by default, edit the
      Makefile for USE_CODEC_FLAC, or add "USE_CODEC_FLAC=yes" to your
      make command line arguments.

2013-07-18 (SVN):
    * docs/README: update for web links.

2013-07-17 (SVN):
    * oslibs: macosx, windows: recompile libopusfile, using the latest
      from xiph.org git repo.

2013-07-12 (SVN):
    * oslibs: macosx, windows: recompile libopus using the latest stable
      v1.0.3 release.

2013-06-28 (SVN):
    * pr_edict.c (PR_GetProgFilename): simplified and hardened more.

2013-06-24 (SVN):
    * oslibs: updated msinttypes to r29 from mainstream googlecode.com
      repository.

2013-06-24 (SVN):
    * docs/COMPILE: updated tested compiler versions.

2013-06-16 (SVN):
    * in_sdl.c: use a different approach to ignore mouse events.
      We now use SDL_SetEventFilter() instead of SDL_PumpEvents().
      This seems to fix a freeze reported by "galtgendo" (see at:
      sf.net/p/uhexen2/discussion/425207/thread/6f168cfb/.) Since
      none of the uhexen2 developers have been able to reproduce
      this freeze it's hard to say exactly what was wrong, but so
      far this seems to fix it (code adapted from quakespasm).

2013-06-10 (SVN):
    * updated config.guess and config.sub from savannah git repo.

2013-05-25 (SVN):
    * oslibs: macosx, windows: recompile libopus using the latest stable
      1.0.x branch from xiph.org git repository.
    * oslibs, windows: recompile libmpg123 from latest 1.15.4 version.

2013-05-15 (SVN):
    * oslibs: macosx, windows: recompile libogg, libopus and libopusfile
      using latest stable branches from xiph.org git repository.

2013-04-27 (SVN):
    * snd_sdl.c (S_SDL_Init): set number of samples to 4096 for sampling
      rates higher than 56, i.e. 96 kHz.

2013-04-27 (SVN):
    * pr_edict.c (PR_GetProgFilename): adjust to use FS_fgets() instead
      of fgets(), to be on the safe side just in case we run into broken
      maplist.txt files enclosed in pak files.

2013-04-27 (SVN):
    * snd_oss.c (S_OSS_Init): in case of an unlikely error, munmap the
      memory before closing the audio device.

2013-04-27 (SVN):
    * snd_dma.c (tryrates): added 96 kHz among the accepted sound rates.

2013-04-27 (SVN):
    * h2patch/build_osx.sh: fixed make calls without -f Makefile.darwin
      arguments. (they were harmless, but for correctness' sake.)

2013-04-27 (SVN):
    * hexenworld, cl_parse.c (CL_CheckOrDownloadFile): use FS_FileExists
    * hexenworld, sv_ccmds.c (SV_Map_f): use FS_FileExists

2013-04-10 (SVN):
    * r_shared.h (MAXWIDTH): added a caution note that 12.20 fixed
      point math used in R_ScanEdges() overflows at width 2048, as
      noticed by Kevin Shanahan.

2013-04-10 (SVN):
    * oslibs: recompiled libogg-1.3.0 with patch from xiph.org svn rev.
      18758 applied.

2013-04-06 (SVN):
    * oslibs (macosx, windows): update opusfile builds using today's git
      repo version c9964275c152b34779ed56607c9f010efcb6a70f.

2013-04-02 (SVN):
    * gl_vidamiga.c, gl_vidnt.c, gl_vidsdl.c (VID_ConWidth): change mask
      to ~7 when making vid.conwidth a multiple of eight. (from tyrquake
      git repo.)

2013-04-02 (SVN):
    * keys.c (Key_Message): move backspace handling before non-printable
      check. (the functionality doesn't change. from tyrquake git repo.)

2013-03-30 (SVN):
    * scripts/ax_pthread.m4: update from mainstream savannah git repo.

2013-03-15 (1.5.6-final / SVN):
    * r_part.c (R_EntityParticles): fix undefined behavior in the loop
      init'ing avelocities, thanks to a -Waggressive-loop-optimizations
      warning from gcc-4.8.
    * update version date stamp to 2013-03-15.

2013-03-10 (SVN):
    * oslibs/dos/libwatt32: delete empty object files from the archive.

2013-03-10 (SVN):
    * gl_vidamiga.c: cleanups from Szilard Biro.

2013-03-10 (SVN):
    * pr_edict.c: if progs.dat exists, accept maplist.txt only if it is
      from the same game directory as progs.dat itself or if it is from
      a searchpath with a higher priority.

2013-03-10 (SVN):
    * [gl_|sv_]model.c: change the 'ignored' messages from external lit
      and ent files back to developer mode.

2013-03-10 (SVN):
    * update version date stamp to 2013-03-10.

2013-03-10 (SVN):
    * update the Mac OS X icon. add some more under engine/resource/.

2013-03-08 (SVN):
    * docs/README.hwsv, hw/mapcycle.cfg: fix a typo in sample rotation.
    * hw/client.hc, dmlevels.hc: properly simplify map cycling stuff.
    * siege/client.hc, dmlevels.hc: minor map cycling stuff, and add
      some FIXME notes.

2013-03-08 (SVN):
    * hw/client.hc (NextLevel): set SFL_NEW_UNIT unconditionally because
      we may not have to call FindDMLevel().

2013-03-08 (SVN):
    * gamecode: increment version to 1.28. revert Kor Skarn's method of
      abusing strings.txt for map cycling: it was intrusive and unsafe
      and ugly. the hw and siege hcode now use the standart quakeworld
      method of localinfo variables: see client.hc:NextLevel().
    * docs/README.hwsv: update for brief user instructions on setting up
      a map cycling.

2013-03-08 (SVN):
    * increment engine versions for hexen2 to 1.28, hexenworld to 0.28.
    * update version date stamp to 2013-03-08.

2013-03-06 (SVN):
    * midi_osx.c: add code in GetSequenceLength() to support running on
      10.2, because the constant kSequenceTrackProperty_TrackLength (5)
      requires 10.3 runtime (code taken from an old post on mac mailing
      lists.) add a debug print for the resulting sequence length value.
      change malloc() to Z_Malloc() for our private CoreMidiSong struct.
    * update version date stamp to 2013-03-06.

2013-03-06 (SVN):
    * midi_mac.c: add missing CloseMovieFile() call in MIDI_Play(). do
      load the file onto hunk memory. some cleanup and tidyup.

2013-03-06 (SVN):
    * Makefiles,Xcode project file: add -mmacosx-version-min=10.2 among
      the CFLAGS and LDFLAGS. otherwise gcc sets the flag for 10.1, and
      midi_osx.c requires 10.2.

2013-03-03 (SVN):
    * minor documentation updates regarding fov and fov_adapt.

2013-03-03 (SVN):
    * screen.c (fov_adapt): changed software renderer to have fov_adapt
      enabled by default.

2013-03-03 (SVN):
    * update version date stamp to 2013-03-03.

2013-03-02 (SVN):
    * gl_vidamiga.c, gl_vidnt.c, gl_vidsdl.c: comment out the fullsbar
      stuff: to begin with, things aren't like those in quake and sbar
      is always drawn. besides, PowerVR cards are not around any more,
      either.)

2013-03-02 (SVN):
    * host_cmd.c (Host_Restart_f): fix error message argument order from
      previous rev.5156 change.

2013-03-02 (SVN):
    * host_cmd.c (Host_Changelevel_f, Host_Changelevel2_f): check to see
      the map file actually exists, issue a Host_Error() if it can't be
      found so that the client won't get stuck, i.e. the ages old "load
      failed" bug of quake.
    * (Host_Changelevel_f, Host_Changelevel2_f, Host_Restart_f): if the
      serverspawn fails even with an existing map, issue a Host_Error().

2013-03-02 (SVN):
    * view.c, cl_main.c: zero the cl.cshifts array from CL_Disconnect()
      instead of from V_UpdatePalette() every frame when not connected.
      copy the rev.5144 behavior, of calling V_CalcPowerupCshift() only
      when connected, to the opengl version.
    * update version date stamp to 2013-03-02.

2013-03-01 (SVN):
    * added opus libs and headers under oslibs for windows and macosx.
      added snd_opus.c to Xcode and Visual Studio project files. (it is
      still not enabled, however just adding USE_CODEC_OPUS among the
      preprocessor macros and adding libopusfile among the link libs is
      enough to do it.)

2013-02-28 (SVN):
    * snd_opus.c: add comments for clarification on Opus decoded sample
      rate. add comments about the sample width returned by op_read()
      and remove two useless macros.
    * updated version date stamp to 2013-02-28.

2013-02-27 (SVN):
    * codecs: add support for the Opus file decoding, which works just
      fine. it is not enabled by default, but editing the Makefile for
      USE_CODEC_OPUS will do it.

2013-02-27 (SVN):
    * codecs: rename CODECTYPE_OGG to CODECTYPE_VORBIS, because ogg is
      just the container. adjust all other sources and headers for it.
    * snd_vorbis.c: reject files with more than one streams. (maybe we
      add section change handling in the future, but not supported now.)

2013-02-27 (SVN):
    * docs/README: small updates.

2013-02-27 (SVN):
    * view.c (V_UpdatePalette): call V_CalcPowerupCshift() only when
      fully connected to the server, otherwise zero the cl.cshifts
      array. this clears the left-over colors from area contents or
      used powerup items in software renderer. opengl renderer is not
      affected, because it does not actually touch the palette.
    * updated version date stamp to 2013-02-27.

2013-02-27 (SVN):
    * docs/README: add fov_adapt to documentation.

2013-02-27 (SVN):
    * oslibs,windows: update dinput.h from mingw-w64 svn repo rev.5620.

2013-02-25 (SVN):
    * r_main.c (R_ViewChanged): when fov_adapt is in effect, calculate
      the yscale global using the properly computed verticalFieldOfView
      and not by multiplying xscale with pixelAspect which is set to 1:
      fixes d_sprite.c crashes and negative ymin warning messages when
      r_waterwarp is in effect. also fixes underwater geometry with bad
      y-scale when r_waterwarp is in effect. Hor+ fov scaling now works
      just fairly with the software renderer.

2013-02-25 (SVN):
    * partly fix the bad interaction between r_waterwarp and fov_adapt
      (there is still an issue of "D_DrawSprite: ymin: -xx" messages
      appearing upon jumping into water with fov_adapt enabled and a
      crash in d_sprite.c:332:D_SpriteDrawTransSpans(), which should be
      fixed):
    * r_main.c (R_ViewChanged): do not call R_SetVrect() from here and
      lose the *pvrect and lineadjust params.
    * screen.c: (SCR_CalcRefdef): move calculation of r_refdef.fov_[x|y]
      after calling R_SetVrect(). assign scr_vrect to r_refdef.vrect
      explicitly. adjust the R_ViewChanged() call.
    * r_misc.c (R_SetupFrame): call R_SetVrect() before R_ViewChanged().
      adjust the R_ViewChanged() call. when going out of waterwarp mode,
      just assign scr_vrect to r_refdef.vrect instead of doing an
      R_SetVrect(), because scr_vrect holds the original data already.
    * render.h (R_ViewChanged): adjust the prototype.

2013-02-25 (SVN):
    * screen.c, r_main.c: ignore fov_adapt if vid.aspect is higher than
      1.10, not 0.75. (previous commit was wrong.)
2013-02-25 (SVN):
    * screen.c, r_main.c: ignore fov_adapt if vid.aspect is higher than
      0.75, not 1.10. do this for DOS and SVGALib ports only. waterwarp
      weirdness still needs fixing.
    * updated version date stamp to 2013-02-25.

2013-02-23 (SVN):
    * vid_svgalib.c: remove VGA_Update[Linear|Planar]Screen() external
      declarations who haven't been used for quite some time.

2013-02-23 (SVN):
    * scripts/pthread.sh: don't link to unnecessary filter libraries for
      pthread and rt on Solaris. (from SDL mercurial repo SDL-1.2 branch
      changeset 6909 6cccc0beb880.)

2013-02-21 (SVN):
    * Hor+ field of view scaling based on patches by Ricardo Garcia and
      Szilard Biro, most useful for widescreen modes. keep fov value at
      the default of 90, set fov_adapt to 1, and it will scale your fov
      automatically according to the screen resolution. both opengl and
      software renderers are supported. software renderer needed some
      special care: in r_main.c:R_ViewChanged(), the global pixelAspect
      is now set to 1 when fov_adapt is enabled. (pixelAspect is used in
      D_ViewChanged() for calculating d_y_aspect_shift which in turn is
      used in D_DrawParticle(), both C and asm variants. it is also used
      for computing xscale and yscale globals which are now effectively
      set to 1 when Hor+ is in effect.) in software renderer, fov_adapt
      is ignored with "tall" video modes, e.g. planar (Mode-X style) VGA
      modes, which may cause problems in the dos and svgalib ports.
      (actually such modes, e.g. a 768x848 window, really exhibit issues
      even if they are displayed in tall form on the screen by SDL: with
      r_waterwarp enabled and fov_adapt disabled, going into water and
      enabling fov_adapt and going out of water will mess the vrect: see
      R_SetupFrame(), as well as R_ViewChanged(). so, ignoring fov_adapt
      when vid.aspect is higher than 1.1 seems the right thing to do.)
      fov_adapt is enabled by default in opengl and disabled by default
      in software renderer.
    * updated docs/AUTHORS and docs/Features.

2013-02-21 (SVN):
    * d_part.c (D_DrawParticle): simplified clamping of color to 0-511
      by AND'ing the int value by 0x1ff. added comments as to why this
      is needed: ptype_t 10/11, i.e. pt_c_explode and pt_c_explode2,
      e.g. Crusader's ice particles hitting a wall, lead to negative
      color values because R_UpdateParticles() decrements their color
      against time. some coding style cleanups.
    * r_part.c: in opengl mode, hexen2 R_DrawParticles() used to index
      d_8to24table[] with negative values in case of ptype_t 10 and 11:
      fixed by clamping the color the same way we do in d_part.c.
    * r_part.c: in opengl mode, hexenworld R_RenderParticle might have
      indexed d_8to24table[] with values higher than 255: fixed. added
      clamping of color value similar to hexen2 version. commented out
      the color value boundary check and the corresponding refusal and
      debug message.
    * updated version date stamp to 2013-02-21.

2013-02-20 (SVN):
    * gl_rmain.c, gl_rsurf.c, gl_rmisc.c: removed global currententity
      altogether from the opengl version.

2013-02-20 (SVN):
    * gl_rmain.c (R_DrawSpriteModel, R_GetSpriteFrame): no need to use
      the global currententity, use the e entity pointer already fed to
      the function as the parameter.

2013-02-20 (SVN):
    * q_stdinc.h: add vec4_t as a new type.
    * gl_rsurf.c (hw version): add missing GL_BLEND disable call at the
      end of R_RenderBrushPoly for DRF_TRANSLUCENT cases. minor tidyups.
    * gl_rmain.c (hw version): copy over R_DrawSpriteModel from the h2
      version. adapt R_TransformModelToClip and R_TransformClipToWindow
      from quake3 and R_GetScreenPosFromWorldPos from jlquake. fix the
      broken R_DrawName using R_GetScreenPosFromWorldPos() from jlquake.
      remove MultiplyMatrix/TransformPoint of original hw, now replaced
      by R_GetScreenPosFromWorldPos(). R_DrawName() readability cleanup.
      several minor tidyups.
    * r_main.c (hw version): R_DrawName() readability cleanup.
    * render.h (hw version): R_DrawName() prototype update.
    * sbar.c (hw version): SB_PlacePlayerNames() readability cleanups.
    * gl_rmain.c, gl_rsurf.c (h2 versions): several minor cleanups.
    * update version date stamp to 2013-02-20.

2013-02-18 (SVN):
    * model.h: change SURF_DRAWBLACK from 0x200 to 0x100.
    * gl_model.h: change SURF_DRAWBLACK from 0x200 to 0x100 and change
      SURF_UNDERWATER from 0x100 to 0x200. these two flags are set only
      at runtime and now the surface flags are in order in software and
      opengl versions.
    * gl_model.c: sync Mod_LoadAllSkins() between h2 and hw versions so
      that h2 now checks for skintype like hw does. this can be further
      improved later. on the other hand, I don't know any alias models
      with ALIAS_SKIN_GROUP skins either, so this shouldn't affect real
      life experience. update gl_rmain.c and gl_model.h to work against
      the Mod_LoadAllSkins() change.
    * gl_model.c (hw version): remove the 32768 checks from aliasmins
      in Mod_LoadAliasFrame() and Mod_LoadAliasGroup(), because they
      are already set that way in Mod_LoadAliasModel(). change the loop
      counter upper boundary from pheader->numverts to pheader->version
      like in the h2 version.
    * model.c (hw version): call RadiusFromBounds() after copying the
      mins/maxs values in Mod_LoadBrushModel(). copy over alias models
      mins/maxs caslculation via R_AliasTransformVector2() from the h2
      version. comment out the FIXME'd cls.userinfo pmodel/emodel crc
      code, because unlike qw it is never checked at the server side.
    * gl_model.c, model.c (all versions): minor tidying here and there.
      h2/h2w versions are fairly in sync now.
    * updated version date stamp to 2013-02-18.

2013-02-17 (SVN):
    * d_polyse.c: mark the do_PolysetDrawFinalVerts helpers as inline.

2013-02-15 (SVN):
    * in_amiga.c: native digital joystick support from Szilard Biro.

2013-02-15 (SVN):
    * vid_sdl.c, gl_vidsdl.c (VID_SetIcon): disabled the embedded icon
      for osx builds. thanks to Kristian Duske for clarifications.
    * updated version date stamp to 2013-02-15.

2013-02-14 (SVN):
    * GL_SetupLightmapFmt: remove the check_cmdline function parameter
      and rely on the global host_initialized, instead.

2013-02-14 (SVN):
    * new icon for mac os x, thanks to Jacques Krige.

2013-02-14 (SVN):
    * rpm spec file: minor edit.
    * engine/resource: renamed titles in the xbm headers to hx2icon.
      remove the unused 64x64 h2 icons. remove unused hw png icons.
    * vid_sdl.c, gl_vidsdl.c (VID_SetIcon): document xbm processing.
      adjust for the renamed xbm titles.

2013-02-12 (SVN):
    * updated config.guess and config.sub from savannah git repo.

2013-02-11 (SVN):
    * h2patch: if we run into oem (m3d) version 1.08, request feedback
      from the user. likewise for the gtk-launcher patch unit.

2013-02-10 (SVN):
    * timidity: minor edits for byte order macro checks.

2013-02-10 (SVN):
    * common/q_endian.h: updated with addidional predef.sourceforge.net
      information.

2013-02-10 (SVN):
    * timidity: removed read_meta_data() stuff altogether.
    * timidity: documented our changes in the CHANGES file.

2013-02-10 (SVN):
    * utils, hcc: fixed a -Wclobbered warning in CO_CompileFile() by
      making the local boolean inProgress variable volatile.

2013-02-10 (SVN):
    * timidity: fixed all of the gcc -Wclobbered warnings by fixing my
      setjmp/longjmp mistakes including one major thinko in readconfig
      recursive calls. made safe_malloc() to 0-fill the memory before
      returning. changed sine() macro to use standart M_PI instead of
      PI. removed the unused PATH_SEP macro from options.h. defined a
      new TIM_MAXPATH, expanding to MAXPATHLEN or PATH_MAX if they are
      available or to 1024 otherwise. changed the size of path arrays
      to TIM_MAXPATH, instead of the arbitrary number 1024. moved the
      inclusion of options.h from the C-sources to timidity_internal.h.
      bumped LIBTIMIDITY_VERSION_MINOR to 2, because our local copy is
      noticeably different from original libtimidity-0.1.0.
    * updated version date stamp to 2013-02-10.

2013-02-08 (SVN):
    * timidity: abandoned libtimidity invention of storing metadata in
      the song. now we either skip the metadata, or print to stderr if
      compiled with TIMIDITY_DEBUG defined.
    * snd_timidity.c: adjusted for the metadata changes.
    * updated version date stamp to 2013-02-08.

2013-02-08 (SVN):
    * timidity: changed mid_istream_skip() to accept a long type length
      instead of size_t and made it to return success or failure.

2013-02-08 (SVN):
    * timidity: don't leak instrument file pointer upon longjmp(), i.e.
      a malloc() failure.

2013-02-07 (SVN):
    * timidity: cured a (bogus) uninitialized warning from gcc 3.3 and
      earlier versions in read_meta_data(). added an index safety check
      to mid_song_get_meta(). defined a MID_META_MAX macro (currently
      equal to the last MidSongMetaId enum value of MID_SONG_COPYRIGHT)
      and limited the MidSong meta_data array size to MID_META_MAX+1.

2013-02-07 (SVN):
    * timidity: renamed the macro FSCALE to TIM_FSCALE to avoid possible
      clashes with system headers. renamed FSCALENEG to TIM_FSCALENEG
      for consistency. new macro names are in line with timidity++-2.xx.

2013-02-07 (SVN):
    * timidity/resample.c (pre_sample): a simplification (use v5 as an
      intermediate variable in computation of v) and a fix (assignment
      of last two samples) from timidity++.

2013-02-07 (SVN):
    * snd_timidity.c: dls support, mostly for my testing purposes. built
      only when TIMIDITY_USE_DLS is defined (see the Makefile), which is
      not enabled by default.

2013-02-07 (SVN):
    * made safe_malloc() of timidity actually safe: it relies on setjmp
      and longjmp using a jmp_buf private to timidity. safe_malloc() is
      now used only after doing a setjmp(), otherwise we directly use
      malloc() and check its return. safe_malloc() does a longjmp() upon
      allocation failure: during timidity initialization, jump point is
      either mid_init_no_config() or read_config_file(), and a failure
      results in a mid_exit() to free all the allocated memory until
      that point. if initialization is successful, then safe_malloc() is
      used during song loading and a failure jumps to mid_song_load()
      resulting in a mid_song_free() to free all memory allocated for
      the song until that point. all functions returning safe_malloc'ed
      local pointer variables are converted to work properly in case of
      a longjmp(). all NULL checks for pointers returned by safe_malloc
      are removed.
    * updated version date stamp to 2013-02-07.

2013-02-05 (SVN):
    * timidity, intrum_dls.c: apply the same one extra sample space fix
      from r5049-r5050 to load_region_dls() to cure memory error reports
      from valgrind. removed a comment from instrum.c:free_bank() which
      is no longer valid. minor tidy-ups here and there.

2013-02-05 (SVN):
    * added Siggi's initial software renderer 2D scaling implementation
      among the optional patches.

2013-02-05 (SVN):
    * draw.c (Draw_Character,Draw_SmallCharacter,Draw_TransPicCropped):
      take the trans_level check out of the loops, evaluating it only
      once instead of every iteration.
    * updated version date stamp to 2013-02-05.

2013-02-04 (SVN):
    * updated config.guess and config.sub from savannah git repo.
    * updated version date stamp to 2013-02-04.

2013-02-04 (SVN):
    * finalize the malloc() safety in timidity: instrum_dls.c still has
      to be edited, but it is not built by default, either:
    * libs, timidity/instrum.c: make sure that malloc() is successful.
      clear the allocated memory for ip and its sample in order to help
      the error handling and/or freeing routines. make sure that sample
      pointer is valid in free_instrument().
    * libs, timidity/timidity.c: make sure that malloc() is successful
      in mid_song_load_dls(). use safe_free() whenever possible in the
      song freeing processes.

2013-02-04 (SVN):
    * libs, timidity/instrum.c: remove the noluck variable and directly
      check whether the file pointer is NULL.

2013-02-04 (SVN):
    * libs, timidity/readmidi.c: make sure that malloc() is successful
      in read_meta_data(), read_midi_event(), read_midi_file(), and in
      groom_list().

2013-02-04 (SVN):
    * libs, timidity/readmidi.c: use safe_free() in read_meta_data(). no
      need for an early return in free_midi_list(). return NULL instead
      of newlist at the end of read_midi_event(), because the whole body
      of the function is a for(;;) loop to begin with.

2013-02-04 (SVN):
    * libs, timidity/resample.c (pre_resample): do not proceed if memory
      alloctation fails.

2013-02-04 (SVN):
    * libs, timidity: change timidity initialization so that a failure,
      such as config parse failures, shall also warrant a full shutdown
      of the library which frees all memory.
    * engine, snd_timidity.c: change the codec initialization routines
      now that mid_init() errors guarantee an associated mid_exit() from
      within the library itself.

2013-02-04 (SVN):
    * libs, timidity: added safe_free() as a new macro which expands to
      either simply free(), or to free() with additional NULL check of
      its argument when "CANT_FREE_NULL" preprocessor macro is defined.
      CANT_FREE_NULL can be defined through the makefile for any such
      standarts incompliant platforms (if there are still any such in
      existence) where freeing a NULL pointer crashes or something.

2013-02-04 (SVN):
    * host_cmd.c (Host_Class_f): add a big FIXME note to the lame fifth
      class check against h2mp-style progs. bounds-check cl_playerclass
      before using its value as an index for the ClassNames array.

2013-02-04 (SVN):
    * menu.c: remove dead code which referenced non-existing art. coding
      style tidy-up.
    * d_init.c, gl_screen.c, screen.c: coding style tidy-up.

2013-02-03 (SVN):
    * sbar.c: remove dead code which referenced non-existing art. coding
      style tidy-up.
    * update the release notes file for the new no-hud thing.

2013-02-03 (SVN):
    * Make viewsize > 120 mean "no HUD" (more or less). Based on an idea
      and initial patch by Oleg Moiseyev (a.k.a. 'raven').

2013-02-02 (SVN):
    * scripts/pthread.sh: clean up for better flexibility.
    * utils: adjust the makefiles of jsh2color, light and vis after the
      pthread.sh cleanup.
    * launcher: used scripts/pthread.sh in the makefile.

2013-02-02 (SVN):
    * config.guess, config.sub and ax_pthread.m4 from savannah git repo.
    * updated version date stamp to 2013-02-02.

2013-02-01 (SVN):
    * utils hcc, dhcc: marked PR_ParseError() as noreturn. in dhcc,
      changed opcode_t:priority type from float to int, commented out
      the file and file_line members of function_t.

2013-01-31 (SVN):
    * rename host_abortserver of h2 to host_abort, in line with h2w.
      tweak the setjmp() call in Host_Init(). style clean-up.
    * updated version date stamp to 2013-01-31.

2013-01-27 (SVN):
    * timidity, resample.c (pre_resample): fixed a typo introduced by
      commit r5064.

2013-01-27 (SVN):
    * added OS2 platform macros for completeness sake.

2013-01-27 (SVN):
    * snd_timidity.c: add "LIBS:GerontoPlayer" to cfgfile[] for MorphOS
      builds. likewise for snd_wildmidi.c.
    * updated version date stamp to 2013-01-27.

2013-01-27 (SVN):
    * utils/dhcc makefile: enabled -march=i586 for ix86 builds.

2013-01-27 (SVN):
    * timidity makefile: use -march=i586 by default when compiling for
      x86, and -fomit-frame-pointer -ffast-math for optimized builds.

2013-01-26 (SVN):
    * timidity, resample.c (pre_resample): some safe-guards taken from
      Timidity++-2.11.3. went back to the Timidity++ way for the first
      sample case in the cubic interpolation loop.

2013-01-25 (SVN):
    * timidity, resample.c (pre_resample): some simplification/tidy-ups.
    * updated version date stamp to 2013-01-25.

2013-01-23 (SVN):
    * rest of the timidity-0.2i fixes from the timidity-0.2i-bugfix.pat
      patch found at the onicos.com site.
    * updated version date stamp to 2013-01-23.

2013-01-22 (SVN):
    * docs/AUTHORS: Added Sean Stach (Rhiyo) under contributors:testing.
      added Ryan C. Gordon under contributors:coding (for osx midi code,
      which I forgot doing in the previous 1.5.5 release.)

2013-01-22 (SVN):
    * gl_vidamiga.c: fixed the MorphOS gamma functionality.
    * updated version date stamp to 2013-01-22.

2013-01-20 (SVN):
    * timidity: fixed a few -Wempty-body warnings.

2013-01-17 (SVN):
    * draw.c: change several places where a bit shift was used to divide
      vid.rowbytes by 2: behaviour is undefined for signed numbers with
      negative values. (from a recent commit in tyrquake git repo.)
    * updated version date stamp to 2013-01-17.

2013-01-16 (SVN):
    * view.c (V_Init): in opengl builds, do initialize the gamma ramps
      array along with the gamma table. minor tidy-up.
    * gl_vidnt.c (AppActivate): add paranoid check to apply gamma only
      if host is initialized and we aren't in the middle of a video mode
      change.
    * gl_vidamiga.c, gl_vidnt.c, gl_vidsdl.c: renamed VID_SetPalete() to
      VID_InitPalette() to be called only from VID_Init() as the first
      thing. VID_InitPalette only generates the translation tables, etc.
      added VID_SetPalete as a nop function.
    * updated version date stamp to 2013-01-16.

2013-01-15 (SVN):
    * updated the release notes file for v1.5.6.
    * COM_Parse: really fix quoted strings parsing when EOF is reached
      before the closing quotation mark.

2013-01-15 (SVN):
    * updated version date stamp to 2013-01-15.

2013-01-15 (SVN):
    * engine/h2shared/common.c (COM_Parse): support for C-style /*...*/
      comments. minor tidy-up to reduce diff output against utils-side
      COM_Parse().
    * utils/common/cmdlib.c (COM_Parse): removed com_eof as it has never
      been used. fixed quoted strings parsing so it actually stops when
      EOF is reached before the closing quotation mark. changed C-style
      comments parsing so we never read beyond EOF. tidied up the layout
      so it looks the same as engine-side COM_Parse().

2013-01-15 (SVN):
    * utils, hcc, dhcc, pr_lex.c: removed defunct code in PR_NewLine()
      which was meant to function when _PrintNextLine() was to be used
      which had never been and removed ages ago. fixed LexWhitespace()
      so we never read from beyond EOF: fixes valgrind error reports.
      made EOF within C-style comments to error out.

2013-01-14 (SVN):
    * libs/timidity/instrum.c (load_instrument): initialize the added
      extra sample space (the +2 bytes in added in the previous patch)
      using the last actual sample.  while we are there, re-order the
      8-to-16 bit conversion code a little and apply the same +2 bytes
      patch there as well.
    * libs/timidity/instrum.c (load_instrument): allocate sp data with 2
      additional bytes. Timidity++ changelog from 1999-10-26 notes this
      patch by E.A.Welsh as: "It is possible that (OFS>>FRACTION_BITS)+1
      will yield a value which is 1 beyond the length of the sample.
      This happens when OFS < data_length, but (OFS>>FRACTION_BITS) ==
      (data_length>>FRACTION_BITS)." This fixes a valgrind error report
      for an invalid read of 2 bytes in resample.c:rs_plain().

2013-01-12 (SVN):
    * snd_wildmidi.c: added "/etc/wildmidi" to cfgfile[], which is where
      debian seems to install wildmidi.cfg.

2013-01-11 (SVN):
    * snd_mix.c (SND_InitScaletable): fixed an off-by-one mistake in the
      signed char conversion.

2013-01-11 (SVN):
    * docs/COMPILE: added a warning note to avoid buggy gcc versions,
      giving specifically gcc-4.1.0 and gcc-4.1.1 as examples.  updated
      tested clang versions.

2013-01-11 (SVN):
    * Makefiles, AROS builds: uncomment GL_LINK variable and compile the
      native opengl builds using LINK_GL_LIBS=yes.

2013-01-11 (SVN):
    * pr_exec.c (PR_ExecuteProgram): when interpreting a version6 progs,
      calculate the jump offset using a top-level local int32 variable.
      this way, gcc seems to refactor and output smaller code.

2013-01-11 (SVN):
    * pr_exec.c (PR_ExecuteProgram): when interpreting a version6 progs,
      calculate the jump offset not by first decrementing a, b or c and
      then casting the result to signed short, but by casting first to
      signed short and then decrementing. the former gives wrong result
      for -32768 (or 32768), a corner case I couldn't hit in real world
      yet. this was possibly a parenthesis typo by Pa3PyX back in 2003,
      or some kind of thinko in an already confusing case.
    * updated version date stamp to 2013-01-11.

2013-01-10 (SVN):
    * in_amiga.c, snd_ahi.c: updates from Szilard Biro to fix predefined
      OS macros usage.

2013-01-10 (SVN):
    * Makefiles, MorphOS builds: Add -lm to linker flags where relevant.

2013-01-10 (SVN):
    * gl_rmain.c (R_DrawAliasModel): check whether the skinnum is legit,
      set it to 0 otherwise, just like in the software renderer version.
      this works around archer models sometimes being drawn as "white"
      in certain weird mods, i.e. project peanut, where the mod's hcode
      initializes those entities with non-existant skins. while we were
      there, did a little tidying too.

2013-01-10 (SVN):
    * Incremented engine version to 1.5.6 and datestamp to 2013-01-10 in
      the development tree.

2013-01-07 (1.5.5-final / SVN):
    * removed several custom macros, especially those with underscores,
      in arch_def.h which reportedly did more harm than good. tidied up
      several other macros. adjusted all of the code for the changes.
    * utils/common/threads.c: fixed a typo in BSD-specific sysctl code.

2013-01-05 (SVN):
    * switched AROS and MorphOS clients build from SDL to native code,
      as requested by Szilard Biro.

2013-01-03 (SVN):
    * moved $topdir/libs/common to $topdir/common, adjusted makefiles
      and MS Visual Studio project files.

2013-01-03 (SVN):
    * minor documentation updates.

2013-01-02 (SVN):
    * support for progs v7 spec by Pa3PyX (http://pa3pyx.dnsalias.org/)
      with 32 bit offsets instead of 16 bit of original version 6. On
      the engine side, compatibility is preserved with v6 progs, so that
      the engine can run both with v6 as well as with v7 progs. On the
      utils side, hcc and dhcc are changed to compile progs as v6 when
      possible for compatibility, or as v7 otherwise. They can be made
      to compile specifically v6 or v7 by the new command line options
      -v6, -v7 or -version <n>.  As for decompilation, dhcc can process
      both v6 and v7 progs. Pa3PyX's own old binary release did include
      progs compiled as v7. The only other mod that specifically require
      v7 progs that I know of is "Project Peanut" of Shanjaq, which has
      too many functions and variables floating around (outdated website
      at: http://www.geocities.ws/shanjaq/index.html)
    * updated version date stamp to 2013-01-01.

2013-01-02 (SVN):
    * hcc.c: minor formatting for less difference between hcc and dhcc
      versions.

2012-12-31 (SVN):
    * utils, dcc: make sure the progs to be decompiled is of supported
      version.
    * utils, hcc: minor whitespace adjustments.

2012-12-27 (SVN):
    * snd_ahi.c (S_AHI_Init): add MEMF_CLEAR to AllocVec flags so that
      the memory is cleared and the loud clicks at startup are no more

2012-12-27 (SVN):
    * in_amiga.c: remove an obsoleted debugging define.

2012-12-27 (SVN):
    * vid_cgx.c, gl_vidamiga.c, in_amiga.c: new native Amiga code from
      Szilard Biro.

2012-12-27 (SVN):
    * snd_ahi.c: Update from Szilard Biro with cleanups and portability
      improvements to make it compile on AmigaOS 3.x too.
    * updated version date stamp to 2012-12-27.

2012-12-10 (SVN):
    * gl_draw.c (GL_ResampleTexture): allocate p1 and p2 temporarily on
      the hunk instead of having them as array[1024]. if gl_max_size is
      greater than 1024, the old code would just sefault with outwidth
      values greater than 1024.
    * updated version date stamp to 2012-12-10.

2012-12-07 (SVN):
    * mathlib.h: added original version of the VectorNegate() macro in
      commented out form.
    * bspfile.c: fixed an old stupid error in the version error message.

2012-11-23 (SVN):
    * mathlib.h (VectorClear): remove extraneous semicolon from the end.

2012-11-23 (SVN):
    * utils/common/bspfile.c (SwapBSPFile): although the end result in
      memory needn't change, swap the texinfo in a way consistent with
      the layout of the vecs in the texinfo_t struct. found in a recent
      commit in quakeforge git repo.

2012-11-22 (SVN):
    * utils, qbsp: added command line option "-oldhullsize" to replicate
      the old h2utils/qbsp behavior of using the original hexen2 sizes
      for hulls #5 and #6, not H2MP ones, if so needed. also removed the
      unix fork() and windows CreateProcess() code for now.

2012-11-20 (SVN):
    * [gl_]model.h: synced h2 and hw versions and moved under h2shared.
      added info about the hw EF_BRIGHTFIELD and EF_ONFIRE brokenness.
    * server/model.h: synced h2 and hw versions, renamed to sv_model.h
      and moved under h2shared.
    * server/model.c: renamed to sv_model.c.
    * updated version date stamp to 2012-11-20.
    * gamecode/hc, constant.hc: added info about the EF_BRIGHTFIELD and
      EF_ONFIRE brokenness to hexenworld and siege versions.

2012-11-15 (SVN):
    * pr_edict.c: ED_PrintEdict_f, ED_PrintEdicts and ED_Count require
      an active server to print any infos. ED_PrintEdict_f can not work
      with a negative argument.
    * updated version date stamp to 2012-11-15.

2012-11-11 (SVN):
    * [gl_]model.c (Mod_LoadTexinfo): although the end result in memory
      doesn't change, load the texinfo in a way consistent with the
      layout of the vecs in the mtexinfo_t struct. from a recent commit
      in tyr-quake git repo.
    * updated version date stamp to 2012-11-11.

2012-11-10 (SVN):
    * engine/hexen2/sv_user.c: new quake2-style noclip movement. from
      fitzquake, configured by cvar sv_altnoclip, enabled by default.)
    * updated version date stamp to 2012-11-10.

2012-11-08 (SVN):
    * [gl_]screen.c (SCR_Init): initialize con_forcedup as true, because
      we're just initialized and not connected.
    * updated version date stamp to 2012-11-08.

2012-11-07 (SVN):
    * better parse for opengl extensions list (from quakeforge.)
    * updated version date stamp to 2012-11-07.

2012-11-05 (SVN):
    * changed keydest_t from enum to int with legal values defined as
      bit shifts. added key_menubind as a new dest. the key bind menu
      now sets key_dest to key_menubind so that it properly changes the
      gamekey property.

2012-11-05 (SVN):
    * removed the Key_UpdateDest() and IN_UpdateForKeydest() stuff, let
      con_forcedup do its thing in Con_ToggleConsole_f(). added the new
      Key_IsGameKey(), Key_SetDest() and Key_GetDest() functions to the
      Key_ layer, made key_dest static to keys.c. Made Key_SetDest() to
      not only set key_dest, but also to clear the key states whenever
      the gamekey property changes.
    * updated version date stamp to 2012-11-05.

2012-10-31 (SVN):
    * engine: add ImageHasSafeExceptionHandlers=false for h2-mgl builds
      in Visual Studio 2010 projects, because mglfxi.lib is built using
      a very old msvc version: importing the project files and building
      with VS2012 fails linkage with the "mglfxi.lib(MGLFX.dll) : error
      LNK2026: module unsafe for SAFESEH image" message. also added the
      same ImageHasSafeExceptionHandlers=false setting to the x86-debug
      builds of other engine targets in the VS2010 project files, which
      eliminates "LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH'
      specification" linker warning.
    * h2patch (h2patch3.rc): changed winuser.h include to winresrc.h
      which eliminates some dumb resource compiler warnings from VS2012.

2012-10-23 (SVN):
    * renamed Key_ForceDest to Key_UpdateForDest. added M_Menu_Main_f()
      prototype to menu.h. changed ca_connected checks to ca_active in
      console.c and keys.c, for a possible merge of h2 and h2w versions
      later sometime. updated version date stamp to 2012-10-23.

2012-10-21 (SVN):
    * r_part.c: fixed pointfile loading.

2012-10-21 (SVN):
    * d_local.h, d_vars.c (d_zrowbytes, d_zwidth): changed from unsigned
      to signed int. these were missed in rev.4581 from 2012-03-03.

2012-10-21 (SVN):
    * console.c: made hexen2 version of Con_DrawNotify() to distinguish
      say and say_team like hexenworld does, which adds the necessity of
      horizontal scrolling. some cleanups in both hexen2 and hexenworld
      versions.
    * keys.c: minor cleanup.
    * updated version date stamp to 2012-10-21.

2012-10-20 (SVN):
    * added IN_UpdateForKeydest() as a new helper who does stuff if the
      key_dest changes matter to the keyboard driver, e.g. sending KP_
      key decisions, or SDL unicode stuff. making it a separate helper
      eliminates the per-key event check on windows in MapKey(). we run
      it every frame either before Sys_SendKeyEvents(), or from within
      Key_ForceDest() for now. IN_UpdateForKeydest() an empty function
      for dos and svgalib targets.

2012-10-20 (SVN):
    * cl_main.c (CL_Disconnect): call Key_EndChat() to not get stuck in
      chat mode.
    * keys.c (Key_ForceDest): now that key_message is guaranteed to be
      set only in game mode, removed its cases. also changed the return
      statements to break for consistency.

2012-10-20 (SVN):
    * made chat_buffer[] and chat_bufferlen static to keys.c. console.c
      will now use the new Key_GetChatBuffer() and Key_GetChatMsgLen()
      accessor functions. renamed the team_message global of hexen2 to
      chat_team as in hexenworld. added Key_EndChat() as a new helper.

2012-10-20 (SVN):
    * vid_dos.h (vmode_t): changed width, height and rowbytes members to
      signed int.

2012-10-20 (SVN):
    * console.c (Con_MessageMode_f, Con_MessageMode2_f): do not set the
      messagemode when not really connected.

2012-10-20 (SVN):
    * allow 8x fsaa in the menu system and the gtk launcher.
    * updated version date stamp to 2012-10-20.

2012-10-15 (SVN):
    * fixed hexenworld after r4989. updated date stamp to 2012-10-15.

2012-10-15 (SVN):
    * Another approach at fixing key_dest.

2012-10-11 (SVN):
    * gl_vidnt.c, vid_mgl4.c, vid_win.c (MapKey): adjust gamekey after
      r4987.
    * updated version date stamp to 2012-10-11.

2012-10-11 (SVN):
    * revert r4374, some keyboard input tweaks (from quakespasm).

2012-10-10 (SVN):
    * moved cfg_unbindall and its registration to cl_main.c. moved the
      config.cfg write of unbindall to Key_WriteBindings(). documented
      the new behavior in the release notes.
    * updated version date stamp to 2012-10-10.

2012-10-10 (SVN):
    * hexen2/host.c, hexenworld/client/cl_main.c: unbindall before
      loading stored bindings (configurable by new cvar cfg_unbindall,
      enabled by default.)
    * hexenworld/client/keys.c (Key_WriteBindings): quote "key".

2012-10-04 (SVN):
    * sys_amiga.c: fixed Sys_GetClipboardData(), text pasting now works.
    * updated version date stamp to 2012-10-04.

2012-10-03 (SVN):
    * snd_sun.c: include ioctl.h before audioio.h. changed C++ comments
      into C-style comments.
    * snd_alsa.c: changed C++ comments into C-style comments.

2012-10-01 (SVN):
    * client.hc, invntory.hc: artifact_active/artifact_low setting and
      clearing of ART_TOMEOFPOWER, ART_INVINCIBILITY, ART_INVISIBILITY,
      and ART_HASTE are now done simply by using BITSET and BITCLR ops.

2012-10-01 (SVN):
    * h2/cube.hc (cube_find_target): fixed parens in the if construct.
      don't choose a monster whose controller is the same as the cube's
      controller, i.e. the player's summoned imp. assign self as the
      cube's controller in UseCubeOfForce(). fixes backported from the
      mission pack version of the cube hcode.
    * updated version date stamp to 2012-10-01.

2012-09-30 (SVN):
    * sys_amiga.c (Sys_GetClipboardData): types of readbytes and error
      return values must be signed not unsigned. ReadChunkBytes() must
      be called with one byte less than the read buffer array size as
      numbytes for the nul terminator. do nul terminate the read buffer
      when ReadChunkBytes() reports success. read buffer array size is
      now 256 (MAXCMDLINE), instead of 1024.

2012-09-30 (SVN):
    * keys.c (Key_Console): some tidy-up. made Ctrl-c key combination to
      abort the line (from Steven/Quakespasm rev. 99.)
    * updated version date stamp to 2012-09-30.

2012-09-29 (SVN):
    * in_sdl.c (IN_SendKeyEvents): fixed major thinko in SDLK_WORLD_xx
      change from yesterday's r4973.
    * updated version date stamp to 2012-09-29.

2012-09-28 (SVN):
    * keys.c: added K_COMMAND as a new key. added Cmd+V as a Mac special
      case for paste request.
    * keys.h: added K_COMMAND as a new key (170 for now).
    * in_sdl.c (IN_SendKeyEvents): translate SDLK_LMETA/SDLK_RMETA as
      K_COMMAND. ignore unhandled SDLK_WORLD_* international characters.

2012-09-28 (SVN):
    * Mac OS X: text pasting support from OS clipboard to console. also
      updated the error dialog window procedure.
    * updated version date stamp to 2012-09-28.

2012-09-27 (SVN):
    * in_sdl.c (IN_SendKeyEvents): fix control-character handling. minor
      cleanup. from Sander van Dijk.

2012-09-27 (SVN):
    * keys.c: fixes to clipboard text paste code. also moved it into new
      PasteToConsole() helper procedure.

2012-09-27 (SVN):
    * updated version date stamp to 2012-09-27.

2012-09-22 (SVN):
    * host_cmd.c (RestoreClients): For clients_mode 3, do not apply any
      time diffs. mode 3 is only in response to the single player game
     "restart restore" command issued by progs.dat::client.hc::respawn()
      function.  No level change, just respawning in the same map with
      the same playtime from when clients.gip was saved, therefore there
      CANNOT be a time_diff there.  Fixes bug #2176023, a.k.a. deathbug.
    * updated version date stamp to 2012-09-22. updated docs/BUGS.

2012-09-19 (SVN):
    * h2ded, dos: don't include the serial driver
    * oslibs/dos: recompiled watt32 library without USE_TCP_MD5 option.
      currently, watt32 doesn't even check with the result returned by
      check_md5_signature(), therefore it was only an additional useless
      burden.

2012-09-19 (SVN):
    * h2patch: remove the md5 dependency,use the adler32 routine already
      present in xdelta3. do not recalculate and compare the checksum if
      xdelta3 reports success for a patch. when an already patched file
      is encountered, do not error out if its checksum doesn't match but
      only emit a warning. in dos builds, use XD3_POSIX for file i/o.
    * h2launcher: apply the relevant changes from h2patch.
    * libs/xdelta3: add new xd3_calc_adler32() helper to xdelta3-main.h.
      removed the unused file flags.
    * libs/md5: move, no longer needed.
    * updated version date stamp to 2012-09-19.

2012-09-17 (SVN):
    * utils, hcc: corrected the -old option description.

2012-09-17 (SVN):
    * amiga, Sys_FindFirstFile(): unlock the lock created for path in
      Sys_FindClose().
    * updated version date stamp to 2012-09-17.

2012-09-16 (SVN):
    * oslibs: recompiled mac os x codec libraries.

2012-09-16 (SVN):
    * d_sprite.c (D_DrawSprite): fix (work around) bug #3562290: when
      R_SetupAndDrawSprite() sets pout->v to a value <= -1, ymin might
      become negative and that makes the screen pointer pz to point to
      an invalid address in D_SpriteDrawTransSpans(), thus leading to
      an access violation. this sometimes happens with sprites rendered
      very close to the camera origin such as the teleporter puff. we
      just return without drawing anything when ymin is negative, from
      now on.
    * updated version date stamp to 2012-09-16.

2012-09-16 (SVN):
    * updated a web link in the README file.

2012-09-16 (SVN):
    * h2patch, launcher/apply_patch: typo fixes.

2012-09-15 (SVN):
    * pr_edict.c: added compile time asserts so as to make sure that the
      globalvars structures have correct member offsets.

2012-09-15 (SVN):
    * updated version date stamp to 2012-09-15.

2012-09-15 (SVN):
    * added pakfile information for the ultra-ancient hw 0.09 version

2012-09-15 (SVN):
    * added progs information for the ultra-ancient hw 0.09 version

2012-09-15 (SVN):
    * hw/, siege/world.hc (GetNextMap): reverted r4945 (line 592) change

2012-09-15 (SVN):
    * updated release notes

2012-09-12 (SVN):
    * breakabl.hc, client.hc, doors.hc, subs.hc, weapons.hc, world.hc:
      replaced several while(1){} and do{}while(1) loops by loop{} which
      is shorter. hcc supports this feature, so let's just use it.

2012-09-12 (SVN):
    * hw/, siege/world.hc (GetNextMap): start searching strings.txt at
      line 592 (STR_GOTDEEPFREEZE), not at line 0. that particular line
      is present in hexenworld versions of strings.txt as standart.

2012-09-12 (SVN):
    * weapons.hc (CycleWeaponCommand,CycleWeaponReverseCommand): removed
      an unnecessary local variable and changed the loop into a while(1)
      loop and simplified a bit. made them to return in in an impossible
      case of weapon not being one of IT_WEAPON1..4. changed the portals
      version to use switch statements.

2012-09-12 (SVN):
    * h2/items.hc, portals/items.hc (weapon_touch): IT_WEAPON4 must be
      OR'ed to new items, not added to. fix copied over from hexenworld
      version.

2012-09-12 (SVN):
    * xcode project file: replaced all snd_mpg123 left-overs by snd_mp3.

2012-09-11 (SVN):
    * gamecode,h2/items.hc (weapon_touch): commented out other.oldweapon
      assignment to other.weapon. it was causing weapon switching to get
      stuck if several weapons were picked up too fast. see:
      http://sourceforge.net/projects/uhexen2/forums/forum/425206/topic/5635367
    * gamecode, h2/weapons.hc (W_DeselectWeapon): added else cases
      for self.oldweapon==IT_WEAPON2 && self.oldweapon!=IT_WEAPON3, and
      for self.oldweapon==IT_WEAPON3 && self.oldweapon!=IT_WEAPON2 for
      necromancer class, simply calling W_SetCurrentAmmo() same as the
      portals and hw versions do.

2012-09-11 (SVN):
    * gamecode, *.hc: commented out several dprints, several whitespace
      adjustments.

2012-09-11 (SVN):
    * gamecode, setstaff.hc (scarab_die): fixed a typo in chain removal
      code. the bug was at least as old as v0.42 of hexen2. noticed the
      fix in hexenworld.
    * bumped gamecode version number to 1.27.
    * bumped versions for hexen2 engine to 1.27 and hexenworld to 0.27.
    * updated version date stamp to 2012-05-11.

2012-09-11 (SVN):
    * gamecode: renamed the txt directory to res. adjusted the rpm spec.

2012-09-10 (SVN):
    * utils, hcc: Added "-old" command line option, which restores the
      old hcc behavior of letting the STR_ constants and precache_file()
      calls going into progs.dat, if so needed.

2012-09-09 (SVN):
    * quakefs: added pak4.pak from hexenworld v0.11 among the known pak
      files, accepted it as valid hexenworld installation. (ancient but,
      meh...)
    * updated version date stamp to 2012-09-09.

2012-09-09 (SVN):
    * xcode project file: added LSMinimumSystemVersionByArchitecture to
      Info.plist to require 10.4 for i386 and ppc, and 10.6 for x86_64,
      as recommended by SDL. it will prevent unwanted running of x86_64
      on 10.5.
    * xcode project file: updated for codecs linkage.

2012-09-09 (SVN):
    * hexen2 and hexenworld OSX clients: require 10.6 for amd64 builds,
      not 10.5 (SDL's requirement). needed adding bundle1.o to linkage
      for dyld_stub_binding_helper.

2012-09-09 (SVN):
    * utils/dhcc: added back information dump facility, with help text
      added to -help output. newly added switches: -fields, -functions,
      -globaldefs, -prglobals, -statements and, -strings.

2012-09-06 (SVN):
    * sdl_inc.h: SDL at least 1.2.9 is enough for Mac OS X ppc builds.

2012-09-06 (SVN):
    * several minor makefile edits.

2012-09-05 (SVN):
    * net_sys.h: identify Mac OS X SDKs older than 10.3 and define the
      missing socklen_t type. (for completeness sake...)

2012-09-05 (SVN):
    * sdl_inc.h: require SDL at least 1.2.14 for Mac OS X

2012-09-05 (SVN):
    * utils/common/threads.c: more GetNumCPUS() fixes for OSX and BSD.
      also made sure that it returns only 1 on ancient windows versions.

2012-09-05 (SVN):
    * eliminated spaces from macosx binaries names.
    * updated the version date stamp to 2012-09-05.

2012-09-04 (SVN):
    * added explicit int casts when printing GLint values, because some
      older SDKs define GLint as long instead of int, e.g. Mac OSX SDKs
      10.4 and older. removed static versions of osx codec import libs.
      renamed osx codec dylib import lib directory to be lib.

2012-09-03 (SVN):
    * updated the version date stamp to 2012-09-03.

2012-09-03 (SVN):
    * Makefiles: -mmacosx-version-min also needs to be among the linker
      flags for darwin x86_64 builds. adjusted accordingly.
    * Makefiles: cleaned up for darwin (osx) builds. other tidy-ups.
    * build_cross_osx.sh: added darwin cross-compile scripts all over.

2012-09-02 (SVN):
    * utils/common/threads.c: fixed OSX version of Thread_GetNumCPUS().

2012-08-31 (SVN):
    * engine/h2shared/quakefs.c, launcher/games.c: added details about
      the known hexen2 pak files. minor clean-ups.
    * engine/h2shared/h2config.h: undefine H2MP for demo-specific builds
    * updated version date stamp to 2012-08-31.

2012-08-29 (SVN):
    * engine/hexen2: move Makefile.sv under the server subdirectory and
      add missing osx flags. adjust the existing cross-compile scripts.
      add new cross-compile scripts under the server subdirectory.
    * engine/hexenworld/server: add missing osx flags to the Makefile.
      add new osx cross-compile script.
    * rpm spec file: adjust after moved Makefile.sv.

2012-08-29 (SVN):
    * Makefiles for jsh2color, light, vis: store the pthread flags in
      the PTHREAD_CFLAGS and PTHREAD_LIBS variables so that they can be
      overriden using the make command line.

2012-08-27 (SVN):
    * added new d_polysa.inc asm header where a new SPAN_SIZE macro is
      defined based on MAXHEIGHT and CACHE_SIZE macros. included the new
      header in d_polys*.asm and replaced the hard coded span sizes with
      the new macro. this is needed if we ever want to change MAXHEIGHT.
    * updated version date stamp to 2012-08-27.

2012-08-21 (SVN):
    * libs/xdelta3/xdelta3.h: fix uint64_t length modifier for macosx.

2012-08-18 (SVN):
    * draw.c: Disabled the stupid rotating skull animation during file
      i/o, unless DRAW_LOADINGSKULL is defined.
    * updated version date stamp to 2012-08-18.

2012-08-16 (SVN):
    * updated version date stamp to 2012-08-16.

2012-08-16 (SVN):
    * screen.c: Disabled the progress bars drawing during level load in
      software renderer, too: at least the macosx/sdl-1.2.14 combination
      is reported to have excessively long load times due to progress
      bars. Added a short version of SCR_DrawLoading() which uses the
      new Draw_CacheLoadingPic() and doesn't draw the progress bars when
      DRAW_PROGRESSBARS is not defined.
    * vid_sdl.c, vid_mgl4.c, vid_win.c, vid_dos.c, vid_svgalib.c: Made
      D_ShowLoadingSize() a stub function when DRAW_PROGRESSBARS is not
      defined.
    * draw.c: Added Draw_CacheLoadingPic(), which is essentially the
      same as Draw_CachePic() but only loads gfx/menu/loading.lmp and
      deletes the progress bar pixels from it.

2012-08-16 (SVN):
    * vid_sdl.c, vid_mgl4.c, vid_win.c (D_ShowLoadingSize): block
      unnecessary redraws of progress bars. (from gl_vidsdl.c/rev.4532)

2012-08-15 (SVN):
    * utils/jsh2color/tex.c: merged to jscolor.c. minor cleanups.
      (ParseDefFile): fixed lazy declaration of the FILE pointer.
      check sscanf success properly.
      (FindTexlightColorExt): start the search at index 0, not 1.
      accept a pointer to a tex_col_list as the last param, not
      a tex_col_list structure itself.

2012-08-12 (SVN):
    * oslibs/dos: recompile codec libs by removing unnecessary NULL ptr
      checks (since we are using Z_Malloc() and friends, alloc failures
      are Sys_Error(), and the returned memory is zero filled, as well).

2012-08-10 (SVN):
    * docs/COMPILE: updated for osx x86_64 cross-toolchain instructions.

2012-08-10 (SVN):
    * midi_osx.c: use MusicSequenceLoadSMFData() in ppc builds, instead
      of MusicSequenceLoadSMFDataWithFlags(). the former works back to
      10.2, whereas the latter requires 10.3 and newer. we already call
      MusicSequenceLoadSMFDataWithFlags() with zero as the flags value,
      which makes it equivalent to calling MusicSequenceLoadSMFData().

2012-08-10 (SVN):
    * midi_osx.c: use AUGraphAddNode() also with 10.5. we were using it
      only with 10.6+ because of struct AudioComponentDescription being
      only in SDK 10.6+. AudioComponentDescription is actually the same
      as ComponentDescription with 20 bytes of size and same offsets of
      all members, therefore, is binary compatible, so we simply define
      AudioComponentDescription as ComponentDescription when compiling
      against 10.5 SDK.
    * midi_mac.c: include Carbon/Carbon.h instead of Sound.h so that it
      compiles. added #error directive against 64 bit compile attempts.
    * updated version date stamp to 2012-08-10.

2012-08-08 (SVN):
    * midi_osx.c: include CoreServices/CoreServices.h to fix compilation
      against 10.6 SDK.

2012-08-08 (SVN):
    * oslibs: recompiled x86_64 versions of osx codecs against 10.6 SDK
      using a gcc-5666.3/cctools-806 based cross-toolchain as described
      at https://github.com/Tatsh/xchain/.

2012-08-02 (SVN):
    * oslibs: added dylib versions of libmad and ogg/vorbis for macosx,
      fat binaries for ppc, x86 and x86_64. removed the ppc64 versions
      of the static libs.

2012-07-24 (SVN):
    * oslibs: added ppc64 versions of libmad and ogg/vorbis static libs
      for macosx. (untested for now)

2012-07-23 (SVN):
    * xcode project file: enabled the mp3, vorbis and wav codecs, added
      the codecd header path to HEADER_SEARCH_PATHS. the link libraries
      still need adding.

2012-07-23 (SVN):
    * updated version date stamp to 2012-07-23.
    * updated documentation.

2012-07-23 (SVN):
    * macosx: require 10.5 for 64 bit builds.

2012-07-23 (SVN):
    * macosx: enabled the mp3 and ogg/vorbis music playback.

2012-07-23 (SVN):
    * oslibs: added libmad and ogg/vorbis headers and static libraries
      for macosx.

2012-07-22 (SVN):
    * updated version date stamp to 2012-07-22.
    * updated documentation.

2012-07-22 (SVN):
    * Separated common unix and darwin sections in the makefiles.

2012-07-22 (SVN):
    * Fixed OSX gl linkage when we aren't dynamically linking to opengl
      functions at runtime. No need for -lm either.

2012-07-22 (SVN):
    * Added support for building the OSX versions usin gthe makefiles.
      Do not rely on sdl-config on OSX Framework builds and define new
      SDL_FRAMEWORK and NO_SDL_CONFIG preprocessor macros to indicate
      that and include SDL.h with the "SDL" subdirectory name included.

2012-07-22 (SVN):
    * Added new OSX midi driver based on SDL_mixer using CoreServices,
      added it to build and removed the old QuickTime code from build.
      As a bonus, this eliminates our dependency to Carbon stuff.

2012-07-22 (SVN):
    * Moved SDLMain.[m|h] from MacOSX subdir to under h2shared. Added
      SDLMain.o to SYSOBJ_SYS in the makefiles for (gl)h2 and (gl)hw.

2012-07-19 (SVN):
    * utils (LoadFile): don't use SafeMalloc() to avoid an unnecessary
      memset. reverted to using malloc() directly.

2012-07-19 (SVN):
    * utils, jsh2colour: removed unused GetFileSpace() and file globals.
      removed unnecessary check for extfile existence during arguments
      parsing, because ParseDefFile() already errors out if the file is
      not found.

2012-07-18 (SVN):
    * cl_demo.c (CL_PlayDemo_f): set key_dest to key_game only when the
      demo file is successfully opened.

2012-07-18 (SVN):
    * cl_demo.c: for a command like "record demoname map [track]", don't
      continue if the map cannot be started. do not continue if the demo
      file cannot be opened for the timedemo command.

2012-07-18 (SVN):
    * cl_demo.c (CL_PlayDemo_f): don't use fscanf() to read forcetrack:
      even though a *.dem file is a binary, cls.forcetrack is "printed"
      at the very start as a decimal number followed by a '\n'. a space
      character e.g. 0x20 (' ') following the '\n' makes fscanf to skip
      that byte too and screws up further reads. we now manually parse
      the forcetrack, like q1 code does, and also verify that the '\n'
      byte appears among the very first 12 bytes of the file.
    * updated version date stamp to 2012-07-18.

2012-07-17 (SVN):
    * utils, dhcc: add new flowinfo_t structure. instead of abusing the
      op member of the statement, store the if and do counts in the new
      flowinfo structure. this is better, because the old code assumed
      that the opcodes numbers could not go past 99, which is incorrect
      with the portals mission pack and h2w where switch statements are
      added and the highest opcode is 104. dhcc now properly prints the
      error notes for them (because it cannot decompile them.)

2012-07-17 (SVN):
    * utils, dhcc: replaced opcode magic numbers with enumerated value
      names at several places.

2012-07-17 (SVN):
    * utils, dhcc: added -dec cmdline switch, as an alternative to -dcc.

2012-07-16 (SVN):
    * cl_main.c (CL_Disconnect): set cl.intermission to 0. fixes a minor
      intermissions glitch which is almost impossible to hit in hexen2.
      See Baker's post: http://forums.inside3d.com/viewtopic.php?t=4944

2012-07-16 (SVN):
    * docs: minor update.

2012-07-16 (SVN):
    * utils, threads: Made numthreads static. Changed InitThreads(), so
      that the caller passes wanted number of threads and needed stack
      size. A negative required threads number will autodetect. Default
      without a -threads # command line option is single-threaded.
    * updated version date stamp to 2012-07-16.

2012-07-16 (SVN):
    * split maputils to four directories, qbsp, light, vis and bspinfo.

2012-07-14 (SVN):
    * utils (genmodel): better handling of command line switches.

2012-07-14 (SVN):
    * utils (dhcc, hcc, genmodel, jsh2color, light, qbsp, qfiles, vis):
      correctly handle command line options requiring additional args.

2012-07-14 (SVN):
    * utils, threads.c: added Thread_GetNumCPUS() based on a nice entry
      at stackoverflow.com. moved the MAX_THREADS macro to threads.h.

2012-07-14 (SVN):
    * utils, jsh2colour: removed excessive stdout prints. renamed the
      thread procedures. removed lightdatasize computation from the end
      of LightWorld(). Moved CloseDefFile() call before MakeLITFile().
    * utils, vis: removed some commented out code. renamed min variable
      to minsee in GetNextPortal().

2012-07-14 (SVN):
    * utils: cleaned up the threads mess. windows no longer needs to be
      __alpha for multi-threading. added pthread support for unix. added
      irix sprocsp support based on code from GtkRadiant. windows tls
      code in vis is removed. multi-threads are available for light, vis
      and jsh2colour on windows and unix. further cleanups will follow.

2012-07-14 (SVN):
    * scripts: added config.guess and config.sub from savannah git repo.
      added ax_pthread.m4 from the autoconf-archive git repo. added new
      pthread.sh script based on the SDL library's configury.

2012-07-14 (SVN):
    * updated version date stamp to 2012-07-14.

2012-07-14 (SVN):
    * utils, jsh2colour: several cleanups: the -lit and -force command
      line switches are now ignored. removed several global varss which
      have no real meaning in the tool. removed some unused functions.
      prepared the code so that it can be run multithreaded. incremented
      its version to 1.2.5.

2012-07-11 (SVN):
    * utils: Replaced rest of the malloc() calls by SafeMalloc() in all
      of the utils.

2012-07-11 (SVN):
    * utils: Added new helper SafeStrdup(). Replaced all strdup() calls
      by SafeStrdup(). Replaced all malloc calls in [d]hcc and texutils
      by SafeMalloc() and SafeStrdup(). Reverted previous _strdup patch.

2012-07-10 (SVN):
    * utils: Define strdup as _strdup after all headers are included,
      M$ deprecated it.

2012-07-08 (SVN):
    * Updated documentation for supported platforms and separate ports.

2012-07-07 (SVN):
    * arch_def.h: Added GNU/Hurd defs.

2012-07-07 (SVN):
    * gl_vidnt.c, gl_vidsdl.c: Moved the glColorTableEXT definitions to
      gl_func.h.

2012-07-07 (SVN):
    * updated version date stamp to 2012-07-07.

2012-07-07 (SVN):
    * net_sys.h: GNU/Hurd has BSD-style struct sockaddr too (reported
      by Svante Signell in debian bug #657793.)

2012-07-06 (SVN):
    * Added -noixemul to CPPFLAGS for MorphOS in all of the Makefiles.
      For h2patch, added new Makefile.amiga for AmigaOS and MorphOS
      builds.
    * updated version date stamp to 2012-07-06.

2012-07-05 (SVN):
    * h2/windows: Removed hooks for QHOST, which is (was) a proprietery
      server management tool by Xoanan.

2012-07-05 (SVN):
    * Incremented engine version to 1.5.5 and datestamp to 2012-07-05 in
      the development tree.

2012-07-01 (1.5.4-final / SVN):
    * SV_Gamedir, SV_Gamedir_f, FS_Gamedir: Reverted bad gamedir checks
      using filenames.h macros and went back to explicitly searching the
      unwanted slash, backslash and colon characters. In FS_Gamedir, use
      Con_Printf and not Sys_Printf as it can be called when the game is
      alive, at least for hexenworld. In SV_BeginDownload_f, added names
      with a leading backslash to the list of rejected names.
    * updated version date stamp to 2012-07-01.

2012-06-30 (SVN):
    * updated the ReleaseNotes file.

2012-06-30 (SVN):
    * hexen2, cl_effect.c (CL_ParseEffect): ent->abslight and ent->scale
      are of int type, not float, therefore they must be not be assigned
      normalized floating point values but integers, another old HexenII
      bug caught by clang-3.1. Changed ent->abslight assignment from 0.2
      to 51 for CE_ACID_MUZZFL, 1 to 255 for CE_ONFIRE, CE_FLAMESTREAM
      and CE_ACID_EXPL, 0.5 to 127 for CE_GHOST and chunk THINGTYPE_ICE.
    * hexenworld, cl_effect.c (CL_ParseEffect,CL_UpdateEffects): Same as
      hexen2 counterpart. In addition, changed ent->abslight assignment
      from 0.5 to 127 for CE_HWMISSILESTAR and CE_HWEIDOLONSTAR, changed
      ent->scale assignments from 0.3 to 30 and multiplied the other non
      constant floating point values by 100 for the same two enums.
    * effects.h: Minor whitespace tidyup.

2012-06-30 (SVN):
    * snd_oss.c: Coding style cleanup. Support for AFMT_S8. Reduced the
      sound device open retry sleep time to 0.3s and changed the sleep()
      call into usleep(). Test the mmap success only against MAP_FAILED,
      and not against NULL.
    * snd_alsa.c: Coding style cleanup.

2012-06-27 (SVN):
    * h2patch: Removed code checking for free disk space in DOS builds.

2012-06-27 (SVN):
    * utils, dcc (Init_Dcc), hcc (InitData): Copy over def_ret.ofs and
      def_parms[x].ofs initialization stuff from InitData (), just in
      case.. Initialize the pr_globals pointer in InitData ().

2012-06-27 (SVN):
    * utils, dcc: Added new Get_Immediate() and Clear_Immediates(), made
      Make_Immediate() to only allocate new values. Commented out offset
      overrun debug messages in them. Added -name command line argument
      either for specifying a name other than progs.src for the compiler
      like hcc itself or for specifying a name other than progs.dat for
      the decompiler.

2012-06-27 (SVN):
    * updated the ReleaseNotes file.

2012-06-27 (SVN):
    * utils, dcc: Isolated all decompiler stuff to dcc.c. Changed the
      decompiler to not copy the progs data but use pointers to loaded
      file instead. Changed the decompiler to not use static buffers but
      dynamically allocate memory instead: fixes decompilation of rival
      kingdoms progs. Changed the compiler-side MAX_STRINGS, MAX_GLOBALS
      and MAX_STATEMENTS macros to hcc values. Removed the MAX_PARMS and
      OFS_* macros from qcc.h which are already defined in pr_comp.h to
      the same values.

2012-06-27 (SVN):
    * utils, hcc: Minor cleanups.
    * updated version date stamp to 2012-06-27.

2012-06-25 (SVN):
    * in_sdl.c: Fixed after r4803 so that SDL_EnableUNICODE() is called
      correctly. Makes SHIFT keys to work properly on the console again.
      Also made K_KP_5 to send '5' when not in game mode, regardless of
      the numlock status.

2012-06-25 (SVN):
    * keys.c: Prevented KP_NUMLOCK from binding. Minor cleanups.

2012-06-24 (SVN):
    * keys.c (Key_ClearStates): Instead of clearing all key's down state
      and repeat count, run KeyEvent(k,false) keys in down state, which
      will already clear those states for them. This also helps getting
      rid of several actions bound to keypad keys.
    * gl_vidsdl.c, vid_sdl.c, vid_mgl4.c, vid_win.c (ClearAllStates):
      Removed code triggering every key with a release event, because we
      just changed Key_ClearStates() to do that for the necessary keys.

2012-06-24 (SVN):
    * cl_input.c: Allow KeyUp() for in_crouch and in_infoplaque even if
      key_dest!=key_game so that they don't get stuck.

2012-06-24 (SVN):
    * gl_vidnt.c, vid_mgl4.c, vid_win.c: Make the keypad send separate
      key event, but only in-game. (ported in_sdl.c changes to windows.)
    * in_sdl.c: Minor cleanup.

2012-06-21 (SVN):
    * utils, Q_getwd: Added trailing_dirsep parameter to the function
      and appended the trailing directory separator character only if
      requested so. Made all its callers except for lmp2pcx to request
      a trailing directory separator.

2012-06-21 (SVN):
    * updated the ReleaseNotes file.
    * updated version date stamp to 2012-06-21.

2012-06-21 (SVN):
    * Make the keypad send separate key event, but only in-game. (Only
      for the SDL port for now.)

2012-06-20 (SVN):
    * utils/texutils/lmp2pcx/lmp2pcx.c: Don't pass "." to Q_FindFirst()
      as the current directory, pass the value returned by Q_getwd(),
      instead. Also use DIR_SEPARATOR_CHAR when building file names.

2012-06-20 (SVN):
    * quakefs.c, quakefs.h: Removed fs_filepath global.
    * midi_mac.c (MIDI_Play): Now that fs_filepath is no more, changed
      it to always extract the midi file.

2012-06-20 (SVN):
    * debuglog.c: Use DIR_SEPARATOR_STR.

2012-06-20 (SVN):
    * Added RISCOS defines to arch_def.h and net_sys.h, thanks to Chris
      Gransden. Added Chris Gransden under AUTHORS:contributors:coding.

2012-06-20 (SVN):
    * filenames.h: Added new macro DIR_SEPARATOR_STR, which is simply a
      string version of DIR_SEPARATOR_CHAR.

2012-06-20 (SVN):
    * utils/util_io.c (Q_getwd, PLATFORM_AMIGA): Don't return PROGDIR:

2012-06-20 (SVN):
    * sys_amiga.c (Sys_CopyFile): Restore the copied file's timestamp.

2012-06-19 (SVN):
    * h2patch.c: Use DIR_SEPARATOR_CHAR from filenames.h when building
      file names.

2012-06-19 (SVN):
    * filenames.h: define DIR_SEPARATOR_CHAR as '/' for djgpp.

2012-06-19 (SVN):
    * Moved sun sys/sockio.h include from net_udp.c to net_sys.h

2012-06-19 (SVN):
    * gl_vidnt.c: Made hInstGL static.

2012-06-19 (SVN):
    * rpm spec file: Updated, changed --without gtk2 to --with gtk1.

2012-06-19 (SVN):
    * launcher/gtk_ui.c: Use a format string with gtk_message_dialog_new

2012-06-18 (SVN):
    * snd_ahi.c: In case of failure, make sure that shm is NULL before
      returning. Also set shm and its buffer to NULL in shutdown().

2012-06-18 (SVN):
    * gl_vidnt.c: Fixed dynamic loading of glGetTexParameterfv().

2012-06-18 (SVN):
    * snd_vorbis.c: Set initialization success for MorphOS.

2012-06-18 (SVN):
    * Makefiles: Commented out GL_LINK setting for AROS, not needed

2012-06-18 (SVN):
    * opengl: Dynamically load glGetTexParameterfv at runtime and skip
      the anisotropy driver-lock status if loading fails.

2012-06-18 (SVN):
    * cd_sdl.c, gl_vidsdl.c: Disabled the putenv() calls on MorphOS.

2012-06-18 (SVN):
    * Makefiles: Removed the -fexpensive-optimizations flag, gcc seems
      to enable it at -O2 and higher. Removed the -falign-* flags, which
      aren't really necessary. Removed the OPT_EXTRA makefile option,
      moved the -fomit-frame-pointer flag among main optimization flags.
      Made the MorphOS builds to link to opengl library at compile time
      i.e. set LINK_GL_LIBS to yes. Defined GL_LINK as -lGL for MorphOS
      and AROS builds.
    * oslibs/dos: Recompiled libmad.a and libwatt.a without adding the
      -falign-* flags.

2012-06-18 (SVN):
    * gl_vidsdl.c: Replaced setenv() calls with putenv().

2012-06-18 (SVN):
    * engine (all), sys_amiga.c: Use 2 MB stack for MorphOS.

2012-06-18 (SVN):
    * Makefiles: Added support for MorphOS.

2012-06-17 (SVN):
    * sys_amiga.c, cmdlib.c: Remove unnecessary devices/timer.h include.
      Fix the TimerBase type so that it works on other Amiga variants.
      Use tv_secs and tv_micro to access struct timeval members instead
      of tv_sec and tv_usec, for the same reasons.

2012-06-17 (SVN):
    * snd_vorbis.c: Adjusted to support MorphOS.

2012-06-17 (SVN):
    * gl_rsurf.c (DrawTextureChains): Remove an extra semicolon from the
      end of a for construct. An obvious old typo found by clang-3.1.

2012-06-17 (SVN):
    * oslibs/windows/scitech/x86/libmglfx.def: commented out all of the
      opengl related exports to reduce the generated import library size

2012-06-16 (SVN):
    * Added missing GPL headers and copyright notes to all *.c, *.h and
      *.asm files.

2012-06-16 (SVN):
    * snd_mpg123.c: We need MPG123_API_VERSION at least 24, not 25. v24
      is the api version when mpg123 introduced handle-based custom I/O
      which we do rely on.

2012-06-15 (SVN):
    * quakefs.c: A lot of tidy-up: Moved Raven pak files check from
      FS_LoadPackFile() to new FS_CheckKnownPAKS() helper. Changed
      FS_AddGameDirectory() to be the only place where fs_gamedir,
      fs_userdir and fs_gamedir_nopath are set; FS_Gamedir() will still
      need further cleanup for that. Creating the fs_userdir directory
      is also done in FS_AddGameDirectory() now. FS_AddGameDirectory()
      now allocates the searchpath memory only on the zone instead of
      hunk. After checking for reserved gamedirs, FS_Gamedir() now calls
      FS_AddGameDirectory() to do the rest of the job.

2012-06-14 (SVN):
    * gamecode/hc/portals/world.hc: Commented out precache_file4 calls
      for non-existant maps/sheephunt.bsp and maps/mgallmon.bsp.

2012-06-14 (SVN):
    * updated the StandaloneMods extra patch after the FS changes.

2012-06-14 (SVN):
    * quakefs.c (processMapname): Clean-up and fix duplicate detection.

2012-06-14 (SVN):
    * sys_amiga.c (Sys_GetBasedir): Simply return "PROGDIR:"
    * utils/common/util_io.c (Q_getwd, _AMIGA): Likewise.

2012-06-14 (SVN):
    * Now that timidity works OK with Amiga paths, preferred it instead
      of wildmidi in AROS builds.

2012-06-14 (SVN):
    * Revamped engine pathname handling: fs_gamedir, fs_userdir and
      fs_basedir are not global anymore. All function needing to make a
      path string using them now go through the new FS helper functions
      FS_MakePath, FS_MakePath_VA, FS_MakePath_BUF, FS_MakePath_VABUF,
      and the macros from filenames.h are now used everywhere.

2012-06-14 (SVN):
    * snd_sys.c: Moved registeration of AHI before SDL, so that SDL is
      still the default for Amigas.

2012-06-14 (SVN):
    * utils dcc/hcc.c, hcc/hcc.c, maputils/qbsp.c, texutils/bsp2wal.c:
      Revised filenames.h macro usage.
    * utils pak/pakx.c: Used filenames.h macros.

2012-06-14 (SVN):
    * utils/common/util_io.c: Fixed CreatePath() for DRIVE_SPEC and made
      it to use filenams.h macros.

2012-06-14 (SVN):
    * libs/common/filenames.h: Added HAS_DRIVE_SPEC and STRIP_DRIVE_SPEC
      macros.

2012-06-11 (SVN):
    * engine, zone.c: Use memcpy instead of strcpy in Hunk_Strdup() and
      Z_Strdup().
    * utils, qbsp.c: Minor cleanup in MakeProjectPath().

2012-06-11 (SVN):
    * libs/common/filenames.h: For __cplusplus, added overloaded cases
      of FIND_FIRST_DIRSEP and FIND_LAST_DIRSEP inlines, i.e. char* vs.
      const char*, so that it compiles using g++>=4.4 against string.h
      from newer glibc versions (__CORRECT_ISO_CPP_STRING_H_PROTO).
      Added FIXME notes to the DOS-ish versions regarding semi-absolute
      paths like C:FOO.

2012-06-11 (SVN):
    * engine/h2shared/common.c: Used the IS_DIR_SEPARATOR() macro in
      COM_SkipPath(). Changed the COM_FileBase() helper to simply do
      COM_StripExtension(COM_SkipPath(in),out,outsize).
    * engine, cl_parse.c (CL_ParseServerInfo): When copying the naked
      map file name to cl.mapname, changed it to use COM_FileBase().

2012-06-11 (SVN):
    * utils, hcc.c: If -src is specified, add a trailing slash only if
      there isn't a trailing directory separator already.

2012-06-10 (SVN):
    * engine/h2shared/common.c (COM_StripExtension,COM_FileGetExtension,
      COM_DefaultExtension): Changed to use filename.h macros.
    * utils/common/pathutil.c, qdir.c: Likewise.
    * utils/maputils/qbsp.c: Likewise.
    * utils/texutils/bsp2wal/bsp2wal.c: Likewise.
    * utils/common/util_io.c (Q_getwd, _AMIGA): Likewise. Make sure that
      the resulting path has a trailing directory separator.

2012-06-10 (SVN):
    * libs/common: Added filenames.h with several macros and inlines to
      address pathname handling differences between different operating
      systems.
    * libs/timidity/timidity.c (mid_init): Include directory separator
      character when adding the path of the config file to the pathlist.
      Use the filename.h macros.
    * libs/timidity/common.c (open_file): Use the filename.h macros.
    * engine/h2shared/snd_timidity.c, snd_wildmidi.c (_InitHelper): Use
      the filename.h macros.

2012-06-05 (SVN):
    * sys_amiga.c (Sys_CopyFile): Replace FRead() and FWrite() calls by
      Read() and Write(). Check the success of ExamineFH().

2012-06-05 (SVN):
    * sys_amiga.c, sys_dos.c, sys_unix.c (Sys_CopyFile): Fixed flipped
      string args in error messages (ugh...)

2012-06-05 (SVN):
    * util_io.c (AMIGA, Q_mkdir): Fixed to return if we got a pointer.

2012-06-05 (SVN):
    * hwmaster/sys_amiga.c: Added missing timer initialization stuff, so
      that GetSysTime() can be used.

2012-06-05 (SVN):
    * utils: Renamed GetTime to COM_GetTime and Error to COM_Error so as
      not to run into possible clashes with any library functions (such
      as the case with Error and Amiga's proto/dos.h). Also replaced the
      calls to remove and rename by Q_unlink and Q_rename.

2012-06-05 (SVN):
    * sys_amiga.c: Added -sndahi to the clients' help strings.

2012-06-05 (SVN):
    * sys_amiga.c (Sys_Init): Removed 1ms Sys_Sleep after the timer init
      and inlined a 1us wait, instead. Added missing timer init stuff to
      hexenworld server and utils/cmdlib so that GetSysTime can be used.

2012-06-04 (SVN):
    * snd_ahi.c, sys_amiga.c: Changed several ULONG type usage into IPTR
      for 64 bits corectness.

2012-06-04 (SVN):
    * snd_timidity.c, snd_wildmidi.c (_InitHelper): Added kludge so that
      the resulting path doesn't have ":/" or "//", which have different
      meaning on amiga. This can actually be made into a new Sys_ or FS_
      CatTo[Base|User]path() helper procedure later and all prints using
      fs_basedir, fs_userdir, etc can be made through it. Well, later..
      While we are there, added "Timidity:" to cfgfile[] of timidity and
      wildmidi.

2012-06-04 (SVN):
    * snd_ahi.c updates from Szilard Biro: -sndbits and -sndmono command
      line arguments are now honored. BUFFER_SIZE is now 16384 for AROS
      and MorphOS and 2048 for others. Made sure that shm->buffer isn't
      set to anything other than NULL if the driver fails.

2012-06-04 (SVN):
    * Made snd_mix.c to support 8 bit signed output. S8 mode is used by
      the Amiga AHI backend which doesn't support U8, at least not when
      running stereo: ahi.h lists AHIST_M8U (obsolete) but no AHIST_S8U.

2012-06-04 (SVN):
    * snd_ahi.c (EffectFunc): Fixed shadowing of the file-scoped ad
      variable. Made file-scoped ad pointer static.

2012-06-04 (SVN):
    * Added snd_ahi.c as a new audio driver for amiga, adjusted snd_sys
      and the makefiles for it. Added Mark Olsen to AUTHORS->credits.

2012-06-03 (SVN):
    * utils/cmdlib.c, util_io.c: Added amiga specific time and file i/o
      procedures based on engine-side sys_amiga.c.

2012-06-03 (SVN):
    * hw_utils/hwmaster: Split sys_main.c into sys_unix.c and sys_win.c.
      Added sys_amiga.c based on hwsv version of the file. Adjusted the
      makefile for target specific sys_* objects.

2012-06-03 (SVN):
    * sys_amiga.c: Sys_ConsoleInput fix from Szilard Biro. Added a new
      Sys_AtExit() procedure, moved the timerio cleanup and console mode
      restoration calls into it. Registered Sys_AtExit to atexit() from
      main() just before calling Sys_Init(). After opening timer.device
      in Sys_Init(), added call to wait 1ms (noticed in old Amiga Quake
      ports.)

2012-06-02 (SVN):
    * sys_amiga.c, sys_dos.c, sys_win.c (Sys_FindFirst): Make sure that
      the string we pass to OS findfirst-like function stays persistent
      and doesn't lose context.

2012-06-02 (SVN):
    * sys_amiga.c (pattern_helper): Fixed infinite loop in the first for
      construct.
    * Extended Amiga/AROS support to h2ded and hexenworld client/server.

2012-06-02 (SVN):
    * Removed the beta/prerelease versioning stuff.

2012-06-02 (SVN):
    * sys_amiga.c: Added a pattern helper for Sys_FindFirst() to replace
      each occurence of "*" by "#?" which is what Amiga's MatchFirst api
      expects. Should fix game load/save on Amiga/AROS.

2012-06-02 (SVN):
    * docs/AUTHORS: Added Szilard Biro under contributors->coding for
      the Amiga/AROS support.
    * Updated ReleaseNotes file.

2012-06-02 (SVN):
    * engine/hexen2/sys_amiga.c: Support for Amiga (AROS), many thanks
      to Szilard Biro.
    * engine/hexen2/Makefile, scripts/makefile.inc: Add adjustments for
      aros.
    * updated version date stamp to 2012-06-02.

2012-06-01 (SVN):
    * h2patch/h2patch3.c, launcher/apply_patch.c: The patch process now
      outputs a description of the pak file it is processing so that the
      user can understand the reasons of a probable failure better.
    * launcher: bumped version to 1.0.8
    * updated version date stamp to 2012-06-01.

2012-06-01 (SVN):
    * Changed the place where DO_USERDIRS may be disabled on purpose for
      some platforms from quakefs.h to sys.h. Added proper DO_USERDIRS
      macro usage to hwmaster.

2012-05-31 (SVN):
    * quakefs.h: Added Amiga to list of platforms where we don't need
      user directories.

2012-05-31 (SVN):
    * gl_draw.c (Draw_CacheLoadingPic): When moving pixels, do not take
      the start point as data[3]: data[0], i.e. data itself, should be
      just OK. (can't remember why I did it that way, but I noticed it
      thanks to a weird "array subscript is above array bounds" warning
      from g++..

2012-05-31 (SVN):
    * hexenworld/client/cl_main.c (CL_ConnectionlessPacket): Removed the
      extra '&' before the array variable 'data' when sending A2A_ACK,
      also changed its type to byte instead of char.

2012-05-31 (SVN):
    * Changed Sys_FindFirst() and Sys_FindNext() to return const.

2012-05-31 (SVN):
    * Steven reports that uhexen2 works nicely on Solaris: updated the
      release notes and TODO files.

2012-05-31 (SVN):
    * Makefiles: refuse the stupid 'cc' default of make for CC, which
      not necessarily exist everywhere.

2012-05-31 (SVN):
    * Makefiles: Cleanup. Moved many things from scripts/makefile.inc to
      individual makefiles. Also added a dummy Amiga section, leaving it
      to porters for filling in its blanks, for now.

2012-05-31 (SVN):
    * Makefiles: Removed the ARCHFLAGS variable, not used for quite some
      time.

2012-05-30 (SVN):
    * net_sys.h: Added new selectsocket macro, which expands simply to
      select for unix and windows, to select_s for dos and to WaitSelect
      for amiga.
    * hexen2/net_udp.c, hexenworld/net_udp.c, hw_utils/hwmaster/net.c,
      hwmquery/hwmquery.c, hwrcon/hwrcon.c, hwrcon/hwterm.c: Add support
      for amiga (bsdsocket.library).

2012-05-30 (SVN):
    * net_sys.h: Added missing Amiga (bsdsocket.library) defs, separated
      unix and amiga sections.

2012-05-30 (SVN):
    * net_sys.h: Amiga bsdsockets.library struct sockaddr has sa_len.

2012-05-30 (SVN):
    * arch_def.h: Classified AROS as PLATFORM_AMIGA.

2012-05-30 (SVN):
    * scripts/makefile.inc (LIBSOCKET): Solaris (sun) needs -lresolv, as
      reported by Steven.

2012-05-30 (SVN):
    * hexen2/net_udp.c: Solaris (sun) needs including sys/sockio.h for
      SIOCGIFCONF and friends.

2012-05-30 (SVN):
    * snd_sun.c: Moved the Shutdown procedure above GetDMAPos in order
      to fix compilation.

2012-05-30 (SVN):
    * gl_vidsdl.c, vid_sdl.c (VID_SetMode): SDL documentation says that
      before the first call to SDL_SetVideoMode(), SDL_WM_SetIcon() must
      be called. Do so properly.

2012-05-30 (SVN):
    * scripts/makefile.inc: Defined default for AS.

2012-05-30 (SVN):
    * utils/hcc, dhcc: Removed pr_parse.c, merged its contents to hcc.c.
    * utils/hcc, dhcc: Don't use 0 instead of NULL as a function param
      for PR_Statement(), PR_GetDef() and CO_GenCode().

2012-05-27 (SVN):
    * cl_main.c, cl_ents.c, cl_input.c, cl_parse.c, cl_tent.c, host.c:
      Random tidying up. Also made hexenworld version of CL_BaseMove()
      to match its hexen2 counterpart by not calculating angles during
      cameramode.

2012-05-27 (SVN):
    * in_sdl.c: Support for joystick hat (POV) switch motion, based on
      ioquake3 code. We translate hat motions into K_AUX key presses.

2012-05-27 (SVN):
    * snd_timidity.c, snd_wildmidi.c: Changed a while construct into a
      for for better readability.

2012-05-25 (SVN):
    * in_sdl.c: IN_JoystickGetAxis() and IN_JoystickKeyeventForAxis() no
      longer accept a joystick id pointer parameter, but use the joy_id
      variable. Disabled the "keyevents for joystick axes" hack for now.
      Added a hack making IN_ActivateMouse() and IN_DeactivateMouse() to
      affect the trackball in order for joystick trackballs convert to
      mousemove properly. For the same purpose, move joystick trackball
      querying from IN_JoyMove() to IN_MouseMove(). Reserved K_AUX29-32
      for hat (POV) switch motion (like in_win.c, code to be added soon)
      and changed SDL_JOYBUTTONUP/DOWN events' upper key limit to AUX28.
    * docs/README: Removed the disabled joy_axiskeyevents documentation.
    * updated version date stamp to 2012-05-25.

2012-05-25 (SVN):
    * timidity: Made DLS instruments support optional. Default is no,
      because the dls code we inherited from libtimidity and SDL_sound
      isn't good enough and it isn't used in unix installations where
      timidity is normally needed, either.

2012-05-24 (SVN):
    * libs/timidity/instrum_dls.c (load_instrument_dls): Merged changes
      from vavoom svn repo rev. 4175 to fix loading of drums.
    * libs/timidity/instrum_dls.c (load_connection): Merged some of the
      changes from vavoom svn repo revisions 4425 and 4428 to somewhat
      improve timidity's dls use: still sounds horrible with many midi
      files. Rest of the changes from those two vavoom revisions may (or
      may not) be merged later.

2012-05-24 (SVN):
    * libs/timidity/timidity_internal.h (struct _MidSong): Renamed the
      patches member to dlspatches.
    * libs/timidity/timidity.h: Typo fixes.
    * libs/timidity/timidity.c: Adjusted for the struct _MidSong change.
    * libs/timidity/instrum_dls.c: Whitespace tidy-up. Removed the RIFF
      and DLS information printing functions. If compiling for windows,
      used windows native headers instead of defining the windows types.
      Adjusted for the struct _MidSong patches member name change.

2012-05-22 (SVN):
    * snd_wildmidi.c: Search config file first under the userdir, _then_
      under the installdir. Added support for TIMIDITY_CFG environment
      variable override.
    * libs/timidity: The library doesn't add common timidity.cfg system
      locations to its search path: callers of mid_init() is responsible
      for it. If filename argument to mid_init() contains a directory,
      only that one will be added to timidity search path. The helper
      routine add_to_pathlist() now requires a length argument, so it
      can now duplicate and add parts of paths, too.
    * snd_timidity.c: Check for timidity.cfg or wildmidi.cfg file under
      the user directory and the installation directory first. Check it
      under the system locations only if the former attempts failed.
      Honor the TIMIDITY_CFG environment variable as an override.

2012-05-22 (SVN):
    * fish.hc (fish_follow): Proceed only if the goalentity is a valid
      one. Fixes an "assignment to world entity" error, as reported by
      Rugxulo. Also made it to return if the function puts the fish into
      bored state: seems like an old oversight.
    * bumped gamecode version number to 1.26.
    * updated version date stamp to 2012-05-22.

2012-05-22 (SVN):
    * snd_wildmidi.c: Check for timidity.cfg or wildmidi.cfg file under
      the installation directory and the user directory first. Check it
      under the system directories only if the former attempts failed.
      Also fixed sampling rate selection according to the wildmidi_lib.c
      code because the man page was incorrect. Removed the remarks from
      the makefiles saying that wildmidi is unsupported.

2012-05-21 (SVN):
    * updated all of the makefiles and the cross-build scripts.

2012-05-18 (SVN):
    * updated all build scripts.

2012-05-17 (SVN):
    * Combined the ReleaseNotes files. Updated rpm spec file to reflect
      the change.

2012-05-16 (SVN):
    * engine/h2shared/r_draw.c (R_RenderFace): Fixed -Wsign-compare.
    * engine/hexenworld/server/sv_main.c (SV_SendBan): Changed type from
      char to byte to fix -Wnarrowing.
    * hw_utils/hwmaster/sys_main.c (Sys_ConsoleInput): -Wsign-compare.
    * hw_utils/hwrcon/hwterm.c (main): Fixed another -Wsign-compare.
    * libs/timidity/common.c (safe_malloc): Fixed -Wformat in debug msg.
    * utils/texutils/bsp2wal/bsp2wal.c: De-constified WriteWALFile() and
      MakeWorkPath() because they actually write to their string args.
    * updated version date stamp to 2012-05-16.

2012-05-15 (SVN):
    * README: Clarified the joy_index documentation after svn rev. 4674.

2012-05-15 (SVN):
    * cvar.c: Added a note that not doing anything upon no change in
      the Cvar_Set*() functions is a behavior which the cvar callbacks
      may be relying upon.

2012-05-15 (SVN):
    * in_sdl.c: Added cvar callback functions IN_Callback_JoyEnable()
      and IN_Callback_JoyIndex(). We now keep only one joystick open
      and only if the functionality is enabled.

2012-05-15 (SVN):
    * sys_osx.m: Added missing include for unistd.h.

2012-05-15 (SVN):
    * Xcode project file update from Levent for Mac OS X.

2012-05-15 (SVN):
    * Added SDL joystick (gamepad) support. New cvars are documented in
      the README file. The code is based on darkplaces (svn rev.10980.)

2012-05-11 (SVN):
    * Updated documentation, mentioning and adding links to the RISC OS
      port of uhexen2.

2012-05-11 (SVN):
    * utils/dcc/dcc.c: When decompiling the progs.dat of the hcbots mod,
      GetFieldFunctionHeader() goes into an infinite recursion by calling
      itself with "think" and "th_stand" as the arguments alternating
      between each succession. So I just added a MAX_DEPTH check at the
      function's entrance, which works around the problem. It is a stupid
      solution yes, but I don't have anything better so far.
    * updated version date stamp to 2012-05-11.

2012-05-10 (SVN):
    * utils/dcc/hcc.c: Cleaned up the -src command line option handling.
    * utils/dcc/hcc.c: Made -src command line option behave the same in
      dhcc as in hcc itself.

2012-05-09 (SVN):
    * utils/dcc/hcc.c (PR_DefForFieldOfs): Made the typecast comparison
      more aliasing-friendly.

2012-05-09 (SVN):
    * utils/dcc/dcc.c (DEC_ReadData): Assign and print the globals before
      reading the progs.
    * utils/dcc/hcc.c: Remove the useless -crc command line option.

2012-05-09 (SVN):
    * utils/dcc/dcc.c: Made DEC_GetFunctionIdxByName to actually be able
      return 0: It used to return the numfunctions value when it failed
      to find a match. GetReturnType and GetLastFunctionReturn do check
      the value returned from DEC_GetFunctionIdxByName against 0. On the
      other hand PR_LocalGlobals() and GetFieldFunctionHeader(), the two
      other callers of DEC_GetFunctionIdxByName, don't do so: added fixme
      notes to them.

2012-05-09 (SVN):
    * utils/dcc/dcc.c (Dcc_Functions): Unixify the file path and create
      parent directories if any. Fixes the file open failure with hcbots
      v1.03 progs where the file names have windows backslashes in them.
      We still go into some endless loop when decompiling hcbots' progs,
      though: to be looked into.

2012-05-09 (SVN):
    * utils/dcc/dcc.c: Whitespace and coding style cleanup. Changed some
      else cases whose matching ifs always return into ifs. Changed some
      if(condition) into if(!condition) where it made the code some more
      readable. Changed malloc()/strcpy() call pairs into strdup() calls.

2012-05-06 (SVN):
    * Xcode project file update from Steven
    * updated version date stamp to 2012-05-05.

2012-05-05 (SVN):
    * Added timidity_patches.tar.gz to our download pages under support
      files section. Adjusted the README files for it.

2012-05-03 (SVN):
    * oslibs/windows/dxsdk/include/ddraw.h: updated from wine git repo
      e0fab0d39ccd19ca5bc3499305b0927e6f350431 (a comment correction.)

2012-05-01 (SVN):
    * Added new sys_osx.m under engine/h2shared/, moved Sys_GetBasedir()
      from sys_unix.c and Cocoa_ErrorMessage() from customized SDLMain.m
      into it. Now our SDLMain.m is the same as the default one from the
      latest SDL distributions. Also added sys_sdl.c as an empty source
      under engine/h2shared/ for possible future use. Adjusted makefiles
      for the new additions.
    * updated version date stamp to 2012-05-01.

2012-04-28 (SVN):
    * A few documentation updates.

2012-04-27 (SVN):
    * gl_vidnt.c (VID_Init): Fixed another 6-year-old and shameful bug
      in the findbpp code. We now silently adapt ourselves and work
      properly even with stale config.cfg files with unsupported bpp
      settings.
    * updated version date stamp to 2012-04-27.

2012-04-25 (SVN):
    * gl_vidnt.c (VID_Init): Fixed a 6-year-old/one-letter-only typo in
      findbpp code (compare j against MAX_NUMBPP, not i.)  Made sure
      that the default value of vid_config_bpp is supported by the OS
      and video driver: fixes the issue that uhexen2 would not run on
      Windows 8 Consumer Preview unless 32 bit color depth was specified
      on the command line. Tested by Ronald Eijkman on Win8/CP.
    * docs/AUTHORS: Added Ronald Eijkman under contributors->testing.
    * updated version date stamp to 2012-04-25.

2012-04-24 (SVN):
    * Added link to Rino's Hexen II single player mods to the README.
      Homepage is at:  https://sites.google.com/site/missionpackbyrino/

2012-04-23 (SVN):
    * in_sdl.c: Invert the behaviour of numlock (numbers when on, not
      when off).

2012-04-23 (SVN):
    * in_dos.c (IN_ReadMouseMove): Replaced confusing decimal number 11
      by hexadecimal 0x0B .
    * in_dos.c: Made it to not read movement when mouse is deactivated.
      Made it to detect wheel by default, added a -nowheel command line
      switch to disable it.

2012-04-23 (SVN):
    * vid.h: Removed the macros VID_LockBuffer(), VID_UnlockBuffer() and
      VID_HandlePause() and made them into functions for drivers that do
      not need them.

2012-04-22 (SVN):
    * updated XCode project file from Kristian after the addition of new
      cl_inlude.c source file.

2012-04-22 (SVN):
    * pr_edict.c (ED_Alloc_Temp): Remove the intermediary LeastTime var
      and directly compare against Least->alloctime.

2012-04-22 (SVN):
    * menu.c (M_NewMissionPackGame): make sure the mouse is active, so
      that a mouse click can be captured by Key_Event() and we get out
      of the intermission and go into a game using the mouse.

2012-04-22 (SVN):
    * bumped uhexen2 version to 1.5.4. bumped versions for hexen2 engine
      to 1.26 and hexenworld to 0.26.

2012-04-22 (SVN):
    * Separated intermissions setup from [gl_]screen.c into new source
      file cl_inlude.c. Added new members to the client_state_t struct
      to hold the intermission properties and flags. Added new function
      CL_SetupIntermission() to setup the intermission properties. Now
      SB_IntermissionOverlay() of [gl_]screen.c only cares about drawing
      the intermissions and their messages according to the flags set.
      Changed CL_ParseServerMessage() and M_NewMissionPackGame() to call
      the new CL_SetupIntermission() helper function. Small clean up in
      SCR_UpdateScreen() regarding cl.intermission cases.

2012-04-22 (SVN):
    * snd_mp3.c, snd_vorbis.c, snd_wave.c: Make _sure_ that the number
      of channels in the music file is supported, i.e. either stereo or
      mono. Minor tidy up of the error return paths.

2012-04-22 (SVN):
    * gl_func.h: Unless DRAW_PROGRESSBARS is defined, don't try linking
      to glDrawBuffer(). glReadBuffer() is no longer needed at all.

2012-04-22 (SVN):
    * Just removed the envmap thing altogether.
    * updated version date stamp to 2012-04-22.

2012-04-21 (SVN):
    * Now that we disabled D_ShowLoadingSize() for its drawing to front
      buffer, disable gl_rmisc.c::R_Envmap_f() too, for the same reason.

2012-04-21 (SVN):
    * Updated the known BUGS file: the fix for bug ##3519666 cures the
      issue of "16 bpp with ATI on windows", too.

2012-04-21 (SVN):
    * Fix bug #3519666: Disabled the progress bars drawing during level
      load in opengl: the implementation draws at certain intervals to
      GL_FRONT which is evil and causes flickering problems. If progress
      bars are required, the preprocessor macro DRAW_PROGRESSBARS must
      be defined when compiling.
    * gl_vidnt.c, gl_vidsdl.c: Made D_ShowLoadingSize() a stub function
      when DRAW_PROGRESSBARS is not defined.
    * gl_draw.c: Added Draw_CacheLoadingPic(), which is essentially the
      same as Draw_CachePic() but only loads gfx/menu/loading.lmp and
      deletes the progress bar pixels from it.
    * gl_screen.c: Added a short version of SCR_DrawLoading() which uses
      the new Draw_CacheLoadingPic() and doesn't draw the progress bars.
      Compiled conditionally, i.e. when DRAW_PROGRESSBARS is not defined.

2012-04-21 (SVN):
    * Made host_strings, info_strings and puzzle_strings static to their
      source files and only accessible by proper function calls. Added
      Host_GetString, CL_GetInfoString and CL_FindPuzzleString for this
      purpose. The string count global variables are still global. (As a
      side note, the new functions may use a little bit more security.)

2012-04-18 (SVN):
    * Limited hexen2 struct qsocket_s details only to net_*.c sources.
      For menu serverlist handling, added new procedures NET_SlistSort,
      NET_SlistPrintServer and NET_SlistPrintServerName. Added new
      procedure NET_QSocketGetTime for status and spawn commands' print
      functionality in host_cmd.c. Added new NET_QSocketGetAddressString
      procedure for status and connect commands' print functionality in
      host_cmd.c and sv_main.c.

2012-04-18 (SVN):
    * Made plaquemessage static to [gl_]screen.c. Added new procedure
      SCR_SetPlaqueMessage() to set it from other places.

2012-04-18 (SVN):
    * pr_cmds.c: Removed remnants of client-only and already commented
      out code.

2012-04-10 (SVN):
    * A lot of documentation updates and clean-ups.

2012-04-09 (SVN):
    * gl_draw.c (Draw_TextureMode_f, Draw_Anisotropy_f): Some micro
      optimization: Simply use the cvar pointer passed to the function
      instead of specifically referencing gl_texture_anisotropy or
      gl_texturemode specifically.

2012-04-09 (SVN):
    * gl_vidsdl.c, gl_vidnt.c: Bound non-power-of-two textures support
      to a newly added cvar gl_texture_NPOT, disabled by default. Fixes
      serious framerate drop on old graphics hardware which the driver
      is lying about its GL_ARB_texture_non_power_of_two capability.
      Mac OS X with ATI R300 to R500 series graphics cards is well known:
      http://lists.apple.com/archives/mac-opengl/2006/Dec/msg00000.html
      http://lists.apple.com/archives/mac-opengl/2009/Oct/msg00040.html
      http://www.idevgames.com/forums/printthread.php?tid=3814&page=2
      MH says NVIDIA once did the same with their GeForce FX on Windows:
      http://forums.inside3d.com/viewtopic.php?f=10&t=4832
      Identifying and blacklisting each and every problematic driver is
      virtually impossible, hence the cvar solution.
    * gl_draw.c: Added Draw_ReinitTextures() as a cvar callback function
      for gl_texture_NPOT.
    * menu.c: Added menu item to change the setting as desired.
    * updated version date stamp to 2012-04-09.

2012-04-08 (SVN):
    * snd_dma.c (S_UpdateAmbientSounds): No ambients when disconnected.

2012-04-08 (SVN):
    * hexen2/client.h (cactive_t): For hexenworld compatibility, added
      ca_active as an alias to ca_connected.

2012-04-08 (SVN):
    * Moved extern declaration of Mod_ReloadTextures() to gl_model.h.

2012-04-07 (SVN):
    * Bumped the version to 1.5.3 in the development tree.

2012-04-04 (SVN):
    * net_udp.c (UDP_Init): Made Watt-32 to not exit immediately when
      sock_init() fails, such as when a pktdrv is not present. Moved a
      Watt-32 specific include to net_sys.h.
    * updated version date stamp to 2012-04-04.

2012-04-03 (SVN):
    * updated BUGS and TODO documents and v1.5.2 release notes.
    * updated version date stamp to 2012-04-03.

2012-04-01 (SVN):
    * net_dgrm.c: Fixed the types of testSocket and test2Socket from int
      to sys_socket_t.
    * updated version date stamp to 2012-04-01.

2012-03-31 (SVN):
    * Reverted dos Watt-32 library's use of zone memory, because I still
      need debugging things. Changed Watt-32 memory requirement to 192K,
      as detailed in h2config.h. LEAVE_FOR_CACHE and LOCKED_FOR_MALLOC
      definitions are moved to dosisms.h. Changed the LOCKED_FOR_MALLOC
      value so that it includes the additional memory needed by Watt-32.
      Added explicit call of dbug_init() to net_udp.c::NET_Init(). Added
      explicit call of sock_init() to net_udp.c::NET_Init().
    * updated version date stamp to 2012-03-31.

2012-03-27 (SVN):
    * oslibs/dos/watt32/lib/libwatt.a: recompiled with more compile time
      options (USE_STATISTICS, USE_MULTICAST and USE_RS232_DBG) disabled.
    * oslibs/dos/codecs: recompiled dos codecs.
    * updated version date stamp to 2012-03-27.

2012-03-25 (SVN):
    * Changed DOS version so that WatTCP library allocates memory on the
      secondary zone instead of from system. Adjusted zone.c to reserve
      proper amount of memory for WatTCP.

2012-03-25 (SVN):
    * zone.c: Changed the secondary zone allocation to be realized when
      SECZONE_SIZE is defined as a positive value, not only for client
      applications.
    * updated version date stamp to 2012-03-25.

2012-03-24 (SVN):
    * mathlib.h (IS_NAN): Fixed strict aliasing violation by providing
      an inline function using a float/int union instead of the original
      macro.
    * updated version date stamp to 2012-03-24.

2012-03-23 (SVN):
    * Updated the COMPILE document to reflect the support for gcc-4.7.

2012-03-23 (SVN):
    * re-diff'ed some of the extra patches so that they apply cleanly.

2012-03-23 (SVN):
    * Updated the AUTHORS file. Updated the v1.5.2 release notes file.

2012-03-23 (SVN):
    * utils/dcc/dcc.c: Fixed two -Wunused-but-set-variable warnings.

2012-03-23 (SVN):
    * utils/dcc/dcc.c: Use the DEF_SAVEGLOBAL macro instead of the magic
      number 1<<15 itself. Cleanup the code where the DEF_SAVEGLOBAL bit
      is cleared.

2012-03-23 (SVN):
    * libs/xdelta3/xdelta3.c (xd3_set_source): Fixed a variable set but
      not used warning.

2012-03-23 (SVN):
    * updated version date stamp to 2012-03-23.

2012-03-16 (SVN):
    * vid_mgl4.c: Disabled MGL's DirectDraw support by default, because
      it causes more trouble than it is actually worth. Can be enabled
      by the new -useddraw or -usedirectdraw command line switches, if
      required. Added back the 24 bpp checks to VID_InitFullDIB() in the
      low resolution modes search.
    * updated version date stamp to 2012-03-16.

2012-03-12 (SVN):
    * Moved the stufftext_frame global to client_static_t structure and
      adjusted CL_GetDemoMessage and CL_ParseServerMessage accordingly.

2012-03-12 (SVN):
    * windows codecs: updated libmpg123 to latest stable 1.13.6 version.
    * updated version date stamp to 2012-03-12.

2012-03-10 (SVN):
    * gl_vidnt.c, vid_dos.c,vid_mgl4.c,vid_sdl.c,vid_win.c, cl_parse.c:
      Don't use stat as a variable name.
    * updated version date stamp to 2012-03-10.

2012-03-08 (SVN):
    * glquake.h, gl_draw.c, gl_rsurf.c, net_chan.c: Fixed -Wsign-compare
      warnings.
    * updated version date stamp to 2012-03-08.

2012-03-03 (SVN):
    * viddef_t changes, #3/3: Now that vid.rowbytes is signed int, as it
      should be, changed vid_win.c to use bottom-up DIB.

2012-03-03 (SVN):
    * viddef_t changes, #2/3: Changed width, height, conwidth, conheight
      and most importantly the rowbytes member of the viddef_t structure
      from unsigned int to signed int.

2012-03-03 (SVN):
    * viddef_t changes, #1/3: Removed several int casts from earlier
      patches which are intended for silencing -Wsign-compare warnings.

2012-03-03 (SVN):
    * Added support for non-power-of-two textures extension: detect in
      gl_vidsdl.c/gl_vidnt.c by searching GL_ARB_texture_non_power_of_two
      and do not snap the height and width of the texture to a power of
      2 in gldraw.c::GL_Upload32() if the extension is present.

2012-03-03 (SVN):
    * gl_rmain.c (R_DrawAliasModel): If shadows are enabled always get
      the lighting information regardless of special cases where it is
      not used because R_LightPoint[Color]() calculates lightspot for us
      which is used by GL_DrawAliasShadow(). Fixes the broken shadows
      after svn rev. 2509 during development of uhexen2 v1.4.2.

2012-03-03 (SVN):
    * removed gl_stencilshadow cvar, enabled shadows stencil buffering
      by default. BTW, shadows have always been broken and svn commit
      rev.2509 added even another brokenness to them: remove them soon?

2012-03-03 (SVN):
    * gl_draw.c: Replaced the GL_MipMap() procedure by a newer version
      adapted from darkplaces.

2012-03-03 (SVN):
    * gl_model.h, gl_model.c: Added XF_GLOW_TORCH_EFYPT as new flag for
      eflmtrch.mdl, adjusted Mod_SetAliasModelExtraFlags() to use it.
    * gl_rmain.c: Changed the default of torch glow effects to disabled.
      Adjusted R_DrawGlow for the new XF_GLOW_TORCH_EFYPT.
    * menu.c: Changed the order of torch and missile glow options.

2012-03-03 (SVN):
    * engine/h2shared/h2config.h, launcher/games.h: Updated notes about
      the ENABLE_OLD_DEMO compile time option. (... again...)

2012-03-03 (SVN):
    * vregset.c: Removed the trailing newline from the Sys_Error message
      and used __func__ for function name printing.

2012-03-03 (SVN):
    * engine/h2shared/h2config.h, launcher/games.h: Updated notes about
      the ENABLE_OLD_DEMO compile time option.

2012-03-03 (SVN):
    * cl_parse.c: Allow intermission picture and messages to be drawn
      during demo recording and playback. Do not automatically send a
      button0 cmd to skip the intermission and let the recorder to do
      that by himself. Do not automatically stop recording upon game
      ending and let the recorder to do that by himself.
    * host_cmd.c (Host_Reconnect_f): Adjusted after the removal of the
      demo hacks.

2012-02-29 (SVN):
    * hexen2/cl_parse.c (CL_ParseServerInfo): Check for old demo before
      calling Mod_FindName for crusader and necromancer in player_models
      assingment, similar to what we have been doing for the succubus.
    * hexenworld/client/cl_parse.c (CL_ParseModellist): Likewise.

2012-02-29 (SVN):
    * gl_draw.c (Draw_Init): Try to load gfx/menu/bigfont.lmp in case
      gfx/menu/bigfont2.lmp can not be found, which is the case with the
      original (old) hexen2 demo from august 1997.
    * menu.c (M_BuildBigCharWidth): Likewise.

2012-02-28 (SVN):
    * client.h, cl_main.c: Killed references to non-existent cl_autofire

2012-02-28 (SVN):
    * gl_vidnt.c, gl_vidsdl.c: Removed the arbitrary 1024 limit from
      gl_max_size.

2012-02-24 (SVN):
    * sys_win.c (Sys_MakeCodeWriteable): Changed the VirtualProtect flag
      from PAGE_READWRITE to PAGE_EXECUTE_READWRITE. This bypasses DEP
      on vista and newer with software renderer built with x86 assembler
      drawing routines using visual studio.

2012-02-21 (SVN):
    * hexenworld, server/sv_phys.c (SV_Physics_Step): changed hit sound
      from demon/dland2.wav to fx/thngland.wav. demon/dland2.wav doesn't
      exist in hexen2, the reference there seems to have been missed by
      Raven guys while porting qw source to hw. fixes the "SV_StartSound:
      demon/dland2.wav not precached" messages from hwsv.

2012-02-20 (SVN):
    * menu.c, net_comx.c, net_ser.c: Made some lookup tables const data.

2012-02-20 (SVN):
    * gl_screen.c, screen.c, sbar.c: Minor tidyings.

2012-02-20 (SVN):
    * view.c: Moved the Draw_Crosshair() call from V_RenderView() to
      SCR_UpdateScreen() of screen.c.

2012-02-20 (SVN):
    * gl_screen.c, screen.c: Merged hexen2 and hexenworld versions, and
      moved under h2shared.

2012-02-19 (SVN):
    * gl_screen.c: Commented out gl_triplebuffer cvar in the hexenworld
      version which was virtually non-functional. Added it to the hexen2
      version in commented out form for symmetry.
    * gl_screen.c: Unlike its screen.c counterpart, SCR_CalcRefdef() of
      the opengl version sets sb_lines to 36, not 46. Added a fixme note
      about it.
    * gl_screen.c: Merged hexenworld version of SCR_TileClear to hexen2.

2012-02-19 (SVN):
    * pr_cmds.c, pr_exec.c, pr_edict.c, progdefs.h, sv_main.c: Changed
      several Sys_Error() calls to Host_Error(). Made type_size array
      static to pr_edict.c. To be consistent, renamed globalvars_t to
      globalvars_v112_t for hexen2 and globalvars_v015_t for hexenworld.
      Minor cleanup in Ed_Alloc_Temp() by removing the rather useless
      LeastSet variable.

2012-02-18 (SVN):
    * gl_draw.c (Draw_Anisotropy_f): apply anisotropic level setting only
      to mipmap textures.

2012-02-15 (SVN):
    * rpm spec file: Added "--with gtk3" build option for the launcher.

2012-02-15 (SVN):
    * menu.c: Added menu item for anisotropic filter level. Minor clean
      up in the opengl features menu.

2012-02-14 (SVN):
    * updated documentation for the anisotropic texture filter support.

2012-02-14 (SVN):
    * glheader.h,glquake.h,gl_func.h,gl_vidnt.c,gl_vidsdl.c,gl_draw.c:
      Added support for anisotropic texture filtering, controlled by the
      new gl_texture_anisotropy cvar: valid values between 1 to whatever
      the driver returns as maximum. The callback to the new cvar sets
      all the mipmap texture filters whenever the cvar's value changes.

2012-02-14 (SVN):
    * gl_warp.c: set lowsky and upsky texture filters as GL_LINEAR

2012-02-14 (SVN):
    * gl_draw.c, menu.c, gl_rmisc.c, draw.c: Reverted an old patch about
      how multiplayer menu player setup pictures are drawn.

2012-02-14 (SVN):
    * gl_vidnt.c, gl_vidsdl.c: Cleaned up VID_Init, VID_ChangeConsize and
      VID_ConWidth where we set the conwidth. Allowed conwidth settings
      even as low as 320.

2012-02-14 (SVN):
    * gl_draw.c, gl_rmisc.c, gl_vidnt.c,gl_vidsdl.c: Revised the default
      texture filter mode settings by feeding specific preferences to
      GL_LoadTexture and not explicitly setting the MAG_ and MIN_FILTER
      unless necessary. The console and menu fonts as well as the status
      bar text have much better readability now when the 2D elements are
      scaled up by either using the menu option or the -conwidth command
      line switch.

2012-02-12 (SVN):
    * d_polyse.c: Fixed the long-standing bug of EF_SPECIAL_TRANS models
      being drawn with incorrect transparency when compiled without the
      x86 assembler routines: D_PolysetDrawSpans8T5() shouldn't refer to
      acolormap, fixed thusly.

2012-02-12 (SVN):
    * windows mouse: Disabled windows gdi mouse acceleration for better
      operation on winxp and newer. players can change their sensitivity
      setting if necessary.

2012-02-12 (SVN):
    * windows mouse: Made in_win.c:dinput_init variable public. Removed
      the IN_RestoreMouse helper and added explicit dinput_init checks
      in gl_vidnt.c, vid_win.c and vid_mgl4.c with additional comments.

2012-02-11 (SVN):
    * screen.c, gl_screen.c: Revert parts of rev.4530 which changed the
      loading plaque drawing and the scr_drawloading global, because of
      an unexpected weirdness with ATI linux open source drivers. Minor
      tidying up.

2012-02-11 (SVN):
    * revert previous r.4531, block unnecessary redraws of the progress
      bars earlier in D_ShowLoadingSize().
    * screen.c, gl_screen.c: only draw the progress bars when they have
      changed.

2012-02-11 (SVN):
    * screen.c, gl_screen.c: Tweaked SCR_DrawLoading to draw the loading
      plaque only when necessary, i.e. once only after SCR_UpdateScreen
      is called. Changed scr_drawloading from a boolean to int, so that
      it can be used to store the need for drawing the loading plaque as
      well as the truth value of loading screen being in effect by using
      bit flags. Skip the Draw_Fill() calls when there is no progress to
      draw, i.e. when count is 0.

2012-02-11 (SVN):
    * in_sdl.c: Fixed Mac OS X console and message mode backspace key
      (bug #2688151)

2012-02-10 (SVN):
    * Updated the features document after the recent fov enhancements.

2012-02-10 (SVN):
    * hexen2, cl_main.c (CL_EstablishConnection): Send a clc_nop to the
      server after establishing connection. Fixes the connection getting
      stuck sometimes after displaying the "Connection accepted" message.

2012-02-07 (SVN):
    * launcher: Set absence as well as availability in scan_h2_mods() and
      scan_hw_mods().

2012-02-06 (SVN):
    * launcher: Added support for gtk-3.x: Removed the GtkCombo code and
      made menus to use GtkOptionMenu for gtk-1.x/2.x and GtkComboBoxText
      for gtk-3.x. Added multiple macros to eliminate ifdefs in the menu
      code. Some further cleanup might be possible, but the code seems to
      work just fine.

2012-02-06 (SVN):
    * launcher: Added compatibility macro GTK_SIGHANDLER_T, defined as
      guint for gtk1 and as gulong for newer gtk versions.

2012-02-06 (SVN):
    * launcher: Rename WGT_RESCOMBO and WGT_CONWCOMBO to WGT_RESMENU and
      WGT_CONWMENU, which are actually menus after all.
    * launcher: Remove hwgames_t structure whose only difference from
      h2games_t was the absence of the is_botmatch field.

2012-02-06 (SVN):
    * launcher: Fixed game selection callback functions assigning a bad
      selection. Bug was introduced in launcher-v1.0.6/uhexen2-v1.5.1.

2012-02-06 (SVN):
    * launcher: preparing for gtk3 support #1: Removed all references to
      GtkObject type. Created GTKUI_SIGNAL_DISCONNECT and similar macros
      for signals support across different gtk versions. Used the gtk2+
      function gtk_adjustment_get_value(), added a compatibility macro
      for gtk1. Added GTKUI_DISABLE_FOCUS macro and removed direct uses
      of GTK_WIDGET_UNSET_FLAGS. Limitied GtkTooltips to gtk2 and older,
      added gtk_tooltips_set_tip as a macro for gtk3 and newer. Added
      gtk_radio_button_get_group as a compatibility macro for gtk1.
      Replaced gtk_entry_set_editable calls by gtk_editable_set_editable.
      Changed adjustment widgets' types to GtkAdjustment. More to follow
      later.

2012-02-06 (SVN):
    * launcher: bumped version to 1.0.7

2012-02-06 (SVN):
    * launcher: Removed support.c and support.h. Removed calls playing
      with the widgets' refcounts for lookup_widget() of support.c which
      I never used.

2012-02-04 (SVN):
    * oslibs, dos/windows codecs: Upgrade to the latest versions of ogg-
      vorbis decoders.

2012-02-03 (SVN):
    * vid_svgalib.c: Fixed broken command line resolution matching code.
      Fixed crashes when a bad mode name is passed to -mode argument or
      set as the GSVGAMODE environment variable. If no resolutions match
      the one requested by the command line or the GSVGAMODE environment
      variable, make sure that the one picked from the existing modes
      actually exists. Set the palette after coming back from a terminal
      switching (fixes messed up colors.)

2012-02-03 (SVN):
    * vid_svgalib.c: In VID_SetMode, check return code from vga_setmode.
      Call VID_SetPalette after we get the framebuffer ptr. In VID_Init,
      make sure that we have at least one supported mode.

2012-02-02 (SVN):
    * vid_svgalib.c: Fixed planar (modex) modes when using svgalib-1.9.x
      and the svgalib_helper kernel module. Removed the necessity of x86
      assembly for compilation. Removed linux-only limitation (other OSs
      such as FreeBSD aren't tested though.)

2012-01-31 (SVN):
    * gl_draw.c: Change the order of gl_texmodes.

2012-01-31 (SVN):
    * vid_vga.c: Added a C-only implementation of VGA_UpdatePlanarScreen
      based on vga_copytoplanar256 of SVGAlib. Added a C-only version of
      VGA_UpdateLinearScreen simply by using memcpy.
    * Makefiles: Made it possible to compile the dos version without x86
      assembly.
    * d_copy.asm: Added a few comments from the original d_copy.S.

2012-01-31 (SVN):
    * gl_draw.c, glquake.h: Stored the flags passed to GL_LoadTexture in
      the gltexture_t structure. Adjusted GL_Upload8() and GL_Upload32()
      accordingly to accept a gltexture_t parameter.
    * updated version date stamp to 2012-01-31.

2012-01-30 (SVN):
    * Make "gl_texturemode" a persistent cvar with callback.

2012-01-30 (SVN):
    * net_sys.h: Add __FreeBSD_kernel__ to the HAVE_SA_LEN list. Debian
      bug entry: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657793

2012-01-30 (SVN):
    * r_edge.c (R_ScanEdges): In the "make sure nothing sorts past this"
      code, edge_sentinel.u was assigned 2000<<24 for which clang emitted
      -Wshift-overflow warning "signed shift result (0x7D0000000) requires
      36 bits to represent, but 'int' only has 32". Comments from Bill
      Currie (of the quakeforge project): "... going by the goals of the
      code, getting the largest number representable (or something close)
      is desired. 0xD0000000 is actually quite broken as it's negative.
      2000<<20 would work (and be close), but considering the format of
      edge_sentinel.u (fixed16_t), I think 32767<<16 would be best: it is
      even closer to the largest (missing just factional bits) and it's
      clearer in that it conforms to the 16.16 format of the field.
      However, it's also possible the goal wasn't the largest possible
      number, but rather the largest expected X coordinate, and the coder
      forgot that the fixed format is 16.16 rather than 8.24 (still a bit
      of a goof, though). That said, the code works with 32767<<16."
      Hence, changed it to 32767<<16.

2012-01-29 (SVN):
    * Updated documentation regarding clang as the compiler.

2012-01-29 (SVN):
    * snd_mp3.c (mp3_madseek): clang, -Wtautological-compare: fixed the
      "comparison of unsigned expression >= 0 is always true" warning for
      to_skip_samples.
    * utils/hcc/pr_lex.c (LX_ErrorRecovery): Fixed unused value warning
      from clang: expand the TK_CHECK(TK_SEMICOLON) macro and explicitly
      call LX_Fetch() if pr_tokenclass is really TK_SEMICOLON.
    * hexen2, sv_user.c (SV_WaterMove): Fixed a -Wself-assign warning
      from clang (removed the last else case of wishspeed assignment.)
    * console.c (Con_NotifyBox): Use proper format string when passing
      the text to Con_Printf(). Found by clang.
    * hexenworld, cl_main.c (CL_ConnectionlessPacket): Use proper format
      string when passing the text to Con_Printf() for A2C_PRINT. Found
      by clang.
    * utils, ltface.c (LightFace, LightFaceLIT): Fixed "variable set but
      not used" warnings from gcc-4.6.
    * utils, entities.c (LoadEntities): Fixed wrong sizeof in memset as
      found by clang.

2012-01-28 (SVN):
    * Majorly revised the support mechanism for different versions of
      progs: removed pr_global_struct, added sv_globals holding proper
      offsets and globals' addresses. New sv_globals code is inspired
      from quakeforge. Added old v1.03 progs support to hexen2 and old
      v0.11 and v0.14 progs support to hw, realized by new sv_globals.
    * updated beta date stamp to 2012-01-28.

2012-01-27 (SVN):
    * update directx headers from mingw-w64 svn repo r4776:
    - ddraw.h: don't use __extension__ keyword directly
    - dinput.h: add missing __extension__ to two anonymous unions

2012-01-26 (SVN):
    * recompile directx mingw-w64 import libraries
    * update directx headers from mingw-w64 svn repo r4773:
    - ddraw.h: (DDSCAPS2_VOLUME): New constant from the Wine git repo.
      (DDLOCK_OKTOSWAP): Likewise.
      (DDLOCK_DONOTWAIT): Likewise.
      (DDLOCK_HASVOLUMETEXTUREBOXRECT): Likewise.
      (DDLOCK_NODIRTYUPDATE): Likewise.
    - dinput.h (DIEDFL_ATTACHEDONLY): Fix constant as 0x01.
      (DI_SETTINGSNOTSAVED): New constant from the Wine git repo.
    - dsound.h (DSBFREQUENCY_MAX): Define as 200000 only for version 9 and
      newer, but as 100000 for anything older.
      (DSBUFFERDESC): The guid3DAlgorithm member is available only with v7
      and newer.
      (DSCBUFFERDESC): The dwFXCount and lpDSCFXDesc members are available
      only with v8 and newer.
      (DSSPEAKER_DIRECTOUT): Add missing constant (0)
      (DSSPEAKER_5POINT1_BACK): Add missing constant (6)
      (DSSPEAKER_7POINT1_WIDE): Add missing constant (7)
      (DSSPEAKER_7POINT1_SURROUND): Add missing constant (8)
      (DSSPEAKER_5POINT1_SURROUND): Add missing constant (9)

2012-01-23 (SVN):
    * vid_mgl4.c, vid_win.c: In VID_Update(), check host_initilazied as
      well as firstupdate, because there are a few Con_Printf() calls
      during the init phase which call SCR_UpdateScreen() which in turn
      call VID_Update(). In VID_InitFullDIB() and VID_GetDisplayModes(),
      set _vid_default_mode_win to vid_default if no fullscreen modes
      are found. In VID_Init(), set _vid_default_mode_win to windowed
      default mode if -startwindowed or an equivalent is specified on
      the command line. Move bounds checking for _vid_default_mode_win
      from VID_Update()/firstupdate to VID_Init() and lock the cvar, so
      that the final execution of config.cfg doesn't mess it up. Several
      minor cleanups.
    * vid_dos.c: Early-read _vid_default_mode in VID_Init(). Do similar
      changes as in vid_win.c and vid_mgl4.c above.

2012-01-23 (SVN):
    * gl_main.c: Now that it deviated from the actual gluPerspective(),
      renamed MYgluPerspective to GL_SetFrustum and changed it to accept
      only the fovx and fovy parameters. Defined new macros NEARCLIP (4)
      and FARCLIP (4096) and passed them to glFrustum(). Inspired from
      fitzquake.

2012-01-23 (SVN):
    * vid_dos.c (VID_Init): Added missing safemode check alongside the
      -stdvid command line argument check.
    * updated beta date stamp to 2012-01-23.

2012-01-22 (SVN):
    * gl_vidnt.c, vid_mgl4.c, vid_win.c (CenterWindow): Removed unused
      lefttopjustify parameter.
    * vid_mgl4.c, vid_win.c: Now that we early-read _vid_default_mode_win
      from the config, removed extra checks from the firstupdate code.
      Dropped support for remembering the window position and -resetwin.
      Position the window centered upon creation using the CenterWindow()
      procedure taken from gl_vidnt.c. Removed vid_window_x, vid_window_y
      compatibility vars from vid_dos.c.
    * updated the TODO list.
    * updated beta date stamp to 2012-01-22.

2012-01-21 (SVN):
    * Removed RotatePointAroundVector and its two helpers from mathlib.
      Added TurnVector() helper from fitzquake and made R_SetFrustum()
      of gl_rmain.c to use that instead of RotatePointAroundVector().
      Changed MYgluPerspective() to calculate xmax using r_refdef.fov_x
      instead of the aspect ratio.
    * updated beta date stamp to 2012-01-21.

2012-01-20 (SVN):
    * r_main.c (R_DrawViewModel): Enable drawing of the view model when
      fov is greater than 90, i.e. disabled r_fov_greater_than_90 check.

2012-01-20 (SVN):
    * screen.c, gl_screen.c, r_main.c, gl_rmain.c, render.h, mathlib.c,
      mathlib.h: Implemented fov in opengl hexen2, useful for widescreen
      resolutions. Revised the implementations in hexenworld, as well as
      the software renderer.

2012-01-20 (SVN):
    * vid_win.c, vid_mgl4.c: Restore saved video mode on startup. Not
      exactly beautiful, but at least it works now...

2012-01-20 (SVN):
    * screen.c, gl_screen.c: Updated hw showfps code from quakespasm and
      copied over to hexen2, too.

2012-01-20 (SVN):
    * hexenworld cl_main.c: Reverted rev. 4471 and made the default rate
      value form 2500 again for now.
    * updated beta date stamp to 2012-01-20.

2012-01-19 (SVN):
    * hexenworld, gl_screen.c (SCR_UpdateScreen): Make sure vid.numpages
      is set correctly.
    * hexenworld: Moved fps display variables from clmain.c to screen.c.

2012-01-19 (SVN):
    * hexenworld cl_main.c: Changed default rate value form 2500 to 5760
      i.e. 72 fps.

2012-01-19 (SVN):
    * hexenworld screen.c, gl_screen.c (SCR_UpdateScreen): SCR_DrawFPS()
      must be called after Sbar_Draw() so that it is actually visible on
      the screen.

2012-01-19 (SVN):
    * cd_win.c, gl_vidnt.c, vid_mgl4.c, vid_win.c: The window procedure
      must return not LONG but LRESULT which really is a LONG for win32
      but a LONG_PTR for win64.
    * gl_vidnt.c, vid_mgl4.c, vid_win.c: simplified the MSWHEEL_ROLLMSG
      code a bit.
    * updated beta date stamp to 2012-01-19.

2012-01-15 (SVN):
    * h2/axe.hc (axetail_run): if no owner, remove self and return (just
      in case. merged from the mission pack.)
    * portals/allplay.hc (PlayerSpeed_Calc): removed duplicated assignment
      to self.hasted for CLASS_ASSASSIN and CLASS_SUCCUBUS cases.
    * h2/doors.hc (door_sounds): removed duplicated precache_sound() call
      for misc/null.wav
    * MG_AI.hc: Sanitized whitespace style. In the mission pack version,
      changed CheckJump() call to take no arguments and commented out the
      dprints, just like in h2: the function already used to set its own
      print_err parameter to false so it only used to lead to bloating.
      Adjusted all callers of CheckJump().

2012-01-14 (SVN):
    * h2/weapons.hc: Fixed occasional crashes in the original hexen2 game
      with the Paladin's axe.
    * Bumped the gamecode version number to 1.25.

2012-01-09 (SVN):
    * in_win.c: Added new IN_DiscardMove() helper which nukes the winmouse
      data collected by IN_Accumulate() by zeroing the mx_accum, my_accum,
      old_mouse_x and old_mouse_y. Direct input mode seems friendly with
      cameramode already. Called the new helper from IN_Move() when we are
      in cameramode in order to discard mouse motion.

2012-01-09 (SVN):
    * input.h: Removed stub macros of IN_ActivateMouse, IN_DeactivateMouse,
      IN_ShowMouse and IN_HideMouse for non-windowed targets, i.e. dos and
      svgalib, and made them into functions. Same for IN_ClearStates which
      is used for windows. IN_ActivateMouse and IN_DeactivateMouse are
      useful for discarding any unnecessary mouse motion when starting a
      game or when loading a saved game and prevent unintended viewangle
      changes:
    * in_sdl.c: Added IN_ClearStates() as an empty function.
    * in_svgalib.c: Added IN_ClearStates, IN_ShowMouse and IN_HideMouse as
      empty functions. Added IN_DeactivateMouse which removes the custom
      mousehandler. Added new IN_ActivateMouse which adds back our custom
      mousehandler and zeroes the file's old_mouse_x, old_mouse_y, mx, my,
      mouse_buttonstate and mouse_oldbuttonstate variables.
    * in_dos.c: Added IN_ClearStates, IN_ShowMouse and IN_HideMouse as
      empty functions. Added IN_DeactivateMouse as an empty function. Added
      IN_ActivateMouse which zeroes the file's old_mouse_x and old_mouse_y
      variables and calls IN_ReadMouseMove() with null arguments so that
      any mouse motion from when the mouse disabled are discarded.

2012-01-09 (SVN):
    * When the server puts the client in cameramode, the movements have
      always been discarded but the same has not been true for viewangle
      changes by way of the mouse (or the joystick). Fixing this now:
    * in_sdl.c: Added new IN_DiscardMove() helper which sets old_mouse_x
      and old_mouse_y to 0 and calls SDL_GetRelativeMouseState() with nul
      parameters therefore SDL resets its last called state. Called this
      new helper from IN_Move() when we are in cameramode.
    * in_dos.c: Added new IN_ReadMouseMove() helper accepting x and y int
      pointer parameters which may be null. Changed IN_MouseMove() to call
      this new helper. Changed IN_ReadJoystick() to accept x and y pointer
      parameters which may be null, and adjusted its callers accordingly.
      Added new IN_DiscardMove() helper which sets old_mouse_x/old_mouse_y
      to 0 and calls IN_ReadMouseMove() and IN_ReadJoystick() with null
      parameters to discard motion. Called this new helper from IN_Move()
      when we are in cameramode.
    * in_svgalib.c: Made the mousehandler() callback function to return
      without doing anything when we are in cameramode.
    * quakedef.h: updated beta date stamp to 2012-01-09.

2012-01-06 (SVN):
    * mid2strm.c (AddEventToStreamBuffer): Fixed broken tempo in windows
      midi with certain midi files. Bug was introduced in v1.5.1 (r4260)
      by an accidental deletion of just one line. sigh...

2012-01-06 (SVN):
    * Updated the README.dos file for WatTCP support.

2012-01-06 (SVN):
    * mid2strm.c (ConverterInit): Add support for Microsoft RMID format.
    * timidity/readmidi.c (read_midi_file): Likewise.
    * Updated the v1.5.2 release notes file.
    * midifile.h: Minor comment adjustments.

2012-01-06 (SVN):
    * midifile.h: Added magic constant for Microsoft RMID (*.rmi) files.

2012-01-06 (SVN):
    * timidity, load_instrument(): Close the file before returning in
      error cases.
    * updated beta date stamp to 2012-01-06.

2012-01-05 (SVN):
    * Recompiled all win64 dlls and import libraries.
    * quakedef.h: updated beta date stamp to 2012-01-05.

2012-01-03 (SVN):
    * console.c: Console word wrap fix: only check and wrap at word
      boundaries, not in the middle of a word.

2012-01-02 (SVN):
    * timidity.h (struct _MidSongOptions): Added discard_meta member
      (actually changed the padding member) so that I can choose not to
      allocate and parse the metadata.
    * timidity_internal.h (struct _MidSong): Added discard_meta member.
    * timidity.c (mid_song_load): Set the song's discard_meta member.
    * readmidi.c (read_midi_event): Made to call mid_istream_skip()
      instead of read_meta_data() when the song's discard_meta option is
      set.
    * snd_timidity.c: Pass 1 to mid_song_load() as discard_meta option
      because we don't need the metadata.

2012-01-02 (SVN):
    * timidity: added include guards to all of the timidity headers.
    * quakedef.h: updated beta date stamp to 2012-01-02.

2012-01-01 (SVN):
    * timidity, options.h (DEFAULT_DRUMCHANNELS): Do not mark 16 as a
      drum channel. Noticed this in SDL_mixer bug #1352, fixed in their
      mercurial repo as of changeset 61a1516bc06a. Timidity++ does the
      same thing too.

2012-01-01 (SVN):
    * timidity: Made mid_istream_skip() to use the stream's associated
      seek function.

2012-01-01 (SVN):
    * timidity: Added /usr/local/share/timidity to the list of default
      paths.

2012-01-01 (SVN):
    * timidity, readmidi.c: Fixed parsing of certain MIDI files with
      extra data at the end of the tracks. Fix from SDL_mixer mercurial
      repository, changeset 7a8f0018e23d. The problem was described in
      libsdl bugzilla, http://bugzilla.libsdl.org/show_bug.cgi?id=1299

2012-01-01 (SVN):
    * timidity: Added mid_istream_seek and mid_istream_tell to the api.

2012-01-01 (SVN):
    * timidity: Added seek and tell functions to the _MidIStream struct.
    * snd_timidity.c: Adjusted for the new api change made in timidity.

2012-01-01 (SVN):
    * libs/timidity: Made some functions and variables static. Commented
      out unused PrintRIFF and PrintDLS functions. Consistent whitespace
      usage.

2012-01-01 (SVN):
    * hexen2 menu.c: Use the original credits strings and don't play the
      easter egg cd track 12 when the expansion pack is not active.

2012-01-01 (SVN):
    * hexenworld menu.c: One of the string lines in the Credits2Text was
      missing a comma therefore it was concatanated with the next one
      and making the array one less in size than expected. If one waited
      long enough for the full credits to be printed, that used to cause
      a segmentation fault. Fixed.
    * quakedef.h: updated beta date stamp to 2012-01-01.

2011-12-31 (SVN):
    * changed some of the Cvar_Set[Value] calls to their *Quick variants
      in the source files where the vars are defined.
    * quakedef.h: updated beta date stamp to 2011-12-31.

2011-12-28 (SVN):
    * cvar.c (Cvar_SetQuick): Put back the tweak of reusing the string
      buffer when the old and new sizes are the same.

2011-12-28 (SVN):
    * Removed AoT from web links in the README files. The address is not
      related to Anvil of Thyrion anymore.

2011-12-28 (SVN):
    * cvar.c: Added Cvar_SetQuick() and Cvar_SetValueQuick() which accept
      a cvar pointer instead of a var name but are otherwise identical to
      the non-Quick versions. Cvar_Set, Cvar_SetROM, Cvar_SetValueROM and
      and Cvar_RegisterVariable now call these Quick versions in order to
      skip repeated name search.

2011-12-28 (SVN):
    * cvar.c (Cvar_Set): Simplified.
    * quakedef.h: updated beta date stamp to 2011-12-28.

2011-12-27 (SVN):
    * sv_main.c: Removed mistakenly added notify callback for sv_stopspeed.

2011-12-27 (SVN):
    * qsnprint.c (q_vsnprintf): Don't attempt to nul terminate the buffer
      if zero size was passed. From Sander van Dijk.

2011-12-27 (SVN):
    * cfgfile.c (CFG_ReadCvars): Also check for ferror(). Use FS_rewind()
      instead of FS_fseek(). From Sander van Dijk.

2011-12-27 (SVN):
    * model.c, gl_model.c (Mod_LoadEntities, Mod_LoadLighting): Consistent
      use of q_strlcpy and q_strlcat.
    * sv_main.c (SV_SpawnServer): Consistent use of q_strlcpy.

2011-12-27 (SVN):
    * strlcat.c, strlcpy.c: Removed the arch_def.h includes.

2011-12-27 (SVN):
    * Makefiles update: passing the libraries to linker before passing
      the object list is a bad idea.

2011-12-27 (SVN):
    * pr_edict.c (ED_LoadFromFile): Remove error when neither coop nor
      deathmatch was set in h2ded builds, rely on server admin's skills.

2011-12-27 (SVN):
    * Removed old QIP code that prevented coop and deathmatch to be set
      at the same time.  I was notified that it may actually cause some
      compatibility issues.  Just made sure that coop and deathmatch are
      cleared when starting a game from the menu system.

2011-12-27 (SVN):
    * common.c (COM_StripExtension): If the input is empty, just write a
      0 to the output and return.
    * quakedef.h: updated beta date stamp to 2011-12-27.

2011-12-25 (SVN):
    * view.c (V_UpdatePalette): Make use of CVAR_CHANGED flag of v_gamma.

2011-12-25 (SVN):
    * snd_dma.c: Use a callback with sfxvolume and drop the CVAR_CHANGED
      checks.

2011-12-25 (SVN):
    * screen.c, gl_screen.c: Use a callback with scr_fov and scr_viewsize
      and drop the CVAR_CHANGED checks.

2011-12-25 (SVN):
    * screen.c, gl_screen.c: Moved clearing of CVAR_CHANGED flag from
      scr_fov and scr_viewsize to SCR_CalcRefdef().

2011-12-25 (SVN):
    * snd_dma.c: Removed oldvolume global. Relying on CVAR_CHANGED flag
      of sfxvolume now.

2011-12-25 (SVN):
    * screen.c, gl_screen.c: Removed oldfov and oldscreensize globals.
      SCR_SizeUp_f and SCR_SizeDown_f no longer set vid.recalc_refdef.
      Relying on CVAR_CHANGED flags of scr_fov and scr_viewsize now.

2011-12-25 (SVN):
    * menu.c: Do not directly manipulate cvars' values, use automatic
      variables instead.
    * quakedef.h: updated beta date stamp to 2011-12-25.

2011-12-24 (SVN):
    * cfgfile: changed to use FS_ functions, patch from Sander van Dijk.
      updated copyright years.

2011-12-24 (SVN):
    * quakefs: added FS_fgets(), patch from Sander van Dijk.
    * quakedef.h: updated beta date stamp to 2011-12-24.

2011-12-23 (SVN):
    * Added new CVAR_CALLBACK flag.  Made Cvar_SetCallback() to adjust
      the CVAR_CALLBACK flag.  Made Cvar_RegisterVariable() to set the
      callback to NULL if CVAR_CALLBACK is not present, just in case..

2011-12-23 (SVN):
    * Moved notification handling from Cvar_Set() to callback functions.

2011-12-23 (SVN):
    * Moved coop and deathmatch value clash handling from Cvar_Set() to
      callback functions.

2011-12-23 (SVN):
    * Added a callback mechanism to the cvar layer.

2011-12-23 (SVN):
    * When the value is a numeric constant (excluding any macros), use
      Cvar_Set() instead of Cvar_SetValue().
    * quakedef.h: updated beta date stamp to 2011-12-23.

2011-12-22 (SVN):
    * snd_gus.c: Store the dma address received from dos_getmemory() in
      a different pointer variable so we can free it during shutdown.
      This, in case if I ever implement a snd_restart like mechanism.
    * snd_sb.c: Likewise in snd_gus.c. Also made dma_buffer variable
      static to snd_sb.c.

2011-12-22 (SVN):
    * net_dos.c: Changed the order of lan drivers to IPX, BWTCP, WATTCP
      and MPATH.
    * net_bw.c: Skip initialization if -mpath is specified.
    * net_udp.c: Skip initialization if -mpath is specified. Also skip
      initialization if IPX already initialized because IPX+PktDrvr don't
      get along.

2011-12-22 (SVN):
    * cvar.h: Define the flags using 1U (unsigned), instead of simply 1.
    * cvar.c (Cvar_Set): Simplified coop and deathmatch cvars detection
      by replacing the name comparison by variable pointers' comparison.
    * quakedef.h: updated beta date stamp to 2011-12-22.

2011-12-21 (SVN):
    * hexenworld, sv_main.c: Reverted a part of yesterdays password cvars
      patch (what was I thinking..)
    * quakedef.h: updated beta date stamp to 2011-12-21.

2011-12-20 (SVN):
    * hexenworld, cl_main.c (CL_Rcon_f): No need for strlen() to detect an
      empty string.

2011-12-20 (SVN):
    * hexenworld, sv_main.c (SV_CheckVars): Changed to use the CVAR_CHANGED
      flags because the old pointer equality checks were never guaranteed
      to signal a change.

2011-12-20 (SVN):
    * cvar.h: Changed the cvar flags to bit shifts for easier maintaining.
      Added CVAR_CHANGED as a new flag.
    * cvar.c (Cvar_Set): Set the CVAR_CHANGED flag when changing a value,
      code elsewhere may make a use of it.

2011-12-20 (SVN):
    * Miscellaneous hexenworld server code cleanups:
    * sv_send.c (SV_FlushRedirect): Adjusted pointer.
    * sv_send.c (CON_Printf): Replaced strcat by q_strlcat.
    * sv_main.c (SVC_Log, SVC_RemoteCommand): Replaced strcat by q_strlcat.
    * sv_main.c (SV_SendBan, Master_Shutdown): Removed assignments and
      strcpy and made the data preinitialized and static.
    * sv_main.c (Master_Heartbeat): Reduced text buffer size from 2048 to
      32 which is more than enough. Replaced sprintf by q_snprintf.

2011-12-20 (SVN):
    * screen.c, gl_screen.c (SCR_DrawCenterString, Bottom_Plaque_Draw,
      Info_Plaque_Draw, Plaque_Draw): Adjusted the y coordinate by adding
      ((vid.height-200)>>1) and replaced all occurences of M_Print2() by
      M_Print() and M_DrawTextBox2() by M_DrawTextBox().
    * menu.c: Removed M_DrawTextBox2, M_Print2 and M_DrawCharacter2().
    * menu.h: Removed prototypes for M_DrawTextBox2() and M_Print2().
      Removed m_activenet, MNET_IPX and MNET_TCP which had never existed.

2011-12-20 (SVN):
    * gl_screen.c (SCR_ScreenShot_f): Calculate the buffer size only once.
    * screen.c (WritePCXfile): Changed to return int, -1 on error and 0 on
      success. Made SCR_ScreenShot_f to print its message only on success.

2011-12-20 (SVN):
    * screen.c, gl_screen.c (SCR_DrawCenterString, Bottom_Plaque_Draw,
      Info_Plaque_Draw, Plaque_Draw): Store the (EndC[i]-StartC[i]) result
      in an extra variable.

2011-12-20 (SVN):
    * screen.c, gl_screen.c (UpdateInfoMessage): Changed newmessage to be
      const. Replaced strcat by q_strlcpy to be on the safe side.

2011-12-20 (SVN):
    * screen.c, gl_screen.c: Whitespace tidy up. Removed extra parentheses
      from a few places where they aren't necessary at all.

2011-12-20 (SVN):
    * cmd.c (Cmd_Alias_f): Replaced a strcat by q_strlcat (was a typo.)
    * hexenworld, CL_Disconnect(): Adjusted buffer pointer.
    * quakedef.h: updated beta date stamp to 2011-12-20.

2011-12-18 (SVN):
    * in_svgalib.c: Added missing cameramode and idealroll handling to the
      mouse code.

2011-12-18 (SVN):
    * quakeinc.h, qwsvinc.h: Tweaked order of engine header includes.
    * net_win.c, net_dos.c: Fixed a typo in #endif comments.
    * quakedef.h: updated beta date stamp to 2011-12-18.

2011-12-17 (SVN):
    * Added AUTHORS file among the documents listing all of our contributors
      to the best of my knowledge.  Edited the ABOUT and README documents a
      little.

2011-12-16 (SVN):
    * in_sdl.c: Explicitly disable SDL's unicode translation support during
      initialization and enable it only for text input during frame updates.
      This allows for the use of dead keys on the console or in chat, while
      the in-game key bindings are not stuck just because of them. Based on
      a patch from, and thanks to Sander van Dijk.

2011-12-16 (SVN):
    * in_sdl.c (IN_ActivateMouse): Nuke events from when mouse was disabled
      by calling SDL_PumpEvents() and SDL_GetRelativeMouseState().
    * Updated the release notes file for v1.5.2.
    * quakedef.h: updated beta date stamp to 2011-12-16.

2011-12-15 (SVN):
    * menu.c (M_ToggleMenu_f): Set key_dest to key_game only if the client
      is connected. Set it to key_console, otherwise. This allows dead keys
      to work properly under fullscreen console mode. Patch from and thanks
      to Sander van Dijk.
      (M_Main_Key): Likewise.
    * keys.c (Key_Event): Now that menu.c sets key_dest properly, remove an
      old hack that used to allow autorepeat in forcedup console.

2011-12-15 (SVN):
    * sys_win.c, sys_dos.c (Sys_ConsoleInput): Removed isDedicated check.
      Host_GetConsoleCommands() already does that as it should.

2011-12-15 (SVN):
    * host_cmd.c (LoadGamestate): Close the file before signalling an error
      (noticed this in recent RMQ sources.)
    * quakedef.h: updated beta date stamp to 2011-12-15.

2011-12-12 (SVN):
    * Removed argument clamping from Sys_Sleep().

2011-12-12 (SVN):
    * Made the cmd argument of CL_SendMove() and CL_WriteDemoCmd() const.
    * Made the cmd argument of MSG_WriteUsercmd() const.
    * Made Sys_ConsoleInput() to return const.
    * quakedef.h: updated beta date stamp to 2011-12-12.

2011-12-10 (SVN):
    * Several minor cleanups.

2011-12-07 (SVN):
    * midi_mac.c (MIDI_Play): Fixed another typo.  Really compiles fine now.
    * midi_mac.c: Added missing brace in the CHECK_MIDI_ALIVE macro, should
      compile fine now.

2011-12-07 (SVN):
    * engine/hexenworld/shared/net_chan.c (Netchan_Setup, Netchan_Process):
      Reverted the chan->incoming_sequence pre-initialization to -1 change
      from Dec. 01 (rev. 4339), because it caused connection failures with
      new clients versus old servers ('reliable overflow' at server.)

2011-12-07 (SVN):
    * draw.c (Draw_ConsoleBackground): Add support for transparent console
      background in the software renderer.  This is actually an extension
      of the two already known transparency features: (1) sbtrans, which
      is status bar transparency, and (2) dmtrans, which is the deathmatch
      status overlay counterpart for sbtrans.  In parallel to sbtrans, the
      console background transparency is controlled by a new cvar contrans.
      The valid values for contrans are 0 (solid), 1 (transparent) and 2
      (very transparent).
    * quakedef.h: updated beta date stamp to 2011-12-07.

2011-12-07 (SVN):
    * sbar.h, screen.h: Moved to h2shared.
    * sbar.c: Moved in_impulse extern declaration to client.h. Moved the
      trans_level global to screen.c, its extern declaration to screen.h.
    * screen.c: Moved info_up extern declaration to client.h.

2011-12-07 (SVN):
    * draw.c: Tidied up and added fixme notes for r_pixbytes. Renamed all
      pusdest variables to dest (was so windowsian, jeezz...)

2011-12-07 (SVN):
    * hexenworld: Added the global variable con_forcedup for better
      compatibility with hexen2 code.

2011-12-03 (SVN):
    * Minor correction to the COMPILE document regarding DOS builds.
    * Updates to the 1.5.2 release notes file.

2011-12-03 (SVN):
    * snd_gus.c (S_GUS_Init): Added support for "-nogus" command line
      option to skip Gravis UltraSound initialization and return false.
      Patch suggested by Frank Sapone.
    * quakedef.h: updated beta date stamp to 2011-12-03.

2011-12-02 (SVN):
    * Updated the COMPILE document regarding DOS builds:  Frank Sapone
      confirmed successful compilation in native DOS/DJGPP environment.
    * Added new ReleaseNotes-1.5.2 document. Only a few entries for now,
      will grow as we move on.  Updated the rpm spec file.

2011-12-02 (SVN):
    * engine/hexenworld/server, model.c: Replaced SV_Error by Host_Error:
      we already have a macro defining Host_Error as SV_Error and this
      reduces the diff size between h2ded and hwsv versions of model.c.

2011-12-02 (SVN):
    * bumped versions for hexen2 engine to 1.25 and hexenworld to 0.25.
    * engine/hexenworld/server: model.c, model.h: Ported dedicated server
      model loader optimizations and cleanups from h2ded to hwsv.

2011-12-02 (SVN):
    * hexenworld: Moved shared/model.h under client and server separately
      so that the two can use customized versions of the header.  Edited
      the server version to remove structures and macros which have never
      been used.

2011-12-02 (SVN):
    * quakedef.h: updated beta date stamp to 2011-12-02.

2011-12-02 (SVN):
    * hexen2 dos port: Made the serial network driver a compile time option.
      Adjusted the use of the NET_USE_SERIAL macro.

2011-12-02 (SVN):
    * Small tidy-up in hexen2 and hexenworld Makefiles.

2011-12-02 (SVN):
    * engine/hexen2/menu.c: Changed some of the obvious if conditions to
      else if. Used the values returned by strlen() as cached in a variable
      when possible.

2011-12-02 (SVN):
    * engine/hexen2/dos/net_comx.c: Made the functions TTY_GetComPortConfig,
      TTY_SetComPortConfig, TTY_GetModemConfig and TTY_SetModemConfig static.

2011-12-01 (SVN):
    * vid_sdl.c (VID_PrepareModes): No need using a different loop counter
      for copying the resolutions list. No need explicitly assigning NULL
      to the last member of the copy (Z_Malloc already sends a zero-filled
      memory to us)

2011-12-01 (SVN):
    * engine/hexen2/dos/net_dos.c: Fixed a misplaced endif directive.
    * engine/hexenworld/shared/net_chan.c: Added NOT_DEMOPLAYBACK as a
      new macro to clean up several SERVERONLY ifdefs.
      (Netchan_Process): Applied the unsigned cast to the sum value, not
      just to chan->incoming_sequence.
    * engine/hexenworld/shared/net_wins.c: Renamed to net_udp.c.
    * engine/hexenworld/shared/net_chan.c (Netchan_Setup): pre-initialize
      chan->incoming_sequence to -1 so a packet with an incoming sequence
      of 0 will work. Patch found in old quakeforge cvs commits.
      (Netchan_Process): Adjusted sequence comparison accordingly. Also
      cast chan->incoming_sequence to unsigned to match the type of the
      sequence varible.

2011-11-29 (SVN):
    * Added Watt-32 (WatTCP) support for the DOS port: Tested and reported
      to work by Frank Sapone. Added the option to build hwcl and hwsv for
      DOS too, but it has connection problems at the moment.

2011-11-28 (SVN):
    * hexenworld, cl_main.c: Moved the registration of cvar sys_nostdout
      from CL_Init() to an early stage in Host_Init().

2011-11-27 (SVN):
    * cd_dos.c (CDAudio_Init): Removed check for ca_dedicated: We never
      call CDAudio_Init() if we are running as a dedicated server.
    * hexen2, server/sys_dos.c (Sys_ConsoleInput): Removed the pointless
      isDedicated check.

2011-11-27 (SVN):
    * dos port: Made the MPATH winsock driver a compile time option.

2011-11-27 (SVN):
    * hexen2, net_udp.c: Replaced explicit ioctl calls by ioctlsocket.
      Replaced explicit strerror(errno) by a socketerror(SOCKETERRNO).

2011-11-27 (SVN):
    * dos port: mpdosock.h, mplpc.c, net_mp.c: Prefixed all of the public
      functions by WSLIB_ which would help me with using WatTCP later on.

2011-11-27 (SVN):
    * Bumped version to 1.5.2 in the development tree.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

