From 04c115663b502b9f6e90e556bec9db55abe103c5 Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Sun, 19 Nov 2023 18:38:21 -0500 Subject: [PATCH 1/7] patches: add farlight 84 update --- patches/game-patches/farlight84.patch | 28 ----- patches/protonprep-lutris-staging.sh | 5 +- patches/wine-hotfixes/pending/4428.patch | 135 +++++++++++++++++++++++ 3 files changed, 138 insertions(+), 30 deletions(-) delete mode 100644 patches/game-patches/farlight84.patch create mode 100644 patches/wine-hotfixes/pending/4428.patch diff --git a/patches/game-patches/farlight84.patch b/patches/game-patches/farlight84.patch deleted file mode 100644 index 5dcc90c..0000000 --- a/patches/game-patches/farlight84.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/dlls/msvcrt/environ.c b/dlls/msvcrt/environ.c -index b23f1196319..cf1b8d99fe5 100644 ---- a/dlls/msvcrt/environ.c -+++ b/dlls/msvcrt/environ.c -@@ -25,6 +25,8 @@ - - WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); - -+static char userprofile[30] = "C:\\users\\steamuser\0"; -+ - /********************************************************************* - * getenv (MSVCRT.@) - */ -@@ -43,6 +45,14 @@ char * CDECL getenv(const char *name) - return pos + 1; - } - } -+ -+ //HACK: farlight 84 hack -+ if(strcmp(name, "USERPROFILE") == 0) -+ { -+ FIXME("USERPROFILE %s\n", debugstr_a(userprofile)); -+ return userprofile; -+ } -+ - return NULL; - } - diff --git a/patches/protonprep-lutris-staging.sh b/patches/protonprep-lutris-staging.sh index 2aeb38c..2d1aec2 100755 --- a/patches/protonprep-lutris-staging.sh +++ b/patches/protonprep-lutris-staging.sh @@ -321,8 +321,9 @@ patch -Np1 < ../patches/game-patches/ffxiv_hydaelyn_intro_playback_fix.patch # https://github.com/ValveSoftware/Proton/issues/6717 - echo "WINE: -GAME FIXES- Fix Farlight 84 dxva crash" - patch -Np1 < ../patches/game-patches/farlight84.patch + # https://gitlab.winehq.org/wine/wine/-/merge_requests/4428 + echo "WINE: -GAME FIXES- Fix Farlight 84 crash" + patch -Np1 < ../patches/wine-hotfixes/pending/4428.patch ### END GAME PATCH SECTION ### diff --git a/patches/wine-hotfixes/pending/4428.patch b/patches/wine-hotfixes/pending/4428.patch new file mode 100644 index 0000000..865a65a --- /dev/null +++ b/patches/wine-hotfixes/pending/4428.patch @@ -0,0 +1,135 @@ +From ed32c881e266b116e394f0343fc976ab0b6d2962 Mon Sep 17 00:00:00 2001 +From: Etaash Mathamsetty +Date: Fri, 17 Nov 2023 17:48:10 -0500 +Subject: [PATCH] cfgmgr32: Add CM_Register_Notification stub. + +--- + dlls/cfgmgr32/cfgmgr32.spec | 1 + + dlls/cfgmgr32/main.c | 8 +++++ + include/cfgmgr32.h | 72 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 81 insertions(+) + +diff --git a/dlls/cfgmgr32/cfgmgr32.spec b/dlls/cfgmgr32/cfgmgr32.spec +index 5c9b8f613db..e4cd845e2a4 100644 +--- a/dlls/cfgmgr32/cfgmgr32.spec ++++ b/dlls/cfgmgr32/cfgmgr32.spec +@@ -154,6 +154,7 @@ + @ stub CM_Register_Device_InterfaceW + @ stub CM_Register_Device_Interface_ExA + @ stub CM_Register_Device_Interface_ExW ++@ stdcall CM_Register_Notification(ptr ptr ptr ptr) + @ stub CM_Remove_SubTree + @ stub CM_Remove_SubTree_Ex + @ stub CM_Remove_Unmarked_Children +diff --git a/dlls/cfgmgr32/main.c b/dlls/cfgmgr32/main.c +index fee3c42a5c4..d15354367f8 100644 +--- a/dlls/cfgmgr32/main.c ++++ b/dlls/cfgmgr32/main.c +@@ -21,6 +21,14 @@ + + WINE_DEFAULT_DEBUG_CHANNEL(setupapi); + ++CONFIGRET WINAPI CM_Register_Notification( CM_NOTIFY_FILTER *filter, void *context, ++ PCM_NOTIFY_CALLBACK callback, HCMNOTIFICATION *notify_context ) ++{ ++ FIXME("%p %p %p %p stub!\n", filter, context, callback, notify_context); ++ ++ return CR_CALL_NOT_IMPLEMENTED; ++} ++ + /*********************************************************************** + * CM_MapCrToWin32Err (cfgmgr32.@) + */ +diff --git a/include/cfgmgr32.h b/include/cfgmgr32.h +index 04f1f80b174..e07ca4edd6f 100644 +--- a/include/cfgmgr32.h ++++ b/include/cfgmgr32.h +@@ -187,6 +187,7 @@ typedef DWORD CONFIGRET; + typedef DWORD DEVINST, *PDEVINST; + typedef DWORD DEVNODE, *PDEVNODE; + typedef HANDLE HMACHINE, *PHMACHINE; ++typedef HANDLE HCMNOTIFICATION, *PHCMNOTIFICATION; + typedef CHAR *DEVNODEID_A, *DEVINSTID_A; + typedef WCHAR *DEVNODEID_W, *DEVINSTID_W; + typedef ULONG REGDISPOSITION; +@@ -208,6 +209,77 @@ typedef enum _PNP_VETO_TYPE + PNP_VetoInsufficientRights + } PNP_VETO_TYPE, *PPNP_VETO_TYPE; + ++typedef enum _CM_NOTIFY_FILTER_TYPE ++{ ++ CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0, ++ CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE, ++ CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE, ++ CM_NOTIFY_FILTER_TYPE_MAX ++} CM_NOTIFY_FILTER_TYPE, *PCM_NOTIFY_FILTER_TYPE; ++ ++typedef enum _CM_NOTIFY_ACTION ++{ ++ CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0, ++ CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL, ++ CM_NOTIFY_ACTION_DEVICEQUERYREMOVE, ++ CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED, ++ CM_NOTIFY_ACTION_DEVICEREMOVEPENDING, ++ CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE, ++ CM_NOTIFY_ACTION_DEVICECUSTOMEVENT, ++ CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED, ++ CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED, ++ CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED, ++ CM_NOTIFY_ACTION_MAX ++} CM_NOTIFY_ACTION, *PCM_NOTIFY_ACTION; ++ ++typedef struct _CM_NOTIFY_FILTER ++{ ++ DWORD cbSize; ++ DWORD Flags; ++ CM_NOTIFY_FILTER_TYPE FilterType; ++ DWORD Reserved; ++ union { ++ struct { ++ GUID ClassGuid; ++ } DeviceInterface; ++ struct { ++ HANDLE hTarget; ++ } DeviceHandle; ++ struct { ++ WCHAR InstanceId[MAX_DEVICE_ID_LEN]; ++ } DeviceInstance; ++ } u; ++} CM_NOTIFY_FILTER, *PCM_NOTIFY_FILTER; ++ ++typedef struct _CM_NOTIFY_EVENT_DATA ++{ ++ CM_NOTIFY_FILTER_TYPE FilterType; ++ DWORD Reserved; ++ union { ++ struct { ++ GUID ClassGuid; ++ WCHAR SymbolicLink[ANYSIZE_ARRAY]; ++ } DeviceInterface; ++ struct { ++ GUID EventGuid; ++ LONG NameOffset; ++ DWORD DataSize; ++ BYTE Data[ANYSIZE_ARRAY]; ++ } DeviceHandle; ++ struct { ++ WCHAR InstanceId[ANYSIZE_ARRAY]; ++ } DeviceInstance; ++ } u; ++} CM_NOTIFY_EVENT_DATA, *PCM_NOTIFY_EVENT_DATA; ++ ++typedef DWORD (WINAPI *PCM_NOTIFY_CALLBACK)( ++ HCMNOTIFICATION Notify, ++ void *Context, ++ CM_NOTIFY_ACTION Action, ++ CM_NOTIFY_EVENT_DATA *EventData, ++ DWORD EventDataSize ++); ++ + DECL_WINELIB_CFGMGR32_TYPE_AW(DEVNODEID) + DECL_WINELIB_CFGMGR32_TYPE_AW(DEVINSTID) + +-- +GitLab + From ad8fa1a8c5ee7a9aed30a8c3b8175455d886c987 Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Sun, 19 Nov 2023 18:42:56 -0500 Subject: [PATCH 2/7] wine: update bleeding edge --- proton-wine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proton-wine b/proton-wine index d5a9706..07e7c86 160000 --- a/proton-wine +++ b/proton-wine @@ -1 +1 @@ -Subproject commit d5a97061ec96dbbceccec3a7f3ba54b39738fbdd +Subproject commit 07e7c86327b7ccaeee04877b4e1f94e271e9bd07 From bc5f337471221cc5bd4b03590639c68229befc0e Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Sun, 19 Nov 2023 18:44:12 -0500 Subject: [PATCH 3/7] Release GE-Proton8-23 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 048b560..528d96c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Lutris Wine GE-Proton8-22 +Lutris Wine GE-Proton8-23 From 8e8bf5dd3b1253fd796ce309a5301c3f5661658c Mon Sep 17 00:00:00 2001 From: Pedro Nishiyama Date: Mon, 20 Nov 2023 03:31:57 -0300 Subject: [PATCH 4/7] add pending "ntdll: HACK: Add WINE_DISABLE_SFN option." --- patches/protonprep-lutris-staging.sh | 4 ++ .../pending/ntdll_add_wine_disable_sfn.patch | 71 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch diff --git a/patches/protonprep-lutris-staging.sh b/patches/protonprep-lutris-staging.sh index 2d1aec2..2cf8475 100755 --- a/patches/protonprep-lutris-staging.sh +++ b/patches/protonprep-lutris-staging.sh @@ -349,6 +349,10 @@ echo "WINE: -PENDING- Guild Wars 2 patch" patch -Np1 < ../patches/wine-hotfixes/pending/hotfix-guild_wars_2.patch + # https://github.com/ValveSoftware/wine/pull/205 + echo "WINE: -PENDING- Add WINE_DISABLE_SFN option." + patch -Np1 < ../patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch + ### END WINE PENDING UPSTREAM SECTION ### diff --git a/patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch b/patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch new file mode 100644 index 0000000..7343fff --- /dev/null +++ b/patches/wine-hotfixes/pending/ntdll_add_wine_disable_sfn.patch @@ -0,0 +1,71 @@ +diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c +index 870c5e39271..3162d36a803 100644 +--- a/dlls/ntdll/unix/file.c ++++ b/dlls/ntdll/unix/file.c +@@ -1511,16 +1511,20 @@ static BOOL append_entry( struct dir_data *data, const char *long_name, + if (long_len == ARRAY_SIZE(long_nameW)) return TRUE; + long_nameW[long_len] = 0; + +- if (short_name) +- { +- short_len = ntdll_umbstowcs( short_name, strlen(short_name), +- short_nameW, ARRAY_SIZE( short_nameW ) - 1 ); +- } +- else /* generate a short name if necessary */ ++ short_len = 0; ++ ++ if (!disable_sfn) + { +- short_len = 0; +- if (!is_legal_8dot3_name( long_nameW, long_len )) +- short_len = hash_short_file_name( long_nameW, long_len, short_nameW ); ++ if (short_name) ++ { ++ short_len = ntdll_umbstowcs( short_name, strlen(short_name), ++ short_nameW, ARRAY_SIZE( short_nameW ) - 1 ); ++ } ++ else /* generate a short name if necessary */ ++ { ++ if (!is_legal_8dot3_name( long_nameW, long_len )) ++ short_len = hash_short_file_name( long_nameW, long_len, short_nameW ); ++ } + } + short_nameW[short_len] = 0; + wcsupr( short_nameW ); +diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c +index 5f7f114b286..cbea0dc5d2d 100644 +--- a/dlls/ntdll/unix/loader.c ++++ b/dlls/ntdll/unix/loader.c +@@ -2152,6 +2152,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = + debugstr_pc, + }; + ++BOOL disable_sfn; + BOOL ac_odyssey; + BOOL fsync_simulate_sched_quantum; + BOOL alert_simulate_sched_quantum; +@@ -2175,6 +2176,12 @@ static void hacks_init(void) + ERR( "HACK: ram_reporting_bias %lldMB.\n", ram_reporting_bias / (1024 * 1024) ); + } + ++ env_str = getenv("WINE_DISABLE_SFN"); ++ if (env_str) ++ disable_sfn = !!atoi(env_str); ++ else if (main_argc > 1 && (strstr(main_argv[1], "Yakuza5.exe") )) ++ disable_sfn = TRUE; ++ + env_str = getenv("WINE_SIMULATE_ASYNC_READ"); + if (env_str) + ac_odyssey = !!atoi(env_str); +diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h +index cae15947bbd..6403dad858d 100644 +--- a/dlls/ntdll/unix/unix_private.h ++++ b/dlls/ntdll/unix/unix_private.h +@@ -152,6 +152,7 @@ extern BOOL is_wow64 DECLSPEC_HIDDEN; + extern struct ldt_copy __wine_ldt_copy DECLSPEC_HIDDEN; + #endif + ++extern BOOL disable_sfn DECLSPEC_HIDDEN; + extern BOOL ac_odyssey DECLSPEC_HIDDEN; + extern BOOL fsync_simulate_sched_quantum DECLSPEC_HIDDEN; + extern BOOL alert_simulate_sched_quantum DECLSPEC_HIDDEN; From 92644db67188a33386cb184d70ceac6d58a26e05 Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Mon, 20 Nov 2023 14:51:36 -0500 Subject: [PATCH 5/7] wine: add yakuza 5 patch, whoopsie --- proton-wine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proton-wine b/proton-wine index 07e7c86..4878953 160000 --- a/proton-wine +++ b/proton-wine @@ -1 +1 @@ -Subproject commit 07e7c86327b7ccaeee04877b4e1f94e271e9bd07 +Subproject commit 487895366492882ea15452789fed42d6c6de1c29 From e0f823d2f5a1c7545dd779ce034770a9eb7c1833 Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Mon, 20 Nov 2023 14:52:32 -0500 Subject: [PATCH 6/7] buildbot: update buildbot --- buildbot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildbot b/buildbot index 8bd5b29..7311fb1 160000 --- a/buildbot +++ b/buildbot @@ -1 +1 @@ -Subproject commit 8bd5b293168d83e5a4a46ce22aee5e2a79c1f1ce +Subproject commit 7311fb17ca738ff49b246b1d4b59b61c0c322b47 From ba2339d9df86be01b6378371b469fe3fb242fc25 Mon Sep 17 00:00:00 2001 From: Thomas Crider Date: Mon, 20 Nov 2023 14:52:44 -0500 Subject: [PATCH 7/7] Release GE-Proton8-24 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 528d96c..562359d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Lutris Wine GE-Proton8-23 +Lutris Wine GE-Proton8-24