Rednukem - r12053 - Built: Sun Dec 6 04:58:01 UTC 2020 --- commit 2b479767eedf1da36b44b7ac1f5452cbaa39ac9a Merge: 4c1273029 2b9da706b Author: Evan Ramos Date: Sat Dec 5 22:48:37 2020 -0600 Merge remote-tracking branch 'eduke32/master' commit 2b9da706bdd2bfb8b50e0a03222e7b837c5a16f0 Author: Evan Ramos Date: Sat Dec 5 22:36:13 2020 -0600 Link with -latomic on 32-bit ARM architectures commit 23f674084abec15be5f14a41d0502658e9af4ae0 Author: Evan Ramos Date: Sat Dec 5 22:22:27 2020 -0600 Revert "GNUmakefile: compile enet.cpp only if NETCODE!=0." This reverts commit f1aec344e4bc7706cc4c7bad465f08218009cd66. commit 42c62c58f85130dd9b12757b24dbbd666fc91b3b Author: Dino Bollinger Date: Sat Nov 28 11:31:10 2020 -0800 Locale: Replace std::string with a char* wrapper This avoids a bug which causes linking to fail for MinGW32 builds. Co-authored-by: Evan Ramos commit 6256d4bf708e9be815f16dffacb20271192ea638 Author: Dino Bollinger Date: Fri Nov 6 22:46:08 2020 +0100 Duke3D: Fix internal compiler errors when script buffer is resized. commit e310903754f03601bba0a0367ae8abaed234544c Author: gu3 Date: Wed Nov 4 14:32:05 2020 -0800 Enable more screen resolutions such as 1280x1024 commit 3df9e02a6089ee804c0891d9db98e577f1f38711 Author: Dino Bollinger Date: Mon Oct 26 12:40:41 2020 +0100 Mapster32: Fix artdump osd command commit c356f59237319e7605e7d23a9db9c0c866657d39 Author: Dino Bollinger Date: Mon Oct 26 11:50:14 2020 +0100 Mapster32: Fix reported number of deleted sprites with special func 2 commit 83a6addaeb3345f016c86817685166f8011c9ac8 Author: Richard C. Gobeille Date: Wed Oct 21 17:57:27 2020 -0700 Duke3d: address savegame crash issue commit 014a749702f8b737154cb172a0f302242848f770 Author: Dino Bollinger Date: Sat Oct 17 14:34:29 2020 +0200 Mapster32: Increase MAXQUOTES from 2048 to 16384 commit 382e9fb57c43209f1eca228ddfe9aae7dc2b17fe Author: Dino Bollinger Date: Sat Oct 3 19:15:35 2020 +0200 Duke3D: improve how labels are loaded into memory and introduce MAXLABELS limit Previous to this commit, the game would hijack the sprite, wall and sector arrays to store the label data temporarily, which would get copied into freshly allocated arrays once the scripts were fully parsed. This lead to the maximum number of labels depending on MAXSPRITES. This coupling is now removed, and an independent limit MAXLABELS has been introduced, which is currently set to 16384. Additionally, the limit is now checked before character data is loaded into memory, rather than afterwards, preventing out of bounds accesses. commit 48026d0fc798ca17c8f1f2d254710a9316998447 Author: Dino Bollinger Date: Tue Sep 22 20:57:46 2020 +0200 Duke3D: Only update previous boardfilename if differs commit 22c2334ccdaa85c500abd969263f53c163382f15 Author: Dino Bollinger Date: Tue Sep 22 20:37:39 2020 +0200 Amend commit 298d80a2 by restoring only per-map tiles from backup. No longer backup the walock, waloff and picsiz arrays as this caused problems elsewhere. Fixes terminx/eduke32#66 commit ead785f476171f7025879ffe7877b8b7c32e5d90 Author: Dino Bollinger Date: Tue Sep 22 21:41:59 2020 +0200 Mapster32: Fix picnum upper bound for special function 2 commit 188e14622cfe5c6f63b04b989b350bf2a29a893c Author: Richard C. Gobeille Date: Tue Sep 22 11:14:33 2020 -0700 Mapster32: limit 3d mode mouse sloping to left ctrl instead of both ctrl keys commit 778901d0b7384f39a422f9e5298b34c36ecb0fc8 Author: Philipp Kutin Date: Sat Sep 26 05:45:07 2020 +0200 duke32: in savegame.cpp, use Bstrncpyz() for copying from/to '_savehead::boardfn'. With 'RELEASE := 0', gcc (Raspbian 8.3.0-6+rpi1) 8.3.0 said: savegame.cpp: In function 'int32_t G_LoadPlayer(savebrief_t&)': savegame.cpp:655:12: warning: 'void* memcpy(void*, const void*, size_t)' offset [297, 328] from the object at 'h' is out of the bounds of referenced subobject '_savehead::boardfn' with type 'char [224]' at offset 72 [-Warray-bounds] Bmemcpy(boardfilename, h.boardfn, sizeof(boardfilename)); It also emits many warnings about possible truncation with (B)snprintf(), presumably based on computed upper bounds on the length of the input varargs. Also, resurrect static assert for post-commit-687000e2d9 situation and remove comment referencing a tag which was removed in commit bd3a933afc. commit e2ba35f2fa28d71e577f42ad8f63869b5e80c726 Author: Philipp Kutin Date: Sat Sep 26 05:11:33 2020 +0200 audiolib: in driver_adlib.cpp's macros LL_{AddToTail,Remove}(), use offsetof(). source/audiolib/src/driver_adlib.cpp:499:13: runtime error: member access within null pointer of type 'AdLibVoice' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior source/audiolib/src/driver_adlib.cpp:499:13 in commit f1aec344e4bc7706cc4c7bad465f08218009cd66 Author: Philipp Kutin Date: Sat Sep 26 04:04:36 2020 +0200 GNUmakefile: compile enet.cpp only if NETCODE!=0. Background: gcc (Raspbian 8.3.0-6+rpi1) 8.3.0 I'm getting a missing compiler-provided symbol: /usr/bin/ld: obj/build/enet.o: in function `enet_time_get': source/build/include/enet.h:4948: undefined reference to `__atomic_load_8' /usr/bin/ld: source/build/include/enet.h:4958: undefined reference to `__atomic_compare_exchange_8' collect2: error: ld returned 1 exit status so have a means of omitting the object file when it is not actually needed. commit 54883815c5ad3a0729f85189130af449cf7d04de Author: Dino Bollinger Date: Tue Sep 22 01:13:14 2020 +0200 Mapster32: Fix parsing hex literals commit 2cd7754fcb7a527e6b0f1e3429ab57117c92932b Author: Dino Bollinger Date: Sun Sep 20 17:43:30 2020 +0200 Duke3D: Make player[].weaprecs read/writeable again. commit 5facfef38b2acece4891d14628ced33fa5f8cef0 Author: Dino Bollinger Date: Sun Sep 20 19:10:54 2020 +0200 Duke3D: Fix setarraysequence by removing superfluous bounds check. The condition inside VM_Assert always returned false because `ResizeArray()` ensures that `sequenceSize == aGameArrays[arrayNum].size`. commit 9e775824361dca96856150d8931bb23c617b8b5a Author: Dino Bollinger Date: Sun Sep 20 13:50:11 2020 +0200 Duke3D: Fix out of bounds array accesses in newgamechoices code commit 93f62bbad960eb77e0afc38762c23900341b3d07 Author: Philipp Kutin Date: Mon Sep 7 18:25:20 2020 +0200 sdlayer.cpp: remove an '#ifndef __ANDROID__' block with only commented code in it. commit 64ea64d8e94076311d3d9e02d27f6f3e457c6ed8 Author: Philipp Kutin Date: Mon Sep 7 17:53:35 2020 +0200 sdlayer.cpp: don't print SDL_SetWindowGammaRamp() error if the function was not called. We may have gotten an error message like: videoSetGamma(): Failed loading udev_device_get_action: (...)/libSDL2-2.0.so.0: undefined symbol: _udev_device_get_action But: 1. The "error" in question did actually happen earlier in SDL, but is harmless because SDL first tries to load a symbol using 'dlsym(RTLD_DEFAULT, ...)' and failing that (as it happens in my case), from an explicitly loaded libudev (which succeeds). 2. The message misleads a user into thinking that it may have something to do with gamma adjustment having no effect. (As is the case for me.) commit c18af2a1130f181010629b21a661d82e14e80e88 Author: Philipp Kutin Date: Mon Sep 7 17:44:11 2020 +0200 build: update zpl.h for build and runtime fixes on 32-bit ARM. See: https://github.com/zpl-c/zpl/pull/44 https://github.com/zpl-c/zpl/issues/45 commit 7306a1e119c30fd7d24cbfbc50317809e42fd191 Author: Daniel Gurney Date: Sun Sep 6 14:38:12 2020 +0300 Disable microprofile on ARM64 Windows commit 156963ddce7130b643cb2ef94a7aafcdbbe2335b Author: nukeykt Date: Sat Aug 29 17:33:50 2020 +0900 Engine: experimental TROR rendering fixes commit a47a99b33baeaf76b7866a5303f6178dc476c432 Author: nukeykt Date: Sat Aug 29 03:28:22 2020 +0900 Engine: fix TROR rendering glitch in polymost when camera Z is outside of sector boundaries commit 2609d8cbfc0f7b4aedc7d9c8b6a02601540867cd Author: nukeykt Date: Wed Aug 26 13:07:09 2020 +0900 Engine: Check all TROR layers in collision code commit 546711155a415f40152f667422676478ffc6a066 Author: nukeykt Date: Wed Aug 26 15:13:28 2020 +0900 Polymost: fix editor sprite select in TROR sectors commit 175ae4cd59f3347136579cc571bea38e92fcedcf Author: Richard C. Gobeille Date: Sun Aug 23 17:48:10 2020 -0700 Duke3d: fix CON_GETPLAYER/CON_SETPLAYER access to palette member and loogiex/loogiey arrays commit 1a79d820dc2b025c3e01b307d77a131f97179ba6 Author: Richard C. Gobeille Date: Fri Aug 21 13:13:11 2020 -0700 engine: only bypass SDL_SetWindowGrab() for SDL 2.0.12 and lower commit b2a8d74e2465d0cba395f9060f51643b78518e22 Author: Richard C. Gobeille Date: Mon Aug 17 17:43:28 2020 -0700 Duke3d: rename "Widescreen" menu option to "Aspect ratio" commit 008bf9ecc40dbdfefb67a87e2347455d7e8c888e Author: Richard C. Gobeille Date: Sun Aug 16 16:39:14 2020 -0700 Duke3d: fix a couple bad comparisons of values against MAX_WEAPONS The first is something that was missed when the hardcoded World Tour stuff was added, and the second looks like it was just a typo. commit 320f53410d55d8bc121efdbf73a563e31349488f Author: Richard C. Gobeille Date: Sun Aug 16 16:36:59 2020 -0700 Duke3d: add SK_WEAPON_MASK macro, comprised of the four SK_WEAPON_BITS values commit 9507805338826fa4e24653cc956e446efbd53e0c Author: nukeykt Date: Sun Aug 23 20:46:36 2020 +0900 Polymost: bare bones editor check for models Fixes terminx/eduke32!40 commit 47afa9d5a2fe92df79baefad3de839a72dc5761f Author: nukeykt Date: Sun Aug 23 20:11:36 2020 +0900 Polymost: add invalid polygon check in editor mode commit f21351f06867b3d294f018992da63565687777b1 Author: Jordon Moss Date: Sun Aug 16 23:47:49 2020 -0300 mapster32/build: Make AlignWalls_ not a partially broken, cryptic mess. Correctly aligns textures of any size now. commit 4c1d40cc3864680a548f6ebf7de444e1aaa3f5e3 Author: Jordon Moss Date: Tue Aug 11 19:15:21 2020 -0300 engine: Implement tileflags member of picanm, and added support for new flag: TILEFLAGS_TRUENPOT, that allows you to enable true non-power-of-two texture support per-tile. (Fixes classic's buggy tiling and panning behaviour and bypasses the emulation of it in Polymost) commit 281d494394429558137329f131f76d164dee7ee1 Author: Jordon Moss Date: Tue Aug 11 19:10:25 2020 -0300 engine: Enable non-power-of-two wall support in classic renderer. (Doesn't do anything yet without either a new map format, or upcoming TILEFLAGS_TRUENPOT). commit 6165e34c44fb5dafab2bf7ff41e3a4321f18bfe6 Author: Richard C. Gobeille Date: Sat Jul 11 03:10:28 2020 -0700 engine: fixes for including compat.h in a C program built with MSVC I needed to change the weird VS workaround in order for the EDUKE32_STATIC_ASSERT on line 850 to succeed. Things seemed OK when I tested them, but I'd like more information on the suspected compiler bug in question and why this was necessary in the first place. commit 917da2e35ca43a569c4d1e10d609baf33468deaf Author: Richard C. Gobeille Date: Fri Jul 10 20:43:51 2020 -0700 engine and Duke3d: fix a bunch of direct calls to libc free() to call Bfree() instead commit 786869b14f1ed88b837204e1bfb6b1e340a151db Author: Richard C. Gobeille Date: Thu Jul 23 05:23:58 2020 -0700 engine: move osdstrings cleanup out of engineUnInit() and into OSD_Cleanup() commit bad080c04d76571f4db3322f22c116df7f20ea8b Author: Richard C. Gobeille Date: Fri Jul 10 14:08:24 2020 -0700 editor: artdump console command commit 2e77d96c630efe423df8000fb3f45d3cc86bcaf0 Author: Richard C. Gobeille Date: Fri Jul 10 13:02:01 2020 -0700 just a reference commit 0e3fb3d13886f370f1535f5fc904242ef7aeee7b Author: Richard C. Gobeille Date: Thu Jul 9 04:15:57 2020 -0700 Duke3d: reduce use of temporary variables in a few VM opcodes Also moves a bunch of VM_ASSERT statements up next to the variables they check. When this macro was first introduced, all of an instruction's operands needed to be read from the bytecode before aborting due to failure. Since this isn't the case anymore, all of the VM_ASSERTs can be moved up. commit d907aeeb7505402985768a2ddf122c8744fa4cf8 Author: Richard C. Gobeille Date: Thu Jul 9 03:12:25 2020 -0700 Duke3d: fix copy/paste error in CON_[GET/SET]PLAYER error message for a bad player index commit a7a71e30a897cbc78bc157317d2766e5928fdd47 Author: Richard C. Gobeille Date: Thu Jul 9 00:31:09 2020 -0700 Duke3d: split getactorvar/setactorvar instructions These are actually fairly commonly used, so I'm not sure why I bothered with having them the other way before. commit b63ad5319c8afb54afbd94ddb760b08cb118e078 Author: Richard C. Gobeille Date: Mon Jul 6 07:33:05 2020 -0700 Duke3d: remove INTERNAL ERROR messages from Gv_GetVarIndex() and Gv_GetArrayIndex() This is only ever used for refreshing pointers to certain special gamevars and for checking if variables in savegames exist in the currently running script--it doesn't need to print errors to the console. commit d7db07f35da2066813ef5337a7c3920bf77d8933 Author: Richard C. Gobeille Date: Mon Jul 6 07:25:17 2020 -0700 Duke3d: inline the array get/set functions commit 2a6a35bf467da51f304123a3053ae56367934552 Author: Richard C. Gobeille Date: Mon Jul 6 06:56:55 2020 -0700 Duke3d: get rid of separate check for common gamevar types before the switches in getvar__ and setvar__ It wasn't any faster. commit b3f7698565bbb1e9d46c8a98417d4be0048ed1c4 Author: Richard C. Gobeille Date: Mon Jul 6 05:04:47 2020 -0700 Duke3d: move bounds check out of SetArray() commit 45dbc0f2565b7ad876f9b23279da70297cc9cd20 Author: Richard C. Gobeille Date: Mon Jul 6 05:03:38 2020 -0700 Duke3d: #if 0 out weird runtime check for array writability in SetArray() commit 19e20197e5470416048ffc6264e8e67eb5605e1e Author: Richard C. Gobeille Date: Mon Jul 6 03:40:48 2020 -0700 Duke3d: optimize VM_GetStruct() I've heard several times that functions with a single exit point are faster, but profiling showed that removing the intermediate variable and returning directly from the switch wins here. commit d25fc0b53448cb1674fc1e201333fb7049e07063 Author: Richard C. Gobeille Date: Fri Jul 3 03:25:16 2020 -0700 Duke3d: rework PlayerLabels[] to use the LABEL_SETUP macro commit c398a6dd22975b8a24ce96de00b46d15172ea4e7 Author: Richard C. Gobeille Date: Tue Jun 30 23:47:50 2020 -0700 Duke3d: hook up MicroProfile counters to track the number of event executions Also lowers MICROPROFILE_MAX_COUNTERS to 256. commit de49453fd431a93daedf10eabc6f9c61121727e7 Author: Richard C. Gobeille Date: Tue Jun 30 17:33:25 2020 -0700 Duke3d: get rid of dynamic allocation for input_t inside playerdata_t At some point years ago I switched the input_t struct inside the player struct to use dynamic memory allocation for some reason. This changes that back--input_t is only 20 bytes and dynamically allocating it saves at most a couple hundred bytes of memory. Pointless. commit 7d38c5d65d8dbfcd776d5e6ce940647f67dedb5c Author: Richard C. Gobeille Date: Tue Jun 9 05:03:41 2020 -0700 Duke3d: more work on updated savegame format commit 15ef402cc6da027b375f9a51154123f0ab98d6be Author: Richard C. Gobeille Date: Mon Jun 8 16:18:59 2020 -0700 engine: update spriteext_t structure Like DukePlayer_t, I do not intend to modify this structure again in a way that breaks backwards compatibility, unless 100% absolutely necessary. commit 06d30fafbcac5fb3b3e9b0ea74bf2906cabc7567 Author: Richard C. Gobeille Date: Thu Jun 4 09:05:31 2020 -0700 Duke3d: optimize out millions of calls to getzrange commit 687000e2d9767b992dda76803737df1cd4dd4d55 Author: Richard C. Gobeille Date: Sun Apr 5 02:51:34 2020 -0700 Duke3d: savegame format update WIP