[Bug 19153] DX3 game does not recognize graphics capabilities

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Aug 18 20:25:15 CDT 2015


https://bugs.winehq.org/show_bug.cgi?id=19153

Andrew D'Addesio <andrew at fatbag.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrew at fatbag.net

--- Comment #12 from Andrew D'Addesio <andrew at fatbag.net> ---
Hello,

I can confirm that this bug (still present in 1.7.49-git) is one factor
preventing The Sims Online from starting in WineD3D on Windows.

Using a debugger, I determined that the game calls IDirect3D3::EnumDevices and
searches by name (not by GUID) for the IDirect3DRGBDevice: that is, for each
device returned by EnumDevices, it does a string comparison of the device's
name against the string "RGB Emulation".

The problem is that Wine calls this device "Direct3D HEL". The game does not
handle this condition and crashes. (The DDPIXELFORMAT struct it creates for
this device remains uninitialized, causing a later call to CreateSurface to
fail with DDERR_INVALIDPIXELFORMAT; the game passes the returned null surface
pointer to AddAttachedSurface, causing Wine to crash.)

In Windows 7's ddraw.dll, IDirect3D3::EnumDevices returns these devices:
* "RGB Emulation": {a4665c60-2673-11cf-a31a-00aa00b93356}
* "Direct3D HAL": {84e63de0-46aa-11cf-816f-0000c020156e}

whereas Wine's ddraw.dll returns these devices:
* "Direct3D HEL": {a4665c60-2673-11cf-a31a-00aa00b93356}
* "Direct3D HAL": {84e63de0-46aa-11cf-816f-0000c020156e}

The names "Direct3D HEL" and "Direct3D HAL" were chosen in a patch made in
2008:

https://www.winehq.org/pipermail/wine-patches/2008-April/053647.html

> Jens Albretsen jens at albretsen.dk
> Sun Apr 20 13:32:11 CDT 2008
>
> Fixed EnumDevices, device name is now compatible with games checking the 
> device name i.e "Donald duck going quackers", the correct device name 
> is "Direct3D HAL" or "Direct3D HEL" not "direct3d".

I created a test which calls EnumDevices for all the IDirect3D* interfaces and
prints all of the returned devices, and in Windows 7 (using Windows 7's
ddraw.dll) I was unable to get EnumDevices to return a device named "Direct3D
HEL". Is this the correct name? I'm attaching the test and results for
reference.

In short, on my system, the devices are:

IDirect3D:
* "Ramp Emulation": {f2086b20-259f-11cf-a31a-00aa00b93356}
* "RGB Emulation": {a4665c60-2673-11cf-a31a-00aa00b93356}
* "Direct3D HAL": {84e63de0-46aa-11cf-816f-0000c020156e}

IDirect3D2:
* "Ramp Emulation": {f2086b20-259f-11cf-a31a-00aa00b93356}
* "RGB Emulation": {a4665c60-2673-11cf-a31a-00aa00b93356}
* "Direct3D HAL": {84e63de0-46aa-11cf-816f-0000c020156e}
* "MMX Emulation": {881949a1-d6f3-11d0-89ab-00a0c9054129}

IDirect3D3:
* "RGB Emulation": {a4665c60-2673-11cf-a31a-00aa00b93356}
* "Direct3D HAL": {84e63de0-46aa-11cf-816f-0000c020156e}

IDirect3D7:
* "RGB Emulation"
* "Direct3D HAL"
* "Direct3D T&L HAL"

This my first time posting to the Wine bugtracker / mailing lists and this is
my first time entering the Wine community, and I'm not sure what your policy is
towards online games which are no longer ("officially") playable. I can see why
it might be undesirable to rename devices to appear as if they were
Microsoft's, just to provide compatibility to a few titles.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list