D3D9On12: Text is not displaying in Empire Earth II
I’m developing an unofficial patch for Empire Earth II. I have recently received many messages from players who are unable to play the game, due that the text is not displaying in game. All these players have new laptops with Intel CPUs. Most of these players are refunding their laptops for this reason.
After reading this page, I learnt that Intel is now using D3D9On12 in their drivers:
We use a D3D9on12 mapping layer, which maps graphics commands from DX9 to DX12. We do extensive compatibility and performance testing, and partner closely with Microsoft* and ISV’s (Independent Software Vendors) to optimize this solution continuously. Intel has been shipping this solution since our 12th Gen Intel® Core™ processor launch in 2021, and we’ll continue to invest heavily in this technology for both integrated and discrete graphics solutions.
I managed to re-produce the issue on my computer using ForceD3D9On12 d3d9.dll. My unofficial patch already supports d3d8to9, so d3d9.dll could be placed in the game folder and was loaded successfully.
Screenshots showing the issue:
Steps to reproduce the problem:
- Install the game.
- Install unofficial patch.
- * Edit file
UnofficialVersionConfig.txt
and add:UseWorkingDirectoryWorkaround=1
. - Paste
d3d9.dll
from ForceD3D9On12 to the game folder.
* This step is required, so the Launcher copies the game executable to to the main game folder (as EE3.exe
), instead of starting the game process from a different location. This is needed because otherwise the game would load d3d9.dll from the SysWOW64 directory.
As the patch developer, I’m usually trying to fix similar issues myself, using dozens of workarounds, assembly, etc. However this time it looks like the problem is in D3D9On12
itself, so maybe somebody could please check if this can be resolved? After all, the issue is quite serious since players who buy new laptops can’t play the game.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 3
- Comments: 30 (1 by maintainers)
thats not a fix, its a workaround and has no relevance to intel only configurations.
Empire Earth 2 is one of my favourite games. I really hope that this problem can be fixed.
I think it’s important that this issue is addressed. When I buy a new PC I find it important that I’m still able to enjoy older games. It’s a big part of what makes PC gaming special. To return to games you’ve been playing for years and see them run better on a new PC.
Hi @HerMajestyDrMona, unfortunately I don’t know the exact timeline for when it’ll be generally available in a public update (as this isn’t a security fix and it seems to be mostly tied to older apps with low usage it’s hard to justify servicing the change outside of the general OS update cadence, and I’m not privy to all the details there). It will be available to insider flights sooner than general release of course, but in the short term the best option for your users might be to just build the open source version of 9on12 and have that in the same directory as the game’s exe. That said, they would likely need to play in windowed mode. The open source version doesn’t support exclusive fullscreen right now. The ground work has been laid for better support, but it’s not enabled yet (no timeline on when that will come to fruition as of now).
I have found, with great help of @HerMajestyDrMona , that the issue can be solved via changing default graphic card (NVidia control panel) from Optimus to dedicated graphic card. This allows to launch correctly many old games. I can confirm that I had this problem on Intel graphics.
I found a solution for the low FPS problem in the compiled open-source version of D3D9on12.
It seems like it was as easy as checking the already-existing option “Disable V-Sync in DirectX 9”.
All this option does it setting:
Output.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
Instead of:
Output.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
The V-sync can later be enabled in the Graphics Control panel (e.g. Nvidia Control Panel), and it works just fine.
I integrated a fix for this problem with Unofficial Patch 1.5. A guide how to enable it is available here: Temporary fix for the missing text problem in Empire Earth II.
I don’t have an Xe handy, however a Twitter user has been testing it out on some questionable japanese sims and posting his findings
https://mobile.twitter.com/mumeisaba555/
https://game.intel.com/story/intel-arc-graphics-directx9/
3959 adds the igd9trinity dlls to the driver package
@vdwtanner Thanks a lot! It makes sense why it was crashing for me the last time I tried to use my compiled version of D3D9On12. I was running in the fullscreen mode instead of windowed. I’ve recently added a nicely working borderless windowed mode to the game, so it’s now starting correctly. The only issue left is the low FPS problem. I can’t get more than 28-30 FPS on my Ryzen 5950X/RTX2070 machine. The CPU usage isn’t that high, and the GPU clock seems to be running with reduced speed. Strange. Seems like the D3D9On12 version that comes with Windows is much better optimized. Are there any other factors that could cause this issue?
For now D3D8to9 works best with EE2, and D3D8on12 has no visible graphical issues in game, except these unfortunate texts. I believe D3D9to12 is the most futuristic way for THIS game. For games with multiplayer lobby where people are waiting for games/friends and use ALT+TAB all the time, it’s also important that the game has no noticeable delay or doesn’t crash after several ALT+TAB calls. Most of the other wrappers apply dozens of undocumented workarounds that may simply stop working (e.g. after windows updates) and leave people with problems again. I also updated my previous comment with screenshots.
DGVoodoo works fine with EE2, it implements a near complete implementation of D3D class 7, 8 and 9 hardware replicating those capabilities in D3D11 and 12, issues found would be flaws in the game itself, as vdwtanner has already identified some.
D3D8 to 11 would be ideal then.
I spent some time looking at the PIX capture (thanks for that!), and so far something that I’m seeing which looks odd is that the game appears to be trying to set the ZRange min to .000453 instead of 0 when drawing text. This is causing it to be clipped. Still need to repeat some tests with 9on12 disabled to see if that is the same for d3d9 but somehow still draws correctly, but as of right now it seems like it may be an app bug that mysteriously works on native d3d9 drivers.