EDuke32 issueshttps://voidpoint.io/terminx/eduke32/-/issues2024-03-15T08:35:16-07:00https://voidpoint.io/terminx/eduke32/-/issues/301Stability issues when playing on raspberry pi 42024-03-15T08:35:16-07:00Corey BruceStability issues when playing on raspberry pi 4Hey just want to report some stability issues when using the Raspberry pi 4, regardless if I use software or OpenGL if I resize or maximize the window the game will crash.
I am using Manjaro Arm64Hey just want to report some stability issues when using the Raspberry pi 4, regardless if I use software or OpenGL if I resize or maximize the window the game will crash.
I am using Manjaro Arm64https://voidpoint.io/terminx/eduke32/-/issues/300Mod's GAME.CON won't load if mod started from command line with -j parameter2024-03-05T10:05:58-08:00Oleg GMod's GAME.CON won't load if mod started from command line with -j parameter- Put EDuke32 into a separate directory
- Download this mod as an example https://github.com/fgsfds/Liquidator-3D/releases/tag/1.4 and put it in another directory
- Start game with the following command `.\eduke32.exe -g "path\to\liquida...- Put EDuke32 into a separate directory
- Download this mod as an example https://github.com/fgsfds/Liquidator-3D/releases/tag/1.4 and put it in another directory
- Start game with the following command `.\eduke32.exe -g "path\to\liquidator.zip" -j "path\to\duke3d\install"`
Expected: GAME.CON from liquidator.zip is loaded, custom campaigns present in the main menu
Actual: original Duke's GAME.CON is loaded, new sounds/textures from liquidator.zip are used, but the campaigns are from Duke
If you start the game with `.\eduke32.exe -g "path\to\liquidator.zip"` it works finehttps://voidpoint.io/terminx/eduke32/-/issues/299Crash from startup window if no GRP is found2024-01-19T03:57:45-08:00NY00123Crash from startup window if no GRP is foundAs far as I can tell, this holds to Windows and GTK altogether, and was introduced in fec7d30e6929e99cef7aad47d2c6d75b65dfaf59.
A partial fix for the GTK startup window was accepted from https://voidpoint.io/terminx/eduke32/-/merge_requ...As far as I can tell, this holds to Windows and GTK altogether, and was introduced in fec7d30e6929e99cef7aad47d2c6d75b65dfaf59.
A partial fix for the GTK startup window was accepted from https://voidpoint.io/terminx/eduke32/-/merge_requests/326, but I still got crashes with the last revision (manual Linux build + Windows auto-build).
To reproduce, you can start EDuke32 with `-usecwd` from a directory with a standalone game that doesn't use any grp or equivalent file.https://voidpoint.io/terminx/eduke32/-/issues/298-nosetup parameter doesn't work2024-01-10T02:00:01-08:00Oleg G-nosetup parameter doesn't work- `eduke32.exe` with `-nosetup` parameter
- Launcher still shows
![Screenshot_2024-01-10_145836](/uploads/97aa25c65062906a76003ede219dcc84/Screenshot_2024-01-10_145836.png)`- `eduke32.exe` with `-nosetup` parameter
- Launcher still shows
![Screenshot_2024-01-10_145836](/uploads/97aa25c65062906a76003ede219dcc84/Screenshot_2024-01-10_145836.png)`https://voidpoint.io/terminx/eduke32/-/issues/297-addon command line parameter doesn't work2024-01-08T22:05:27-08:00Oleg G-addon command line parameter doesn't work- put eduke32 into a game folder
- start it with `.\eduke32.exe -addon (1/2/3)` command
`-addon 2` starts Nuclear Winter as expected, but `-addon 1` and `-addon 3` don't start DC and Caribbean. Both work fine when started from the launc...- put eduke32 into a game folder
- start it with `.\eduke32.exe -addon (1/2/3)` command
`-addon 2` starts Nuclear Winter as expected, but `-addon 1` and `-addon 3` don't start DC and Caribbean. Both work fine when started from the launcher.https://voidpoint.io/terminx/eduke32/-/issues/296Xcode project doesn't compile (no updates in 3 years) (re: Polymost renderer ...2023-12-19T06:52:07-08:00John KlimekXcode project doesn't compile (no updates in 3 years) (re: Polymost renderer on macOS)The included macOS Xcode project (https://voidpoint.io/terminx/eduke32/-/blob/2c26af2ede904cc115db5d18420085f08e6c4d83/platform/Apple/EDuke32.xcodeproj/project.pbxproj) hasn't been updated in 3 years and doesn't compile.
Can somebody up...The included macOS Xcode project (https://voidpoint.io/terminx/eduke32/-/blob/2c26af2ede904cc115db5d18420085f08e6c4d83/platform/Apple/EDuke32.xcodeproj/project.pbxproj) hasn't been updated in 3 years and doesn't compile.
Can somebody update it so it compiles using modern Xcode?
The project does compile on macOS using Make and GCC, but I'm hoping to try implementing [MoltenGL](https://moltengl.com) so that the Polymost renderer can work on macOS. (currently it works but is _incredibly_ slow even on an M3 Max processor). I'm not sure if this is a solution, but MoltenGL translates OpenGL ES to Metal so I thought it might be a solution.
I don't know much about compilation on macOS, but MoltenGL includes instructions that require Xcode it seems.
If anybody has any other ideas to get Polymost working on macOS please let me know.https://voidpoint.io/terminx/eduke32/-/issues/294Suppression of repeat console CON warnings2023-11-09T05:36:20-08:00Michelle SleeperSuppression of repeat console CON warningsRequesting some sort of suppression of repeated console messages, which in worse case scenarios, can significantly slowdown and/or lock up the engine entirely due to excessive read/writes to the log. For example, see this post containing...Requesting some sort of suppression of repeated console messages, which in worse case scenarios, can significantly slowdown and/or lock up the engine entirely due to excessive read/writes to the log. For example, see this post containing an error log:
https://forums.duke4.net/topic/7640-release-eduke32-addon-compilation/page__view__findpost__p__379933
This mod's CON script attempts to play a sound that is missing once every gametic per instance of the actor. This caused almost 500,000 lines of the same error in less than 30 seconds.
Obviously the real solution here is to fix the scripting error that's causing the problem. However, in the past the engine did not report (or at least, did not log to disk) these kind or volume of error messaging, so legacy mods, that have long since been released and are no longer supported, and that "worked" previously, are now unplayable. This is not the first instance of this kind of CON error logging causing significant performance issues seen in this thread.https://voidpoint.io/terminx/eduke32/-/issues/293(Potential buffer over-read) Ensure the string g_player[i].wchoice is properl...2023-11-01T15:27:57-07:00NY00123(Potential buffer over-read) Ensure the string g_player[i].wchoice is properly formatted.This was originally reproduced as a crash in NetDuke32, but may potentially be a problem in EDuke32 as well.
I don't know the exact cause of having wchoice set as described here - could be a random cfg corruption of a known kind - but I...This was originally reproduced as a crash in NetDuke32, but may potentially be a problem in EDuke32 as well.
I don't know the exact cause of having wchoice set as described here - could be a random cfg corruption of a known kind - but I had wchoice set to the string "secwd22221" for NetDuke32. EDuke32 also allows this, including a change from the console.
Within `P_CheckWeapon`, this can lead to a buffer over-read (or at least, integer shift count overflow). It's possible this was manifested as a crash in NetDuke32 due to the `gotweapon` field still being an array, but even with EDuke32's form, this might be a problem.https://voidpoint.io/terminx/eduke32/-/issues/292Engine: Autosaves keep saving over the same slot2023-10-07T07:53:29-07:00Dino Bollingerdino.bollinger@gmail.comEngine: Autosaves keep saving over the same slotThis is a problem that's commonly observed in the Bike Race maps in Aftershock.
Despite specifying e.g. 5 available autosave slots, the game keeps saving over the same one, instead of cycling through them properly.This is a problem that's commonly observed in the Bike Race maps in Aftershock.
Despite specifying e.g. 5 available autosave slots, the game keeps saving over the same one, instead of cycling through them properly.https://voidpoint.io/terminx/eduke32/-/issues/291Timeframe for new code used in Ion Fury to show up in the eduke32 repo?2024-01-18T09:12:11-08:00eisnerguy1Timeframe for new code used in Ion Fury to show up in the eduke32 repo?I'm wondering how long it usually takes for code used in new versions of Ion Fury, like [3\.0.02](https://steamcommunity.com/app/562860/discussions/0/3886101131583442440/), to show up in the eduke32 repo?
![Screen Shot 2023-10-04 at 8.1...I'm wondering how long it usually takes for code used in new versions of Ion Fury, like [3\.0.02](https://steamcommunity.com/app/562860/discussions/0/3886101131583442440/), to show up in the eduke32 repo?
![Screen Shot 2023-10-04 at 8.17.26 PM copy.png](/uploads/1f541c43345cf4dca35521605bf70298/Screen_Shot_2023-10-04_at_8.17.26_PM_copy.png){width=666 height=74}
I don't see any commit that has 2bd99eb00 in the commit hash at all. I wanted to make sure my compiled eduke32 matched the official commit used in the newest version of Ion Fury. Thanks! :thumbsup:https://voidpoint.io/terminx/eduke32/-/issues/290Unable to compile on macOS 12.6.8 Intel2023-10-03T16:14:17-07:00eisnerguy1Unable to compile on macOS 12.6.8 IntelI'm trying to compile the [latest fury commit](https://voidpoint.io/terminx/eduke32/-/tree/c42e09ac0d832a38e3d5f91b777dc0220ec5243c) on macOS 12.6.8 Intel. It errors out at this point:
```plaintext
Built object obj/imgui/imgui_impl_open...I'm trying to compile the [latest fury commit](https://voidpoint.io/terminx/eduke32/-/tree/c42e09ac0d832a38e3d5f91b777dc0220ec5243c) on macOS 12.6.8 Intel. It errors out at this point:
```plaintext
Built object obj/imgui/imgui_impl_opengl3.o
Built object obj/imgui/imgui_impl_sdl2.o
Built object obj/imgui/imgui_tables.o
Built object obj/imgui/imgui_widgets.o
Built object obj/glad/glad.o
clang: warning: argument unused during compilation: '-no-pie' [-Wunused-command-line-argument]
ld: unknown option: -Bstatic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Failed linking fury!
If the build options, environment, or system packages have changed, run 'make clean' and try again.
make: *** [fury] Error 1
```
I've attached the full command line output if that helps at all
[eduke32_fury_c42e09ac_output.txt](/uploads/a5533b6f12b12e948bfb5475b78ed5d8/eduke32_fury_c42e09ac_output.txt)
I feel like I'm missing something super obvious here. Any help at all would be greatly appreciated.https://voidpoint.io/terminx/eduke32/-/issues/289Allow changing localtion of the logfiles (eduke32.log, mapster32.log)2023-10-03T22:36:05-07:00Ignacio TarantoAllow changing localtion of the logfiles (eduke32.log, mapster32.log)Currently, EDuke32 creates `eduke32.log` file in the *current working directory* from where the `eduke32` executable is run.
For example, in Linux, if I use the `.desktop` launcher, the `eduke32.log` file gets created in my home directo...Currently, EDuke32 creates `eduke32.log` file in the *current working directory* from where the `eduke32` executable is run.
For example, in Linux, if I use the `.desktop` launcher, the `eduke32.log` file gets created in my home directory.
But if I change the directory to somewhere else, for example, `cd /tmp` and then I run `eduke32` (from the terminal), then the file is created in `/tmp` instead.
I would like to have more control over where this log file is created.
I read the docs but I couldn't find any way to change this behavior, either through the config file or environment variables.
Thanks.https://voidpoint.io/terminx/eduke32/-/issues/288Plans to add Vulkan support?2023-09-19T13:07:54-07:00John KlimekPlans to add Vulkan support?Are there any plans to Vulkan support in addition to OpenGL?Are there any plans to Vulkan support in addition to OpenGL?https://voidpoint.io/terminx/eduke32/-/issues/287save/load cycle changes boardfilename2023-09-18T00:21:03-07:00Dezolatorsave/load cycle changes boardfilenameWhen I start new game via game menu, lets say 'L.A.MELTDOWN' episode, boardfilename[0]=='\0'. After I save and load game 'boardfilename' becomes "/E1L1.map"
I think that this may be result of 5e55626963681c363131fe5df8f7533fee2b9a21 and...When I start new game via game menu, lets say 'L.A.MELTDOWN' episode, boardfilename[0]=='\0'. After I save and load game 'boardfilename' becomes "/E1L1.map"
I think that this may be result of 5e55626963681c363131fe5df8f7533fee2b9a21 and subsequent commits, and I consider this behavior undesirable. 'boardfilename' is used in various tests for example in 'G_HaveUserMap'.
This can cause certain mods that contain more than 7 levels in first episode (Blast Radius) to end prematurely, because engine, based on if level was loaded from savefile or not, evaluates that user map, instead of episode is being played.Dino Bollingerdino.bollinger@gmail.comDino Bollingerdino.bollinger@gmail.comhttps://voidpoint.io/terminx/eduke32/-/issues/286Unable to compile on macOS (arm64; Apple Silicon)2023-12-22T21:14:54-08:00John KlimekUnable to compile on macOS (arm64; Apple Silicon)I'm trying to compile on macOS (arm64; Apple Silicon) and it compiles most of the code successfully but then it errors on loguru.cpp:
```
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/Com...I'm trying to compile on macOS (arm64; Apple Silicon) and it compiles most of the code successfully but then it errors on loguru.cpp:
```
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:888:21: error: too many arguments provided to function-like macro invocation
isalpha(_CharT __c, const locale& __loc)
^
source/build/include/compat.h:769:11: note: macro 'isalpha' defined here
# define isalpha(ch) ({ int32_t c__dontuse2_=ch; (c__dontuse2_>='A' && c__dontuse2_<='Z') || (c__dontuse2_>='a' && c__dontuse2_<='z'); })
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:888:1: error: declaration conflicts with target of using declaration already in scope
isalpha(_CharT __c, const locale& __loc)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_ctype.h:218:1: note: target of using declaration
isalpha(int _c)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cctype:113:9: note: using declaration
using ::isalpha _LIBCPP_USING_IF_EXISTS;
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:890:5: error: expected expression
return std::use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:891:2: error: expected ';' at end of declaration
}
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:896:21: error: too many arguments provided to function-like macro invocation
isdigit(_CharT __c, const locale& __loc)
^
source/build/include/compat.h:768:11: note: macro 'isdigit' defined here
# define isdigit(ch) ({ int32_t c__dontuse_=ch; c__dontuse_>='0' && c__dontuse_<='9'; })
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:896:1: error: declaration conflicts with target of using declaration already in scope
isdigit(_CharT __c, const locale& __loc)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_ctype.h:237:1: note: target of using declaration
isdigit(int _c)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cctype:116:9: note: using declaration
using ::isdigit _LIBCPP_USING_IF_EXISTS;
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:898:5: error: expected expression
return std::use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:899:2: error: expected ';' at end of declaration
}
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:920:21: error: too many arguments provided to function-like macro invocation
isalnum(_CharT __c, const locale& __loc)
^
source/build/include/compat.h:770:11: note: macro 'isalnum' defined here
# define isalnum(ch2) ({ int32_t c2__dontuse_=ch2; isalpha(c2__dontuse_) || isdigit(c2__dontuse_); })
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:920:1: error: declaration conflicts with target of using declaration already in scope
isalnum(_CharT __c, const locale& __loc)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_ctype.h:212:1: note: target of using declaration
isalnum(int _c)
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/cctype:112:9: note: using declaration
using ::isalnum _LIBCPP_USING_IF_EXISTS;
^
In file included from source/build/src/loguru.cpp:46:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/regex:771:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:922:5: error: expected expression
return std::use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:923:2: error: expected ';' at end of declaration
}
^
source/build/src/loguru.cpp:514:25: error: expected unqualified-id
last_is_alpha = std::isalpha(static_cast<int>(cmd[arg_len]));
^
source/build/include/compat.h:769:23: note: expanded from macro 'isalpha'
# define isalpha(ch) ({ int32_t c__dontuse2_=ch; (c__dontuse2_>='A' && c__dontuse2_<='Z') || (c__dontuse2_>='a' && c__dontuse2_<='z'); })
^
source/build/src/loguru.cpp:514:25: error: unexpected type name 'int32_t': expected expression
source/build/include/compat.h:769:26: note: expanded from macro 'isalpha'
# define isalpha(ch) ({ int32_t c__dontuse2_=ch; (c__dontuse2_>='A' && c__dontuse2_<='Z') || (c__dontuse2_>='a' && c__dontuse2_<='z'); })
^
source/build/src/loguru.cpp:514:25: error: expected '}'
source/build/include/compat.h:769:34: note: expanded from macro 'isalpha'
# define isalpha(ch) ({ int32_t c__dontuse2_=ch; (c__dontuse2_>='A' && c__dontuse2_<='Z') || (c__dontuse2_>='a' && c__dontuse2_<='z'); })
^
source/build/src/loguru.cpp:514:25: note: to match this '{'
source/build/include/compat.h:769:24: note: expanded from macro 'isalpha'
# define isalpha(ch) ({ int32_t c__dontuse2_=ch; (c__dontuse2_>='A' && c__dontuse2_<='Z') || (c__dontuse2_>='a' && c__dontuse2_<='z'); })
^
15 errors generated.
```
Thanks for any help!https://voidpoint.io/terminx/eduke32/-/issues/285Current version not buildable on Linux2023-12-03T13:37:31-08:00Jörg StrebelCurrent version not buildable on LinuxHallo!
Enclosed you will find the error messages that I encountered when buildung Duke3D on openSUSE Leap 15.4 Linux with the current version from the git repo
[error-messages.txt](/uploads/80ddd40a367371cba8c6e2b0d0785d6e/error-message...Hallo!
Enclosed you will find the error messages that I encountered when buildung Duke3D on openSUSE Leap 15.4 Linux with the current version from the git repo
[error-messages.txt](/uploads/80ddd40a367371cba8c6e2b0d0785d6e/error-messages.txt)
It seems, the optimized memory library does not work with my CPU. Here is the information on my system:
- CPU: Intel Core i5-2500 (Sandy Bridge D2/J1/Q0) {Sandy Bridge}
- RAM: 16 GB
- OS: openSUSE Leap 15.4
- Kernel-Version: 5.14.21-150400.24.81-default (64-bit)
- X-Windows: X11
Is there a way to disable the mimalloc library?https://voidpoint.io/terminx/eduke32/-/issues/284VoidSW: Assertion failed: pp->LadderSector >= 0 && pp->LadderSector <= 40962024-01-02T12:24:47-08:00Roland HäderVoidSW: Assertion failed: pp->LadderSector >= 0 && pp->LadderSector <= 4096This assertion happens during playing "Wanton Destruction" in first map. It happened when I tried to climb up a ladder from the canals.
`Assertion failed: pp->LadderSector >= 0 && pp->LadderSector <= 4096 source/sw/src/player.cpp, line 4...This assertion happens during playing "Wanton Destruction" in first map. It happened when I tried to climb up a ladder from the canals.
`Assertion failed: pp->LadderSector >= 0 && pp->LadderSector <= 4096 source/sw/src/player.cpp, line 4063`
```
Thread 1 "voidsw" received signal SIGTRAP, Trace/breakpoint trap.
trap_instruction () at source/build/include/debugbreak.h:51
51 }
(gdb) bt
#0 trap_instruction() () at source/build/include/debugbreak.h:51
#1 0x0000555555733f4b in debug_break () at source/build/include/debugbreak.h:146
#2 _Assert(char const*, char const*, unsigned int)
(expr=0x555555c42d70 "pp->LadderSector >= 0 && pp->LadderSector <= 4096", strFile=0x555555c42d0f "source/sw/src/player.cpp", uLine=4063)
at source/sw/src/game.cpp:2902
#3 0x00005555557abc48 in DoPlayerClimb(PLAYERstruct*) (pp=0x555556870940 <Player>) at source/sw/src/player.cpp:4063
#4 0x00005555557b89d6 in domovethings() () at source/sw/src/player.cpp:8154
#5 0x00005555557342b7 in MoveLoop() () at source/sw/src/game.cpp:2993
#6 0x000055555573474e in RunLevel() () at source/sw/src/game.cpp:3161
#7 0x000055555573117c in NewLevel() () at source/sw/src/game.cpp:1700
#8 0x0000555555733eda in Control(int, char const* const*) (argc=1, argv=0x7fffffffd068) at source/sw/src/game.cpp:2890
#9 0x0000555555735f43 in app_main(int32_t, char const* const*) (argc=1, argv=0x7fffffffd068) at source/sw/src/game.cpp:4017
#10 0x0000555555a83f3a in main(int, char**) (argc=1, argv=0x7fffffffd068) at source/build/src/sdlayer.cpp:568
(gdb)
```
**Steps to reproduce:**
1. Start game with "Wanton Destruction" selected.
2. Load attached save-game [game1.sav](/uploads/93d0efedc012dd57f21e374496a0d30f/game1.sav)
3. Try to climb up ladder in front of youEvan RamosEvan Ramoshttps://voidpoint.io/terminx/eduke32/-/issues/283Duke3D: Actors can't be crushed in sloped lotag 1 sectors2023-09-05T12:50:54-07:00Dino Bollingerdino.bollinger@gmail.comDuke3D: Actors can't be crushed in sloped lotag 1 sectorsThis problem originates from r5657:
```
commit 4795b68823df59c0c15f9d88d97bcc59b6a2d61e
Author: Richard Gobeille <terminx@gmail.com>
Date: Mon Mar 14 00:07:12 2016 +0000
Don't squish the player in lotag 1 sectors that have a SE7.
...This problem originates from r5657:
```
commit 4795b68823df59c0c15f9d88d97bcc59b6a2d61e
Author: Richard Gobeille <terminx@gmail.com>
Date: Mon Mar 14 00:07:12 2016 +0000
Don't squish the player in lotag 1 sectors that have a SE7.
From-SVN: r5657
```
It was caused by a misinterpretation of the function "A_CheckNoSE7Water()":
```diff
diff --git a/polymer/eduke32/source/gameexec.c b/polymer/eduke32/source/gameexec.c
index 214743a29..f8813967a 100644
--- a/polymer/eduke32/source/gameexec.c
+++ b/polymer/eduke32/source/gameexec.c
@@ -239,26 +239,27 @@ static int32_t VM_CheckSquished(void)
{
sectortype const * const sc = §or[vm.g_sp->sectnum];
- if (sc->lotag == ST_23_SWINGING_DOOR || EDUKE32_PREDICT_FALSE(vm.g_sp->picnum == APLAYER && ud.noclip))
+ if (sc->lotag == ST_23_SWINGING_DOOR ||
+ (sc->lotag == ST_1_ABOVE_WATER && !A_CheckNoSE7Water(vm.g_sp, vm.g_sp->sectnum, sc->lotag, NULL)) ||
+ (vm.g_sp->picnum == APLAYER && ud.noclip))
return 0;
```
This is a TROR-specific function, which return 1 if the sector contains a floor bunch that the player can submerge into (i.e. submergible TROR water that does not use SE7), and 0 otherwise.
Therefore, this prevents actors from being crushed if the actor is in a lotag 1 sector that isn't submergible TROR water. Therefore, any regular lotag 1 sectors, with or without SE7, prevent crushing -- contrary to what the commit message states.,
Furthermore, the actor will get crushed on submergible TROR water -- which is also a case that shouldn't actually be occurring.
Crushers in lotag 1 sectors without SE7, (in other words, shallow water) should still allow crushing. This was the behavior in DOS Duke3D, and also the behavior in eduke32 up and until r5657 in 2016.
The following map (cut out of E1L7) demonstrates the problem:
[water_crusher.map](/uploads/91f600564546476a7c9e77eeea156fa4/water_crusher.map)
Fixing this of course comes with a caveat: In the 7 years since this change was introduced, maps may have been created that rely on this bug to allow player progression. In other words, maps since 2016 may have assumed that it is safe for the player to walk through crusher areas with water floors.https://voidpoint.io/terminx/eduke32/-/issues/281Duke3D: crash at pushmove2023-08-27T00:50:37-07:00Alexey MDuke3D: crash at pushmoveSteps to reproduce:
1. Load attached save file.
2. Drop into the water and shoot at Octabrains. It's important to use Devastator, I don't think it works with other weapons.
3. 80-90% of the time the crash happens once either (or both) o...Steps to reproduce:
1. Load attached save file.
2. Drop into the water and shoot at Octabrains. It's important to use Devastator, I don't think it works with other weapons.
3. 80-90% of the time the crash happens once either (or both) of Octabrains is blown into pieces.
[save0000.esv](/uploads/39bd8c1bba98175d3f6450c59c3845a9/save0000.esv)
Log and stack trace:
```cpp
0,3589s INFO| EDuke32 r10363-dd98c3ec5
0,3590s INFO| Built Aug 26 2023 10:19:31, clang 14.0.0 , 64-bit
...
==719986==WARNING: ASan is ignoring requested __asan_handle_no_return: stack type: default top: 0x7fffb5cb0600; bottom 0x7fffffffc000; size: 0xffffffffb5cb4600 (-1244969472)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
Thread 1 "eduke32" received signal SIGILL, Illegal instruction.
0x000055555656a6c1 in pushmove (vect=0x555558a65e50 <sprite_s+16720>, sectnum=0x7fffffffd6c0, walldist=128, ceildist=1024, flordist=1024, cliptype=65537, clear=<optimized out>) at source/build/src/clip.cpp:1839
1839 }
(gdb) bt
#0 0x000055555656a6c1 in pushmove(vec3_t*, int16_t*, int32_t, int32_t, int32_t, uint32_t, bool)
(vect=0x555558a65e50 <sprite_s+16720>, sectnum=0x7fffffffd6c0, walldist=128, ceildist=1024, flordist=1024, cliptype=65537, clear=<optimized out>)
at source/build/src/clip.cpp:1839
#1 0x000055555640738d in A_DamageObject_Duke3D(int, int)
(spriteNum=380, dmgSrc=<optimized out>) at source/duke3d/src/sector.cpp:2431
#2 0x00005555564149ee in A_DamageObject(int, int) (spriteNum=0, dmgSrc=0)
at source/duke3d/src/sector.cpp:2573
#3 0x0000555555f9afa9 in G_MoveWeapons() () at source/duke3d/src/actors.cpp:3584
#4 0x0000555555f8df8c in G_MoveWorld() () at source/duke3d/src/actors.cpp:9292
#5 0x0000555556144e72 in G_DoMoveThings() () at source/duke3d/src/game.cpp:7343
#6 0x000055555613eec6 in app_main(int, char const* const*)
(argc=<optimized out>, argv=<optimized out>) at source/duke3d/src/game.cpp:7128
#7 0x00005555569a9bf2 in main(int, char**) (argc=0, argv=0x0)
at source/build/src/sdlayer.cpp:568
```https://voidpoint.io/terminx/eduke32/-/issues/278[SW] Assertion `(spr->cstat & CSTAT_SPRITE_ALIGNMENT) == CSTAT_SPRITE_ALIGNME...2023-11-16T16:35:48-08:00Roland Häder[SW] Assertion `(spr->cstat & CSTAT_SPRITE_ALIGNMENT) == CSTAT_SPRITE_ALIGNMENT_FLOOR` failedThis happens during saving the game in airplane map.
```
voidsw: source/build/src/engine_priv.h:457: vec2_t get_floorspr_center(const void*, bool): Assertion `(spr->cstat & CSTAT_SPRITE_ALIGNMENT) == CSTAT_SPRITE_ALIGNMENT_FLOOR' failed....This happens during saving the game in airplane map.
```
voidsw: source/build/src/engine_priv.h:457: vec2_t get_floorspr_center(const void*, bool): Assertion `(spr->cstat & CSTAT_SPRITE_ALIGNMENT) == CSTAT_SPRITE_ALIGNMENT_FLOOR' failed.
Caught signal: SIGABRT
Stack trace:
22 0x63185b752e0a _start + 42
21 0x785cfb4bdd0a __libc_start_main + 234
20 0x63185badc9b0 main + 463
19 0x63185b78ecd9 app_main + 4603
18 0x63185b78cd8e Control(int, char const* const*) + 104
17 0x63185b78a240 NewLevel() + 259
16 0x63185b78d682 RunLevel() + 238
15 0x63185b7e015e UpdateInputs() + 87
14 0x63185b791ac9 getinput(SW_PACKET*, unsigned char) + 6299
13 0x63185b78f564 FunctionKeys(PLAYERstruct*) + 913
12 0x63185b78f15b DoQuickSave(short) + 30
11 0x63185b822433 SaveGame(short) + 265
10 0x63185b78630d ScreenSaveSetup() + 71
9 0x63185b785735 drawscreen(PLAYERstruct*) + 3255
8 0x63185b9fb161 renderDrawMasks + 2294
7 0x63185b9fa696 /home/quix0r/git/eduke32/voidsw(+0x44d696) [0x63185b9fa696]
6 0x63185b9cac9d /home/quix0r/git/eduke32/voidsw(+0x41dc9d) [0x63185b9cac9d]
5 0x785cfb4cb662 /lib/x86_64-linux-gnu/libc.so.6(+0x31662) [0x785cfb4cb662]
4 0x785cfb4bc40f /lib/x86_64-linux-gnu/libc.so.6(+0x2240f) [0x785cfb4bc40f]
3 0x785cfb4bc537 abort + 291
2 0x785cfb4d2ce1 gsignal + 321
1 0x785cfb682140 /lib/x86_64-linux-gnu/libpthread.so.0(+0x13140) [0x785cfb682140]
0 0x63185ba2e43b loguru::signal_handler(int, siginfo_t*, void*) + 29
2049.1478s FATAL| Signal: SIGABRT
```
This set the save game to zero bytes.
Just download this save-game, exit the map and then you should be inside the airplane. Then try to quick-save it.
[game0.sav](/uploads/e3b666d547a99575952cc69d5b2b4221/game0.sav)