diff --git a/OpenParrot/src/Functions/Games/ES3X/StarWars.cpp b/OpenParrot/src/Functions/Games/ES3X/StarWars.cpp index 3285f2a..1061bbe 100644 --- a/OpenParrot/src/Functions/Games/ES3X/StarWars.cpp +++ b/OpenParrot/src/Functions/Games/ES3X/StarWars.cpp @@ -98,10 +98,32 @@ static unsigned int Hook_hasp_write(int hasp_handle, int hasp_fileid, unsigned i } extern LPCSTR hookPort; + +static InitFunction StarWarsJapEs3XFunc([]() + { + hookPort = "COM3"; + + GenerateDongleData(); + + MH_Initialize(); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_write", Hook_hasp_write, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_read", Hook_hasp_read, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_get_size", Hook_hasp_get_size, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_decrypt", Hook_hasp_decrypt, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_encrypt", Hook_hasp_encrypt, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_logout", Hook_hasp_logout, NULL); + MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_login", Hook_hasp_login, NULL); + MH_CreateHookApi(L"xinput1_3.dll", "XInputGetState", &XInputGetStateStarWars, NULL); + MH_EnableHook(MH_ALL_HOOKS); + + }, GameID::StarWarsEs3X); + static InitFunction StarWarsEs3XFunc([]() { - hookPort = "COM3"; + uintptr_t imageBase = (uintptr_t)GetModuleHandleA(0); + hookPort = "COM3"; + GenerateDongleData(); MH_Initialize(); @@ -113,8 +135,13 @@ static InitFunction StarWarsEs3XFunc([]() MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_logout", Hook_hasp_logout, NULL); MH_CreateHookApi(L"hasp_windows_x64_100610.dll", "hasp_login", Hook_hasp_login, NULL); MH_CreateHookApi(L"xinput1_3.dll", "XInputGetState", &XInputGetStateStarWars, NULL); - MH_EnableHook(MH_ALL_HOOKS); - + MH_EnableHook(MH_ALL_HOOKS); + + if (ToBool(config["General"]["2D DomeFix"])) + { + injector::MakeNOP(imageBase + 0xBCA13, 3); + } + }, GameID::StarWarsEs3X); static InitFunction StarWarsEs3XLauncherFunc([]() diff --git a/OpenParrot/src/Utility/GameDetect.cpp b/OpenParrot/src/Utility/GameDetect.cpp index ad7f8d8..7ec92e9 100644 --- a/OpenParrot/src/Utility/GameDetect.cpp +++ b/OpenParrot/src/Utility/GameDetect.cpp @@ -484,9 +484,11 @@ void GameDetect::DetectCurrentGame() currentGame = GameID::StarWarsJapEs3XLauncher; break; case 0x8505c794: - case 0xe1e9e32c: // JPN currentGame = GameID::StarWarsEs3X; break; + case 0xe1e9e32c: // JPN + currentGame = GameID::StarWarsJapEs3X; + break; #endif default: #ifdef _DEBUG diff --git a/OpenParrot/src/Utility/GameID.h b/OpenParrot/src/Utility/GameID.h index 90ac9af..5ae30e5 100644 --- a/OpenParrot/src/Utility/GameID.h +++ b/OpenParrot/src/Utility/GameID.h @@ -63,5 +63,6 @@ enum class GameID TER, StarWarsJapEs3XLauncher, StarWarsEs3XLauncher, - StarWarsEs3X + StarWarsEs3X, + StarWarsJapEs3X }; \ No newline at end of file