Changelog | 1.10.0 - 2021-07-23
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
Additions
Support for Steam Stub DRM Bypass & Integrated SteamHook 0bb5e39
Reloaded now has an experimental feature allowing for games encrypted with the Steam Embedded DRM ("Steam Stub") to be natively supported.
Steam Embedded DRM modifies the game EXE such that it is encrypted at load time and only decrypted when the game code starts running, which previously was problematic as this meant that mods which modify game code would not work without an external workaround such as Steamless or Ultimate ASI Loader. This was because by design, Reloaded makes mods initialize before any game code is executed.
Now, if Reloaded detects Steam Embedded DRM, it will hook many commonly used APIs (and then unhook), hoping that it allows mods to be loaded as early in the game's startup sequence as possible once the EXE has been decrypted.
In addition, the popular SteamHook
mod which allows you to boot Steam games without the games restarting themselves has been directly integrated with Reloaded. This was necessary for the implementation of the former feature. The legacy SteamHook
shouldn't conflict with the new SteamHook
; however is now redundant.
*Experimental: Tested with Yakuza Kiwami, Sonic Adventure 2, No Man's Sky and Denuvo-less Persona 4 Golden.
Recognize Injection from External Source a763ce6
Reloaded now recognizes when it has been injected from an external source, such as ASI Loader or foreign mod loader.
Please note that the Steam Embedded DRM Bypass
feature listed, as Reloaded assumes that the mod loader or program which injected Reloaded already handles this problem.
Bootstrapper now compiles to a single DLL. 4ea4385
This should make the bootstrapper a bit easier to carry around.
I originally wanted it to be this way, but before it was a bit more non-trivial to do. However with the upcoming .NET 6, Microsoft now also ships the components necessary to set up .NET Core from C++ as static libraries.
Bootstrapper Self Updating, Version Detection & Version Information
- Bootstrapper Version Details
0687066
- Auto Update Reloaded Bootstrapper in ASI Loader Deployments
de4dc7d
- Message Box Showing Updated Bootstrappers
d3d06b8
Reloaded is only around 99% C#; that remaining 1% is some C++ code used to start the .NET Core Runtime in a native process and set up Reloaded. In addition, the Bootstrapper
is often used to integrate Reloaded with other mod loaders, such as Ultimate ASI Loader
.
While the bootstrapper itself is very, very rarely updated, there are extremely rare times at which it does need to be updated; such as when adding features like recognising injection from external sources (see above). Keeping track of outdated bootstrappers, especially when users are able to use the bootstrapper with any arbitrary DLL Injector or copy it anywhere they like is a difficult task; and end users would be typically unaware of when the bootstrapper is updated.
(It also detects bootstrappers missing version information, like this one)
As such, version information was added to every new bootstrapper DLL file, and the bootstrapper version is always checked during Reloaded's initialisation time. In this way, Reloaded is now able to inform the user when an outdated bootstrapper is used.
In addition, any Reloaded Bootstrapper deployed using Reloaded's own Deploy ASI Loader
feature, will now automatically be updated when the launcher is first booted.
Miscellaneous
- Added: Version check for Bootstrapper
e2dbc6c
- Added: Minor text to Delayed Initialization (Steam Stub)
2a8cb18
- Fixed: Bad Indents in .csproj left over by VisualStudio
30e5e0d
Code Cleanup
- Changed: Refactor ProcessExitHook
ba69a4c
- Changed: Minor Cleanup of Logging Calls
f742503
- Changed: Minor Refactor of AsiLoaderDeployer
f1984b6
- Changed: Refactor EntryPointParameters into Reloaded.Mod.Shared
dd72df6