Welcome, Guest.
Username: Password: Remember me

TOPIC: Adding another wrapper as a proxy

Adding another wrapper as a proxy 3 years 7 months ago #7

What one can do to get around this is to inject ReShade via an injector tool instead of wrapping. Just pickup a tool like ENBInjector, configure it to inject the ReShade DLL and done, ReShade understands that too and you are now free to use another wrapper DLL.
Cheers, crosire =)
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 7 months ago #8

crosire wrote:
What one can do to get around this is to inject ReShade via an injector tool instead of wrapping. Just pickup a tool like ENBInjector, configure it to inject the ReShade DLL and done, ReShade understands that too and you are now free to use another wrapper DLL.
Unfortunately this method doesn't work for Beyond Good & Evil. I am using the Widescreen fix d3d9 wrapper then try to inject ReShade32.dll with ENB Injector. But only the widescreen fix libraries get injected. Widescreen fix has the following files in the executable directory:
d3d9.dll
d3d9.ini

Tracelog
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 6 months ago #9

crosire wrote:
What one can do to get around this is to inject ReShade via an injector tool instead of wrapping. Just pickup a tool like ENBInjector, configure it to inject the ReShade DLL and done, ReShade understands that too and you are now free to use another wrapper DLL.

What would be the downsides (if any) of using this method? You've caught my attention!
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 6 months ago #10

kgonepostl wrote:
What would be the downsides (if any) of using this method? You've caught my attention!
Well, you have to launch the injector app everytime you want to play your game, so more work. There shouldn't be any more downsides apart from that.
Cheers, crosire =)
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 3 months ago #11

please add chain load of another dlls with relative and absolute path support.

Its really very simple thing to do:

1) read reshade.fx for

#define proxy_name = "path" (proxy_d3d8 proxy_opengl32 proxy_dsound or whatever the name of library reshade usese, also non hardcoded dynamic name would be great to load some other dlls and reroute game from original to modified)

2) split proxy_name by _ delimiter use 2nd part of string as name for replaced dll ( d3d9 or opengl32

3) set variable like

$name_proxy_path (d3d8_path dxgi_path)


4) add few little if then elses for each dll
if $name_proxy_path is defined
(
define $name = $name_proxy_path ( "enbd3d9.dll" or "moddlls\d3d9.dll" or "dpfix.dll" etc)
)
else
(
define $name = $name_system_path (system dll path)
)

5) Everywhere where you have path to system dlls just replace hardcoded patch with that $name and chain loading is ready to be used.

Its a fix that will take no longer than 10 minutes of your time. Please do it! There are many game fixes that pretend as d3d9 or other libs like that, and they unfortunately cant load anything after them, so there is no way combine them with reshade until reshade will allow to load them in renamed form (sometimes it does not work and some fixes need original dll name, in this case keeping name and placing them in subfolder should work if previous dll can load it from folder and set working dir properly to oirginal one, not a sub folder)

For example i was going to use reshade in combo with helixmod and dpfix in Deadly Premonition.

Dpfix which is d3d9.dll does not chain load anything, it should be last in order and game totally needs it. Helix load other dlls without problems and i need it to fix internal game shader by dumping and reinjectin them back in fixed form. So game loads Helix>DPFIX like d3d9.dll>dpfix.dll and there is no room for reshade, because without chainload it would be only possible to use reshade only, or helix>reshade but no dpfix.

Oh by the way until i forgot that - reshade crashing or not working properly if its loaded as 2nd dll without name of exact api used, so for example d3d9.dll as reshade name - works, d3d9.dll (helix) > reshade32.dll does not, but d3d9 > Reshade\d3d9.dll does work (yep to solve this issue i have to create subfolder and load reashade with actual api name dll and that not an option for all cases because some dlls does not allow to proxy chain from subfolders).
In addition to adding simple chain load feature into reshade you really have to review and fix the code that detects api in use by reshade dll name, to allow names like reshade32.dll loaded from previous proxy to work as you cant keep api name of dll in some cases.

please fix this ^_^
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 3 months ago #12

No, it's not easy and I think I explained multiple times now why that is. The crash when the name of the DLL is not of the API is one of expressions, that's just how the ReShade hooking system works.
Cheers, crosire =)
The administrator has disabled public write access.

Adding another wrapper as a proxy 3 years 3 months ago #13

Sorry, have not found any explanation in this thread why such usually easy thing is not that easy anymore. Care to point me to thread where it was explained? Anyway, easy or not - this feature is a must for many problematic games that rely on other proxy dlls for fixes. Please implement it as soon as possible.
The administrator has disabled public write access.