84 lines
3.7 KiB
Markdown
84 lines
3.7 KiB
Markdown
# Ultra Wide ASI Core injection for Reshade
|
|
<p align="middle">
|
|
<img src="https://img.shields.io/badge/MIT-green?style=for-the-badge" alt="Buy Me A Coffee">
|
|
<a href="https://buymeacoffee.com/k4sh44">
|
|
<img src="https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black" alt="Buy Me A Coffee">
|
|
</a>
|
|
<img src="https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge&logo=c%2B%2B&logoColor=white" alt="Made with C++">
|
|
<a href="https://visualstudio.microsoft.com/">
|
|
<img src="https://img.shields.io/badge/Visual_Studio-5C2D91?style=for-the-badge&logo=visual%20studio&logoColor=white">
|
|
</a>
|
|
<a href="https://www.docker.com//">
|
|
<img src="https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge&logo=docker&logoColor=white">
|
|
</a>
|
|
</p>
|
|
|
|
|
|
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](https://github.com/cursey/safetyhook)
|