New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Builds newer than nblood_win32_20211015-12587 incompatible with XP #1
Comments
It is possible to retain WinXP compatibility without much tweaking. I'm currently maintaining XP compatibility with this fork here by compiling with SDL1 and using zernel32. The changes should be compatible with eduke32 upstream, but I have not confirmed. |
Oh, wow! an SDL1 nblood fork! Nice. Gerwin at vogons was able to compile a working XP version of eduke32 for XP with some code changes so likely the same could be done for nblood assuming that the issues were the same of course |
I actually checked after the fact, and they did some similar changes. What I found was a lot of the issues coming from mimalloc, which use some Vista only functions. The game runs fine without it, and completes the internal 9 hour demo validation check. It wouldn't be too hard to even have automated builds, see here for example https://github.com/clipmove/NotBlood/blob/master/.github/workflows/build.yml https://github.com/clipmove/NotBlood/blob/master/.github/workflows/publish.yml |
hey, Also there is a more debatable aspect to it, which I mentioned at the end. That is the performance. On some systems the performance is now just sad. eDuke32 is now at home on modern hardware with modern OS, and a mismatch for anything else. It is an Ion Fury engine now. For anything retro-oriented it may be a better choice to use or fork early 2018 eDuke32. Though, then you miss out on all the good parts of the 2018-2022 Ion Fury-aimed changes. |
NotBlood WinXP is able to be compiled with minicoro, but as it doesn't use OpenGL it may not encounter the problems you faced. I don't see the problem as such, as I only intend the XP build to be a drop in replacement for users who are still clinging onto VDMSound and running Blood. That said, it would be nice to get OpenGL working with XP, but from the brief tests they were not stable. Perhaps if this repo is able to, I'd happily carry over the changes to my fork. |
Yes minicoro can be build without complaints, the incompatibility only surfaces at runtime: "Failed to create context" IIRC. It wants to start an additional CPU thread for rendering with NT6 API calls, OpenGL specific it seems. |
I see - it would have to be rewritten with something that uses the same minicoro calls, or to replace all code that utilize minicoro with something else that has XP compatibility. |
I back-ported it to the state it had before the minicoro additions, manually. Worth mentioning: Building a eDuke32 without OpenGL, as in "USE_OPENGL := 0" in the makefile, indeed avoids OpenGL related runtime issues. But building it with OpenGL and then selecting Classic/Software rendering will use OpenGL for some tasks (for speed AFAIK), and that may give undesirable requirements. |
Yes, it uses OpenGL for some speed improvements and compatibility for switching between software/hardware rendering methods. IIRC this is mostly used for viewport and other boilerplate related functionality. Comparing a regular 32-bit build with the SLD1/Software only build loses about a 4th of performance. Not a big deal but still something to note. |
No description provided.
The text was updated successfully, but these errors were encountered: