ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.88k stars 1.04k forks source link

Support of 32-bit prefixes #449

Open vanyasem opened 6 years ago

vanyasem commented 6 years ago

Feature Request

I confirm:

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

vanyasem commented 6 years ago

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

Aerocatia commented 6 years ago

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.

ahallrq commented 6 years ago

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.

vanyasem commented 6 years ago

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

ryao commented 6 years ago

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

ryao commented 6 years ago

@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
luizgcorreia commented 6 years ago

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.

ahallrq commented 6 years ago

@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

ghost commented 5 years ago

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 :-)

Rabcor commented 5 years ago

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:

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

Rabcor commented 5 years ago

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

dreamer commented 5 years ago

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.

brunodantas commented 4 years ago

Any news on this one?

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

soredake commented 4 years ago

https://github.com/Winetricks/winetricks/pull/1489

StephenLynx commented 4 years ago

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?

heregoesmarcel commented 4 years ago

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

fallenguru commented 4 years ago

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

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

liias commented 4 years ago

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.

parkerlreed commented 1 year ago

This would be great as I have a prefix setup with a bunch of my old 98 games each with their own activation. Even going through the hassle of reinstalling them to a 64-bit prefix and reactivating each one, many of them may not even work with the 64-bit