How thirteenag/ultimate-asi-loader works
Ultimate ASI Loader is a Windows DLL that presents as a game’s expected library, forwards its exports, and loads ASI plugins. The principal flow is game process → DLL initialization → startup setup, which loads the original library, configures virtual files, and loads plugins. Other substantial capabilities include compatibility shims, crash reporting, and runtime C++ snippets. The README and sampled excerpts establish the main flow; several subsystem implementations were not sampled, so their internal connections are omitted.
Main entry points: main.cpp Loader DLL · startup.cpp Startup hooks · snippets.cpp C++ snippets · resolve.cpp Virtual file resolution
Components 24
Loader entry
- Loader DLL
source/loader/main.cpp - Loader identity and settings
source/loader/core/loader.cpp - Library proxy
source/loader/proxy/proxy.cpp - Bink proxy
source/loader/proxy/bink.cpp
Startup runtime
- Startup hooks
source/loader/startup/startup.cpp - Plugin loading
source/loader/plugins/plugins.cpp - ASI plugins
source/plugins
Virtual files
- VFS setup and hooks
source/loader/vfs/setup.cpp - Virtual file resolution
source/loader/vfs/resolve.cpp - Archive packages
source/loader/vfs/zip.cpp - File layers
source/loader/vfs/layers.cpp - Virtual file server client
source/loader/vfs/server.cpp
Compatibility
- Window and display modes
source/compat/wndmode - XLive compatibility
source/compat/xlive/xliveless.cpp - Vorbis compatibility
source/compat/vorbisfile/vorbisfile.cpp - D3D8 window shim
source/compat/d3d8/maximized_shim.cpp
Diagnostics and snippets
- Crash dumps
source/loader/crash/crashdump.cpp - Crash reports
source/loader/crash/report.cpp - C++ snippets
source/loader/cxx/snippets.cpp - Snippet parser
source/loader/cxx/cxxsnippets/parser.cpp - Loader dialogs
source/loader/ui/dialogs.cpp - Logging
source/loader/core/log.cpp
Other components
- Game process
- Virtual file server
source/VirtualFileServer/VirtualFileServer.cpp
Connections 18
- Game process → Loader DLL: loads proxy
- Loader DLL → Startup hooks: initializes hooks
source/loader/main.cpp - Loader DLL → Crash dumps: installs handler
source/loader/main.cpp - Loader DLL → Loader identity and settings: initializes identity
source/loader/main.cpp - Loader DLL → Library proxy: falls back to
source/loader/main.cpp - Startup hooks → Library proxy: loads original
source/loader/startup/startup.cpp - Startup hooks → VFS setup and hooks: sets up
source/loader/startup/startup.cpp - Startup hooks → Plugin loading: loads plugins
source/loader/startup/startup.cpp - Startup hooks → D3D8 window shim: may disable
source/loader/startup/startup.cpp - Plugin loading → ASI plugins: loads ASIs
- VFS setup and hooks → Virtual file resolution: configures
- Virtual file resolution → File layers: selects files
- Virtual file resolution → Archive packages: reads packages
- Virtual file server client → Virtual file server: starts and communicates
source/loader/vfs/server.cpp - Loader DLL → Window and display modes: shuts down
source/loader/main.cpp - C++ snippets → Snippet parser: checks source
source/loader/cxx/snippets.cpp - C++ snippets → Crash dumps: registers description
source/loader/cxx/snippets.cpp - C++ snippets → Loader dialogs: reports errors
source/loader/cxx/snippets.cpp