NVIDIAGameWorks / rtx-remix

Combined repo for the RTX-Remix runtime
https://www.nvidia.com/en-us/geforce/rtx-remix/
MIT License
1.31k stars 68 forks source link

[Critical Bug]: d3d8to9.dll that comes with Remix is faulty/malformed #548

Open PappaSlask opened 2 weeks ago

PappaSlask commented 2 weeks ago

Describe the bug

The dx8 to dx9 wrapper that comes with Remix needs to be looked over urgently. It is failing to hook a number of games including but not limited to: Dead Man's Hand (2004)

Discovered this by chance, when I was about to setup Remix for the aforementioned game, in order to hunt for another bug that's been plaguing my development, but that's a story for the future. Anywho, Remix refused to hook and I couldn't understand why. After a bit of troubleshooting I decided to swap out the Remix wrapper dll file to something else. So I downloaded crosire's wrapper and replaced it in the game folder, and voilá game booted, remix hooked, and everything worked fine.

How do you reproduce the bug?

What is the expected behavior?

The runtime should...

Version

0.5.1

Logs

No logs generated

Crash dumps

No response

Media

No response

Kim2091 commented 1 week ago

@PappaSlask All you need to do is rename the wrapper included with Remix to d3d8.dll. It is crosire's wrapper.

It wasn't intentional to have it named this way, per discussion in the Remix discord server. However, imo it is actually more beneficial so long as it's noted somewhere to rename it. Some DX9 games and other tools have issues when a DX8 wrapper is injected, which can lead to unintended behavior.

NV-LL commented 3 days ago

REMIX-3326 for tracking.

PappaSlask commented 3 days ago

@PappaSlask All you need to do is rename the wrapper included with Remix to d3d8.dll. It is crosire's wrapper.

It wasn't intentional to have it named this way, per discussion in the Remix discord server. However, imo it is actually more beneficial so long as it's noted somewhere to rename it. Some DX9 games and other tools have issues when a DX8 wrapper is injected, which can lead to unintended behavior.

Thanks for bringing this to my attention Kim! Makes sense as you said. May I suggest two possible solutions/additions to this:

1: Since Remix is installed on a per-game-basis, we could setup the Autodownloader to make the user choose if it's a dx8 game that needs the wrapper OR if it's a dx9 game that doesn't, and then simply make the Downloader include or not include the wrapper during the installation/extraction process.

2: Renaming the. .dll to something obvious like Rename_Me_To_d3d8_For_DX8_Compatibility