MCPcopy Create free account
hub / github.com/ThirteenAG/Ultimate-ASI-Loader

github.com/ThirteenAG/Ultimate-ASI-Loader @v9.7.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v9.7.2 ↗ · + Follow
1,713 symbols 2,404 edges 16 files 286 documented · 17% updated 13d agov9.7.2 · 2026-06-02★ 2,02930 open issues

Browse by type

Functions 1,620 Types & classes 93
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AppVeyor GitHub Actions Build

Ultimate ASI Loader

DESCRIPTION

This is a DLL file that adds ASI plugin loading functionality to any game that uses any of the following libraries:

Win32 Win64
d3d8.dll -
d3d9.dll d3d9.dll
d3d10.dll d3d10.dll
d3d11.dll d3d11.dll
d3d12.dll d3d12.dll
dxgi.dll dxgi.dll
ddraw.dll -
dinput.dll -
dinput8.dll dinput8.dll
dsound.dll dsound.dll
msacm32.dll -
msvfw32.dll -
version.dll version.dll
wininet.dll wininet.dll
winmm.dll winmm.dll
winhttp.dll winhttp.dll
xlive.dll -
binkw32.dll -
bink2w32.dll -
- binkw64.dll
- bink2w64.dll
vorbisFile.dll -
xinput1_1.dll xinput1_1.dll
xinput1_2.dll xinput1_2.dll
xinput1_3.dll xinput1_3.dll
xinput1_4.dll xinput1_4.dll
xinput9_1_0.dll xinput9_1_0.dll
xinputuap.dll xinputuap.dll

It is possible (and sometimes necessary) to load the original DLL by renaming it to <dllname>Hooked.dll, e.g. d3d12Hooked.dll. With binkw32.dll and vorbisFile.dll, it is optional, and you can simply replace the DLL. Always make a backup before replacing any files.

INSTALLATION

To install it, you just need to place the DLL into the game directory. Usually, it works as dinput8.dll, but if that doesn't work, you can rename it (see the list of supported names above).

USAGE

Put ASI files in the game's root directory or in the scripts, plugins, or update folder. If configuration is necessary, the global.ini file can be placed in the 'scripts' or 'plugins' folder. It can be used alongside the chosen DLL, and if so, it is also possible to use the DLL name for the ini file (e.g., version.dll/version.ini). See an example of global.ini here.

UPDATE FOLDER (Overload From Folder)

It is possible to install mods that replace files via the update folder, allowing you to avoid replacing original game files.

For example, if a mod replaces the file located at:

Resident Evil 5\nativePC_MT\Image\Archive\ChapterEnd11.arc

With Ultimate ASI Loader installed, you can create an update folder and place the file at:

Resident Evil 5\update\nativePC_MT\Image\Archive\ChapterEnd11.arc

To revert the game to its initial state, simply remove the update folder.

Please note that the update folder is relative to the location of the ASI loader, so you need to adjust paths accordingly. For example:

\Gameface\Content\Movies\1080\GTA_SA_CREDITS_FINAL_1920x1080.mp4

Should be adjusted to:

\Gameface\Binaries\Win64\update\Content\Movies\1080\GTA_SA_CREDITS_FINAL_1920x1080.mp4

Starting with version 7.9.0, you can use this functionality for total conversions:

re5dx9_update

Two or more folders must be specified, and exist, for the selector dialog to appear. Define them inside global.ini under [FileLoader] section using the OverloadFromFolder key. Use the | symbol as a separator. If only one folder is specified and exists, it will be used to overload files, but the selector will not appear. Without an ini file, the update folder is always used if it exists. Example:

[FileLoader]
OverloadFromFolder=update | nightmare

To create a custom header, create update.txt inside update or total conversion folder and insert the custom name there.

Resident Evil 5\nightmare\update.txt:

Resident Evil 5 - Nightmare (Story mode mod)

To get the current update path, use the ASI Loader's GetOverloadPathA or GetOverloadPathW exports from the ASI plugin.

bool (WINAPI* GetOverloadPathW)(wchar_t* out, size_t out_size) = nullptr;

ModuleList dlls;
dlls.Enumerate(ModuleList::SearchLocation::LocalOnly);
for (auto& e : dlls.m_moduleList)
{
    auto m = std::get<HMODULE>(e);
    if (IsModuleUAL(m)) {
        GetOverloadPathW = (decltype(GetOverloadPathW))GetProcAddress(m, "GetOverloadPathW");
        break;
    }
}

std::wstring s;
s.resize(MAX_PATH, L'\0');
if (!GetOverloadPathW || !GetOverloadPathW(s.data(), s.size()))
    s = GetExeModulePath() / L"update";

auto updatePath = std::filesystem::path(s.data());

ADDITIONAL WINDOWED MODE FEATURE (x86 builds only, legacy feature)

The 32-bit version of the ASI loader has a built-in wndmode.dll, which can be loaded if you create an empty wndmode.ini in the folder with the ASI loader's DLL. It will be automatically filled with example configuration at the first run of the game. Settings are not universal and should be changed for each specific game, but usually, it works as is.

D3D8TO9

Some mods, like SkyGfx, require d3d8to9. It is also a part of the ASI loader, so to use it, create global.ini with the following content:

[GlobalSets]
UseD3D8to9=1

The ASI Loader must be named d3d8.dll in order for this feature to take effect.

See an example of global.ini here.

CrashDumps

The ASI loader is now capable of generating crash minidumps and crash logs. To use this feature, create a folder named CrashDumps in the folder with the ASI loader's DLL. You can disable it via the DisableCrashDumps=1 ini option.

Using with UWP games

  1. Enable Developer Mode (Windows Settings -> Update and Security -> For Developers -> Developer Mode) image
  2. Install a UWP game, for example, GTA San Andreas. image
  3. Launch a UWP game through the start menu.
  4. Open UWPInjector.exe from the UWPDumper download. image
  5. Enter the Process ID that is displayed from the injector and then hit enter.
  6. Wait until the game is dumped. image
  7. Go to the directory : C:\Users\[YOUR USERNAME]\AppData\Local\Packages\[YOUR UWP GAME NAME]\TempState\DUMP
  8. Copy these files into a new folder somewhere else of your choosing.
  9. Uninstall a UWP game by clicking on the start menu, right-clicking on its icon, and uninstall. ![image](https://user-images.githubusercontent.com/4904157/136559019-bdd6d278-d2ae-4acf-b119-9933baa

Core symbols most depended-on inside this repo

Shape

Function 1,531
Method 89
Class 78
Enum 15

Languages

C++89%
C11%

Modules by API surface

source/dllmain.h963 symbols
source/xlive/xliveless.cpp303 symbols
external/miniz/miniz.c191 symbols
source/dllmain.cpp169 symbols
source/xlive/xliveless.h23 symbols
source/exception.hpp21 symbols
source/demo_plugins/MonoLoader.cpp13 symbols
external/ModuleList/ModuleList.hpp9 symbols
tests/tests.cpp6 symbols
external/miniz/miniz.h6 symbols
source/demo_plugins/VirtualFileServer.cpp5 symbols
source/demo_plugins/RE7Demo.InfiniteAmmo.cpp2 symbols

For agents

$ claude mcp add Ultimate-ASI-Loader \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page