ValveSoftware / Proton

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

ANONYMOUS;CODE (2291020) #7083

Open dariotarantini opened 1 year ago

dariotarantini commented 1 year ago

Compatibility Report

System Information

I confirm:

Symptoms

Games runs well but voice is not present. Music, menu suonds etc works fine, only voice from voice actors doesnt work at all. Tested jap and eng dub, none works. From steam logs seems missing

Reproduction

I believe relevant logs are these:

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstopengl.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstopengl.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstapp.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstapp.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstplayback.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstplayback.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvorbis.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvorbis.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstlibav.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstlibav.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstcoretracers.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstcoretracers.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgsttypefindfunctions.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgsttypefindfunctions.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioparsers.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioparsers.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstximagesink.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstximagesink.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstpbtypes.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstpbtypes.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideofilter.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideofilter.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libprotonmediaconverter.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libprotonmediaconverter.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstwavparse.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstwavparse.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstid3demux.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstid3demux.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstsoup.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstsoup.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvpx.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvpx.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstavi.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstavi.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdeinterlace.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdeinterlace.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgsttheora.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgsttheora.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.824: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideobox.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideobox.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioresample.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioresample.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdebug.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdebug.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstmpg123.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstmpg123.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstogg.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstogg.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdav1d.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstdav1d.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstnavigationtest.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstnavigationtest.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstautodetect.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstautodetect.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstcoreelements.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstcoreelements.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstisomp4.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstisomp4.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstopus.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstopus.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideoconvertscale.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstvideoconvertscale.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstmatroska.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstmatroska.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioconvert.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstaudioconvert.so: wrong ELF class: ELFCLASS64

(wine:1638): GStreamer-WARNING **: 23:26:04.825: Failed to load plugin '/home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstadder.so': /home/user/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0/libgstadder.so: wrong ELF class: ELFCLASS64
4
JongWasTaken commented 1 year ago

Setting GST_PLUGIN_FEATURE_RANK=protonaudioconverterbin:NONE %command% as the launch options in combination with the latest GEProton8-14 makes audio work.

thojohns commented 1 year ago
dariotarantini commented 1 year ago

@JongWasTaken Im not sure how did you test it, but for me it didnt worked. Im not sure how to set custom xaudio version, @thojohns

halcyonhippo commented 1 year ago

Same here. XAudio, specifically 2.9, fixes the voices and soft-locks for me. Using the xact package with protontricks made voices play, but the game would soft-lock after a few lines. As for videos, nothing I have tried has gotten them to work for me on Fedora 38, 6.4.14-200.fc38.x86_64 kernel, Nvidia 3060 Ti driver 535.104.05, Mutter/Gnome 44.4. Tested on Proton 7, 8, Experimental, and GE 7-55, and 8-13. No luck.

Videos play fine OUTSIDE of the game if you fix the header. The videos are h.264 encoded. Gstreamer should be able to play them fine with the necessary plugins installed, but it does not seem to be able to for some reason. To prove videos play fine outside the game, as an example, take op.mzv or op_en.mzv and replace the 4th byte with the hex value 28 (note: each video has its own unique value. The values are in a json file within the packed game files). After that, the video will play fine in your player of choice, but still not in the game.

I know MAGES isn't going to care about us Steam Deck/Linux users. Please help us, Valve. You're our only hope!

Seralyne commented 1 year ago

Ditto on MAGES not going to care about Linux users. I've only attempted the game with the custom Proton version and commandline flag, but I've also experienced crashes as a result.

These crashes have happened both on Manga Triggers and during regular dialogue.

Keksus1 commented 1 year ago

Can confirm the problems and am hoping for a fix. XAudio 2.9 fixed all crashes for me and voices play fine ever since. Remaining problem are the videos.

Possible solution seems to be a 32bit Prefix for AC. But that's a bit of a hassle to setup with Proton:

https://www.reddit.com/r/linux_gaming/comments/99e0kc/steam_playguide_create_custom_32bit_prefix_to/

halcyonhippo commented 1 year ago

Another user did some digging and discovered that the MF libraries the videos use aren't supported under wine/gstreamer yet. The existing <workaround removed by moderator> for a non-gstreamer approach is quite dated at this point and appears to be created from Windows 7; however, this game does not work on Windows 7. Using said <workaround removed by moderator> result in A;C throwing some errors as if its looking for functions that don't exist in those libs, pointing towards the libs being too old.

So, my current theory is if a new <workaround removed by moderator> could be created using newer MF libraries from Windows 10 or 11, then videos might could work that way. Adding an override to disable gstreamer when attempting to use native MF might be required as I've seen gstreamer aggressively prioritize itself over any native library options.

I'm not sure exactly what all it would need. Just putting some thoughts out there for someone smarter than me who might know how to take this theory and run with it.

Still hoping someone figures out what parts of MF are missing and can get support for those functions implemented within wine/gstreamer. :pray:

kisak-valve commented 1 year ago

Hello @halcyonhippo, the workaround you mentioned is legally problematic and has been removed.

R1kaB3rN commented 10 months ago

@dariotarantini I made a patch which should resolve the lock-ups and missing audio during video playback. Do you mind playtesting this with my patch using GE-Proton? After installing it, just download and drop the file within the gamefixes folder.

Hawkheart commented 10 months ago

I've been investigating the video playback issues and have made some progress.

The first note is that this commit from upstream Wine is needed for the game's video playback to function at all.

After that... video playback still doesn't work, but running the game with GST_DEBUG=4 and PROTON_LOG=+mfplat,+quartz gives some more helpful information: full log file here

It seems to me that there's some incompatibility between what Wine and gstreamer are expecting for the video file, resolution wise -- gstreamer is expecting a buffer large enough for a 1920x1088 video, but it's only being given one for the actual resolution of the video, 1920x1080, and failing.

Hawkheart commented 10 months ago

I was able to get video playback working with a couple additional hacks.

For some reason, using an IMFMediaType that's 1920x1088 for a 1080p video. That seems to be causing some issues with gstreamer on Proton builds with all of the video's codecs enabled (e.g. modified builds of Proton GE, like the one I was using in my log file above). Hacking 1088p media types to be 1080p resolves this.

Second, the game uses the media type's MF_MT_MINIMUM_DISPLAY_APERTURE attribute to determine how big the output buffer needs to be. On the path it normally takes, the Wine implementation of MF has this unset, leading it to attempt to output to a 0 byte buffer. Hacking this to always return a 1920x1080 works around this issue.

With the patch linked above, and the two MF hacks, videos start playing. I believe for upstream Proton, transcoding is still required but protonvideoconverter seems to work as expected. (The videos seem to be fairly standard H264+AAC M4V files)

R1kaB3rN commented 10 months ago

Thanks @Hawkheart for looking into this

A lot of games seem to be impacted by this issue and currently in GE-Proton, working around media playback issues typically require setting the environment variable: GST_PLUGIN_FEATURE_RANK=protonaudioconverterbin:NONE so avoiding the need to do this would be great

Second, the game uses the media type's MF_MT_MINIMUM_DISPLAY_APERTURE attribute to determine how big the output buffer needs to be. On the path it normally takes, the Wine implementation of MF has this unset, leading it to attempt to output to a 0 byte buffer. Hacking this to always return a 1920x1080 works around this issue.

That's strange. Would always returning a rounded resolution like 1920x1080p be problematic? Or will the two hacks you described in addition to the upstream patch need to be applied on a case-by-case basis?

rafalcieslak commented 7 months ago

Despite using the custom Proton build & the CoZ patch, the game would run into problems for me a few seconds after reaching any cutscene, despite seemingly working fine otherwise. Previous reports mentioned black screen while the video plays which allowed to proceed anyway, however, I observed the game crashing completely. It turned out that I was missing the 32bit GL library, and somehow it never impacted me before. On my system, a quick sudo apt install libnvidia-gl-550:i386 resolved the issue and videos now play correctly.