From dcf89588e6dea8f9b2c7f03ce9b394d877b79e2a Mon Sep 17 00:00:00 2001
From: ConfiG <cgytrus@cgyt.ru>
Date: Mon, 31 Jul 2023 19:18:58 +0300
Subject: [PATCH] link to xinput1_3 instead of xinput1_4 allows use in windows
 7 without workarounds

---
 installer/windows/Language Files/EnglishExtra.nsh |  2 +-
 installer/windows/Language Files/FinnishExtra.nsh |  2 +-
 installer/windows/Language Files/RussianExtra.nsh |  2 +-
 installer/windows/installer.nsi                   |  2 +-
 loader/launcher/windows/proxyLoader.c             | 12 +++++-------
 5 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/installer/windows/Language Files/EnglishExtra.nsh b/installer/windows/Language Files/EnglishExtra.nsh
index f2829cae..93f69e6d 100644
--- a/installer/windows/Language Files/EnglishExtra.nsh	
+++ b/installer/windows/Language Files/EnglishExtra.nsh	
@@ -9,7 +9,7 @@ ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Setup will guide you through the i
 ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Setup will guide you through the uninstallation of $(^NameDA).$\r$\n$\r$\nBefore starting the uninstallation, make sure Geometry Dash is not running.$\r$\n$\r$\n$_CLICK"
 !pragma warning default 6030
 
-${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " was not found. Geode is only compatible with Windows 8 and newer."
+${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " was not found. Geode is only compatible with Windows 7 and newer."
 ${LangFileString} GEODE_TEXT_MH_ALREADY_INSTALLED "This path already has Mega Hack v6/v7 installed!$\r$\nGeode doesn't work with MHv6/v7 (MHv8 WILL be compatible with Geode).$\r$\nPlease, uninstall it before proceeding."
 ${LangFileString} GEODE_TEXT_MOD_LOADER_ALREADY_INSTALLED "This path already has another mod loader installed!$\r$\nGeode doesn't work with any other mod loader.$\r$\nPlease, uninstall it before proceeding."
 ${LangFileString} GEODE_TEXT_GD_MISSING "$\r$\n$\r$\nThis path does not have Geometry Dash installed!"
diff --git a/installer/windows/Language Files/FinnishExtra.nsh b/installer/windows/Language Files/FinnishExtra.nsh
index e6a9de1f..7d35c28f 100644
--- a/installer/windows/Language Files/FinnishExtra.nsh	
+++ b/installer/windows/Language Files/FinnishExtra.nsh	
@@ -5,7 +5,7 @@ ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Saat tarvittavia ohjeita sitä muk
 ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Saat tarvittavia ohjeita sitä mukaa kuin $(^NameDA) -ohjelman poisto edistyy.$\r$\n$\r$\nVarmistathan ennen poistamista, että Geometry Dash ei ole käynnissä.$\r$\n$\r$\n$_CLICK"
 !pragma warning default 6030
 
-${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " ei löytynyt asennettuna koneesta. Geode on yhteensopiva ainoastaan Windows 8 ja uudempien versioiden kanssa."
+${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " ei löytynyt asennettuna koneesta. Geode on yhteensopiva ainoastaan Windows 7 ja uudempien versioiden kanssa."
 ${LangFileString} GEODE_TEXT_MH_ALREADY_INSTALLED "Valitussa kansiossa on jo Mega Hack v6/v7 asennettuna.$\r$\nGeode ei ole yhteensopiva MHv6/v7 kanssa (MHv8 on ensimmäinen yhteensopiva versio Geoden kanssa).$\r$\nPoistathan Mega Hackin ennen Geoden asentamista."
 ${LangFileString} GEODE_TEXT_MOD_LOADER_ALREADY_INSTALLED "Valitussa kansiossa on jo joitain modeja asennettuna.$\r$\nGeode ei ole yhteensopiva .DLL-muotoisten modien tai niiden lataajien kanssa.$\r$\nPoistathan .DLL-muotoiset modit ja niiden lataajat ennen Geoden asentamista."
 ${LangFileString} GEODE_TEXT_GD_MISSING "$\r$\n$\r$\nValitussa kansiossa ei ole Geometry Dash -peliä asennettuna."
diff --git a/installer/windows/Language Files/RussianExtra.nsh b/installer/windows/Language Files/RussianExtra.nsh
index 1e4658fe..6f6fa8d8 100644
--- a/installer/windows/Language Files/RussianExtra.nsh	
+++ b/installer/windows/Language Files/RussianExtra.nsh	
@@ -5,7 +5,7 @@ ${LangFileString} MUI_TEXT_WELCOME_INFO_TEXT "Эта программа уста
 ${LangFileString} MUI_UNTEXT_WELCOME_INFO_TEXT "Эта программа удалит $(^NameDA) из вашего компьютера.$\r$\n$\r$\nПеред началом удаления убедитесь, что Geometry Dash не запущен.$\r$\n$\r$\n$_CLICK"
 !pragma warning default 6030
 
-${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " не найден. Geode совместим только с Windows 8 и выше."
+${LangFileString} GEODE_TEXT_SYSTEM_XINPUT_MISSING " не найден. Geode совместим только с Windows 7 и выше."
 ${LangFileString} GEODE_TEXT_MH_ALREADY_INSTALLED "По этому пути уже установлен Mega Hack v6/v7!$\r$\nGeode не работает с MHv6/v7 (MHv8 БУДЕТ совместим Geode).$\r$\nПожалуйста, удалите его перед продолжением."
 ${LangFileString} GEODE_TEXT_MOD_LOADER_ALREADY_INSTALLED "По этому пути уже установлен другой загрузчик модов!$\r$\nGeode не работает с другими загрузчиками модов.$\r$\nПожалуйста, удалите его перед продолжением."
 ${LangFileString} GEODE_TEXT_GD_MISSING "$\r$\n$\r$\nПо этому пути не установлен Geometry Dash!"
diff --git a/installer/windows/installer.nsi b/installer/windows/installer.nsi
index b5446770..96b4a34b 100644
--- a/installer/windows/installer.nsi
+++ b/installer/windows/installer.nsi
@@ -251,7 +251,7 @@ FunctionEnd
 Function .onInit
     !insertmacro MUI_LANGDLL_DISPLAY
 
-    StrCpy $0 "$WINDIR\System32\XInput1_4.dll"
+    StrCpy $0 "$WINDIR\System32\xinput1_3.dll"
     IfFileExists $0 findGamePath 0
         MessageBox MB_ICONSTOP|MB_OK "$0$(GEODE_TEXT_SYSTEM_XINPUT_MISSING)"
         Abort
diff --git a/loader/launcher/windows/proxyLoader.c b/loader/launcher/windows/proxyLoader.c
index d6d9d95f..9fa605af 100644
--- a/loader/launcher/windows/proxyLoader.c
+++ b/loader/launcher/windows/proxyLoader.c
@@ -1,14 +1,12 @@
 #include <Windows.h>
 #include <stdio.h>
 
-#pragma comment(linker, "/export:XInputGetState=xinput1_4.XInputGetState")
-#pragma comment(linker, "/export:XInputSetState=xinput1_4.XInputSetState")
-#pragma comment(linker, "/export:XInputGetCapabilities=xinput1_4.XInputGetCapabilities")
+#pragma comment(linker, "/export:XInputGetState=xinput1_3.XInputGetState")
+#pragma comment(linker, "/export:XInputSetState=xinput1_3.XInputSetState")
+#pragma comment(linker, "/export:XInputGetCapabilities=xinput1_3.XInputGetCapabilities")
+#pragma comment(linker, "/export:XInputGetDSoundAudioDeviceGuids=xinput1_3.XInputGetDSoundAudioDeviceGuids")
 
 __declspec(dllimport) void fake();
-DWORD XInputGetDSoundAudioDeviceGuids(DWORD user, GUID* render, GUID* capture) {
+void impasta() {
 	fake();
-	return ERROR_BAD_ARGUMENTS;
 }
-
-#pragma comment(linker, "/export:XInputGetDSoundAudioDeviceGuids=_XInputGetDSoundAudioDeviceGuids")