ThirteenAG / Ultimate-ASI-Loader

ASI Loader is the tool that loads custom libraries with the file extension .asi into any game process.
MIT License
1.21k stars 104 forks source link
asi asi-loader asi-plugins asiloader

AppVeyor GitHub Actions Build

Ultimate ASI Loader

DESCRIPTION

This is a DLL file that adds ASI plugin loading functionality to any game, which 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
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 -

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 DLL into the game directory. Usually, it works as dinput8.dll, but if it's not, there is a possibility to rename it(see the list of supported names above).

USAGE

Put ASI files in the game root directory, 'scripts', 'plugins', or 'update' folder. If a 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 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 actual file replacement.

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

ADDITIONAL WINDOWED MODE FEATURE

ASI loader has built-in wndmode.dll, which can be loaded if you create empty wndmode.ini in the folder with 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 in every specific case, 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 inside the scripts folder with the following content:

[GlobalSets]
UseD3D8to9=1

See an example of global.ini here.

CrashDumps

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 asi loader's dll. You can disable that 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
  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.
  12. Run the following command: Add-AppxPackage -Register AppxManifest.xml
  13. Place 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 an ini file with the same name, in this case: d3d11.ini, with the following content:
[GlobalSets]
DontLoadFromDllMain=0

Sometimes it may not be necessary, but UWP GTA SA didn't work with the current implementation of DontLoadFromDllMain=1.

  1. 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. Compiled binary here - GTASAUWP.RadioForAllVehicles.zip
  2. Click on the start menu and launch the game!
  3. See your mods in action.
    ApplicationFrameHost_2021-10-08_15-57-14