An ASI plugin that fixes crashes and display issues in legacy Direct3D9 games on devices with non-default display orientations - such as the Lenovo Legion Go, Steam Deck, ROG Ally, GPD Win, Ayaneo, and others - where the Windows display orientation differs from the default.
This plugin intercepts the display enumeration APIs and presents a normalized "default" view to the game. The OS rotation is left completely untouched - the game simply never sees it.
EnumDisplaySettingsA/EnumDisplaySettingsWEnumDisplaySettingsExA/EnumDisplaySettingsExWGetSystemMetrics(SM_CXSCREEN / SM_CYSCREEN)IDirect3D9::GetAdapterDisplayModeIDirect3D9::EnumAdapterModes
- A Direct3D9 game (most PC games from ~2002–2012)
- Ultimate ASI Loader - download the x86 version, rename to
dinput8.dll, place in the game folder
Note: If you already have a ThirteenAG Widescreen Fix installed for the game, you already have the ASI Loader - skip straight to installation.
- Download
DisplayOrientationFix.asiandDisplayOrientationFix.inifrom the Releases page. - Copy both files into the
scriptsfolder inside your game directory (create it if it doesn't exist). - Make sure
dinput8.dll(Ultimate ASI Loader) is in the game's root folder. - Launch the game normally — no need to change display orientation.
YourGame/
├── game.exe
├── dinput8.dll (Ultimate ASI Loader)
└── scripts/
├── DisplayOrientationFix.asi ← this plugin
└── DisplayOrientationFix.ini ← configuration
| Game | Status | Device | OS | Orientation | Notes |
|---|---|---|---|---|---|
| Need for Speed: Underground | ✅ Working | Lenovo Legion Go | Windows 11 | Landscape (flipped) | Fixes startup crash before EA logo |
These games have been reported to crash on handheld displays (#1421, #1449):
- Need for Speed: Most Wanted (2005) - reported crashing on Steam Deck
- Need for Speed: Carbon - reported crashing on Steam Deck
Edit DisplayOrientationFix.ini:
| Setting | Default | Description |
|---|---|---|
NormalizeDisplayOrientation |
1 |
Enable/disable the fix |
EnableLog |
0 |
Write debug info to DisplayOrientationFix.log |
Game still crashes:
- Set
EnableLog = 1in the INI - Try launching again
- Check
DisplayOrientationFix.login thescriptsfolder - Open an issue with the log contents and game name
Plugin not loading:
- Make sure
dinput8.dll(Ultimate ASI Loader) is in the game folder (next to the game exe, not insidescripts) - Make sure you have the x86 (32-bit) version of the ASI Loader, not x64
- Make sure the
.asifile is inside thescriptsfolder
MSYS2 MINGW32 on Windows:
g++ -shared -static -O2 -s -o DisplayOrientationFix.asi dllmain.cpp -ld3d9Linux cross-compilation:
i686-w64-mingw32-g++ -shared -static -O2 -s -o DisplayOrientationFix.asi dllmain.cpp -ld3d9- Original crash analysis from issue #1421 by @slyh
- ThirteenAG for the Ultimate ASI Loader
MIT