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

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

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

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 icculus.org sources).
  • removed outdated entries from OSX Xcode files.
  • updated beta release version / date (1.4.3-rc2 / 2008-03-25)
  • marked the cvs snapshot from Mar. 25, 2008, as 1.4.3-rc2.

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

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

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

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

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

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

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

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

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

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

2008-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 msinttypes.googlecode.com)
  • added msinttypes/stdint.h conditional include for M$VC.
  • makefiles: added our locl w32stuff directory to the includes path so that include msinttypes/stdint.h works. removed unnecessary mingwdir and djgppdir paths.
  • updated release date to 2007-01-10.

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

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

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

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

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

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

2007-12-04 (CVS):
  • added aliases for class definitions because some of them are referenced with a different name in the progs.
  • filtered invalid class numbers in Host_Class_f. besides, the demoness 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 127.0.0.1. added interface scanning to overcome the problem. from the quakeforge tree.
  • UDP, unix: added command line option -noifscan, in case someone wants to disable network interface scanning for some reason.
  • updated release notes for v1.4.2 (2007-08-27.)
  • made hexen2 dedicated servers to start the demo1 map if map map was specified on the command line.
  • a few more safeprint changes in the net files.
  • fixed an incorrect size argument (WIPX_AddrCompare, sa_nodenum, 6, not 4) in the windows ipx driver.
  • minor cleanup.
  • vid_win.c: whitespace clean-up, dead code removal.
  • net_wins.c: minor clean-up.
  • net_wipx.c: minor clean-up.

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

2007-08-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:
    http://www.quakesrc.org/forums/viewtopic.php?t=3664
    http://www.quakesrc.org/forums/viewtopic.php?t=6633
  • dealt with some minor details in windows opengl version.

2007-07-29 (CVS):
  • added comment labels for texture modes in GL_Upload8.
  • updated the list of known bugs: added more info to the amd64 debug builds entry. removed the network non-interoperability entry, can't reproduce the report. 2007-07-26.
  • rearranged the compile instructions according to Levent's suggestions.
  • changed S_IFREG and S_IFDIR usage into S_ISREG and S_ISDIR macros. commented out one unnecessary S_ISREG check.
  • changed some of our variadic macros so that gcc extensions aren't used if running in c99 mode.
  • gl_rmisc.c: removed some dead code.
  • updates to gl_draw.c: texture mode >= 10, hence the sprite boolean in the GL_Upload functions were never set or used , removed them along 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 (http://jurajstyk.host.sk/) of Juraj Styk with a few fixes and adjustments. works fairly most of the time, even gives a 55.1 fps timedemo for demo1 with viewsize maximized at 320x240 resolution on a pentium3-800 (256 kb cache size) whereas the binary compiled with intel assembly gives 71.7 fps. tested on amd64, x86 and ppc.
    known problems: the span drawer gets crazy sometimes and draws a span from a point toward the rightmost end of the screen. the places and the frequency it happens seem to vary by the gcc version used. to be looked into.
  • d_edge.c, d_surf.c, r_misc.c, link_ops.h: fixed a few probable 64 bit compatibility problems. we now require stdint.h, included from q_types.h.
  • fixed more of probable 64 bit compatibility problems. a few minor clean-ups here and there.
  • added back the near versions of calls in the assembly files in commented out form for reference. before, I removed the nears for yasm support, otherwise it used to fail with an error message: 'no NEAR form of that jump instruction exists'.
  • added cvs version headers to the assembly files.
  • now that the software renderer clients can now be compiled on non-intel, removed the x86 exclusive arch dependency from the rpm spec file.
  • updated the documents after the non-intel software renderer changes. removed the NonIntel.log and NOTES.porting files.

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

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

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

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

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

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

2007-06-04 (CVS):
  • bound the linux 3dfx glide gamma hacks for the old Voodoo Graphics and Voodoo2 cards to a new makefile option USE_3DFXGAMMA, enabled by default. the compiler generates code only if it sees the USE_3DFXGAMMA definition. at runtime, the hack is activated by the -3dfxgamma commandline argument only on the old 3dfx cards, but this is for completeness. also did some minor cleanups and fixed a float division bug with GAMMA_MAX.
  • minor 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 sv.active, not sv.name[0] before starting the demo1 map.
  • hexen2 dedicated server: Host_Map_f must rely on sv.active, not sv.name[0].
  • hexen2: fixed mapname reporting for dedicated servers.
  • killed some unnecessary r_local.h includes.
  • added qio_filepath: it points to the path of the last file opened through QIO. note: not meaningful (NULL) for files in a pak.
  • midi changes: SDL and QuickTime midi will not blindly cache the midi files in userdir/gamedir/.midi anymore. if a music file is not in a pak file, it will be used directly. otherwise it will be extracted directly into the root of userdir as tmpmusic.mid. the userdir/.midi cache directory is obsoleted now.
  • since the userdir/.midi directory is now obsoleted, it no longer needs to be moved by MoveUserData().
  • re-diff'ed the external-music-file-support patch after the midi changes.
  • hexen2ded: in PF_lightstylestatic copy the value to d_lightstylevalue (from the hexenworld server version).
  • removed an old #if 1 of mine from Chase_Update.
  • updated the comments in the external-music-file-support patch.
  • incremented the engine version to 1.19 for Hexen II and 0.19 for HexenWorld. incremented the gamecode version to 1.19 for consistancy with the engine version. updated the relevant documentation and scripts. marked the snapshot of today (Apr. 03, 2007) as 1.4.2-pre3.

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

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

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

2007-03-23 (CVS):
  • fixed compilation on windows.
  • makefile fixes: COMPILE_32BITS must also affect DEBUG builds.
  • added extra optimization flags to hexenworld server build. misc clean-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 autogen.sh and configure.in.
  • xdelta: fixed out of memory condition caused by not properly unmapping files (from the loki_patch tree: Sam Lantinga, Apr 10, 2001).
  • updated the launcher README file.
  • xdelta: updated the readme file for our customized 1.1.4b version.
  • 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.org
  • xdelta: touched the stamp-ser files in order to avoid Emacs-Lisp.
  • xdelta: updated the readme file for our customized version.
  • launcher: xpatch/loki_xdelta.c: synced with the latest xdelta version.
  • launcher: xpatch/loki_xdelta.c: small clean-up.
  • gamedata: updated the xdelta update patch script for xdelta-1.1.4.
  • updated the README file in gamedata/patchdata about xdelta.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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