Wine 1.8 and older DirectX

Questions about Wine on Linux
Locked
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Wine 1.8 and older DirectX

Post by bush5150 »

I am using Wine 1.8 because it's a stable release. Clean install of Wine (no Winetricks or any mods to it). I even deleted my ./wine directory to get a fresh install. I have put a lot of research into my issue and have discovered that my graphics card may not support DirectX 9.0c (it's sketchy, as some sources say "yea" some say "nay", depending on which manufacturer (Sony, Dell, etc) utilized it. Intel states that the chipset supports up to DirectX 9.0c. I have a Sony Vaio, so I'm uncertain. It is a VGN-N220E with an onboard Intel 945GM graphics processor. For the ease of figuring out my issue, I'm going to say it doesn't support DX9.
If that's the case, is there anyway to force Wine to use an older version of DirectX??? Most of the games I'm loading (Warcraft III, SimCity 4, Railroad Tycoon 3, just to name a few) all use either DX7 or DX 8.1. My video card supports these older versions of DirectX. Both Warcraft III and SimCity 4 work fine in OpenGL mode (both have -opengl or -d:opengl switches allowing that mode of rendering instead of DirectX).
Running SimCity 4 with the switch -d:DirectX gives me this output: (The game WILL load, but it is patchworked and real glitchy looking. I can't even make out what the tiles are. Unplayable in DX).
fixme:win:EnumDisplayDevicesW ((null),0,0x32eea8,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x32edf8,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x32f4a8,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x32f1d8,0x00000000), stub!
fixme:d3d_surface:wined3d_surface_blt Can't handle WINEDDBLT_ASYNC flag.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f428,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x32f428,0x00000000), stub!
fixme:d3d:buffer_internal_preload Too many full buffer conversions, stopping converting.
fixme:d3d:buffer_internal_preload Too many declaration changes or converting dynamic buffer, stopping converting
fixme:imm:ImmGetOpenStatus (0x21e858): semi-stub
fixme:imm:ImmReleaseContext (0x1005a, 0x21e858): stub

When I run Warcraft III in DirectX mode, I get: (with a failed initialization)
err:ole:CoCreateInstanceEx apartment not initialised
fixme:win:EnumDisplayDevicesW ((null),0,0x33f308,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f6e8,0x00000000), stub!

When I run Warcraft III in OpenGL mode, I get (but it still works):
err:ole:CoCreateInstanceEx apartment not initialised
fixme:win:EnumDisplayDevicesW ((null),0,0x33f308,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f598,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f5c8,0x00000000), stub!

If I run Railroad Tycoon 3, I don't get any output errors in Terminal, but i get a popup saying that DirectX can't be initialized. The game doesn't initialize. So I run the CPUInfo.exe that comes with that game to view how my system specs are being viewed and it gives me this output:
<<<< PopTop Software CPUInfo Tool >>>>
OS = Windows XP Professional Edition (Service Pack 3)
Vendor = GenuineIntel
Model = Unknown
CPU Speed = 1596 MHZ
Total Memory = 2010 megs
Free Memory = 1256 megs
MMX = YES
SSE = YES
SSE2 = YES
3DNOW = NO
fixme:win:EnumDisplayDevicesW ((null),0,0x32f728,0x00000000), stub!
Display Adapter = X11 Windowing System <<<<=========== what is this????
Sound Device = Pulseaudio
*** press any key to exit ***

What's weird is that the display adapter is listed as X11 Windowing system using this program. I wanted to use dxdiag to see what it's reporting as my graphics card, but it gives me this output:
fixme:wbemprox:wbem_services_CreateInstanceEnum unsupported flags 0x00000030
fixme:wbemprox:enum_class_object_Next timeout not supported
fixme:win:EnumDisplayDevicesW ((null),0,0x32d718,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x32d508,0x00000000), stub!
fixme:ddraw:ddraw7_Initialize Ignoring guid {aeb2cdd4-6e41-43ea-941c-8361cc760781}.
fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator Category {33d9a761-90c8-11d0-bd43-00a0c911ce86} not found
fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator Category {cc7bfb41-f175-11d1-a392-00e0291f3959} not found
fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator Category {cc7bfb46-f175-11d1-a392-00e0291f3959} not found
fixme:dxdiag:wWinMain Information dialog is not implemented

I've updated my graphics card in the repository and it's the most recent one available. Intel doesn't have proprietary drivers (they opensource them). Here's the output for lpsci:
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 3 (rev 02)
00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 (rev 02)
00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (rev 02)
00:1f.3 SMBus: Intel Corporation NM10/ICH7 Family SMBus Controller (rev 02)
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8036 PCI-E Fast Ethernet Controller (rev 16)
06:00.0 Ethernet controller: Qualcomm Atheros AR242x / AR542x Wireless Network Adapter (PCI-Express) (rev 01)
08:03.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
08:03.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
08:03.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)

As seen here, my VGA card is correctly listed and reported by Linux. When I run glxinfo | grep renderer, I get:
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
OpenGL renderer string: Mesa DRI Intel(R) 945GM x86/MMX/SSE2

I'm trying everything to track this issue down, but I'm stuck. Can someone please nudge me in the right direction? All I want is to get DirectX to work with my system, which I know it can.
User avatar
dimesio
Moderator
Moderator
Posts: 13367
Joined: Tue Mar 25, 2008 10:30 pm

Re: Wine 1.8 and older DirectX

Post by dimesio »

There is this bug: https://bugs.winehq.org/show_bug.cgi?id=34871.

It's also possible that popup message is a red herring and the problem has nothing to do with DirectX. Games often use "There was a problem with DirectX" error messages as generic error messages for anything going wrong. I recall one game that would pop up a similar message if it couldn't find a font it needed.

The current stable release is 1.8.3; you should at least upgrade to that. If you want to file a bug, you need to test the latest development release. You might also try wine-staging, as that has experimental fixes that are not present in the stable or development branches.
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Re: Wine 1.8 and older DirectX

Post by bush5150 »

Thank you dimesio. I tried wine-staging. No-go. I read in a different forum (linux mint) that using winetricks to install d3dx9 may fix it, too (sh winetricks install d3dx9). I tried that. Also a no-go. I also tried installing dotnet20, which was another suggestion I found in the Linux Mint forums. (I guess DirectX uses .net for certain calls, I really don't know how that works). I managed to get less output in terminal after installing dotnet20, but each game is still far from working using Wine in DirectX mode. (sh winetricks install dotnet20).
You've shown me that there is potential that this is a bug between the intel driver and directx. I'm leaning more and more that this is the case. I've practically scoured the internet looking for answers to this and have yet to find a fix. Since Intel's drivers are opensource, there is no such thing as a proprietary to bounce this off of to check. So I'm left with the one solution I didn't like, upgrading to development release 1.9.13.
I have a lot of time invested in this and would like to put time into figuring out the cause. I can see that this is a widespread issue for those of us with Intel GPU's. Ironically, I can run glxgears and get very good results:
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
301 frames in 5.0 seconds = 60.085 FPS
299 frames in 5.0 seconds = 59.585 FPS
299 frames in 5.0 seconds = 59.775 FPS
299 frames in 5.0 seconds = 59.682 FPS
299 frames in 5.0 seconds = 59.685 FPS
299 frames in 5.0 seconds = 59.672 FPS
^C

Running glxinfo | grep 'dir':
direct rendering: Yes

Running glxinfo | grep OpenGl
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945GM x86/MMX/SSE2
OpenGL version string: 1.4 Mesa 10.3.0
OpenGL extensions:

I don't see any reason why my machine won't work. Again, I've put considerable time into it and I'd like to commit my efforts to the cause of making Wine work with the Intel GPU crowd. What can I do to help? Who can I talk to about trying things out?
User avatar
dimesio
Moderator
Moderator
Posts: 13367
Joined: Tue Mar 25, 2008 10:30 pm

Re: Wine 1.8 and older DirectX

Post by dimesio »

As I told you in your other thread, the problem with some of the older Intel GPUs is that some of the DirectX functions were only provided through software emulation in the Windows drivers. The Linux drivers don't include that. That's something that would have to be fixed in the graphics driver, not Wine.
lahmbi5678
Level 7
Level 7
Posts: 823
Joined: Thu Aug 27, 2009 6:23 am

Re: Wine 1.8 and older DirectX

Post by lahmbi5678 »

If you are really desperate, there is one last thing you could try:
winetricks glsl=disabled
and maybe
winetricks ddr=gdi
Though the latter is not really recommended.

Even if it works, you won't get much performance. It may help Railraod Tycoon 3 and Simcity 4 (DX7/8 games), but will very probably break Warcraft 3 (DX8/9).

To reset these options, use
winetricks glsl=enabled
winetricks ddr=opengl

The underlying issue needs to be solved in the intel linux driver, but I doubt that that will ever happen.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Wine 1.8 and older DirectX

Post by Bob Wya »

To force Railroad Tycoon 3 to load a DirectX 8.1 profile.

Run winecfg:
Applications tab / Windows version: Windows 98
Libraries tab / set d3d9 library to disabled

In-game Settings:
Graphics Settings / Visual Details greater than Above Average may cause visual glitching.

As always I'd recommend using the latest development release of Wine (1.9.13). That is where the vast majority of the development effort, of Wine, is going. Older versions are effectively frozen in stasis and receive a tiny trickle of bug fixes.

If you run:

Code: Select all

glxinfo | grep OpenGL
You'll probably see a supported OpenGL profile of 2.1. That's what matters when it comes to running DirectX 9.0c games. Ideally you want at least OpenGL 3.3 for full support of the DirectX 9.0c API. Wine is a translation layer. It doesn't magically implement a full set of DirectX libraries from "thin air".

So you aren't going to be able to run most games, via Wine, in a DirectX 9.0c profile on such an old Intel GPU. That's the basic reality of the situation...

Bob
lahmbi5678
Level 7
Level 7
Posts: 823
Joined: Thu Aug 27, 2009 6:23 am

Re: Wine 1.8 and older DirectX

Post by lahmbi5678 »

Bob,

the intel 945 (and comparable) chipsets are a special case, they were advertised as DX 9.0c compatible, but they had only Shader Model 2.0 in hardware, some of the functionality (Vertex shader 3.0) required for DX9.0c was emulated in the Windows driver. That kind of understanding of 'compatibility' was compliant with MS's rules at that time. A proper solution would be intel revamping their linux driver up to the same standard like the Windows driver, but that will probably never happen.

See https://en.wikipedia.org/wiki/List_of_I ... sing_units for more information.
I found it really interesting. On the one hand all these intel chipsets were real clunkers, as someone in this forum called them long ago. On the other hand they were sufficient to do work and play older (at that time) games. I remember that I could play Warcraft 3 on my old PC with an intel 945GC chipset under XP, but when I tried Spellforce 1, it rendered approximately 1 frame per 5 seconds and made the whole computer unusable for minutes, until you finally managed to stop the game's process. Intel should have given these chipsets a bit more power.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Wine 1.8 and older DirectX

Post by Bob Wya »

lahmbi5678 wrote: ... I found it really interesting. On the one hand all these intel chipsets were real clunkers, as someone in this forum called them long ago. ...
Personally, I don't touch Intel IGP - with a barge pole. But that Intel IGP generation is before Intel starting taking their graphics hardware & drivers seriously (wasn't it outsourced?)...
I'd just be glad if my laptop still booted - if it was of that (somewhat antiquated) generation 8)

Bob
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Re: Wine 1.8 and older DirectX

Post by bush5150 »

I want to thank both of you for answering. I have "some" progress with a few of the games and MAJOR progress (to me) in at least 1. ***Note: none of the games I'm trying to run require DirectX 9.0c (based on system requirements on the box and/or the game website).
If you are really desperate, there is one last thing you could try:
winetricks glsl=disabled
and maybe
winetricks ddr=gdi
Though the latter is not really recommended.
Thank you, this fixed the glitchiness in SimCity 4 running in DirectX mode. Looks much better. It didn't correct Railroad Tycoon 3 or Warcraft III. I'm OK running Warcraft III in OpenGL because the graphics were cartoonish to begin with. It's the other games that run pretty rich on the detail that I need to find a solution. I will install Age of Empires III to see your fix corrects that. I'm very impressed that it fixed SimCity 4's glitchines in DX rendering mode.
To force Railroad Tycoon 3 to load a DirectX 8.1 profile.
Run winecfg:
Applications tab / Windows version: Windows 98
Libraries tab / set d3d9 library to disabled

In-game Settings:
Graphics Settings / Visual Details greater than Above Average may cause visual glitching.
Unfortunately, I tried this before (except the Win98 profile, interesting idea!!!). It didn't work. I tried it again using the above implements and it still didn't work; however, I got a change in computer behavior. When I attempted to run the game, it appears that I get some kind of loading screen (screen flickers and I can see the tiles of the loading screen, although it's REAL glitchy). My screen changes resolutions several times, then crashes, citing no DX8.1 detected. Although this may not seem like much, it is progress.
If you run:
Code:
glxinfo | grep OpenGL

You'll probably see a supported OpenGL profile of 2.1. That's what matters when it comes to running DirectX 9.0c games. Ideally you want at least OpenGL 3.3 for full support of the DirectX 9.0c API. Wine is a translation layer. It doesn't magically implement a full set of DirectX libraries from "thin air".
I did this. Here is the output:
goodstudent@goodstudent-VGN-N220E ~ $ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945GM x86/MMX/SSE2
OpenGL version string: 1.4 Mesa 10.3.0
OpenGL extensions:

While I agree with both of you regarding the Intel IGP, I have no choice in the matter right now. Due to personal circumstances, I lost most of my "cool" computer stuff, including several homebrew machines, but I managed to keep most of my CD's, software and a few pieces of hardware. I am fortunate that someone gave me this laptop for use in finding a job and getting back on my feet again. I am committed to making it work, although in the end, it won't matter much, because when I get back to work, I'll build a new machine and slap a better version of Linux on it (this one is running Linux Mint 17.2 (based off Ubuntu 14.04), which is adequate for my day-to-day use).
lahmbi5678
Level 7
Level 7
Posts: 823
Joined: Thu Aug 27, 2009 6:23 am

Re: Wine 1.8 and older DirectX

Post by lahmbi5678 »

Googling for Intel i915, I found this: http://www.phoronix.com/scan.php?page=n ... px=MTM2MTA

So it seems I was wrong and someone at intel cared for OpenGl 2.0/2.1 software support for the older intel chipsets. But there must have gone something wrong with it. Maybe it was revoked for some reasons, maybe it has to be activated manually.

Further googling led to https://bugs.freedesktop.org/show_bug.cgi?id=64202 in which an environment variable is mentioned, you could try
export MESA_GL_VERSION_OVERRIDE=2.1
in the terminal, in which you are running wine. I don't know, if that works (I'd reset the winetricks mentioned in earlier post), or even if the OpenGl 2.1 emulation is existent in the your mesa driver, maybe you'd need an older or more recent mesa version. Overall installing e.g. a more recent Linux Mint would be a lot of work for just one game, and there'd be no guarantee that it might improve anything.

I don't have my i945 hardware available at the moment (it's a few 100 kms away), so I can't test. You could also ask on the intel mailing list https://lists.freedesktop.org/mailman/l ... /intel-gfx for more information.
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Wine 1.8 and older DirectX

Post by Bob Wya »

bush5150 wrote:
To force Railroad Tycoon 3 to load a DirectX 8.1 profile.
Run winecfg:
Applications tab / Windows version: Windows 98
Libraries tab / set d3d9 library to disabled

In-game Settings:
Graphics Settings / Visual Details greater than Above Average may cause visual glitching.
Unfortunately, I tried this before (except the Win98 profile, interesting idea!!!). It didn't work. I tried it again using the above implements and it still didn't work; however, I got a change in computer behavior. When I attempted to run the game, it appears that I get some kind of loading screen (screen flickers and I can see the tiles of the loading screen, although it's REAL glitchy). My screen changes resolutions several times, then crashes, citing no DX8.1 detected. Although this may not seem like much, it is progress.
Oh... That worked on my system with the GOG version of Railroad Tycoon 3?? :?
  1. Have you a file:

    Code: Select all

    d8tx.dll
    In the root of your Railroad Tycoon 3 game directory?
  2. Have you patched, Railroad Tycoon 3, to version 1.05?
  3. Why are you not testing running in Windows 98 Wine profile? You can simply switch back to Windows XP - if Windows 98 doesn't improve matters!!
    It's changing a Wineprefix architecture from 32-bit to 64-bit that isn't possible (without nuking the Wineprefix)...
bush5150 wrote: I did this. Here is the output:

Code: Select all

glxinfo | grep OpenGL
...
OpenGL version string: 1.4 Mesa 10.3.0
...
Are you sure that you're running with the latest Intel graphics driver... I've been using the Mesa 11.x branch since September last year. Plus the Mesa 12.x branch is due for release v. soon!! My (limited) unstanding is that the FOSS graphics drivers require xorg-server + mesa + user-space driver + kernel driver to be updated together... You probably need to add a bleeding edge repository like Ubuntu PPA: xorg-edgers. You card may be old - but the FOSS graphics drivers tend to still get updates pushed out, albeit slowly, years later...

You might want to look up / ask on Ask Ubuntu - about your graphics hardware... It's bound to be a common problem after all!!

I can certainly sympathise with very sucky graphics driver problems... Having personally had to deal with 2 AMD/ATI graphics cards - in years gone by... :cry:

Bob

P.S. Any chance you could "find" the formatting tag buttons - just above the forum edit box - especially the Code tag... Using these - makes forum posts a lot easier to read!! 8)
lahmbi5678
Level 7
Level 7
Posts: 823
Joined: Thu Aug 27, 2009 6:23 am

Re: Wine 1.8 and older DirectX

Post by lahmbi5678 »

Bob,

if you take a look in the table linked by me, you'd see, that the intel 945 chipsets on Windows never had anything better to offer than OpenGl 1.4, MS (and Intel) probably never cared about it, as DX was way more important on Windows, some of the OpenGl 2.1 functionality would have had to be done in software (similar to the Vertex Shader 3.0 software emulation).

I'd really be interested if the shell variable mentioned above (MESA_GL_VERSION_OVERRIDE=2.1) would achieve anything under linux. Mesa 10.3 should be recent enough according to the Phoronix post and Mesa timeline, but who knows.
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Re: Wine 1.8 and older DirectX

Post by bush5150 »

Are you sure that you're running with the latest Intel graphics driver... I've been using the Mesa 11.x branch since September last year. Plus the Mesa 12.x branch is due for release v. soon!! My (limited) unstanding is that the FOSS graphics drivers require xorg-server + mesa + user-space driver + kernel driver to be updated together... You probably need to add a bleeding edge repository like Ubuntu PPA: xorg-edgers. You card may be old - but the FOSS graphics drivers tend to still get updates pushed out, albeit slowly, years later...
I am running the latest available for my version of Mint. The Intel Graphics Installer version I use is 1.1.0 because that is the last installer that supported Ubuntu 14.04. All subsequent versions required higher versions of Ubuntu and Linux Mint 18 is barely in beta.
Have you a file:
Code:
d8tx.dll

In the root of your Railroad Tycoon 3 game directory?
I don't see it in the root directory. A search using Catfish doesn't produce any results for that dll. Yes, I have updated it to v1.05. I tried running it without the patch, then with it to see if that was the cause. It's not.

We are making progress. I don't have near as many errors in terminal when running the .exe. Here is most recent output for Railroad Tycoon 3:
fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
err:service:service_send_command service protocol error - failed to write pipe!
fixme:service:scmdatabase_autostart_services Auto-start service L"clr_optimization_v2.0.50727_32" failed to start: 1053

and for Warcraft III:
fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
err:service:service_send_command service protocol error - failed to write pipe!
fixme:service:scmdatabase_autostart_services Auto-start service L"clr_optimization_v2.0.50727_32" failed to start: 1053
err:ole:CoCreateInstanceEx apartment not initialised
fixme:win:EnumDisplayDevicesW ((null),0,0x33f318,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f6f8,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f2f8,0x00000000), stub!
fixme:msvcrt:__clean_type_info_names_internal (0x150591a0) stub

I managed to fix a few of the .dll issues within Warcraft III (in game cinematics weren't loading right, although gameplay was fine). I figured it out (was a DirectShow .dll that needed overridden).

I attempted something else on a "hunch". I ran

Code: Select all

wine explorer /desktop=foo 
which gave me a desktop that would let me run games. I think some of my problem is that it's trying to change resolutions to something not compatible. The following output was coming from Warcraft III as it was changing resolutions for gameplay cinematics:
err:x11settings:X11DRV_ChangeDisplaySettingsEx No matching mode found 800x600x32 @75! (XRandR 1.2)
err:x11settings:X11DRV_ChangeDisplaySettingsEx No matching mode found 800x600x32 @70! (XRandR 1.2)

Anyhow, when I ran RT3 within the desktop foo, I got this output (different than just running it in terminal):
fixme:msvcrt:__clean_type_info_names_internal (0x64083a50) stub
err:service:service_send_command service protocol error - failed to write pipe!
fixme:service:scmdatabase_autostart_services Auto-start service L"clr_optimization_v2.0.50727_32" failed to start: 1053
fixme:exec:SHELL_execute flags ignored: 0x00004000
fixme:win:EnumDisplayDevicesW ((null),0,0x33f7e8,0x00000000), stub!
err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threaded
fixme:win:EnumDisplayDevicesW ((null),0,0x33f2b8,0x00000000), stub!


Thank you soo much for the help. I am getting progress, less and less errors are a good thing. I totally believe it's able to run these games because they are DX 7 and 8.1 games, something fully supported by the GPU without software support (like we've already established is the case with 9.0c games).
User avatar
Bob Wya
Level 12
Level 12
Posts: 3068
Joined: Sat Oct 16, 2010 7:40 pm

Re: Wine 1.8 and older DirectX

Post by Bob Wya »

@bush5150,

I'm at work... So just on the phone... But I would recommend using a Wine Virtual Desktop to run Railroad Tycoon 3. You can set this in:

Code: Select all

winecfg
In the graphics tab I think. Just set the X & Y resolution to your native monitor resolution or the maximum supported in game resolution.
Wine often fails when trying to use xrandr to set your root X window to an unsupported refresh rate/resolution etc.

Bob
lahmbi5678
Level 7
Level 7
Posts: 823
Joined: Thu Aug 27, 2009 6:23 am

Re: Wine 1.8 and older DirectX

Post by lahmbi5678 »

For Railroad Tycoon 3 there's an old bug, see https://bugs.winehq.org/show_bug.cgi?id=23547
It mentions removing some config file to fix an issue after chosing 800x600 resolution, may be worth a try.

For Warcraft 3 you really should stick to the -opengl switch, as it is known not to work well with wine's DX. I'd really be interested in that MESA_GL_VERSION_OVERRIDE=2.1 stuff, would it achieve anything?
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Re: Wine 1.8 and older DirectX

Post by bush5150 »

In the graphics tab I think. Just set the X & Y resolution to your native monitor resolution or the maximum supported in game resolution.
Wine often fails when trying to use xrandr to set your root X window to an unsupported refresh rate/resolution etc.
Interesting. I tried this and my monitor no longer freezes when cinematics crash in Warcraft III. It still doesn't work, but I think this will be helpful going forward.
For Warcraft 3 you really should stick to the -opengl switch, as it is known not to work well with wine's DX. I'd really be interested in that MESA_GL_VERSION_OVERRIDE=2.1 stuff, would it achieve anything?
I don't notice anything different with the override. Warcraft III didn't work with all the other changes above (when running in DX mode). It runs smoothly with the -opengl switch (the only thing that's broken are the in-game cinematics, which I can suck up as I've seen them before and they aren't really needed for gameplay).

Oh, SimCity 4 works amazing now in DirectX mode with all the above changes. No glitches and it looks WAAAAY better than it did with the -d:opengl switch. (Although I was playing it fine in OpenGL mode, the game dev said not to use the switch, as it's unstable).

I haven't tried my other games, yet. Bob, you said that you got Railroad Tycoon 3 working on the GOG version. I may just buy the GOG version instead of using my game cd's (maybe there's a mod to the coding that let's it work). It's only $9.99 and worth the try to get it working. (Even if it fails, I'll have it for my massive system upgrade later this year).

Also,
Are you sure that you're running with the latest Intel graphics driver... I've been using the Mesa 11.x branch since September last year. Plus the Mesa 12.x branch is due for release v. soon!! My (limited) unstanding is that the FOSS graphics drivers require xorg-server + mesa + user-space driver + kernel driver to be updated together... You probably need to add a bleeding edge repository like Ubuntu PPA: xorg-edgers. You card may be old - but the FOSS graphics drivers tend to still get updates pushed out, albeit slowly, years later...
this updated all my intel drivers, mesa, and a bunch of other stuff. I don't notice any difference, but at least I have the "bleeding edge" for my drivers (as funny as that sounds for a 2007 machine).

For those following or searching in the future, here's what I did:

Code: Select all

$ sudo add-apt-repository ppa:xorg-edgers/ppa
$ sudo apt-get update
$ sudo apt-get install xserver-xorg-video-intel
$ sudo apt-get upgrade
This allowed me to get the updated Intel 945GM drivers on Linux Mint 17.2 (Ubuntu 14.04). It didn't fix my situation, but it did install the updated drivers.
bush5150
Level 2
Level 2
Posts: 22
Joined: Sun Jun 19, 2016 5:24 am

Re: Wine 1.8 and older DirectX [SOLVED in part]

Post by bush5150 »

***Update***
I managed to get Railroad Tycoon 3 working!! I also managed to get Warcraft III and The Frozen Throne working in DirectX mode (although a tad glitchy).

I removed the ppa's for Ubuntu Wine and removed my version of wine (1.8). I decided to install 1.9.13 as a last ditch effort. I removed winetricks and everything else associated with wine (gecko, mono).

I made sure I only had the wine repository listed for anything named "wine" and installed the wine-dev. Then I installed RT3. I ran it to see if it would work. It did!!!! (I also disabled PulseAudio and set to ALSA after a little research into the matter). I didn't need to use any of the above tweaks to get RT3 to work on the clean install. Funny how a change in versions makes all the difference. So far all my games requiring anything less that DX 9.0c are working as intended (for the most part). Everything is working from a fresh install (no need for installing anything with winetricks or editing any libraries).

I updated Warcraft III from the new version (1.27a) which no longer makes the game require a cd (they pushed it earlier this year). This seems to have made a big difference in performance (they fixed compatibility issues in the patch for those with later versions of Windows, so I'm guessing there's something that allows it to work better. I really don't know). The new patch also supports widescreen formats (something that was much needed for YEARS).

Now... I'm pressing my luck and I installed RollerCoaster Tycoon 3 Platinum - a DX 9.0c game - and it fails to recognize the hardware. The menu that pulls up after running the .exe states that it "Failed to Create a Direct3D Device". I'll track this down, but my thinking is that it won't work (based on above limitations with Intel 945GM and DirectX 9.0c). One of the RCT3 expansions is listed on the Intel 945GM supported games page:
http://www.intel.com/content/www/us/en/ ... 05578.html
so I'm thinking that it will probably work with some effort on my part.

As far as the issue goes, I'm considering the matter resolved. Thank you soo much for all of your assistance. We fixed it. Now off to some trainyard building.
Locked