Commit graph

1420 commits

Author SHA1 Message Date
Christoph Oelckers
47436c58d7 - WH: enable sprite interpolation.
For all games: completely disable interpolation by setting smoothratio to 1 when cl_interpolate == 0 or cl_capfps == 1.
2021-11-21 23:49:37 +01:00
Christoph Oelckers
2a1a175305 - fixed compilation. 2021-11-12 11:26:00 +01:00
Christoph Oelckers
7ba152e588 Merge branch 'master' into whaven
# Conflicts:
#	source/core/gameinput.h
#	source/core/version.h
#	source/games/exhumed/src/enginesubs.cpp
#	source/games/sw/src/game.cpp
2021-11-12 11:19:23 +01:00
Christoph Oelckers
8f19dc12d8 - SW: code/data pointer saving cleanup.
* a large number of code pointer records were removed because none of these functions ever gets assigned to a pointer
* instead of looking up entries by index, do it by name. This is far less fragile and will survive deeper refactoring. The old storage by table index will break as soon as a single entry gets removed.

Since the old savegames got broken due to this problem recently it was a good time to change the setup.
2021-11-11 23:28:28 +01:00
Christoph Oelckers
a79f7a3784 - SW: use a dynamic array to track already visited sectors in TraverseBreakableWalls. 2021-11-11 21:57:55 +01:00
Christoph Oelckers
642088ed80 - let ValidateSprite print better messages when developer mode is set to warning and also call it for Blood. 2021-11-11 21:28:53 +01:00
Mitch Richters
6581d9d709 - InputScale(): Tidy up some math I just put in.
* Time for bed... *yarns*.
2021-11-10 22:23:59 +11:00
Mitch Richters
3c4afaa6ee - InputScale(): Add enabled-by-default scaler to returned value from function to correct drift that occurs as the frame-rate increases, taking into account different scaling ratios needed for differing ticrates. 2021-11-10 20:27:19 +11:00
Mitch Richters
5a33caa635 - InputScale(): Add enabled-by-default scaler to returned value from function to correct drift that occurs as the frame-rate increases, taking into account different scaling ratios needed for differing ticrates. 2021-11-10 20:13:06 +11:00
Christoph Oelckers
94b2b0af31 - widen sector index in engineLoadBoard to 32 bit 2021-11-09 00:07:00 +01:00
Christoph Oelckers
a5f51cfd88 - SW: migrate everything to the main clipmove function 2021-11-08 23:11:30 +01:00
Christoph Oelckers
5ba005276f Revert "- redid the 'inside' function."
This reverts commit c034c2a299.

While the function works, it is subtly different for points exactly on a line - enough to cause problems with Shadow Warrior's waypoint implementation.
2021-11-08 23:11:20 +01:00
Christoph Oelckers
c034c2a299 - redid the 'inside' function.
This is based on external information and does not use any of the original Build code.
Despite being a lot clearer than Build's bit masking voodoo and using 64 bit math to avoid overflows it is roughly 10% faster. :)

Code was moved to gamefuncs.cpp because this no longer falls under the Build license.
2021-11-08 21:29:21 +01:00
Christoph Oelckers
eeaa7f98f0 - inlines for validating sector and wall indices. 2021-11-08 18:56:10 +01:00
Christoph Oelckers
5d0c9a9fc8 - flush the network timer righr after loading and before starting a level.
Without this the entire load time may get registered as skipped frames-
2021-11-07 22:51:02 +01:00
Christoph Oelckers
60faceaf59 - Exhumed: fixed serialization.
The exhumedActors array was not written out, resulting in all kinds of strange effects.
2021-11-07 21:45:51 +01:00
Christoph Oelckers
6b6c3f26a5 - use wallsofsector in a few more places. 2021-11-07 18:08:22 +01:00
Christoph Oelckers
59df3b0e19 - added a little utility that allows iterating over the walls of a sector with C++ for's. 2021-11-07 17:27:05 +01:00
Christoph Oelckers
ae08ae1d8d - some leftover shorts plus utilities that ended up unused but may be useful later. 2021-11-07 16:46:23 +01:00
Mitch Richters
bb20827027 - processMovement(): Fix prescaling for Exhumed when using mouse or controller.
* Controller input before was too fast compared to other games, now it's 1:1.
* Mouse input when used without mouse look was too slow, now it's also 1:1 with the other games.
* `hid` in the context of `hidprescale` refers to 'Human Interface Device'.
2021-11-07 18:32:02 +11:00
Mitch Richters
b27f5e3be0 - gameinput.cpp/h: Internalise if statements used before calling PlayerHorizon and PlayerAngle class method scaletozero() into method itself. 2021-11-07 18:25:37 +11:00
Mitch Richters
72531e61db - gameinput.cpp/h: Consolidate all the return to zero code for angles and horizons into class members, using technique from horizoff as basis. 2021-11-07 11:37:12 +11:00
Christoph Oelckers
d20aa47adf - made sector parameter of updatesectorz an int and deprecated the short version. 2021-11-06 19:27:51 +01:00
Christoph Oelckers
83fe41e71e - made updatesector receive a 32 bit int pointer and deprecated the 16 bit variant. 2021-11-06 15:53:16 +01:00
Mitch Richters
a2a75fccc2 - Add support for Duke Nukem's Penthouse Paradise as shipped with the Zoom release of Duke Nukem 3D Atomic. 2021-11-06 23:26:56 +11:00
Mitch Richters
8cf115c444 - searchpaths.cpp: Patch in registry detection for Duke 3D Atomic + Expansions from Zoom on Windows.
* Fixes #567.
2021-11-06 22:59:56 +11:00
Mitch Richters
5050947dca - PlayerAngle::applyinput(): Consolidate some mostly duplicated code into a lambda. 2021-11-06 17:57:00 +11:00
Mitch Richters
1bb0c04e61 Revert "- Blood: Add mechanism to be able to force QAV interpolation based on picnum for testing purposes and not for end-user usage."
This reverts commit 276c000f9f.

* This was added for testing/debugging etc but it really doesn't work unless the QAV is built for it. As such, just get rid of it.
2021-11-06 17:32:55 +11:00
Mitch Richters
ed67d5d395 - PlayerHorizon::applyinput(): Only run through all the horizon to pitch and back code if we have input to process. 2021-11-06 15:34:10 +11:00
Mitch Richters
5f8c8fe0a4 - PlayerHorizon::applyinput(): Consolidate some mostly duplicated code into a lambda. 2021-11-06 15:07:28 +11:00
Mitch Richters
7499c84d0b - Add interpolatedhorizon() inlines to handle interpolating fixedhoriz objects without having to convert old and new values back to Q16.16 first. 2021-11-06 14:07:58 +11:00
Mitch Richters
5ec5321034 - gameinput.h/cpp: Abstract the angle/horizon adjustment math into a few inlines to avoid repetition and having to cast enums as doubles for C++20 compliance. 2021-11-06 14:07:53 +11:00
Mitch Richters
4c02663842 - PlayerAngle::applyinput(): Re-add addition of +/- 1. when returning rotscrnang to 0 lost long, long ago. 2021-11-06 14:07:36 +11:00
Mitch Richters
ab99b6b29d - PlayerHorizon::calcviewpitch(): Make returning horizoff to 0 speed uniform across all games. 2021-11-06 13:31:29 +11:00
Mitch Richters
91f6b2954c - binangle class: Tidy up missed C++20 warning fixed about enum used in floating-point arithmetic. 2021-11-06 10:27:04 +11:00
Mitch Richters
0eb4ff4ad2 - PlayerHorizon::calcviewpitch(): Provide commentary on how numeric literals used in function came to be and place into an enum for clarity. 2021-11-06 10:27:00 +11:00
Mitch Richters
1df2ba80ed - PlayerAngle::applyinput(): Provide commentary on how numeric literals used in rotscrnang/look_ang/spin math came to be and place into an enum for clarity. 2021-11-06 10:26:54 +11:00
Mitch Richters
8e8dfa9f9a - PlayerHorizon::applyinput(): Provide commentary on how numeric literals used in aim/look up/down and return to centre math came to be and place into an enum for clarity. 2021-11-06 09:30:03 +11:00
Mitch Richters
c424f7c8dd - processMovement(). Remove cl_exhumedoldturn CVAR and tidy up numeric literals in use.
* In our older codebase before the input code was refactored, Exhumed's turning was broken and was only applying the base factor of 12, significantly slower than the other games.
* Upon doing some testing in PCExhumed, I noticed their turning was faster as when the counter meets its target, the turn value is shifted left by 2, effectively making it 48: b90417ed8e/source/exhumed/src/player.cpp (L336-L337)
* Removed this CVAR because of this.
* Reworked turning code so that pressing left+right together cancel each other out and that pressing both doesn't call `updateTurnHeldAmt(scaleAdjust)` twice.
* Redid turn averages factoring in Exhumed's speeds, rounded off values and stored in an enum for clarity.
2021-11-06 09:28:47 +11:00
Christoph Oelckers
389f760d45 - address C++20 deprecation warnings with enums in floating point arithmetic. 2021-11-02 23:32:31 +01:00
Christoph Oelckers
86166f5e67 Revert "- xs_Float.h: Make all inlines return an unsigned value, and change previous unsigned inlines to signed."
Revert "- `xs_Float.h`: Add `getint()` getter to `_xs_doubleints` struct."
Revert "- SW: When adjusting horizon in `DoPlayerDeathHoriz()`, just use integer horizon values and not Q16.16."
Revert "- Duke (RR): Clean up some unnecessary `FixedToFloat()` usage with the `fixedhoriz` `asbuildf()` method."
Revert "- `binaryangle.h`: Use `constexpr` on inline functions where it was previously not possible to do so."
Revert "- `m_fixed.h`: Use `constexpr` on inline functions where it was previously not possible to do so."
Revert "- `xs_Float.h`: Convert header to `constexpr`."

This does nor work as it violates the constexpr rules for unions. The code will error out on compilation for accessing an inactive member of a union.
2021-11-01 20:25:38 +01:00
Mitch Richters
f3a2de92a4 - binaryangle.h: Use constexpr on inline functions where it was previously not possible to do so. 2021-11-01 23:37:31 +11:00
Mitch Richters
eb8b075727 - binaryangle.h: Change binangle bitshift operators to operate on signed value to properly handle angles > 1024. 2021-11-01 22:13:39 +11:00
Mitch Richters
0fe5ac6a56 - gameinput.h: Correctly use targetset() in PlayerHorizon and PlayerAngle structs. 2021-10-30 17:30:01 +02:00
Mitch Richters
15c4d38694 - gameinput.h: Add initial structure for PlayerPosition as companion to PlayerAngle and PlayerHorizon structs. 2021-10-30 17:30:01 +02:00
Mitch Richters
7ee4f49649 - gameinput.h: Remove some of the verticality from the PlayerHorizon and PlayerAngle structs. 2021-10-30 17:30:01 +02:00
Christoph Oelckers
6e0fbb2043 - removed templates.h includes. 2021-10-30 10:51:03 +02:00
Mitch Richters
b02a6a3ec9 - Replace MIN() from templates.h with version provided in STL. 2021-10-30 10:36:15 +02:00
Mitch Richters
9894729fc2 - Replace MAX() from templates.h with version provided in STL.
# Conflicts:
#	source/common/textures/hw_ihwtexture.cpp
#	source/common/utility/templates.h
2021-10-30 10:36:02 +02:00
Christoph Oelckers
57b638f26f - use std::clamp instead of our homegrown version. 2021-10-30 10:35:00 +02:00