Skip to content
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

ReShade + SpecialK: Improve installing SpecialK on top of ReShade #921

Merged
merged 2 commits into from
Sep 26, 2023

Conversation

sonic2kk
Copy link
Owner

The last major piece of work required for #894.

Overview

Currently if a user installs ReShade and then tries to install SpecialK, the ReShade DLLs from the standalone install will be left over. Likewise, if a user installs ReShade and SpecialK together with ReShade as a SpecialK plugin, and then either disables this option OR disables SpecialK entirely, the previous ReShade DLLs will not get cleaned up.

This gets messy, pollutes game files, and gets in the way of some duplicate DLL detection logic.

This PR adds logic to do the following:

  • If ReShade is installed and a user tries to install SpecialK (with the default ReShade as SpecialK plugin behaviour enabled), remove any existing standalone ReShade files before installing ReShade for SpecialK as a plugin
  • If SpecialK and ReShade are installed, and if the default ReShade as SpecialK Plugin behaviour is enabled, when SpecialK is disabled, remove SpecialK ReShade files and install ReShade as normal
  • If SpecialK is installed, then ReShade is installed as a plugin, and then the plugin behaviour is disabled, the old ReShade DLLs are removed so only the standalone ReShade DLLs exist
  • If SpecialK is installed with a standalone ReShade install (not as SpecialK plugin), when the user enables the plugin behaviour, the standalone DLLs are removed so only the plugin ReShade DLLs exist
  • If SpecialK is installed and ReShade is installed as a plugin, when SpecialK is disabled, the ReShade plugin install is replaced with a regular standalone ReShade install

This cleans up the game files a lot and makes for a cleaner experience.

Future Work

I am not too sure how the INI file cleanup should work, for now it's a toggle in the ReShade remove functions. For now they're left as-is, but in future, we may need to rename them somehow, so configuration can be preserved. A user can do this manually for now, though.


I tested this with HoloCure and NieR:Automata, so I am confident it works. It also won't get in the way of the DLL duplicate checking logic. This is pretty much ready for merging after some quick code review!

@sonic2kk sonic2kk merged commit 420f5cb into master Sep 26, 2023
@sonic2kk sonic2kk linked an issue Sep 26, 2023 that may be closed by this pull request
@sonic2kk sonic2kk deleted the spek-ontop-resh branch September 30, 2023 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ReShade compatibility with Special K
1 participant