Proton: Support of 32-bit prefixes

Created on 25 Aug 2018  ·  18Comments  ·  Source: ValveSoftware/Proton

Feature Request

I confirm:

  • [x] that I haven't found another request for this feature.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

Description

Some games only work in a 32-bit wine prefix. I couldn't find a way to create a 32-bit prefix, and creating such prefix doesn't seem to work as well.

References

458 #189 #527

Feature Request

Most helpful comment

There's is a workaround to make a 32bit prefix work with Proton:
https://www.reddit.com/r/linux_gaming/comments/99e0kc/steam_playguide_create_custom_32bit_prefix_to/
I've tested with Resident Evil HD Remaster, that depends on wmp9 for cutscenes which is only available as a 32bit binary. It works as expected. But in fact a definitive solution I'll be the complete support for libraries that 64bit wine currently lacks of, wmp11 for example. Valve should already be working on it.

All 18 comments

First of all, Proton tries to copy some OpenVR libraries to a path that only exists in 64-bit prefixes:

Traceback (most recent call last):
  File "/mnt/antihype/SteamLinux/steamapps/common/Proton 3.7/proton", line 218, in <module>
    shutil.copy(basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll", prefix + "/drive_c/windows/syswow64/")
  File "/usr/lib/python2.7/shutil.py", line 133, in copy
    copyfile(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 97, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 21] Is a directory: '/mnt/antihype/SteamLinux/steamapps/compatdata/12210/pfx//drive_c/windows/syswow64/'

Then, winepath defaults to wine64, which refuses to run apps in a 64-bit prefix:
wine: '/mnt/antihype/SteamLinux/steamapps/compatdata/12210/pfx' is a 32-bit installation, it cannot support 64-bit applications.

Also, it seems that Proton always puts Steam libs in Program Files (x86), when on 32-bit prefixes it should be Program Files instead

I think the correct thing to do would be to fix wine so it does not break on 64bit prefixes however in saying that 32bit prefixes are much smaller then 64bit ones so using them for 32bit games would still be beneficial.

If you have a large steam library all these prefixes will all add up in disk usage, especially if you are planning to keep games on an SSD.

I think the correct thing to do would be to fix wine so it does not break on 64bit prefixes.

Unfortunately 32bit is necessary for some libraries and programs that have issues (e.g .NET) in 64bit prefixes.

.NET can be installed in a 64-bit prefix though @iownall555. Check out this guide on reddit.

@vanyasem Do you have instructions for doing it with .NET 2.0? #17 needs that. :/

@vanyasem Nevermind. This does that:

# Download the .NET framework 2.0
wget http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe

# Install the .NET Framework 2.0
/tmp/proton_run $HOME/NetFx64.exe

There's is a workaround to make a 32bit prefix work with Proton:
https://www.reddit.com/r/linux_gaming/comments/99e0kc/steam_playguide_create_custom_32bit_prefix_to/
I've tested with Resident Evil HD Remaster, that depends on wmp9 for cutscenes which is only available as a 32bit binary. It works as expected. But in fact a definitive solution I'll be the complete support for libraries that 64bit wine currently lacks of, wmp11 for example. Valve should already be working on it.

@vanyasem @luizgcorreia
Interesting. I'll have to give that a go later. I'm mostly trying to solve a possible .NET issue with Homeworld Remastered Collection (issue #99). Cheers

But in fact a definitive solution I'll be the complete support for libraries that 64bit wine currently lacks of, wmp11 for example. Valve should already be working on it.

You think Valve is working on WMP or WMF support for newer games that don't have access to winetricks wmp (can't use)? Personally, I put that in a 10 year to never bin. We shall see :-)

Got a bit of an update for this.

Feature Request

Support for 32-bit prefixes OR support for redists that can typically only be installed on 32-bit prefixes. The ideal solution would be to have a 64 bit prefix that has full 32 bit support, however Wine has so far not succeeded in creating such backwards compatibility in their 64 bit prefixes (although it seems to be somewhat getting there...)

I confirm:

  • [ ] that I haven't found another request for this feature.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

Description

A lot of games seem to require dependencies that don't seem to be installable via winetricks/protontricks unless it's on a 32-bit prefix. Examples would include WMP9 or WMP10 (required for playing videos in many games, such as Dark Souls and Darksiders) WMI (required for some older games, like everquest), some versions of vcrun/vcredist. Some games also seem to require a 32-bit .NET Framework installation (e.g. .NET 2.0). I could not find a complete list of items that can only be installed on 32-bit prefixes.

There also seems to be a number of games that run into errors like "page fault on write access in 32-bit code" and "page fault on read access to 0x00000000 in 32-bit code" (It's possible that last error can be fixed with this patch though https://github.com/ValveSoftware/wine/pull/7/commits/9e3edab8e56c2a03f003984d82a4cd86289c93b3 ) which may or may not be solvable by switching to a 32-bit prefix.

It should be a relatively simple matter, if proton is enabled for a game, it should be possible to go to that game's properties in the steam library and tick a button to make it switch to a 32-bit prefix. Maybe it's time to add a Proton tab into game properties for games that are used with proton.

Risks [optional]

None.

References [optional]

https://github.com/ValveSoftware/Proton/pull/919 (pull request)
https://github.com/ValveSoftware/Proton/issues/1885
https://github.com/ValveSoftware/Proton/issues/1319
https://github.com/ValveSoftware/Proton/issues/1732
https://github.com/ValveSoftware/Proton/issues/1400
https://github.com/ValveSoftware/Proton/issues/1432
https://github.com/ValveSoftware/Proton/issues/394

@kisak-valve this issue needs the Feature Request label.

1732 does not depend on 32-bit prefix - it works just fine already. But I have another title: Disciples II (1630, 1640) absolutely need 32-bit prefix to start.

Any news on this one?

Magicka also depends on 32-bit prefixes. https://github.com/ValveSoftware/Proton/issues/458

What's the issue here? I'm trying to install wmp9 for dark souls cinematics to play, but it will only install on 32 bit prefixes. Why can't we just pick 32 instead of 64?

The ProtonDB page for Dark Souls: Prepare To Die Edition seems to offer a couple of solutions for your issue.

I'm trying to install wmp9 [...], but it will only install on 32 bit prefixes.

@StephenLynx: Not quite, it just needs a little encouragement.

Another usecase: One of the games I play requires faking windows version to work correctly (also when running in windows), and 64-bit wine prefix does not allow to go older than windows xp.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

raikirii picture raikirii  ·  3Comments

shaphanpena1 picture shaphanpena1  ·  3Comments

prototype99 picture prototype99  ·  3Comments

shanefagan picture shanefagan  ·  3Comments

kforney picture kforney  ·  3Comments