Releases: ZDoom/gzdoom
GZDoom 4.11.0
Highlights
- Several new languages: Danish, Norwegian, Swedish and Turkish
- cleanup of Doom's and Chex Quest's small font to use proper character heights for international support.
- extended all fonts to be capable of handling all European languages which are in common use.
- First stage of DSDHacked support. Tested only with crusader.wad for now.
- The build system was transitioned to optionally use vcpkg, which allows building GZDoom on Windows by running a single batch file.
- WebP and QOI support for textures.
- sanitized the light mode selection to make it a first class mapping feature by separating map dependent light mode setup from performance related user preferences for the default setting.
- Linux: GTK startup now offers all the options of the Windows variant
- lots of new ZScript features.
Bugfixes
- screen size settings are now properly saved.
- fix UMAPINFO boss action clearing.
- MBF21's BOSS flag now implies NORADIUSDMG.
- remove memory leak in
A_ChangeModel
- fix OpenGL ES selection on the windows startup dialog
Details
- Changed the variable type of Crossed3DWater. Seems like there was some kind of oversight. Crossed3DWater is an F3DFloor pointer, not sector_t.
- Add ZScript constants used by FallAndSink
- Switch to miniz from zlib
- fix for Genesis of Descent E1M2, which is impossible to complete on ITYTD/HNTR. I had to decompile the ACS script to figure out what was going on, basically at one point you get locked into a room and have to kill exactly 3 enemies with TID 215 for the door to unlock. One of these is a Baron tagged for only Medium and Hard, in his place is an Imp #1184 that has all the right script setups but is not set to appear on any difficulty. The fix is to simply have this imp appear on Easy.
- fixed the overlapping sector handler in hw_fakeflat.cpp. This picked the wrong plane as the proper texture cutoff.
- fixed: The UDMF loader did not adjust the floor/ceiling overlap state after processing UDMF sector plane properties.
- fixed: EV_DoDonut checked the wrong compatibility variable and missed all map specified flags.
- Fix gameinfo load from same directory as file containing gameinfo lump
- validate partner seg index in LoadGLZSegs before using it
- added compatibility handler for Phocas Island 2 MAP01.
- fixed doublebind check with automap. For the automap C_DoKey gets called twice, once with the automap bindings and once with the regular bindings and doubleclicks.
- clear the Dehacked string table after passing it to GStrings. For some reason std::move does not work here so make sure it won't stick around.
- stop all cutscenes before the ENDOOM screen.
- fixed: Boom's generalized crushers must stop 8 units above the floor. This required changing the special, so a new one was added to avoid altering Generic_Crusher.
- Fix a very rare crash with complex Polyobjects
- add support for not localizing some text functions, and modify menu text fields to use this
- let Dehacked set the implicit missile flags.
- fix ammo consumption of powered up Phoenix Rod.
- add unexplored secret color for overlay automap to the menu
- made all FileReader implementations 64 bit capable.
- added a nomirrors compatibility handler and applied it to Conf256's CONF55 map. This is for disabling broken plane reflection setups.
- When compat_floormove is enabled prevent sector floor from lowering if a thing is stuck in the ceiling (vanilla behavior)
- fixed M_GetSavegamesPath for Linux.
- Add Inventory::ModifyBob and Inventory::ModifyBob3D
- Expose OF_Transient to actors as bNoSaveGame
- add StartGameDirect function
- fixed: MBF21's BOSS flag implies NORADIUSDMG.
- fixed: For Dehacked, A_CPosAttack needs to use a hard coded attack sound. This discrepancy is ancient, so the approach used for the shotgunner does not work here and some hacks are needed to remap the function only for Dehacked.
- implemented the remaining dynamic structures of dsdhacked
- dsdhacked: Allow dynamic creation of new actors
- dsdhacked: allow dynamic creation of new states.
- add float.equal_epsilon and double.equal_epsilon
- Allow building gzdoom with Vulkan with either X11 or Wayland WSI integration through CMake options
- use stb-image for JPEG decoding because the old library provides no advantage over it.
- Allow disabling colors for NameAllKeys
- avoid high stack usage in anmtexture.cpp
- added DSDA's passover/nopassover keys to the MAPINFO parser.
- use a string pool to store all filenames and in the file system. this avoid lots of small allocations for data that will released in bulk later.
- use the lump cache directly for FileData. This was the final puzzle piece to allow using memory mapped files in the future.
- use better hash function in the file system. This is djb2 which is supposedly one of the best string hashing functions around.
- rewrote dir CCMD using ScanDirectory and avoiding I_ChDir entirely.
- use ScanDirectory in all places where the findfile API was used.
- WebP image support
- added safeguards against very early access to console variables in Cocoa backend
- Add support for QOI image formats
- block the centerview CCMD if the player has TOTALLYFROZEN. This is deliberately done this way, instead of placing the check inside PlayerPawn::CheckPitch, because there may be other situations where we don't want to block the centering function (APowerFlight::EndEffect being one such case)
- replaced zstrformat with stb_sprintf.
- A_Chase CHF_DONTLOOKALLAROUND
- Add Weapon::ModifyBobLayer , Weapon::ModifyBobLayer3D and Weapon::ModifyBobPivotLayer3D
- allow explicit casts between vectors of different underlying types
- Fixed BlockingLine giving erroneous results
- add CountSectorTags/CountSectorTags/CountLineIDs/GetLineID
- Exported reflection functionality. Localized reflection code to a single function. Fixed an error where NOSHIELDREFLECT was being checked on the wrong Actor. Fixed an oversight where MIRRORREFLECT was checking for valid target despite not needing one.
- Added ShadowAimFactor and ShadowPenaltyFactor. These properties allow to specify how much an actors' aim is degraded when shooting at a shadow actor. And how much the shadow actor itself affects the shooters' aim, respectively.
- Added MF9_SHADOWAIMVERT. This flag causes the vertical aiming of monsters to also be affected when they aim at shadow actors.
- Added MF9_SHADOWBLOCK. Actors in the line of fire with this flag trigger the MF_SHADOW aiming penalty. The shooter needs to have MF9_DOSHADOWBLOCK to check for actors with this flag.
- Added MF9_SHADOWAIM. This flag allows actors with MF6_SEEINVISIBLE to still get an aim penalty by trying to shoot at a shadow actor.
- Added damage property to earthquakes.
- Added damage and thrust multipliers to quakes.
- Added QF_DAMAGEFALLOFF. This flag makes it so that the damage and actor thrusting of earthquakes fades with distance like the screen shake effect does.
- Added (XF/RADF)_CIRCULAR. This flag makes explosions use a spherical radius, instead of a cubic one. Only took almost 30 years.
- Added (XF/RADF)_NOALLIES. This flag allows explosions to not harm any actors that are friendly to its' source.
- Added (XF/RADF)_THRUSTLESS. This flag allows for explosions that do not thrust any of the actors caught in the blast.
- Allow custom MessageBox menu selector
- Individual Joystick Enable/Disable Toggles
- add QualifiedName to VMFunction and allocate these static names from the class data memory arena instead of using FStrings.
- null pointer type checks in the VM added to avoid crash on bad codegen.
- Expanded Service's Get functions to pass in
name
parameter. - Added GetName(UI/Data) to Service class.
- make all legacy light modes except 'Doom' and the software rendering emulation MAPINFO only. A CVAR still exists for testing but its value won't be saved to the config.
- MAPINFO can not enforce any of the two software light modes, as low end users require the option to change this to the 'performance' setting.
- changed lightmode menu options: user can only select between "performance', 'software' and 'vanilla'. 'performance' is the old 'Doom' mode which is still needed to speed things up on low end hardware.
- fix the ammocount parameter in Weapon.CheckAmmo
- fix UMAPINFO boss action clearing. This did not handle the case where the actions were cleared without adding new ones and also did not clear the MBF21 boss action flags.
- remove memory leak in
A_ChangeModel
- made some changes to vectors.h so that it can be used without the floating point function replacements.
- Add Voodoo Zombie Compatflag
- remove
vid_gpuswitch
and all its handling; it is only as of now useful in old versions of Windows 7/8/10 which are no longer supported - added
MaxEffectTics
field toPowerup
- adapted font system to properly handle Turkish. Those i's are really messy, especially when dealing with allcaps or pure lowercase fonts.
- made D_WriteUserInfoStrings memory safe.
- Fix TArray allocating 0 bytes in constructor
- Add dynamic lights to software slope drawer
- use uniform buffers for dynamic lights everywhere. Branching on SSBO content does not work that well on NVidia so it is better disabled. So far only implemented for OpenGL Vulkan needs more work.
- Fix Software Slope Rendering for non-1.2 pixel ratios
- add the flags MINVISIBLE and MVISBLOCKED
- Extend pseudo-generics system used by maps to dynarrays
- add RedirectCVAR directive for loading alternate maps based on a Bool CVAR setting
- Fixes bones when using OpenGL 3.3 (UBO bone data)
- validate the buffer size in HWViewpointBuffer::Set2D.
- Fixed a bug where calling an invalid virtual function would cause a crash.
- Add cvars to sprite shadows progressively according to thing <-> floor distance
- Added OnEngineInitialize() for static event handlers
- cleanup of the Doom and Chex Quest small fonts' discritical characters
...
GZDoom 4.10.0
- Italian language translation is now complete
- Make the new scaled angle changes at frame rate opt-in behind new flag
SPF_SCALEDNOLERP
. - Set up interpolated camera angle changes to occur at framerate when all conditions in
P_NoInterpolation()
are met. - Make view angles interpolate on a separate flag to the one that forces interpolation for the entire frame.
- Map<K,V> and MapIterator<K,V> for ZScript
- Structified A_SpawnParticle/Ex
- Look up named frames using the Animation ID (if any).
- Allow Disabling of XY Billboard for Particles
- Added Method For Getting Portal Group Count
- Allow Getting Portal Group Offsets
- Fixed A_Changemodel crash from invalid modeldef names
- Fix SNDINFO $rolloff always changing global rolloff
- Fix GC ignoring DynArrays inside fixed Arrays
- AST debug cleanup
- fixed: The raw texture caching in the texture manager did not work. This erroneously checked for FrontSkyLayer.
- Allow assigning IQM frames by animation name plus frame offset.
- Added animation support for OptionMenus
- Fix crash if Animation is not explicitly assigned in MODELDEF.
- internal cleanup of sound code
- allow SNDINFO to declare sound mappings by using 'sound = soundfle' syntax.
-
- process events every frame as well to ensure that menus can run at any framerate
- Fix incorrect pixelratio handling on rotated models.
- Added Font and TextureID types to Option and Image Scroller items (List items already have these)
- Added "Class" instruction for Image Scrollers
- Added ability for Option items to read in their OptionMenuDescriptor (List and Image Scroller items already have this)
- Added "ForceList" instruction for Lists so that skill, playerclass, and episode menus don't get overridden
- Fix checking of wrong variable in String..Float concatenation
- Clearscoped getters for map data
- CustomMessageBox
- fix colormap remapping when colormap entries may have fullbright entries which should not be considered duplicates
- stop all sound before showing ENDOOM.
- disabled shortcutting the intermission code if no summary screen is wanted. This also disabled all cutscenes being attached to the completed map.
- added 'foreach' loop to ZScript.
- implementation of Quaternion type in ZScript
- GLES: Added IQM bone support.
- SendConsoleEvent function for EventHandlers
- Future-proof particles by resetting them completely when replaced.
- added PlusZ intrinsic to Vector3 and ToVector intrinsic to numeric values. These just mirror features of the internal vector classes.
- added LengthSquared and Angle intrinsics for all vector types, also allow calling VectorAngle with a full vector as a single parameter.
- Add PushSound property and Slide state
- Added PS_REPLACE flag for A_SpawnParticle(Ex). When used, new particles that spawn when the limit is reached will replace the oldest particle.
- add Vector4 to ZScript
- avoid infinite portal recursion.
- fix uncaught exception that rarely occurred with the intermission screen that would vm-abort out from any attempt to enter a level
- Exposed LevelLocals' LookupString functionality
- Improved Slam functionality.
- Normalize angle in AngleToACS. Fixes GetActorAngle returning negative or large values with no range limit.
- Enable ANIMDEFS for particles
- add some more blacklisted cvars to defcvars
- fixed background setup for intermissions to apply tiling only where intended.
- removed the unused BaseBlend* variables and the testblend CCMD.
- added a compile option to fully disable the software renderer. This is mainly for new games which have been designed for hardware rendering.
- add the following command line parameters:
- -noextras: disable loading of any extras (lights, brightmaps, widescreen)
- -nolights: disable loading of lights
- -nobrightmaps: disable loading of brightmaps
- -nowidescreen: disable loading of included widescreen assets
- fixed bad index check in CanWipe. This can be called with index == -1, which should check the first element of the intermission.
- GC: Have a real finalizer stage for destroying objects instead of mixing them in to the sweep stage.
- GC: Base GC rate on a running average of the allocation rate instead of basing it on the amount of time taken since the last sweep started.
- More GC stats for better tweaking.
- added characters U-0404 and U-0490 for Ukrainian language support.
- reworked all accented characters of Doom's SmallFont. Also adding a few new ones that were easy to do
- when converting to a portable install, flag the current session accordingly.
- changed CalculateBones to receive the bone component data directly instead of the owning actor.
- fixed FileExists check for -loadgame. This was done before the current savegame path was known so it always errored out.
GZDoom 4.9.0
Inportant note to Windows users:
GZDoom 4.9.0 changes where gzdoom.ini is stored. Unlike older versions this one will always prefer the system's user folder and place the INI in Documents/My Games/GZDoom if no INI is found. This was done to bring handling in line with current guidelines and to make it easier for commecial games that often get installed into a folder without write access. If you still want to store the INI in your game folder you have to create an empty file called GZDoom_portable.ini there before launching. If you still have an old INI in your folder, GZDoom will ask what to do with it, you can either move it to the user folder or convert to a portable install.
Change of savegame storage
This version introduces per-IWAD savegame folders. If you have old savegames you still intend to use, please wait with the update until you can safely delete them.
Highlights
- IQM bone model support
- textured particles
Details
- added target check to A_MaulerTorpedoWave.
- fixed: P_SpawnMapThing may not call playsim code.
- added PARAM_NULLCHECK to the block iterator creation functions.
- added [[noreturn]] to several functions that always throw exceptions.
- Particle Rolling
- Add Textured Particles
- Add GFF_NOEXTCHANGE to Phasing Zorcher flash. The Plasma Rifle does not light the player's sprite, so we must assume the Phasing Zorcher also should not.
- Fix HUD models not drawing if MODELDEF has been changed with A_ChangeModel
- Fix inconsistent distance and hit position on traces that skip everything.
- Fix canvas textures getting clipped by wrong scissor box
- Fix vulkan backend clearing the canvas textures to undefined contents
- made DMover and subclasses non-abstract so they can be inherited from.
- added option to show hub and episode names on the alt HUD.
- reworked CVARs to not use a linked list and to be initialized manually.
- marked a few Printf calls in critical error paths as PRINT_NONOTIFY.
- fixed: R_LoadVoxelDef did not fully initialize the voxel descriptor it creates.
- don't crash on null pointers in V_GetFont.
- zero the velocity of crunched sprites. Since their size is zeroed, they are no longer subject to collision detection and may slide out of the level otherwise.
- don't crash when destroying incomplete textures. This can happen during TEXTURES parsing in case of an error.
- try to keep the engine stable for as long as possible if a VM exception occurs in OnDestroy while running a cleanup. This will still crash, but run long enough for the exception message to be visible.
- fixed F2DDrawer::SetClipRect.
- added vanilla donut handling to compat_floormove.
- Fixed: voxel models pitch/roll properties weren't initialized correctly
- Added QF_SHAKEONLY. The QF_SHAKEONLY flag changes the behavior of earthquakes with a damage radius, so that they only shake actors around, without also harming them.
- Added QF_AFFECTACTORS. The QF_AFFECTACTORS flag makes the thrusting and harming of damaging earthquakes also affect monsters. Monsters with DONTTHRUST will not be flung around by earthquakes.
- Added the QF_GROUNDONLY flag. The QF_GROUNDONLY flag makes earthquakes only shake the player while they are standing on the ground.
- fixed DrawLine commands by giving them a consistent floating point interface.
- heretic: e2m7 - missing texture
- fixed direct native interface for Draw(Thick)Line.
- fixed: The main loop never checked the cutscene flag for disabling wipes.
- Sync movie video playback to the audio, when possible
- Fix washed out colors in Vulkan HDR mode
- normalize the timer with the app start, not the epoch. This ensures smaller values and less wraparounds with integer values in scripts.
- un-deprecated the integer MSTime variant. Due to undefined downconversion rules from double to int, there is no way to safely downcast the return from MSTimef, meaning the function is completely useless for retrieving integral time stamps.
- added Harmony ENDOOM screen.
- added a config getter to the interface.
- moved language CVAR to backend.
- handle menu customization via callbacks.
- move hud scale CVARs to the backend.
- handle autoload flags in startup through function parameters instead of directly accessing the CVARs.
- handle Build tiles via explicit callback to the init function.
- add a system interface for CheckCheatmode and moved some sound code to the backend.
- Exported GetDisplayTopOffset for font characters to ZScript
- added missing obituary for Strife's turret.
- Added support for BLOCKLANDMONSTERS in Line_SetBlocking.
- Added APROP_FriendlySeeBlocks to Set/GetActorProperty
- Fix planeval; add direct sector slope manipulation
- Modify to have one GetVertexZ rather than IsVertexZSet / GetVertexZ
- Add vertex height manipulation functions to LevelPostProcessor
- Add sv_noextraammo. When set to true, disables that weird hardcoded behavior from original Doom that gives extra ammo when picking up weapons in deathmatch
- fixed: all script methods adding an object to a dynamic array must perform a write barrier.
- add freezetics actor property
- allow notification of actor goal is reached inside of a SECF_NOATTACK sector
- GLES2: Fix anistropic filtering
- disabled discord-rpc debug info for configurations without it
- fixed sky cap color handling
- fix arti teleport and arti teleother not respecting useplayerstartz mapflag
- UE1 models now handle frame index -1 properly.
- Add support for the GOG releases of the Unity versions of Doom and Doom II.
- carry over the tiling flag from the finished to the entering screen
- Prevent Keyconf from adding duplicate playerclass
- Add detection for the Final Doom WADs that were recently added to the Steam version of Doom II.
- new method to define obituaries without modifying actors.
- remove latch flag from sv_cheats
- add
openscreenshots
opensaves
andopenconfig
console commands on Windows and Linux and Mac - use consistent index types for array function return values.
- pass clip rect as pointer to F2DDrawer::AddLine.
- Export FindLumpFullName to ZScript.
- Add support for nested user types
- made adjustments for proper int type promotion to allow internal ZScript to compile with it on.
- ZScript: fixed integer type promotion for shift operator
- version-restrict int to uint promotion. Some mods depend on this not happening.
- fixed: The compile context for constant evaluation did not initialize its Version member.
- Don't throw away unsignedness when passing unsigned constants to the codegen
- Add signed->unsigned promotion for binary operators
- fix menu commands with semicolon separated commands
- get rid of M_Malloc call in WriteSavePic
- Fix definition order of ZScript structs. Do a first pass over the Structs array in CompileAllFields() to reorder them such that if a struct uses other structs, those structs will be resolved first.
- Fix viewpoint buffer not getting cleared when in the menus
- backported KDE detection from Raze.
- removed the Softpoly backend.
- Add a 2d drawer to canvas textures
- Fix incorrect mapping of texture indices for UE1 models.
- Added PitchFromMomentum, UseActorPitch and UseActorRoll to VOXELDEF. Behaves exactly like their 3D model counterparts. Hardware renderer only.
- removed some redundant chaaracters from the Doom SmallFont.
- Added IQM bone model support
- Added A_ChangeModelDef
- fixed return values of FTextureAnimator::AddAnim
- add longsavemessages to simple menu. set longsavemessages default to false.
- DirectInput cleanup. Removing ancient code that's only useful on pre-XP OSs.
- also allocate FDoorAnimation's frame table from the texture manager's memory arena.
- optimized storage for animation definitions.
- Fixed vulkan crash when multisampling is enabled
- add a method for filling a shape2d instead of using a texture (#1661)
- add stencil buffer support for 2d drawing (#1660)
- add a system for setting all of 2D drawing's transform, not just shapes
- Expose ConsoleState to scripts
- rewrote Windows console code for Windows 10's new terminal.
- fixed and consolidated artifact check in cheat code.
- removed volatile type punning for clipping against line portals.
- fixed handling of *dive and *surface sounds.
-let A_FireProjectile pass through the second return value of SpawnPlayerMissile. - fixed PoisonCloud's looping animation count.
- weapons are not artifacts.
- rename PrintString to PrintfEx and make it a vararg function
- Expose Print Flags to ZScript
- fixed names for A_PlaySoundEx
- ENDOOM is not Windows only anymore.
- fixed background tiling for summary screen. Since the background object gets recycled it must clear this flag before loading a new background.
- let the "abort" button on the network pane of the startup screen do a hard exit on Windows.
- make sure ticdup is initialized.
- Add +ONLYVISIBLEINMIRRORS and +INVISIBLEINMIRRORS actor flags. The former makes the actor only visible in reflections, while the latter makes the actor not cast reflections in mirrors.
- cleanup and refactoring of Vulkan backend
- Improve vk_debug output a lot by throwing away the useless parts of the message and limit the callstack to the first 5 gzdoom calls
- validate fountaincolor before using it.
- added detection of macOS Ventura
- ZScript: don't allow multiple assignment syntax with only one element.
- fixed type of third argument of MBF21's MonsterMeleeAttack function. This is a sound, not an int.
- added an override for NOTAUTOAIMED flag when using P_AimLineAttack for informative CCMDs.
- allow taking screenshots in cutscenes.
- fixed JIT target function for GetTimeFrac.
- fixed: For cutscenes the alternative clean scaling factors need to be activated.
- fixed setup of ready state with Dehacked. This needs to emulate the hard coded chainsaw sound when weapon states get reassigned.
- Fix the discolored sky bug
- check point pushers/pullers ...
GZDoom 4.8.2
- fixed names for A_PlaySoundEx
- ENDOOM is not Windows only anymore.
- fixed background tiling for summary screen.
- text update that was missed in 4.8.1
- add a few maps to the rebuildnodes compatibility block
- Fix FVector to Vector comparison
GZDoom 4.8.1
Mainly a bugfix release, but contains a major update of the Vulkan backend
- let the "abort" button on the network pane of the startup screen do a hard exit on Windows.
- Bugfix for software mode mirrors not working
- make sure ticdup is initialized.
- Add +ONLYVISIBLEINMIRRORS and +INVISIBLEINMIRRORS actor flags. The former makes the actor only visible in reflections, while the latter makes the actor not cast reflections in mirrors.
- Vulkan backend update
- validate fountaincolor before using it.
- ZScript: don't allow multiple assignment syntax with only one element.
- fixed type of third argument of MBF21's MonsterMeleeAttack function.
- added an override for NOTAUTOAIMED flag when using P_AimLineAttack for informative CCMDs.
- allow taking screenshots in cutscenes.
- fixed JIT target function for GetTimeFrac.
- fixed: For cutscenes the alternative clean scaling factors need to be activated.
- fixed setup of ready state with Dehacked. This needs to emulate the hard coded chainsaw sound when weapon states get reassigned.
- Fix the discolored sky bug on Vulkan
- check point pushers/pullers by inheritance, not absiolute match
- Implement FVector ZScript for Actor Scale
- added FailSound property to PuzzleItem
- add `i_pauseinbackground` to the menu. note: please pull the language file for this
- set `i_pauseinbackground` to match `!(i_soundinbackground)` for all configs before this commit.
- fixed division by zero with unvalidated ticdup values.
- reinstated con_scale.
- make sure the last notch on the start screen is rendered.
- fix relative include path when loading folders
- avoid storing texture pointers in longer lived data
GZDoom 4.8.0
Highlights
- added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.
- handle the start/endoom screens with the ingame renderer. They are now present on all platforms and use the full screen size of the game.
- Many MBF21 fixes.
- added the cutscene system from Raze
Details
- the chat should use the console's scaling, not the one for the messages printed with the small font.
- fixed auto-scaling for console.
- removed all vid_fps offsetting. To compensate there is now also a "stat fps" which displays the FPS rate in the lower left corner. This had to go because unconditionally altering positions was causing problems with custom HUDs.
- added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.
- added a few more names to the reserved names for main folder detection.
- consider "fonts" and "models" reserved folder names.
- fixed undefined behavior with Dehacked's value parser.
- Rebuild nodes for 1024.wad MAP02 to fix invisible obstacle near the exit area
- fixed fast crushers going out of sync if something is being crushed by them.
- fixed: Vulkan descriptor sets must check the real translation, not just the translation ID.
- handle the start/endoom screens with the ingame renderer.
- Create a MainWindow class that manages the main win32 window of the application
- Added Actor::LightLevel. Setting it to any value > -1 will override the sector's light level.
- Implement virtual Actor.FallAndSink for scriptable falling and water physics
- Added Actor.WaterDepth to retrieve how submerged and actor is, in map units
- added cutscene data parser. This covers: game start, episode start, cluster start/end, level start/end.
- MASTERNOSEE flag (#1601) Makes it so that if an actor's master is invisible due to camera/mirror/portal shenanigans, then the actor will also be invisible. Name based off of an Unreal Engine flag that does the exact same thing.
- Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.
- Added CanCrossLine virtual for actors.Called last after all other line checks occur. Returning false means the actor cannot cross that line.
- Add WorldOffset field. Adjusts the thing's 3D position on render side. This allows for adjusting a thing's visual position without impacting their hitbox.
- fix bad MP start spot in 1024.wad, MAP05
- Enables shortcuts for option menus. Press a key to immediately jump to the next option menu entry which starts with this key. Hold Alt to jump backwards.
- DontLightOthers
: Acts as the inverse of DontLightSelf
, where it won't light actors that aren't the owner.
- DontLightMap
: The light doesn't affect the map.
- Relative Includes for ZScript
- remove m_filter
and simplify related code
- exclude keys from ‚artifact‘ cheats
- fixed MF_SHADOW handling for MBF21. This needs to alter the render style as well.
- fixed handling of automap sprites with negative scale.
- fix dynamic light setup. The level’s global flag is unreliable and cannot be used. The operation this was initially supposed to skip cannot be skipped anyway so the impact should be minor.
- Allow SendNetworkEvent during title level.
- add sv_ammofactor
to change the skill adjustment for ammo
- extended the read buffer for the 'secret' CCMD.
- This is merely preparation - the actual loading is still in one uninterrupted piece.
- Fix that vk_debug doesn't output anything for newer versions of the vulkan sdk
- added JPEG YCCK decoding.
- Added MF8_SEEFRIENDLYMONSTERS. Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.
- fixed mouse coordinate checks for Strife conversations. ypositions needs one entry per response, not one per line.
- fixed radius of BossBrain actor
- Added QF_3D flag for quakes. When used, the quake thinker will perform a 3D distance check instead of 2D.
- removed compat_soundcutoff from the menu. Handling for this was removed 14 years ago when ZDoom transitioned to FModEx 4.x
- add -compatmode for setting a compatibility mode on startup as a replacement for +compatmode not working as intended.
- activate Hungarian in the menu
- Fix off-by-one in Vulkan multisample sample count selection
- completed Hungarian translation.
- Fix co-op softlock in Heretic E4M8 due to multiplayer teleporter.
- added handlers to load Strife’s startup screen images as textures
- added image source handlers for Hexen’s special startup image types
- use the hex font for the Heretic/Endoom text screens.
- fixed setup of files to load on startup.
- fixed return type of MSTimeF script function.
- moved -rngseed init to D_InitGame
- pass ´hashfile´ to filesystem as parameter
- fix TArray::Append with rvalue parameter. This must clear the source array to obey move rules.
- fixed Playdemo and Timedemo check. The assumption that D_DoomLoop never returns does not apply anymore. Let it fall through to the end instead where this is properly handled.
- only check „allowduplicates“ for the final file system init
- added missing BLOCKF_ flags for ZScript.
- added ‚repeat‘ option to SetLineActivation ACS function
- made friendlyseeblocks writable.
- removed all remains of the corpsegibs flag and made vileghosts interactive. Ghosts are still off by default, but they will now be enabled when selecting the vanilla (strict) compatibility mode.
- restrict RealGibs for players only. All non-players will now always act as if the ‚corpsegibs‘ flag was set, regardless of the current setting.
- added Get/SetAmmoCapacity ZScript functions
- expose the ‚attenuatelights‘ map flag.
- added an option to delete a terrain type from a texture.
- add wipe transition support to the screenjob runner.
- migrated intermissions and summary screens to screenjobs.
- timer code fixes.
- added all the cutscene system from Raze
- added compat_nombf21 for cchest2.wad, map 19.
- Fix usage of -1 as OBJ model FrameIndex
- added zip64 handling
- added workaround to Dehacked so that „Doom“ only replaces the music name
- fixed some incorrect array allocation sizes in polyobj code
- added missing range check for scrolling down an option menu with the mouse wheel.
- do not clamp warped textures.
- disabled deletion of previous event handlers when using 'eventhandler' keyword in MAPINFO.
- fixed: decal things failed to spawn their decals on 3D floors.
- validate the index argument for GetSavegame and abort if out of range.
- don't let "give weapons" hand out abstract weapons.
- lock cvar shader uniforms behind a command line parameter for now
- fixed setup of PolyBSPs when the software renderer is active.
- Remain 3, MAP11 also needs compat_nombf21.
- fixed Dehacked drop items.
- added nombf21 compat setting for Heroes Tales MAP31
- fixed: The alt HUD's draw call did not use the virtual interface.
- fixed: group teleporters must always preserve orientation.
- don't move bad polyobjects in the savegame loader.
- cast arguments for fastcos/sinbam
- copy size info from defaults when starting a list menu block.
- handle cases of empty state labels in ZScript.
- GLES: Fix blend flags
- fixed bad color range check in ACS HudMessage code.
- fixed Dehacked check for A_ConsumeAmmo. This must use the internal function name.
- fixed y-offsets of bal7scr* decal images.
- let A_SpawnParticle respect the float bob offset
- separate message for disabling noclip2
- added a nullptr check for StatusBar when drawing „Paused“
- make menu scale adjustments for ultra-wide aspect ratios.
- treat PSP layer ID 0 as invalid. No PSprites with this ID may ever be created, as there is no means to find them again.
- fixed: The skill menu did not remember its last selection.
- allow artifacts that do not automatically activate to be given by the 'give artifacts' cheat
- added vertical bullet spread relative to ssg
- Fixed GUS Emulation with DMXGUS(C) lump conf.
- changed default value for midi_config to empty string since gus is not working with sf2 file
- fixed SetupDMXGUS not loading lump correctly, wrong use of CheckNumForFullName
- midi_config default to empty string, since lzdoom.sf2 doesn't seem supported (distorted sound)
- added absolute paths to FZipPatReader so we can add custom patches to resource files by using gus_patchdir and/or ULTRADIR variable (some custom maps has custom patches that can be added this way without putting them inside the resource file or in the same folder of the configuration file)
- set timidity_reverb_level min value to 0 in menudef.txt, set to 9 by mistake?
- Added the MF8_DONTFOLLOWPLAYERS flag, which allows friendly monsters to not follow their FriendPlayer when they have no target or goal left to head to.
- fixed Font struct export and removed the duplicate handler.
- fix detection for misplaced | when creating the small fallback font
- typo 'Yea' instead of 'Yes'
- implement proper GC handling for AActor::ViewPos.
- Add CHF_DONTIDLE for A_Chase
- fixed exittext definition for Harmony. This wasn't using the string table.
- add gl_satformula == 2 - an optional 'more accurate' desaturation
- fixed order of slope creation so that slope copies are the last thing being done.
- Discord RPC presence. Adds new IWADINFO and GAMEINFO keys: DiscordAppId - this should point to your AppId for your game. It will use a default GZDoom one if not found.
...
GZDoom g4.7.1
Mainly a bugfix release addressing the following issues:
- Fixed: SBar_DrawTextureRotated was missing the angle parameter
- Compat patch for misplaced items in Hexen MAP08.
- fixed some imprecisions in font luminosity calculation. This was still going through the palette which could result in off-by-one errors.
- fixed palette initialization for single lump fonts (FON2 and BMF)
- push sprite shadows a little back for distance sorting
- avoid multiple Dehacked mappings to the same function to fix MBF21 lookup issues.
- disallow changing the line spacing for option menus.
- be a bit more aggressive with the GC when not running the game loop.
- fixed memory leak in DShape2DBufferInfo.
- allow "INDEXFON" as an alias for "INDEXFONT".
- fixed A_Punch having a short attack range (take 2).
- GLES: Fix texture MapBuffer and AllocateBuffer create client side memory.
- Fix "out of memory" errors when the vulkan backend is asked to create zero byte sized buffers
- resolved a VM abort upon morphing while the tome of power is active
- fixed particle processing in the main thinker loop. This may not be guarded by the dynamic light flags, only the light ticking may.
- fixed handling of states with the 'light' keyword.
- Fixed broken V_BreakLines.
- treat "materials" as a known folder name for eliminating root folders in Zips.
New Features:
- widescreen assets for all officially supported games. This version adds Hacx, Harmony and Chex Quest.
- Allow WorldUnloaded events to know the next map name (if any).
- Allow map markers to scale relative to automap zoom.
- Add cvars to control automap line alpha and thickness
- PreTravelled virtual for player and inventory.
- Allow customization of pause screen.
- ReadThisMenu / MenuDelegate overriding.
GZDoom g4.7.0
The major new addition is a new GLES2 backend, meant to improve performance on low end hardware. This was written by emile_b for the Android port but backported to the mainline for old hardware support.
Please note that this backend removes some non-essential features to increase performance, like the entire postprocessing or advanced lighting features like specular or PBR.
Our tests show no performance gains on modern hardware capable of Vulkan, so is not recommended to run it on such systems - it is solely meant for old hardware that have performance issues with the modern GL backend.
On older hardware capable of supporting OpenGL 3.3 our measurements show that performance is generally on par with LZDoom.
Furthermore, to make the new backend available to 32 bit users as well, GZDoom 4.7 will exceptionally provide a 32 bit build as well, but please be aware that it depends on the survey's result whether this will see continued maintenance, as user share was already extremely low two years ago.
The survey has been re-enabled for this version so that we can get some information about how the state of systems being used for GZDoom has developed over the last two year. This is mainly due to the addition of the new GLES backend for old hardware, so we can get an overview of how much of this hardware still exists and how future support needs to be handled. We would like to ask as many users as possible to participate, so that we can make the right decisions based on the information we obtain. Like previous surveys this does not collect any private information - all it sends is basic info about the operating system, the number of CPU cores, the name of the graphics card and supported OpenGL/Vulkan versions.
Highlights:
- Widescreen graphics for Strife
- new GLES backend for better performance on OpenGL 3.3 and early 4.x hardware.
- MBF21 support (still in beta and not fully tested yet, bug reports are welcome)
- DEHEXTRA working properly now
- various enhancements and fixes for ZScript.
Details
- fixed vertex generation when splitting walls by planes on old hardware.
- menu system update from Raze for better control of animated menus.
- GLES fixed: The weapon sprite must be rendered with the fullscreen colormap on.
- use explicit virtual screen sizes for the scripted intermission backgrounds to better cope with background replacements.
- fix compatibility handler for KDiZD's Z1M3.
- fixed: "Dialogue" in MAPINFO must clear all "AddDialogues" that came before.
- fixed melee attack disance being off after adding MBF21 support.
- fixed: Decal things did not spawn their lower decals.
- fixed texture clamping for elements that are partially behind a slope.
- fixed bad parameter order in MinoraurSlam.
- Consider 'Program Files' a read only location without actually checking.
- fixed: 3D floor model sectors were not added to the sector lists for precise rendering.
- removed the redundant gl_render_precise CVAR.
- fixed: colors from brightmaps and glowmaps need to be desaturated.
- fixed: shaders with NO_LAYERS defined may not apply brightmap and glowmap.
- Vulkan: Limit texture upload transfer buffers to roughly 64 MB
- marked several invisible controller things to not show on the automap with the scanner powerup.
- treat 'vid_adapter 0' as what Windows considers the primary monitor.
- fixed: Brightmap application for horizons was undefined..
- replaces "BS" and "ED" on the on-screen keyboards with the symbols normally found on the keyboard for these actions.
- enable cvar blacklisting for defcvars for certain platform variables
- demote unknown/invalid defcvars to warnings
- split defcvars parser into its own file
- fix options search when menus are defined recursively
- exported STAYONLIFT flag.
- added a modified version of MBF's stay-on-lift feature.
- fixed crash on getting location description without a level
- block user overrides for the logic module of core fragment shaders.
- added missing MBF21 Dehacked keys "blood color" and "dropped item".
- implemented MBF's monsters_avoid_hazards feature.
- added a map flag to disable MF6_JUMPDOWN.
- added a per-level AVOIDMELEE flag.
- allow passing a remap table to BestColor.
- hud models: add nullptr check for psprites without caller.
- removed the unused palette parameter from the V_GetColor family of functions.
- Add FOV slider to the display options menu
- added a null check to CheckWeaponChange.
- replaced the alt HUD's index font with a sheet based variant.
- changed FString API to use ptrdiff_t instead of long for signed size arguments.
- Fixed IsHUDModelForPlayerAvailable limitation.
- Look up HUD models by referencing the psprite's caller, rather than player's ReadyWeapon.
- Allow Strife hands psprite to be a model.
- fixed: crushing stairs must use HexenCrush mode.
- extended 2D buffer lifetime to the end of the frame
- use RefCountedPtr to manage 2D shape buffer infos
- added RefCountedBase without virtual destructor
- made RefCountedPtr follow rule of five
- make RenderCommands able to use Shape2D vertex buffers past the Shape2D's lifetime without crashing
- fixed line color handling in V_BreakLines.
- run the dynamic light recreation loop before calling the light ticker.
- fixed: instead of checking gl_lights, better check Level->HasDynamicLights.
- do not run the dynamic light ticker when lights are switched off.
- ensure that shadowmap indices only get set when shadowmaps are enabled.
- fixed file system's zip loader to not strip away a 'filter/' prefix.
- do not perform shadowmap updates when dynamic lights are disabled.
- moved the CheckForRestart call one level up so that it is within the Windows code and does not need #ifdefs.
- delay the restart action from the error pane until after everything has been shut down.
- use proper XMove for sheet fonts.
- use original menu spacing for skill and episode menus if all elements are patches.
- fixed: the software scene drawer must be deleted before calling ST_Endoom.
- reorder evaluation for 'if' statements to handle the condition first. Otherwise this won't emit errors if a bad condition is used with an empty conditional part.
- fixed exploding barrel animation duration.
- fixed two vr_* CVARs not getting archived.
- dim depleted inventory items in all games, not just Strife.
- fixed: palette index 0 (transparent) was left uninitialized for BMF fonts.
- fixed: P_RoughMonsterSearch did not pass the fov parameter to its worker functions.
- fixed BlockThingsIterator to not reset its list of processed actors when traversing portals.
- fixed patch version in compatibility implementation of macOS detection
- destroy stale thinkers after change level failure
- fixed crash after change level failure
- SDL2: Properly print white bold text to the screen
- merged gzdoom-gles2 backend
- use proper music check in 'idmus' CCMD.
- voc loader fix.
- better prefix detection in Zip loader.
- SDL Vulkan init.
- disabling of shadowmap management when the feature is off.
- Extend the changemap command to allow warping to next or nextsecret.
- fixed crash after fatal error in SDL backend
- fixed premature destruction of status bar
- fixed EBlastFlags enum definition
- Add 'BF_ONLYVISIBLETHINGS' Flag to A_Blast
- Fixed typo in Heretic light definition.
- Fix wrong thiswad check for materials too.
- fix /0 error caused by having a completely black font character. this error was triggered by Return of the Triad.
- MBF21 beta implementation
- corrected the NUL checks in S_FindSkinnedSound.
- moved Doom specific font init code out of the backend.
- Fixed crash calling ChangeSky() with an invalid texture.
- added APROP_Soundclass
- added fallback to the parenthesis glyphs for the braces.
- font system overhaul.
- Add some new optional parameters to A_SprayDecal.
GZDoom 4.6.1
-
Fixed bug with BishopPuff moving in wrong direction
-
a couple important widepix fixes
-
fix for "Return to Phobos (return01.wad) has an ancient bug in map E1M2 where the switch to raise the exit bridge doesn't work in versions of Doom past patch 1.2."
-
add missing break statement in level_compatibility.zs
-
fix DaggerAlert using FindState incorrectly.
-
Fixed wrong parameter type passed into TryMove here
-
fixed: Actors did not set the position when spawning a dynamic light.
-
Add 'AddDialogues' in MAPINFO to additively add Strife NPC dialogs without overwriting each other.
-
let dynamic lights call UpdateLocation instead of just setting their position right after being spawned. This ensures that the position is correct and that everything gets set up properly.
-
fixed parsing of MAPxx par times in BEX lumps
-
Make sprite shadows ignore float bob
-
fixed explosive damage radius for clericflame.
-
fixed permission validation in OptionMenuItemCommand.DoCommand. This was missing the InMenu check like the other critical menu functions.
-
added detection of macOS 12 Monterey
-
prevent redundant string copying in Strife conversation parser
-
Fixed impassable exit line in 007ltsd.wad E4M7
-
fixed initialization of model frames
-
fix missing border flat on heretic shareware
-
fixed parsing of 2D vectors in OBJ model loader
-
added
TVector2<>
constructor fromfloat*
-
fixed bad type in FxFontCast.
-
fixed potential crash when sound sequence is destroyed. Level can be unset if sound sequence destruction happens after saved game loading failure
-
report correct macOS version with older SDKs
-
Add Windows 11 detection
-
added an OnDestroy method to Shape2D so that its users can explicitly free the data it holds. In this case it is very important to care about management, because this class will hold GPU-side buffers!
-
prevent appearance of dangling pointers in corpse queue
-
fixed format specifier compilation warnings
-
fixed: splashes need the MOVEWITHSECTOR flag.
-
better sprite shadow control
- exclude sprites which are not either opaque or use regular blended translucency from casting shadows.
- exclude wall and flat sprites from casting shadows.
In both of these cases the shadow math is unable to produce anything useful that doesn't look off.
-
fixed: shadow alpha for translucent objects was not correct in the hardware renderer.
-
tweaked shadow code a bit.
- let CASTSPRITESHADOW act as an override for render style checks. If this is set we can assume that a shadow is desired regardless of style.
- reordered code to do the more costly checks only when needed.
-
fixed brightmap definitions for the SpiderMastermind.
-
add player setup to simple options menu
-
do not precache unreferenced textures
-
added map option to disable shadowmaps. (Prompted by 'Hurt' which has > 4000 lights and runs into both performance issues and unpredictable light selection for the limited amount of shadowmap slots.)
-
language update
GZDoom g4.6.0
- 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: https://forum.zdoom.org/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: https://forum.zdoom.org/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
...