Hammer of Thyrion (uHexen2) release notes:
Changes in v1.5.6: (Mar. 15, 2013.)
- Screen: implemented Hor+ style field of view (FOV) scaling, useful for
widescreen resolutions. configured by new cvar fov_adapt: set it to 1
and your fov will be scaled automatically according to the resolution.
enabled by default. opengl and software renderers both supported.
- Screen: viewsize greater than 120 now disables the hud (use the screen
size slider in the options menu.)
- Progs VM: Fixed a corner case thinko in version6 progs execution.
- Server: changelevel failures, e.g. in case of non-existent maps, are
now considered as error, so that the clients do not get stuck in the
connected state anymore.
- Server: accept maplist.txt only if it is from the same game directory
as progs.dat itself or from a searchpath with a higher priority.
- Timidity (Unix MIDI): Multiple fixes, including memory errors found by
- Mac OS X: A new icon.
- Music: Support for Opus codec. (edit the makefiles to enable it when
- Software renderer: fixed color shifts from area contents or power-up
items usage staying persistent after a disconnect.
- OpenGL: worked around weird mods, e.g.: project peanut, where certain
models are sometimes drawn "white" because the mod's hcode initializes
those entities with non-existant skins.
- OpenGL: gamma fixes for several platforms.
- HexenWorld: opengl fixes for the shownames feature, other gl updates.
- Hexenworld, gamecode: hw and siege map cycling setup is done using the
localinfo variables just like in quakeworld, strings.txt abusing is no
more. See docs/README.hwsv for brief instructions.
- Verified correct compilation by upcoming gcc-4.8 and by clang-3.2.
- Fixed several other minor bugs, some found by valgrind. Incremented
engine versions for hexen2 to 1.28, hexenworld to 0.28, and gamecode
version to 1.28.
Changes in v1.5.5: (Jan. 02, 2013.)
- Utils (light, vis, jsh2color): Added unix pthreads support for running
multi-threaded. Enabled windows multi-threads on all platforms instead
of alpha-only. Default is single-threaded. Use "-threads #" to specify
the required number of threads. (max: 32. -1 tries to autodetect.)
- Utils, qbsp: Added a command line option "-oldhullsize" to replicate
the old h2utils/qbsp behavior of using the original hexen2 sizes for
hulls #5 and #6, not H2MP ones, if so needed.
- Utils, hcc: Added a command line option "-old" to replicate old hcc
versions' behavior of allowing the STR_ constants be saved globals and
letting precache_file() calls go into progs.dat, if so needed.
- Utils, dcc: Some small fixes. Added new command line options -fields,
-functions, -globaldefs, -prglobals, -statements and -strings, which
dump the related information.
- Utils, all: Some fixes/improvements to command line options handling.
- Support for the rarely used progs version 7 spec with 32 bit offsets
instead of 16 bit of the original version 6: The engine can run both
with v6 as well as with v7 progs. The hcc and dhcc tools are changed
to compile the progs as v6 whenever possible for compatibility, or as
v7 otherwise. they can also be made to compile specifically v6 or v7
progs by the new command line options -v6, -v7, or -version <n>. The
dhcc tool can now decompile both v6 and v7 progs.
- Fixed a respawn-after-death issue which sometimes rendered the player
unable to move backwards, or unable to use certain inventory items, or
several other weird effects (bug #2176023.) The bug was there since
the original hexen2 source release.
- New quake2-style noclip movement. (from Fitzquake; configured by new
cvar sv_altnoclip, enabled by default.)
- Client: Fixed a demo playback failure when certain conditions are met.
- Client: Fixed a minor and rare intermission glitch.
- Client: unbindall before loading stored bindings (configurable by new
cvar cfg_unbindall, enabled by default.)
- SDL, keyboard input: Fixed control-character handling in unicode mode.
- All, keyboard input: Several tweaks.
- Software renderer: Disabled progress bars drawing, as it was reported
to cause excessively long load times on some systems. Disabled the
rotating skull drawing during file i/o.
- Software renderer: Fixed occasional crash when sprites rendered very
close to the camera origin, such as the teleportation puff. (used to
happen mostly in 64 bit builds. bug #3562290.)
- OpenGL: Fixed a crash in texture resampling code with 3d hardware max
texture size greater than 1024 and wide-enough textures.
- Windows: Removed hooks for QHOST, which is (was) a proprietery server
- Mac OS X: packages now have ogg/vorbis and mp3 music playback support.
- Mac OS X: New MIDI driver.
- Mac OS X: Support for text paste from OS clipboard to console. Support
for the Apple (Command) key.
- Mac OS X: Support for building using the makefiles and cross-compiling
- MorphOS builds: added missing -noixemul to the compiler flags.
- MorphOS, AROS, Amiga: Support text paste from OS clipboard to console.
- All platforms, gameplay: fixed bug in original hexen2 hcode which used
to cause weapon switching to get stuck if several weapons were picked
up too fast. fixed a minor bug in assassin's fourth weapon in powered
mode. cleaned up weapon cycling code, minor fixes/clean-ups in weapon
selection. fixed cube of force, so that it doesn't attack the player's
own summoned imp anymore. several other hcode cleanups.
- All platforms, hexenworld: pak4.pak from the ancient beta 0.11 version
is now recognized properly.
- All platforms, h2patch: Simplifications.
- Windows: support for Visual Studio 2012.
- All: Incremented versions for hexen2 engine to 1.27, hexenworld engine
to 0.27, and gamecode version to 1.27.
Changes in v1.5.4: (July 01, 2012.)
- OpenGL: Fixed screen flickering resulting from progress bars drawing
with some drivers (bug #3519666.) uHexen2 no longer draws the loading
progress bars during level load in opengl mode.
- OpenGL (Windows): Fixed a bug which would prevent running on Windows8
consumer preview versions, unless 32 bit color depth was specified on
the command line. Works just fine now.
- Music playback: Made sure that the file's channels count is supported.
- Unix MIDI (Timidity): Configuration file timidity.cfg is now searched
first under the user directory and the installation directory before
the common system locations. Full absolute path of timidity.cfg can be
specified by setting the TIMIDITY_CFG environment variable, too.
- Client, all: Revised the intermissions setup code.
- Client, all: Fixed a few effect abslight and scale flags, which were
another bunch of original hexen2source bugs.
- All platforms: Majorly revised path name handling and filesystem code.
- Support for Solaris. Support for Amiga, AROS, MorphOS. Added missing
- Keyboard input: Made the keypad keys to send separate key events in
game mode. (for Windows and SDL-using builds, e.g. Linux/Unix, OSX.)
- Joystick: Added joystick (gamepad) support for all SDL-using builds,
e.g. Linux/Unix, MacOSX. The new cvars are documented in the README.
- Mouse (DOS): Wheel is now detected and used by default. Use "-nowheel"
command line switch to disable it.
- Mouse (DOS): Pausing the game, moving the mouse and then unpausing it
doesn't change the view angle anymore.
- All platforms, gameplay: Fixed a rare crash in the ambient fish hcode.
- All platforms, h2patch: More detailed output and better reporting in
case of incompatible or corrupted pak files. Same with the pak-patch
functionality of the gtk-launcher application.
- Utils, dcc (progs decompiler): Fixed an infinite recursion issue when
decompiling the hcbots progs.dat. Fixed decompiling of rival kingdoms
progs. Changed decompiler memory usage. Made -src command line option
of dhcc to behave the same as it does with hcc. Added -name command
line option either for specifying a name other than progs.src for the
compiler like hcc itself or for specifying a name other than progs.dat
for the decompiler.
- Utils, hcc (HexenC compiler): Cleaned up the -src command line option
- All: Incremented versions for the hexen2 engine to 1.26 and hexenworld
engine to 0.26. Incremented gamecode version to 1.26.
- Several source code cleanups and documentation updates.
Changes in v1.5.3: (Apr. 10, 2012.)
- OpenGL: Made non-power-of-two textures support configurable by a cvar,
gl_texture_NPOT, disabled by default: Fixes serious slowdown on some
old graphics hardware, such as R300 to R500 class Radeons on Mac OS X,
which the driver is lying about its capability. Added a menu entry to
enable/disable the feature (OpenGL features -> NPOT textures.)
- Sound: The client no longer tries updating the ambient sounds when not
connected, ie. when no map is active.
- Several updates to the documentation.
Changes in v1.5.2: (Apr. 04, 2012.)
- All platforms: Incremented versions for the hexen2 engine to 1.25,
hexenworld engine to 0.25, gamecode to 1.25 and the gtk-launcher to
- Verified correct compilation by clang (using v3.0) and by the new gcc
- All platforms, gamecode: Fixed occasional crashes in the original
hexen2 game with the Paladin's axe.
- All platforms, hexen2 net play: fixed connection getting stuck
sometimes after displaying the "Connection accepted" message.
- All platforms: Ported server model code optimizations and cleanups
from h2ded to hwsv (hexenworld server).
- All platforms: Added support for transparent console in the software
renderer, controlled by new cvar "contrans". The valid values for
contrans are 0 (solid), 1 (transparent) and 2 (very transparent).
- All platforms, software renderer: Fixed wrong transparency issue with
certain models when not using the x86 assembler drawing routines.
- All platforms: Added on-screen fps counter to hexen2 (do "showfps 1"
from the console). Updated existing showfps code of hexenworld.
- All platforms, OpenGL: Added anisotropic texture filtering support
(gl_texture_anisotropy). Revised existing texture filters. The texture
filtering options now saved to the config.
- All platforms, OpenGL: Added support for non-power-of-two-textures
- All platforms: Implemented fov in opengl hexen2, useful for widescreen
resolutions. Revised the implementations in hexenworld, as well as the
- All platforms, OpenGL: Fixed shadows spot which was broken back in
2007 during v1.4.2 development.
- All platforms, input: Discard mouse/joystick motion when in camera
mode. Discard the accumulated mouse motion when starting a game or
when loading a saved game to prevent any unintended viewangle changes.
- Windows input: Disabled GDI mouse acceleration flags for better
behavior on XP and newer versions.
- SDL / Unix: Revised SDL unicode and dead keys support.
- SDL / Mac OS X: Fixed console and message mode backspace key (bug
- Unix / SVGAlib mouse: Fixed missing camera mode and ideal roll
- Unix / SVGAlib video: Fixed planar modes when using the svgalib_helper
kernel module. Removed the need for x86 assembly for compilation and
the linux-only limitation.
- Unix / SVGAlib video: Fixed messed up colors upon coming back from a
- Unix: Fixed compilation on GNU/kFreeBSD (Debian, #657793)
- Unix, MIDI: Several updates to the Timidity backend.
- Timidity, Windows MIDI: Support for Microsoft RMID format.
- Windows MIDI: Fixed broken tempo with certain midi files (problem was
introduced in version 1.5.1)
- Windows software renderer: Fixed restoring of the saved video mode on
startup (problem was introduced in v1.4.4.)
- Windows software renderer: Disabled MGL DirectDraw support by default
(causes more trouble than it's actually worth.) Can be enabled by
-useddraw or -usedirectdraw command line switches, if required.
- All platforms: Revised the cross-episode demo recording and playback
behavior, allowing the intermission screens to be displayed.
- All platforms: Removed code that prevented deathmatch and coop cvars
to be set at the same time, which was reported for possibility of
causing compatibility issues with mods.
- All platforms: Majorly revised the support mechanism for different
versions of progs. Added old v1.03 progs support to hexen2, added old
v0.11 and v0.14 progs support to hw.
- All platforms, h2ded: Removed error when neither coop nor deathmatch
is set and rely on server admin.
- All platforms, hexenworld client: Fixed a crash in the credits display
when one waited long enough to see all the text to be printed.
- Unix / gtk-launcher: Added support for gtk3. Several bug fixes and
- Mac OS X: Fixed compilation failure due to a typo in MIDI code
introduced in v1.5.1.
- DOS: Added WatTCP (WATT-32) networking support for hexen2 internet
- DOS: Added experimental DOS support for hexenworld using the WatTCP
library. (doesn't work yet due to WatTCP bugs.)
- DOS: Added "-nogus" command line option so that UltraSound initializa-
tion can be skipped by the user if necessary.
- Miscellaneous source code cleanups.
Changes in v1.5.1: (Nov. 21, 2011.)
- All platforms: Fixed an inventory icon scrolling bug.
- All platforms: Removed a needless limitation on config and save names.
- Linux (Unix/SDL): Fixed SDL software renderer bug that the image was
not stretched to fill the screen.
- Linux: Fixed the gtk-launcher crash with new glibc.
- Windows: Updates to the midi playback code.
- DOS: Fixed failure on computers with more than 2GB memory.
- DOS: Fixed a stack corruption bug in VESA initialization.
- DOS: Added support for the -cddev command line arguments.
- Unix: Added some paranoid checks for string buffer sizes.
- Linux/Unix: Provided cd-rip scripts for less common game media, i.e.
the Xplosiv re-release and the Matrox m3D oem versions.
- All platforms: Fixed logic in the hwmquery tool that would cause less
number of servers to be displayed than what had been received from
- Bumped versions for the hexen2 engine to 1.24, hexenworld to 0.24,
hwmaster, hwrcon and hwterm to 1.2.7, hwmquery to 0.2.3 and the gtk
launcher to 1.0.6.
- Build system updates and source code cleanups.
Changes in v1.5.0: (Sep. 15, 2011.)
- bumped hexen2 engine version to 1.23, and hexenworld engine version to
0.23. bumped the gamecode version to 1.20.
- added support for ogg, mp3 and wav external music files to be played
instead of the original midi files.
- added interface for music streams to the sound layer and dropped the
SDL_mixer dependency. many changes in sound and midi layer. imported
libtimidity into the source tree and applied several fixes.
- sound: changed internal driver interface to provide a better chance of
engine startup with sound, especially for linux (unix) users.
- unix midi: reimplemented through the new music streams interface using
- windows midi: ignore midi hardware volume adjustment capability under
windows vista/7 which fixes music volume control messing with the main
- fixed a bug in multiple zones management, which wasn't easy to hit but
was deadly when it was hit.
- fixed an old game load/save corruption bug.
- fixed an old load bug where items dropped by monsters not being
visible or getting lost upon saving and loading the game.
- fixed an old load bug where prize artifacts in the Temple of Mars not
being visible or getting lost upon saving and loading the game or by
changing the level and reentering.
- fixed an old load bug where killed monsters didnt respawn in nightmare
difficulty in the mission pack upon saving and loading the game or by
changing the level and reentering.
- software renderer (C-only): fixed a segmentation fault with Crusader's
- software renderer: fixed crashes at high resolutions with r_waterwarp
- added new cvar sys_throttle in order to throttle the game loop just a
little bit and run cooler on new fast systems. the default value of
sys_throttle is 0.02, acceptable values are between 0 and 1. changing
it to 0 disables throttling.
- opengl: fixed overlapping flickering textures, i.e. the infamous brush
model Z-fighting. the fix is controlled by gl_zfix: default value is 1
(enabled). setting it to 0 disables the fix and brings back the old
- opengl: always use GL_LINEAR as lightmap filter. made gl_texturemode
command not affect lightmaps.
- opengl: fixed an issue in net games where joining players would appear
untextured (bug #3288081).
- opengl: updated code to use glGenTextures().
- joystick, windows: added support for 6th joystick axis for up movement
controlled by joyupthreshold and joyupsensitivity.
- fixed hexenworld server issue which used to crash servers upon running
the romeric5 (Temple of Mars) map, which now loads fine.
- fixed h2ded (hexen2 dedicated server application) bug that the swords
on the weapon racks in the demo2 and the village1 levels would be
placed incorrectly (bug #3344613).
- hexenworld server: fixed segmentation fault in case of bad pointers in
- fixed HexenC bug where, if there were a summoned imp around, a blinked
away wizard wouldn't reappear even after imp went away (bug #3314808).
- fixed a HexenC bug where the summoned imp didn't pick the Egypt snake
boss as an enemy (bug #3314810).
- improved soul spheres' HexenC code.
- fixed a HexenC where medusa's gaze attack sound would persist when she
- fixed an Eidolon/imp HexenC bug which used to render Eidolon idle.
- fixed a HexenC bug which would prevent a yakman from appearing during
the 'Trial of Strength' in the 'Temple of Phurbu' (tibet7) level of
the mission pack, rendering the level not completable (bug #1112533).
- fixed a mission pack HexenC bug where a pentacle monster in the tibet1
map became invulnerable when it got crushed by a door.
- fixed a wheel of ages message to report 360 degrees instead of 30 in
the egypt2 map.
- fixed a HexenC bug which might prevent Eidolon to land.
- fixed an Eidolon HexenC bug which might prevent the finale screen to
- fixed a HexenC bug where werepanthers became "undead" when an assassin
killed them by her bombs.
- fixed mission pack HexenC bug which used to prevent the finale screen
to trigger if Praevus were killed too quickly.
- handled several map quirks thanks to careful works by Thomas Freundt
and Keith Rozett.
- fixed trigger_crosslevel issue with spawnflag 8 which used to prevent
one of the prizes in Temple of Mars to appear.
- removed the ugly hack of reducing teleport push speed to 225 in order
to overcome the problem of reaching the Cathedral's balcony and the
holy cross, and added a modified entities file for the Cathedral map
- added support for external entity file loading which makes it easy to
handle map quirks. ent files are accepted only if they come from the
same game directory as the map itself or from a searchpath with a
higher priority. external entities loading is controlled by the cvar
external_ents: default value is 1 (enabled). setting it to 0 disables
- revised lit file loading. lit files are now accepted only if they come
from the same game directory as the map itself or from a searchpath
with a higher priority.
- added new h2patch tool, an easy to use xdelta3-based standalone pak
patch tool for purposes of updating to hexen2 v1.11 data files.
updated the gtk-launcher's patch facility to use the same backend.
- utils, hcc: fixed broken switch statement compilation when there is an
implicit break in the last case.
- utils, dcc: fixed a wrong decompilation of an "if" opcode into a
"while". some source code revision.
- utils, hcc: dropped support for the old version of hcc tool.
- tested compilation using Visual Studio 2010.
- source directory layout reworked, repository moved from cvs to svn.
* Changes since v1.4.3 mostly during the unreleased 1.4.4-beta cycle:
- fixed broken software renderer binaries from C++ compilers with x86
assembly enabled (do not use the bool keyword of C++).
- compilations using the new gcc-4.4, 4.5 and 4.6 versions are tested
- added support for 64 bit windows versions (x64).
- added support for mingw-w64 compilers.
- added support for Microsoft Visual Studio 2005 and Visual Studio 2008.
- filesystem: fixed an oversight with builds without user directories,
where the "-basedir" command line argument failed to change the
internal userdir variables.
- fixed stuffcmds so that arguments to commands can have '-' or '+'
within their names. A command like "hexen2 +map mymap-01" works
- increased default zone memory size to 384kb.
- fixed a rare segmentation fault with certain command line arguments
(bug was introduced sometime between version 1.3.0 and 1.4.0).
- fixed a problem in sound effects code where some teleportation sounds
might have got lost.
- alsa audio: added workarouds for better behavior on some linux setups.
- hexen2 client: pause/resume midi (background music) along with cdaudio
upon pause message.
- windows cdaudio: added new command line option -cddev for choosing the
cdrom drive to use. syntax: -cddev E
- windows cdaudio: fixed MCI errors when resuming the last track of a
- net: made the socket api usage compatible with windows especially with
relation to 64 bit windows.
- net (hexen2): fixed BSD and Mac OS X socket api usage.
- opengl: reworked text and HUD scaling menu option.
- opengl: fixed an issue that changing resolution from within the game
might crash on Windows Vista.
- software renderer: fixed a long standing stack corruption bug which
used to cause alias models not to be drawn at all.
- stricter checking on the values pulled out of .wav file chunk headers.
- fixed rare game crash when battling bosses with assassin class, using
the tome of power and launching at the enemy a lot of projectiles.
- renamed model_t to qmodel_t in order to avoid conflicts on solaris.
- fixed the "mirrored prints" problem of hexen2 console at high
- fixed the colored prints of hexenworld console.
- fixed 'array going out-of-bounds' (utils/map.c) and bogus 'maybe used
uninitialized' warnings (sbar.c) from gcc-4.3.
- fixes to the SVGALib driver. it is functional now, both for hexen2 and
for hexenworld clients.
- fixed bug #2176384: in windowed mode, when you save using the menus,
the game used to quit the menu without grabbing the mouse properly.
- windows mouse: fixed behavior upon minimize/restore in windowed mode.
- slightly increased the buffersize for sdl audio. made it to print a
little more detailed info at startup.
- fixed hexenworld client message parser so that midi and cdaudio don't
play at the same time.
- launcher, patching: rewritten the inter-threads log printing and fixed
the erratic crashes on smp systems. launcher version is 1.0.5 now.
- hexenworld master server: unknown packets are properly output as
hexdump. hwmaster version is 1.2.6 now.
- 3dfx gamma hacks are disabled by default at compile time (see the
- killed compatibility with user directories from HoT-1.4.0 and earlier
which didn't operate with a data1 subdirectory. they are ancient
- added initial support for standalone free contents (mods) as an extra
- utils, jsh2color: worked around a stack corruption resulting in
crashes due to the code's way of dealing with TEX_SPECIAL cases.
- utils, lmp2pcx: Tweaked and documented palette file usage, allowed the
embedded palette again.
- utils, qbsp: accept more than one wad file specified in the value of
the "wad" key. the wad file names must be separated by a semicolon.
spaces are allowed in the file names. quoted paths aren't allowed.
- utils, qbsp: the absolute paths in wad values are not touched, ie. the
paths beginning with a '/' on unix or with a drive specifying string
like "C:\foo\bar.wad" on windows. all other values with no path
information or relative path information are prefixed with the project
path. this fixes the issues reported for qbsp usage from within
- added back some unused code for future reference. removed some truly
- other minor fixes.