Commit Graph

788 Commits

Author SHA1 Message Date
Christoph Oelckers 6b475417dc Merge branch 'master' into gzbackend 2019-12-23 14:31:31 +01:00
hendricks266 56e88b33a8 Replace color matching up to index 239 with the engine's fullbright mask
Should improve the color range available to non-Duke editors.

git-svn-id: https://svn.eduke32.com/eduke32@8491 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-23 11:37:00 +01:00
hendricks266 34ef03185d Generate editorcolors[] from vgapal16[] at a better point in the startup process
git-svn-id: https://svn.eduke32.com/eduke32@8490 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/palette.cpp
2019-12-23 11:36:24 +01:00
hendricks266 0a7f5f558a Rename colmatch functions
git-svn-id: https://svn.eduke32.com/eduke32@8488 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/colmatch.h
#	source/build/src/build.cpp
#	source/build/src/defs.cpp
#	source/build/src/palette.cpp
#	source/duke3d/src/lunatic/dynsymlist_editor.lds
#	source/duke3d/src/lunatic/dynsymlist_game.lds
#	source/duke3d/src/lunatic/engine.lua
#	source/tools/src/transpal.cpp
2019-12-23 10:59:14 +01:00
hendricks266 7db49ea20a Change PaletteIndexFullbrights from uint32_t[8] to uint8_t[32]
git-svn-id: https://svn.eduke32.com/eduke32@8487 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/palette.h
2019-12-23 10:57:11 +01:00
Christoph Oelckers 6e9631f2d8 - fixed all undefined symbols except OpenGLFrameBuffer. 2019-12-23 10:53:58 +01:00
hendricks266 deec38c827 Expose nextvoxid variable
This allows game and defs to not overwrite each other's voxels.

git-svn-id: https://svn.eduke32.com/eduke32@8471 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/kenbuild/src/bstub.cpp
#	source/kenbuild/src/game.cpp
#	source/sw/src/bldscript.cpp
#	source/sw/src/jnstub.cpp
2019-12-22 15:12:49 +01:00
hendricks266 777b895748 Defs: Minor ifcrc cleanup
git-svn-id: https://svn.eduke32.com/eduke32@8464 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/build.h
#	source/build/src/defs.cpp
#	source/build/src/tiles.cpp
2019-12-22 15:07:26 +01:00
Christoph Oelckers fffe1753ec - removed a few unused bits of code. 2019-12-19 20:04:17 +01:00
Christoph Oelckers 3cb68b2bf0 - replaced the semi-broken screenshot name generator.
Also took this file out of the 'build' folder, now that all code in here comes from elsewhere.
This also removes a few dead declarations.
2019-12-19 19:47:51 +01:00
Christoph Oelckers 43c66d07ae Merge branch 'master' into sound 2019-12-18 11:23:20 +01:00
hendricks266 90412527e0 Improve accuracy of sepldist when one dimension is zero
Backported from Rednukem.

git-svn-id: https://svn.eduke32.com/eduke32@8442 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/common.h
2019-12-18 11:17:37 +01:00
hendricks266 5f748fc17e Expose hitscangoal variable
Backported from NBlood.

git-svn-id: https://svn.eduke32.com/eduke32@8439 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-18 11:15:22 +01:00
hendricks266 6eec629cfd Expose blackcol variable, containing the palette index closest to #000000
Backported from PCExhumed.

git-svn-id: https://svn.eduke32.com/eduke32@8433 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-18 11:13:00 +01:00
Christoph Oelckers a7075bc1b0 - SW sound WIP
* removed old sound loading code, which was the last bit to use cacheAllocateBlock which is also gone now.
* cleanup of player sound code. All game side tracking of the sound resources has been removed.

does not compile yet.
2019-12-17 23:25:07 +01:00
Christoph Oelckers 706157d623 - converted Blood's sound system to the OpenAL sound engine.
Now, this code was one big mess of strange design, let's hope it sounds better with a real 3D mixer now.
2019-12-17 19:37:05 +01:00
Christoph Oelckers 9b9c009de9 - copybyte is not the same as memcpy.
It should be inlined to use it, though, because homegrown loops for this stuff may have been ok in 1995, but not in 2019.
2019-12-15 21:06:41 +01:00
Christoph Oelckers cbfb79977a - adjustments to make it compile with the new menu code. 2019-12-13 21:01:14 +01:00
Christoph Oelckers 052ed5fff7 Merge branch 'master' into powerslave 2019-12-13 20:43:23 +01:00
Christoph Oelckers 0604c72586 - code cleanup
removed some unused definitions
replaced the copybuf* functions with memcpy. These days doing homegrown copy loops is not efficient anymore.
2019-12-09 01:39:40 +01:00
Christoph Oelckers 66218dd074 - connect SW with statistics code and added missing function for Blood
# Conflicts:
#	source/blood/src/blood.h
#	source/common/menu/messagebox.cpp
#	source/sw/src/game.cpp
#	source/sw/src/game.h
2019-12-09 01:03:18 +01:00
Christoph Oelckers a74797b97c - fix merge errors. 2019-12-08 08:51:54 +01:00
terminx fd1656fbf2 Move atoi_safe() from editor.h to compat.h and #define Batoi atoi_safe
They were the same thing so they might as well be in the same place.

git-svn-id: https://svn.eduke32.com/eduke32@8374 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/editor.h
2019-12-08 08:11:04 +01:00
terminx 0af13dcde0 Minor changes to hash table code
git-svn-id: https://svn.eduke32.com/eduke32@8372 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/hash.h
2019-12-08 08:09:13 +01:00
terminx 15b76f2041 Add Xaligned_calloc()
git-svn-id: https://svn.eduke32.com/eduke32@8371 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/compat.h
2019-12-08 08:08:55 +01:00
terminx 441b0460aa Map SDL joystick device trackball input to mouse input
git-svn-id: https://svn.eduke32.com/eduke32@8367 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/sdlayer.cpp
2019-12-08 07:59:14 +01:00
terminx cbfb675577 Shitcan the few uses of the bool type in the VM after reading some things and dicking around on godbolt.org
git-svn-id: https://svn.eduke32.com/eduke32@8366 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/gameexec.cpp
#	source/duke3d/src/gameexec.h
2019-12-08 07:56:50 +01:00
Christoph Oelckers 8f90cc8324 - more Shadow Warrior cleanup. 2019-12-07 20:48:16 +01:00
Christoph Oelckers 0342b96335 - cleaned out the remaining wrappers from cache1d.h and use the file system directly instead. 2019-12-07 10:49:23 +01:00
Christoph Oelckers 30cbcb54b1 - renamed the remaining file system access wrappers in cache1d.h 2019-12-07 10:31:27 +01:00
Christoph Oelckers 749eda32c5 - moved kopenfilereader into the FileSystem class. 2019-12-07 10:14:51 +01:00
Christoph Oelckers 66756bfa13 - final fixes for Blood's and Duke Nukem's menus. 2019-12-06 18:36:49 +01:00
Christoph Oelckers 7a9138cde0 - made the confirmation screen functional.
This works but still needs a bit of visual work.
2019-12-05 23:17:55 +01:00
Christoph Oelckers db425a1228 - fixed keybinding and mouse cursor display.
- fixed some merge issues in Shadow Warrior.
2019-12-05 21:39:02 +01:00
Christoph Oelckers 54177cd27d - added the animated player display. 2019-12-05 19:52:46 +01:00
Christoph Oelckers 3ea526055f - added a generic message display, using ZDoom's code.
This is mainly meant for Nam and WW2GI which have an ugly-as-hell font for these texts.
2019-12-04 23:07:02 +01:00
Christoph Oelckers 6d04f0f159 - added option to print custom messages with Duke Nukem's quote system.
- hooked up all front ends with a generic message printing function so that common code can access the native message displays. This is needed for consolidation of some input actions which are mostly identical but print messages.
- preparations for a generic message system.
2019-12-04 21:35:35 +01:00
Christoph Oelckers b372cb5f35 - the primary Blood menus are working.
Now this was magnitudes easier than the EDuke menu - NBlood's menu is actually clean and usable code but still nothing compared to a unified menu system.
2019-12-01 15:31:08 +01:00
Christoph Oelckers aed05840ae - removed the mouseInactiveConditional interface function.
This was only a crutch to let the input interface work with the original menus.

Now that the one in Blood is gone, all the conditions are no longer relevant. (Shadow Warrior never got far enough to implement this)
2019-12-01 10:31:44 +01:00
Christoph Oelckers 8a98f9b3ca - removed quitevent.
This was some meticulously preserved relic of bad old DOS times used to block OS facilities to close an app.
Since this has been worked around at a lower level already the variable was essentially without function but some quite bad code depended on it.
2019-12-01 09:02:17 +01:00
Christoph Oelckers 2a9e4fca46 WIP safety commit 2019-11-30 19:23:54 +01:00
Christoph Oelckers 90c5ea6acc - updated option menu code to latest scripted version
This mainly means being able to use the generic font.
This also adds more generalization to the menu sound handling, plus an option to turn menu sound off. This is motivated by the pig sounds which RR uses in the menu.
2019-11-29 01:28:13 +01:00
Christoph Oelckers 0cedad6390 - started work on load/save menus. 2019-11-29 00:37:19 +01:00
Christoph Oelckers 59ebb10512 - fixed compilation and unhooked the Redneck Rampage menu so that it can be replaced. 2019-11-28 19:35:35 +01:00
Christoph Oelckers 115675417a Merge branch 'master' into powerslave 2019-11-28 17:07:11 +01:00
Christoph Oelckers 4e5f59a373 - Menu WIP
* implemented single image screens
* implemented skeleton of the image scroller
* added RR-specific definitions to the menus (need to copy and adjust d_menu.cpp)
* added definitions for credits screens.
2019-11-28 01:02:45 +01:00
Christoph Oelckers 723b210c95 - major work on savegame code
Not tested yet!

* Added a JSON-based header to the savegames so that the unified menu can read from a common data source.
* moved loading and saving of frontend independent data to the wrapper so that support is automatic.
2019-11-27 00:41:26 +01:00
Christoph Oelckers 3b7aa74c27 - connecting the dots in the menu. Duke Nukem can now start a level. 2019-11-26 23:20:54 +01:00
Christoph Oelckers 0f4d80b5d3 Merge branch 'master' into menu_for_real 2019-11-26 19:19:21 +01:00
hendricks266 348ccdfd5b Templatize the branchless negation method used for GV_FLAG_NEGATIVE
git-svn-id: https://svn.eduke32.com/eduke32@8312 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/compat.h
2019-11-26 18:09:00 +01:00
Christoph Oelckers 42b3d12630 - Ion Fury's main menu now looks correct. 2019-11-24 22:31:27 +01:00
Christoph Oelckers 52cfb7fb92 - completely disconnected the old menu from the rest of the game to allow rebuilding the new one.
Sadly this uncovered a few more places where script events are allowed too broad access to the game state.
2019-11-23 23:05:24 +01:00
Christoph Oelckers 326d0f5f76 - the new menu displays something. 2019-11-23 17:50:36 +01:00
Christoph Oelckers f2fc3fc2cb - WIP commit. 2019-11-23 12:38:38 +01:00
nukeykt 337dea13e6 Add FPS counter 2019-11-22 00:12:57 +01:00
Rachael Alexanderson 5002dd866c - fix compile on vs2017, change pow2char to static
- include nullptr check for mapname in music.cpp
2019-11-13 16:40:08 -05:00
Christoph Oelckers 74ed8fd1d9 - added GZDoom's statistics code
Not hooked up yet.
2019-11-12 22:00:33 +01:00
Christoph Oelckers 79561ace09 - use the precalculated or script-specified fade colors, if present. 2019-11-10 21:11:17 +01:00
Christoph Oelckers 21ac5e87b5 - added blend table translucency estimation instead of using a lame default.
- draw fullscreen blends below the console.
- moved all mouse event processing out of the SDL backend to D_PostEvent.
- removed all remaining code for dealing with mouse buttons directly.
2019-11-10 15:15:14 +01:00
Christoph Oelckers a1a9770b44 - reworked the FPS display to use ZDoom's fstat class to get rid of the microscopic font it used.
- changed time display for rendering to exclude VSync and playsim times to get more meaningful information.
2019-11-10 11:42:25 +01:00
Christoph Oelckers cae710bd59 - fixed alpha threshold.
Not only is this a deprecated feature - it also does not work right when complex lighting is at play, it must be done in the shader to get proper results.
2019-11-10 10:01:31 +01:00
Christoph Oelckers 39df3d0560 - added 'logfile' CCMD. 2019-11-09 22:27:33 +01:00
Christoph Oelckers 299f596afc - Changed EDuke menu to receive all settings storage locations as CVARs.
With this out of the way the only part that needs a real replacement immediately is the keybinds menu.
2019-11-09 19:15:03 +01:00
Christoph Oelckers fd4680c347 Merge commit '3061e3860cd212893e7d08a09223d4e9ad78b204' into Dear_ImGui 2019-11-09 13:42:59 +01:00
Christoph Oelckers 9aa275f996 - got rid of some editor-only code and the entire buildvfs header
Nearly all file write access now uses the FileWriter class, which is UTF-8-safe on all platforms - unlike stdio.
2019-11-08 02:02:54 +01:00
Christoph Oelckers 2d46827ecc font
- Dear ImGUI test.
2019-11-07 20:32:49 +01:00
Christoph Oelckers e4735fdff1 - dead code removal. 2019-11-07 00:49:19 +01:00
Christoph Oelckers 5d31119a49 - fixed the Shadow Warrior menu, but it doesn't do much good. The game appears to be thoroughly broken. 2019-11-06 19:22:14 +01:00
Christoph Oelckers e87642e197 - cleaned out the remains of the savegame compression hacks
This broke the savegame reader which still assumed it was working on compressed data. Everything will now take the uncompressed path.

In-stream optional compression is not a good idea anyway, this can and should be done better.

Also: Why  is the savegame format architecture dependent???
2019-11-06 01:01:16 +01:00
Christoph Oelckers 341ca9dd3a - removed the EDuke revision data and replaced it with Demolition's own. 2019-11-05 20:48:34 +01:00
Christoph Oelckers 3a0b8364f7 - removed the OSD entirely. 2019-11-05 20:31:30 +01:00
Christoph Oelckers 8321bc6208 - removed most of the old OSD's hooks. 2019-11-05 20:25:57 +01:00
Christoph Oelckers d943fe036d - added the ZDoom console and made all needed changes to get it compiled. 2019-11-05 19:57:48 +01:00
Christoph Oelckers e37cb782ca - fixed dependency problems with OSD definitions being used in another header. 2019-11-05 00:39:00 +01:00
Christoph Oelckers 1ee4efebb0 - fixed compilation. 2019-11-04 17:58:18 +01:00
Christoph Oelckers e7f4433df6 - consolidation of mouse code and obsolete code removal 2019-11-04 02:07:59 +01:00
Christoph Oelckers 0b6db7eede - cleanup of baselayer.cpp 2019-11-04 01:18:38 +01:00
Christoph Oelckers 29b7e1cf79 - moved all mouse button handling to the input state
Yet again an unbelievable piece of code working around how input works on modern systems to keep the old 90's code alive.
2019-11-04 01:01:54 +01:00
Christoph Oelckers b747df60ee - moved all keyboard related code into the InputState class, so that looking for this stuff is easier.
Sadly there's 1ß00 lines of code using this...
2019-11-04 00:53:55 +01:00
Christoph Oelckers 01d5d51f13 - pass key events to the event queue. 2019-11-03 22:46:01 +01:00
Christoph Oelckers 250fa0b847 - consolidation of exit and quit CCMDs. 2019-11-03 13:31:03 +01:00
Christoph Oelckers 3c7151810f - made the game interfaces classes instead of function pointer lists because that is far better at error catching.
- fixed: Blood's monster flag is a 'have_monsters', not 'nomonsters' flag. As a result none were spawned.
2019-11-03 12:32:58 +01:00
Christoph Oelckers e4ecc5d8df - some reshuffling on OSD code.
* moved the binding commands to osd.cpp. They were in the global namespace already and this way everything to be tossed out is in the same place when the time comes.
* removed support for the OSDs native CVARs. The only ones left were some internal ones I won't need until this code can be replaced.
* same for the custpmization code the games added. Duke Nukem was the only one anyway to have a decent font for it.
2019-11-02 14:25:35 +01:00
Christoph Oelckers 8fb54b51c3 - rewrote the screenshot code to use m_png as its backend.
Mainly to finally get rid of kplib. There's really no use to keep such code around if alternatives are already present.
2019-11-02 12:59:59 +01:00
Christoph Oelckers 1d7bfe14dc - removed kplib's compression code.
Its only use in savegames has already been disabled in favor of a format restructuring.
2019-11-02 11:29:23 +01:00
Christoph Oelckers ab28697c18 - undid the very pointless pow2char (de)optimization by substituting the real array with an empty struct containing an inlined [] operator.
I think this shows a fundamental misunderstanding of what constexpr means, even when declared as such it requires a constant argument to be treated as a constant.
But since nearly all uses of this were not using constants, the compiler was emitting actual memory accesses to the array each time this was used.
2019-11-02 10:45:41 +01:00
Christoph Oelckers fca3c2f5b5 - removed the directory scan code from compat.cpp.
It is only used by the user map menus which I had to disable already and on top of that is blissfully incapable of dealing with Unicode.
2019-11-02 10:39:31 +01:00
Christoph Oelckers c54ae1be83 - removed the remaining parts of cache1d. The only thing left is the dummy cacheAllocateBlock function that needs to stick around until a working cache is present.
- disabled the user maps menu because it is hopelessly dependent on functionality that cannot be fixed. Better wait until the menu refactor to do it right - it'd be a waste of time fixing the current menus.
2019-11-02 01:30:21 +01:00
Christoph Oelckers 1149b4f4aa - various fixes and improvements related to file location management:
* saving of demos and savegames no longer mindlessly writes to the mod directory. All such access is now being rerouted through the special paths interface so that the game data can reside in write protected locations.
* refactored all occurences of klistpath except fnlist_getnames.
* do not allow CON scripts to write to arbitrary files. This is a massive exploit and can be used to cause real damage if someone knows how to play this thing - it's far easier than people may think! It will now write any such data to a special section in the main config which is safe and cannot be manipulated to write to random locations on the hard drive.
2019-11-02 00:38:30 +01:00
Christoph Oelckers cfca8060ba - gutted cache1d. The old file system is gone, excepr for klistpath, which still gets used in a few places.
- consolidated the 3 identical S_OpenAudio implementations. The replacement code is disabled for the time being because it needs a rewrite. The replacement logic is uses is a bit too volatile.
- removed the old GRP scan code.
2019-11-01 22:17:15 +01:00
Christoph Oelckers 2d7c0e26d2 - cleanup of the old file system initialization.
The real fun part is yet to come, i.e. removing the remaining dependencies on the old file system code.
2019-11-01 19:25:42 +01:00
Christoph Oelckers 39bfd64fe9 - a bit more cleanup in app_init. 2019-11-01 08:24:10 +01:00
Christoph Oelckers 67acad3984 - startup cleanup. 2019-11-01 00:32:56 +01:00
Christoph Oelckers 57f879fa8b - moved the startup dialog out of the game front ends, now that there is a global cross-game list of playable configurations. 2019-10-31 23:25:21 +01:00
Christoph Oelckers c6753a3fec - tested and fixed game list loader. 2019-10-31 00:41:56 +01:00
Christoph Oelckers 2a7beeff69 - cleaned out some chunks of unused or useless code, most importantly the Build cache which was only used by the sound code for permanently loading the data into memory. 2019-10-30 21:51:04 +01:00
hendricks266 dcba445f4e SW: Fix file loading and init sequence
git-svn-id: https://svn.eduke32.com/eduke32@8269 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/common.cpp
#	source/duke3d/src/game.cpp
#	source/sw/src/common.cpp
#	source/sw/src/common_game.h
#	source/sw/src/game.cpp
#	source/sw/src/jnstub.cpp
2019-10-30 18:38:43 +01:00
hendricks266 797c79d4a5 Move registry reading to engine
git-svn-id: https://svn.eduke32.com/eduke32@8268 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/common.cpp
2019-10-30 18:27:40 +01:00
hendricks266 9b21fe0c28 Move VDF parsing to engine
git-svn-id: https://svn.eduke32.com/eduke32@8267 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/common.h
#	source/duke3d/src/common.cpp
2019-10-30 18:15:00 +01:00
Christoph Oelckers f8203ac766 - fixed the compile errors and consolidated the key binding CCMDs. 2019-10-28 06:47:49 +01:00
Christoph Oelckers e7f75cbf4d WIP 2019-10-28 01:12:31 +01:00
Christoph Oelckers c0d5ca8ab8 - Config work almost done.
The only thing still referencing the old config file is Shadow Warrior's config read function.
2019-10-27 13:40:24 +01:00
Christoph Oelckers 038c1ba4ba - more CVARs. 2019-10-27 09:53:09 +01:00
Christoph Oelckers 4b5ec2aabb - transitioned the combat macros to the new config and made them independent for all games, so that everything can use the original text. (But considering that they are a multiplayer feature I'm not sure how much that is worth.)
- sort the config output alphabetically.
- do not use [=] as key names for the bindings.
2019-10-27 08:14:58 +01:00
Christoph Oelckers 1e0d49f947 - game starts again. 2019-10-26 13:16:32 +02:00
Christoph Oelckers 1c29169492 -perform a proper exit, i.e. make sure that the deinit code can run, by throwing a special exception and actually catching it in the main function. 2019-10-26 10:30:08 +02:00
Christoph Oelckers 0d878a8604 - some needed cleanup on the control code before testing can start. 2019-10-26 10:16:39 +02:00
Christoph Oelckers 5cf5c74695 - let kopenFileReader have a look into demolition.pk3 if nothing else is found.
This should help as long as the old resource management is still in place.
2019-10-25 02:01:52 +02:00
Christoph Oelckers 8730ce552b - make things compile again.
Let's hope it still works...
2019-10-24 20:28:46 +02:00
nukeykt e6f53f7c30 Resolve merge issues
# Conflicts:
#	GNUmakefile
#	platform/Windows/eduke32.sln
#	platform/Windows/props/build_common.props
#	source/audiolib/include/music.h
#	source/blood/src/blood.cpp
#	source/blood/src/gui.cpp
#	source/blood/src/mapedit.cpp
#	source/blood/src/sound.cpp
#	source/build/include/vfs.h
#	source/build/src/vfs.cpp
2019-10-24 19:48:11 +02:00
Christoph Oelckers 20df360778 - converted the Polymost CVARs. 2019-10-23 21:11:37 +02:00
Szilárd Biró c419fae31b Fix compiling without OpenGL 2019-10-23 18:37:56 +02:00
Christoph Oelckers 63f020996e - a few more CVARs 2019-10-23 01:30:43 +02:00
Christoph Oelckers e5aa6c5df0 - refactored the HUD scaling into something manageable.
Blood was fine, albeit with an inverted scale, but the EDuke implementation was something very special - and not in a good way, using 4 CVARs to store the scaling state instead of one.
2019-10-22 23:31:46 +02:00
Christoph Oelckers 30e9eed1b3 - the next CVAR, cl_autoaim 2019-10-22 00:05:21 +02:00
Christoph Oelckers d3c2d8e96f - refactored file access in the movie player. 2019-10-20 22:48:21 +02:00
Christoph Oelckers 449a5a4717 - refactoring of palette loader. 2019-10-20 22:26:53 +02:00
Christoph Oelckers 6e7db1b63a - refactored file access in RR frontend's sound code. 2019-10-20 21:56:13 +02:00
Christoph Oelckers 2be5727137 - refactored all file reading in the savegame code to the FileReader interface.
In this case a different open function is used because this is normally files on the hard drive and not assets, so being able to have a different setup for finding them is important.
2019-10-20 21:04:55 +02:00
Christoph Oelckers 7cacb7203f - refactored all file access in SW frontend to use the FileReader variant and added a few utilities to avoid opening handles.
Because use of the handle API needs to be eliminated before a functioning resource management can be plugged in here.
2019-10-20 20:08:17 +02:00
Christoph Oelckers 75205ca69c - do not throw exceptions to exit without proper handling. 2019-10-20 11:28:16 +02:00
Christoph Oelckers 2316957026 - made things compile again after updating enet. Also removed the redundant dumb and game_music_emu libraries which just got imported by accident when using other things from GZDoom.
Note: enet uses 'malloc' and 'free' as field names in a struct - this does not work with any compiler using some sort of heap instrumentation that #defines these names!
This had to be changed to allow MSVC debug builds to compile again.
2019-10-20 09:16:01 +02:00
terminx 63713002b3 Swap out our old deprecated version of ENet for a single-file header-based fork, including features like IPv6 support
git-svn-id: https://svn.eduke32.com/eduke32@8175 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	GNUmakefile
#	libraries/enet/LICENSE
#	libraries/enet/callbacks.c
#	libraries/enet/compress.c
#	libraries/enet/enet/callbacks.h
#	libraries/enet/enet/enet.h
#	libraries/enet/enet/list.h
#	libraries/enet/enet/protocol.h
#	libraries/enet/enet/time.h
#	libraries/enet/enet/types.h
#	libraries/enet/enet/unix.h
#	libraries/enet/enet/utility.h
#	libraries/enet/enet/win32.h
#	libraries/enet/host.c
#	libraries/enet/list.c
#	libraries/enet/packet.c
#	libraries/enet/peer.c
#	libraries/enet/protocol.c
#	libraries/enet/unix.c
#	libraries/enet/win32.c
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
#	platform/Windows/eduke32.sln
#	platform/Windows/eduke32.vcxproj
#	source/duke3d/src/player.cpp
2019-10-20 08:43:36 +02:00
terminx 8b43ed5777 Rename timerUpdate() and timerGetRate() to timerUpdateClock() and timerGetClockRate(), because they both only apply to totalclock
git-svn-id: https://svn.eduke32.com/eduke32@8169 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/timer.cpp
#	source/build/src/winlayer.cpp
2019-10-20 08:31:26 +02:00
terminx 91fde580ce Use nanosleep instead of usleep
git-svn-id: https://svn.eduke32.com/eduke32@8168 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:29:25 +02:00
terminx 8e088f6659 Equivalent to jfbuild commit b6a666745cea21c6f8193b046bcdd0636fb7c166
git-svn-id: https://svn.eduke32.com/eduke32@8158 1a8010ca-5511-0410-912e-c29ae57300e0
2019-10-20 08:17:35 +02:00
terminx c86af959b9 Add optional duration parameter to idle()
git-svn-id: https://svn.eduke32.com/eduke32@8149 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/winlayer.h
2019-10-20 08:13:22 +02:00
Christoph Oelckers efcf447398 - moved newly added file to its proper place. 2019-10-20 07:51:35 +02:00
terminx 4dfae31900 Update xxHash to git commit cd0f5c22095c49c35104dca86620322801f14893
git-svn-id: https://svn.eduke32.com/eduke32@8142 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
2019-10-20 07:50:30 +02:00
Christoph Oelckers 7d2f61db2e - converted all boolean parameters of the shader into a single flag word.
- discarded the idea of transient palettes because the maintenance here stood in no relation to the savingd.
2019-10-19 22:46:37 +02:00
Christoph Oelckers 5fa879d5d1 - use texture clamping for skies, because these textures do not always wrap. 2019-10-19 19:29:59 +02:00
Christoph Oelckers cd7bbe35a8 - removed all legacy fog code. 2019-10-19 15:52:46 +02:00
Christoph Oelckers 00630f728f - fixed voxel rendering.
Still need to move the voxel textures into the texture manager but at least they render properly again.
2019-10-18 22:25:47 +02:00
Christoph Oelckers dab7c43f7c - fixed all compiler errors.
It mostly works again, but still has a few glitches.
2019-10-18 19:06:57 +02:00
Christoph Oelckers 23265ad213 - rework of texture management for models
Voxels yet to do.
This also removes the redundant texture matrix for the glow texture.
2019-10-18 14:04:32 +02:00
Christoph Oelckers 530a9944f7 - texture loader redone but not tested yet
Models are currently non-functional and need to reroute their texture handling to the global texture manager instead of handling everything themselves.

Voxels also need a bit of work to make their texture management more automated.
2019-10-18 11:37:07 +02:00
Christoph Oelckers 3da49ad20a - safety commit: all relevant code for the texturing system has been moved to texcache.cpp. 2019-10-17 21:44:34 +02:00
Christoph Oelckers bef8c9ae76 - hictinting cleanup.
This needs to be moved into the backend, and partially into the shader. So far this only removes the code from the main rendering logic, the final implementation is not done yet.
It had to go because it required the main rendering code to look deep into the texture data which would be a major blocker for refactoring.
2019-10-17 20:29:58 +02:00
Christoph Oelckers 1426ebec20 Moved hightile replacement data into the textures
Not tested yet!
2019-10-17 12:45:25 +02:00
Christoph Oelckers 4f8e0dd936 - cleaned up a few copyright notices and unified licenses 2019-10-17 09:42:11 +02:00
Christoph Oelckers 0aa5db7969 - project rework to shorten compile times.
* subprojects fpr game frontends added and unsigned char option put into global flags.
2019-10-16 23:09:02 +02:00
Christoph Oelckers 64e116a4b1 - use special classes with [] operators to redirect the frequently used global arrays to the newly implemented texture manager.
This allows to use the contained storage without changing all the code.
2019-10-16 20:39:59 +02:00
Christoph Oelckers 4dc69620b7 - cleanup 2019-10-15 23:56:29 +02:00
Christoph Oelckers 57c221644a - transitioned all texture options of the def file 2019-10-15 23:38:01 +02:00
Christoph Oelckers bb78db71bc - tileDelete / tileSetDummy 2019-10-15 23:29:47 +02:00
Christoph Oelckers 9a52e8039c - rerouted tileCreate and tileSetExternal calls. 2019-10-15 23:18:52 +02:00
Christoph Oelckers c3bc690e98 - more updating and bug in UpdatePicSize fixed. 2019-10-15 20:02:37 +02:00
Christoph Oelckers 0e165e40a3 - first batch of adjustments to the new tile management.
- consolidated Polymost precaching and removed precaching for static tiles because they now are always loaded.
- removed cache configurability. On modern systems this is relatively pointless - allocating 50 or 100 MB is a non-issue - and the cache is due for replacement anyway.
2019-10-15 00:54:14 +02:00
Christoph Oelckers 4b6f28e7c8 - hooked up the writable texture types. 2019-10-15 00:19:31 +02:00
Christoph Oelckers 039d948991 - update of new texture classes. 2019-10-14 23:11:01 +02:00
Christoph Oelckers a6ba81939a - reworked texture management, not yet active. 2019-10-12 22:49:46 +02:00
Christoph Oelckers fbc22e0125 - sanitized walock.
Sorry, but having a globally writable pointer to every texture is just insane and makes any functional management impossible.
This is merely a preparation for adding a real texture manager. That cannot be done if any code can write over the data at will. For that, it now has to make the texture writable first or create a writable empty texture.
2019-10-11 23:31:59 +02:00
Christoph Oelckers 3621aae3f0 - rerouted all write accesses to tilesiz and picsiz through a function interface.
These will have to do some texture management bookkeeping so directly changing the values is problematic.
This required changing the parameter interface in polymost.cpp because a few places hacked around with the global state to pass parameters to subfunctions.
2019-10-11 21:04:31 +02:00
Christoph Oelckers 14b21bab7a - merged playing_blood and bloodhack variables because they did the same thing.
The only difference was that bloodhack came from NBlood and playing_blood was added for unhandled differences between the backends of EDuke32 and NBlood.
2019-10-11 00:34:27 +02:00
Christoph Oelckers fbc7e626e9 - removed the fullbright render pass, because this is better set up as a shader option.
- also removed the legacy fog modes because their implementation did not mix well with the texture system - they are also not really useful to begin with.

The last fog mode will most likely also be removed once true color shading is working but that one is less of an issue.
2019-10-10 21:05:10 +02:00
Christoph Oelckers 1407c18f8b - cleaned out some remains of the non-indexed render path.
All of this will be redone in the backend.
2019-10-10 19:40:33 +02:00
Christoph Oelckers 46ffea94a4 - cleanup of gloadtile_art. 2019-10-10 19:30:05 +02:00
Christoph Oelckers 34b7759b7e - removed the non-indexed parts of gloadtile_art.
This won't be needed anymore.
2019-10-10 19:25:03 +02:00
Christoph Oelckers 1fee7a5f01 - cleanup of texture creation code.
There were several mostly pointless options complicating all of this.
2019-10-10 00:07:45 +02:00
Christoph Oelckers 93f9303c62 - minor reorganization of tiles. 2019-10-08 19:46:39 +02:00
Christoph Oelckers b1aaafb973 - abstracted uploadpalswap out of the game code.
This needs special setup on the renderer side that needs to be done in a more controlled fashion.
2019-10-06 19:47:31 +02:00
Christoph Oelckers ef2de97077 - the harmless changes of the failed refactoring of the shader. 2019-10-06 19:32:35 +02:00
Christoph Oelckers d1a7c4225d - added a texture class for ART-format hightiles.
This allows to treat them like all other image formats.
2019-10-05 23:44:28 +02:00
Christoph Oelckers 0dfe99356d - stripped most of the image processing code from kplib, because it's not needed anymore - and also not salvageable for any refactoring. 2019-10-05 22:32:32 +02:00
Christoph Oelckers 93ad83b380 - use GZDoom's texture backend to read hightile textures. (Hightile tinting code moved to the shader but isn't active yet.
- remove all code for faking gamma correction through palette manipulated images.
2019-10-05 21:59:03 +02:00
Christoph Oelckers bedfc262c4 - added a FileReader wrapper for kopen4load.
Needed when transitioning the hightile loader to GZDoom's texture loader.
2019-10-05 17:30:23 +02:00
Christoph Oelckers f99492d6d5 - removed OpenGL headers from non-backend files. 2019-10-05 13:57:26 +02:00
Christoph Oelckers 3c193bb243 - moved the animvpx shader to the backend code.
This removes the final access to OpenGL from the rest of the source, with the exception of the glFinish call in the swap code.
2019-10-05 13:38:02 +02:00
Christoph Oelckers 0ee80628a2 - moved documentation out of the Source folder and added surface shader sources. 2019-10-05 13:17:26 +02:00
Christoph Oelckers b83349fe6b - moved the surface shader to the backend and the shader source to the resource file. 2019-10-05 13:09:15 +02:00
Christoph Oelckers bd4e4834e3 - moved the main shader and its entire uniform maintenance into the backend. 2019-10-05 12:28:08 +02:00
Christoph Oelckers ae1e090716 - all non-shader related GL calls are gone from the main code base. 2019-10-04 21:13:04 +02:00
Christoph Oelckers 96c0c3197c - abstracted away more OpenGL calls, in particular all matrix access. 2019-10-04 18:12:03 +02:00
nukeykt 528e7f8320 More meaningful names for build object struct members 2019-09-30 20:31:11 +02:00
nukeykt 61b4fae6e0 Simplify voxel rotation handling
# Conflicts:
#	source/build/include/mdsprite.h
2019-09-30 20:31:09 +02:00
Christoph Oelckers 7fd395b5d7 - removed some legacy demo stuff from RedNukem backend. 2019-09-26 00:19:49 +02:00
Christoph Oelckers d12563f644 - got rid of klzw and the legacy demo code along with it. 2019-09-25 23:12:29 +02:00
Christoph Oelckers 0261fef4a8 - removed some unused files. 2019-09-25 23:00:10 +02:00
Christoph Oelckers 18b1ca287e - moved the platform specific files out of the Build folder, mainly to get them out of the way. 2019-09-25 22:43:06 +02:00
Christoph Oelckers cd920299d0 - moved winbits.cpp to the platform folder and cleaned out unused parts. 2019-09-25 22:38:47 +02:00
Christoph Oelckers 330c80246e - added ZDoom's FArgs class for easier command line checking. 2019-09-23 19:29:25 +02:00
nukeykt 895fb719d9 blooddemohack -> enginecompatibility_mode 2019-09-23 01:30:07 +02:00
Christoph Oelckers 2cbe211e7c - transitioned project to CMake and deleted most of the old build system.
The EDuke32 and RedNukem frontends are working, Blood isn't yet.

Notes:

many of the CMake variables and its output still refer to zdoom. Before changing that I wanted to make sure to be able to commit something that works.
support code for Windows XP has been entirely removed. On Windows this will only target Vista and up.
the crc32.h header had to be renamed to deconflict from zlib.
several Windows API calls were changed to call the A-versions directly. Weirdly enough there were places that defined their parameters as T types but in a non-working way.
removed some remaining editor files and support for the native software rendering only Windows backend.
in a few simple cases, replaced 'char' with 'uint8_t'. The code as-is depends on chars being unsigned which is non-portable. This needs to be carefully reviewed.
2019-09-22 23:15:46 +02:00
Christoph Oelckers 0d98e7f256 - put all Blood game code into a namespace. 2019-09-22 08:39:22 +02:00
Christoph Oelckers 55a879fcc0 - put EDuke frontend source into a namespace.
This commit does not work yet!
2019-09-21 22:53:00 +02:00
Christoph Oelckers 30c47a8511 - include namespace file in all sources as the very first include. 2019-09-21 20:59:54 +02:00
Christoph Oelckers 5050716bc0 - removed most extern "C" from the rest of the code base. 2019-09-21 20:14:34 +02:00
Christoph Oelckers a2b429ffe0 - removed unused declaration. 2019-09-21 13:16:02 +02:00
Christoph Oelckers 998ac01157 - manual merge of all NBlood changes that couldn't get cherry picked. 2019-09-21 13:02:17 +02:00
nukeykt 81f78c24b7 Implement rotate parameter for voxel definitions
# Conflicts:
#	source/build/include/build.h
#	source/build/include/mdsprite.h
#	source/build/src/defs.cpp
2019-09-21 11:43:50 +02:00
nukeykt 68c7b8c402 Compile fix
# Conflicts:
#	source/build/include/build.h
2019-09-21 10:38:26 +02:00
nukeykt 935084ae52 More hacks to emulate old clipping
# Conflicts:
#	source/build/src/clip.cpp
2019-09-21 10:28:10 +02:00
nukeykt 107a630883 Add TROR rendering
# Conflicts:
#	source/blood/src/mapedit.cpp
#	source/build/include/editor.h
#	source/build/include/polymer.h
#	source/build/src/build.cpp
#	source/build/src/polymer.cpp
2019-09-21 10:11:02 +02:00
nukeykt 1fe344d273 Free cstat bit 14
# Conflicts:
#	source/blood/src/mapedit.cpp
#	source/build/src/build.cpp
#	source/build/src/engine.cpp
#	source/duke3d/src/astub.cpp
2019-09-21 10:10:15 +02:00
nukeykt 858da4351c Semi-working map save 2019-09-21 10:08:04 +02:00
nukeykt 2867131c86 Add ability to load blood maps
# Conflicts:
#	platform/Windows/nmapedit.vcxproj
#	platform/Windows/nmapedit.vcxproj.filters
#	source/blood/src/mapedit.cpp
#	source/build/src/build.cpp
#	source/build/src/engine.cpp
2019-09-21 10:06:57 +02:00
nukeykt 8fd6e0e183 TROR related tweaks
# Conflicts:
#	source/blood/src/mirrors.cpp
2019-09-21 09:59:58 +02:00
terminx 3e4f2de79a Add yax_getzsofslope(), based on getzsofslope_player()
git-svn-id: https://svn.eduke32.com/eduke32@8109 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:23:17 +02:00
hendricks266 47fc547532 Avoid a truncation warning in compat.h
git-svn-id: https://svn.eduke32.com/eduke32@8095 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:20:23 +02:00
terminx aa8ce8d42a Fix USE_OPENGL=0 builds
git-svn-id: https://svn.eduke32.com/eduke32@8082 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 23:17:57 +02:00
Christoph Oelckers d0a49c3278 - moved 4 more. 2019-09-20 23:12:07 +02:00
Christoph Oelckers be29d3a2df - removed the remains of the polymer renderer.
This cannot be reused in its current form, maybe it can help later.
2019-09-20 22:37:24 +02:00
Christoph Oelckers 1b20e5d4da - 3 more files moved out of 'build' folder.
# Conflicts:
#	platform/Windows/build.vcxproj
2019-09-20 22:34:34 +02:00
Christoph Oelckers 977614dea8 - two more headers to move to Thirdparty. 2019-09-20 22:33:47 +02:00
Christoph Oelckers c9111a6c7a - one more.
# Conflicts:
#	platform/Windows/build.vcxproj.filters
2019-09-20 22:33:35 +02:00
Christoph Oelckers 0c6af775ad - got rid of editor.h.
# Conflicts:
#	source/build/include/editor.h
#	source/build/src/2d.cpp
#	source/build/src/softwarerenderer/engine_swr.cpp
2019-09-20 22:24:53 +02:00
Christoph Oelckers 46b4b6ffd4 - removed all editor related code from 2D.cpp.
# Conflicts:
#	source/build/include/build.h
#	source/build/src/2d.cpp
#	source/build/src/softwarerenderer/engine_swr.cpp
2019-09-20 22:24:03 +02:00
Christoph Oelckers ce260526cb - moved fix16 to thirdparty as well and removed the now unused assembly files.
# Conflicts:
#	platform/Windows/build.vcxproj
2019-09-20 22:21:31 +02:00
Christoph Oelckers f3d01e8244 - moved compression utilities to a 'thirdparty' folder to get them out of the way.
# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/props/build_common.props
2019-09-20 22:20:53 +02:00
Christoph Oelckers ba73268470 - removed GLES support and most related files.
My future plans do not include mobile support due tp poor support of modern APIs so this is essentially just baggage.

# Conflicts:
#	source/build/src/2d.cpp
#	source/build/src/dxtfilter.cpp
#	source/build/src/mdsprite.cpp
#	source/build/src/polymost.cpp
#	source/build/src/sdlayer.cpp
#	source/build/src/texcache.cpp
2019-09-20 22:16:21 +02:00
Christoph Oelckers 6299d2fe86 - removed all inline assembly crap.
Since no division function was handled here this is totally pointless on modern systems and will even on 32 bit cause performance degradation due to lack of optimizability.
The rest of that code in pragmas.h and pragmas.cpp should probably also be put under review. Much of it made sense 20 years ago but not anymore.
2019-09-20 22:10:35 +02:00
Christoph Oelckers b389c99bf5 - removed some SDL 1 parts. 2019-09-20 22:09:56 +02:00
Christoph Oelckers afe5128c70 - Blood fixes for changes in timer and mouse input interface- 2019-09-20 22:08:06 +02:00
terminx c835219de0 Align cache1d memory blocks to system page size
git-svn-id: https://svn.eduke32.com/eduke32@8072 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:43 +02:00
pogokeen b13c0f1b43 clockticks.hpp: Fix issue where higher precision comparisons would cause unexpected behaviour with game loop code due to ototalclock being incremented rather than set to totalclock (causing a lack of subtick precision and potential doubled up/dropped game updates).
Provide compareHighPrecision() for any code that needs higher precision comparisons.

git-svn-id: https://svn.eduke32.com/eduke32@8064 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:10:23 +02:00
terminx d0223fd744 Support fullscreening to the correct display in multiple monitor configurations
git-svn-id: https://svn.eduke32.com/eduke32@8063 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/baselayer.h
#	source/build/src/polymost.cpp
2019-09-20 21:10:22 +02:00
terminx f0ea646560 Fix SDL borderless windowed mode for real this time
Introduces r_borderless cvar. 0: never borderless, 1: always borderless, 2: borderless if resolution matches desktop resolution (default).

git-svn-id: https://svn.eduke32.com/eduke32@8060 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/baselayer.h
#	source/build/src/baselayer.cpp
#	source/build/src/polymost.cpp
2019-09-20 21:09:56 +02:00
terminx cef3c33e5f clockticks header fix
git-svn-id: https://svn.eduke32.com/eduke32@8056 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 21:09:17 +02:00
pogokeen 222e593437 Change some clocks to support sub-tick precision using a new class, ClockTicks.
Using that higher precision, interpolate at a higher granularity.
Further, truncate the target interpolation time to vertical blank boundaries to avoid producing temporal artifacts.
Fix issues caused by interpolation calculations being handled differently in multiple places (and fix cases where smoothratios were being thrown away only to be redone without checking all proper conditions).
Ensure ClockTicks changes do not break other targets (EKenBuild, VoidSW), but note any interpolation there is not similarly updated.

git-svn-id: https://svn.eduke32.com/eduke32@8050 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/sdlayer.cpp
2019-09-20 21:09:14 +02:00
terminx ec7fce9ff2 Ultra minor clipping stuff
git-svn-id: https://svn.eduke32.com/eduke32@8048 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 20:19:11 +02:00
Christoph Oelckers 20f5972b9b - fixed everything to compile again. 2019-09-20 19:37:29 +02:00
terminx 7ea2e4de54 Revert "This should be enough for SDL controller hotplug support but I haven't tested it"
git-svn-id: https://svn.eduke32.com/eduke32@8005 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:23 +02:00
terminx 7ec6a6beca This should be enough for SDL controller hotplug support but I haven't tested it
git-svn-id: https://svn.eduke32.com/eduke32@8003 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:12:19 +02:00
terminx c72a69ff6f This timing stuff actually works
It doesn't help when it turns out the compiler is broken and implementing std::chrono::high_resolution_clock as something that only counts in ms instead of properly aliasing it to std::chrono::steady_clock!

git-svn-id: https://svn.eduke32.com/eduke32@8002 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/sdlayer.cpp
2019-09-20 16:12:16 +02:00
hendricks266 1bbd251bff Rescan for controllers when toggling gamepads back on
git-svn-id: https://svn.eduke32.com/eduke32@7985 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:10:37 +02:00
terminx 04811f21f4 Replace separate timer implementations in SDL and Winlayer with a shared implementation based on std::chrono
git-svn-id: https://svn.eduke32.com/eduke32@7976 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	platform/Windows/build.vcxproj
#	platform/Windows/build.vcxproj.filters
#	source/build/src/mdsprite.cpp
2019-09-20 16:09:24 +02:00
hendricks266 3bfed33608 Add voxels option to menu, if at least one has been defined
git-svn-id: https://svn.eduke32.com/eduke32@7961 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/engine.cpp
2019-09-20 16:04:57 +02:00
hendricks266 01fa02e1c0 Make use of SDL2's Game Controller API.
Thanks to JonoF for his take on this.

git-svn-id: https://svn.eduke32.com/eduke32@7958 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:03:49 +02:00
terminx 41ff733fcd Happier try_facespr_intersect()
I'm prejudiced against 30-line functions with statements nested 5 levels deep.

git-svn-id: https://svn.eduke32.com/eduke32@7933 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 16:02:56 +02:00
terminx b8f668aa9b Polymost projection changes to correct the perspective in widescreen and ultrawide resolutions.
Patch from Nuke.YKT and Fox.

git-svn-id: https://svn.eduke32.com/eduke32@7916 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/polymost.cpp
2019-09-20 15:48:55 +02:00
terminx 40e54fdbbb Tweak how the semaphore used to detect multiple running copies of the game is utilized
git-svn-id: https://svn.eduke32.com/eduke32@7912 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:46:43 +02:00
terminx 064516c050 Re-implement our mutex_lock() family of functions using SDL's atomic spinlocks
git-svn-id: https://svn.eduke32.com/eduke32@7907 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:46:32 +02:00
terminx 9021b885d6 Eliminate pos_as_vec2 from anything that had it
git-svn-id: https://svn.eduke32.com/eduke32@7905 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:46:28 +02:00
terminx 95598e08f9 getwalldist() tweak
git-svn-id: https://svn.eduke32.com/eduke32@7878 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:34:14 +02:00
terminx 9f9a158946 Replace runtime pow2 calculations with pow2char LUT usage
I don't know that this is any faster, but there's something to be said for standardization and consistency. I will be making most of this stuff use bitmap_set/test/clear() soon.

git-svn-id: https://svn.eduke32.com/eduke32@7876 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:34:08 +02:00
terminx 1a0c56f0f1 This adds back in the engine's old automapping feature
This was removed a long time ago because Duke3D and Shadow Warrior don't use it.

git-svn-id: https://svn.eduke32.com/eduke32@7873 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
2019-09-20 15:32:13 +02:00
terminx c7e403619b Don't blow away wall cstat bit 14 for use as a temp flag in the editor
Patch from Nuke.YKT.

git-svn-id: https://svn.eduke32.com/eduke32@7870 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 15:29:35 +02:00
terminx 0652b5b6d6 Make ksgn() return int instead of int32_t
git-svn-id: https://svn.eduke32.com/eduke32@7864 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:09 +02:00
terminx 26272f6755 if 0 out our klabs() function and just define it as abs()
The compiler generates much better code for this now.

git-svn-id: https://svn.eduke32.com/eduke32@7863 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:06 +02:00
terminx 752cf77887 Untabify a couple of headers
git-svn-id: https://svn.eduke32.com/eduke32@7862 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:29:05 +02:00
terminx 6e4951bdb6 Another clipping fix
git-svn-id: https://svn.eduke32.com/eduke32@7857 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:28:53 +02:00
terminx 490b7249a2 Allow reading vec3_whatever_t as vec2 directly
It's a union in a struct in a union in a struct. Oh god, what have I done.

git-svn-id: https://svn.eduke32.com/eduke32@7830 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:28 +02:00
terminx df28860bad Add divscale64()
git-svn-id: https://svn.eduke32.com/eduke32@7826 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:18 +02:00
terminx dc0130625a Minor pushmove() cleanup
git-svn-id: https://svn.eduke32.com/eduke32@7825 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:15 +02:00
terminx 2482cddbb5 Add getcorrectzsofslope()
git-svn-id: https://svn.eduke32.com/eduke32@7822 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:23:08 +02:00
terminx e6b700cf9b Promote divisor argument to tabledivide64 to int64_t and replace a couple of 64-bit divides in rintersect() and inflineintersect()
git-svn-id: https://svn.eduke32.com/eduke32@7820 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 15:23:03 +02:00
hendricks266 e49e8f4cd6 Fix warnings in sjson
git-svn-id: https://svn.eduke32.com/eduke32@7813 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:45 +02:00
hendricks266 0cd74a6782 Add sjson to project
git-svn-id: https://svn.eduke32.com/eduke32@7812 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:43 +02:00
terminx 165b320f64 Amend r7805
'Murica.

git-svn-id: https://svn.eduke32.com/eduke32@7811 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:17:40 +02:00
pogokeen 3d63d1b720 Add updatesectorneighbour() and updatesectorneighbourz() and make them accessible to CON to allow searching for nearby neighbouring sectors from a known sector.
These updatesector counterparts are more performant for tasks that require determining whether nearby sectors exist at a point as they will not exhaustively search the map.
This also leads to more correct behaviour when sectors are disjoint, as queries will breadth-first search neighbouring sectors rather than risk accidentally stumbling first across accomodating disjoint sectors.

git-svn-id: https://svn.eduke32.com/eduke32@7805 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/build.h
2019-09-20 15:16:47 +02:00
hendricks266 d1b43acc06 Use std::numeric_limits instead of float.h
git-svn-id: https://svn.eduke32.com/eduke32@7799 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:14:23 +02:00
hendricks266 48b2cfef59 Fix compilation of linklist.h in C++11 mode with clang
git-svn-id: https://svn.eduke32.com/eduke32@7796 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 15:11:03 +02:00
pogokeen 1664310159 Support clamping in polymost1Frag.glsl and use it for sprites
git-svn-id: https://svn.eduke32.com/eduke32@7783 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/polymost1Frag.glsl
#	source/build/src/voxmodel.cpp
2019-09-20 15:10:02 +02:00
terminx 7e7f19b5fd Add tilehasmodelorvoxel() function and fix instances where voxels for multi-sided sprites would get flipped based on the viewing angle
git-svn-id: https://svn.eduke32.com/eduke32@7767 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:40 +02:00
terminx 7a6293ff42 Floating point grouscan() patch from Nuke.YKT, worth a couple of fps in classic mode in slope-heavy scenes
git-svn-id: https://svn.eduke32.com/eduke32@7755 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:36:08 +02:00
Christoph Oelckers 8de0fd35a1 - fixed compilation 2019-09-20 14:32:28 +02:00
pogokeen 2e75437262 If GL_ARB_clip_control & GL_ARB_depth_clamp are available, reflect that in glinfo
git-svn-id: https://svn.eduke32.com/eduke32@7753 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:18:33 +02:00
terminx f51b2a2cb3 Gump redux
git-svn-id: https://svn.eduke32.com/eduke32@7747 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 14:16:06 +02:00
terminx 3269875e7b Fix builds on platforms other than win32--oops
git-svn-id: https://svn.eduke32.com/eduke32@7746 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/compat.h
2019-09-20 14:16:03 +02:00
pogokeen 8cbdf3a0c4 Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.
Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.

git-svn-id: https://svn.eduke32.com/eduke32@7736 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/build.h
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
#	source/kenbuild/src/game.cpp
2019-09-20 14:04:29 +02:00
pogokeen 281ee3358b Add benchmarkmode cvar which allows putting demo cameras in the map which can be used for automatic benchmarking of performance & correctness testing
git-svn-id: https://svn.eduke32.com/eduke32@7729 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:32:24 +02:00
terminx b7f7c5fdc1 libdivide fixup
git-svn-id: https://svn.eduke32.com/eduke32@7725 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:17:34 +02:00
terminx 2ce96f67be Patch from Nuke.YKT to add support for the cstat flip bits to voxels in both software and Polymost
git-svn-id: https://svn.eduke32.com/eduke32@7723 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:17:29 +02:00
Christoph Oelckers 1c3487444c - some safety net. 2019-09-20 13:17:19 +02:00
terminx 1e0dd0e534 Templatized linked list functions
git-svn-id: https://svn.eduke32.com/eduke32@7720 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 13:08:34 +02:00
terminx 00222e05f6 Use remove_pointer_t instead of regular std::remove_pointer and add a definition for it for CXX11 builds
git-svn-id: https://svn.eduke32.com/eduke32@7719 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:46 +02:00
terminx 3130b51a96 Add SLOPTABLESIZ preprocessor definition
git-svn-id: https://svn.eduke32.com/eduke32@7718 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:42 +02:00
terminx d3f93fc00f EDuke32-specific libdivide customizations
git-svn-id: https://svn.eduke32.com/eduke32@7716 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:38 +02:00
terminx db7a2bd0db Update libdivide from git
git-svn-id: https://svn.eduke32.com/eduke32@7715 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:36 +02:00
terminx ff4449638e Use #if DEBUGGINGAIDS>=2 for the assertions in the structure trackers
git-svn-id: https://svn.eduke32.com/eduke32@7711 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:27 +02:00
terminx d2b3691e22 Remove FIXMATH_NO_64BIT
This codebase doesn't work on any platforms where int64_t isn't even a type.

git-svn-id: https://svn.eduke32.com/eduke32@7707 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:17 +02:00
terminx 7f32add116 It looks like this works in MSVC
git-svn-id: https://svn.eduke32.com/eduke32@7706 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:07:14 +02:00
terminx ccdba037b5 Added Xfree() function to accompany the Xmalloc() family of functions and change all uses of Bfree() to Xfree()
This was necessary because everything is already allocated with the Xmalloc() functions, but a future commit will make blocks allocated with those functions no longer compatible with the system implementation of free(), which Bfree() wraps.

git-svn-id: https://svn.eduke32.com/eduke32@7705 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/mdsprite.cpp
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
#	source/build/src/texcache.cpp
#	source/build/src/voxmodel.cpp
2019-09-20 12:07:10 +02:00
terminx dc62b986e8 Update miniz from 2.0.8 to 2.1.0--not much of a change
git-svn-id: https://svn.eduke32.com/eduke32@7703 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:02:41 +02:00
terminx 4ff7ec4a45 Minor pragmas.h cleanups
git-svn-id: https://svn.eduke32.com/eduke32@7700 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 12:02:33 +02:00
terminx 02ef02872a Replace manual casts of sprite and wall pointers to vec2/3_t with use of the anonymous union
git-svn-id: https://svn.eduke32.com/eduke32@7697 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
#	source/build/src/polymost.cpp
2019-09-20 12:02:26 +02:00
terminx 26a266dfe5 Rename STRUCT_TRACKERS_ENABLED preprocessor definition to USE_STRUCT_TRACKERS
This may also fix a minor performance regression introduced in Polymer sometime after we switched to building as C++, caused by confusion between STRUCT_TRACKERS_ENABLED and UNTRACKED_STRUCTS. UNTRACKED_STRUCTS is now named UNTRACT_STRUCTS__ to dissuade use outside of buildtypes.h.

git-svn-id: https://svn.eduke32.com/eduke32@7695 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymer.cpp
2019-09-20 12:01:36 +02:00
terminx 9d7e5d9970 Rename vec2s_t to vec2_16_t
git-svn-id: https://svn.eduke32.com/eduke32@7694 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-20 11:28:57 +02:00
Christoph Oelckers f8b17e98f3 - sadly this crap is really needed... :( 2019-09-20 11:26:37 +02:00
terminx bd80cec462 Add anonymous union between separate coordinate variables and vec2/3_t in basic map structs
git-svn-id: https://svn.eduke32.com/eduke32@7693 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/buildtypes.h
2019-09-20 10:42:09 +02:00
terminx 1a4afe09a8 Add missing ifdef
git-svn-id: https://svn.eduke32.com/eduke32@7692 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:15:21 +02:00
terminx 5be379c6b0 This benchmarks as just the tiniest bit faster on my machine
git-svn-id: https://svn.eduke32.com/eduke32@7691 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:15:19 +02:00
terminx 0556fe1738 Simplify map structure tracker overloads
Due to less branching, this is actually faster than trying to be clever.

git-svn-id: https://svn.eduke32.com/eduke32@7690 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:15:17 +02:00
pogokeen 9b621c0ef2 Add GL debugging event annotations for Polymost functions
git-svn-id: https://svn.eduke32.com/eduke32@7681 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/mdsprite.cpp
#	source/build/src/polymost.cpp
2019-09-20 10:14:12 +02:00
terminx b0a4b6a1ee Convert loops using unsigned integers as iterators to use regular signed ints instead
https://kristerw.blogspot.com/2016/02/how-undefined-signed-overflow-enables.html

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

git-svn-id: https://svn.eduke32.com/eduke32@7673 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
#	source/build/src/texcache.cpp
#	source/build/src/tilepacker.cpp
2019-09-20 10:04:24 +02:00
terminx 9aa1030a09 Promote `display_mirror` from char to int32_t and remove GAMEVAR_UINT8PTR handling since nothing else was using it
git-svn-id: https://svn.eduke32.com/eduke32@7662 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:01:31 +02:00
terminx 0becd69e91 Tweak EDUKE32_PRE_XALLOC thing used when DEBUGGINGAIDS is defined
git-svn-id: https://svn.eduke32.com/eduke32@7661 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:01:29 +02:00
terminx badf4eab6d Add EDUKE32_PREDICT_TRUE to our *alloc macros and flip the condition around so the true branch is first
git-svn-id: https://svn.eduke32.com/eduke32@7660 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:01:27 +02:00
terminx 6395909290 Add preprocessor check for __OPTIMIZE__ to EDUKE32_PREDICT_TRUE and EDUKE32_PREDICT_FALSE
git-svn-id: https://svn.eduke32.com/eduke32@7659 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 10:01:24 +02:00
terminx 0ff1188b59 Rename Gv_GetVarX() to Gv_GetVar() (overloaded)
git-svn-id: https://svn.eduke32.com/eduke32@7652 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-20 09:38:38 +02:00
terminx 3db7512c69 Templatize bfirst_search_init() and bfirst_search_try() so they can be used with types other than int16_t
git-svn-id: https://svn.eduke32.com/eduke32@7629 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/build.cpp
2019-09-20 09:20:14 +02:00
Christoph Oelckers 0254bf82d3 - added NBlood source. 2019-09-20 00:42:45 +02:00
Christoph Oelckers 8074d8251e - can be compiled again but crashes. 2019-09-19 23:02:57 +02:00
Christoph Oelckers 53335f20ec - Blood merge
# Conflicts:
#	source/build/include/polymost.h
#	source/build/src/build.cpp
#	source/build/src/engine.cpp
#	source/build/src/polymost.cpp
#	source/build/src/voxmodel.cpp
2019-09-19 22:06:49 +02:00
terminx be86eb779b This is a few less instructions
git-svn-id: https://svn.eduke32.com/eduke32@7618 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-19 15:00:57 +02:00
pogokeen 2765ebec87 Fix depth buffer issue causing translucent sprites to not render properly in Polymost.
Use polymost_spriteHasTranslucency() and polymost_maskWallHasTranslucency() to determine if a sprite has translucency.
Optimize sprite rendering when in Polymost by only sorting sprites with translucency.

git-svn-id: https://svn.eduke32.com/eduke32@7612 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/src/polymost.cpp
2019-09-19 14:56:47 +02:00
terminx 60ea578a8c Add support for returning the closest point in the sector to getsectordist()
git-svn-id: https://svn.eduke32.com/eduke32@7609 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-19 14:52:37 +02:00
terminx 8d85e8d934 Add new findwallbetweensectors() function and change sectoradjacent() to use it
git-svn-id: https://svn.eduke32.com/eduke32@7608 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-19 14:52:35 +02:00
terminx 301ac48ccd Utilize the types added in the previous commit
This patch is a bit large.

git-svn-id: https://svn.eduke32.com/eduke32@7603 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/build/include/mdsprite.h
#	source/build/src/build.cpp
#	source/build/src/polymer.cpp
#	source/build/src/polymost.cpp
#	source/build/src/voxmodel.cpp
2019-09-19 14:46:31 +02:00
terminx 5948513d76 Introduce a few "new" types for convenience when dealing with pointers to sprites, walls, and sectors that bypass the StructTracker stuff
git-svn-id: https://svn.eduke32.com/eduke32@7602 1a8010ca-5511-0410-912e-c29ae57300e0
2019-09-19 14:37:07 +02:00