August 2026
-
General
Use lld just for linking
October 2025
-
Fix null pointer dereferences in case of showing inventory bar right before player kill
-
Comment out definition and declaration of unused function _ErrMsg
-
Use TerminateWithMsg in _Assert
-
Use TerminateWithMsg in JS_DrawMirrors
-
Use TerminateWithMsg in JS_PlockError as well
Show details
There are unfortunate duplications of the shared string, but such occurrences don't seem to be that common so far.
-
Cleanup of what was non-RENDERTYPEWIN code
-
Remove not fully ported heap check code and related definitions
-
Remove DEBUG-specific console commands mem, checkheap, dumpheap
-
Replace a few more printf calls, none being compiled, with LOG_F/VLOG_F
-
Replace a few printf calls with uses of LOG_F(ERROR, ...)
Show details
Trailing '\n' characters have been removed again.
-
Do replace multiple calls to TerminateGame+print/wm_msgbox+exit
Show details
These are done using TerminateWithMsg, except for a few instances in which the strings were meant to be printed without formatting, where TerminateWithSimpleMsg is used instead. Trailing '\n' characters have been removed from input strings. For code previously using printf and not wm_msgbox or loguru, this should resolve instances in which the program would abort without relevant logs, at least under specific platforms. Note that printf had its usage under DOS.
-
Add template function TerminateWithMsg and wrapper TerminateWithSimpleMsg
Show details
TerminateWithMsg is going to be used instead of separate sets of calls to TerminateGame, printf/wm_msgbox and exit. It'll use wm_msgbox, not printf (originally used under DOS), and also go through LOG_F. This is an inline function definition using a variadic template, allowing the use of LOG_F and also matching loguru::log. TerminateWithSimpleMsg is a wrapper that allows printing a string without formatting.
-
Move #endif directive to the end of game.h
-
Increase mmulti.cpp's MAXPAKSIZE (size of pakbuf in bytes) to 2048.
Show details
This appeared to fix a long-standing issue, where a relatively high ping between two players (say, about 750ms) could start increasing over time due to accumulated messages not being sent sufficiently fast.
-
Log a warning from mmulti.cpp:dosendpackets in case output pakbuf lacks space for all data.
Show details
Do so with a given threshold, i.e., turn off the warning until there are 16 consecutive calls to dosendpackets in which pakbuf has enough space for all data to send.
-
Improve prediction of interpolated bob_z value
Show details
The addition of the "bob_z" field to the PREDICT struct might be unnecessary, technically speaking, but it probably won't hurt to ensure values are synced.
-
Fixed player movement prediction, now actually based on predicted angle
-
Fix switch to double Uzi for multiplayer games upon pick-up of second Uzi
-
Simplify HandleWeaponAutoSwitch usage to go through the DamageData array
-
Fix multiplayer sync errors with the weapon auto-switching toggle
Show details
This also permanently enables weapon auto-switching for PedanticMode. The idea here is that outside of pedantic mode, within multiplayer games, a new bit or more of the inspected player's Flags2 field will be set for the weapon. Afterwards, only for player no. myconnectindex, the function getinput will set loc->bits as if a matching key was pressed for selecting the weapon. loc->bits should be properly synced. Note that each player's structure, including Flags2, is reset within InitNewGame, but not from InitLevel as far as I may tell.
-
Introduce new weapon auto-switch PF2 flags for a follow-up commit
March 2024
-
Fix playback volumes of "Duke-Tag!" announcement sounds
Show details
The modified code has an unconditional call to S_PlaySound from S_PlaySound3D with no check of the flag SF_GLOBAL. This is also done with a higher priority than Duke Talk sounds now, which should similarly match DOS v1.5.
- Fixes
- terminx/eduke32#263
- Co-authored by
- Evan Ramos
July 2023
-
Fix typo in PR light offset for EXPLOSION2.
Show details
Also fixes attempts to read data for sprite no. -1 in case of no parent sprite.
May 2023
October 2022
-
If 8-bpp mode couldn't be initialized using GL, retry without GL (sdlayer.cpp).
-
General
kextract/kgroup: Add call to engineCreateAllocator.
Show details
This was required for kgroup's call to Bopendir.
July 2022
-
General
sw/src/game.h: Remove declaration of CommPlayerName,
Show details
now conflicting with extern "C" declaration from config.h. The "extern" itself isn't needed, but this is a good chance for removal.
April 2022
-
Revert 22d85479a52ea9fd066daf283b3941b934858808.
Show details
There are maps which depend on projectiles getting reflected by walls with the picnum of MIRROR.
March 2022
-
List SF2 before ALSA in the menu, matching the order in soundcardnames
January 2022
-
app_main macOS fix (the #endif used to be followed by OSD_SetLogFile)
November 2021
-
add mus_tryformats cvar and menu option to control loading OGG/FLAC replacements for MIDI
Show details
Based on MR !175.
September 2021
-
Fix a typo in P_DisplayWeapon from port of SHOTGUN_WEAPON case for WW2GI
-
General
Ken-Build, Duke3D, SW, mmulti: Replace rand with wrand almost everywhere.
Show details
Outside of 3rd party libraries, remaining uses are the Polymer-specific macro LIGHTRAD2 within Duke3D, system_15bit_rand and vox2poly. Also use WRANDOM_MAX in SW.
-
Add wrand, intended to mimic the behaviors of Watcom C 10.0's rand.
Show details
Also add WRANDOM_MAX. This will be used in SW, preventing possible freezes.
-
General
Remove Brand macro. It was used just in Ken-Build.
-
Split krand definitions from build.h to a new header, random.h
March 2021
August 2020
-
Don't try to open device if it isn't in
Show details
the list as returned by ALSADrv_MIDI_ListPorts. Opening a device with ALSA_PortID == 0 might technically be successful even if not present.
-
General
Audio / Duke3D: Modify alsa_mididevinfo_t to manage memory use of
Show details
the "name" field on its own. Also make sure that the for loop in Menu_RefreshSoundProperties isn't accessing copies of the objects, including temporary copies of the "name" strings. It could be managed in a better way, but this should be usable for now.
-
Do free driver name strings duplicated using Xstrdup
-
Refuse to initialize if Client:Port pair isn't in the list
-
Fix potential crashes in menu if no ALSA MIDI device is found
July 2020
-
General
Revert "sw/src/game.cpp: Use initsingleplayers instead of initmultiplayers"
Show details
This reverts commit 4274a6160ce2f64676b79364cf83f185814811f6, i.e., SVN r8667.
-
Rename danetmode -> networkmode and make it use the same values
Show details
as in the previously used newer mmulti revision from JFBuild. Also use MMULTI_MODE_MS and MMULTI_MODE_P2P, now a part of an enum.
-
Constify the string params in a few functions
-
If a saved load is loaded at a point which is right after killing
Show details
a boss, ensure that FinishTimer and FinishAnim are appropriately updated. This commit bumps GameVersion. Additionally, the set of FinishAnim to 0 in NewLevel had to move to a different location (InitLevelGlobals2), so it doesn't override the value stored in the saved game.