EDuke32 Changelog Unofficial archive

Build 7743

25 June 2019 · 86 commits by 3 authors · SVN

Builds by month 18 builds

Original log file · 20190625-7743.txt
------------------------------------------------------------------------
r7743 | terminx | 2019-06-25 12:25:22 -0700 (Tue, 25 Jun 2019) | 1 line

Fix building with GCC 8
------------------------------------------------------------------------
r7742 | terminx | 2019-06-25 11:59:05 -0700 (Tue, 25 Jun 2019) | 1 line

Reintroduce mouse selection patch from Nuke.YKT
------------------------------------------------------------------------
r7741 | terminx | 2019-06-25 11:53:29 -0700 (Tue, 25 Jun 2019) | 3 lines

Revert "Patch from Nuke.YKT to improve mouse selection in the editor in Polymost"

Looks like commits made to public SVN after this commit in my local tree resulted in a merge error
------------------------------------------------------------------------
r7740 | terminx | 2019-06-25 11:50:42 -0700 (Tue, 25 Jun 2019) | 1 line

Patch from Nuke.YKT to improve mouse selection in the editor in Polymost
------------------------------------------------------------------------
r7739 | pogokeen | 2019-06-25 11:35:24 -0700 (Tue, 25 Jun 2019) | 4 lines

actors.cpp: Change demo camera path following behaviour to search for locators based on a hitag channel to avoid locator lotag contention.
Now, destination and subject locators should be assigned one hitag channel.  Destination locators will be visited starting from lotag 0 and counting upward.
Subject locators can have any lotag within the same hitag channel, and may also be a destination if the lotag is not separated from the destination locator ids.
Destination locators must now specify their subject locator in their owner field by lotag.
------------------------------------------------------------------------
r7738 | pogokeen | 2019-06-25 11:35:22 -0700 (Tue, 25 Jun 2019) | 1 line

game.cpp: When A_Spawn() is spawning from an already existing sprite, do not reset the owner field if it has been overridden from the default.
------------------------------------------------------------------------
r7737 | pogokeen | 2019-06-25 11:35:19 -0700 (Tue, 25 Jun 2019) | 3 lines

polymost.cpp: Fix polymost_domost() issue with COMBINE_STRIPS where in certain cases, merging with the viewport nodes caused accidental reading of sentinel node values.
Additional debug code is included for visualizing the state of the vsp data structure.
Further, fix issue in drawpoly where it would access out of bounds of dpxy if fewer than 3 vertices were passed in and fix issue where multiple calls to polymost_setVisibility() were repeatedly setting the visibility factor to the same value.
------------------------------------------------------------------------
r7736 | pogokeen | 2019-06-25 11:35:16 -0700 (Tue, 25 Jun 2019) | 2 lines

Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.
Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.
------------------------------------------------------------------------
r7735 | pogokeen | 2019-06-25 11:35:11 -0700 (Tue, 25 Jun 2019) | 1 line

winlayer.cpp: fix videoBeginDrawing() to return an intptr_t to mirrorBuffer when inpreparemirror
------------------------------------------------------------------------
r7734 | pogokeen | 2019-06-25 11:35:08 -0700 (Tue, 25 Jun 2019) | 2 lines

Add EVENT_RESETGOTPICS which gives scripts the chance to reset gotpics (and similar effects trackers) for effects that run in EVENT_DISPLAYROOMS.
EVENT_RESETGOTPICS is called after the last call to EVENT_DISPLAYROOMS in a frame, but before any engine-side calls to renderDrawRoomsQ16()
------------------------------------------------------------------------
r7733 | pogokeen | 2019-06-25 11:35:05 -0700 (Tue, 25 Jun 2019) | 1 line

Fix TROR & skyboxes to work with mirrors in Software & Polymost
------------------------------------------------------------------------
r7732 | pogokeen | 2019-06-25 11:35:01 -0700 (Tue, 25 Jun 2019) | 1 line

game.cpp: fix issue where tilt angle was not being reset to 0 at times when it should have been disabled
------------------------------------------------------------------------
r7731 | pogokeen | 2019-06-25 11:34:59 -0700 (Tue, 25 Jun 2019) | 2 lines

game.cpp: improve G_FPSLimit() to be more stable with regard to floating point precision.
Additionally, prefer rendering early and compensating with a late frame due to clock precision rather than the other way around so that we are more consistently within a target vblank period.
------------------------------------------------------------------------
r7730 | pogokeen | 2019-06-25 11:34:56 -0700 (Tue, 25 Jun 2019) | 2 lines

Fix latency issue introduced by G_FPSLimit() handling of videoNextPage() that was causing frames to be delayed presentation until after the next frame is prepared.
videoNextPage() is now called immediately after preparing the frame for drawing, outside of G_FPSLimit() but on the condition that its return value is true.
------------------------------------------------------------------------
r7729 | pogokeen | 2019-06-25 11:34:52 -0700 (Tue, 25 Jun 2019) | 1 line

Add benchmarkmode cvar which allows putting demo cameras in the map which can be used for automatic benchmarking of performance & correctness testing
------------------------------------------------------------------------
r7728 | pogokeen | 2019-06-25 11:34:49 -0700 (Tue, 25 Jun 2019) | 1 line

game.cpp: change camera sprite yvel limits to clamp to min/max angle when beyond the min/max rather than when beyond 0 and 199
------------------------------------------------------------------------
r7727 | pogokeen | 2019-06-25 11:34:45 -0700 (Tue, 25 Jun 2019) | 3 lines

actors.cpp: Add additional demo camera behaviours.
Allow the demo camera to be used while not playing back a recorded demo.
Add the ability for the camera to follow paths specified by locators.
------------------------------------------------------------------------
r7726 | terminx | 2019-06-25 04:30:38 -0700 (Tue, 25 Jun 2019) | 1 line

Player duct walking sound fix
------------------------------------------------------------------------
r7725 | terminx | 2019-06-25 04:30:35 -0700 (Tue, 25 Jun 2019) | 1 line

libdivide fixup
------------------------------------------------------------------------
r7724 | terminx | 2019-06-25 04:30:31 -0700 (Tue, 25 Jun 2019) | 1 line

Call S_PauseSounds(false) from Menu_Close()
------------------------------------------------------------------------
r7723 | terminx | 2019-06-25 04:30:27 -0700 (Tue, 25 Jun 2019) | 1 line

Patch from Nuke.YKT to add support for the cstat flip bits to voxels in both software and Polymost
------------------------------------------------------------------------
r7722 | terminx | 2019-06-25 04:30:22 -0700 (Tue, 25 Jun 2019) | 1 line

Replace DO_TILE_ANIM() macro with tileUpdatePicnum() function
------------------------------------------------------------------------
r7721 | terminx | 2019-06-25 04:30:17 -0700 (Tue, 25 Jun 2019) | 1 line

Use default argument values of -1 for the sprite and player indexes passed to VM_OnEvent()
------------------------------------------------------------------------
r7720 | terminx | 2019-06-25 04:30:13 -0700 (Tue, 25 Jun 2019) | 1 line

Templatized linked list functions
------------------------------------------------------------------------
r7719 | terminx | 2019-06-25 04:30:08 -0700 (Tue, 25 Jun 2019) | 1 line

Use remove_pointer_t instead of regular std::remove_pointer and add a definition for it for CXX11 builds
------------------------------------------------------------------------
r7718 | terminx | 2019-06-25 04:30:03 -0700 (Tue, 25 Jun 2019) | 1 line

Add SLOPTABLESIZ preprocessor definition
------------------------------------------------------------------------
r7717 | terminx | 2019-06-25 04:29:59 -0700 (Tue, 25 Jun 2019) | 1 line

Patch from Nuke.YKT to increase the size of sloptable[]
------------------------------------------------------------------------
r7716 | terminx | 2019-06-25 04:29:55 -0700 (Tue, 25 Jun 2019) | 1 line

EDuke32-specific libdivide customizations
------------------------------------------------------------------------
r7715 | terminx | 2019-06-25 04:29:50 -0700 (Tue, 25 Jun 2019) | 1 line

Update libdivide from git
------------------------------------------------------------------------
r7714 | terminx | 2019-06-25 04:29:46 -0700 (Tue, 25 Jun 2019) | 1 line

Patch from Nuke.YKT to improve the appearance of slopes in software mode
------------------------------------------------------------------------
r7713 | terminx | 2019-06-25 04:29:42 -0700 (Tue, 25 Jun 2019) | 1 line

Patch from Nuke.YKT to implement q16 angle and horiz in software mode
------------------------------------------------------------------------
r7712 | terminx | 2019-06-25 04:29:38 -0700 (Tue, 25 Jun 2019) | 5 lines

Patch from Fox:

Polymost visibility: compensate for the classic mode "truncating" the lookup shades by moving the fog ramp by the equivalent of 1/2 shade

Fix some issues with negative shade in GL fog.
------------------------------------------------------------------------
r7711 | terminx | 2019-06-25 04:29:34 -0700 (Tue, 25 Jun 2019) | 1 line

Use #if DEBUGGINGAIDS>=2 for the assertions in the structure trackers
------------------------------------------------------------------------
r7710 | terminx | 2019-06-25 04:29:31 -0700 (Tue, 25 Jun 2019) | 1 line

Don't force APLAYER to have the default action when shown through a viewscreen in EDUKE32_STANDALONE builds
------------------------------------------------------------------------
r7709 | terminx | 2019-06-25 04:29:27 -0700 (Tue, 25 Jun 2019) | 1 line

Cosmetic change
------------------------------------------------------------------------
r7708 | terminx | 2019-06-25 04:29:23 -0700 (Tue, 25 Jun 2019) | 3 lines

Get rid of DYNALLOC_ARRAYS

It's garbage and the "functionality" it provided is something that will be able to be achieved in a better way in a future commit.
------------------------------------------------------------------------
r7707 | terminx | 2019-06-25 04:29:19 -0700 (Tue, 25 Jun 2019) | 3 lines

Remove FIXMATH_NO_64BIT

This codebase doesn't work on any platforms where int64_t isn't even a type.
------------------------------------------------------------------------
r7706 | terminx | 2019-06-25 04:29:15 -0700 (Tue, 25 Jun 2019) | 1 line

It looks like this works in MSVC
------------------------------------------------------------------------
r7705 | terminx | 2019-06-25 04:29:08 -0700 (Tue, 25 Jun 2019) | 3 lines

Added Xfree() function to accompany the Xmalloc() family of functions and change all uses of Bfree() to Xfree()

This was necessary because everything is already allocated with the Xmalloc() functions, but a future commit will make blocks allocated with those functions no longer compatible with the system implementation of free(), which Bfree() wraps.
------------------------------------------------------------------------
r7704 | terminx | 2019-06-25 04:28:53 -0700 (Tue, 25 Jun 2019) | 1 line

Set asksave in fixrepeats() in the editor
------------------------------------------------------------------------
r7703 | terminx | 2019-06-25 04:28:49 -0700 (Tue, 25 Jun 2019) | 1 line

Update miniz from 2.0.8 to 2.1.0--not much of a change
------------------------------------------------------------------------
r7702 | terminx | 2019-06-25 04:28:44 -0700 (Tue, 25 Jun 2019) | 1 line

Fix bug with sprite heights and autoaim targeting
------------------------------------------------------------------------
r7701 | terminx | 2019-06-25 04:28:40 -0700 (Tue, 25 Jun 2019) | 3 lines

Fix integer overflows in rintersect() and optimize a bit of the logic

Some of the variable initialization ordering may look counterintuitive at first, but it's intended to avoid read-after-write memory access penalties.
------------------------------------------------------------------------
r7700 | terminx | 2019-06-25 04:28:37 -0700 (Tue, 25 Jun 2019) | 1 line

Minor pragmas.h cleanups
------------------------------------------------------------------------
r7699 | terminx | 2019-06-25 04:28:33 -0700 (Tue, 25 Jun 2019) | 1 line

Remove ifdef'd out Gv_DivVar() generation with VM_GAMEVAR_OPERATOR macro because LIBDIVIDE_ALWAYS is going away
------------------------------------------------------------------------
r7698 | terminx | 2019-06-25 04:28:29 -0700 (Tue, 25 Jun 2019) | 3 lines

"Fix" editor clipping bug allowing movement into null space

This doesn't so much fix the issue as band-aid over it--it appears to be an OG BUILD bug that has happened since long before I ever began improving the clipping, I don't know what causes it, and I don't want to fuck everything up trying to fix it right now.
------------------------------------------------------------------------
r7697 | terminx | 2019-06-25 04:28:25 -0700 (Tue, 25 Jun 2019) | 1 line

Replace manual casts of sprite and wall pointers to vec2/3_t with use of the anonymous union
------------------------------------------------------------------------
r7696 | terminx | 2019-06-25 04:28:18 -0700 (Tue, 25 Jun 2019) | 1 line

Fix alpha blending bug when switching from Polymost to software mode
------------------------------------------------------------------------
r7695 | terminx | 2019-06-25 04:28:14 -0700 (Tue, 25 Jun 2019) | 3 lines

Rename STRUCT_TRACKERS_ENABLED preprocessor definition to USE_STRUCT_TRACKERS

This may also fix a minor performance regression introduced in Polymer sometime after we switched to building as C++, caused by confusion between STRUCT_TRACKERS_ENABLED and UNTRACKED_STRUCTS. UNTRACKED_STRUCTS is now named UNTRACT_STRUCTS__ to dissuade use outside of buildtypes.h.
------------------------------------------------------------------------
r7694 | terminx | 2019-06-25 04:28:09 -0700 (Tue, 25 Jun 2019) | 1 line

Rename vec2s_t to vec2_16_t
------------------------------------------------------------------------
r7693 | terminx | 2019-06-25 04:28:04 -0700 (Tue, 25 Jun 2019) | 1 line

Add anonymous union between separate coordinate variables and vec2/3_t in basic map structs
------------------------------------------------------------------------
r7692 | terminx | 2019-06-25 04:28:00 -0700 (Tue, 25 Jun 2019) | 1 line

Add missing ifdef
------------------------------------------------------------------------
r7691 | terminx | 2019-06-25 04:27:56 -0700 (Tue, 25 Jun 2019) | 1 line

This benchmarks as just the tiniest bit faster on my machine
------------------------------------------------------------------------
r7690 | terminx | 2019-06-25 04:27:52 -0700 (Tue, 25 Jun 2019) | 3 lines

Simplify map structure tracker overloads

Due to less branching, this is actually faster than trying to be clever.
------------------------------------------------------------------------
r7689 | terminx | 2019-06-25 04:27:47 -0700 (Tue, 25 Jun 2019) | 1 line

EDUKE32_STANDALONE crap
------------------------------------------------------------------------
r7688 | hendricks266 | 2019-06-01 11:42:27 -0700 (Sat, 01 Jun 2019) | 1 line

Fix macOS -Wdeprecated-declarations warnings
------------------------------------------------------------------------
r7687 | hendricks266 | 2019-05-27 15:30:42 -0700 (Mon, 27 May 2019) | 1 line

Add support for E0LXY to game defs music token
------------------------------------------------------------------------
r7686 | hendricks266 | 2019-05-26 22:45:45 -0700 (Sun, 26 May 2019) | 1 line

Fix OOB access in polymost_spriteHasTranslucency
------------------------------------------------------------------------
r7685 | hendricks266 | 2019-05-26 22:45:41 -0700 (Sun, 26 May 2019) | 1 line

Fix OOB access in clipmove
------------------------------------------------------------------------
r7684 | hendricks266 | 2019-05-26 22:45:38 -0700 (Sun, 26 May 2019) | 1 line

Audiolib: Fix use-after-frees in Vorbis, FLAC, XA decoding
------------------------------------------------------------------------
r7683 | hendricks266 | 2019-05-26 22:45:33 -0700 (Sun, 26 May 2019) | 1 line

Audiolib: Clean up samples handling
------------------------------------------------------------------------
r7682 | pogokeen | 2019-05-25 07:59:14 -0700 (Sat, 25 May 2019) | 1 line

polymost.cpp: fix issue where GL_ALPHA_TEST could be enabled in certain instances when executing polymost_drawrooms() and better handle when we are drawing without a texture in polymost_drawpoly()
------------------------------------------------------------------------
r7681 | pogokeen | 2019-05-25 07:59:09 -0700 (Sat, 25 May 2019) | 1 line

Add GL debugging event annotations for Polymost functions
------------------------------------------------------------------------
r7680 | hendricks266 | 2019-05-19 13:02:05 -0700 (Sun, 19 May 2019) | 1 line

!
------------------------------------------------------------------------
r7679 | hendricks266 | 2019-05-19 13:02:02 -0700 (Sun, 19 May 2019) | 1 line

Restore file loading
------------------------------------------------------------------------
r7678 | hendricks266 | 2019-05-19 13:00:17 -0700 (Sun, 19 May 2019) | 3 lines

Revert "Improve file loading"

This reverts commit bfc6b7589e8238351986499fb830c7ab274344bc.
------------------------------------------------------------------------
r7677 | hendricks266 | 2019-05-19 12:57:10 -0700 (Sun, 19 May 2019) | 1 line

Allow CON-specified actions to override hardcoded tsprpicnum behavior of PLAYERONWATER, CAMERA1, and RAT
------------------------------------------------------------------------
r7676 | terminx | 2019-05-18 20:56:29 -0700 (Sat, 18 May 2019) | 3 lines

Move S_Update() out of game loop and into Net_GetPackets()

This improves, but doesn't fix, the issue with sound popping when the player angle changes.
------------------------------------------------------------------------
r7675 | terminx | 2019-05-18 20:56:24 -0700 (Sat, 18 May 2019) | 1 line

"horizon offset should not be affected by projection hack"
------------------------------------------------------------------------
r7674 | terminx | 2019-05-18 20:56:20 -0700 (Sat, 18 May 2019) | 3 lines

Gamevar system maintenance

This removes some of the error handling for gamevar reads and writes and trades it for simpler code and a small-but-benchmarkable performance increase.
------------------------------------------------------------------------
r7673 | terminx | 2019-05-18 20:56:13 -0700 (Sat, 18 May 2019) | 5 lines

Convert loops using unsigned integers as iterators to use regular signed ints instead

https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html

Doing this as cleanly as possible involved demoting several function parameters concerning object sizes and counts from size_t to int--I'm fine with this change as the functions in question are not actually capable of handling input with sizes larger than what can be stored in a signed 32-bit integer, making the use of size_t here misleading at best.
------------------------------------------------------------------------
r7672 | terminx | 2019-05-18 20:56:02 -0700 (Sat, 18 May 2019) | 1 line

Move call to S_Update() to after G_MoveLoop()
------------------------------------------------------------------------
r7671 | terminx | 2019-05-18 20:55:56 -0700 (Sat, 18 May 2019) | 1 line

Enable a couple of additional useful -W flags for newer versions of GCC
------------------------------------------------------------------------
r7670 | terminx | 2019-05-18 20:55:53 -0700 (Sat, 18 May 2019) | 1 line

Better stupid names for stupid macros in stupid function
------------------------------------------------------------------------
r7669 | terminx | 2019-05-18 20:55:49 -0700 (Sat, 18 May 2019) | 1 line

Sanitize A_GetFurthestAngle() return value
------------------------------------------------------------------------
r7668 | terminx | 2019-05-18 20:55:44 -0700 (Sat, 18 May 2019) | 3 lines

Patch from Fox to access the player's subweapon member as a bitfield

"Add 'bsubweapon' player structure. Same as 'subweapon', except that it writes a bit for each weapon. For example, 'ife player[].bsubweapon GROW_WEAPON 1' has the same result as 'ifand player[].subweapon 2048'."
------------------------------------------------------------------------
r7667 | terminx | 2019-05-18 20:55:40 -0700 (Sat, 18 May 2019) | 1 line

Fix actor z position update bug
------------------------------------------------------------------------
r7666 | terminx | 2019-05-18 20:55:36 -0700 (Sat, 18 May 2019) | 1 line

EDUKE32_STANDALONE stuff
------------------------------------------------------------------------
r7665 | terminx | 2019-05-18 20:55:31 -0700 (Sat, 18 May 2019) | 1 line

Add GAMEVAR_RAWQ16PTR, functioning the same as GAMEVAR_INT32PTR
------------------------------------------------------------------------
r7664 | terminx | 2019-05-18 20:55:27 -0700 (Sat, 18 May 2019) | 3 lines

Make CLIPMASK0 and CLIPMASK1 regular defined tokens instead of read-only gamevars

I don't remember if there was any particular reason they were added as gamevars in the first place.
------------------------------------------------------------------------
r7663 | terminx | 2019-05-18 20:55:23 -0700 (Sat, 18 May 2019) | 1 line

Minor optimization to avoid read-after-write in Gv_DivVar()
------------------------------------------------------------------------
r7662 | terminx | 2019-05-18 20:55:19 -0700 (Sat, 18 May 2019) | 1 line

Promote `display_mirror` from char to int32_t and remove GAMEVAR_UINT8PTR handling since nothing else was using it
------------------------------------------------------------------------
r7661 | terminx | 2019-05-18 20:55:14 -0700 (Sat, 18 May 2019) | 1 line

Tweak EDUKE32_PRE_XALLOC thing used when DEBUGGINGAIDS is defined
------------------------------------------------------------------------
r7660 | terminx | 2019-05-18 20:55:10 -0700 (Sat, 18 May 2019) | 1 line

Add EDUKE32_PREDICT_TRUE to our *alloc macros and flip the condition around so the true branch is first
------------------------------------------------------------------------
r7659 | terminx | 2019-05-18 20:55:06 -0700 (Sat, 18 May 2019) | 1 line

Add preprocessor check for __OPTIMIZE__ to EDUKE32_PREDICT_TRUE and EDUKE32_PREDICT_FALSE
------------------------------------------------------------------------
r7658 | terminx | 2019-05-18 20:55:01 -0700 (Sat, 18 May 2019) | 1 line

CON VM maintenance
------------------------------------------------------------------------
See http://svn.eduke32.com/listing.php?repname=eduke32 for more details.
Revert FixEngine

Revert "Patch from Nuke.YKT to improve mouse selection in the editor in Polymost"

Richard Gobeille (TerminX) 25 Jun 2019, 11:53 UTC−7 r7741

Looks like commits made to public SVN after this commit in my local tree resulted in a merge error

actors.cpp: Change demo camera path following behaviour to search for locators based on a hitag channel to avoid locator lotag contention.

pogokeen 25 Jun 2019, 11:35 UTC−7 r7739

Now, destination and subject locators should be assigned one hitag channel. Destination locators will be visited starting from lotag 0 and counting upward. Subject locators can have any lotag within the same hitag channel, and may also be a destination if the lotag is not separated from the destination locator ids. Destination locators must now specify their subject locator in their owner field by lotag.

Engine

game.cpp: When A_Spawn() is spawning from an already existing sprite, do not reset the owner field if it has been overridden from the default.

pogokeen 25 Jun 2019, 11:35 UTC−7 r7738
FixEngine

polymost.cpp: Fix polymost_domost() issue with COMBINE_STRIPS where in certain cases, merging with the viewport nodes caused accidental reading of sentinel node values.

pogokeen 25 Jun 2019, 11:35 UTC−7 r7737

Additional debug code is included for visualizing the state of the vsp data structure. Further, fix issue in drawpoly where it would access out of bounds of dpxy if fewer than 3 vertices were passed in and fix issue where multiple calls to polymost_setVisibility() were repeatedly setting the visibility factor to the same value.

Engine

Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.

pogokeen 25 Jun 2019, 11:35 UTC−7 r7736

Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.

Fix

winlayer.cpp: fix videoBeginDrawing() to return an intptr_t to mirrorBuffer when inpreparemirror

pogokeen 25 Jun 2019, 11:35 UTC−7 r7735
EngineCON

Add EVENT_RESETGOTPICS which gives scripts the chance to reset gotpics (and similar effects trackers) for effects that run in EVENT_DISPLAYROOMS.

pogokeen 25 Jun 2019, 11:35 UTC−7 r7734

EVENT_RESETGOTPICS is called after the last call to EVENT_DISPLAYROOMS in a frame, but before any engine-side calls to renderDrawRoomsQ16()

FixEngine

Fix TROR & skyboxes to work with mirrors in Software & Polymost

pogokeen 25 Jun 2019, 11:35 UTC−7 r7733
Fix

game.cpp: fix issue where tilt angle was not being reset to 0 at times when it should have been disabled

pogokeen 25 Jun 2019, 11:35 UTC−7 r7732
Engine

game.cpp: improve G_FPSLimit() to be more stable with regard to floating point precision.

pogokeen 25 Jun 2019, 11:34 UTC−7 r7731

Additionally, prefer rendering early and compensating with a late frame due to clock precision rather than the other way around so that we are more consistently within a target vblank period.

Fix

Fix latency issue introduced by G_FPSLimit() handling of videoNextPage() that was causing frames to be delayed presentation until after the next frame is prepared.

pogokeen 25 Jun 2019, 11:34 UTC−7 r7730

videoNextPage() is now called immediately after preparing the frame for drawing, outside of G_FPSLimit() but on the condition that its return value is true.

Add benchmarkmode cvar which allows putting demo cameras in the map which can be used for automatic benchmarking of performance & correctness testing

pogokeen 25 Jun 2019, 11:34 UTC−7 r7729
Engine

game.cpp: change camera sprite yvel limits to clamp to min/max angle when beyond the min/max rather than when beyond 0 and 199

pogokeen 25 Jun 2019, 11:34 UTC−7 r7728

actors.cpp: Add additional demo camera behaviours.

pogokeen 25 Jun 2019, 11:34 UTC−7 r7727

Allow the demo camera to be used while not playing back a recorded demo. Add the ability for the camera to follow paths specified by locators.

Engine

Patch from Nuke.YKT to add support for the cstat flip bits to voxels in both software and Polymost

Richard Gobeille (TerminX) 25 Jun 2019, 04:30 UTC−7 r7723

Use remove_pointer_t instead of regular std::remove_pointer and add a definition for it for CXX11 builds

Richard Gobeille (TerminX) 25 Jun 2019, 04:30 UTC−7 r7719
FixEngine

Patch from Fox:

Richard Gobeille (TerminX) 25 Jun 2019, 04:29 UTC−7 r7712

Polymost visibility: compensate for the classic mode "truncating" the lookup shades by moving the fog ramp by the equivalent of 1/2 shade Fix some issues with negative shade in GL fog.

Don't force APLAYER to have the default action when shown through a viewscreen in EDUKE32_STANDALONE builds

Richard Gobeille (TerminX) 25 Jun 2019, 04:29 UTC−7 r7710

Get rid of DYNALLOC_ARRAYS

Richard Gobeille (TerminX) 25 Jun 2019, 04:29 UTC−7 r7708

It's garbage and the "functionality" it provided is something that will be able to be achieved in a better way in a future commit.

Added Xfree() function to accompany the Xmalloc() family of functions and change all uses of Bfree() to Xfree()

Richard Gobeille (TerminX) 25 Jun 2019, 04:29 UTC−7 r7705

This was necessary because everything is already allocated with the Xmalloc() functions, but a future commit will make blocks allocated with those functions no longer compatible with the system implementation of free(), which Bfree() wraps.

Fix

Fix integer overflows in rintersect() and optimize a bit of the logic

Richard Gobeille (TerminX) 25 Jun 2019, 04:28 UTC−7 r7701

Some of the variable initialization ordering may look counterintuitive at first, but it's intended to avoid read-after-write memory access penalties.

Remove ifdef'd out Gv_DivVar() generation with VM_GAMEVAR_OPERATOR macro because LIBDIVIDE_ALWAYS is going away

Richard Gobeille (TerminX) 25 Jun 2019, 04:28 UTC−7 r7699
Fix

"Fix" editor clipping bug allowing movement into null space

Richard Gobeille (TerminX) 25 Jun 2019, 04:28 UTC−7 r7698

This doesn't so much fix the issue as band-aid over it--it appears to be an OG BUILD bug that has happened since long before I ever began improving the clipping, I don't know what causes it, and I don't want to fuck everything up trying to fix it right now.

FixEngine

Rename STRUCT_TRACKERS_ENABLED preprocessor definition to USE_STRUCT_TRACKERS

Richard Gobeille (TerminX) 25 Jun 2019, 04:28 UTC−7 r7695

This may also fix a minor performance regression introduced in Polymer sometime after we switched to building as C++, caused by confusion between STRUCT_TRACKERS_ENABLED and UNTRACKED_STRUCTS. UNTRACKED_STRUCTS is now named UNTRACT_STRUCTS__ to dissuade use outside of buildtypes.h.

Simplify map structure tracker overloads

Richard Gobeille (TerminX) 25 Jun 2019, 04:27 UTC−7 r7690

Due to less branching, this is actually faster than trying to be clever.

FixEngine

polymost.cpp: fix issue where GL_ALPHA_TEST could be enabled in certain instances when executing polymost_drawrooms() and better handle when we are drawing without a texture in polymost_drawpoly()

pogokeen 25 May 2019, 07:59 UTC−7 r7682
Engine

Add GL debugging event annotations for Polymost functions

pogokeen 25 May 2019, 07:59 UTC−7 r7681
CON

Allow CON-specified actions to override hardcoded tsprpicnum behavior of PLAYERONWATER, CAMERA1, and RAT

Evan Ramos (Hendricks266) 19 May 2019, 12:57 UTC−7 r7677
Fix

Move S_Update() out of game loop and into Net_GetPackets()

Richard Gobeille (TerminX) 18 May 2019, 20:56 UTC−7 r7676

This improves, but doesn't fix, the issue with sound popping when the player angle changes.

CON

Gamevar system maintenance

Richard Gobeille (TerminX) 18 May 2019, 20:56 UTC−7 r7674

This removes some of the error handling for gamevar reads and writes and trades it for simpler code and a small-but-benchmarkable performance increase.

Fix

Convert loops using unsigned integers as iterators to use regular signed ints instead

Richard Gobeille (TerminX) 18 May 2019, 20:56 UTC−7 r7673

https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html Doing this as cleanly as possible involved demoting several function parameters concerning object sizes and counts from size_t to int--I'm fine with this change as the functions in question are not actually capable of handling input with sizes larger than what can be stored in a signed 32-bit integer, making the use of size_t here misleading at best.

Patch from Fox to access the player's subweapon member as a bitfield

Richard Gobeille (TerminX) 18 May 2019, 20:55 UTC−7 r7668

"Add 'bsubweapon' player structure. Same as 'subweapon', except that it writes a bit for each weapon. For example, 'ife player[].bsubweapon GROW_WEAPON 1' has the same result as 'ifand player[].subweapon 2048'."

CON

Make CLIPMASK0 and CLIPMASK1 regular defined tokens instead of read-only gamevars

Richard Gobeille (TerminX) 18 May 2019, 20:55 UTC−7 r7664

I don't remember if there was any particular reason they were added as gamevars in the first place.

Promote `display_mirror` from char to int32_t and remove GAMEVAR_UINT8PTR handling since nothing else was using it

Richard Gobeille (TerminX) 18 May 2019, 20:55 UTC−7 r7662

Add EDUKE32_PREDICT_TRUE to our *alloc macros and flip the condition around so the true branch is first

Richard Gobeille (TerminX) 18 May 2019, 20:55 UTC−7 r7660