DirectDraw emulation still broken in Windows 10

Anonymous
2015-08-17T12:32:58+00:00

Hello, Microsoft, please fix DirectDraw, considering Windows 10 is your last OS, and loads of people have complained about this in Windows 8, and it's STILL NOT FIXED IN 10. most games DX8 and below run horrible thanks to this, either screwed up colours and/or a very bad framerate to other problems such as sprites not loading. This is odd considering it was fine in Windows 7. 

An example is Red Alert 2, it's unplayable unless you use a 3rd party directdraw emulation such as WineD3D.

Another example is Commandos 3, the graphics are corrupted and it crashes on some missions making it unplayable.

And no compatibility settings don't fix any of this.

All we need is Windows 7's DirectDraw emulation back since that was fine.

Cmon microsoft fix this!

Windows for home | Windows 10 | Gaming

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

103 answers

Sort by: Most helpful
  1. Anonymous
    2016-02-18T16:45:50+00:00

    I own a ASUS N64VM it has a Ivy Bridge CPU and a nVidia GeForce 630M

    When I bought it, I didn't knew Optimus existed... and thought that it was a GeForce laptop... so the first thing I did was attempt to make DGPU work by default.

    Currently it is set in nVidia Control panel to default to DGPU, all games are also set to high-performance, I used nVidia Inspector to set Optimis SHIM to default to DGPU (some games don't work without nVidia Inspector), and disabled Secure Boot in the bios (Age of Decadence and some other Torque3D and Ogre3D games break with nVidia Optimus if Secure Boot is enabled, I have no idea why).

    So right now most games work with the DGPU as expected, but games that use DX1 to 8 doesn't properly.

    In SimCity 4 case, it actually fires up the GPU, and seemly some (not all) draw requests are passed to it, but any information requests return the Intel GPU instead, thus the game breaks (ie: it attempts to use extensions, texture comrpession model, and whatnot, designed for the intel card, without realizing nVidia Card is helping).

    Some other games (but I don't recall particular ones now) also do that.

    Mind you, it is not a bug only of DGPU failure to work, but of the drivers (or DX, dunno who is the culprit) returning wrong data.

    SimCity 4 has a very useful feature: it dumps the data it got from the Windows APIs when it launches.

    here is what mine dumped:

    driverName = nvumdshim.dll

    driverVersion = 10.18.13.5560, GUID: D7B78E66-4226-11CF-F373-7734A6C2CD35

    cardName = Intel(R) HD Graphics 4000

    cardVersion = Vendor: 8086, Device: 0166, Board: 14771043, Chipset: 0009

    cardIdentity = Intel(R) HD Graphics 4000

    cpuSpeed = 2294

    memory = 1024

    freeMemory = 1024

    screenWidth = 1280

    screenHeight = 1024

    screenBPP = 16

    videoMemory = 32

    textureMemory = 32

    textureStages = 4

    bogoFPS = 0

    bogoMPPS = 0

    The CPUSPEED came from RDTSC, and is wrong (when SimCity 4 launched, RDTSC counted CPU Cycles, Microsoft + Intel decided to create invariant RDTSC that return a arbitrary count, and created no "legacy" mode, thus all games taht expect RDTSC to count cycles get wrong data, my cpu actual speed is 3.3ghz)

    memory is incorrect (it is 8gb, but since this is a 32bit app it should get 3gb at least...)

    free memory also incorrect.

    screen width and height, is correct (I set my desktop on purpose to the resolution that the game supports, to make it run less buggy).

    screenBPP incorrect (should be 32... Windows 8 and 10 don't even support 16!)

    VRAM incorrect, erroneous data came from Intel Chip (Intel HD4000 reports 32mb vram by default, because it uses the computer normal RAM as its main RAM).

    texture-memory, same thing.

    texture stages, also incorrect (Intel chip has 4 texture stages, nVidia I think has 8+)

    I have no idea what is bogoFPS and bogoMPPS

    I tried many, many, many different things, including reinstalling drivers, installing ASUS OEM drivers, installing Intel and Nvidia drivers, compatiblity modes, administrator, non-administrator, editing compatibility in the registry, and so on. these numbers never changed.

    the only thing that change: if I disable "high performance" in the nVidia control panel, the driver change from nvumdshim.dll to igdumdim32.dll

    And if I use some wrapper (like Wine, or DgVoodoo2) then all the video-related info change, but not always correctly either.

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2016-02-18T16:29:13+00:00

    I'll have SimCity 4 looked at on a hybrid graphics laptop. I see you have an Ivybridge CPU, what is the graphics card? Which nividia chipset?

    Also, If you go into the geforce control panel and set the GPU to "High Performance.." does that fix the game from running off of the Intel?

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2016-02-18T13:23:33+00:00

    Oki, i would like to use win 10, but what preventing me, it's one game, which work perfect up to win 7. From win 8-10 i had a lot trouble to use it on normal way, so to make it short, Kevin: could you look intro Turok 2 Seeds of Evil (use demo if you not have full game, near hands) and you should find that fps is locked on magic ~33 fps, fps limit that showing us, that, something is wrong in core... Game using dx 6.1. Please help me, ty, and of course i, myself, will keep testing to find can some dll or registry key show truth, how to unblock magic fps limiter for many old games, which are plagued on exact same way. Greetings.

    Was this answer helpful?

    0 comments No comments
  4. Deleted

    This answer has been deleted due to a violation of our Code of Conduct. The answer was manually reported or identified through automated detection before action was taken. Please refer to our Code of Conduct for more information.


    Comments have been turned off. Learn more

  5. Anonymous
    2016-02-18T00:19:35+00:00

    I found out why SimCity 4 behaves even worse than it already do in Win 8 and 10 when running on a laptop with nVidia Optimus, I am not sure if the bug is in nVidia Drivers, Intel Drivers or in DD emulation.

    SimCity 4 queries about the video card using the function IDirectDraw7::GetDeviceIdentifier

    The MSDN page https://msdn.microsoft.com/en-us/library/windows/desktop/gg426144(v=vs.85).aspx says that if it is called with the flag DDGDI_GETHOSTIDENTIFIER it should return the information about the Host video card, while with the flag "0" it should return the secondary video card.

    SimCity 4 uses the flag 0 (ie: it requests the secondary video card).

    When DirectDraw was made, and GPUs were mostly completely optional separate hardware, the "host" card was whatever came in the motherboard, and the "secondary" was the video card (usually inserted in a PCI/AGP/PCI-E slot).

    With switchable GPU laptops, it is logical to expect that the "host" should be the GPU integrated in the CPU (example: Intel HD 4000 that comes in my i7) whiel the "secondary" card should be the discrete GPU chip.

    SimCity 4 on my machine requests the secondary card, but gets the host anyway... when it attempts to get the host, it also gets the host, meaning that the function GetDeviceIdentifier always return the Intel video.

    I have no idea who is the culprit here, probably it is nVidia (they said around in 2008 or 2009 in press conferences that they had no intention of supporting DirectX 1 to 8)

    But maybe it is a DDraw emulation bug, so I would appreciate if you took a look (even better if you push the fix to Windows 8 too)

    Was this answer helpful?

    0 comments No comments