Frogging-Family / wine-tkg-git

The wine-tkg build systems, to create custom Wine and Proton builds
862 stars 156 forks source link

[BUG] Persona 4 Golden Can't Launch Even with Winetricks/Protontricks #677

Open ThisNekoGuy opened 2 years ago

ThisNekoGuy commented 2 years ago

Normally, protontricks --no-runtime 1113000 -q wmp9 quartz devenum lavfilters (--no-runtime because tkg Proton) would be enough to fix this problem but several issues occur:

After all is done, the result is the same: the game will just throw a cryptic error message on launch.

Tk-Glitch commented 2 years ago

I can get the game to run with wmp9, quartz, d3dx11_43 & d3dcompiler43 but I'll get a crash (just a plain back to desktop with no error) a couple seconds after reaching the main menu (which might be due to the 7.0.r1 build I used to test this).

ThisNekoGuy commented 2 years ago

@Tk-Glitch Sorry about being silent for so long, I had to replace my motherboard

That's odd; that aside, I rebuilt Proton-tkg with WIne-Staging 7.5 this time based on Proton 7 (where reports say that the game runs but without audio for videos out-of-the-box) Out-of-the-box for this build, it makes it to the first video but then crashes upon attempting to play it? I'll try with Protontricks again but I expected consistency to at least play the video? Maybe it's because of a dependency?

ThisNekoGuy commented 2 years ago

PROTON_WINETRICKS=1 crashed for me so I used protontricks 1113000 -q wmp9 quartz d3dx11_43 lavfilters and the result was a hard-crash without the error message the game usually throws :/

Edit: Stepping through this, I reproduced that result with just wmp9 Using wmp11 lets me play the game but with no audio at all

(My proton-tkg.cfg.zip)

Tk-Glitch commented 2 years ago

I rebuilt Proton-tkg with WIne-Staging 7.5 this time based on Proton 7

The proton branch selection only affects the external tooling (lsteamclient libs and steam helper) and nothing else. With all the recent change upstream to quartz and winegstreamer the situation is technically worse than it has been for a long time from a user standpoint, so with this game being a huge PITA of a corner case, it's not really expected to go smoothly just yet. If you want to build against Valve's wine from Proton 7.0, you'll need to set _LOCAL_PRESET="valve" in your .cfg.

ThisNekoGuy commented 2 years ago

I switched the branch to valve-exp since reports say that plain Proton 7.0 has a similar problem, but then the script threw some errors:

-> Using pba patchset
 -> Installing to /home/neko-san/.steam/root/compatibilitytools.d/proton_tkg
 -> Cloning and preparing sources... Please be patient.
 -> Cleaning wine source code tree...
 ==> WARNING: Disabling any known to be broken community patch on valve proton tree
 ==> WARNING: Disabling Shell32-CreateDirectoryInDestinationInFileOp-Move-multiop.mypatch on mainline
fatal: Not a valid commit name 8091f3a0b8463d41049ed4ade98c79f82c86ebbc
 -> Cloning community-patches repo into \'/mnt/extraStorage/community-patches\'...
Cloning into '/mnt/extraStorage/community-patches'...
remote: Enumerating objects: 1173, done.
remote: Counting objects: 100% (542/542), done.
remote: Compressing objects: 100% (369/369), done.
remote: Total 1173 (delta 342), reused 326 (delta 173), pack-reused 631
Receiving objects: 100% (1173/1173), 2.42 MiB | 902.00 KiB/s, done.
Resolving deltas: 100% (743/743), done.
fatal: Not a valid commit name 656edbb508d51cbe3155d856ee3f2c27a6cd4cba
 -> Applying ffxiv-launcher-workaround.patch
 -> ######################################################
 -> 
 -> Applying your own plain-wine patch /mnt/extraStorage/wine-tkg-git/wine-tkg-git/0002-futex_waitv.mypatch
 -> 
 -> ######################################################
 -> ######################################################
 -> 
 -> Applying your own plain-wine patch /mnt/extraStorage/wine-tkg-git/wine-tkg-git/0003-ldap_fix.mypatch
 -> 
 -> ######################################################
 -> ######################################################
 -> 
 -> Applying your own plain-wine patch /mnt/extraStorage/wine-tkg-git/wine-tkg-git/Add-SORT_DIGITSAS-UMBERS-flag-to-CompareStringsEx.mypatch
 -> 
 -> ######################################################
 ==> ERROR: Patch application has failed. The error was logged to /mnt/extraStorage/wine-tkg-git/wine-tkg-git/prepare.log for your convenience.
 -> Removed BIG_UGLY_FROGMINER - Ribbit
 -> Removed Proton-tkg token - Valve Ribbit
 -> exit cleanup done

prepare.log

Tk-Glitch commented 2 years ago

It's because that community patch you set isn't compatible. I'll add it to the list of ignored patches when using upstream Proton.

Tk-Glitch commented 2 years ago

Done https://github.com/Frogging-Family/wine-tkg-git/commit/b6c59d868ef29e30ec5cbe55bdb1bcb0d23fde60

ThisNekoGuy commented 2 years ago

Got a steam.cpp compile error near the end... Not sure why?

make: Leaving directory '/mnt/extraStorage/wine-tkg-git/proton-tkg/external-resources/Proton/build/lsteamclient.win32'
'Proton/build/lsteamclient.win64/lsteamclient.dll.so' -> 'proton_dist_tmp/lib64/wine/x86_64-unix/lsteamclient.dll.so'
'Proton/build/lsteamclient.win32/lsteamclient.dll.so' -> 'proton_dist_tmp/lib/wine/i386-unix/lsteamclient.dll.so'
'Proton/build/lsteamclient.win64/lsteamclient.dll.fake' -> 'proton_dist_tmp/lib64/wine/x86_64-windows/lsteamclient.dll'
'Proton/build/lsteamclient.win32/lsteamclient.dll.fake' -> 'proton_dist_tmp/lib/wine/i386-windows/lsteamclient.dll'
Winemaker 0.8.4
Copyright 2000-2004 François Gouget <fgouget@codeweavers.com> for CodeWeavers
Copyright 2004 Dimitrie O. Paun
Copyright 2009-2012 André Hentschel
Scanning the source directories...
Generating project files...
  .
make: Entering directory '/mnt/extraStorage/wine-tkg-git/proton-tkg/external-resources/Proton/build/steam.win32'
wineg++ -m32 -std=gnu++11 -c -Wno-attributes -O3 -march=znver2 -mtune=native -minline-all-stringops -g  -I/mnt/extraStorage/wine-tkg-git/proton-tkg/proton_dist_tmp/include/wine -I/mnt/extraStorage/wine-tkg-git/proton-tkg/../wine-tkg-git/src/ValveSoftware-winegit/include -I/mnt/extraStorage/wine-tkg-git/proton-tkg/../wine-tkg-git/src/ValveSoftware-winegit/include/wine -I/mnt/extraStorage/wine-tkg-git/proton-tkg/Proton/lsteamclient/steamworks_sdk_142/ -I/mnt/extraStorage/wine-tkg-git/proton-tkg/openvr/headers/   -o jsoncpp.o jsoncpp.cpp
wineg++ -m32 -std=gnu++11 -c -Wno-attributes -O3 -march=znver2 -mtune=native -minline-all-stringops -g  -I/mnt/extraStorage/wine-tkg-git/proton-tkg/proton_dist_tmp/include/wine -I/mnt/extraStorage/wine-tkg-git/proton-tkg/../wine-tkg-git/src/ValveSoftware-winegit/include -I/mnt/extraStorage/wine-tkg-git/proton-tkg/../wine-tkg-git/src/ValveSoftware-winegit/include/wine -I/mnt/extraStorage/wine-tkg-git/proton-tkg/Proton/lsteamclient/steamworks_sdk_142/ -I/mnt/extraStorage/wine-tkg-git/proton-tkg/openvr/headers/   -o steam.o steam.cpp
steam.cpp:59:10: fatal error: openvr.h: No such file or directory
   59 | #include "openvr.h"
      |          ^~~~~~~~~~
compilation terminated.
winegcc: /usr/bin/ccache failed
make: *** [Makefile:88: steam.o] Error 2
make: *** Waiting for unfinished jobs....
make: Leaving directory '/mnt/extraStorage/wine-tkg-git/proton-tkg/external-resources/Proton/build/steam.win32'
'Proton/build/steam.win32/steam.exe.fake' -> 'proton_dist_tmp/lib/wine/i386-windows/steam.exe'
cp: cannot stat 'Proton/build/steam.win32/steam.exe.so': No such file or directory
neko-san@ARCH /m/e/w/proton-tkg (master)> 
ThisNekoGuy commented 2 years ago

@Tk-Glitch The OpenVR folder is empty, it seems; which is probably the reason why :thinking: Don't know why it is though

ThisNekoGuy commented 2 years ago

Just ended up cloning openvr manually

With that experimental build, it also runs into the same problem, except it's even worse because wmp11 doesn't even get it to work now either

ThisNekoGuy commented 2 years ago

With the valve preset, I just get this: Screenshot_20220406_192624

And the link takes me to this: Screenshot_20220406_192741

Which really hurts because I've been trying to get this game to work for months (back before my old board broke) and this game still isn't playable for me

Tk-Glitch commented 2 years ago

This is Denuvo for you. You'll need to wait 24 hours before giving it another try.

ThisNekoGuy commented 2 years ago

@Tk-Glitch Curious, does it contact online to "validate" or is it local and can be bypassed by reinstalling? It baffles me why a single-player game would have online validation... I'm afraid of possibly tripping it again at some point :woozy_face:

Tk-Glitch commented 2 years ago

Online validated only. Switching wine versions/updating prefix 5 times in 24 hours will trip it. It can't be bypassed by reinstalling. I have triggered that a dozen times myself, it's a real annoyance with zero benefit..

ThisNekoGuy commented 2 years ago

Omg, that's awful :skull_and_crossbones:

ThisNekoGuy commented 2 years ago

@Tk-Glitch Using Proton-5 to install those protontricks verbs with: protontricks --no-bwrap 1113000 -q wmp9 quartz d3dx11_43 lavfilters then upgrading to Proton-tkg (I used proton_tkg_7.5.r3.g2f728605.-noNVapi - using wine-staging) allows the game to be run partially with sound, with the following exceptions:

otherwise, the audio seems to work, but it's pretty jarring to not have SFX Lol

A log, if that helps at all: steam-1113000.log

I could try the valve preset, without and with this process, to see if it makes any difference though

ThisNekoGuy commented 2 years ago

Out of the box with the valve preset, it doesn't make any difference (doesn't run), but performing this process with it actually does work with one caveat: the audio sounds like stuttery @$$ and the video still doesn't have sound

Which is still an improvement over no audio though, but still not great steam-1113000.log proton-tkg.cfg.zip

Tk-Glitch commented 2 years ago

The audio issue seems to be due to staging. Try with _staging_pulse_disable="true" in your .cfg.

ThisNekoGuy commented 2 years ago

Eh, that didn't make it better; though, I didn't delete the old prefix (out of fear from triggering Denuvo) and old build from compatibilitytools.d (the new build produced the same version and overwrote into the same folder)

ThisNekoGuy commented 2 years ago

PULSE_LATENCY_MSEC=60 in the launch options fixed the stuttering audio for me, though

ThisNekoGuy commented 2 years ago

@Tk-Glitch I rebuilt plain Wine Proton 7.6-tkg again after about an hour or so ago and PROTON_WINETRICKS=1 works for me now, so I tried it but hit a snag on wmp9 that caused winetricks to exit:

Executing w_do_call wmp9
Executing mkdir -p /mnt/extraStorage/Gaming/SteamLibrary/steamapps/compatdata/1113000
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_wmp9 
------------------------------------------------------
warning: This package (wmp9) is broken in wine-7.6-211-ge254680ed15. Broken since 6.6. See https://bugs.winehq.org/show_bug.cgi?id=52772 for more info. Use --force to try anyway.
------------------------------------------------------

Substituting it with wmp11 does work but, again like before, no audio still (probably because of upstream like you said) Although, I did notice that gstreamer (compiled) throws a lot of errors and there's a lot of "stack overrun" errors later on: steam-1113000.log

(Could the gstreamer errors be because the game is 32-bit?)

ThisNekoGuy commented 2 years ago

Whoops, didn't mean to click that

ThisNekoGuy commented 2 years ago

On a separate note:

I'll never understand why this happens to me, but I just rebuilt the default Proton 7.0 prefix again today and it decided to work without any intervention at all, only video audio being the exception though. I don't even know what to make of this anymore; nothing changed between this morning and last night.

ThisNekoGuy commented 2 years ago

Also, it seems P4G doesn't like Async DXVK?

ThisNekoGuy commented 2 years ago

GE-Proton 7.14 works with it perfectly fine, huh... :thinking:

Some of their fixes for it seem to be custom though (the appended "ge" suffixes):

""" Game fix for Persona 4 Golden
"""
#pylint: disable=C0103

from protonfixes import util

def main():
    """ installs devenum, quartz, wmp9 and adjust pulse latency
    """

    # Fix pre-rendered cutscene playback
    util.protontricks('xactengine3_7_ge')
    util.protontricks('wmp9_ge')
    util.protontricks('d3dx11_43')
    util.protontricks('d3dcompiler_43')
    util.protontricks('klite')
    util.protontricks('quartz')
    util.set_environment('WINEDLLOVERRIDES','mfplay=n')
Tk-Glitch commented 2 years ago

GE base is valve's proton (7.0 expérimental bleeding edge), and not wine upstream. Upstream is a moving target and much has changed between 7.0 and 7.6, with new stuff breaking and getting fixed daily. The whole wmv/mf situation is not good right now for sure.

The _ge suffixed installers are bypassing some winetricks checks (also, klite was removed from winetricks for a while, so it's likely using an older winetricks build). You can try to build bleeding edge (we have a profile for that) and see if it works better with it than current upstream (which is pretty much a given at this point).

ThisNekoGuy commented 2 years ago

I had tried experimental but couldn't get it to work before without jumping through odd hoops; though, I suppose I could try again, but those custom winetricks verbs are discouraging