-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Special K: Add toggle for loading ReShade as Special K Plugin #919
Conversation
…ade and SpecialK independently
Tested fresh install of both tools with HoloCure, works as expected. There was some strange behaviour observed where the SpecialK DLL seemed to get copied over again for some reason. This may be independent of this PR and should be investigated separately, but if possible, fixed in this PR. |
Will work on simplifying some of the duplicate check logic where I can, think I overcomplicated it a bit on the ReShade side in |
Test cases (2 consecutive runs per test):
|
As an aside, we should improve the logging+notifier message for ReShade+SpecialK DLL name conflict |
This is mostly working now and can be merged soon |
In testing, I had trouble getting ReShade+SpecialK to move into the game files, turns out I had the logic wrong for the There are a couple of issues left that I'm investigating with ReShade and SpecialK sometimes complaining about a conflict when there isn't one. |
No it shouldn't, I'm a dumbass. This is working as expected, I just made a mistake. |
Okay, fixed the logic so that ReShade is actually preferred. Will push. |
We should also note on the wiki that ReShade takes priority over SpecialK when there is a DLL conflict if both are installed fresh at the same time, because ReShade is installed early. |
Hmm, when using ReShade+SpecialK as a plugin (Default behaviour), it's incorrectly copying the ReShade DLLs as though they were independent. Will need to fix this. |
Fixed, minor logic mistake in |
At long last, everything in this PR is working as expected. I'll do some minor code review to refresh myself on some of the messier sections and see if any improvements should be made before merging. The logic for removing ReShade installs on toggling the ReShade+SpecialK plugin option will come in a separate PR, which will generally manage installing ReShade on top of SpecialK, and better install management. I may also be able to include some logic in that PR to remove renamed DLLs, by checking the values of |
Need to bump langfiles |
Langfiles updated, version bumped, shellcheck is good, this is ready to merge. |
Another piece for #894.
Overview
Currently, when ReShade and SpecialK are enabled together, SteamTinkerLaunch does some magic and takes a different install path for ReShade. We copy over the DLLs as
ReShade32.dll
/ReShade64.dll
instead of using the DLL name(s). We take an entirely different install route and name the DLLs this way so that SpecialK can find the ReShade DLLs names and load them instead of the game doing it. I am not sure why this is the default but it seems to work and be the more desirable behaviour, so we'll leave it as the default.However, for compatibility, sometimes a user might want to load ReShade and Special K separately, where they are entirely independent of each other, and it's up to the game to load the DLLs. Some newer versions of ReShade don't work with SpecialK in some games (NieR:Automata and NieR:Replicant don't support versions of ReShade above 5.4.2 when using it as a SpecialK plugin, but iirc do work when both are loaded independently).
This PR adds an option to toggle whether or not ReShade is loaded as a SpecialK plugin to the Game Menu, grouped with the SpecialK options.
Future Work
For now, the toggle won't work for existing installs, it only works for clean SpecialK installs with no ReShade installed yet. If a user installs ReShade as a SpecialK plugin, then disables the option and launches the game again, the existing ReShade DLLs for SpecialK are NOT removed. This feature could potentially be added as part of this PR, to make the toggling more useful.
This feature could also go in a future PR where we clean out existing ReShade installs when SpecialK is enabled. That PR could be a general one that adds better DLL management when using ReShade+SpecialK.
This PR is a draft as it has had minimal testing.
TODO: