Commit Graph

1295 Commits

Author SHA1 Message Date
Christoph Oelckers b3bcedda6c - moved backend independent HUD code out of glbackend.cpp. 2021-04-11 08:40:18 +02:00
Mitchell Richters f254eeb465 - binaryangle.h: Remove `lookangle` class and replace use with `binangle`.
* Added in fca846272e to deal with signed adjustments but its just not needed.
* Made better use of `binangle`/`fixedhoriz` class getters and setters than before as well.
2021-04-11 15:45:53 +10:00
Christoph Oelckers 184d9be6b1 - fixed palette setup for duplicate base palettes.
Due to some old code it could happen that these weren't fully set up and missed their translations.
Fixes #301 - Blood's invulnerability palette is identical to the base.
2021-04-10 21:42:53 +02:00
Christoph Oelckers addfe4e904 - activate the progress bar on the startup screen. 2021-04-10 19:28:46 +02:00
Christoph Oelckers db5fbe3bbb - make the startup banner in the initial console window work. 2021-04-10 19:14:30 +02:00
Christoph Oelckers a5ed7ba8a3 - two more simple .def commands. 2021-04-10 16:35:29 +02:00
Christoph Oelckers 6b684e74ba - migrated 'texture' .def command. 2021-04-10 14:09:08 +02:00
Christoph Oelckers 057b8a7354 - cleanup of bvectan family of functions.
This can be greatly simplified to a single bvectangbam function using atan2 directly.
2021-04-10 12:54:29 +02:00
Christoph Oelckers 35221188db - inlined Clipper::PointToAngle 2021-04-10 10:56:11 +02:00
Christoph Oelckers 2e191f2742 - consolidated the SetLightAndFog code fragments. 2021-04-10 10:34:20 +02:00
Mitchell Richters 8ebd1a9ebc - binaryangle.h: Clean up `HorizToPitch()` since we're on the new renderer. 2021-04-10 10:06:30 +10:00
Mitchell Richters 28fb752446 - Replace `gethiq16angle()` with `bvectangbam()` in renderer code. This addresses some observed clipping issues in the new renderer. 2021-04-10 09:23:02 +10:00
Christoph Oelckers e0dc261dfd - fixed edge case in wall sorter when the camera is exactly on a line that's being checked. 2021-04-10 00:05:29 +02:00
Christoph Oelckers 345275db5d - better handling for portal lines having sloped back sectors.
This is a very ugly special case that probably needs a bit more work to get right, for now this should be enough as this combination is rather rare.
2021-04-09 22:48:16 +02:00
Christoph Oelckers ff0a3df302 - fixed extended music lookup again.
# Conflicts:
#	source/core/parsefuncs.h
2021-04-09 21:28:23 +02:00
Christoph Oelckers 2084c53538 - fixed extended music lookup again. 2021-04-09 21:21:53 +02:00
Christoph Oelckers 333581a084 Merge branch 'master' into newrenderer2
# Conflicts:
#	source/build/src/defs.cpp
2021-04-09 19:57:56 +02:00
Christoph Oelckers fb02b38279 - better .def loading logic.
To allow cumulative loading without interfering with other ports, Raze will now look for files called xxxx-raze.def, where xxxx is the default .def name (e.g. duke3d-raze.def for Duke3D.) and if that is found, cumulatively load all same-named files - it will fall back on the default name if no such thing is found.
-def still overrides both and will not cumulatively load.
2021-04-09 14:30:01 +02:00
Christoph Oelckers 778a75c097 - fixed rffdefineid handler passing a bad file name to the backend. 2021-04-08 21:36:52 +02:00
Christoph Oelckers 9f08f9786a - consolidated a bit of dead content in .def parser. 2021-04-08 20:03:50 +02:00
Christoph Oelckers c9483353ff - some more translucency checks. 2021-04-08 19:56:18 +02:00
Christoph Oelckers 1362a7ebc5 - added extended translucency support and did a bit of code consolidation. 2021-04-08 19:45:18 +02:00
Christoph Oelckers a530dfbe35 Merge branch 'master' into newrenderer2 2021-04-08 18:52:54 +02:00
Christoph Oelckers 51c4c47183 - block manual advancing of intermission screens when already fading out.
This seems to cause some serious stability issues with how they handle the 2D drawer.
2021-04-08 18:01:42 +02:00
Christoph Oelckers 793d2d99ef - re-fixed the music lookup. 2021-04-08 17:46:53 +02:00
Christoph Oelckers fc1fbfe8b3 - fixed .def 'music' parsing.
This was incomplete and just ignored Duke's special music, and the levelnum generation used an outdated formula so that it never managed to assign any music to the maps.
2021-04-08 16:35:26 +02:00
Christoph Oelckers e2f570a70a - fixed: extended sound lookup must check the sound/ folder. 2021-04-08 16:05:32 +02:00
Christoph Oelckers 1439897b65 - fixed extended music lookup.
The logic was inverted for extended lookup which always resulted in failure to find the song.
2021-04-08 15:55:37 +02:00
Christoph Oelckers cecd34efc7 - moved a bit more script parsing functionality into the backend and tried it out on the 'skybox' command. 2021-04-08 14:00:08 +02:00
Christoph Oelckers 4d29cd2df2 - I shouldn't have used WT's skies as reference - they got front and back faces swapped. 2021-04-08 13:54:58 +02:00
Christoph Oelckers 38ecfc8fa5 - added handling for cubemapped skyboxes. 2021-04-08 12:47:31 +02:00
Christoph Oelckers b68512ef88 - on closer inspection, do not draw skies on intra-sky lines ever - the renderer already takes care of this elsewhere. 2021-04-08 10:10:15 +02:00
Christoph Oelckers d348377bd8 - when drawing skies on walls where both sides are sky, use the backside's texture.
This fixes a sky anomaly in RR's E1L1.
2021-04-08 09:45:17 +02:00
Christoph Oelckers 4cdc39c9b9 Merge branch 'master' into newrenderer2 2021-04-08 08:55:41 +02:00
Christoph Oelckers 58fb938aa7 - block opening of the menu in the fade out phase of a screenjob and in Exhumed's map/intermission screens.
At these places there's some inteference that can bring the engine into an unstable state.
This is not a real fix, just a quick workaround. The actual problem requires closer examination why these are the only places where this happens.
2021-04-07 19:39:48 +02:00
Christoph Oelckers 7a03967ceb - fixed clipping info not properly reset when rendering the scene in two passes.
We need to reset the gotsector array for that, but since we also need the accumulate result of both passes there's now two such arrays.
2021-04-07 16:52:17 +02:00
Christoph Oelckers caa8efd3d5 - fixed renderer to avoid bunches of walls that wrap around behind the camera's back. 2021-04-07 16:09:25 +02:00
Christoph Oelckers 4bd44f9d62 - flat sprites use different visibility rules.
Hooray, Build engine, yet another totally nonsensical magic factor with absolutely no reason why...
2021-04-07 12:58:45 +02:00
Christoph Oelckers 6ad0089524 - fixed flat sprites using the sector bit names for checking for being flipped.
Thank you, autocompletion... :(
2021-04-07 12:39:12 +02:00
Christoph Oelckers 59f18f5fa7 - ensure that all HWSprites are oriented with z1 > z2.
This is required by the sorting code to work as intended.
2021-04-07 12:31:47 +02:00
Christoph Oelckers f9f1d591b3 - must set up fog before textures.
Otherwise the PickTexture callback won't get all needed info.
2021-04-07 10:30:49 +02:00
Christoph Oelckers 3d846f341a - fixed a major clipping issue with the new renderer.
* the bunch drawer can at most process an angular range of 180°. If this gets exceeded it can run into wraparound issues that may cause holes in the geometry.
* there was no clipping to the current field of view so it always checked the full 360°.
2021-04-07 00:02:36 +02:00
Christoph Oelckers d823ae255e - fixed view clipping for portal sectors.
All lines within the portal must neither be added to the clipper nor checked for obstruction by other parts of the map.
2021-04-06 19:25:40 +02:00
Christoph Oelckers 5c2335bbeb - encapsulate setuptile(range) parsing in separate functions. 2021-04-06 16:22:24 +02:00
Christoph Oelckers 0b79649dc2 Merge branch 'master' into newrenderer2 2021-04-06 16:14:21 +02:00
Christoph Oelckers d193e199f1 - reorganized hightile offset storage. 2021-04-06 15:55:33 +02:00
Christoph Oelckers 424c0ce3f4 - testing some script parser improvements. 2021-04-06 15:07:12 +02:00
Christoph Oelckers fc314b6616 - allow loading Zips where all content is in a subdirectory.
The same logic as in GZDoom applies: The root must not have any other content and the subdirectory must contain identifiable game content.
Some handling was also added to strip out macOS resource fork folders because they can contain data that can confuse file detection.
2021-04-06 01:06:03 +02:00
Mitchell Richters 5984fda8a1 - PlayerAngle: Repair issues with `addadjustment()` method following changes in 4ffe004483 that were affecting negative input. 2021-04-06 06:01:54 +10:00
Christoph Oelckers 16ad5f0cc8 - fixed sky rendering in palette emulation mode.
The sky dome drawer cannot work with indexed textures, but since they are fullbright anyway we can just temporarily disable it.
2021-04-05 21:53:19 +02:00
Christoph Oelckers e098e0ca2e - added VR mode init code as this is actually functional with the new renderer.
Also moved a few things out of gl_texture.cpp as this file is scheduled to go away with Polymost.
2021-04-05 20:12:11 +02:00
Christoph Oelckers 7c4e9ea87e - moved palette manager for indexed textures out of glbackend 2021-04-05 20:00:21 +02:00
Christoph Oelckers 9a46fa7ef0 Merge branch 'master' into newrenderer2 2021-04-05 19:20:56 +02:00
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 f6b46e9f63 - added a few missing init calls. 2021-04-05 18:05:44 +02:00
Christoph Oelckers 7a9e58c31e - removed redundant cstat.h file.
Constants are already defined in buildtypes.h
2021-04-05 18:05:43 +02:00
Christoph Oelckers e30dc82676 - Cleanup of the voxel code.
* moving polymost_voxdraw into polymost.cpp.
* consolidated all remaining voxel code in hw_voxels.cpp. All original Build voxel code is completely gone now, except for polymost_voxdraw, so this got moved out of the build/ folder.
* integrate Blood's voxel init code into the main function.
* some further cleanup was allowed as a result of this, so engineInit is gone now because these parts can now be done outside the games' app_init functions.
2021-04-05 18:05:43 +02:00
Mitchell Richters ba90f444dd - PlayerAngle: Repair issues with `addadjustment()` method following changes in 4ffe004483 that were affecting negative input. 2021-04-05 21:41:11 +10:00
Christoph Oelckers 87efc84c84 - enable palette emulation for the new renderer. 2021-04-05 13:05:31 +02:00
Christoph Oelckers de2df926e1 - fixed render timing. 2021-04-05 11:54:28 +02:00
Mitchell Richters 172e3996bb - `HWSprite::Process()`: Added x-off-by-one-fix for sprites similar to yspans from b7bad558da. 2021-04-05 19:37:00 +10:00
Christoph Oelckers ba2defeb14 Merge branch 'master' into newrenderer2 2021-04-05 10:34:34 +02:00
Christoph Oelckers ba41bb4c61 - fixed the viewport setup.
There were two problems here - the math for calculating the rect was wrong and the initial aspect ratio was also not correct.
2021-04-05 10:34:03 +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 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 8055ff1d86 - 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:00:41 +02:00
Christoph Oelckers 6315a8b039 - removed now obsolete #define. 2021-04-04 20:41:44 +02:00
Christoph Oelckers c303884274 - better handling for Duke's scrolling cloudy skies.
* Using the Doom-style dome here because it looks better.
* this necessitated changes to the backend to allow both types of sky domes at the same time
* do not clamp panning fields for cloudy sky with the new renderer because this makes the texture jump.
2021-04-04 20:35:38 +02:00
Christoph Oelckers 39c457bbf2 - removed a few unused CVARs carried over from GZDoom. 2021-04-04 19:35:12 +02:00
Christoph Oelckers ea91b5ba5d - added a map patch for SW:WT's 'skyline' map.
This contains a badly tagged sky sector that makes the new renderer glitch out.
2021-04-04 18:57:03 +02:00
Christoph Oelckers 1201cc71ef - fixed voxel rendering.
No, that 'while' was even pointless in Polymost, much more here where it runs within another loop.
2021-04-04 13:45:43 +02:00
Christoph Oelckers d76c2ccc34 - voxel rotation. 2021-04-04 13:24:33 +02:00
Christoph Oelckers 55ad51ee1f Merge branch 'master' into newrenderer2 2021-04-04 13:23:51 +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 d71ebace97 - fixed fog density of the new renderer.
The actual value needs to be a lot lower than for Polymost due to the different projection.
2021-04-03 22:51:31 +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
Christoph Oelckers d7a13fc9f2 - same for the new renderer. 2021-04-03 21:40:32 +02:00
Christoph Oelckers 9c95c902c7 - added a check for game-side-defined voxels when discarding one-sided wall sprites viewed from the back. 2021-04-03 21:40:16 +02:00
Christoph Oelckers ab36b86a59 - sky tweaking
* Build skies need a different mesh for the dome - the one from GZDoom distorts them too much.
* made adjustment to the positioning math after redoing the mesh
* Exhumed abuses some strange effect of the original sky placement math which means the y-offsetting must be disabled for this game.
* RRRA sky initialization fixed. It must be done after setting up the tiles.
2021-04-03 21:06:02 +02:00
Christoph Oelckers 82bcd90755 - fixed some remaining triangulation issues. 2021-04-03 15:10:06 +02:00
Christoph Oelckers f7dd0ec4a2 - use ZDoom's node builder for triangulating sectors that fail the simple approach.
As it turned out, the triangulator only works fine for regular polygons, but creates incomplete meshes for sectors with multiple sections or some degenerate areas, which are quite common with swinging doors.
The node builder is more costly and creates wall splits, of course, but it does not create broken output for degenerate sectors so it's a good fallback.
2021-04-03 12:44:30 +02:00
Christoph Oelckers 3ff3c6f50e - fixed: stale, but still active interpolations for wall positions should not trigger sector retriangulation. 2021-04-03 10:26:02 +02:00
Christoph Oelckers dc234ea72d - implemented RR's geometry effect.
The grossest of all gross render hack that were ever done with Build...
2021-04-02 22:52:46 +02:00
Christoph Oelckers 54eee347a6 - do y-flipping of wall textures correctly.
1.f - h is not correct for NPOT texures due to hpw they tile.
2021-04-02 22:50:53 +02:00
Christoph Oelckers 7446d0441b - use LGPLv2 for all Raze specific render code. 2021-04-02 18:22:54 +02:00
Christoph Oelckers 638f19172a - voxel rendering.
The stock voxels of Blood and SW seem to work so far, but not all edge cases have been tested.
2021-04-02 18:20:07 +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
Christoph Oelckers c8a75a8664 - give each DrawInfo its own list of tsprites.
Since these do not fully get processed sequentially the contents need to be preserved until needed.
This required getting rid of the global tsprite array. Polymost still uses a static vatiable, though, but this is only accessed in polymost-exclusive code.
2021-04-02 10:28:40 +02:00
Christoph Oelckers 6afbb82e66 - fixed one-sided wall sprite checks. 2021-04-02 09:04:13 +02:00
Christoph Oelckers 80e5cd0dc5 - fixed some automap issues:
* Blood's automap was not drawn at all.
* SW's automap always showed all sectors
* SW's player sprite was not rendered.
* Non-automap: Forward gotsector to the game code because there's still a few places in Blood that need it.
2021-04-01 20:47:05 +02:00
Christoph Oelckers 85020b374a - use texture clamping on non-tiled walls. 2021-04-01 19:21:24 +02:00
Christoph Oelckers e1df17964e - fixed handling of SW's shadows.
An out of range shade will only work without fog.
2021-04-01 19:10:43 +02:00
Mitchell Richters 88695ef554 Merge branch 'master' into newrenderer2 2021-04-01 16:49:07 +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
Christoph Oelckers 3c4429f2a8 - fixed sector mesh generator to allow sectors with non-continuous wall loops.
Blood has a few such sectors.
2021-03-31 21:26:57 +02:00
Christoph Oelckers 4cc0afe587 - fixed texture coordinate generation for sloped planes.
Since these depend on the slope, the sector's ceiling and floorz need to be the same as for the mesh when creating them.
2021-03-31 20:20:19 +02: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 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 7bea8ad6ba - fixed texture overlays for SW's sector portals. 2021-03-30 23:27:11 +02:00
Christoph Oelckers 15fb89d08f - workaround for SO interpolation potentially writing bad values to wall positions.
That messed up interpolation code really needs to be thrown away and replaced later, for now this has to suffice.
2021-03-30 21:30:12 +02:00
Christoph Oelckers a4174352c7 - keep separate sector compare data for floor and ceiling.
Otherwise there can be problems if floor and ceiling change at the same time.
2021-03-30 20:43:52 +02:00
Christoph Oelckers 9cccd6f89b - store plane meshes without height information.
This avoids retriangulation when just the plane's z changes.
2021-03-30 20:30:35 +02:00
Christoph Oelckers 6239734bdc - always create geometry for flat sprites in the collection pass.
This still depends on Build's tsprite array which is global so its contents are too volatile for delayed geometry generation.
This needs to be refactored later but it can only be done when Polymost is gone.
2021-03-30 19:58:42 +02:00
Christoph Oelckers 4647a0b2bc - fixed cases of small textures being used for the sky.
Case in Point: DukeDC uses a 64x64 texture with palette remap for the sky.
2021-03-29 23:25:43 +02:00
Christoph Oelckers 6fcb6fa1d5 - sky positioning tweaks.
It does not use the panning info of the wall and needs a texture height relative adjustment.
2021-03-29 22:34:46 +02:00
Christoph Oelckers 92bb9c5319 - fixed display of player in mirrors. 2021-03-29 21:48:23 +02:00
Christoph Oelckers d2a1f9ea88 - fixed issue with constantly regenerating sector ceiling triangle meshes. 2021-03-29 20:29:09 +02:00
Christoph Oelckers ab9c7de147 - use texture clamping for all sprites. 2021-03-29 20:18:49 +02:00
Christoph Oelckers 2d0360fa55 - apply depth bias to translucent geometry.
This is necessary to handle wall and floor sprites placed on actual walls and floors work as intended.
2021-03-29 19:45:04 +02:00
Christoph Oelckers b93502f0d0 - fixed bad assignments for vertex compare data in sector triangulator. 2021-03-29 10:15:06 +02:00
Christoph Oelckers e0fe8d2ed9 - fixed interpolation issues with sector objects in SW.
SO's vertex interpolation does not use the common framework so it got missed by the sector retriangulation checks.
We need to check two wall positions as well to make sure that sector movement is properly detected.
2021-03-29 09:25:26 +02:00
Christoph Oelckers 389d61d086 - fixed texture selection for one-sided walls with the one-way flag set. 2021-03-29 09:11:38 +02:00
Christoph Oelckers 18cf208b7d - fixed SW shadows in new renderer.
shade clamping and full sprite sort was missing,
2021-03-28 22:29:13 +02:00
Christoph Oelckers 0ae93318e3 - flip camera textures to have the correct orientation. 2021-03-28 21:00:24 +02:00
Christoph Oelckers e8edb32e0d - fixed camera texture setup.
They still are upside-down but aside from that work as expected.
2021-03-28 19:22:51 +02:00
Christoph Oelckers d9ff2fd1e2 - used display size for all texture positioning. 2021-03-28 18:22:30 +02:00
Christoph Oelckers 83760d4974 - fixed a few wall sprite rendering issues.
* masked walls were inserted into the sprite render list, causing sorting issues and depth fighting (see Duke's cameras and the 'closed' sign in Route66/Carnival.map)
* vertical and horizontal wall sprites needed their sorting functions swapped.
* plane clipping for wall sprites used bad coordinates.
2021-03-28 13:09:26 +02:00
Christoph Oelckers b7bad558da - added y-off-by-one-fix for y-centered sprites. 2021-03-28 12:05:29 +02:00
Mitchell Richters ffb956749d - `HWSprite::Process()`: Fix `yoff` adjustment when `spr->cstat & CSTAT_SPRITE_YCENTER`. 2021-03-28 20:46:50 +11:00
Christoph Oelckers 9f48b36627 - redid sprite projection math. 2021-03-28 10:49:34 +02:00
Christoph Oelckers fa44d75e98 - draw regular sprites.
Mostly functional, but the projected size is off.
2021-03-27 23:12:41 +01:00
Christoph Oelckers 7c991d59ac - fixed bad return in sprite processing code. 2021-03-27 15:52:20 +01:00
Christoph Oelckers 0da33096c6 - fixed some wall sprite flickering issues. 2021-03-27 15:24:09 +01:00
Christoph Oelckers d1c23d1ad0 - fixed wall sprite rendering. 2021-03-27 14:18:33 +01:00
Christoph Oelckers efe0d57fca - removed all the decal stubs.
Build has wall sprite for decals so this is redundant and ultimately not usable.
2021-03-27 13:26:11 +01:00
Christoph Oelckers d0f38d7362 - wall sprite WIP. 2021-03-27 13:22:34 +01:00
Christoph Oelckers 1dfb2672a8 - flat sprite rendering! 2021-03-26 20:28:44 +01:00
Christoph Oelckers fd0e9824b6 - call the game specific analyzesprites functions. 2021-03-26 15:06:14 +01:00
Christoph Oelckers 098db655ab - did some fudging on the scene viewport until thinks looked right again.
I have no idea, though, why it has to be this particular formula, though. It doesn't seem to make any sense.
2021-03-26 01:55:24 +01:00
Christoph Oelckers be7bca8e9e - expose animatesprite set of functions to new renderer as a callback. 2021-03-26 10:05:01 +01:00
Christoph Oelckers 0b1e81023f - added sprite collection loop to ProcessSector and did a bit of cleanup on the TSprite code. 2021-03-25 23:16:32 +01:00
Christoph Oelckers f6568fee0c - rewrote SW portal setup to use static data instead of ad-hoc setup.
This was by far the messiest game, there's two reasons for this.
First, the portal links do not need to be in an actual portal sector, so they cannot be used to detect portal sectors.
Second, the game moves portals in place, so all offsets are (0,0,0) so that not even these can be used for detection.

The only working method is the super-complicated original way to look up portals at run time, just being done at map start.
Having static portal links should reduce the render glitches quite significantly because the renderer knows now which sectors belong to a portal and can use this information to ensure proper processing.
2021-03-25 21:21:48 +01:00
Christoph Oelckers af54cf3a3c - made SW's sector portals operational.
Unlike the other games these are so poorly defined that the engine has to rely on the original fudging to pick the proper portal to link to. As a result they are just as limited as they always were.
In addition all the portal search code had to be reinstated.
2021-03-25 16:45:40 +01:00
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
Christoph Oelckers 5850c7b284 - let SyncInput return a combination of gamesetinput and cl_syncinput - also serialize gamesetinput. 2020-11-30 23:45:21 +01:00
Christoph Oelckers ae36ea88c3 - wrap all checks of cl_syncinput in an inline function. 2020-11-30 23:40:16 +01:00
Mitchell Richters 22f7fc93f4 - Exhumed/SW: Move code to trigger synchronised input for edge cases where its needed into gamecontrol. 2020-12-01 07:31:47 +11:00
Christoph Oelckers ed8266df0b - fixed bad args check in WarpToCoords CCMD. 2020-11-29 16:06:15 +01:00
Christoph Oelckers cd1b79a703 - use stricter checks when trying to levelwarp.
If saving is blocked, so should changing the level.
Fixes #204.
2020-11-29 15:22:54 +01:00
Christoph Oelckers a34f5debe8 - route the shared control CCMDs through the game interface instead of registering local variants for each game. 2020-11-29 13:35:09 +01:00
Christoph Oelckers 48b16d5233 - cleanup on player CVAR use. 2020-11-29 13:22:04 +01:00
Christoph Oelckers 82a0e95485 - made the new interpolation system work in Blood.
The panning interpolations need wraparuound handling due to their small value range.
2020-11-26 18:32:35 +01:00
Christoph Oelckers 2cd3927613 - use floats for wall panning offsets. 2020-11-26 18:32:35 +01:00
Christoph Oelckers 357199ecc1 - cross-game, serialization-friendly and pointer free interpolation implementation.
Not hooked up yet.
2020-11-26 18:32:35 +01:00
Christoph Oelckers d545eb7aa9 - make sector panning variables floats and added some convenience wrappers. 2020-11-26 18:32:35 +01:00
Christoph Oelckers 82d80f3f07 - Blood: handle super secrets properly in the statistics display.
Fixes #198
2020-11-26 07:48:34 +01:00
Mitchell Richters 80ff918b17 - gameinput.h: For PlayerAngle struct methods `settarget()`, properly set target as angle + delta between angle & target within method and not game-side. 2020-11-26 17:26:29 +11:00
Mitchell Richters e9e4590f6a - gameinput.h: For PlayerHorizon and PlayerAngle struct methods `settarget()`, always set the angle directly if backup set to true. 2020-11-26 16:42:07 +11:00
Mitchell Richters b9e1cbb5de - gamecontrol.h: Move `getHalfLookAng()` into `PlayerAngle` struct as `look_anghalf()`.
* Uses internal struct variables at full BAM precision.
2020-11-26 16:37:37 +11:00
Christoph Oelckers 5a5f9b8e02 - backend update from GZDoom. 2020-11-23 15:54:06 +01:00
Christoph Oelckers fde6407266 - removed the local duplication of the player name in Blood.
Using the global CVAR instead - once multiplayer support is in this will work for all players.
2020-11-23 09:53:58 +01:00
Christoph Oelckers 169d708547 - removed all remaining uses of tilesiz. 2020-11-23 08:55:02 +01:00
Mitchell Richters 3f14886830 - binaryangle.h: Return `BAngToBAM()` as `int64_t` to handle signed values without overflowing on unsigned values. 2020-11-23 10:49:47 +11:00
Mitchell Richters 89048c8e70 - binaryangle.h: Use cmath.h functions for `binangle`/`lookangle` trig methods as well. 2020-11-23 08:40:18 +11:00
Christoph Oelckers b89cd6d14c - cleanup on binaryangle.h
* why the reference parameters? These should be passed by value.
* removed the < and > operators from binangle class because angles should not be ordered.
* instead of calling the CRT trig functions, use the ones from cmath.h which are more reliable
2020-11-22 21:54:39 +01:00
Mitchell Richters 5ba2e7863d - binaryangle.h: Add `asbuildf()` method to all classes and use where appropriate. 2020-11-22 21:18:12 +01:00
Mitchell Richters e57d6f8785 - Duke: Fix crane's angle `settarget()` call.
* Fixes #185.
2020-11-22 21:18:12 +01:00
Mitchell Richters c42771228d - binaryangle.h: Reverse order of `binangle` and `lookangle` classes and declare `binangle` class a friend of `lookangle`.
* In-prep for addressing #185.
2020-11-22 21:18:11 +01:00
Mitchell Richters 3b3e926fd3 - gameinput.h: For `PlayerAngle` struct, add int `settarget()` overload and change one true call with a float to `bvectangf()`. 2020-11-22 21:18:11 +01:00
Mitchell Richters 2341ed4e25 - gameinput.h: For `PlayerAngle` struct, add extra `addadjustment()` overloads to remove type conversions game-side, and when incoming. 2020-11-22 21:18:11 +01:00
Mitchell Richters 35845a63e2 - binaryangle.h: Expand all classes with bit-shift operators and `binangle`/`lookangle` classes with some lt/le/ge/gt bools to have parity with the `fixedhoriz` class. 2020-11-22 21:18:11 +01:00
Mitchell Richters 42689e02c4 - gameinput.cpp: Define `getincanglebam()` and slightly clean up other getincangle*() functions. 2020-11-22 21:18:11 +01:00
Mitchell Richters d6d74c2712 - buildutils: Replace `sintable[]` use within core with `bsin()`/`bcos()`. 2020-11-22 21:18:02 +01:00
Mitchell Richters 32a1796728 - buildutils: Replace `sintable[]` use within Build with `bsin()`/`bcos()`, using `bsinf()`/`bcosf()` where appropriate.
* Includes a few header include shuffles to make it all come together.
2020-11-22 21:18:02 +01:00
Mitchell Richters 85bb248309 - binaryangle.h: Extend file with sine/cosine inline helper functions. 2020-11-22 21:18:02 +01:00
Christoph Oelckers 921a7a7166 - RRRA: fixed progression from E1L7 to E2L1 plus a texture related crash.
Fixes #189.
2020-11-22 18:46:20 +01:00
Christoph Oelckers dced173cda - JSON serializer for actor.
Also cleaned up use of gAffectedSectors and gAffectedXWalls. These are merely needed as local worker variables, not as global persistent status.
2020-11-22 12:48:42 +01:00
Mitchell Richters d7c4e5e59f - searchpaths.cpp: Add registry detection for Powerslave/Exhumed from GOG.
* Fixes #191.
2020-11-22 22:23:01 +11:00
Christoph Oelckers b2a7a0635b - Blood: JSON serializer for triggers
Also renaming members of struct BUSY.
2020-11-21 20:25:06 +01:00
Christoph Oelckers 7945242fa8 - removed some redundant utility functions. 2020-11-21 18:13:10 +01:00
Christoph Oelckers 4aa06ff702 - use a static table for SEQ callbacks.
This ensures that callback indices are consistent. Runtime registration as performed by NBlood has undefined order and will make savegames non-transferrable.
2020-11-21 16:34:32 +01:00
Christoph Oelckers 1535182577 - simplified the event management further and added a JSON serializer for it. 2020-11-21 15:09:38 +01:00
Christoph Oelckers 5f54eac297 - made palette loader part of the game interface.
This gets rid of the Blood 'replace' hook for thus.
2020-11-21 12:54:09 +01:00
Christoph Oelckers 36479b623d - re-fixed crosshair scale to only use one CVAR for everything. 2020-11-13 17:56:55 +01:00
sinisterseed 913239ee5d - minor adjustment to the level stats widget.
Since the widget was right on top of the status bar, the shadows behind it were slightly bleeding into it.
2020-11-13 17:12:01 +02:00
Christoph Oelckers 483e0b6574 - fixed voxel rendering in palette emulation mode.
The recent changes for replacing fonts with hires versions made the paletted handling kick in, although the voxel textures are not suitable for that.
Fixes #178
2020-11-12 19:26:16 +01:00
Mitchell Richters 735d89bfb6 - SW: Ensure save code backs up `crouch_toggle` and player's current input.
* Fixes #166.
2020-11-12 23:31:32 +11:00
Christoph Oelckers 2ee18b3a11 - fixed voxel rendering. 2020-11-11 20:31:27 +01:00
Christoph Oelckers a92b4943f9 - Duke: use original colors for inventory status display.
I took one liberty and still use green/yellow/red for the percentage, but this now uses palette translations so that it works better with hires replacements.
2020-11-11 11:49:05 +01:00
Christoph Oelckers 85edf38eba - do not grayscale all hires tinting. 2020-11-11 07:57:25 +01:00
Christoph Oelckers e2b6ebec91 - partially fixed colorization for hires replacements. 2020-11-10 23:59:04 +01:00
Christoph Oelckers 96fbfdcf86 - made hires replacements work for untranslated fonts. 2020-11-10 21:34:49 +01:00
Christoph Oelckers 8ac6a4d321 - removed redundant declaration of PickTexture. 2020-11-10 20:30:37 +01:00
Christoph Oelckers 873f4d7c0c - link hires replacements to textures instead of tile numbers.
This is needed to connect them to fonts as well because its glyphs have no tile index.
2020-11-10 20:12:46 +01:00
Christoph Oelckers ed599d0f05 - moved the hires texture replacement logic into a backend callback.
This way it can be handled transparently to the calling code.
Fonts do not work yet, though.
2020-11-10 16:22:02 +01:00
Christoph Oelckers 601680d08e - moved widthBits and heightBits into engine.
These functions will go away with the rest of the renderer when the time comes, so this is the right place.
2020-11-09 20:56:28 +01:00
Christoph Oelckers 61b42ea448 - fixed font color in SW's menus
fixes #165
2020-11-09 16:56:59 +01:00
Christoph Oelckers aed8a450fd - SW: fixed episode menu display.
The subtitle needs to use the game specific drawer, not the generic one.
Fixes #162
2020-11-08 10:12:12 +01:00
Mitchell Richters 8178d20f97 - c_notifybuffer.cpp: Center and pulse text for all RR games in `DrawNative()`.
* Fixes #163.
2020-11-08 10:39:45 +11:00
Mitchell Richters f9f365a593 - Ensure `crouch_toggle` bool from 6e3d414b3c is serialised when saving game, and cleared when `InputState::ClearAllInput()` is called. 2020-11-08 07:30:48 +11:00
Mitchell Richters ade1a80515 - gameinput.cpp: Remove crouch bool from `applylook()` since we can now just rely in the actions bitfield that's already incoming as required and default `scaleAdjust` in the prototype to `1`. 2020-11-07 18:25:06 +11:00
Mitchell Richters 6e3d414b3c - inputstate.cpp: Move `checkCrouchToggle()` from gameinput.ccp into `ApplyGlobalInput()` and use static bool for crouch toggling vs. game-side bool. 2020-11-07 18:16:16 +11:00
Mitchell Richters a153ebab7e - SW: Migrate crouch toggling to backend solution implemented in 4ef0d20e0e. 2020-11-07 17:53:11 +11:00
Mitchell Richters 4ef0d20e0e - gameinput.cpp: Consolidate `checkCrouchToggle()` from Duke with discrete implementations from Blood in 7c8efde38c and Exhumed in 032db82f82 to unify the functionality. 2020-11-07 13:44:25 +11:00
Mitchell Richters c9708a5464 - `CONTROL_GetInput()`: Reverse polarity of dx/dz and update `processMovement()` appropriately. 2020-11-07 09:56:57 +11:00
Christoph Oelckers 7a482c6284 - make DHUDFont an object. 2020-10-31 13:20:54 +01:00
Christoph Oelckers 7de6528a1f - the status bars work as objects.
# Conflicts:
#	source/common/menu/menudef.cpp
2020-10-31 13:20:54 +01:00
Christoph Oelckers 3b7ce26c86 - final function moves and renamed hud_scale to hud_scalefactor. 2020-10-31 13:20:00 +01:00
Christoph Oelckers 0270dcd5f6 - cleaned up leftovers. 2020-10-31 13:20:00 +01:00
Christoph Oelckers 37024df405 - Status bar draw code is now identical with GZDoom's. 2020-10-31 13:20:00 +01:00
Christoph Oelckers 3a0c84d3ca - split statusbar.cpp in two.
To keep Raze-exclusive content out of the main file that's about to be edited.
2020-10-31 13:19:59 +01:00
Christoph Oelckers c53653106e - fixed compilation. 2020-10-31 12:46:53 +01:00
Christoph Oelckers e5ce1da9a3 - this is 0.7.3. 2020-10-31 12:41:17 +01:00
Christoph Oelckers 74df8f55da - moved c_console.cpp to 'common'. 2020-10-25 13:26:40 +01:00
Christoph Oelckers 8d3585afe1 - console cleanup.
The bulk of the console is now free of game dependencies.
2020-10-25 13:14:42 +01:00
Christoph Oelckers 273ad5e133 - backend update 2020-10-25 09:20:26 +01:00
Christoph Oelckers 570897005c - added sound playback to the Smacker video player.
Thanks to Blood's weird setup and the resulting lack of sound support in NBlood's player I never realized that this is a fully featured movie format that actually has sound support.
Now the soundtrack will play if present.
2020-10-25 00:46:39 +02:00
Christoph Oelckers aeda977bc2 - fixed incomplete font initialization. 2020-10-24 21:02:00 +02:00
Christoph Oelckers f02cf7e067 - fixed issues with fog setup and added missing fog to Exhumed's red palette.
Foggy lookups should not attempt to calculate a fade ramp, that does not work if the color gets brighter with distance.
Fixes #143
2020-10-24 20:33:33 +02:00
Christoph Oelckers 8868be659f - make snd_speech toggle work in SW. 2020-10-23 22:53:02 +02:00
Christoph Oelckers e702a13ef4 - close the quickload and quicksave confirmation screens after selection.
Fixes #139
2020-10-22 01:01:28 +02:00
Mitchell Richters c98f7ac491 - gameinput.cpp: Don't set a target when serialising `PlayerHorizon` struct.
* Fixes #131.
2020-10-22 09:41:21 +11:00
Christoph Oelckers 699c32ff4a - fixed quicksave setup
Fixes #133
2020-10-20 23:34:30 +02:00
Mitchell Richters a00da23654 - searchpaths.cpp: When filtering duplicate games to delete, if CRC matches and CRC == 0, test whether name matches as well.
* Cryptic Passage for Blood has no CRC and therefore was failing this catch.
* Fixes #130
2020-10-19 20:46:22 +11:00
Mitchell Richters ff9c7bf0bb - binaryangle.h: Create `osum()` for `PlayerHorizon` and `PlayerAngle` structs and use within each struct's `interpolatedsum()` method.
* Already doubled up by calculating `sum()` again within `interpolatedsum()` and no point changing that out without an `osum()`.
2020-10-18 22:43:42 +11:00
Mitchell Richters cd683e6511 - binaryangle.h: Add missed line from 4e07942cff to calculate interpolation ratio using multiply instead of divide. Hopefully in the future we can just use a true double between 0 and 1 like GZDoom... 2020-10-18 22:05:21 +11:00
Mitchell Richters 4e07942cff - binaryangle.h: Minor clean up of PlayerHorizon/PlayerAngle structs.
* Sync PlayerHorizon's `settarget()` with changes to PlayerAngle's from 19d9e1a947.
* For each struct's `addadjustment()`, multiply value by unit there rather than always within `processhelpers()`.
* Properly use `xs_CRoundToUInt()` within PlayerAngle's `processhelpers()` method instead of the signed version.
* Use `abs()` within PlayerAngle's `processhelpers()` like PlayerHorizon's.
2020-10-18 22:00:39 +11:00
Mitchell Richters 19d9e1a947 - binaryangle.h: Fix issues with `PlayerAngle.settarget()` following changes in bf5bd01164.
* Just was not working whatsoever, really...
2020-10-18 21:31:36 +11:00
Christoph Oelckers c2828fe2e3 fixed undefined end of list behavior of iterators
Also fixed a few warnings
2020-10-18 12:14:05 +02:00
Mitchell Richters a9ad043c36 - Partially resolve issues loading autoexec.cfg files.
* This works for Raze's running directory, but is not pulling in autoexec.cfg files from subdirectories from Raze's running directory (Duke, Duke.Duke) or paths where game content resides (Steam, for instance).
* Partially addresses #110
2020-10-17 12:58:00 +11:00
Mitchell Richters 6385539144 - Port over `i_timescale` CVAR from GZDoom for use with debugging.
* Had situations where this would have been useful instead of manipulating GameTicRate and rebuilding.
2020-10-16 10:31:11 +11:00
Christoph Oelckers eb78b88598 - all Blood stat iterators ported. 2020-10-15 20:22:39 +02:00
Mitchell Richters fb91fc49a3 - processMovement(): Add commentary around avel constants used within function and how they came to be. Also clean up some left-over code. 2020-10-15 20:12:34 +11:00
Christoph Oelckers 25d79285a3 - added the resource file name to the listmaps printout. 2020-10-14 01:13:36 +02:00
Christoph Oelckers c17808d789 - extended 'listmaps' by also printing the display name for the map. 2020-10-14 00:58:43 +02:00
Mitchell Richters fcfeafdbe9 - mapinfo.cpp: Create CCMD `listmaps` to return map filenames. 2020-10-14 09:38:37 +11:00
Christoph Oelckers 129aa864dd - do not accept any input in the first 0.1 seconds of running a screen job.
This is to avoid accidental skipping by pending game input.
2020-10-13 23:36:27 +02:00
Christoph Oelckers df86a11d23 - fixed palette of Exhumed's game over screen. 2020-10-13 23:29:12 +02:00
Christoph Oelckers ef15ac8b6e - fixed: For the episode and skill menu, autoselection for single entries did not work. 2020-10-13 22:16:43 +02:00
Christoph Oelckers 99b4a64a67 - removed the PSPTwoDSetter
This is no longer needed because all weapon drawing is using the proper interface now.
2020-10-13 21:38:24 +02:00
Christoph Oelckers 817fa8aba3 - save the entire engine state as JSON.
The sprite lists may still need optimization. Due to different handling between Blood and the core engine they need to be written out completely which is quite wasteful.
2020-10-13 20:18:08 +02:00
Christoph Oelckers 742917c6d7 - re-enabled the autoload-after-death function.
This had to be disabled for the menu but somehow was missed when reenabling these things again.
2020-10-12 19:42:16 +02:00
Christoph Oelckers 86ad576675 - fixed lockup on Shareware screen when quitting Duke
Two errors: the menu wasn’t closed and the shareware check was inverted.
2020-10-12 08:07:51 +02:00
Mitchell Richters a792f329ca - binaryangle.h/PlayerAngle: Fix incorrect variable declaration on `dang` within `interpolatedsum()` method.
* Didn't seem to be causing an issue but better it be correct.
2020-10-12 16:28:05 +11:00
Mitchell Richters bf5bd01164 - binaryangle.h/PlayerAngle: Make `settarget()` method consistent with `PlayerHorizon` class and fix incorrect variable declaration. 2020-10-12 14:51:53 +11:00
Christoph Oelckers b4a011300a - implemented proper delta serialization for sectors and walls. 2020-10-11 21:11:38 +02:00
Christoph Oelckers f12c6b0319 - removed wallext because its only member 'blend' is not used by anything.
This is a feature not worth preserving, render style + alpha should be done directly, not via indirect lookup tables.
2020-10-11 18:44:16 +02:00
Christoph Oelckers fd31da3115 - save sectors and walls as JSON
This is not optimized yet so saves are a bit larger than necessary.
2020-10-11 18:10:52 +02:00
Christoph Oelckers cb8d2eb94c - added serializers for PlayerAngle and PlayerHorizon. 2020-10-11 16:55:12 +02:00
Christoph Oelckers 1757ef2aa6 - split the game input code off gamecontrol.cpp into its own file. 2020-10-11 16:33:43 +02:00
Christoph Oelckers 8e1c71b867 Merge branch 'InputContinuation' 2020-10-11 15:24:51 +02:00
Christoph Oelckers fc82b3bc8a - Duke: replaced the game type macros with inline functions. 2020-10-11 14:30:42 +02:00
Christoph Oelckers 8b8c6a5e3a - fixed episode default. 2020-10-11 07:44:51 +02:00
Mitchell Richters 5011b10549 - binaryangle.h/cpp: Inline the functions created in 271eb1c3fa. No real need to have a separate file for these. 2020-10-11 15:34:18 +11:00
Christoph Oelckers 820b37721b - moved tab completion code into 'common' as well. 2020-10-11 00:08:07 +02:00
Christoph Oelckers 242a70e610 - split the command line buffer off from c_console.cpp and reactivated the check for CONBACK. 2020-10-10 23:16:08 +02:00
Christoph Oelckers fe2e96d3a6 Merge branch 'master' into InputContinuation
# Conflicts:
#	source/games/duke/src/duke3d.h
2020-10-10 21:39:27 +02:00
Christoph Oelckers dcde91b0c9 - do not wrap the simple value wrappers into a JSON object when being serialized.
It only adds to the processing time - they can just be written out as-is.
2020-10-10 21:36:12 +02:00
Christoph Oelckers 16a4d49268 - added background dimming for the menu when in overlay mode. 2020-10-10 18:29:15 +02:00
Christoph Oelckers f9ab77f700 - create named texture copies for 'tilefromtexture' replacements.
We want to be able later to find them in the texture manager again.
2020-10-10 16:52:04 +02:00
Christoph Oelckers c478d1add2 - properly uninit the menus. 2020-10-10 15:16:28 +02:00
Mitchell Richters 271eb1c3fa - binaryangle.h/cpp: Hook up FSerializer and use within Duke for saving objects. 2020-10-11 00:10:53 +11:00
Christoph Oelckers 91e23b3ab5 - Exhumed: play the menu advance sound when starting a game 2020-10-10 13:30:23 +02:00
Christoph Oelckers 294a806793 - fixed some issues with prematurely terminated sounds. 2020-10-10 12:57:43 +02:00
Christoph Oelckers db21d5e946 - took all script exports out of the namespaces.
It looks like GCC cannot deal with this - on MSVC it works fine.
2020-10-10 10:11:22 +02:00
Christoph Oelckers 16fd505f9a - make sure that sfxinfo_t is always fully initialized by adding initializer values to all fields.
Let's hope this finally fixes those sound hiccups.
2020-10-10 09:47:00 +02:00
Christoph Oelckers 2237113a77 - fixed font scaling in RR's confirmation screens. 2020-10-10 00:51:26 +02:00
Christoph Oelckers 03e57fa3d7 - fixed Exhumed's game startup. 2020-10-09 23:58:34 +02:00
Christoph Oelckers d6d9100992 - set proper slider colors for all games. 2020-10-09 23:35:38 +02:00
Christoph Oelckers b21beb4039 - made the options search work.
This required changing how the engine credits menu work because it created a circular dependency in its original form.
2020-10-09 22:33:02 +02:00
Mitchell Richters 9c993b9104 - d_protocol: Change horz/avel pack/unpacking from long to float. 2020-10-09 16:18:28 +11:00
Mitchell Richters 44e4c5ff78 - Fix joystick scaling following shift to fixedhoriz and binangle.
* Remove joystick scaling from `CONTROL_GetInput()`.
* Store turnspeed as constant at top of `processMovement()` and use it for joystick yaw/pitch scaling. This adds the advantage of having the out-of-box turning speed match the keyboard's turn speed and also attenuates when the player is not running.
2020-10-09 11:34:14 +11:00
Christoph Oelckers 2d8bcd06fd - added the player display for Duke.
This completes the menu transition.
2020-10-09 01:09:51 +02:00
Christoph Oelckers 4024ebd12d - re-added Duke 1.3's credit screens. 2020-10-09 00:11:49 +02:00
Christoph Oelckers 19c719db4e - image scroller is working again. 2020-10-08 22:53:12 +02:00
Christoph Oelckers 6ba06f5ed0 - ImageScroller WIP commit. 2020-10-08 22:20:41 +02:00
Christoph Oelckers 15eaf86f5a - preparations for the image scroller menu. 2020-10-08 18:02:25 +02:00
Mitchell Richters f35bec4a5d - Fix interpolation issues and do other minor fixes following shift to fixedhoriz and binangle.
* When interpolating on the initial setup, when binangle reached an overflow point when going lower than zero, the engine was spinning the player around clockwise to the new angle (2047, for instance).
* Interpolating after casting as uint64_t with a workflow similar to the original games, the issue went away.
* Cleaned up other interpolation functions to be of a consistent workflow.
* Scale keyboard input turning down to degree speeds.
* Uplift some remaining Q16.16 code in `applylook()` to full BAM precision.
* Move static calculations of aim and look speeds for `sethorizon()` back into function since GameTicRate isn't set right before calculation is done.
* Simplify the angle target setup back to a basic value like before.
* Repair SW interpolation issues of weapon sprite drawer when rotating left/right.
* Fix SW death horizon constant values following change of horizon center to 0.
2020-10-08 21:12:21 +11:00
Mitchell Richters 9bcdeae6cd - InputPacket: Change `q16avel` to `avel`, changing type from fixed_t to float. 2020-10-08 14:47:30 +11:00
Mitchell Richters e53d58bd42 - gamecontrol: Clean up remainder of legacy angle code. 2020-10-08 14:29:50 +11:00
Christoph Oelckers 56eae0b42d - got the basics working for Exhumed's main menu. 2020-10-08 00:21:07 +02:00
Christoph Oelckers a953404331 - SW's text menus done.
This also copies the Build texture animation info into the texture manager so that the 2D code can access it through existing interfaces.
2020-10-07 23:22:29 +02:00
Christoph Oelckers 789eb6d51d - Most of Duke's menus work again. 2020-10-07 20:32:43 +02:00
Christoph Oelckers 2bb38f7d67 - get load and save game menus and related CCMDs working again. 2020-10-07 18:32:57 +02:00
Mitchell Richters 40cb64cdcf - applylook(): Remove some forgotten debug lines. 2020-10-07 23:40:41 +11:00
Mitchell Richters babd7b9556 - InputState: Proposed new sensitivity dividers now that mouse input is based on true pitch and true angle. 2020-10-07 23:25:36 +11:00
Mitchell Richters fca846272e - gamecontrol: Initial setup of `PlayerAngle` struct and deployment within Duke.
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters 0c55a533be - PlayerHorizon: Change struct functions to declarations and define code in gamecontrol.cpp to reduce binary size. 2020-10-07 18:25:50 +11:00
Mitchell Richters 6a30d6880e - InputPacket: Change `q16horz` to `horz`, changing type from fixed_t to float. 2020-10-07 18:22:07 +11:00
Mitchell Richters d16b4651bb - gamecontrol: Remove old horizon code left behind while cutting over each game. 2020-10-07 18:12:09 +11:00
Mitchell Richters 6da756cc9f - Exhumed: Cut `q16horiz` over to PlayerHorizon struct. 2020-10-07 17:40:59 +11:00
Mitchell Richters f39939d114 - gamecontrol: Initial setup of `PlayerHorizon` struct and deployment within Duke.
* Started with the most complicated game first.
* Struct made up of fixedhoriz class units.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 17:12:48 +11:00
Mitchell Richters 082336e5f8 - buildhoriz: Implementation of pitch and BAM conversion code.
* Determined maximum horizon able to be handed by engine in Q16.16 format is 280039127.
* Re-did pitch math to work on this known maximum and standardised pitch around -90/90 degrees as it should be.
* Because pitch is now -90/90 and not ~-188/188, m_sensitivity_y probably requires re-scaling.
2020-10-07 13:29:04 +11:00
Mitchell Richters 09a05f354c - Re-standardise horizon around 0 and not 100.
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers 38ddbfe65f - activated most of the support code for programmatically created menus again.
Blood's regular menu screens mostly work again
2020-10-07 01:31:41 +02:00
Christoph Oelckers 5726b693bd - added back the menu transition, although it cannot be used yet, and all game specific menu CCMDs. 2020-10-07 01:12:57 +02:00
Christoph Oelckers 0968a9d97e - renamed the Customizer to 'Delegate' because this works very much like a delegate in Objective-C.
- route menu sound calls through the delegate to better deal with differences between games.
2020-10-07 01:00:43 +02:00
Christoph Oelckers 603c3b50ec - reimplemented Blood's menu items. 2020-10-07 00:50:26 +02:00
Christoph Oelckers 06b00887f5 - added a menu control for Blood's dripping blood. 2020-10-06 23:49:34 +02:00
Christoph Oelckers 1ea6084478 - Exhumed also done.
Also using proper assets now.
2020-10-06 22:35:25 +02:00
Christoph Oelckers 17a68bc60a - SW's caption done, too.
In this case the font is squashed to be more narrow because otherwise many texts would not fit anymore.
2020-10-06 22:01:20 +02:00
Christoph Oelckers bec1f67178 - implemented the menu caption for Duke et.al. 2020-10-06 20:49:55 +02:00
Christoph Oelckers d22bdf9dc7 - use an alias for the menu bar texture in Blood.
Direct tile access has been disabled for now, hopefully this can be buried deep in the engine for all eternity.
2020-10-06 20:05:51 +02:00
Christoph Oelckers 1e131eda9e - implemented Blood's menu caption 2020-10-06 00:34:35 +02:00