Development Log:
An incremental history of the sources and various SVN snapshots can be found HERE .

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 ( 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 :
    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 :
  • 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 <>)
    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
  • 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 (

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) 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):
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 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 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: 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 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 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/ 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 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.)
  • 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/ 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 information.

2013-02-10 (SVN):
  • timidity: removed read_meta_data() stuff altogether. document our changes in timidity/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/ clean up for better flexibility.
  • utils: adjust the makefiles of jsh2color, light and vis after the cleanup.
  • launcher: used scripts/ 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 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 ( 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:
  • 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.
  • 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:
  • 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.
  • 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 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

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 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

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:

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 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 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/ 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/ 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/ (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/ 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):
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 (1.5.3-final / 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):
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 (1.5.2-final / 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):
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-26/27 (SVN):
  • recompile directx mingw-w64 import libraries
  • update directx headers from mingw-w64 svn repo r4773/r4776:
        - ddraw.h: don't use __extension__ keyword directly
        - ddraw.h: (DDSCAPS2_VOLUME): New constant from the Wine git repo.
          (DDLOCK_OKTOSWAP): Likewise.
          (DDLOCK_DONOTWAIT): Likewise.
          (DDLOCK_NODIRTYUPDATE): Likewise.
        - dinput.h: add missing __extension__ to two anonymous unions
        - 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,

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 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: 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/ 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):
  • 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.
  • 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.)
  • 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):
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 the 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/, Minor tidy up.
  • rpm/hexen2.spec: Install the cd-rip scripts.
  • Minor updates to the TODO and 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
  • 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-27 (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; quoting his analysis:
        "The problem originates in the Werepanther's shield.  [...]
        behavioral function mezzoman.hc::spawn_reflect() 'Picks up enemy
        missile as shield!'.  The pointer to the missile entity is stored
        in monster_mezzoman's .shield property and is initiated as usual
        with 0 being the equivalent to entity world.  There are 3 functions
        in mezzoman.hc that deactivate the missile by
        ... and a think function SUB_Remove().  When another function of the
        above mentioned ones already has removed the entity, the pointer is
        freed, so no problems arise with freeing the entity again, although
        I regard this as sloppy programming.  It starts to get out of hand
        when another entity has been allocated to the slot: it's removed and
        that's it.  Yakman may meet the same fate, although this case is more
        likely to happen than random because the last entity removed may be a
        reflected missile.  The mezzoman chain acts like this:
        ... Yakman is spawned before mezzo_die() is called and in latter func-
        tion it is removed before being properly initiated by monster_yakman,
        so it stays invisible during its short existence.  The design flaw
        also explains why sometimes missiles disappear for no apparent reason.
        Eventually, any temporary entity might be the victim.  There are many,
        many debug messages commented out and I think this is not coincidental.
        The best way to go, of course, were to reset the .shield pointer to 0
        after the entity is removed
    	self.shield = world;
        ... but during runtime an error is issued: "assignment to world entity".
        So not only do we have to check whether the entity to be removed is
        indeed of classname 'mezzo_reflect' but also if it is owned by self,
        our dying monster_mezzoman."
    This fix properly closes our more that six year old bug #1112533, see

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):
  • 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):
  • 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.
  • 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.
  • 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:
    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.
  • 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 builds.

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 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 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:
    "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/ 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/ 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-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.
  • 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-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: 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):
  • updated compilatidon instructions.
  • updated release notes for 1.4.4.
  • marked the snapshot of 2009-12-27 as 1.4.4-pre8.

2009-12-26 (CVS):
  • scripts: updated the cross toolchain target/path information with relation to the latest builds (2009-12-24/25) posted at

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 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):
  • the experimental midi_with_sdlaudio patch didn't touch midi_nul.c. fixed.
  • HoT version 1.4.4-pre7 (2009-08-02.)

2009-07-16 (CVS):
  • scitech mgraph headers: tweak the __cdecl definition 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.
  • updated release notes (2009-06-14.)

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 directories 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 directories 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

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

2009-01-29/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 / 2009-01-01 (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 ( 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 there are some warnings but they can be fixed and the whole thing should be functional soon.
  • added new directx headers 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, 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: replaced the old md5 code the maintained one from libbsd.
  • 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.)
  • updated release notes for HoT-1.4.4 (2008-11-15.)

2008-11-11 (CVS):
  • Makefiles: from now on, 3dfx gamma 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
  • 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.

  • Older entries in ChangeLog are HERE.