Please do not post bugs or issues in release threads! Click here
Download (OpenGL 3.3 and higher for hardware rendering, Direct3D 9 or later for software rendering)
Highlights
- Widescreen graphics for Heretic and Hexen
- Sprite shadows like in the Build engine. Both in software and hardware renderer.
- 16 bit channel PNG files can be read
- DEHEXTRA working properly now
- various enhancements and fixes for ZScript.
Details
- Account for portals when spawning missiles in A_FireBullets/A_CustomBulletAttack
- fixed return type of Actor.GetCVarString()
- update widescreen submodule
- strip trailing spaces off the lines for intermission texts.
- gave the Raven invulnerability items the BIGPOWERUP flag to ensure proper respawning behavior.
- change switch checking back to vanilla order.
- use stb-image to handle PNGs with 16 bit color channels.
- do not use M_EPI1 and M_EPI2 in any Doom 2 context.
- fixed: explicit float to int casts should not emit truncation warnings.
- tweaked Hexen's weapon pieces so they do not floatbob into the floor with the hardware renderer.
- moved the handling of ending PowerWeaponLevel2 into PlayerPawn.Tick and restored the immediate weapon switch.
- never run the shader timer on the 0th frame. fixes this bug: viewtopic.php?f=2&t=62693
- backend update from Raze.
- fixed time positioning on stat screen.
- pick the proper dot for cutting off the extension in ExtractFileBase.
- added proper string labels for Doom 2 episodes.
- let the CSV parser for the string table handle hex escapes.
- added a few missing statusbar constants-
- don't display keys on the HUD in deathmatch.
- fixed A_CheckTerrain's check for instant death sectors. This was still checking the sector special even though this had been reactored 5 years ago.
- fixed: The PrisonPass's TryPickup method did not properly report successful pickup.
- make the title music only play once, unless a real demo is successfully played.
- SDL: Report Vulkan initialization errors
- give the first 16 DEHEXTRA states proper content.
- make `DI_ALPHAMAPPED` change the style to `STYLE_Shaded` in the status bar drawer
- missing key scan code constants added.
- Screen.ClearScreen and Screen.SetScreenFade script exports.
- PushV function for int and string arrays.
- change `vid_allowtrueultrawide` - -1 allows for any arbitrary ratio for hud aspects, 0 changed to old behavior (max 16:9), 1 changed to old behavior except at 21:9, 1 is now the default.
- `vid_allowtrueultrawide` is now placed in game-specific config, instead of global.
- Don't print the weapon tag if the game is paused
- Allow settable render styles for status bar drawing functions DrawTexture, DrawImage and DrawString
- Made OptionMenuSliderBase::IsGrayed virtual
- Default Heretic's, Hexen's and Strife's default screen wipe styles to match their original counterparts.
- Add sprite shadows for the hardware renderer
- Add sprite shadows for the software renderer
- Expose level_info_t to scripting + helper functions.
- Allow ACS SpawnDecal zoffset and distance args to be fixed point
- Add Polyobj_StopSound special
- handle empty command names when getting key binds
- Don't warn about UDMF comments or user fields
- allow AddPoly for 2D drawer without index buffer, treating the data as a list of triangles.
- filter out macOS resource fork data when loading Zips.
- added a A_SetFriendly function
- remove Vulkan button on startup if Vulkan compilation is disabled
- Fix crash with fog and software light modes.
- Removed depthClamp requirement (note: portals will not render correctly on such devices)
- set libADL and libOPN bank settings (only) to game specific
- A software implementation for gamma, brightness, contrast and saturation effects on SoftPoly. Based on original code by @dpjudas, thanks for the code.
- Bug fix in invulnerability in Doom Software Render Mode and True Color SW Render in SoftPoly.
- Don't let the game start if the saved game passed to -loadgame is invalid. the
- improved multithreaded rendering for the software renderer.
- Make i_timescale cvar virtual. Changing i_timescale in a netgame would cause its callback to recurse
- into itself infinitely. CVAR_VIRTUAL prevents this.
- Fixed crash with voodoo dolls in MP after players quit the game.
- account for KEEPDEPLETED flag when destroying items with InterHubAmount of 0 upon leaving a level
- Fix camera texture aspect ratio in hardware renderer
- Add missing tag for Strife's KneelingGuy.
- New letter И for Strife
- Add GetCharacterName() to retrieve an NPC's name as defined in its dialogue script, if it exists. Otherwise it will just return the same output as GetTag().
- Add tag properties to Strife's enemies.
- removed config updates for pre-GZDoom versions of ZDoom.
- adapt mod_dumb_mastervolume to the increased default volume in ZMusic.
- do not sort level names in the statistics output when saving. Instead do this when creating the data to avoid trashing manual edits. The old sorter resorted all data loaded from the old file as well.
- print a message if saving the statistics file fails.
- implemented replay gain calculation and management. This is done entirely on the streamed sound data, unlike the old relative volume which uses the backend's volume setting.
- Show subtitles for the Entity's greeting lines in Strife.
- Fix crash with wind effect on special water sectors.
- Add SetSubtitleNumber(int num, str sound) ACS function. Works exactly like its ZScript counterpart. The activator of the script must be a player.
- bumped CMake version to 3.1.0 in all projects to reduce warning spam in recent versions.
- escape double quotes in Cocoa IWAD picker's extra arguments
- Fix random crash when travelling between hub maps in multiplayer.
- ported Eternity's Line_QuickPortal
- fixed memory leak in UDMF loader.
- DrawRotated function for status bar.
- Fix portals not working in softpoly (#1323)
- Add a null check in PlayerPawn::CheckFOV
- added m_swapbuttons CVAR for the Windows RawInput and DirectInput backends. The problem I discovered is that these backends do not respect the GUI-side system setting for swapping the buttons, so this needs to be done in-application so that swapped buttons can behave the same in the menu and the game.
- Don't make the switch that reveals the computer core in Strife MAP15 to be repeatable.
- fix: MBF's A_Spawn DEH codepointer should use misc2 as spawnheight, not distance
- adjust defaults for DEHEXTRA states to match other ports:
- Properly abort the program if the SDL window can't be created at all (#1296)
- Dynamic number of models per frame instead of a hard limit of four. (#1298)
- Made Strife NPC's dialog voice audible for all players.
- Fix player not being able to talk to a Strife NPC during netplay, if another player talked to that NPC first. (#1312)
- restored sound-related developer messages
- SoftPoly: Fixed the md3 models, you can now correctly display the frame of the model, in addition, interpolation is added to the model.
- Add missing ZScript constants for the Strife targeter PSprite layers
- SoftPoly: Fixed the screen turning white with invulnerability sphere in Doom and in Heretic avoiding color errors in some pixels when activating the "ring of invincibility". (#1307)
- Added a new intrinsic for class pointers to check if the class is abstract (#1308)
- remove doom2 from the wadsmoosh filter in iwadinfo
- Fixed sprites were not affected by dynamic lights on SoftPoly.
- fixed missing 'player left the game' message
- Softpoiy: Fix black wall sprites
- Softpoiy: Fix line portal clipping bug
- add `-noautoexec` command line parameter to disable the execution of autoexec.cfg files
- add Pi and some other constants to ZScript (#1304)
- Fix Additive Shaded renderstyle for UDMF things bugged
- backend update from Raze.
- another wallsprite crash fix: viewtopic.php?f=56&t=71450
- Add support for zero size buffers as the hwrenderer uses that!
- Fix crash when trying to open unreadable IWAD files
- Fix crash when following symlinks to nonexistent IWAD files
- fixed incorrect extension of overridden function prototype. Prototype of overridden function with optional argument(s) missing could extend unrelated prototype of previously defined function when their arguments and return value(s) match
- Fix dancing sprites regression
- fixed uninitialized global rolloff in sound engine. Depending on SNDINFO definitions, type of global rolloff could left uninitialized, and linear rolloff might be treated as logarithmic
- fixed: FTextureManager::ReplaceTexture did not calculate the upscale flags.
- add "hidepartimes" MAPINFO/GameInfo property
- Hitscan attacks can now hit SPECTRAL actors if the hitscan puff has SPECTRAL flag set
- Add progress bar for SDL backend
- Fixed "Messages ON" not being printed.
- added initialization of linked sectors. Resizing of linked sectors arrays during serialization could lead to processing of pointers to junk data
- Fixed nodes were not rebuilt after loading broken extended nodes.
- vid_aspect is now set to change to 21:9's ACTUAL aspect - 64:27
- screen elements now scale to 64:27 properly. to restore classic behavior, set cvar `vid_allowtrueultrawide` to false
- Fix ScriptCall missing default arguments
- Add alternate "Full" mode for PowerIronFeet that prevents leaky damage.
- Fix ALWAYSFAST actor flag.
- Side By Side Letterbox Display mode (#1255)
- add sv_instantreaction dmflag
- Fixed: Monster reaction time was always zero with fast monsters and not just on nightmare.
- fixed incorrect sound definition for DSMANATK in Dehacked.
- Fix the "Max" constant being incorrect for unsigned int types.
- add new detection hashes for newer versions of nerve.wad
- update $musicalias to allow iwad remapping when used from game_support.pk3
- add music aliases for the unity version of Doom/Doom2 for digitized game soundtrack
- Modify Shape2D so that it manages its own vertex buffer rather than using the draw list (#1249)
- add support for DEHEXTRA's extended sound range (#1258)
- Fix IfItem amount not being checked (#1262)
- Fix MAPINFO definitions for "enableskyboxao"
- Always allow skyboxes by default
- Add option to disable skyboxes through mapinfo
- Disable AO for skybox portals (can be forced back with MAPINFO flag).
- Add autodetection for GOG's releases of Heretic and Hexen. (#1259)
- Fix model normals being distorted by MODELDEF scaling.
- added check for M_IsAnimated to TryRunTics.
- added the option to look for music by using a truncated 8-character variant of the given name.
- fixed: strbin did not check for a terminating 0-character right after an escaping backslash.
- allow targeting ARM64 on Windows
- fix keyboard repeat events not being sent to menus if TranslateKeyboardEvents is true
- Fixed: RandomSpawner spawning another RandomSpawner spawning a missile could result in the second RandomSpawner being erroneously destroyed.
- Simplify manual sound rolloff handling
- change all optional game support archive loaders to scan the program folder
- allow drawing text using fonts with an external translation
- fixed: IceGuyFX2 set its owner too late.
- implement slider background color change - viewtopic.php?f=15&t=70616
- Fixed: If AbsorbDamage resulted in an item having been destroyed, the following items in the inventory chain were not processed.
- Fixed weapon bob jittering.
- fix missing SKILLP property in zscript code
- do not keep impact decal that fails to stick to a wall
- fixed inverted menu setting for 'Disable menu clean scaling'
- fixed crash when drawing status bar on automap
- fixed issue with parsing useowncoloradd UDMF flags