elishacloud / dxwrapper

Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes.
zlib License
1.23k stars 90 forks source link

First try #219

Closed Klemci closed 1 year ago

Klemci commented 1 year ago

EDIT:

Well it starts the game and keeps the correct 4:3 AR, but dgvoodoo (that didn't kept the AR) is not loaded !!

Second start, dgvoodoo loads (AR lost), but quit game freezed computer :p

//

Should it be good ?

Game is Still Life, that needs the layer NTSP5 set btw.

//

I need :

d3d8.dll (from "Stub" folder) dxwrapper.dll dxwrapper.ini + D3D9.dll is dgvoodoo's, i used d3d8to9 d3d8.dll before but dxwrapper is recommended from the git's page, so i try to set it up...

//

dxwrapper.ini = [General] RealDllPath = D3D9.dll (dgvoodoo) DisableLogging = 1

[Compatibility] D3d8to9 = 1 DisableGameUX = 1 EnableD3d9Wrapper = 1 HandleExceptions = 1 SingleProcAffinity = 1

[d3d9] ForceVsyncMode = 1

elishacloud commented 1 year ago

RealDllPath = D3D9.dll (dgvoodoo) this line is not correct. Since you are wrapping d3d8, you don't want the real dll to be something other than d3d8. Since you are using d3d8to9 you don't need to redirect dxwrapper to a d3d9.dll as d3d8to9 will automatically do that for you.

ForceVsyncMode = 1 this line probably does not do what you want. If you are trying to disable vsync then that is the correct line. If you are trying to enable vsync then you should enable EnableVSync instead.

EnableD3d9Wrapper = 1 this is not needed, as if you have d3d8to9 enabled it will automatically use the d3d9 wrapper.

HandleExceptions = 1 I would not enable this one unless you are specifically having an issue with a crash because of new CPUs not supported by the game.

Try with these settings:

[General]
DisableLogging = 1

[Compatibility]
D3d8to9 = 1
DisableGameUX = 1
SingleProcAffinity = 1

[d3d9]
EnableVSync = 1
Klemci commented 1 year ago

The idea of PCGWiki to use d3d8to9 (that git redirects to dxwrapper) is about VSync always ON working bad on new OS. https://www.pcgamingwiki.com/wiki/Still_Life#Vsync_.28Always_on.29_not_working_on_Windows_10

Well, i set the DLL to AUTO back, then only d3d8to9 set looks work perfectly (that's what i want/need),

CPUAffinity looks problematic (froze PC entirely on exit when enabled, cracklings sounds too, and some bad sync (e.g: load file had a pause then game responded), // So what about HandleExceptions in such case ?.. 7800X3D is my CPU.

ForceVsync 1 (off bc set 0) makes the game char speedy (runs fast), Force+ON works. ON/OFF only works too. All OFF too. IDK what PCGWiki is talking about.

DisableGameUX, idk if matters.

//

Thanks it works. logs.zip

elishacloud commented 1 year ago

The idea of PCGWiki to use d3d8to9 (that git redirects to dxwrapper)

If you want to use dgVoodoo2 also then it is better to use dxwrapper to do the d3d8to9 function, since dxwrapper has all the code in it. But it looks like this is already what you are doing.

So what about HandleExceptions in such case ?

HandleExceptions is for cases such as where a game runs some code and then checks how fast that code runs and does some math computation with the result. This can cause a divide by zero exception on newer processors because the code runs so fast that the time it takes to run the code is 0ms. Usually, the game will always crash at a certain point and then you enable HandleExceptions and it will stop crashing a that point.

DisableGameUX, idk if matters.

Probably not needed for you. This is mainly for a Windows 7 issue that happens on some computers that cause the game to hang on startup.

I am glad you got it working. Let me know if you have any additional questions.

Klemci commented 1 year ago

All perfectly understood.

d3d8to9 by Croosire updated this month btw (idk where chanfelogs). https://github.com/crosire/d3d8to9/releases/tag/v1.12.0

Thanks for all, have a nice day.