Open dariotarantini opened 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.
Forcing the game to load native XAudio 2.9 appears to resolve the audio issue as well, which works without the need for custom Proton versions.
Videos do not appear to work - black screen with no audio or video playback, and logging shows a number of 'pipeline library handle not registered' warnings. Video playback can be skipped without crashing the game, but this is less than ideal.
The video container format is mzv, and from the headers it appears to be an m4v/mp4 video, although it doesn't play back as-is in video players I've tried.
The game and launcher are both 32-bit, which might explain the wrong ELF class warnings from GStreamer.
@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
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!
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.
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/
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:
Hello @halcyonhippo, the workaround you mentioned is legally problematic and has been removed.
@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.
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.
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)
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?
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.
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: