DescentDevelopers / Descent3

Descent 3 by Outrage Entertainment
GNU General Public License v3.0
2.88k stars 251 forks source link

[Runtime Issue]: Support for Windows XP #631

Closed own3mall closed 3 weeks ago

own3mall commented 1 month ago

Build Version

1.5 latest release

Operating System Environment

CPU Environment

Game Modes Affected

Game Environment

No response

Description

I tried to get the Descent3.exe binary to work in Windows XP by following the instructions in a reddit comment from here (https://www.reddit.com/r/windowsxp/comments/1dckc7b/is_not_a_valid_win32_application/):

Specifically:

If you want to try editing it, open the EXE in some hexeditor, find bytes 50 45 (PE) near the beginning of the file, and exactly 62 bytes after that you'll probably see sequence 06 00 00 00 (meaning Vista), then some 4 bytes (probably 00) and then again 06 00 00 00. Change both those occurrences to 05 00 01 00 (meaning XP).

That gets me past the "is not a valid Win32 application" error, but then I get :

This application has failed to start because the application configuration is incorrect. Reinstalling the application max fix this problem.

Yet, I've installed Visual C++ 2015-2019 (last supported XP version).

Could you please support XP? The original Descent 3.exe build does...

Regression Status

No response

Steps to Reproduce

Try to run on XP 32-bit and XP x64 (64-bit). Doesn't work. Original binary works in both versions.

winterheart commented 1 month ago

Hello.

This task may be difficult to achieve. Currently we fully support only Windows 64bit target. 32bit target still buildable (as last I checked some time ago), but not tested. Main difficulties here is using correct toolchain. You definitely need MSVC 2019 as project requires C++17 capable compiler. Other things is remember to install MS Visual C++ redistributable runtime package.

Lgt2x commented 1 month ago

Hi, WinXP support is indeed not currently planned, as we now mostly target current-day (64-bit) Operating Systems where the Descent 3 experience needs improvement. If you wish to run the game on legacy hardware, your best bet would be to start from the 1.5 tagged version, before the rendering changes that could break compatibility with older graphics drivers that may not support OpenGL 2+.

own3mall commented 1 month ago

Thanks for the responses!

Are there any build instructions for 32-bit? I was able to build and compile following the build instructions, but that's obviously for the 64-bit version.

I think most graphics cards in XP (Nvidia / AMD) have OpenGL 2+ support. I have a GTX 970 on my XP x64 machine, and it works fine with the last driver release Nvidia put out for XP.

Lgt2x commented 1 month ago

To build for 32bit on Windows, you need to build from the x86 native command prompt instead of the x64 one

own3mall commented 1 month ago

I tried the following in x86 Native Tools Command Prompt for VS 2022:

cmake --preset win
cmake --build --preset win --config Release
cmake --preset win
cmake --build --preset win -DCMAKE_GENERATOR_PLATFORM=Win32 --config Release
cmake -DCMAKE_GENERATOR_PLATFORM=Win32 --preset win
cmake --build --preset win -DCMAKE_GENERATOR_PLATFORM=Win32 --config Release

None of the above commands worked. I should be able to build the 32-bit version from a 64-bit machine / version of VS 2022, right?

So, thinking that configuration already existed for the 64-bit build I compiled earlier, I recloned the repo into a new folder, and then tried this again from x86 Native Tools Command Prompt for VS 2022:

cmake --preset win

But, I got the following error:

cmake --preset win
Preset CMake variables:

  VCPKG_TARGET_TRIPLET="x64-windows-static-md"

CMake Deprecation Warning at G:/Apps/Visual Studio 2022/VC/vcpkg/scripts/buildsystems/vcpkg.cmake:40 (cmake_policy):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
  builds/win/CMakeFiles/3.31.0-rc1/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:30 (project)

-- Running vcpkg install
Detecting compiler hash for triplet x64-windows...
Compiler found: G:/Apps/Visual Studio 2022/VC/Tools/MSVC/14.41.34120/bin/Hostx64/x64/cl.exe
Detecting compiler hash for triplet x64-windows-static-md...
Compiler found: G:/Apps/Visual Studio 2022/VC/Tools/MSVC/14.41.34120/bin/Hostx64/x64/cl.exe
All requested packages are currently installed.
Total install time: 300 ns
The package glm provides CMake targets:

    find_package(glm CONFIG REQUIRED)
    target_link_libraries(main PRIVATE glm::glm)

    # Or use the header-only version
    find_package(glm CONFIG REQUIRED)
    target_link_libraries(main PRIVATE glm::glm-header-only)

The package gtest is compatible with built-in CMake targets:

    enable_testing()

    find_package(GTest CONFIG REQUIRED)
    target_link_libraries(main PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)

    add_test(AllTestsInMain main)

The package plog is header only and can be used from CMake via:

Modern CMake:
    find_package(plog CONFIG REQUIRED)
    target_link_libraries(main PRIVATE plog::plog)

sdl2 provides CMake targets:

    find_package(SDL2 CONFIG REQUIRED)
    target_link_libraries(main
        PRIVATE
        $<TARGET_NAME_IF_EXISTS:SDL2::SDL2main>
        $<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>
    )

The package zlib is compatible with built-in CMake targets:

    find_package(ZLIB REQUIRED)
    target_link_libraries(main PRIVATE ZLIB::ZLIB)

-- Running vcpkg install - done
CMake Deprecation Warning at G:/Apps/Visual Studio 2022/VC/vcpkg/scripts/buildsystems/vcpkg.cmake:878 (cmake_policy):
  Compatibility with CMake < 3.10 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
  builds/win/CMakeFiles/3.31.0-rc1/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:30 (project)

CMake Warning (dev) at CMakeLists.txt:116 (add_custom_command):
  Exactly one of PRE_BUILD, PRE_LINK, or POST_BUILD must be given.  Assuming
  POST_BUILD to preserve backward compatibility.

  Policy CMP0175 is not set: add_custom_command() rejects invalid arguments.
  Run "cmake --help-policy CMP0175" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at G:/Apps/Visual Studio 2022/VC/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package):
  Could not find a configuration file for package "glm" that is compatible
  with requested version "".

  The following configuration files were considered but not accepted:

    C:/Users/own/source/desc3_2/Descent3/builds/win/vcpkg_installed/x64-windows-static-md/share/glm/glmConfig.cmake, version: 1.0.1 (64bit)

Call Stack (most recent call first):
  CMakeLists.txt:137 (find_package)

-- Configuring incomplete, errors occurred!

Any ideas?

pzychotic commented 1 month ago

None of the above commands worked. I should be able to build the 32-bit version from a 64-bit machine / version of VS 2022, right?

Yes.

Our CMakePresets.json sets the VCPKG_TARGET_TRIPLET and architecture.value for x64, see https://github.com/DescentDevelopers/Descent3/blob/652e31f44275195a65241b2469295e079eb3ea07/CMakePresets.json#L19-L23

If you want to build for x86, try replacing x64 with x86 in both places.

own3mall commented 1 month ago

Thanks! I got further, but something is failing:

C:\Users\Own\source\desc3_2\Descent3>cmake --build --preset win --config Release
[1/130] Running utility command for get_git_hash
-- Git hash is 652e31f4-dirty
[2/130] Generate 'Direct TCP~IP.d3c'
Warning! File Direct TCP~IP.so from "C:/Users/Eric/source/desc3_2/Descent3/netcon/lanclient/TCP_IP.d3c.txt" not found! Skipping...
Warning! File Direct TCP~IP.dylib from "C:/Users/Eric/source/desc3_2/Descent3/netcon/lanclient/TCP_IP.d3c.txt" not found! Skipping...
Creating "C:\\Users\\Own\\source\\desc3_2\\Descent3\\builds\\win\\Descent3\\Release\\online\\Direct TCP~IP.d3c"...
Adding Direct TCP~IP.dll... [ok]
Adding lanclient.str... [ok]
Done!
[3/130] Generate 'Descent3 Online.d3c'
Warning! File Descent3 Online.so from "C:/Users/Eric/source/desc3_2/Descent3/netcon/descent3onlineclient/d3online.d3c.txt" not found! Skipping...
Warning! File Descent3 Online.dylib from "C:/Users/Eric/source/desc3_2/Descent3/netcon/descent3onlineclient/d3online.d3c.txt" not found! Skipping...
Warning! File  from "C:/Users/Eric/source/desc3_2/Descent3/netcon/descent3onlineclient/d3online.d3c.txt" not found! Skipping...
Creating "C:\\Users\\Own\\source\\desc3_2\\Descent3\\builds\\win\\Descent3\\Release\\online\\Descent3 Online.d3c"...
Adding d3online.str... [ok]
Adding d3online_game.ogf... [ok]
Adding d3online_main.ogf... [ok]
Adding Descent3 Online.dll... [ok]
Done!
[4/130] Generate 'Parallax Online.d3c'
Warning! File Parallax Online.so from "C:/Users/Eric/source/desc3_2/Descent3/netcon/mtclient/Parallax_Online.d3c.txt" not found! Skipping...
Warning! File Parallax Online.dylib from "C:/Users/Eric/source/desc3_2/Descent3/netcon/mtclient/Parallax_Online.d3c.txt" not found! Skipping...
Creating "C:\\Users\\Own\\source\\desc3_2\\Descent3\\builds\\win\\Descent3\\Release\\online\\Parallax Online.d3c"...
Adding mtclient.str... [ok]
Adding Parallax Online.dll... [ok]
Adding pxogame.ogf... [ok]
Adding pxomain.ogf... [ok]
Done!
[6/130] Generate fullhog/d3-win.hog
Creating "C:\\Users\\Own\\source\\desc3_2\\Descent3\\builds\\win\\Descent3\\Release\\d3-win.hog"...
Adding AIGame.dll... [ok]
Adding aigame.str... [ok]
Adding aigame2.dll... [ok]
Adding AIGame3.dll... [ok]
Adding aigame4.dll... [ok]
Adding AIGAMEi.STR... [ok]
Adding Anarchy.str... [ok]
Adding Anarchyi.str... [ok]
Adding barney.dll... [ok]
Adding BatteriesIncluded.dll... [ok]
Adding BossCamera.dll... [ok]
Adding CanyonsCTF.dll... [ok]
Adding CellTestLevel.dll... [ok]
Adding ChrisTest.dll... [ok]
Adding clutter.dll... [ok]
Adding coop.str... [ok]
Adding coopi.str... [ok]
Adding CTF.str... [ok]
Adding CTFi.str... [ok]
Adding D3.STR... [ok]
Adding d3i.str... [ok]
Adding DMFC.str... [ok]
Adding DMFCi.str... [ok]
Adding dp_modem.str... [ok]
Adding dp_modemi.str... [ok]
Adding dp_serial.str... [ok]
Adding dp_seriali.str... [ok]
Adding entropy.str... [ok]
Adding entropyi.str... [ok]
Adding gamecredits.txt... [ok]
Adding generic.dll... [ok]
Adding GENERIC.STR... [ok]
Adding generici.str... [ok]
Adding Geodomes.dll... [ok]
Adding HalfPipe.dll... [ok]
Adding hoard.str... [ok]
Adding hoardi.str... [ok]
Adding Hyper.str... [ok]
Adding hyperi.str... [ok]
Adding InfernalBolt.dll... [ok]
Adding Inversion.dll... [ok]
Adding ipxclient.str... [ok]
Adding ipxclienti.str... [ok]
Adding lanclient.str... [ok]
Adding lanclienti.str... [ok]
Adding LEVEL0.dll... [ok]
Adding level1.dll... [ok]
Adding level10.dll... [ok]
Adding Level10i.str... [ok]
Adding level11.dll... [ok]
Adding Level11i.str... [ok]
Adding Level12.dll... [ok]
Adding Level12i.str... [ok]
Adding level13.dll... [ok]
Adding Level13i.str... [ok]
Adding level14.dll... [ok]
Adding Level14i.str... [ok]
Adding LEVEL15.dll... [ok]
Adding Level15i.str... [ok]
Adding Level16.dll... [ok]
Adding level17.dll... [ok]
Adding Level1i.str... [ok]
Adding level2.dll... [ok]
Adding Level2i.str... [ok]
Adding level3.dll... [ok]
Adding Level3i.str... [ok]
Adding level4.dll... [ok]
Adding LEVEL4i.STR... [ok]
Adding level5.dll... [ok]
Adding Level5i.str... [ok]
Adding Level6.dll... [ok]
Adding Level6i.str... [ok]
Adding level7.dll... [ok]
Adding Level7i.str... [ok]
Adding level8.dll... [ok]
Adding Level8i.str... [ok]
Adding Level9.dll... [ok]
Adding Level9i.str... [ok]
Adding LevelS1.dll... [ok]
Adding LEVELS1i.STR... [ok]
Adding levelS2.dll... [ok]
Adding LEVELS2.str... [ok]
Adding LEVELS2i.STR... [ok]
Adding loki.ogf... [ok]
Adding Merc02.dll... [ok]
Adding Merc1.dll... [ok]
Adding Merc3.dll... [ok]
Adding Merc4.dll... [ok]
Adding merc5.dll... [ok]
Adding Merc6.dll... [ok]
Adding Merc7.dll... [ok]
Adding monster.str... [ok]
Adding monsteri.str... [ok]
Adding mtclient.str... [ok]
Adding mtclienti.str... [ok]
Adding myPowerHouse.dll... [ok]
Adding Mysterious_Isle.dll... [ok]
Adding orbital.dll... [ok]
Adding Paranoia.dll... [ok]
Adding PiccuStation.dll... [ok]
Adding Polaris.dll... [ok]
Adding pxogame.ogf... [ok]
Adding pxomain.ogf... [ok]
Adding Quadsomniac.dll... [ok]
Adding RudeAwakening.dll... [ok]
Adding SewerRat.dll... [ok]
Adding tanarchy.str... [ok]
Adding tanarchyi.str... [ok]
Adding testscript.dll... [ok]
Adding TrainingMission.dll... [ok]
Adding TrainingMissioni.STR... [ok]
Adding Y2K.dll... [ok]
Done!
[8/130] Building CXX object renderer\CMakeFiles\renderer.dir\Release\HardwareOpenGL.cpp.obj
FAILED: renderer/CMakeFiles/renderer.dir/Release/HardwareOpenGL.cpp.obj
"G:\Apps\Visual Studio 2022\VC\Tools\MSVC\14.41.34120\bin\Hostx86\x86\cl.exe"  /nologo /TP -DCHECKSUM=2273873307UL -DDIRECTINPUT_VERSION=0x0500 -DMEM_USE_RTL -DNOBITMAP -DNODRAWTEXT -DNOMCX -DNOMINMAX -DNOSERVICE -DPRIMARY_HOG=\"d3-win.hog\" -DRELEASE -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -DCMAKE_INTDIR=\"Release\" -IC:\Users\Own\source\desc3_2\Descent3\cfile -IC:\Users\Own\source\desc3_2\Descent3\ddebug -IC:\Users\Own\source\desc3_2\Descent3\fix -IC:\Users\Own\source\desc3_2\Descent3\lib -IC:\Users\Own\source\desc3_2\Descent3\linux -IC:\Users\Own\source\desc3_2\Descent3\Descent3 -IC:\Users\Own\source\desc3_2\Descent3\lib\win\DirectX -IC:\Users\Own\source\desc3_2\Descent3\lib\win -IC:\Users\Own\source\desc3_2\Descent3\builds\win\renderer\generated -IC:\Users\Own\source\desc3_2\Descent3\bitmap -IC:\Users\Own\source\desc3_2\Descent3\logger -IC:\Users\Own\source\desc3_2\Descent3\third_party\plog\include -IC:\Users\Own\source\desc3_2\Descent3\ddio -IC:\Users\Own\source\desc3_2\Descent3\mem -IC:\Users\Own\source\desc3_2\Descent3\misc -IC:\Users\Own\source\desc3_2\Descent3\module -IC:\Users\Own\source\desc3_2\Descent3\rtperformance -external:IC:\Users\Own\source\desc3_2\Descent3\builds\win\vcpkg_installed\x86-windows-static-md\include -external:IC:\Users\Own\source\desc3_2\Descent3\builds\win\vcpkg_installed\x86-windows-static-md\include\SDL2 -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++17 -MD /source-charset:UTF-8 /execution-charset:UTF-8 /GL /FD /EHsc /W3 /nologo /c /Zi /TP /errorReport:prompt /we4150 /we4474 /we4700 /we4804 /we4806 /we4473 /we4477 /we4715 /we4834 /MP /showIncludes /Forenderer\CMakeFiles\renderer.dir\Release\HardwareOpenGL.cpp.obj /Fdrenderer\CMakeFiles\renderer.dir\Release\renderer.pdb /FS -c C:\Users\Own\source\desc3_2\Descent3\renderer\HardwareOpenGL.cpp
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(130): error C2079: 'dglAttachShader' uses undefined struct 'FnPtr<void (GLuint,GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(130): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(130): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(131): error C2079: 'dglBindAttribLocation' uses undefined struct 'FnPtr<void (GLuint,GLuint,const GLchar *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(131): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(131): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(132): error C2079: 'dglBindBuffer' uses undefined struct 'FnPtr<void (GLuint,GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(132): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(132): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(133): error C2079: 'dglBindTexture' uses undefined struct 'FnPtr<void (GLuint,GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(133): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(133): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(134): error C2079: 'dglBindVertexArray' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(134): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(134): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(135): error C2079: 'dglBlendFunc' uses undefined struct 'FnPtr<void (GLuint,GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(135): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(135): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(136): error C2079: 'dglBufferData' uses undefined struct 'FnPtr<void (GLenum,GLsizeiptr,const void *,GLenum)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(136): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(136): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(137): error C2079: 'dglBufferSubData' uses undefined struct 'FnPtr<void (GLenum,GLintptr,GLsizeiptr,const void *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(137): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(137): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(138): error C2079: 'dglClear' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(138): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(138): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(139): error C2079: 'dglClearColor' uses undefined struct 'FnPtr<void (GLclampf,GLclampf,GLclampf,GLclampf)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(139): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(139): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(140): error C2079: 'dglCompileShader' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(140): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(140): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(141): error C2079: 'dglCreateProgram' uses undefined struct 'FnPtr<GLuint (void)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(141): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(141): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(142): error C2079: 'dglCreateShader' uses undefined struct 'FnPtr<GLuint (GLenum)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(142): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(142): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(143): error C2079: 'dglDeleteBuffers' uses undefined struct 'FnPtr<void (GLsizei,const GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(143): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(143): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(144): error C2079: 'dglDeleteProgram' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(144): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(144): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(145): error C2079: 'dglDeleteShader' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(145): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(145): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(146): error C2079: 'dglDeleteTextures' uses undefined struct 'FnPtr<void (GLsizei,const GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(146): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(146): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(147): error C2079: 'dglDeleteVertexArrays' uses undefined struct 'FnPtr<void (GLsizei,const GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(147): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(147): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(148): error C2079: 'dglDepthFunc' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(148): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(148): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(149): error C2079: 'dglDepthMask' uses undefined struct 'FnPtr<void (GLboolean)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(149): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(149): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(150): error C2079: 'dglDisable' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(150): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(150): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(151): error C2079: 'dglDrawArrays' uses undefined struct 'FnPtr<void (GLenum,GLint,GLsizei)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(151): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(151): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(152): error C2079: 'dglEnable' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(152): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(152): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(153): error C2079: 'dglEnableVertexAttribArray' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(153): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(153): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(154): error C2079: 'dglFlush' uses undefined struct 'FnPtr<void (void)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(154): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(154): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(155): error C2079: 'dglGenBuffers' uses undefined struct 'FnPtr<void (GLsizei,GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(155): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(155): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(156): error C2079: 'dglGenTextures' uses undefined struct 'FnPtr<void (GLsizei,GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(156): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(156): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(157): error C2079: 'dglGenVertexArrays' uses undefined struct 'FnPtr<void (GLsizei,GLuint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(157): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(157): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(158): error C2079: 'dglGetError' uses undefined struct 'FnPtr<GLuint (void)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(158): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(158): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(159): error C2079: 'dglGetIntegerv' uses undefined struct 'FnPtr<void (GLenum,GLint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(159): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(159): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(160): error C2079: 'dglGetProgramInfoLog' uses undefined struct 'FnPtr<void (GLuint,GLsizei,GLsizei *,GLchar *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(160): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(160): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(161): error C2079: 'dglGetProgramiv' uses undefined struct 'FnPtr<void (GLuint,GLenum,GLint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(161): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(161): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(162): error C2079: 'dglGetShaderInfoLog' uses undefined struct 'FnPtr<void (GLuint,GLsizei,GLsizei *,GLchar *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(162): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(162): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(163): error C2079: 'dglGetShaderiv' uses undefined struct 'FnPtr<void (GLuint,GLenum,GLint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(163): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(163): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(164): error C2079: 'dglGetString' uses undefined struct 'FnPtr<const GLubyte *(GLenum)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(164): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(164): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(165): error C2079: 'dglGetStringi' uses undefined struct 'FnPtr<const GLubyte *(GLenum,GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(165): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(165): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(166): error C2079: 'dglGetUniformLocation' uses undefined struct 'FnPtr<GLint (GLuint,const GLchar *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(166): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(166): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(167): error C2079: 'dglLinkProgram' uses undefined struct 'FnPtr<void (GLuint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(167): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(167): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(168): error C2079: 'dglMapBufferRange' uses undefined struct 'FnPtr<void *(GLenum,GLintptr,GLsizeiptr,GLbitfield)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(168): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(168): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(169): error C2079: 'dglPixelStorei' uses undefined struct 'FnPtr<void (GLenum,GLint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(169): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(169): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(170): error C2079: 'dglPolygonOffset' uses undefined struct 'FnPtr<void (GLfloat,GLfloat)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(170): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(170): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(171): error C2079: 'dglReadPixels' uses undefined struct 'FnPtr<void (GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,GLvoid *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(171): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(171): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(172): error C2079: 'dglScissor' uses undefined struct 'FnPtr<void (GLint,GLint,GLsizei,GLsizei)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(172): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(172): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(173): error C2079: 'dglShaderSource' uses undefined struct 'FnPtr<void (GLuint,GLsizei,const GLchar *const *,const GLint *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(173): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(173): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(174): error C2079: 'dglTexImage2D' uses undefined struct 'FnPtr<void (GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const GLvoid *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(174): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(174): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(175): error C2079: 'dglTexParameteri' uses undefined struct 'FnPtr<void (GLenum,GLenum,GLint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(175): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(175): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(176): error C2079: 'dglTexSubImage2D' uses undefined struct 'FnPtr<void (GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const GLvoid *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(176): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(176): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(177): error C2079: 'dglUniform1f' uses undefined struct 'FnPtr<void (GLint,GLfloat)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(177): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(177): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(178): error C2079: 'dglUniform1i' uses undefined struct 'FnPtr<void (GLint,GLint)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(178): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(178): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(179): error C2079: 'dglUniform4f' uses undefined struct 'FnPtr<void (GLint,GLfloat,GLfloat,GLfloat,GLfloat)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(179): error C2440: 'initializing': cannot convert from 'initializer list' to 'int'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(179): note: The initializer contains too many elements
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(180): error C2079: 'dglUniformMatrix4fv' uses undefined struct 'FnPtr<void (GLint,GLsizei,GLboolean,const GLfloat *)>'
C:\Users\Own\source\desc3_2\Descent3\renderer\dyna_gl.h(180): fatal error C1003: error count exceeds 100; stopping compilation
[11/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\BriefingParse.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\BriefingParse.cpp(1354): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
[12/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\d3music.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\music\music.h(181): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\music\music.h(249): warning C4244: 'return': conversion from 'float' to 'tMusicVal', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\d3music.cpp(306): warning C4244: 'argument': conversion from 'float' to 'tMusicVal', possible loss of data
[14/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\ConfigItem.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\ConfigItem.cpp(575): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\ConfigItem.cpp(1020): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\ConfigItem.cpp(1021): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
[16/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\Controls.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(595): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(599): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(686): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(690): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(1029): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(1225): warning C4244: '+=': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\Controls.cpp(1327): warning C4244: '+=': conversion from 'float' to 'int', possible loss of data
[17/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\bsp.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\bsp.cpp(129): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
[19/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\credits.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\credits.cpp(438): warning C4244: 'initializing': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\credits.cpp(459): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\credits.cpp(460): warning C4244: 'argument': conversion from 'float' to 'uint8_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\credits.cpp(462): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\credits.cpp(463): warning C4244: 'argument': conversion from 'float' to 'uint8_t', possible loss of data
[21/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\D3ForceFeedback.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(407): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(440): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(442): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(514): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(515): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(516): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(529): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(545): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(547): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(554): warning C4244: '=': conversion from 'float' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(556): warning C4244: '=': conversion from 'float' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(557): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(565): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(578): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(593): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(595): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(610): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(612): warning C4244: '=': conversion from 'double' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(627): warning C4244: '=': conversion from 'float' to 'uint32_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\D3ForceFeedback.cpp(629): warning C4244: '=': conversion from 'float' to 'uint32_t', possible loss of data
[22/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\config.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(493): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(498): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(503): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(508): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(845): warning C4101: 'iTemp': unreferenced local variable
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(1213): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(1247): warning C4244: '=': conversion from 'int' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\config.cpp(1311): warning C4244: '=': conversion from 'float' to 'int', possible loss of data
[23/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\dedicated_server.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\dedicated_server.cpp(732): warning C4244: 'initializing': conversion from 'float' to 'int', possible loss of data
[24/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\damage.cpp.obj
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(669): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(702): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1008): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1101): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1133): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1161): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1216): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1224): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1444): warning C4244: 'initializing': conversion from 'float' to 'uint16_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1445): warning C4244: 'initializing': conversion from 'float' to 'uint16_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1446): warning C4244: 'initializing': conversion from 'float' to 'uint16_t', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1577): warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1580): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1581): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
C:\Users\Own\source\desc3_2\Descent3\Descent3\damage.cpp(1582): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
[25/130] Building CXX object Descent3\CMakeFiles\Descent3.dir\Release\ctlconfig.cpp.obj
ninja: build stopped: subcommand failed.

C:\Users\Own\source\desc3_2\Descent3>
pzychotic commented 1 month ago

Hmmm... interesting... I can't see anything that should behave differently between x64 and x86 in the code. I have no clue right now, to be honest.

pzychotic commented 3 weeks ago

Sorry for the long delay. I was finally able to understand and fix the compiler error in a local x86 build. Please check if the change in #640 also work for you.

own3mall commented 3 weeks ago

Sorry for the long delay. I was finally able to understand and fix the compiler error in a local x86 build. Please check if the change in #640 also work for you.

Yes, it built with your branch for x86, but this change still has to be made manually:

https://github.com/DescentDevelopers/Descent3/issues/631#issuecomment-2420403034

It seems to work as well, but I'm still not getting it to work on XP, and I'm not sure why.

Hex editing the 60 00 00 00 entry to support older versions gets me past the is not a valid win32 application message:

If you want to try editing it, open the EXE in some hexeditor, find bytes 50 45 (PE) near the beginning of the file, and exactly 62 bytes after that you'll probably see sequence 06 00 00 00 (meaning Vista), then some 4 bytes (probably 00) and then again 06 00 00 00. Change both those occurrences to 05 00 01 00 (meaning XP). 

But, now I get the error of:

This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

Could this be because of something not within the Visual C++ 2015-2019 package for XP that is in 2022 for newer versions of Windows?

pzychotic commented 3 weeks ago

Yes, it built with your branch for x86, but this change still has to be made manually:

#631 (comment)

Correct, it only fixes the compile error. I don't plan to reintroduce official x86 support, see earlier comment for reason: https://github.com/DescentDevelopers/Descent3/issues/631#issuecomment-2414913740

It seems to work as well, but I'm still not getting it to work on XP, and I'm not sure why.

Hex editing the 60 00 00 00 entry to support older versions gets me past the is not a valid win32 application message:

If you want to try editing it, open the EXE in some hexeditor, find bytes 50 45 (PE) near the beginning of the file, and exactly 62 bytes after that you'll probably see sequence 06 00 00 00 (meaning Vista), then some 4 bytes (probably 00) and then again 06 00 00 00. Change both those occurrences to 05 00 01 00 (meaning XP). 

But, now I get the error of:

This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

Could this be because of something not within the Visual C++ 2015-2019 package for XP that is in 2022 for newer versions of Windows?

It probably is. You can try to build the project with VS2019. Or even VS2017, because that one has the last official compiler toolset v141_xp targeting Windows XP. No guaranties that this compiles at all, though.

own3mall commented 3 weeks ago

So, it looks like I won't be able to use Ninja to attempt this?

Trying to follow the directions here:

https://stackoverflow.com/questions/72377387/how-to-target-windows-xp-with-msvc2017-and-cmake

C:\Users\Own\source\pzychotic\Descent3>cmake -G "Visual Studio 15 2017" -T v141_xp ./
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
CMake Warning (dev) at CMakeLists.txt:116 (add_custom_command):
  Exactly one of PRE_BUILD, PRE_LINK, or POST_BUILD must be given.  Assuming
  POST_BUILD to preserve backward compatibility.

  Policy CMP0175 is not set: add_custom_command() rejects invalid arguments.
  Run "cmake --help-policy CMP0175" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at CMakeLists.txt:137 (find_package):
  By not providing "Findglm.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "glm", but
  CMake did not find one.

  Could not find a package configuration file provided by "glm" with any of
  the following names:

    glmConfig.cmake
    glm-config.cmake

  Add the installation prefix of "glm" to CMAKE_PREFIX_PATH or set "glm_DIR"
  to a directory containing one of the above files.  If "glm" provides a
  separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!

Any ideas on how to fix the above?

own3mall commented 3 weeks ago

Ok, I got vcpkg working with Visual Studio 2017 by editing the CMakeLists.txt file and adding:

include(../../vcpkg/scripts/buildsystems/vcpkg.cmake)

Before find package after cloning vcpkg from github and installing what it needed.

I created the solution using:

cmake CMakeLists.txt -G "Visual Studio 15 2017" -T v141_xp -Wno-dev

I had to make one code change for Visual Studio to compile the solution, but after that, it produced these files:

Descent3_compiled_using_xp_switch.zip

But, it still won't run in XP.

Same problem as before:

This application has failed to start because the application configuration is incorrect.  Reinstalling the application may fix this problem.

@pzychotic Any idea? I feel like I'm close...

Event viewer shows:

The element ms_asmv1:application appears as a child of element urn:schemas-microsoft-com:asm.v1^assembly which is not supported by this version of Windows.
own3mall commented 3 weeks ago

Ok, I got it to work! It runs fine on my XP x64 machine (32-bit version Descent3 exe). I tested it on 10/28/24 with Windows XP SP3 on an i7 920 rig with a Geforce 8800 GT video card in it, and it works fine. I imagine the attached binary will work on Windows XP SP3 (x86) and Windows XP SP2 (x64) systems that have an Nvidia or ATI/AMD video card installed with the latest drivers available for XP. I know it does not work on my netbook running XP because Intel's video drivers are lacking features needed by the game.

Attached is a version that can be used in XP. Rename the original Descent3.exe binary to Descent3_old.exe and extract everything from this zip file into your Descent 3 directory.

Descent 3 Latest for Windows XP.zip

I fixed the manifest error by telling the linker not to generate one:

image

If this helps anyone, you can download the source directory I was working on with the generated solution file here:

http://dls.atl.webehostin.com/descent/Descent3_git_src_pzychotic_branch_fix_win_x86_build_windows_xp_source_with_visual_studio_solution.zip

pzychotic commented 3 weeks ago

Glad you got it working!

It's amazing how many things I take for granted nowadays when working with the latest tools. Like vcpkg being installed by VS2022, that you have to setup manually with older versions.

Is there anything we can still help you with, or can this issue be closed?

own3mall commented 3 weeks ago

Yep, closing. Feel free to point anyone to that zip if they need a 32-bit build or one that works on XP.

Thank you so much for your help on this.