[Bug 53732] New: Ghost Master: ReShade hook doesn't load properly (no UI)
https://bugs.winehq.org/show_bug.cgi?id=53732 Bug ID: 53732 Summary: Ghost Master: ReShade hook doesn't load properly (no UI) Product: Wine Version: 7.18 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: opengl Assignee: wine-bugs(a)winehq.org Reporter: varrok(a)gmail.com Distribution: --- Created attachment 73167 --> https://bugs.winehq.org/attachment.cgi?id=73167 Wine output while the game's run by cli Hi, I'm new here! Having issue with an old 2003 OpenGL-based (probably OGL1.x) game, Ghost Master. While the game by itself runs mostly fine (bar WMV cutscenes), it doesn't have any form of anti-aliasing (nor does wine seem to be able to force it like you could on Windows), so I tried using ReShade to achieve it. Sadly, even though the game launches correctly from ReShade's own OPENGL32.dll implementation (made sure of that), its (imgui-powered) ui does not appear at all during runtime. Tried the same steps on my Win10 VM, and it renders correctly there. Specs: Arch Linux 5.18.16-arch1-1 Nvidia GTX 1080 (properitary Nvidia drivers 515.65.01) What I tried: - current stable wine version - current dev wine version = wine-7.18-37-g2a4ec7dafc7 - both 32bit and 64bit wine prefixes - renaming all non-Reshade Opengl32.dll files in a paranoid attempt to force it to use the one I wanted (worked) How to reproduce: - Install the game (demo for convenience: https://www.fileplanet.com/archive/p-14042/Ghost-Master-Demo-English [issue happens there too]) - Download Reshade http://reshade.me/ (Possibly any, tested on 5.4.2; the site seems to have problems running, so mirror: https://www.techspot.com/downloads/7206-reshade.html ) - Run Reshade, go through the GUI installer, selecting ghost.exe -> OpenGL api -> any addons -> to finish - Launch game - Notice lack of Reshade UI -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53732 Béla Gyebrószki <gyebro69(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gyebro69(a)gmail.com --- Comment #1 from Béla Gyebrószki <gyebro69(a)gmail.com> --- You need to override opengl32.dll to native,builtin otherwise Wine uses it's own (builtin) opengl32. Create a new profile for 'ghost.exe' in winecfg's Application tab and override opengl32.dll to native,builtin in the Libraries tab. In this manner ReShade's UI is visible after starting the game, tried with Ghost Master from GOG. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53732 varrok(a)gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #2 from varrok(a)gmail.com --- @(In reply to Béla Gyebrószki from comment #1)
You need to override opengl32.dll to native,builtin otherwise Wine uses it's own (builtin) opengl32. Create a new profile for 'ghost.exe' in winecfg's Application tab and override opengl32.dll to native,builtin in the Libraries tab. In this manner ReShade's UI is visible after starting the game, tried with Ghost Master from GOG.
Thank you very much for the quick and on point response. It worked, which confuses me to a great extent, as I don't know why it didn't work before. From my understanding, the default setting can be boiled to: "search wine's opengl32.dll, then if something is not present there, use the 3rd party one". I thought that if I remove the wine's opengl32.dll (drive_c/Windows/system32/opengl32.dll and syswow64/opengl32.dll) it would fallback to reshade's dll, yet it produces a different outcome than your solution. Furthermore, if I then remove/rename the reshade's dll as well, the game would fail to launch, so surely it does access the reshade file. I'll mark this as resolved, but an explanation would probably help me make fewer mistakes in the future. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53732 Zeb Figura <z.figura12(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12(a)gmail.com --- Comment #3 from Zeb Figura <z.figura12(a)gmail.com> --- (In reply to varrok from comment #2)
It worked, which confuses me to a great extent, as I don't know why it didn't work before. From my understanding, the default setting can be boiled to: "search wine's opengl32.dll, then if something is not present there, use the 3rd party one".
I thought that if I remove the wine's opengl32.dll (drive_c/Windows/system32/opengl32.dll and syswow64/opengl32.dll) it would fallback to reshade's dll, yet it produces a different outcome than your solution. Furthermore, if I then remove/rename the reshade's dll as well, the game would fail to launch, so surely it does access the reshade file.
I'll mark this as resolved, but an explanation would probably help me make fewer mistakes in the future.
The native/builtin logic only controls loading of the entire dll, not individual exports. If exports are missing from the DLL that's loaded, things will just fail. (We can't implement it the way you're thinking, either.) Builtin DLLs are loaded regardless of the content of the DLL file on disk. In fact, builtin DLLs are never loaded from the prefix; they're always loaded from the install directory (e.g. in /usr/lib/) or from the build tree. The copy in the prefix only exists because some programs expect (some) libraries to exist on-disk and to match the in-memory image. However, we don't load builtins if the file on disk is absent entirely. This is basically because programs expect this behaviour. In essence you can think of it like transparently swapping out the on-disk DLL for the builtin one from the install/build directory if builtin load order is specified. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53732 --- Comment #4 from varrok(a)gmail.com --- (In reply to Zeb Figura from comment #3)
(In reply to varrok from comment #2)
It worked, which confuses me to a great extent, as I don't know why it didn't work before. From my understanding, the default setting can be boiled to: "search wine's opengl32.dll, then if something is not present there, use the 3rd party one".
I thought that if I remove the wine's opengl32.dll (drive_c/Windows/system32/opengl32.dll and syswow64/opengl32.dll) it would fallback to reshade's dll, yet it produces a different outcome than your solution. Furthermore, if I then remove/rename the reshade's dll as well, the game would fail to launch, so surely it does access the reshade file.
I'll mark this as resolved, but an explanation would probably help me make fewer mistakes in the future.
The native/builtin logic only controls loading of the entire dll, not individual exports. If exports are missing from the DLL that's loaded, things will just fail. (We can't implement it the way you're thinking, either.)
Builtin DLLs are loaded regardless of the content of the DLL file on disk. In fact, builtin DLLs are never loaded from the prefix; they're always loaded from the install directory (e.g. in /usr/lib/) or from the build tree. The copy in the prefix only exists because some programs expect (some) libraries to exist on-disk and to match the in-memory image.
However, we don't load builtins if the file on disk is absent entirely. This is basically because programs expect this behaviour.
In essence you can think of it like transparently swapping out the on-disk DLL for the builtin one from the install/build directory if builtin load order is specified.
I really appreciate the explanation, thanks! It's all clear -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=53732 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #5 from Austin English <austinenglish(a)gmail.com> --- Closing. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla