First post, by UCyborg
- Rank
- Oldbie
So there is this strange bug (might be a feature to allow some Xbox stuff to work, eg. Game bar) with Direct3D8 games on Windows 10 not fullscreening properly. The problem is hardcoded setting in d3d8.dll that forces so called maximized windowed mode. In previous Windows versions, this mode was activated only for certain applications via Windows Application Compatibility Engine's DXMaximizedWindowedMode shim. You can look up which applications are effected with Compatibility Administrator (32-bit), which is part of Windows 10 ADK.
Even if the game looks fullscreen, it's not real fullscreen, the window may just be setup this way that it doesn't have any borders, but the Desktop Window Manager is sill compositing in the background and giving you VSync, whether you want it or not.
You'll find patched d3d8.dll in the attached ZIP file for various Windows 10 builds. You can throw it in the same folder where your game exe resides. Only one byte is modified from 01 to 00. Or you could try replacing the system version, located in \Windows\SysWOW64 directory (or System32 on 32-bit Windows). This results in system file integrity check failure, sfc / DISM utilities will detect the corruption when ran and replace the file with original. The file will also be overwritten with every feature update.
If you know how to use OllyDbg, the procedure for fixing the system DLL yourself is as simple as locating exported function Direct3D8EnableMaximizedWindowedModeShim, then modifying the one and only referenced global variable from 1 to 0. This will make it behave like on older Windowses, so that mode is activated only if instructed so via settings in Compatibility Administrator. I used this trick to get Mafia working right, the only suggested solution until now was using some Direct3D8 -> Direct3D9 wrappers that don't even work right.
Same problem exists with some games using older Direct3D versions since Windows 8, to fix those, you can use Compatibility Administrator and enable DXPrimaryEmulation shim for the game with -DisableMaxWindowedMode parameter. See this for details, post #66. Note that Compatibility Administrator linked there is the old version, use the one bundled with Windows 10 ADK.
Important: Starting with Win10 version 1809 Build 17763 aka. October 2018 update, the exclusive fullscreen functionality has been removed from system d3d8.dll. As of this writing, it's still possible to use d3d8.dll from Build 17134 to get the real fullscreen back, but that could change any time with future builds.
wrote:A man can be himself only so long as he is alone; and if he does not love solitude, he will not love freedom; for it is only when he is alone that he is really free.