|
@@ -137,8 +137,6 @@ void ApplyPatches() {
|
|
|
};
|
|
|
const struct { void* Address; std::vector<uint8_t> Data; } patches_710[] =
|
|
|
{
|
|
|
- // Always return true for the SelCredit enter SelPv check
|
|
|
- { (void*)0x0000000140393610, { 0xB0, 0x01, 0xC3, 0x90, 0x90, 0x90 } },
|
|
|
// Just completely ignore all SYSTEM_STARTUP errors
|
|
|
{ (void*)0x00000001403F5080, { 0xC3 } },
|
|
|
// Always exit TASK_MODE_APP_ERROR on the first frame
|
|
@@ -176,6 +174,8 @@ void ApplyPatches() {
|
|
|
{ (void*)0x0000000140136CFA,{ 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 } },
|
|
|
// enable module selector without use_card
|
|
|
{ (void*)0x00000001405C513B,{ 0x01 } },
|
|
|
+ // fix back button
|
|
|
+ { (void*)0x0000000140578FB8, { 0xE9, 0x73, 0xFF, 0xFF, 0xFF } },
|
|
|
// Force Hide IDs
|
|
|
{ (void*)0x00000001409A5918, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
|
{ (void*)0x00000001409A5928, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
@@ -222,8 +222,26 @@ void ApplyPatches() {
|
|
|
auto nOGLPatchB = GetPrivateProfileIntW(L"patches", L"opengl_patch_b", FALSE, CONFIG_FILE);
|
|
|
auto nTAA = GetPrivateProfileIntW(L"graphics", L"taa", TRUE, CONFIG_FILE);
|
|
|
auto nMLAA = GetPrivateProfileIntW(L"graphics", L"mlaa", TRUE, CONFIG_FILE);
|
|
|
+ auto nDoF = GetPrivateProfileIntW(L"graphics", L"dof", TRUE, CONFIG_FILE);
|
|
|
+ auto nMAG = GetPrivateProfileIntW(L"graphics", L"mag", 0, CONFIG_FILE);
|
|
|
auto nStereo = GetPrivateProfileIntW(L"patches", L"stereo", TRUE, CONFIG_FILE);
|
|
|
auto nCustomPatches = GetPrivateProfileIntW(L"patches", L"custom_patches", TRUE, CONFIG_FILE);
|
|
|
+ auto nQuickStart = GetPrivateProfileIntW(L"patches", L"quick_start", 1, CONFIG_FILE);
|
|
|
+ auto nNoScrollingSfx = GetPrivateProfileIntW(L"patches", L"no_scrolling_sfx", FALSE, CONFIG_FILE);
|
|
|
+ auto nNoHandScaling = GetPrivateProfileIntW(L"patches", L"no_hand_scaling", FALSE, CONFIG_FILE);
|
|
|
+ auto nDefaultHandSize = GetPrivateProfileIntW(L"patches", L"default_hand_size", -1, CONFIG_FILE);
|
|
|
+ auto nForceMouth = GetPrivateProfileIntW(L"patches", L"force_mouth", 0, CONFIG_FILE);
|
|
|
+ auto nForceExpressions = GetPrivateProfileIntW(L"patches", L"force_expressions", 0, CONFIG_FILE);
|
|
|
+ auto nForceLook = GetPrivateProfileIntW(L"patches", L"force_look", 0, CONFIG_FILE);
|
|
|
+ auto nNpr1 = GetPrivateProfileIntW(L"graphics", L"npr1", 0, CONFIG_FILE);
|
|
|
+ auto nReflections = GetPrivateProfileIntW(L"graphics", L"reflections", TRUE, CONFIG_FILE);
|
|
|
+ auto nShadows = GetPrivateProfileIntW(L"graphics", L"shadows", TRUE, CONFIG_FILE);
|
|
|
+ auto nPunchthrough = GetPrivateProfileIntW(L"graphics", L"punchthrough", TRUE, CONFIG_FILE);
|
|
|
+ auto nGlare = GetPrivateProfileIntW(L"graphics", L"glare", TRUE, CONFIG_FILE);
|
|
|
+ auto nShader = GetPrivateProfileIntW(L"graphics", L"shader", TRUE, CONFIG_FILE);
|
|
|
+ auto n2D = GetPrivateProfileIntW(L"graphics", L"2D", FALSE, CONFIG_FILE);
|
|
|
+ auto nNoDelete = GetPrivateProfileIntW(L"patches", L"prevent_data_deletion", FALSE, CONFIG_FILE);
|
|
|
+
|
|
|
|
|
|
std::string version_string = std::to_string(game_version);
|
|
|
version_string.insert(version_string.begin()+1, '.');
|
|
@@ -285,7 +303,7 @@ void ApplyPatches() {
|
|
|
*((byte*)0x000000014049258A + 2) = 0x90;
|
|
|
VirtualProtect((BYTE*)0x000000014049258A, 3, oldProtect, &bck); }
|
|
|
|
|
|
- printf("[TLAC] MLAA disabled\n");
|
|
|
+ printf("[Patches] MLAA disabled\n");
|
|
|
}
|
|
|
|
|
|
// Replace the hardcoded videos with MP4s, if they exist
|
|
@@ -554,7 +572,7 @@ void ApplyPatches() {
|
|
|
*((byte*)0x00000001404AB11A + 2) = 0x90;
|
|
|
VirtualProtect((BYTE*)0x00000001404AB11A, 3, oldProtect, &bck); }
|
|
|
|
|
|
- printf("[TLAC] MLAA disabled\n");
|
|
|
+ printf("[Patches] MLAA disabled\n");
|
|
|
}
|
|
|
|
|
|
// Replace the hardcoded videos with MP4s, if they exist
|
|
@@ -577,6 +595,9 @@ void ApplyPatches() {
|
|
|
// Enable "FREE PLAY" mode
|
|
|
if (nFreeplay || nHideFreeplay)
|
|
|
{
|
|
|
+ // Always return true for the SelCredit enter SelPv check
|
|
|
+ InjectCode((void*)0x0000000140393610, { 0xB0, 0x01, 0xC3, 0x90, 0x90, 0x90 });
|
|
|
+
|
|
|
InjectCode((void*)0x00000001403BABEA, { 0x75 });
|
|
|
printf("[Patches] Show FREE PLAY instead of CREDIT(S)\n");
|
|
|
|
|
@@ -765,11 +786,285 @@ void ApplyPatches() {
|
|
|
{
|
|
|
InjectCode((void*)0x0000000140565E6B, { 0x90, 0x90 });
|
|
|
}
|
|
|
- // The original slider update needs to run for hardware sliders to work -- only patch it when using emulation
|
|
|
- if (!nHardwareSlider)
|
|
|
+ // Quick start
|
|
|
{
|
|
|
- // Don't update the touch slider state so we can write our own
|
|
|
- InjectCode((void*)0x000000014061579B, { 0x90, 0x90, 0x90, 0x8B, 0x42, 0xE0, 0x90, 0x90, 0x90 });
|
|
|
+ if (nQuickStart == 1) // skip the card/guest screen
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x0000000140578EA9, { 0xE9, 0x8E, 0x00, 0x00, 0x00 });
|
|
|
+ }
|
|
|
+ else if (nQuickStart == 2) // skip everything; normal mode
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x0000000140578EA9, { 0xE9, 0xF1, 0x00, 0x00, 0x00 });
|
|
|
+ InjectCode((void*)0x0000000140578E9D, { 0xC7, 0x47, 0x68, 0x28, 0x00, 0x00, 0x00 }); // skip back button error
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Disable scrolling sound effect
|
|
|
+ if (nNoScrollingSfx)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x00000001405C84B3, { 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ }
|
|
|
+ // Disable hand scaling
|
|
|
+ if (nNoHandScaling)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x0000000140120709, { 0xE9, 0x82, 0x0A, 0x00 });
|
|
|
+ }
|
|
|
+ // Default hand size
|
|
|
+ if (nDefaultHandSize != -1)
|
|
|
+ {
|
|
|
+ printf("[Patches] Changing default hand size...\n");
|
|
|
+ const float num = (float)nDefaultHandSize / 10000.0;
|
|
|
+ DWORD oldProtect;
|
|
|
+ float* addr1 = (float*)(0x140506B59);
|
|
|
+ float* addr2 = (float*)(0x140506B60);
|
|
|
+ /*float* addr3 = (float*)(0x140506B67);
|
|
|
+ float* addr4 = (float*)(0x140506B71);*/
|
|
|
+ VirtualProtect(addr1, 4, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ VirtualProtect(addr2, 4, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ /*VirtualProtect(addr3, 4, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ VirtualProtect(addr4, 4, PAGE_EXECUTE_READWRITE, &oldProtect);*/
|
|
|
+ *addr1 = *addr2 /*= *addr3 = *addr4*/ = num;
|
|
|
+ VirtualProtect(addr1, 4, oldProtect, nullptr);
|
|
|
+ VirtualProtect(addr2, 4, oldProtect, nullptr);
|
|
|
+ /*VirtualProtect(addr3, 4, oldProtect, nullptr);
|
|
|
+ VirtualProtect(addr4, 4, oldProtect, nullptr);*/
|
|
|
+ printf("[Patches] New default hand size: %f\n", num);
|
|
|
+ }
|
|
|
+ // Force mouth animations
|
|
|
+ {
|
|
|
+ if (nForceMouth == 1) // PDA
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing PDA mouth...\n");
|
|
|
+ int* mouth_table = (int*)(0x1409A1DC0);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(mouth_table, 44, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 11; i++)
|
|
|
+ {
|
|
|
+ mouth_table[i]++;
|
|
|
+ }
|
|
|
+ VirtualProtect(mouth_table, 44, oldProtect, nullptr);
|
|
|
+ printf("[Patches] PDA mouth forced\n");
|
|
|
+ }
|
|
|
+ else if (nForceMouth == 2) // FT
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing FT mouth...\n");
|
|
|
+ int* mouth_table_oldid = (int*)(0x1409A1E1C);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(mouth_table_oldid, 44, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 11; i++)
|
|
|
+ {
|
|
|
+ mouth_table_oldid[i]--;
|
|
|
+ }
|
|
|
+ VirtualProtect(mouth_table_oldid, 44, oldProtect, nullptr);
|
|
|
+ printf("[Patches] FT mouth forced\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Force expressions
|
|
|
+ {
|
|
|
+ if (nForceExpressions == 1) // PDA
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing PDA expressions...\n");
|
|
|
+ int* exp_table = (int*)(0x140A21900);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(exp_table, 104, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 26; i++)
|
|
|
+ {
|
|
|
+ exp_table[i] += 2;
|
|
|
+ }
|
|
|
+ VirtualProtect(exp_table, 104, oldProtect, nullptr);
|
|
|
+ printf("[Patches] PDA expressions forced\n");
|
|
|
+ }
|
|
|
+ else if (nForceExpressions == 2) // FT
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing FT expressions...\n");
|
|
|
+ int* exp_table_oldid = (int*)(0x140A219D0);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(exp_table_oldid, 104, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 26; i++)
|
|
|
+ {
|
|
|
+ exp_table_oldid[i] -= 2;
|
|
|
+ }
|
|
|
+ VirtualProtect(exp_table_oldid, 104, oldProtect, nullptr);
|
|
|
+ printf("[Patches] FT expressions forced\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Force look animations
|
|
|
+ {
|
|
|
+ if (nForceLook == 1) // PDA
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing PDA look...\n");
|
|
|
+ int* look_table = (int*)(0x1409A1D70);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(look_table, 36, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 9; i++)
|
|
|
+ {
|
|
|
+ look_table[i]++;
|
|
|
+ }
|
|
|
+ VirtualProtect(look_table, 36, oldProtect, nullptr);
|
|
|
+ printf("[Patches] PDA look forced\n");
|
|
|
+ }
|
|
|
+ else if (nForceLook == 2) // FT
|
|
|
+ {
|
|
|
+ printf("[Patches] Forcing FT look...\n");
|
|
|
+ int* look_table_oldid = (int*)(0x1409A1D9C);
|
|
|
+ DWORD oldProtect;
|
|
|
+ VirtualProtect(look_table_oldid, 36, PAGE_EXECUTE_READWRITE, &oldProtect);
|
|
|
+ for (int i = 0; i < 9; i++)
|
|
|
+ {
|
|
|
+ look_table_oldid[i]--;
|
|
|
+ }
|
|
|
+ VirtualProtect(look_table_oldid, 36, oldProtect, nullptr);
|
|
|
+ printf("[Patches] FT look forced\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // NPR1
|
|
|
+ {
|
|
|
+ if (nNpr1 == 1) // force on
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x0000000140502FC0, { 0xC7, 0x05, 0x6E });
|
|
|
+ InjectCode((void*)0x0000000140502FC6, { 0x01, 0x00, 0x00, 0x00, 0xC3 });
|
|
|
+
|
|
|
+ printf("[Patches] NPR1 forced\n");
|
|
|
+ }
|
|
|
+ else if (nNpr1 == 2) // force off
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x0000000140502FC0, { 0xC7, 0x05, 0x6E });
|
|
|
+ InjectCode((void*)0x0000000140502FC6, { 0x00, 0x00, 0x00, 0x00, 0xC3 });
|
|
|
+
|
|
|
+ printf("[Patches] NPR1 disabled\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Depth of Field
|
|
|
+ if (!nDoF)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x00000001409476AB, { 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+
|
|
|
+ InjectCode((void*)0x00000001411AB650, { 0b00000001 });
|
|
|
+ }
|
|
|
+ // MAG filter
|
|
|
+ if (nMAG > 0)
|
|
|
+ {
|
|
|
+ //InjectCode((void*)0x00000001404AB142, { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+
|
|
|
+ unsigned char filter;
|
|
|
+ switch (nMAG)
|
|
|
+ {
|
|
|
+ case 1: // nearest
|
|
|
+ filter = 0;
|
|
|
+ InjectCode((void*)0x00000001404ACE56, { 0x90, 0x90 });
|
|
|
+ break;
|
|
|
+ case 2: // sharpen
|
|
|
+ filter = 3; // sharpen(4tap)
|
|
|
+ break;
|
|
|
+ case 3: // cone
|
|
|
+ filter = 5; // cone(2tap)
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ filter = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //InjectCode((void*)0x00000001404A864F, { filter });
|
|
|
+ //InjectCode((void*)0x00000001411AC518, { filter });
|
|
|
+
|
|
|
+ InjectCode((void*)0x00000001404ACE8E, { 0xB9, filter, 0x00, 0x00 });
|
|
|
+ InjectCode((void*)0x00000001404ACE93, { 0x90 });
|
|
|
+ }
|
|
|
+ // Reflections
|
|
|
+ if (!nReflections)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x1406477C0, { 0xE9, 0xF3, 0x00, 0x00, 0x00, 0x90 });
|
|
|
+ InjectCode((void*)0x1411ADAFC, { 0x00 });
|
|
|
+ }
|
|
|
+ // Shadows
|
|
|
+ if (!nShadows)
|
|
|
+ {
|
|
|
+ //InjectCode((void*)0x140502B44, { 0x90, 0x90, 0x90 });
|
|
|
+ //InjectCode((void*)0x140502BB2, { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)0x140502766, { 0x00 });
|
|
|
+ InjectCode((void*)0x1411AD438, { 0x00 });
|
|
|
+ InjectCode((void*)0x1411AD320, { 0x00 });
|
|
|
+ }
|
|
|
+ // Punch-through transparency
|
|
|
+ if (!nPunchthrough)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x1411AD43D, { 0x00 });
|
|
|
+ }
|
|
|
+ // Glare
|
|
|
+ if (!nGlare)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x1404B2168, { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ }
|
|
|
+ // Shader
|
|
|
+ if (!nShader)
|
|
|
+ {
|
|
|
+ InjectCode((void*)0x140C9C48E, { 0x00 });
|
|
|
+ }
|
|
|
+ // 2D
|
|
|
+ if (n2D)
|
|
|
+ {
|
|
|
+ //InjectCode((void*)0x140502B44, { 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)0x140502BB2, { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)0x140502A3C, { 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ /*InjectCode((void*)0x1411AD320, { 0x00 }); // shadow
|
|
|
+ InjectCode((void*)0x1411AD323, { 0x00 }); // reflect
|
|
|
+ InjectCode((void*)0x1411AD321, { 0x00 }); // SS_SSS
|
|
|
+ InjectCode((void*)0x1411AD325, { 0x00 }); // preprocess
|
|
|
+ InjectCode((void*)0x1411AD328, { 0x00 }); // 3D*/
|
|
|
+ InjectCode((void*)0x1411AD32A, { 0x01 }); // post process
|
|
|
+ InjectCode((void*)0x1411AD32B, { 0x01 }); // sprite
|
|
|
+
|
|
|
+ InjectCode((void*)0x140A07920, { 0x00 }); // ignore objset
|
|
|
+ }
|
|
|
+ // Prevent data deletion
|
|
|
+ if (nNoDelete)
|
|
|
+ {
|
|
|
+ InjectCode((void*)(0x1406FEF80 + 0x1DB), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407113F0 + 0x13C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712270 + 0x6C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712580 + 0x4C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712580 + 0x7C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713470 + 0x104), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x102), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x135), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x232), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713810 + 0x3E8), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713D00 + 0x677), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x9C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x1D2), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x218), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x22A), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140720910 + 0x25C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140723EE0 + 0xEC), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140870DE0 + 0x4), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1406FEF80 + 0x1DB), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407113F0 + 0x13C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712270 + 0x6E), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712580 + 0x4C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140712580 + 0x7C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713470 + 0x104), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x102), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x135), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407135B0 + 0x232), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713810 + 0x3E8), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140713D00 + 0x677), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x9C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x1D2), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x218), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x22A), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140720910 + 0x25C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140723EE0 + 0xEC), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407168A0 + 0x9C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140870DE0 + 0x4), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x14081B6A4), { 0xC3 });
|
|
|
+
|
|
|
+ InjectCode((void*)(0x1406E1090 + 0x43C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140718250 + 0x176), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140718750 + 0xC9), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407193E0 + 0xFC), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1406E1090 + 0x43C), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140718250 + 0x176), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x140718750 + 0xC9), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x1407193E0 + 0xFC), { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 });
|
|
|
+ InjectCode((void*)(0x14081B67A), { 0xC3 });
|
|
|
}
|
|
|
}
|
|
|
|