October 2023
-
General
Update gamecontrollerdb.txt
-
detect invalid .sectnum and .statnum with setactor
-
fix M32_PRINTERROR macro
-
fix updatesector/updatesectorz/updatesectorneighbor/updatesectorneighborz
-
though it's assumed that whatever set the player's cursectnum to -1 was correct in doing so, it probably doesn't hurt to double check before fragging the player
-
fix bug in CON EVENT_SCREEN where keypresses weren't being cleared between loop iterations, preventing animations where each keypress skips a segment without bailing out of the whole thing
-
these should have been in 3f4e11c25af76a0dcce1ab66fa97c9083c951a06
-
print sound precache warning in release builds
-
print sprite number and tile of sprite when clipsectnum >= MAXCLIPSECTORS in clipmove()
Show details
Kinda shit tier, but whatever.
September 2023
-
Increase YAX_MAXCLIPSECTORS from 64 to 256
Show details
Some TROR layers were blocking hitscan shots because of the low limit.
-
Comment out log message in appendstate/prependstate
-
General
Engine/Duke3D: Several changes to TROR traversal in clipping functions
Show details
* clipmove() - No longer traverses sectors once a distance limit is exceeded, and at most traverses 64 TROR sectors at once. * hitscan() - TROR sectors added to clipsectlist after regular next sectors. Only adds TROR sectors in a single direction, and at most 64 at once. * A_RadiusDamage - only add TROR sectors if inside damage radius. Also increase MAXDAMAGESECTORS to 512, same as MAXCLIPSECTORS. Fixes glitches and error spam in maps that make heavy use of TROR.
-
Only store boardfilename in the savegame if we have a usermap
-
Don't try to interpolate rotatesprite calls if the clock difference is negative.
-
General
Update gamecontrollerdb.txt
-
avoid passing -1 as bunchnum to SECTORS_OF_BUNCH
-
avoid passing -1 as bunchnum to SECTORS_OF_BUNCH
-
minor optimization of 209bc8793d0838bb02d487bd8a74e6199a9911d1 + similar blocks in fgrouscan
-
improve slope sprite interpolation on edges
-
update xxHash to 6f9771f2c014a703f151ac646d5f8074b6236c84
-
tweak controlflow struct added to VM in 4eb6cbe190cf79d758a4a64b9fa10af64d4609ad
Show details
Resulting binary is smaller, but no significant performance difference either way on anything I tested the change on.
-
only update a maximum of one VIEWSCREEN tile per frame
Show details
Improves performance greatly in all renderers in scenes using more than one concurrent VIEWSCREEN sprite displaying unique cameras.
-
remove a bunch of EDUKE32_PREDICT macro usage from gameexec
-
move glGetGraphicsReset() shenanigans to videoShowFrame()
-
fix bugs with 90 degree texture rotation wall cstat bit
-
allow sound data to expire out of cache1d again
-
change G_ReadGLFrame() to use regular memory allocation instead of pulling a block from cache1d because glReadPixels() is so slow anyway
Show details
Resolves an issue where starting the game in a low resolution and creating a savegame before switching to a higher resolution and creating another savegame could corrupt `sizeof(palette_t) * the difference in total pixel count between the resolutions` bytes of adjacent data in cache1d.
-
revert cache1d to mostly Ken's version
Show details
Throws out a half-assed refactor that seems to contain a mistake somewhere that results in occasional cache1d data corruption.
-
update lz4 to 76106cba6fbbf8efb63d9fa90f052d384d212c56
-
SDL 2.28.3
-
additional sloped sprite clipping fixes
-
more comprehensive player getzrange checks
-
Blackhole any accumulated input when clearing the input FIFO/starting a level, prevents you from being spun around the wrong way when you spawn in.
-
Fix CON_EXIT not working correctly in while loops
Show details
The instruction pointer wasn't being updated properly.
-
Fix globalsound being broken in 3D Mode
Show details
This would previously attempt invalid array access with index -1.
-
Revert clipupdatesector() changes from df868267 and replace with a different approach
Show details
If the sector contains a TROR bunch, then whenever clipupdatesector() would normally return 1, instead run updatesector() and return 0 instead. The old approach did not work out in all situations. In Fury, certain flying enemies could not pass some TROR layers properly, and in AMC, trying to submerge in TROR water had the player glitch out on the surface. This exact approach had previously been used in AMC without any major issues for 2 years, before the recent TROR changes.
-
Rework the cansee() changes from 86e5fe7f to only affect TROR transitions
Show details
The problem with the previous version was that it didn't take overlapping geometry into account. This should be a more conservative approach that doesn't affect non-TROR uses of the cansee() function.
-
Add same sectnum checks as in hitscan() to A_RadiusDamage()
-
Fix hitscan() and clipmove() by checking for invalid sectnums
Show details
Invalid sectnums could previously be added to the clipsectlist if a hitscan shot passed a tror layer.
-
Add missing GAMEVAR_RAWQ16PTR case in VM_GAMEVAR_OPERATOR
-
Add detection for new DOS crash-fixed VACATION.GRP (and DUKEDC.GRP)
-
fix actors on lotag 1 sectors not being squishable
Show details
Squishing is now prevented if SE7 is present (as previously intended), or when the actor is standing on submergible TROR water.
- Fixes
- terminx/eduke32#283
-
fix regressions with clipupdatesector() from df868267
Show details
This resolves a bug in Duke3D where the player couldn't move while shrunk if a TROR sector was present on the map. It also ensures that the original clipping is used if no TROR bunch is present inside the sector in question. This should reduce the amount of backwards-compatibility problems.
-
Fix clipmove() problems with TROR wall geometry resulting from commit 7f00d5ce
Show details
The changes are now more conservative and only affect sprites on TROR layers.
-
General
Fix potential enginecompatibilitymode regression in cansee()
-
General
Fix enginecompatibilitymode regression in hitscan()
-
Improvements to A_RadiusDamage()
Show details
- Add TROR-awareness in similar fashion to clipmove() and hitscan() - Continue scanning walls to damage even if MAXDAMAGESECTORS is reached - Increase MAXDAMAGESECTORS from 128 to 256
-
Fix many cases in which cansee() would fail with TROR
Show details
This commit adds a failsafe which corrects the given origin and destination sectnums of the "cansee()" function, by checking if the corresponding (x,y,z) coordinates are actually contained within the given sectors. The problem with TROR in particular was that the calculation done to determine the point of intersection on the TROR layer requires the coordinates to be within the given sectnums. Else, cansee() would simply return 0, even if there was a clear line of sight. This should also implicitly fix any other cases where the coordinates of the cansee() call do not exactly match up with the given sectnums.
-
Properly split TROR code from commit 19fd0915 into YAX_ENABLE blocks
Show details
And fix problems introduced by 9070cd2bff6d4547f0765fc483ffd4f923e24383.