Commit graph

855 commits

Author SHA1 Message Date
Christoph Oelckers
168b0385cf - moved shadeToLight out of build.h. 2021-03-25 09:13:59 +01:00
Mitchell Richters
957f7e9487 - Accept binangle, fixedhoriz and lookangle classes in SetupViewpoint() vs. Q16.16 variables.
* Allows for more precision than Q16.16.
* Used as opportunity for `rollang` to be set using the `asdeg()` method, not `asbuildf()`.
2021-03-25 19:06:01 +11:00
Christoph Oelckers
13bbf0a4f9 - sector portals in RRRA are working. 2021-03-24 23:55:10 +01:00
Christoph Oelckers
dbbdfaa4ba - sector portals in Blood are working. 2021-03-24 23:11:06 +01:00
Christoph Oelckers
b7e8815133 - some further lightening of compat.h. 2021-03-24 21:13:36 +01:00
Christoph Oelckers
022edd2dc2 - cleaned engine.cpp off all code exclusive to the Polymost renderer. 2021-03-24 19:45:42 +01:00
Christoph Oelckers
e47b4507e4 - serialize the sector portal offset table.
Due to where this happens, the init code for these portals cannot be run when loading a savegame so it has to be saved.
2021-03-24 18:42:00 +01:00
Christoph Oelckers
1297e4ed02 - SW's line to sprite portals are working now.
Also fixed a clipper issue with Blood's line to line portals.
2021-03-24 10:33:50 +01:00
Christoph Oelckers
9903b39cf5 - make Blood's line to line portal operational.
Note that these portals cannot be rotated, so to preserve bad setups this limitation needs to be replicated.
If we want proper line to line portals for all games they need to be made a different portal type.
2021-03-24 09:04:48 +01:00
Christoph Oelckers
829be9b56b - use value parameters for arguments in binaryangle.h. 2021-03-24 09:02:07 +01:00
Christoph Oelckers
087da46522 - finally got mirrors working. 2021-03-23 21:23:49 +01:00
Christoph Oelckers
c681fa6699 - use Build math for mirror transitions. 2021-03-23 20:30:19 +01:00
Christoph Oelckers
46e0b16370 - fixed ordering issues in drawer
* do not check the clipper in the collection pass to reduce number of bunches. Clipping here brings no performance gain.
* fixed the loop reset in FindClosestBunch to actually process the array's first element.
2021-03-23 19:20:06 +01:00
Christoph Oelckers
0c7f05a416 - let the clipper work exclusively on Build coordinates. 2021-03-22 23:40:25 +01:00
Christoph Oelckers
096ce5e025 - initial sky fixes. 2021-03-22 16:02:52 +01:00
Christoph Oelckers
e884a418f8 - portal WIP 2021-03-22 12:07:29 +01:00
Christoph Oelckers
63f057d93f - portal and sky WIP. 2021-03-21 22:48:01 +01:00
Christoph Oelckers
75159e06c0 - uncommented the portal code in hw_walls.cpp. 2021-03-21 19:36:55 +01:00
Christoph Oelckers
9fe462d358 - adapted GZDoom's portal framework.
Not tested yet and somewhat stripped down, as the portals this needs to support are a lot less complex - plus some of the issues in Doom do not apply here.
2021-03-21 18:41:23 +01:00
Christoph Oelckers
a36377111c - engine-side portal setup for Blood and RRRA. 2021-03-21 14:48:35 +01:00
Christoph Oelckers
b91441f849 - same render interface rework for Shadow Warrior. 2021-03-21 12:22:50 +01:00
Christoph Oelckers
d42ce0ee7e - WIP 2021-03-20 23:01:16 +01:00
Christoph Oelckers
91957e40f1 - moved some original Raze code out if the Build folder. 2021-03-20 17:08:55 +01:00
Christoph Oelckers
fedfc2cfa4 - removed global variables that were only being used by the automap drawer plus a few other obsolete things. 2021-03-20 16:46:06 +01:00
Christoph Oelckers
30f4e2b29d - replaced the engine automap drawer with one leveraging the newly added sector geometry data.
This eliminates a lot of code depending on Build's projection math.
2021-03-20 16:20:48 +01:00
Christoph Oelckers
88706e8e13 - added a cache for the sector geometry.
Now it only needs recreation if the sector changes.
2021-03-19 23:18:09 +01:00
Christoph Oelckers
3df5c440f9 - added some helpers to make it easier to determine if a sector's geometry has been altered.
Walls had no sector reference so this was added for marking the sector as altered when a vertex gets dragged around.
2021-03-19 23:18:09 +01:00
Mitchell Richters
895b875453 - Invert rollang in hw_entrypoint.cpp:SetupView(). 2021-03-20 08:35:17 +11:00
Christoph Oelckers
93bb774573 - flat alignment.
This still gets redone each frame for each sector and needs to be buffered
2021-03-19 19:53:55 +01:00
Christoph Oelckers
dd15fc54c1 - top texture means RENDERWALL_TOP, not that it matters much at the moment... 2021-03-19 12:02:20 +01:00
Christoph Oelckers
ff8ca99e2b - fixed y alignment of bottom textures.
Despite other settings, they will always take the panning info from their backside.
2021-03-19 11:51:38 +01:00
Christoph Oelckers
f8de712b81 - fixed horizontal panning for bottom textures. 2021-03-19 11:22:24 +01:00
Christoph Oelckers
385cc8cbbd - NPOT texture alignment fixes.
The checks in CheckTexturePosition were not correct and caused unwanted texture shifting.
Also inlined GetYPanning into DoTexture because the pow2size value is needed there and the rest is a simple one-liner to scale the panning.
2021-03-19 10:29:38 +01:00
Christoph Oelckers
9406e6d2ad - fixed the biggest issues with flat rendering 2021-03-18 23:22:51 +01:00
Christoph Oelckers
7dd5b508c8 - flat rendering WIP.
Still buggy triangulation and no texture alignment, but it renders something.
2021-03-18 21:50:02 +01:00
Christoph Oelckers
0579368626 - removed render.cpp, now that everything is in its proper place. 2021-03-18 17:24:58 +01:00
Christoph Oelckers
547ed4e415 - route everything through the full backend, now completely bypassing the intermediate GLInstance layer. 2021-03-18 17:18:03 +01:00
Christoph Oelckers
4cf2493cfd set up the entry point for the renderer. 2021-03-18 14:49:36 +01:00
Christoph Oelckers
c4b3523f05 - moving utilities to more appropriate places. 2021-03-18 12:49:33 +01:00
Christoph Oelckers
6068427270 - port the bunch drawer to the backend's core. 2021-03-18 12:32:31 +01:00
Christoph Oelckers
af6c6c8ef0 - added the DrawInfo class. 2021-03-18 10:23:53 +01:00
Christoph Oelckers
e9dd1c104b - started adding the draw list code from GZDoom. 2021-03-18 10:19:13 +01:00
Christoph Oelckers
0f28069f96 - fixed NPOT shader parameters. RR E1L1's hedges render properly now.
- fixed a few places where wall[0] was accessed.
2021-03-18 09:20:38 +01:00
Christoph Oelckers
2d958745b4 - fixed: Polymost must set the viewpoint if renderers are switched.
- fixed coordinate order in renderSetViewpoint
- fixed backwall checks accidentally testing wall 0 instead of the current wall.
2021-03-18 00:28:38 +01:00
Christoph Oelckers
493294909b - fixed texture alignment
Most cases should be correct now.
2021-03-17 23:29:13 +01:00
Christoph Oelckers
47dce8de8c - partially fixed y-panning and removed the aspect factor.
y-panning is still not correct for all cases but better than before. The aspect factor is not needed, it looks like an artifact of both the software renderer and Polymost.
We get the same dimensions with proper matrices by setting this to 1.
2021-03-17 20:02:50 +01:00
Christoph Oelckers
65097c4098 - set proper visibility factor and viewport. 2021-03-17 19:07:00 +01:00
Christoph Oelckers
b492cbcebb - ported my old Build-style renderer for Doom from 2008 and the wall renderer from GZDoom to work with Build data.
It renders walls, but y-panning is still broken.
2021-03-17 16:54:36 +01:00
Christoph Oelckers
9ebd8fd4a5 - put all of Polymost in a namespace.
So that its static variables are properly separated from the rest.
2021-03-17 15:55:25 +01:00
Christoph Oelckers
c6f83fa8bd - added GZDoom's clipper. 2021-03-15 19:11:18 +01:00
Christoph Oelckers
60979ee478 - fixed: G_BuildTiccmd needs to clear the command struct.
This could otherwise pick up some stray data from earlier calls and create bogus input.
Fixes #97
2021-03-15 10:11:49 +01:00
Christoph Oelckers
aa789c7605 - adapt to changed value range of module master volume in ZMusic.
The default was far too quiet and had to be increased to let the player have comparable output to the rest of the music system.
2021-03-14 08:51:59 +01:00
Christoph Oelckers
f4b27bbd27 - sort the game selection list by definition order in grpinfo.txt.
This is to have consistent ordering, independent of where the files are found.
Game order is: Duke, Blood, Shadow Warrior, Redneck Rampage, Nam, WW2GI, Exhumed, all the official mission packs are grouped below the game they belong to.
2021-03-12 23:45:03 +01:00
Christoph Oelckers
ad8654ed06 - fixed maphack loader.
The duplicate 'currentSprite' variable prevented it from doing anything.
Also cleaned up the interface a bit to avoid using a global variable for parameter passing.

Fixes #279
2021-03-07 09:39:16 +01:00
Christoph Oelckers
9104fba3ec - moved colormap constants to backend. 2021-03-06 23:06:26 +01:00
Christoph Oelckers
cb14e3023e - fixed "roll" in maphack parser 2021-03-02 21:47:43 +01:00
sinisterseed
8d5682fa97 - version bump.
We're past 0.8 for some time now, and slowly approaching 1.0 :) .
2021-03-02 17:53:25 +02:00
Mitchell Richters
e0f1a83f40 Revert "- SW: Alt implementation for preparing a nuke."
This reverts commit 4fcec5f6d3.

Functionality wasn't working properly, most players will never use it and care only for 100% originality. Was a nice idea, though.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/games/sw/src/panel.cpp
2021-03-02 20:02:20 +11:00
Christoph Oelckers
d28d5a5e1f - use real fog, even in palette emulation mode.
Using the palette to apply fog is just far too broken and cannot be kept in check with all the hacks the Build engine allows.
This only works if all elements on screen use the identity translation lookup which is basically never the case.
Real fog, on the other hand, can easily be applied to everything.
2021-02-27 13:30:52 +01:00
Christoph Oelckers
2094b6420f - use local screen size variables in automap code. 2021-02-27 12:30:20 +01:00
Christoph Oelckers
99f1f0952a - little bit of engine cleanup. 2021-02-25 12:16:21 +01:00
Mitchell Richters
4589f6f26d Merge remote-tracking branch 'public/chasecam_unification' 2021-02-25 20:33:36 +11:00
Rachael Alexanderson
4c0591a25b - port over -noautoexec that I did from GZDoom 2021-02-21 11:12:19 -05:00
Mitchell Richters
cff97c9cf3 - calcChaseCamPos(): Restore original algorithms for new position via GameInterface struct.
* Averaging out the values was a net negative for all games. Each games' original value is tuned to the specific games.
2021-02-18 21:47:39 +11:00
Mitchell Richters
ba57429ac6 - Blood, Duke & SW: Create new backend chasecam function and replace game-specific versions with it.
* Based off SW's implementation.
2021-02-18 21:47:37 +11:00
Mitchell Richters
2abda0e27d - All Games: Migrate each game's clock counter to backend solution. 2021-02-18 21:47:33 +11:00
Christoph Oelckers
5b6aa372ea - fixed autoaim check and adjusted presentation in the menu to be correct for all games.
Fixes #264
2021-02-06 10:56:11 +01:00
Christoph Oelckers
8ffda1c9d1 - Duke: Calculate the true font height of the numbers for alignment in the Statusbar.
The original tiles are all 15 pixels tall, but depending on the games can vary in their true height, so use CheckRealHeight on them to get their true dimensions.
Fixes #250
2021-02-01 00:09:22 +01:00
Christoph Oelckers
7b72fccfa2 - fixed hires replacement code not to destroy the intended translation in case there is no replacement. 2021-01-29 13:08:26 +01:00
Christoph Oelckers
52ba0461bc - fixed hires lookup for tiles using special palettes.
In these cases the palette needs to be ignored and the base version picked. The proper handling for this case was undefined, working in some cases and not in others.
Fixes #247
2021-01-29 11:48:32 +01:00
Christoph Oelckers
26c5d5aa32 - SW: fixed issue with autoselecting single episode entries with non-empty subtitles.
This case needs different offsets.
2021-01-27 23:53:26 +01:00
Christoph Oelckers
981a2c7e5c - Exhumed: restored old static switch array.
There's side effects in here that broke the door logic and made doors automatically open sometimes.
2021-01-24 14:49:51 +01:00
Mitchell Richters
7fcf1c94a1 - Exhumed: Minor fixes to panning code.
* Stop panning if underwater.
* Remove overload from PlayerHorizon from d32dcd5f8e that was causing problems for other games.
* Remove static bool `plrFalling` also from d32dcd5f8e and add `bIsFalling` to `Player` struct, hooking up with save code as well.
2021-01-05 17:07:56 +11:00
Mitchell Richters
d32dcd5f8e - Exhumed: Fix player panning when walking up/down steps while horizon is 0. 2021-01-05 11:01:41 +11:00
Mitchell Richters
5124c0daec - Amalgamate ksgn and sgn into Sgn in cmdlib.h, and remove pragmas.h. 2021-01-05 07:31:37 +11:00
Mitchell Richters
b36bea7c69 - Replace scale() calls with Scale() from common. 2021-01-05 07:31:34 +11:00
Mitchell Richters
aae175f287 - Replace divscale##() calls with MulScale() from common.
* Regex for reference: divscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:20 +11:00
Mitchell Richters
2396179dfc - Replace mulscale##() calls with MulScale() from common.
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Mitchell Richters
8cf2588bad - Replace fmulscale##() calls with MulScaleF() from common.
* Regex for reference: fmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:13 +11:00
Mitchell Richters
7d9f868e4c - Replace dmulscale##() calls with DMulScale() from common.
* Regex for reference: dmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:10 +11:00
Christoph Oelckers
0f3da7194a - actually compile the game code as larger units and integrate them in the main project.
This eliminates the problematic subprojects for good.
Compiling the games as larger units is necessary because otherwise compile times will break down on MSVC.
2021-01-04 11:52:10 +01:00
Christoph Oelckers
e866a9e0c0 - moved setsectinterpolate/clearsectinterpolate into the backend. 2021-01-04 10:37:14 +01:00
Mitchell Richters
be12da6bfb - Automap: Put in framework to interpolate automap player. 2021-01-02 18:23:01 +11:00
Mitchell Richters
25eaeff0db - Wrap all g_gameType & GAMEFLAG_BLOOD checks into isBlood() inline. 2021-01-02 14:46:58 +11:00
Mitchell Richters
532d128afd - Blood: Migrate game's slopetilting code to calcviewpitch(). 2021-01-02 14:40:35 +11:00
Mitchell Richters
4397646cc4 - Duke: Move cancellation of spin from FinalizeInput() into applylook() in gameinput.cpp. 2021-01-02 10:26:22 +11:00
Mitchell Richters
4aae71f0ee - InputState::ClearAllInput(): Call resetTurnHeldAmt() when clearing input. 2021-01-02 10:00:29 +11:00
Mitchell Richters
36c25ee2a0 - gameinput.cpp: Break out processMovement()'s turnheldamt calculations into functions. 2021-01-02 09:53:03 +11:00
Mitchell Richters
3a801cbf5c - calcviewpitch(): Set scaleAdjust to default to 1 in prototype like other functions in gameinput.cpp. 2021-01-02 09:32:19 +11:00
Mitchell Richters
dac08a2cb9 - calcviewpitch(): Fix issue with returning horizoff to 0 from negative slope. 2021-01-02 01:15:58 +11:00
Mitchell Richters
8003753989 - Duke/SW: Move each game's check of cl_slopetilting into calcviewpitch() backend function. 2021-01-02 00:34:44 +11:00
Mitchell Richters
6d12159006 - Duke/SW: Consolidate each game's slopetilting function into backend solution.
* Based on SW's implementation purely for its commentary, but includes a fix from Duke's.
* Allow disabling Duke's slopetilting via `cl_slopetilting` like SW.
2021-01-02 00:30:11 +11:00
Mitchell Richters
5c87b7b894 - Return to center using tangent of pitch, as per original games (Duke/SW).
* Preserves the original return to center feel more accurately as original algorithm can't directly translate to pitch. If we ever get rid of Build's horizon throughout the games, this can go on the chopping block then as a necessity.
2020-12-30 18:04:00 +11:00
Rachael Alexanderson
38faefa663 - set some install defaults for posix systems 2020-12-27 05:28:47 -05:00
Christoph Oelckers
fdd9c10a55 - fixed: the statistics display didn't take the HUD's scale factor into account.
Fixes #229
2020-12-10 19:20:24 +01:00
Christoph Oelckers
8d659bad32 - fixed V5/V6 format map loader. 2020-12-06 20:17:27 +01:00
Christoph Oelckers
c92aaaee20 - This is version 0.8.0
Finally out of alpha, now that the model code is working. :)
2020-12-06 10:51:35 +01:00
Christoph Oelckers
d04013066c - build a composite texture of all the segments for sky rendering to reduce the seams between the single segments. 2020-12-04 22:29:25 +01:00
Christoph Oelckers
396e3cd524 - actually call the model animation timer somewhere.
Now models also animate properly. :)
2020-12-02 00:19:22 +01:00
Christoph Oelckers
92a72cef8b - Blood: only trigger a secret if the hint system hasn't registered it.
There's some bugs in Blood that allow a secret to be triggered multiple times. However, since the hint system already knows which secrets were triggered, use that info to avoid retriggers.
Fixes #206
2020-12-01 12:52:42 +01:00