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

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

2008-04-03 (CVS):
  • msg_suppress_1 is used by the Win32 software (MGL) renderer: removed from all other platforms and defined it as false.
  • minor makefile cleanup for svga client.
  • updated release notes for version 1.4.3 (2008-04-03.)

2008-04-02 (CVS):
  • various fixes for the experimental svgalib client.
  • moved msg_suppress_1 from vid files to d_surf.c.
  • build system cleanup (removed sanity checks, added a phony report target to engine makefiles, changed the default nasm command for windows from nasmw to nasm, maybe a few other things.)
  • minor platform clean-up in vid.h and input.h.
  • added a note to the main makefiles for SDL requirement.
  • added SDLQUAKE as a new preprocessor define: SDLQUAKE must be defined for all SDL using platforms / targets.
  • added a makefile for the svgalib-client. the client compiles fine but it isn't tested and isn't supported, yet.
  • updated release notes for version 1.4.3.

2008-04-01/02 (CVS):
  • d_polyse.c: added FIXME notes about mistaken use of mainTransTable instead of transTable in the T5 series functions, namely D_PolysetRecursiveTriangleT5, D_PolysetDrawSpans8T5 and D_PolysetDrawFinalVertsT5.
  • added video and input drivers for svgalib, adapted from quake1 source. compiles fine but not tested: not for release at the moment.
  • re-diff'ed the extra patches.

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

2008-03-30 (CVS):
  • added back some dead and previously removed software renderer stuff for reference. doesn't affect the current functionality.
  • changed beta release version date (2008-03-30 / 1.4.3-rc3).

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

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

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

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

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

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

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

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

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

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

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

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

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

2008-02-05 (CVS):
  • incremented the gamecode version number to 1.19a.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2007-08-14 (CVS):
  • launcher: a more consistant fix for two toggle buttons.
  • launcher: renamed interface.h to launcher_ui.h, interface.c and compat_gtk1.h to gtk_ui.c and gtk_ui.h. adjusted the makefile accordingly. removed the .gtk1 binary name suffix from gtk-1.2 builds.
  • updated the rpm spec file (removed the .gtk1 suffix from launcher gtk-1.2 builds).
  • updated the documents after the launcher changes.
  • launcher: removed widget_defs.h and merged its contents to gtk_ui.h.
  • launcher: removed the unnecessary delete_handler member from the PatchWindow structure.
  • launcher: several tidy-ups.
  • launcher: pointer for the patch thread return value should be unsigned.
  • printsys.h: added a Con_SafeDPrintf macro.
  • console.c: clean-up for Con_SafePrintf calls.
  • changed Con_Printf calls into Con_SafePrintf in the video initialization routines.
  • removed the windows message box asking the user for a retry when the sound hardware is in use, moved S_Init from vid_win.c to Host_Init. while we were there, moved Sbar_Init to a place before S_Init, so all init procedures loading some textures are all together.
  • in_win.c: changed Con_Printf calls into Con_SafePrintf in the initialization routines.
  • minor re-organization in VID_ChangeVideoMode procedure.

2007-08-13 (CVS):
  • launcher: fixed toggle events for a few buttons. from Steven.
  • gl_rmain.c: setting the v_gamma value isn't necessary, view.c already does that for us.
  • gl_model.c, gl_model.h, gl_rmain.c: glow code tidy-up: made the glow_color member of the model structure an array of 4 instead of 3. removed an unnecessary glTexEnvf call (setting TEXTURE_ENV_MODE to GL_REPLACE) from R_DrawAllGlows(). moved torch color setting from R_DrawGlow() to Mod_SetAliasModelExtraFlags(). minor clean-ups.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2007-06-25 (CVS):
  • updated the list of known bugs (June 25, 2007.)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2007-05-20 (1.4.2-rc1 / CVS):
  • marked the snapshot of 20 May 2007 as 1.4.2-rc1.
  • fixed rpm spec file.

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

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

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

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

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

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

2007-04-26 (CVS):
  • updated the release notes for the upcoming 1.4.2 release.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2006-11-25 (1.4.1 rev:1):
  • Mac OS X: feed correct data to Sys_StripAppBundle.

2006-11-22 (1.4.1 rev:1):
  • Ensured that the basedir always stays the same for Mac OS X. Documented the packaging method for Mac OS X. Updated release date to November 16.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.3.0: Changes since HoT 1.2.4 (2005-08-29):
  • released as 1.3.0-final
  • updated the pakfile patch script to use OS specific versions of loki_patch binary.
  • hexen2.spec: updated according to the final loki_patch package
  • Makefile.unix: fixed static linking and explained the requirements for it
  • updated TODO list
  • README: added details for manual installation and patching
  • README, README.demo: added requirements info for glibc

1.3.0: Changes since HoT 1.2.4 (2005-08-29):
  • released as 1.3.0-final
  • updated the pakfile patch script to use OS specific versions of loki_patch binary.
  • hexen2.spec: updated according to the final loki_patch package
  • Makefile.unix: fixed static linking and explained the requirements for it
  • updated TODO list
  • README: added details for manual installation and patching
  • README, README.demo: added requirements info for glibc

  • cl_tent.c, (gl_)screen.c: killed some stupid 'may be used uninitialized' warnings
  • net_chan.c, sv_main.c: fixed two gcc4 warnings of type "pointer targets in passing argument N of 'X' differ in signedness"
  • (gl)screen.c, sbar.c, sbar.h: cleaned-up some of the mess part of which partially formed after the fullscreen intermissions merge: indentation and whitespace fixes, if 0'ed SB_IntermissionOverlay and SB_FinaleOverlay of H2W, killed Sbar_IntermissionOverlay, Sbar_FinaleOverlay and SCR_DrawLoading of H2W along with associated vars. Will probably need more clean-up and unification in future.
  • screen.c: fixed a silly nested extern declaration
  • screen.c: added the missing notes by ID to the H2 version
  • glwin32.h: fixed a typo
  • common.h, cmdlib.h, defs.h: cleaned up endianness macros
  • added ReleaseNotes to the docs folder
  • hexen2.spec: fixed and updateo the rpm spec file

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2005-05-07 (CVS):
  • Backed-out my silly mistake of removing light_level code in R_DrawViewModel
  • SV_StartSound should set SND_OVERFLOW, not SND_ATTENUATION. sound_num should be incremented/decremented by 256, not 255. (ran into this in tutorials, by Kor Skarn, iirc)
  • Display platform in console background
  • [Hexenworld] Don't refuse to connect upon client/server VERSION mismatches. Such things should rely on PROTOCOL_VERSION not simply VERSION

2005-05-05 (CVS):
  • [hexenworld] save downloaded files to com_userdir
  • [h2/hw] profile save cleanup (and another MAX_OSPATH fix)
  • [opengl] report both requested and set video modes (matters for bpp)

2005-05-04 (CVS):
  • [Launcher] Cleaned-up the i++ mess (thanks Steve) and bumped the version slightly (v0.5.1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2005-03-03 (CVS, 1.2.4-rc4):
  • really final rc for 1.2.4 ;)
  • fixed and activated munmap of shm->buffer for snd_oss.c
  • commented-out shm->gamealive thing which serves nothing
  • exact syncing between hexen2 and hw versions of snd_dma.c
  • sys_unix.c cleanup: remove dead and/or win32 code
  • removed unreached return from main (it should have been 0, btw. from Steve)
  • increased MAX_OSPATH to 256 (from Steve)
  • Sys_Mkdir is now int. Its return code should be checked in other places too in future versions (from Steve).
  • Sys_GetUserdir now uses $HOME instead of the passwd struct (from Steve)
  • removed h2mp dependency from length check in Sys_GetUserdir, seems to serve no purpose (from Steve)
  • fixed hexenworld window caption for the software version
  • launcher: default option for sampling rate should be "default"
  • updated the rpm spec file for 1.2.4

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

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

2005-02-15 (CVS, gamecode-1.12f)
  • hexenworld hcode updates:
  • gamecode-1.12f
  • added stubs for the hexenworld missing boss-map functions. hwsv no longer crashes on maps rider1a, rider2c, romeric6, meso9 and eidolon.
  • updated the hexenworld boss files according to h2mp. although coop is broken as of now, maybe someone messes with these one day...
  • added a separate patch file which allows compiling boss maps into hwprogs.dat. this is not of much use, because coop seems broken...

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

2005-02-12 (CVS):
  • added paranoid sound driver checks.
  • added 48000 to the alsa rate switch.
  • opengl cleanup: we can never reach CheckTextureExtensions(), we'll give up in GL_Init_Functions() if we don't like the gl_library.
  • added missing scrolltitle in the software version of VID_MenuDraw()

2005-02-11 (CVS):
  • kill sound/music messing in vid code: S_Init() and CDAudio_Init() are called AFTER VID_Init(), so this should be correct. See hexen2/host.c for reasoning on Win32.
  • kill dead win32 code in linux files

2005-02-09/10 (CVS):
  • hexenworld: kill some unused stuff and clean-up
  • some warnings clean-up

2005-02-08 (CVS):
  • console background transparency in Hexen2 (Draw_AlphaPic() from HW)
  • video modes clean-up:
    - removed cvar _vid_default_mode_win
    - removed all mode descriptions
    - removed all nummodes and VID_NumModes stuff
    - removed all VID_GetXXX and VID_DescXXX stuff
    - beautified the Video Modes menu screen a little
    - removed firstupdate things (vid_sdl.c, VID_Update())
    - ported missing parts of Steven's video/mouse stuff to HW
    - ported all of the above stuff to hexenworld, too
  • if0-out fxPalTexImage2D (we don't use it)
  • display the "meshing XXX" spam for developers only
  • tiny whitespace cleanup in in_sdl.c

2005-02-06 (CVS):
  • first sketchy update to the README files regarding the recent sound changes
  • activated Steven's menu / bgmtype change stuff for HW
  • moved cd_win.c and resource.h to ./win_stuff/
  • tiny makefiles cleanup
  • tiny log entries cleanup in snd_sdl.c, midi_sdl.c
  • removed a duplicate include from HW

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

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

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

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

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

1.2.3: Changes since HoT 1.2.2 (2005-01-20):
  • Release 1.2.3-final.

2005-01-18/19 (CVS, 1.2.3-rc8):
  • Hexen2/HW: Fixed userdirs to work correctly against the -game arg
  • added a "qboolean adduser" arg to COM_AddGameDir() (useful esp. in HW): com_userdir evolves gradually. every search path added has a consequence of additon of (multiple) unnecessary userpaths. avoid it where we can. (original aot also added the very same userdir multiple times)
  • changed all instances of "id1" to "data1"
  • Game Launcher (major changes, version 0.4.7):
  • hopefully fixed fork() / execv()
  • removed clumsy renderer selection, toggling ogl is enough
  • removed res-buttons, made a slider. more compact interface
  • made lower/upper bounds of the res-scale renderer-dependant
  • disallowed launching when proper binary is absent. added a statusbar which notifies the user about this
  • put the widgets to be played with remotely into proper structs for easier handling
  • removed pointless fiddlings with options upon other options
  • handled many demobuild thinkos
  • combined a bunch of on_ThisEvent() type callback functions which had been doing the same x = !x thing
  • fixed / cleaned-up config_file.c
  • removed already commented-out demoness-in-old-mission
  • removed gtk_widget_set_uposition(). we seem to do fine with gtk_fixed_put(). replaced gtk_widget_set_usize() with gtk_widget_set_size_request() for gtk2 builds
  • hacked the version number into the window title
  • much code clean-up/reorganization (apparently)

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

2005-01-08 (CVS, 1.2.3-rc6):
  • don't die on cache mismatch, delete and and reload the new texture
  • slight gl clean-ups.

2005-01-07 (CVS, 1.2.3-rc5):
  • H2/HW: _windowed_mouse default is 1 in gl mode, too.
  • H2: bind Alt+Enter combination to Steven's stuff for fullscreen-windowed toggling

2005-01-03 (CVS, 1.2.3-rc4):
  • HW: gl_ztrick disabled by default for hexenworld, too
  • Also compiled against glibc-2.2 with gcc-2.96 (on rh-7.3) and included properly in the installer.
  • Fixed a compilation error in case of gcc-2.96

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

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

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

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

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