https://github.com/thirteenag/ultimate-asi-loader
ASI Loader is the tool that loads custom libraries with the file extension .asi into any game process.
https://github.com/thirteenag/ultimate-asi-loader
asi asi-loader asi-plugins asiloader
Last synced: 5 months ago
JSON representation
ASI Loader is the tool that loads custom libraries with the file extension .asi into any game process.
- Host: GitHub
- URL: https://github.com/thirteenag/ultimate-asi-loader
- Owner: ThirteenAG
- License: mit
- Created: 2013-11-06T15:23:05.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-03-27T02:47:02.000Z (about 1 year ago)
- Last Synced: 2025-04-06T05:05:06.430Z (about 1 year ago)
- Topics: asi, asi-loader, asi-plugins, asiloader
- Language: C++
- Homepage:
- Size: 5.54 MB
- Stars: 1,373
- Watchers: 37
- Forks: 111
- Open Issues: 11
-
Metadata Files:
- Readme: readme.md
- Funding: .github/funding.yml
- License: license
Awesome Lists containing this project
README
[](https://ci.appveyor.com/project/ThirteenAG/ultimate-asi-loader)
[](https://github.com/ThirteenAG/Ultimate-ASI-Loader/actions/workflows/msbuild.yml)
# 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](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/d3d8-Win32.zip) | - |
| [d3d9.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/d3d9-Win32.zip) | [d3d9.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/d3d9-x64.zip) |
| [d3d10.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/d3d10-Win32.zip) | [d3d10.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/d3d10-x64.zip) |
| [d3d11.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/d3d11-Win32.zip) | [d3d11.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/d3d11-x64.zip) |
| [d3d12.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/d3d12-Win32.zip) | [d3d12.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/d3d12-x64.zip) |
| [ddraw.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/ddraw-Win32.zip) | - |
| [dinput.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/dinput-Win32.zip) | - |
| [dinput8.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/dinput8-Win32.zip) | [dinput8.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/dinput8-x64.zip) |
| [dsound.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/dsound-Win32.zip) | [dsound.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/dsound-x64.zip) |
| [msacm32.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/msacm32-Win32.zip) | - |
| [msvfw32.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/msvfw32-Win32.zip) | - |
| [version.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/version-Win32.zip) | [version.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/version-x64.zip) |
| [wininet.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/wininet-Win32.zip) | [wininet.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/wininet-x64.zip) |
| [winmm.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/winmm-Win32.zip) | [winmm.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/winmm-x64.zip) |
| [winhttp.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/winhttp-Win32.zip) | [winhttp.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/winhttp-x64.zip) |
| [xlive.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xlive-Win32.zip) | - |
| [binkw32.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/binkw32-Win32.zip) | - |
| [bink2w32.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/bink2w32-Win32.zip) | - |
| - | [binkw64.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/binkw64-x64.zip) |
| - | [bink2w64.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/bink2w64-x64.zip) |
| [vorbisFile.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/vorbisFile-Win32.zip) | - |
| [xinput1_1.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinput1_1-Win32.zip) | [xinput1_1.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinput1_1-x64.zip) |
| [xinput1_2.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinput1_2-Win32.zip) | [xinput1_2.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinput1_2-x64.zip) |
| [xinput1_3.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinput1_3-Win32.zip) | [xinput1_3.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinput1_3-x64.zip) |
| [xinput1_4.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinput1_4-Win32.zip) | [xinput1_4.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinput1_4-x64.zip) |
| [xinput9_1_0.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinput9_1_0-Win32.zip) | [xinput9_1_0.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinput9_1_0-x64.zip) |
| [xinputuap.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/Win32-latest/xinputuap-Win32.zip) | [xinputuap.dll](https://github.com/ThirteenAG/Ultimate-ASI-Loader/releases/download/x64-latest/xinputuap-x64.zip) |
It is possible (and sometimes necessary) to load the original DLL by renaming it to `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](https://github.com/ThirteenAG/Ultimate-ASI-Loader/blob/master/data/scripts/global.ini).
## 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:

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:
```ini
[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.
```cpp
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(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](https://github.com/aap/skygfx_vc), require [d3d8to9](https://github.com/crosire/d3d8to9). It is also a part of the ASI loader, so to use it, create [global.ini](https://github.com/ThirteenAG/Ultimate-ASI-Loader/edit/master/readme.md#usage) with the following content:
```ini
[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](https://github.com/ThirteenAG/Ultimate-ASI-Loader/blob/master/data/scripts/global.ini#L8).
## 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)

2. Install a UWP game, for example, GTA San Andreas.

3. Launch a UWP game through the start menu.
4. Open [UWPInjector.exe](https://github.com/Wunkolo/UWPDumper) from the UWPDumper download.

5. Enter the Process ID that is displayed from the injector and then hit enter.
6. Wait until the game is dumped.

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.

10. Go to your directory with your new dumped files (the ones you copied over) and shift + right-click in the directory and "Open Powershell window here".
11. In that folder, rename **AppxBlockMap.xml** and **AppxSignature.xml** to anything else (to bypass UWP restrictions).
12. Run the following command: `Add-AppxPackage -Register AppxManifest.xml`
13. Place the Ultimate ASI Loader DLL into the game directory. You need to find out which name works for a specific game, in the case of GTA SA I've used **d3d11.dll**, so I put **dinput8.dll** from the x86 archive and renamed it to **d3d11.dll**.
14. Create a scripts or plugins folder within the root directory and place your plugins in it.
Rough code example of radio for all vehicles plugin [here](https://gist.github.com/ThirteenAG/868a964b46b82ce5cebbd4a0823c69e4). Compiled binary here - [GTASAUWP.RadioForAllVehicles.zip](https://github.com/ThirteenAG/Ultimate-ASI-Loader/files/7311505/GTASAUWP.RadioForAllVehicles.zip)
15. Click on the start menu and launch the game!
16. See your mods in action.
