3.7 KiB
Ultra Wide ASI Core injection for Reshade
This repository is dedicated on Ultra Wide asi plugins core for Reshade.
It's dedicated on injecting assembly code to modify game's behaviour (FOV, aspect ratio and more in games).
They're intended to be used with my other Reshade project addons.
Building
Download this repository. Open the .sln provided. Build the solution for release. The solution has an x64 folder with Release ini it. .asi files shoud be found there.
An extra dll is necessary to be used with my injection dll plugins.
Its name is zydis.dll (assembler/disassembler).
The zydis project can easily be found on github.
You have to build it first in order for my plugins to work.
You will also need zydis core project in addition to zydis.
Installation
Once zydis and my project is built, you can drop zydis.dll next to game's executable. Don't forget to drop also the .dll file corresponding to your game.
Prior to this, you would have built the addon project and dropped the respective .addon file into the game's executable folder.
Having done all of this, you can run the game and hit "Home" key when Reshade has successfully hooked game's API (DX10/11/12/Vulkan).
Check the boxes, adjust sliders and see the effects in real time in game.
Interesting projects
Uncharted LOTC for its cinematics fix.
Wuchang Fallen Feathers for its approach on fixes detours (using VEH debugging).
Cronos: The New Dawn for its implement of Unreal Engine SDK (see code below).
// Devs console re-creation
auto start = std::chrono::high_resolution_clock::now(); // Measure the time to renable console
UEngine* Engine = nullptr;
for (int i = 0; i < 100; ++i) { // gives 10 seconds to find UE Engine
std::this_thread::sleep_for(std::chrono::milliseconds(100));
Engine = UEngine::GetEngine();
if (Engine && Engine->ConsoleClass && Engine->GameViewport)
break;
}
if (!Engine || !Engine->ConsoleClass || !Engine->GameViewport) {
logger->error("Console could not be found in engine.");
return;
}
logger->info("Console found in engine");
/* Creates a new UObject of class-type specified by Engine->ConsoleClass */
UObject* NewObject = UGameplayStatics::SpawnObject(Engine->ConsoleClass, Engine->GameViewport);
if (NewObject)
{
logger->info("Successfully spawned console object");
// Set the console viewport so that it will be displayed
Engine->GameViewport->ViewportConsole = static_cast<UConsole*>(NewObject);
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = end - start;
logger->info("Console fully reactivated in {:.3f}s and bound to key Tilde", elapsed.count());
logger->info("------------------ User inputs ------------------");
g_Console_Enabled = true;
}
else {
logger->error("Could not spawn console object");
}
Credits
This project use the following other projects.
SafetyHook