Open trymeouteh opened 5 years ago
I can check with my wine build again in a couple of hours. Currently, I don't have time to test it myself. There may very well still be a bug in there. It's really just a quick and dirty implementation which worked for me this morning.
sounds like the second patch is a regression. is the game fully playable with the original patch? once past the first login screen, does the game work reliably? or is there crashing/disconnections mid-gameplay?
With first patch (GE build), game seems to be fully playable once past the random "Fatal error" crashes and the many failed login attempts. Almost finished the entire campaign so far with not a single strangeness except for some shader compilation stutters.
It took me several dozen tries, but I was finally able to log in using @GloriousEggroll 's build! Thanks!
I tried using @LukasRuppert 's patch (plus typo fix for pgnutls
), but I started running into what I think are dependency issues in the build. First it was GNUTLS, then some other package... so I tried a build completely from scratch, and it somehow made it worse.
No idea what went wrong, and now that I have the game running I'd rather play for a bit before going to work. I'll experiment with this again tonight.
It's not a typo. If you change it you will get a linker error.
MAKE_FUNCPTR(gnutls_decode_rs_value);
creates the function pointer
pgnutls_decode_rs_value
and
LOAD_FUNCPTR(gnutls_decode_rs_value);
takes care of the linking.
@LukasRuppert oh, interesting. Okay, I'll try that again later then.
@LukasRuppert oh, interesting. Okay, I'll try that again later then.
My build has these fixes implemented but it seems to still be having issues. I'll be interested to see if yours fairs better
"Test release - MCC" build of Proton GE is crashed too on my system. steam-976730.log
@LukasRuppert My tired eyes did not catch this error in my output log last night: patch: **** malformed patch at line 29: #undef MAKE_FUNCPTR
@NTMan yes that comes up, you have to keep trying and eventually you get a login.
@mathew2214 did you add the patch to game-patches-testing/proton-prep.sh
and add a patch line for it under #WINE CUSTOM PATCHES before running ./game-patches-testing/proton-prep.sh &> patchlog.txt
?
@Skivet i did. i just nuked that entire build and am starting from scratch with another attempt. every time i try to run proton-prep.sh, it doesnt work. it cant find the files to patch and prompts me for them.
@mathew2214 you should run the script from the root directory, not from game-patches-testing
. Use ./game-patches-testing/proton-prep.sh
as @Skivet suggested.
@rkfg that was my issue. the script runs now. thank you.
I had the same issue. It's a good practice to cd
to the expected directory in the beginning of the script so that the user won't have to suffer. I usually add cd "$(dirname "$0")"
so I know all the paths are now relative to the script file itself. Of course, it only applies to such tools that are only run from one specific directory and operate on the known files.
Can't compile Proton-GE with the second patch. I succeeded with the first. The error is:
../../../../proton/wine/dlls/bcrypt/gnutls.c:103:14: error: 'gnutls_decode_rs_value' undeclared here (not in a function)
MAKE_FUNCPTR(gnutls_decode_rs_value);
^
../../../../proton/wine/dlls/bcrypt/gnutls.c:90:39: note: in definition of macro 'MAKE_FUNCPTR'
#define MAKE_FUNCPTR(f) static typeof(f) * p##f
^
In file included from ../../../../proton/wine/dlls/bcrypt/gnutls.c:40:0:
../../../../proton/wine/dlls/bcrypt/gnutls.c: In function 'key_asymmetric_sign':
../../../../proton/wine/dlls/bcrypt/gnutls.c:1130:20: warning: format '%s' expects argument of type 'char *', but argument 5 has type 'LPCWSTR {aka const short unsigned int *}' [-Wformat=]
FIXME( "padding: %s\n", pad->pszAlgId );
^
../../../../proton/wine/include/wine/debug.h:93:49: note: in definition of macro '__WINE_DBG_LOG'
wine_dbg_log( __dbcl, __dbch, __FUNCTION__, args); } } while(0)
^
../../../../proton/wine/include/wine/debug.h:484:36: note: in expansion of macro '__WINE_DPRINTF'
#define WINE_FIXME __WINE_DPRINTF(_FIXME,__wine_dbch___default)
^
../../../../proton/wine/include/wine/debug.h:523:36: note: in expansion of macro 'WINE_FIXME'
#define FIXME WINE_FIXME
^
../../../../proton/wine/dlls/bcrypt/gnutls.c:1130:13: note: in expansion of macro 'FIXME'
FIXME( "padding: %s\n", pad->pszAlgId );
^
../../../../proton/wine/dlls/bcrypt/gnutls.c:1183:13: error: called object 'pgnutls_decode_rs_value' is not a function or function pointer
pgnutls_decode_rs_value(&signature, &r, &s);
^
../../../../proton/wine/dlls/bcrypt/gnutls.c:90:44: note: declared here
#define MAKE_FUNCPTR(f) static typeof(f) * p##f
^
../../../../proton/wine/dlls/bcrypt/gnutls.c:103:1: note: in expansion of macro 'MAKE_FUNCPTR'
MAKE_FUNCPTR(gnutls_decode_rs_value);
^
make[1]: *** [Makefile:206: gnutls.o] Error 1
I have no idea why this happens as gnutls_decode_rs_value
definitely exists in /srv/chroot/proton_crosscc/usr/include/gnutls/crypto.h
but for some reason gcc fails to find it. Any ideas?
@LiamDawe After a lot of unsuccessful attempts trying enter to Xbox Live account with build @GloriousEggroll ProtonGE. I decided to try another build from @vsod99 and with this build ProtonGE I could login to Xbox Live account from the third attempt.
I hope this information would be useful for another users.
@LiamDawe After a lot of unsuccessful attempts trying enter to Xbox Live account with build @GloriousEggroll ProtonGE. I decided to try another build from @vsod99 and with this build ProtonGE I could login to Xbox Live account from the third attempt.
correct me if im wrong, but the first patch never worked for you, but the second patch worked third try?
So I added the function definiton before the macro and it seems to compile further...
int gnutls_decode_rs_value(const gnutls_datum_t * sig_value, gnutls_datum_t *r, gnutls_datum_t *s);
#define MAKE_FUNCPTR(f) static typeof(f) * p##f
Pretty weird as only this function produced an error, all others are fine... And I see no conditional compilation in crypto.h
either.
I just tested my code from the updated version again a few times. It signs me in the first time each try.
The many failed attempts caused by the early first version might get you locked out for a while as some of us have experienced with the "offline" message.
One issue might be incompatible GnuTLS versions which do not yet export
gnutls_decode_rs_value
you can check using
nm -gD /usr/lib64/libgnutls.so | grep gnutls_decode_rs_value
(you may need to adjust the path) If it helps, I'm using libgnutls.so.30.23.2
Another thing to keep in mind: I only tested using wine, not proton. (using the current wine repo with all patches from the wine-staging repo applied)
If it's not working for you, you can also check if
~/.steam/steam/steamapps/compatdata/976730/pfx/drive_c/windows/system32/bcrypt.dll
matches
<your proton version here>/dist/share/default_pfx/drive_c/windows/system32/bcrypt.dll
During development I had some crashes when that file belonged to a different wine version.
If you don't have any savegames to lose, you can also try deleting (or renaming) the entire wine environment for Halo
~/.steam/steam/steamapps/compatdata/976730
I applied the new patch to Proton-GE, see here: https://github.com/rkfg/proton-ge-custom/commit/246632ca855666937049931bbb80819dcab38303
Also, if you get weird errors like vkd3d.h not found
try to do vagrant provision
, it should update something and then it builds fine. A radical way would be nuking the VM but it takes too long to install/update everything. A less radical way is to delete ~/build
and ~/proton
in the VM, then do vagrant halt
, vagrant up
and vagrant provision
.
Can confirm that I login from the first try using the second patch and Proton I built myself. I used GitHub login for that (lol), it's in advanced sign-in options.
Many thanks @LukasRuppert!
@rkfg can you upload your self build proton file here?
@McMarius11 sure, I pushed a release: https://github.com/rkfg/proton-ge-custom/releases/tag/halo_mcc_test
It also has a custom name Proton-MCC so you'll not mistake it for another Proton-GE build.
IT WORKS i tried all version, you guys are the best <3 thanks @rkfg and @LukasRuppert and @vsod99 all other involved i tried to log in 5/5 times it worked flawless
@McMarius11 sure, I pushed a release: https://github.com/rkfg/proton-ge-custom/releases/tag/halo_mcc_test
It also has a custom name Proton-MCC so you'll not mistake it for another Proton-GE build.
Just beat me to it. Nice work, time to see if it actually runs on my uncooperative machine. All of my issues from last night were resolved by appling the patch on an older commit of Proton-GE (because of the first patch, there were conflicts) >_<
Thanks everyone! It indeed works flawless on the first try.
@rkfg your build is best! I login into Xbox Live account always with first attempt even after game restart. When I use build from @vsod99 after game restart I am again have problem with login and game crashes after each login attempt it's really annoying. Great work, thanks.
Are there any extra steps to get @rkfg 's Proton build working with this? I get no login window popup and eventually just get a "fatal error" popup and then the game closes.
Edit; (I have tried with a clean prefix) Edit 2; After restarting a few times I'm just getting the old "error while signing into Xbox Live" issue.
the second patch works once. other times it just spins forever at the title screen. i have to remake the prefix every time i want to play the game.
@exezin not that I'm aware of. You might be locked out for some time due to previous failed attempts, just wait and try again.
@rkfg Is a login screen meant to pop up at all? I've not seen one after 10 or so restarts of the game.
@exezin if you're not seeing anything (except for the loading icon), that most likely means something crashed. Try creating a log, maybe we can figure it out.
Here's the log.
And there is your problem: (Line 221)
3696.755:002e:002f:err:bcrypt:gnutls_initialize failed to load gnutls_decode_rs_value
Try updating the gnutls library.
Works for me on archlinux w/ the most recent patch - Has anyone tried/asked MS about the version with anticheat? I'd be weary to try, but it officially supports win 7 so maybe wine supports the version of easyAC it uses?
here is my log from trying to use the second patch without deleting Halo's prefix first. steam-976730.log
here is my log from trying to use the second patch without deleting Halo's prefix first. steam-976730.log
@mathew2214 i think your using the old Proton version please download https://github.com/rkfg/proton-ge-custom/releases/download/halo_mcc_test/Proton-MCC.tar.gz extract it and copy it into the /home/username/.steam/steam/compatibilitytools.d/ folder and restart steam and use it,
@McMarius11 that build doesnt even launch the game. here's the log. steam-976730.log
@exezin @LukasRuppert
Steam currently ships libgnutls 26.21.8 and 30.6.2.
STEAM_RUNTIME_PREFER_HOST_LIBRARIES=1
fixes the issue, as long as your distribution has an up-to-date version of libgnutls.
@McMarius11 that build doesnt even launch the game. here's the log. steam-976730.log
@mathew2214 try to launch the game with launch option "PROTON_NO_ESYNC=1 %command%" without the "" or try to use "PROTON_NO_FSYNC=1 %command%" or "PROTON_NO_FSYNC=0 %command%"
Kind of a jerk request, but can we please start using gist instead of direct uploads? With Gists we wouldn't need to download the logs to peruse them.
@LukasRuppert I'm already on libgnutls30, the latest on my distro (lubuntu 18.04.3 LTS). What version would you suggest?
@davidebeatrici @exezin adding that to the launch options seems to have fixed it for me, on KDE Neon 5.17 (an Ubuntu 18.04 variant). I'd forgotten about the steam runtime option and was thinking I'd have to build/install gnutls 3.6.6 directly (the distro shipped with 3.5).
I was able to log in with my Microsoft account and get to the main menu. I'm using the build from @rkfg.
@McMarius11 using both those arguments, that proton build behaves exactly the same as my own. it works once after i delete the prefix, then it will always spin for a few seconds and crash. https://gist.github.com/mathew2214/966d11905790fe9a2fcf3cf874407cb0
@davidebeatrici What do we consider an up-to-date version to be? I'm on libgnutls30 at the moment, those flags prevent crashing but I still can't get any login screen to pop up.
I found the cause of the inconsistency. I have an updated patch with tests added that I will submit upstream later today.
@Guy1524 any chance of a patch file one could apply to an existing proton build environment?
@exezin gnutls/gnutls@d5f226c8e605b5ee14a6d9ed289b32dedb903d4d
Compatibility Report
System Information
I confirm:
Symptoms
Game will not launch
Reproduction
Notes
I do not have this game but I got the details of this issue from this reddit post.
https://www.reddit.com/r/linux_gaming/comments/c6xh55/halo_reach_through_proton/