EDuke32-CSRefactor merge requestshttps://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests2024-01-03T05:38:57-08:00https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/12Added build task and debug settings for VS Code2024-01-03T05:38:57-08:00Martijn van AntwerpenAdded build task and debug settings for VS CodeWith this merge, the NetDuke32 project can be build and debugged from within Visual Studio Code for Windows.With this merge, the NetDuke32 project can be build and debugged from within Visual Studio Code for Windows.https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/9engine: fix crash on old GPUs that don't support GL sampler objects2023-08-12T04:32:41-07:00Martijn van Antwerpenengine: fix crash on old GPUs that don't support GL sampler objectsAdd fix for older and incompatible GPUs. With this fix, NetDuke32 will run on those computers as well.Add fix for older and incompatible GPUs. With this fix, NetDuke32 will run on those computers as well.https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/6Fix HUD frags count refresh with the software renderer if self-frags count ch...2023-03-02T12:12:35-08:00NY00123Fix HUD frags count refresh with the software renderer if self-frags count changesThe classic frag bar always showed the difference `ps->frag - ps->fraggedself`, while the status bar showed `max(ps->frag - ps->fraggedself, 0)`.
What was wrong was that the refreshes specific to software rendering were done based on th...The classic frag bar always showed the difference `ps->frag - ps->fraggedself`, while the status bar showed `max(ps->frag - ps->fraggedself, 0)`.
What was wrong was that the refreshes specific to software rendering were done based on the `ps->frag` value alone.
Another option is to always refresh the values (as done for the new frag list). Conditional refresh was obviously more important for 90s-era PCs.https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/11Menu fixes2023-11-24T03:27:29-08:00NY00123Menu fixesThis is a variation of https://voidpoint.io/terminx/eduke32/-/merge_requests/74, aiming to take care of mods defining a part of the skill names as empty strings. It is not a 100% identical set of changes, but the ones present should make...This is a variation of https://voidpoint.io/terminx/eduke32/-/merge_requests/74, aiming to take care of mods defining a part of the skill names as empty strings. It is not a 100% identical set of changes, but the ones present should make the code closer to what's currently in EDuke32.
As in the case of the EDuke32 MR, the Suburbs TC referenced there is also a good test case here.
For NetDuke32, I originally reproduced this in Speedtrax Racing. Since it was made to be run as a standalone game (requiring just executable files for DOS), I suggest to unpack into a separate directory and run NetDuke32 from there with the switch `-usecwd`. The game was designed for use without jumping or crouching, thus explaining the inclusion of a CFG file. I didn't see the same stated about strafing; Technically speaking, the included CFG lets you strafe with a mouse button.
https://dukeworld.com/classic%20dukeworld/tc/speedtrax/https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/4NetDuke32: 3rd person view camera reset fix for resetplayer command2023-02-24T07:01:07-08:00NY00123NetDuke32: 3rd person view camera reset fix for resetplayer commandRight now, as in DOS v1.5, if you use 3rd person view while another player respawns, the g_cameraDistance and g_cameraClock variables will mistakenly be reset for your view.
The fix was backported from EDuke32 and is also in Rednukem's ...Right now, as in DOS v1.5, if you use 3rd person view while another player respawns, the g_cameraDistance and g_cameraClock variables will mistakenly be reset for your view.
The fix was backported from EDuke32 and is also in Rednukem's sources. I wasn't sure if it's better to compare to `screenpeek` instead, but 3rd person view doesn't seem to work in coop view, either way.https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/7NetDuke32: Add valid_sprite check before dereferencing PN(spriteNum)2023-03-03T06:42:04-08:00NY00123NetDuke32: Add valid_sprite check before dereferencing PN(spriteNum)This leaded to program abort while using a sanitizer-enabled debug build, not more than 15-20 seconds into E1L1.
As far as I can tell, a deliberate call to this function with sprite number -1 is unique to NetDuke32, and was introduced i...This leaded to program abort while using a sanitizer-enabled debug build, not more than 15-20 seconds into E1L1.
As far as I can tell, a deliberate call to this function with sprite number -1 is unique to NetDuke32, and was introduced in 12dadfd5d4f41e96eb4685353b6992849fe6a7e6. The `valid_sprite` check does not exist in EDuke32.
I used a gcc build based on 9.4.0, and made a RELEASE=0 build. I applied these local changes to Common.mak in order to take advantage of sanitizers:
```
diff --git a/Common.mak b/Common.mak
index 4e7896edf..d1c43be74 100644
--- a/Common.mak
+++ b/Common.mak
@@ -623,7 +623,8 @@ endif
# for a list of possible ASan and UBsan options.
ASAN_FLAGS := -fsanitize=address -fsanitize=bounds,enum,float-cast-overflow
-ASAN_FLAGS := $(ASAN_FLAGS),signed-integer-overflow,unsigned-integer-overflow
+ASAN_FLAGS := $(ASAN_FLAGS),signed-integer-overflow
+#ASAN_FLAGS := $(ASAN_FLAGS),signed-integer-overflow,unsigned-integer-overflow
ASAN_FLAGS := $(ASAN_FLAGS),undefined,return,null,pointer-overflow,float-divide-by-zero
#ASAN_FLAGS := $(ASAN_FLAGS) -fsanitize-undefined-trap-on-error
@@ -634,10 +635,11 @@ else
ifneq (0,$(CLANG))
COMMONFLAGS += $(ASAN_FLAGS)
- else ifneq (,$(filter 1 2 3 4 5 6,$(GCC_MAJOR)))
- ifneq (,$(filter 0 1,$(GCC_MINOR)))
+ else
+# else ifneq (,$(filter 1 2 3 4 5 6,$(GCC_MAJOR)))
+# ifneq (,$(filter 0 1,$(GCC_MINOR)))
COMMONFLAGS += $(ASAN_FLAGS)
- endif
+# endif
endif
endif
```https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/8NetDuke3D: Adapt EDuke32 commit 7b83289542d69f28addd781196d3764e94f5919c2023-06-02T04:54:41-07:00NY00123NetDuke3D: Adapt EDuke32 commit 7b83289542d69f28addd781196d3764e94f5919cNote that commit 7b83289542d69f28addd781196d3764e94f5919c itself is currently not in netduke32_main; This requires a separate merge from mainline EDuke32.Note that commit 7b83289542d69f28addd781196d3764e94f5919c itself is currently not in netduke32_main; This requires a separate merge from mainline EDuke32.https://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/10Prevent second call to Net_SendQuit from app_crashhandler if crash happens wi...2023-08-09T08:49:12-07:00Martijn van AntwerpenPrevent second call to Net_SendQuit from app_crashhandler if crash happens within Net_SendQuitThis will fix a endless loop if the crash is occurring within Net_SendQuitThis will fix a endless loop if the crash is occurring within Net_SendQuithttps://voidpoint.io/StrikerTheHedgefox/eduke32-csrefactor/-/merge_requests/5Widen StrikerDM styled fraglist a bit2023-02-26T22:33:27-08:00NY00123Widen StrikerDM styled fraglist a bitA use-case for this has been found in TeamDUKE's Flag-Tag mode. Each player's score is initially set to a positive value, and the goal is to be the first player to reach the score of 0. This can be done by carrying the flag.
By default,...A use-case for this has been found in TeamDUKE's Flag-Tag mode. Each player's score is initially set to a positive value, and the goal is to be the first player to reach the score of 0. This can be done by carrying the flag.
By default, the initial score is 150. If a nickname is 10 characters long then it'll overflow in the compat fragbar, but not in the classic one. Since the mod was originally made for EDuke 2.0, I think this fix is good in idea.
Classic frag bar:
![duke0001](/uploads/51f33952675ecd4f6719eb059c70ae6c/duke0001.png)
Compat frag list in its current state:
![duke0002](/uploads/4cd7bc4914a9060d4f061901ab819b10/duke0002.png)
Compat frag list after patching:
![duke0003](/uploads/a7de9afcc51de18a5f39197ea666d8a3/duke0003.png)