Commit graph

7311 commits

Author SHA1 Message Date
Christoph Oelckers
869433ee2e - fixed invalidation of programmatic textures.
This is only relevant for Vulkan because it stores the descriptor sets with the material, not the hardware texture.
2021-04-05 19:18:57 +02:00
Christoph Oelckers
c0f1949fb9 - fixed some swapped parameters in status bar code. 2021-04-05 19:07:59 +02:00
Christoph Oelckers
0017b5d9c5 - pad out the StreamData buffer to 16 bytes and avoid any form of conditional compilation here.
Vulkan does not manage to get the shader properly compiled without this.
2021-04-05 18:00:02 +02:00
Christoph Oelckers
f2dd4ceaab - always ensure that the global index buffer is not empty.
This needs to be valid for Vulkan, even if it isn't used.
2021-04-05 18:00:02 +02:00
Christoph Oelckers
96fb96617f - backend update from GZDoom. 2021-04-05 17:59:54 +02:00
Christoph Oelckers
008391a2ad - license correction for ct_chat.cpp
This was supposed to get the same treatment as d_net.cpp, i.e get the old license restored and be released under a duplicate GPL/Doom Source license but it was somehow missed when it got added. Also removed all leftover Doom specific parts.
2021-04-05 08:59:06 +02:00
Christoph Oelckers
658712d893 - removed duplicate d_gui.h file. 2021-04-05 08:56:44 +02:00
Christoph Oelckers
eb2e77fb75 - Apply fix from EDuke32 commit 7225643e.
Fix undefined behavior/potential OOB access in ST_21_FLOOR_DOOR. g_AnimateGoal does not take a sector number, it takes an animation index, and caps at 1024, not 4096.
2021-04-05 00:14:15 +02:00
Christoph Oelckers
8e31c34b06 - fixed tileImportFromTexture.
* the parser read numbers with leading zeros as octal, which is not wanted here
* texture lookup by file name must be forced for root directory entries.
2021-04-04 21:02:04 +02:00
Christoph Oelckers
9828cd7129 - this better have a null check... 2021-04-04 13:02:26 +02:00
Christoph Oelckers
6ebbf1288d - Duke/RR: Don't delete master switch sprites.
The sound system may play sounds on them after their deletion - this resulted in undefined behavior. To ensure properly defined behavior the sprite needs to be retained at least as long as the sound controller may still need it - which cannot be reliably determined so it has to be kept around forever. This would be easier if the sound controller code had proper start and stop events instead of inferring what to do from secondary information.
Fixes #288.
2021-04-04 13:01:32 +02:00
Christoph Oelckers
97a0cb2a10 - handle voxel rotation in the backend to enable it for all games.
This was previously only present in the Blood module and missed in Exhumed from upstream so the entire option was rather pointless.
Fixes #290
2021-04-04 10:33:29 +02:00
Christoph Oelckers
a298a3d3df - disabled 'isRunning' in Blood entirely.
After discovering yet another misbehaving place in the game I think it can be safely concluded that this is better left off unconditionally.
The only remaining place where this still gets checked is in nnexts, but I wouldn't expect this to work either.
Fixes #292
2021-04-04 09:35:05 +02:00
Christoph Oelckers
ebac57fb4f - fixed music in Blood's menu
This is only supposed to play for the fade-in of the background but needs to stop when the menu appears.
Fixes #291
2021-04-04 09:25:41 +02:00
Christoph Oelckers
952bccbf5f - added a check for game-side-defined voxels when discarding one-sided wall sprites viewed from the back. 2021-04-03 21:49:28 +02:00
Mitchell Richters
e3c2757f1c - sethorizon(): Ensure SB_CENTERVIEW bit is always cleared if horizon target is set. 2021-04-02 23:23:24 +11:00
Mitchell Richters
9c01bde44e - gameinput.cpp: Block player input within sethorizon() and applylook() if target for each has been set by the ticker.
* Stops players having the ability to provide input and fight the system trying to set an input.
2021-04-02 22:47:19 +11:00
Mitchell Richters
4ffe004483 - Further work within PlayerAngle and PlayerHorizon structs following 39fe9efaff and bf2d8078a4.
* Reduce code repetition.
* Clamp incoming horizon when using `settarget()` methods.
* Eliminate double calculation that was occurring in `processhelpers()`.
2021-04-02 22:47:17 +11:00
Mitchell Richters
c076310e34 - InputState::ClearAllInput(): Only clear crouch_toggle bool if outside of a level, and resend SB_CROUCH sync bit if inside a level and crouch_toggle is true.
* Fixes #287.
2021-04-01 13:46:16 +11:00
Mitchell Richters
4321efa21c - Re-arrange swaddons[] const char array so that /gameroot is picked up first following changes in f4b27bbd27.
* Since f4b27bbd27, `D:/Program Files (x86)/Steam/steamapps/common/Shadow Warrior Classic/gameroot/addons/Sw.grp` was being picked up instead of `D:/Program Files (x86)/Steam/steamapps/common/Shadow Warrior Classic/gameroot/SW.GRP`.
* Fixes #289.
2021-04-01 12:25:57 +11:00
Mitchell Richters
029f8807df - Make 360. / 2048. a constant expression and replace all uses throughout code. 2021-04-01 10:42:22 +11:00
Mitchell Richters
aa35b6a479 - binaryangle.h: Fix constexpr issue on GCC builds following bf2d8078a4. 2021-04-01 08:32:07 +11:00
Mitchell Richters
c630ad9110 Revert "- subjective fix to Duke 3D's RPG harsh recoil."
This reverts commit 839a7bcbe4.

Revert "- Duke: Restore RPG harsh recoil behind a CVAR."

This reverts commit 88a49b0d22.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2021-03-31 20:35:18 +11:00
Mitchell Richters
760c918e75 - Duke: Remove unnecessary int casts from gameexec.cpp.
* Incoming vars are already int and called functions only accept an int so really just no need at all.
2021-03-31 20:07:36 +11:00
Mitchell Richters
16886895b0 - Duke: DoPlayer(): Ensure SB_CENTERVIEW bit is cleared when setting a horiz target from CON.
* Repairs horizon issues raised in https://forum.zdoom.org/viewtopic.php?f=340&p=1185365.
2021-03-31 19:48:38 +11:00
Mitchell Richters
bf2d8078a4 - PlayerHorizon: Replicate changes to settarget() and processhelpers() methods from 39fe9efaff. 2021-03-31 19:44:50 +11:00
Mitchell Richters
39fe9efaff - PlayerAngle: Adjust how settarget() methods store angle for unsynchronised angle adjustments and adjust processhelpers() method accordingly.
* Repairs angle issues raised in https://forum.zdoom.org/viewtopic.php?f=340&p=1185365.
2021-03-31 19:43:41 +11:00
Christoph Oelckers
a12f277846 - fixed uninitialized clear color variable. 2021-03-22 12:07:51 +01:00
Christoph Oelckers
98e4a3035d - updated the earcut.hpp triangulator.
The old one wasn't triangulating the bathroom sector in DUKEDC2 properly, the bug got fixed upstream in the mean time.
2021-03-21 17:18:15 +01:00
Christoph Oelckers
7c68261fbf - redirect Exhumed's shareware exit to the main menu. 2021-03-15 18:58:28 +01:00
Christoph Oelckers
ac82838859 - removed unused 'wallvisible' function. 2021-03-15 18:58:14 +01:00
Christoph Oelckers
8aa59f2385 - use clamp instead of bit masking to handle out of range interpolation factors for models. 2021-03-15 11:35:39 +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
834da8b83b - Exhumed: refresh the status bar after loading a saved game.
It is actually not necessary to save the state - but the RefreshStatus function must be called to update all current values.
Fixes #282
2021-03-14 12:57:23 +01:00
Christoph Oelckers
90cb82d244 - disable the player specific volume modifiers if replay gain is enabled.
These two functions would get into the way of each other otherwise.
2021-03-14 09:05:28 +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
8ae5d0b30e - backend update from GZDoom. 2021-03-13 01:21:38 +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
25bf0854cf - allow game specific music names for all games supporting an Ogg-format CD audio soundtrack.
New names are:

REDNECKxx.ogg for Redneck Rampage
REDNECKRIDESxx.ogg for RR Rides Again.
SHADOWxx.ogg for Shadow Warrior.

The motivation here is to allow copying all this music to a single folder or .zip file and reference it from all games.
2021-03-12 23:15:34 +01:00
Christoph Oelckers
d7f720664a - Exhumed: fixed uninitialized variables in Queen boss when reloading a savegame. 2021-03-09 22:18:43 +01:00
Christoph Oelckers
df742d25db - Exhumed: Replace asserts for range checks with if's.
Asserts are mere debugging aids, the code was still trashing valid date in release builds.
2021-03-09 20:02:08 +01:00
Christoph Oelckers
e375c799ce - CommonLoon102's weapon fixes from NBlood:
Fix bug when switching to another weapon from the spray while firing with primary fire won't switch to the new weapon. And telling Caleb not to put away his lighter if the spray is being switched to TNT.
Do not put away lighter after TNT is thrown if while throwing the weapon was switched already to spray.
Do not put away lighter if TNT was selected while throwing a spray can.
Fix next/prev weapon
2021-03-09 09:31:04 +01:00
Christoph Oelckers
ee5950e7ad - backend update from GZDoom. 2021-03-07 13:21:15 +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
5b85105762 - re-added the fix for the inverted card reader in Twin Dragon's Map 10.
This accidentally got lost when the one-sided key fix was generalized.
2021-03-06 12:20:03 +01:00
Christoph Oelckers
57a6bfcdcd - Blood: fixed typo in map loader that overwrote the floor y panning offset with its fractional part. 2021-03-03 13:26:58 +01:00
Christoph Oelckers
cb14e3023e - fixed "roll" in maphack parser 2021-03-02 21:47:43 +01:00
Christoph Oelckers
bbd5c0ac8b - transitioned voxel rendering to use the backend's implementation. 2021-03-02 17:10:34 +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
Christoph Oelckers
4b59acd251 - Blood: Check the sound's internal loop flag when playing a sound.
Fixes #275
2021-03-02 11:59:20 +01: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
b9050b1a35 - Blood: properly clip the gauge for throwing dynamite force instead of stretching it. 2021-03-02 03:31:10 +01:00
Christoph Oelckers
a7dc86583f - Blood: commented out cultist code that should not be entered due to the 'isrunning' bug. 2021-03-02 03:04:14 +01:00
Christoph Oelckers
34bda2c962 - address excessive view swaying in Blood.
It is totally unclear what happened here in the original code, but the info apparently never reached the place where it's being checked. BloodGDX just ignores it so we do now, too.
2021-03-01 19:28:47 +01:00
Christoph Oelckers
2f2d0443f2 - fixed size setup for most menus.
All of Raze's menus scale to 320x200 and to get proper mouse coordinates the definitions must reflect that as well.
Fixes #271
2021-03-01 13:08:10 +01:00
Christoph Oelckers
80404558f6 - RR: Fixed the drink and eat meters on the status bar.
Turned out that the status bar's DrawGraphic cannot handle it with its coordinate hackery, this needs a separate, cleaner interface function that does not mess around with the pivot which needs to be passed unaltered to the backend to properly rotate around it
2021-02-28 22:34:52 +01:00
Christoph Oelckers
fa8ca81460 - SW: added persistent copy of oz.
The door movement code uses oz for its position checks so we need a persistent version of it that survives uncontrolled changes from the engine side.
2021-02-28 12:35:34 +01:00
Christoph Oelckers
d31fe01b6d - skill stuff for Exhumed.
Just for fun. ;)
2021-02-27 14:08:08 +01:00
Christoph Oelckers
ce87e18f90 - block Escape to toggle the console while AppActive is false.
This is for testing #174 - this is the only place in the code where the escape key is explicitly checked.
2021-02-27 13:47:30 +01: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
1e8ebf2306 - removed unused variables in Exhumed's status bar code. 2021-02-27 12:37:25 +01:00
Christoph Oelckers
d0cf9d65e7 - use 2D size in 2D code, not the engine's screen dimensions. 2021-02-27 12:33:47 +01:00
Christoph Oelckers
2094b6420f - use local screen size variables in automap code. 2021-02-27 12:30:20 +01:00
Christoph Oelckers
783328c5fa - removed some unused declarations. 2021-02-27 12:29:07 +01:00
Christoph Oelckers
e470c59263 - Exhumed: Set opos for all dynamically spawned sprites.
Fixes #253

Let's hope this covers everything, the code is a bit scattered...
2021-02-27 00:16:03 +01:00
Christoph Oelckers
ba5ede65b8 - backend update from GZDoom. 2021-02-26 19:06:10 +01:00
Christoph Oelckers
b15810e173 - SW: fixed crash with credits screen and CD tracks missing. 2021-02-26 18:58:13 +01:00
Christoph Oelckers
4c915180da - fixed stale pointer access in Unix version of D_AddFile.
Pointer was assigned a buffer of a local variable that went out of scope before checking its content.
Fixes #268 (hopefully)
2021-02-26 13:28:02 +01:00
Christoph Oelckers
a46792e519 - fixed SE21 handler.
This one is most prominently noticeable in WW2GI's first map where blowing up a crack has no effect.
This must have happened when removing all those dangerous pointer to long casts that were so popular back in the bad old days.
Fixes #266
2021-02-26 13:14:44 +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
1d48ac537a - Exhumed: Replace original chasecam code with calcChaseCamPos() within game. 2021-02-18 22:14:39 +11: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
c96e04e6c9 - backend update from GZDoom. 2021-02-12 14:44:54 +01: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
ba22df2a2a - removed unused I_GetBuildTimeFrac function. 2021-02-03 12:18:58 +01:00
Christoph Oelckers
8e0c50c22c - fixed: F2DDrawer::AddPoly was missing a texture validation check.
This caused problems when the automap wanted to render portal planes, which normally use an invalid texture as marker.
Fixes #263
2021-02-02 23:13:40 +01:00
Christoph Oelckers
cf672b508f - removed unused 'updatesectorexclude' function. 2021-02-02 23:13:40 +01:00
Mitchell Richters
b1290448c5 - Duke: Slightly tune texty in FullscreenHUD1() to line it up perfectly. 2021-02-01 18:42:41 +11: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
30e8111979 - fix inventory selector positioning in WW2GI.
This must have abused some quirk of the original code to be this far off...
2021-01-30 23:51:50 +01:00
Christoph Oelckers
40593b866f - WW2GI: fixed event numbering.
There is a typo in the CON files that assigns EVENT_AIMUP and EVENT_AIMDOWN the same number. The source did not replicate this which caused several events to call the wrong handler.
Fixes #252
2021-01-30 23:42:44 +01:00
Christoph Oelckers
a0be30facb Revert "- Exhumed: Tune x offset alignment in DrawStatusAnims() following changes in 220283d1ec3cba03f455bd96bcf130df777b5635."
This reverts commit c08583ebc1.

This does not work as intended.
Fixes #261

# Conflicts:
#	source/games/exhumed/src/status.cpp
2021-01-30 10:55:58 +01:00
sinisterseed
19e7419896 - Exhumed: Fixed key offsets.
An int can't store a float, effectively truncating to 0 and not holding the 0.5. Thanks MJ :) .
Partially addresses #262 - The Torch icon bouncing in the HUD still remains.
2021-01-30 11:50:33 +02:00
Mitchell Richters
f11501883d - Exhumed: Make 3rd person camera properly interpolated. 2021-01-30 11:23:38 +11:00
Mitchell Richters
e66960d9fc - Exhumed: Ensure ox/oy/oz sprite positions are set when warping to coordinates. 2021-01-30 11:22:46 +11:00
Christoph Oelckers
e7ab4cd176 - backend update from GZDoom. 2021-01-29 13:20:00 +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
Mitchell Richters
c08583ebc1 - Exhumed: Tune x offset alignment in DrawStatusAnims() following changes in 220283d1ec. 2021-01-29 22:11:03 +11: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
Mitchell Richters
ff0be3079e - m_fixed.h: Fix incorrect return type for MulScaleF() originating from 8cf2588bad. 2021-01-29 21:19:15 +11:00
Mitchell Richters
c267c214c2 - Duke: Repair jumping zvel issue originating from 5e45f988e3 for Duke and 1c5c90d00f for RR.
* Thanks for backtracing, Graf :)
* Fixes #259.
2021-01-29 20:00:15 +11: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
3163e4a799 - check for invalid tiles being passed to the 2D renderer.
Since mods can actually replace valid tiles with invalid ones, the low level render code needs to check this case.
2021-01-27 23:52:40 +01:00
Christoph Oelckers
8cf3e50ade - removed bad 'pos' setup in PreDrawStackedWater
This was a) supposed to set 'opos' not 'pos' and is b) redundant because here both Users point to the same sprite.

Fixes #261
2021-01-25 18:07:49 +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
Christoph Oelckers
1ab11a02e2 - RR: fixed player input for diving.
Fixes #260
2021-01-24 08:59:08 +01:00
Christoph Oelckers
7f75b2274f - code updates from PCExhumed. 2021-01-19 09:44:16 +01:00
Rachael Alexanderson
47f0370512 - add some 21:9 presets 2021-01-18 06:25:04 -05:00
Rachael Alexanderson
3f30d91323 - 21:9 improvements
- vid_aspect is now set to change to 21:9's ACTUAL aspect - 64:27
- screen elements now scale to 64:27 properly. to restore classic behavior, set cvar `vid_allowtrueultrawide` to false
2021-01-17 11:45:12 -05:00
Christoph Oelckers
042795612e - Exhumed: Refined sector movement code so that pickups get always moved even when not touching the floor.
... because it seems to be inevitable that games have to exploit some implementation shortcomings...
2021-01-16 23:42:34 +01:00
Christoph Oelckers
c342594691 - Exhumed: fixed wall scrollers. 2021-01-14 23:55:45 +01:00
Christoph Oelckers
91f8df48c6 - Exhumed: changed MoveSectorSprites so it only moves sprites that actually stand on the sector's floor.
Since this had no check for z it even moved things floating above a lift or players hanging over a dropoff with the lift below.
2021-01-12 20:57:28 +01:00
Christoph Oelckers
fc11f537f7 - project cleanup
* moved all games into the 'games' folder.
* fixed project to include all sources and move them to the proper folders.
2021-01-10 20:31:32 +01:00
Christoph Oelckers
a74419f5e7 - Exhumed: removed opos entirely. 2021-01-10 18:30:56 +01:00
Christoph Oelckers
b0e5e9fc72 - Exhumed: fixed camera position interpolation.
This was still using old the old game-specific method.
Moving up a lift now interpolates properly, but there's still an unrelated issue when moving down.
2021-01-10 18:15:28 +01:00
Christoph Oelckers
e2f546862b - Exhumed: fixed scrolling floor/ceilings. 2021-01-10 17:13:48 +01:00
Mitchell Richters
41ad44bf40 - Blood: Avoid integer truncation when updating player's sprite angle with actual angle of player.
* Fixes #256.
2021-01-10 18:17:29 +11:00
Christoph Oelckers
98ee5178aa - Exhumed: interpolate lifts/platforms
Unfortunately this reveals a rather ugly problem with player movement on such a platform that still needs examination.
2021-01-05 22:32:34 +01:00
Mitchell Richters
afdfcba9c3 - SW: Leverage new spritetype methods within SW.
* We now also interpolate the player's sprite angle in the automap code so that `cl_syncinput 1` is smooth, just like e8c20f502b.
2021-01-06 06:22:37 +11:00
Mitchell Richters
1a86e74c40 - Blood: Leverage new spritetype methods within Blood. 2021-01-06 06:22:35 +11:00
Mitchell Richters
6721a6aa05 - Exhumed: Leverage new spritetype methods within Exhumed. 2021-01-06 06:22:33 +11:00
Mitchell Richters
18fbc8996b - Duke: Remove a few redundant sprite backups and change some backups to what's actually needed. 2021-01-06 06:22:31 +11:00
Mitchell Richters
97159c20c1 - Duke: Leverage new spritetype methods within Duke, removing bposx/bposy/bposz from hittype. 2021-01-06 06:22:29 +11:00
Mitchell Richters
07a43c572e - Build: Extend spritetype struct with interpolation variables and numerous methods to do with pos, angle and interpolation of such. 2021-01-06 06:22:27 +11:00
Mitchell Richters
ede15c3af2 - Exhumed: Remove unrequired !bUnderwater check. 2021-01-05 17:13:22 +11: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
726c51bf63 - Exhumed: Update inita in UpdatePlayerSpriteAngle(), allowing the removal of forced synchronised input while using the chase cam. 2021-01-05 11:01:47 +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
Christoph Oelckers
b034d9e059 - Exhumed: Interpolate doors. 2021-01-04 21:51:54 +01: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
3c5d553456 - Move krecipasm() from pragmas.h into polymost.cpp. 2021-01-05 07:31:30 +11:00
Mitchell Richters
d460f048fa - Remove klabs() define and replace with abs(). 2021-01-05 07:31:28 +11:00
Mitchell Richters
b9c2af130a - Replace divscale() calls with DivScale() from common. 2021-01-05 07:31:26 +11:00
Mitchell Richters
868aa7f07a - Replace mulscale() calls with MulScale() from common. 2021-01-05 07:31:24 +11:00
Mitchell Richters
b5aac8723f - Replace dmulscale() calls with DMulScale() from common. 2021-01-05 07:31:22 +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
f20daa2595 - Replace divscale64() calls with DivScaleU() from common. 2021-01-05 07:31:17 +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
Mitchell Richters
8f75f06efd - Replace tmulscale##() calls with TMulScale() from common. 2021-01-05 07:31:08 +11:00
Christoph Oelckers
b5caf2fd97 - Exhumed: Interpolate the movable blocks. 2021-01-04 20:44:46 +01:00
Christoph Oelckers
6257ea30e1 - Exhumed: added interpolation for slides and moving platforms. 2021-01-04 20:34:27 +01: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
8e62d585eb - Blood: Fix glitched akimbo shotguns by removing code that needed to go with 182b8023ca.
* Fixes #200.
2021-01-04 15:15:19 +11:00
Mitchell Richters
e8c20f502b - Duke: Back up sprite's angle in ticker and interpolate in gi->GetInput() if !SyncInput(). Sprite angle now works properly with cl_syncinput 1. 2021-01-04 13:27:31 +11:00
Mitchell Richters
8911805e3a - Duke: Ensure an uninterpolated angle is sent to DrawOverheadMap() if playing with unsynchronised input. 2021-01-04 09:06:57 +11:00
Mitchell Richters
22f28477e4 - Duke: Revert backing up of sprite's ang to tempang from be12da6bfb and subsequent interpolation of sprite's ang in 21da658617 and directly update the sprite's angle in gi->GetInput() like the other games.
* Fixes #251.
2021-01-04 08:49:57 +11:00
Mitchell Richters
b191a482d6 - Remove hw_detailmapping and hw_glowmapping since they're no longer relevant with GZDoom's backend (they're always in an on state). 2021-01-03 21:39:21 +11:00
Mitchell Richters
de1b4765dc - Duke: Partially revert edba971b7f. I need to stop breaking this. 2021-01-03 20:14:40 +11:00
Mitchell Richters
f036e94cca - Duke (RR): Also fix location of p->apply_seasick() in the ticker as well. 2021-01-03 20:06:28 +11:00
Mitchell Richters
6058669e29 - Duke: Within gi->GetInput() , call p->apply_seasick() after applylook() as per the original code, and call unconditionally since its guarded as to whether it runs or not internally. Original spot only had it called if on a vehicle which wasn't right. 2021-01-03 20:00:43 +11:00
Mitchell Richters
f6b9c3cba7 - Duke (RR): Fix braking on vehicles which never got picked up. 2021-01-03 19:25:49 +11:00
Mitchell Richters
edba971b7f - Duke: Remove newOwner check from cef1f8275b & cb93560a4a that were just cancelling out each other, and clean up 2x if (p->newOwner != nullptr) checks into one. 2021-01-03 18:51:43 +11:00
Mitchell Richters
d3b95d4d70 - Build/Duke: Remove the only use case for drawrooms() inline wrapper and change getcamspriteang() to return binangle instead of a build angle. 2021-01-03 17:35:19 +11:00
Mitchell Richters
0cab84f17a - Duke: Backport EDuke32 commits b1e3f3bcf9c5214ae835d09e12cc41bac4f057ce & 4c4fdd1f4ab9381b60db06f37ec270850599e1ae in relation to swinging doors. 2021-01-03 15:45:38 +11:00
Mitchell Richters
9b7d07df90 - Duke: Fix flashing vehicle HUD when cl_syncinput 1 is set. 2021-01-03 09:55:25 +11:00
Rachael Alexanderson
fc7dada764 - sync from gzdoom 2021-01-02 07:52:59 -05:00
Mitchell Richters
86bb6b1cdc - Duke: Backport EDuke32 commit ac64e11553344084753cdd75abd898ec2c725a16 to fix buggy swinging doors, most apparent on E4L1. 2021-01-02 23:41:03 +11:00
Mitchell Richters
617dc8001c - Exhumed: Fix automap player smoothness. 2021-01-02 19:50:02 +11:00
Mitchell Richters
2ec79ad581 - Exhumed: Interpolate x/y/ang coordinates before passing to DrawOverheadMap(). 2021-01-02 19:49:06 +11:00
Mitchell Richters
aef6fddd3f - Blood: Fix automap player smoothness. 2021-01-02 19:41:48 +11:00
Mitchell Richters
b5e197d9be - Blood: Interpolate x/y/ang coordinates before passing to DrawOverheadMap(). 2021-01-02 19:36:46 +11:00
Mitchell Richters
fd026edc5c - SW: Interpolate automap player. 2021-01-02 18:44:07 +11:00
Mitchell Richters
21da658617 - Duke: Interpolate automap player. 2021-01-02 18:23:12 +11:00
Mitchell Richters
be12da6bfb - Automap: Put in framework to interpolate automap player. 2021-01-02 18:23:01 +11:00
Mitchell Richters
2fa2d93084 - Blood: Move synchronised input call to doslopetilting() above call to resetForcedSyncInput(). 2021-01-02 14:54:54 +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
3516e4c3b0 - Blood: Don't use cl_viewbob to control bobbing overall, only cl_viewhbob and cl_viewvbob as exposed via the menus. 2021-01-02 13:16:15 +11:00
Mitchell Richters
5cfc528f5a - Exhumed: Don't clear localInput when copying to backend packet.
* Did this in 949e456018.
* Exhumed works differently...
2021-01-02 11:17:17 +11:00
Mitchell Richters
9833c94114 - Duke: Pass the player_struct through to FinalizeInput() in line with other functions. 2021-01-02 11:04:03 +11:00
Mitchell Richters
bcb838f3fb - Duke: Fix some broken checks in FinalizeInput() stemming from 5f33b0087f. 2021-01-02 10:43:03 +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
5f33b0087f - Duke: Comment out unused enum values but leave behind for reference purposes.
* In line with SW, should have been done with fb91fc49a3.
2021-01-02 10:09:42 +11:00
Mitchell Richters
4aae71f0ee - InputState::ClearAllInput(): Call resetTurnHeldAmt() when clearing input. 2021-01-02 10:00:29 +11:00
Mitchell Richters
e65e112281 - Duke: Remove local calculation of turboturntime for RRRA vehicles in lieu of backend solution. 2021-01-02 09:59:51 +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
a1dd36ffee - Exhumed: Rename ps_input.h -> input.h. 2021-01-02 09:38:23 +11:00
Mitchell Richters
37d13e3ea3 - SW: Remove unused turnheldtime missed when doing 949e456018. 2021-01-02 09:32:38 +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
3ec41e776c - SW: Clean up old auto aim/mouse aim bits. 2021-01-01 22:37:40 +11:00
Mitchell Richters
949e456018 - All Games: Slight tidy up of gi->GetInput() functions. 2021-01-01 21:33:00 +11:00
Mitchell Richters
571583ca9c - Duke: Store velocity scale in motoApplyTurn() as a variable like boatApplyTurn(). 2021-01-01 21:21:26 +11:00
Nikolay Ambartsumov
591f593888 [Blood] Fix negative priority event processing
Some sprites (for example, "Blood Drip" sprite type 702) cause
negative priority events to be added added to the event queue
on map initialization. Despite them being the highest priority
entries in the event queue, comparision with the game timer performs an
implicit unsigned conversion, which wrongly results in their priority
being considered much higher than the current in-game time, causing the
event loop to never advance. This commit fixes this problem.
2020-12-31 20:43:18 +01:00
Nikolay Ambartsumov
edd5b92c94 [Blood] Fix wrong sector path marker stat lookup 2020-12-31 20:43:18 +01:00
Christoph Oelckers
3ecd02dcac - downgrade overflow message to a debug warning. 2020-12-30 09:55:57 +01:00
Christoph Oelckers
b73b59cf66 - fixed badly inherited exception subclass. 2020-12-30 09:55:57 +01:00
Christoph Oelckers
0f8e73ce77 - inlined calc_globalshifts to get rid of two global variables. 2020-12-30 09:55:57 +01:00
Mitchell Richters
a0a710c56a - Duke: Fix camera horizon when viewing the screen from in-game.
* Leftover horizon offset that was missed when doing 09a05f354c.
2020-12-30 18:31:51 +11:00
Mitchell Richters
f2c6a23f38 - Duke: Allow horz input to go through when returning to center and horiz is abs(5) or less. This mimics the original behaviour where Duke would stop returning to center at 95/105. This allows faster mouse input to be applied instead of waiting for player's horizon to return to 0. 2020-12-30 18:04:30 +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
Mitchell Richters
0afaff2663 Revert "- Duke: Don't block horz input while returning to center."
This reverts commit 5f62058020.
2020-12-30 17:07:59 +11:00
Mitchell Richters
5f62058020 - Duke: Don't block horz input while returning to center.
* Player still returns to center after a fall or by looking/aiming up/down, but input breaks the return just like the other games.
* Fixes #220.
2020-12-29 16:48:28 +11:00
Mitchell Richters
14d41e9984 - Exhumed: Tune position of compass, ammo count and underwater lungs following changes in 220283d1ec.
Confirmed torch issue in #236 that 220283d1ec fixed still remains fixed.
2020-12-29 14:12:43 +11:00
Rachael Alexanderson
38faefa663 - set some install defaults for posix systems 2020-12-27 05:28:47 -05:00
Christoph Oelckers
220283d1ec - Exhumed: Made some adjustments to the status bar for original center alignment.
The 2D drawer in this old Build version did not properly center graphics with odd size due to integer math. Some graphics offsets are not correct due to this quirk unless such broken math is used to align them.
Fixes #236
2020-12-13 19:38:04 +01:00
Christoph Oelckers
3787e103d2 - use the same camera sprite selection logic as EDuke32 and RedNukem.
This is the only one that makes some sense.
2020-12-13 14:13:51 +01:00
Rachael Alexanderson
0c71cc4b38 - allow use of external libvpx library on windows 2020-12-13 02:30:26 -05:00
Rachael Alexanderson
218b0cfb03 - syncing these files over from GZDoom
- this does not actually yet build for Windows ARM64, but it does put the framework in place to make that possible in the near future
2020-12-12 09:20:02 -05:00
Christoph Oelckers
b58b21cca0 - Exhumed: The global variable holding the Ramses sprite index was not stored in a savegame.
As a result it could result in the player facing an incorrect direction if this variable had not been set in a previous session.
Fixes #235.
2020-12-11 19:33:06 +01:00
Christoph Oelckers
72df9c26d8 - Duke: fixed: SE31's handler overwrote the interpolation coordinates, which rendered interpolation ineffective.
Also removing some redundant coordinate copying. Since we save all sprite coordinates at the start of a frame, there is no need to do the same again in the stat handlers.
Fixes #237
2020-12-11 19:17:41 +01:00
Christoph Oelckers
dd7d661f9a - explicitly disable mipmapping for indexed textures.
It looks like this code was not handled properly.
2020-12-10 20:46:44 +01:00
Christoph Oelckers
ddd0b412ae - Exhumed: only run the level init code after loading a save, not after saving.
Fixes #221
2020-12-10 20:25:20 +01:00
Christoph Oelckers
6c36852ceb - SW: fixed positioning of the inventory bar. 2020-12-10 20:20:17 +01:00
Christoph Oelckers
5b78f84bd7 - Blood: only set 'isrunning' when the player is actually running and not when just the run key is held down.
The old logic does not work because the run toggle results in this button being continuously held down.
2020-12-10 19:23:38 +01: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
a8fd2e7ec3 - RR: fixed inventory display overlapping the weapon bar in status bar mode.
Fixes #231
2020-12-10 19:07:15 +01:00
Christoph Oelckers
f41fe7c692 - Blood: fixed double inventory display on overlay status bar.
Fixes #230
2020-12-10 19:02:09 +01:00
Christoph Oelckers
94d3d643d7 - fixed: the file system's entry count was not updated before rehashing.
This broke Blood's RFS parser.
2020-12-09 18:56:17 +01:00
Christoph Oelckers
b98e06cd20 - Blood: header dependency cleanup.
These are extremely ordering dependent so now blood.h serves as an umbrella header for most.
2020-12-09 15:56:32 +01:00
Christoph Oelckers
2c917ca7e1 - fixed cherry picked commit from upstream. 2020-12-08 22:21:03 +01:00
Christoph Oelckers
b3988165e2 - SW: fixed bad sector iterator in DriveCrush.
This was causing spurious crashes.
Fixes #218
2020-12-08 22:09:17 +01:00
Szilárd Biró
3713cb0f09 PCExhumed: Torch bouncing fix 2020-12-08 22:03:43 +01:00
Christoph Oelckers
1a2b93f402 - fixed sky panning in Duke.
This needs to take the composite texture into account because panning in Build is based on tile size, not map dimension.
It was also redone to use floating point to get rid of the horrible precision of the scrolling effect.
2020-12-06 20:49:32 +01:00
Christoph Oelckers
88bed95400 - Exhumed: Changed visibility from 2048 to 1024 because 2048 is clearly far too dark.
GDX also uses 1024 - I have no idea how PCExhumed gets away with 2048 here.
2020-12-06 20:25:23 +01:00
Christoph Oelckers
8d659bad32 - fixed V5/V6 format map loader. 2020-12-06 20:17:27 +01:00
Mitchell Richters
1e8fe482f3 - Duke: Partially address excessively fast sky in E4L1 as reported in #217.
* Before d545eb7aa9, `moveclouds()` simply set `ceilingxpanning`/`ceilingypanning`. Afterwards, it was accumulating with every passing loop.
* Despite fixing this, still seems a bit fast.
2020-12-06 23:51:20 +11:00
Christoph Oelckers
51205fbdac - split actInit into several smaller functions. 2020-12-06 12:52:08 +01:00
Christoph Oelckers
eee972d446 - removed some unused functions from actor.cpp. 2020-12-06 12:51:46 +01:00
Christoph Oelckers
19b731bc8f - removed the owner fuckery in Blood.
Par for course I'd say - instead of checking for replaced player actors at the only time it really matters - i.e. when respawning, it was encoded into the stored value, making the entire thing very messy.
For mow, multiplayer handling is not needed, but when it does, better go over all actors and manually substitute the two relevant fields, i.e. sprite.owner and xsprite.burnsource.
2020-12-06 12:51:46 +01:00
Christoph Oelckers
045e487859 - actInit cleanup, new iterators returning DBloodActor. 2020-12-06 12:51:46 +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
Gaerzi
d644065103 - SW: Fix another bad line from 06a069750f that was missed when doing a36c122ff1. 2020-12-06 20:11:26 +11:00
Mitchell Richters
a36c122ff1 - SW: Fix bad copy-paste from 06a069750f that was causing issues with SO vehicles and turrets.
* Fixes #211.
2020-12-06 19:16:59 +11:00
Christoph Oelckers
d4198a5b1a - Exhumed: 'paused' should not be part of the 'in a game' check.
Fixes #209
2020-12-06 08:39:40 +01:00
Christoph Oelckers
5fc8859342 - Blood: instead of messing around with the damage factors when toggling god mode, let the game check the actual god mode flag itself.
This was just too volatile and prone to breakage.
Fixes #210.
2020-12-06 08:36:54 +01:00
Christoph Oelckers
99da4151d1 - fixed duplicate "snakecam" key in Exhumed savegame
This could cause the snake cam to be activated just by reloading a save.
Fixes #213
2020-12-06 08:22:56 +01:00
Christoph Oelckers
2f4abf93af - fixed loading of Blood savegames.
This was a strange case of C++ not doing what was to be expected due to hidden semantics.
Note: never assign {} to a type that has a non-default constructor!
Fixes #212
2020-12-06 08:18:03 +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
aba3539275 - moved dudeSlope fully into DBloodActor. 2020-12-04 18:03:02 +01:00
Christoph Oelckers
99c0b77cf2 - rerouted all accesses to gDudeSlope. 2020-12-04 18:03:02 +01:00
Christoph Oelckers
7e78bc1c14 - refactored the SEQ callback to receive an actor pointer instead of an xsprite index. 2020-12-04 18:03:01 +01:00
Christoph Oelckers
44805e29b3 - changed parameter of aiNewState to DBloodActor 2020-12-04 18:03:01 +01:00
Christoph Oelckers
502d911a95 - refactored Blood's AI callback interface to only use a single DBloodActor parameter. 2020-12-04 18:03:01 +01:00
Christoph Oelckers
0ac41e0b5a - drafted a DBloodActor to wrap the multitude of arrays (12 overall!) in which an actor is split up. 2020-12-04 18:03:01 +01:00
Christoph Oelckers
bc1adc9c51 - Blood: fixed cl_autorun affecting bobbing intensity even when no movement takes place.
Blood uses the state of the 'run' bit as the sole information that the player is running, which leads to very different behavior with cl_autorun on or off.
Apparently Raze's semantics here do not agree with how it was handled originally and the residual bobbing when coming to a stop was more than a little bit distracting.
2020-12-04 00:06:23 +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
25ef58f897 - re-enabled all model specific code in Duke's animatesprites function and removed some remaining software renderer-only code in the engine. 2020-12-01 23:57:39 +01:00
Christoph Oelckers
9a507e5d0a - fixed model rendering.
(What a stupid mistake... :?)

Model animations still do not work as intended, though.
2020-12-01 22:03:20 +01:00
Christoph Oelckers
b0bf51ec5c - Duke/RR: Selecting the alternative weapon must set the proper bits in 'subweapon'.
Otherwise the weapon cycling breaks.
Fixes #182
2020-12-01 21:07:38 +01:00
Christoph Oelckers
06a069750f - addressed more type casting issues in SW.
This should cover everything with coordinates.
2020-12-01 19:01:38 +01:00
Christoph Oelckers
39b67b4086 - SW: removed some very dangerous type casting. 2020-12-01 18:30:21 +01:00
Christoph Oelckers
b52668ecdf - SW: added some simple allocation wrappers around common code sequences. 2020-12-01 16:53:29 +01:00
Christoph Oelckers
6dfe869614 - shorten the struct for puser to what actually gets used from it.
This is preparation for making USER more serialization friendly as it was copied to puser.
2020-12-01 16:22:32 +01:00
Christoph Oelckers
dd75c8dbe4 - weaken the reverb in Duke.
Unfortunately the entire thing is very poorly defined, not setting it for sectors but for sprites with a distance. But some of these sprites cover non-reverb sectors as well and this can produce some ugly sound field in spots where this isn't wanted at all.
2020-12-01 16:34:47 +01:00
Christoph Oelckers
1d6d58538c - cleaned out the remains of the old savegame code. 2020-12-01 12:58:10 +01:00
Christoph Oelckers
67dff2a863 - Exhumed: Serialize global state as JSON.
This was the last item to be converted.
2020-12-01 12:58:10 +01:00
Christoph Oelckers
487d62e264 - Exhumed: Bullet and Grenade. 2020-12-01 12:58:10 +01:00
Christoph Oelckers
54eec61828 - Exhumed: Init 2020-12-01 12:58:10 +01:00