Build 10528
GIT-
If the texturecache.index file cannot be read, invalidate it
Show details
This fixes a problem where the texcache file could grow without limit if something managed to corrupt the texcache index.
SVN handles and Git names are merged into one person.
If the texturecache.index file cannot be read, invalidate it
This fixes a problem where the texcache file could grow without limit if something managed to corrupt the texcache index.
Update port credits
Condition mimalloc's -Wno-class-memaccess on GCC version
On FreeBSD and OpenBSD use `pthread_get_name_np` spelling instead of `pthread_getname_np`
Annoyingly, these functions are spelt differently on different OSes.
Use strerror_r() on FreeBSD and OpenBSD
strerror_r has been available since FreeBSD 4.4 and OpenBSD 3.3 (both many years ago).
Fix -Wundef warning: check that _POSIX_C_SOURCE is defined before checking it
add new TEXT_CENTERCONSTWIDTH flag for screentext to center glyphs within their allotted region in constant width mode
respect xbetween value for screentext between chars in constant width mode
Update gamecontrollerdb.txt
fix edge case where a zero-byte .dat file would be misdetected as a .grp file
the most minor of minor fixes to windowsCheckForUpdates()
#ifndef EDUKE32_STANDALONE the HTTP update checker
fix USE_OPENGL=0 build
add -nocontroller parameter to completely disable SDL controller support
add warning if TROR somehow tries to draw the same wall more than once per frame
use "--" instead of "-" for unbound keys in the keyboard configuration menu
don't pass SDL_INIT_HAPTIC to SDL_InitSubSystem() because it's not actually used for game controllers
make Gv_Clear() actually clear and Gv_Init() actually re-init
don't EDUKE32_PREDICT in the sound functions
use internal CONs if external CON compilation fails, like the DOS version did.
I see now that Todd was actually very wise.
fix regression where trying to play an undefined sound with an index higher than the highest defined index could crash the game
fix a rare input issue involving creating savegames while the CON script execution is lagging
Increase YAX_MAXCLIPSECTORS from 64 to 256
Some TROR layers were blocking hitscan shots because of the low limit.
Comment out log message in appendstate/prependstate
Engine/Duke3D: Several changes to TROR traversal in clipping functions
* 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.
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
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
The instruction pointer wasn't being updated properly.
Fix globalsound being broken in 3D Mode
This would previously attempt invalid array access with index -1.
Revert clipupdatesector() changes from df868267 and replace with a different approach
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
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
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
Squishing is now prevented if SE7 is present (as previously intended), or when the actor is standing on submergible TROR water.
fix regressions with clipupdatesector() from df868267
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
The changes are now more conservative and only affect sprites on TROR layers.
Fix potential enginecompatibilitymode regression in cansee()
Fix enginecompatibilitymode regression in hitscan()
Improvements to A_RadiusDamage()
- 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
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.