From 78e61e9cdff46dffa74e543504df31f49e525a0d Mon Sep 17 00:00:00 2001 From: Aaron M Date: Sat, 23 May 2020 00:59:21 +1200 Subject: [PATCH] Modify M2 Emulator for individual ffb strength etc --- Config/FFBPlugin.ini | 73 +- Game Files/M2Emulator.cpp | 4728 ++----------------------------------- 2 files changed, 318 insertions(+), 4483 deletions(-) diff --git a/Config/FFBPlugin.ini b/Config/FFBPlugin.ini index d35faf7..50d5808 100644 --- a/Config/FFBPlugin.ini +++ b/Config/FFBPlugin.ini @@ -571,21 +571,74 @@ HideCursor=0 [M2Emulator] GameId=25 -MinForce=0 -MaxForce=100 -FeedbackLength=500 -PowerMode=0 -EnableForceSpringEffect=0 -ForceSpringStrength=70 DaytonaAIMultiplayerHack=0 DaytonaForcePanoramicAttract=0 +EnableOutputs=0 +FeedbackLengthDaytona=500 +PowerModeDaytona=0 +EnableForceSpringEffectDaytona=0 +ForceSpringStrengthDaytona=80 +MinForceDaytona=0 +MaxForceDaytona=100 +AlternativeMinForceLeftDaytona=0 +AlternativeMaxForceLeftDaytona=-100 +AlternativeMinForceRightDaytona=0 +AlternativeMaxForceRightDaytona=100 +FeedbackLengthSRally=500 +PowerModeSRally=0 +EnableForceSpringEffectSRally=0 +ForceSpringStrengthSRally=80 +MinForceSRally=0 +MaxForceSRally=100 +AlternativeMinForceLeftSRally=0 +AlternativeMaxForceLeftSRally=-100 +AlternativeMinForceRightSRally=0 +AlternativeMaxForceRightSRally=100 +FeedbackLengthIndy500=500 +PowerModeIndy500=0 +EnableForceSpringEffectIndy500=0 +ForceSpringStrengthIndy500=80 +MinForceIndy500=0 +MaxForceIndy500=100 +AlternativeMinForceLeftIndy500=0 +AlternativeMaxForceLeftIndy500=-100 +AlternativeMinForceRightIndy500=0 +AlternativeMaxForceRightIndy500=100 +FeedbackLengthSTCC=500 +PowerModeSTCC=0 +EnableForceSpringEffectSTCC=0 +ForceSpringStrengthSTCC=80 +MinForceSTCC=0 +MaxForceSTCC=100 +AlternativeMinForceLeftSTCC=0 +AlternativeMaxForceLeftSTCC=-100 +AlternativeMinForceRightSTCC=0 +AlternativeMaxForceRightSTCC=100 +FeedbackLengthOverRev=500 +PowerModeOverRev=0 +EnableForceSpringEffectOverRev=0 +ForceSpringStrengthOverRev=80 +MinForceOverRev=0 +MaxForceOverRev=100 +AlternativeMinForceLeftOverRev=0 +AlternativeMaxForceLeftOverRev=-100 +AlternativeMinForceRightOverRev=0 +AlternativeMaxForceRightOverRev=100 +FeedbackLengthSuperGT=500 +PowerModeSuperGT=0 +EnableForceSpringEffectSuperGT=0 +ForceSpringStrengthSuperGT=80 +MinForceSuperGT=0 +MaxForceSuperGT=100 +AlternativeMinForceLeftSuperGT=0 +AlternativeMaxForceLeftSuperGT=-100 +AlternativeMinForceRightSuperGT=0 +AlternativeMaxForceRightSuperGT=100 [Supermodel 32bit Outputs] GameId=34 FeedbackLengthDaytona2=500 PowerModeDaytona2=0 -EnableForceSpringEffectDaytona2=0 -ForceSpringStrengthDaytona2=80 MinForceDaytona2=0 MaxForceDaytona2=100 AlternativeMinForceLeftDaytona2=0 @@ -594,8 +647,6 @@ AlternativeMinForceRightDaytona2=0 AlternativeMaxForceRightDaytona2=100 FeedbackLengthScud=500 PowerModeScud=0 -EnableForceSpringEffectScud=0 -ForceSpringStrengthScud=80 MinForceScud=0 MaxForceScud=100 AlternativeMinForceLeftScud=0 @@ -604,8 +655,6 @@ AlternativeMinForceRightScud=0 AlternativeMaxForceRightScud=100 FeedbackLengthLeMans=500 PowerModeLeMans=0 -EnableForceSpringEffectLeMans=0 -ForceSpringStrengthLeMans=80 MinForceLeMans=0 MaxForceLeMans=100 AlternativeMinForceLeftLeMans=0 diff --git a/Game Files/M2Emulator.cpp b/Game Files/M2Emulator.cpp index 2d9746a..25e1c7d 100644 --- a/Game Files/M2Emulator.cpp +++ b/Game Files/M2Emulator.cpp @@ -17,16 +17,100 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>. #include "math.h" #include "SDL.h" -static wchar_t* settingsFilename = TEXT(".\\FFBPlugin.ini"); +//Config Settings +extern wchar_t* settingsFilename; +extern int DeviceGUID; +extern int configFeedbackLength; +extern int configGameId; +extern int configMinForce; +extern int configMaxForce; +extern int PowerMode; +extern int EnableRumble; +extern int ReverseRumble; +extern int configFeedbackLength; +extern int configAlternativeMinForceLeft; +extern int configAlternativeMaxForceLeft; +extern int configAlternativeMinForceRight; +extern int configAlternativeMaxForceRight; +extern int EnableForceSpringEffect; +extern int ForceSpringStrength; + static int DaytonaAIMultiplayerHack = GetPrivateProfileInt(TEXT("Settings"), TEXT("DaytonaAIMultiplayerHack"), 0, settingsFilename); static int DaytonaForcePanoramicAttract = GetPrivateProfileInt(TEXT("Settings"), TEXT("DaytonaForcePanoramicAttract"), 0, settingsFilename); -static int EnableForceSpringEffect = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffect"), 0, settingsFilename); -static int ForceSpringStrength = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrength"), 0, settingsFilename); static int EnableOutputs = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableOutputs"), 0, settingsFilename); +static int configMinForceDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceDaytona"), 0, settingsFilename); +static int configMaxForceDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceDaytona"), 100, settingsFilename); +static int configAlternativeMinForceLeftDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftDaytona"), 0, settingsFilename); +static int configAlternativeMaxForceLeftDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftDaytona"), 100, settingsFilename); +static int configAlternativeMinForceRightDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightDaytona"), 0, settingsFilename); +static int configAlternativeMaxForceRightDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightDaytona"), 100, settingsFilename); +static int configFeedbackLengthDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthDaytona"), 120, settingsFilename); +static int PowerModeDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeDaytona"), 0, settingsFilename); +static int EnableForceSpringEffectDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectDaytona"), 0, settingsFilename); +static int ForceSpringStrengthDaytona = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthDaytona"), 0, settingsFilename); + +static int configMinForceSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSRally"), 0, settingsFilename); +static int configMaxForceSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSRally"), 100, settingsFilename); +static int configAlternativeMinForceLeftSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftSRally"), 0, settingsFilename); +static int configAlternativeMaxForceLeftSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftSRally"), 100, settingsFilename); +static int configAlternativeMinForceRightSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightSRally"), 0, settingsFilename); +static int configAlternativeMaxForceRightSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightSRally"), 100, settingsFilename); +static int configFeedbackLengthSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSRally"), 120, settingsFilename); +static int PowerModeSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSRally"), 0, settingsFilename); +static int EnableForceSpringEffectSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSRally"), 0, settingsFilename); +static int ForceSpringStrengthSRally = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSRally"), 0, settingsFilename); + +static int configMinForceIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceIndy500"), 0, settingsFilename); +static int configMaxForceIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceIndy500"), 100, settingsFilename); +static int configAlternativeMinForceLeftIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftIndy500"), 0, settingsFilename); +static int configAlternativeMaxForceLeftIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftIndy500"), 100, settingsFilename); +static int configAlternativeMinForceRightIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightIndy500"), 0, settingsFilename); +static int configAlternativeMaxForceRightIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightIndy500"), 100, settingsFilename); +static int configFeedbackLengthIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthIndy500"), 120, settingsFilename); +static int PowerModeIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeIndy500"), 0, settingsFilename); +static int EnableForceSpringEffectIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectIndy500"), 0, settingsFilename); +static int ForceSpringStrengthIndy500 = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthIndy500"), 0, settingsFilename); + +static int configMinForceSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSTCC"), 0, settingsFilename); +static int configMaxForceSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSTCC"), 100, settingsFilename); +static int configAlternativeMinForceLeftSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftSTCC"), 0, settingsFilename); +static int configAlternativeMaxForceLeftSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftSTCC"), 100, settingsFilename); +static int configAlternativeMinForceRightSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightSTCC"), 0, settingsFilename); +static int configAlternativeMaxForceRightSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightSTCC"), 100, settingsFilename); +static int configFeedbackLengthSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSTCC"), 120, settingsFilename); +static int PowerModeSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSTCC"), 0, settingsFilename); +static int EnableForceSpringEffectSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSTCC"), 0, settingsFilename); +static int ForceSpringStrengthSTCC = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSTCC"), 0, settingsFilename); + +static int configMinForceOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceOverRev"), 0, settingsFilename); +static int configMaxForceOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceOverRev"), 100, settingsFilename); +static int configAlternativeMinForceLeftOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftOverRev"), 0, settingsFilename); +static int configAlternativeMaxForceLeftOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftOverRev"), 100, settingsFilename); +static int configAlternativeMinForceRightOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightOverRev"), 0, settingsFilename); +static int configAlternativeMaxForceRightOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightOverRev"), 100, settingsFilename); +static int configFeedbackLengthOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthOverRev"), 120, settingsFilename); +static int PowerModeOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeOverRev"), 0, settingsFilename); +static int EnableForceSpringEffectOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectOverRev"), 0, settingsFilename); +static int ForceSpringStrengthOverRev = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthOverRev"), 0, settingsFilename); + +static int configMinForceSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSuperGT"), 0, settingsFilename); +static int configMaxForceSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSuperGT"), 100, settingsFilename); +static int configAlternativeMinForceLeftSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftSuperGT"), 0, settingsFilename); +static int configAlternativeMaxForceLeftSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftSuperGT"), 100, settingsFilename); +static int configAlternativeMinForceRightSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightSuperGT"), 0, settingsFilename); +static int configAlternativeMaxForceRightSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightSuperGT"), 100, settingsFilename); +static int configFeedbackLengthSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSuperGT"), 120, settingsFilename); +static int PowerModeSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSuperGT"), 0, settingsFilename); +static int EnableForceSpringEffectSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSuperGT"), 0, settingsFilename); +static int ForceSpringStrengthSuperGT = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSuperGT"), 0, settingsFilename); + static bool init = false; +static bool CustomStrengthInit = false; static bool outputinit = false; +static UINT8 ff; + static bool __stdcall ExitHook(UINT uExitCode) { ExitProcess(0); @@ -58,7 +142,6 @@ static DWORD jmpBackAddy; void M2Emulator::FFBLoop(EffectConstants * constants, Helpers * helpers, EffectTriggers * triggers) { - HWND hWnd1 = FindWindowA(0, ("Sega Rally Championship")); HWND hWnd2 = FindWindowA(0, ("Daytona USA")); HWND hWnd3 = FindWindowA(0, ("Indianapolis 500 (Rev A, Deluxe)")); @@ -90,8 +173,8 @@ void M2Emulator::FFBLoop(EffectConstants * constants, Helpers * helpers, EffectT if (EnableOutputs == 1) { HMODULE lib = LoadLibraryA("OutputBlaster.dll"); - } - outputinit = true; + outputinit = true; + } } HMODULE hMod = GetModuleHandleA("KERNEL32.dll"); @@ -110,32 +193,120 @@ void M2Emulator::FFBLoop(EffectConstants * constants, Helpers * helpers, EffectT } } - if (hWnd1 > NULL) + if ((hWnd2 > NULL) || (hWnd3 > NULL) || (hWnd4 > NULL) || (hWnd5 > NULL) || (hWnd6 > NULL) || (hWnd7 > NULL) || (hWnd8 > NULL) || (hWnd9 > NULL) || (hWnd10 > NULL) || (hWnd11 > NULL) || (hWnd12 > NULL) || (hWnd13 > NULL) ||(hWnd16 > NULL) || (hWnd17 > NULL) || (hWnd18 > NULL) || (hWnd19 > NULL) || (hWnd20 > NULL)) { - UINT8 ff = helpers->ReadByte(0x174CF4, /* isRelativeOffset*/ true); //SegaRallyChampionship std::string ffs = std::to_string(ff); helpers->log((char*)ffs.c_str()); helpers->log("got value: "); - if ((ff > 0xBF)& (ff < 0xDF)) + if ((ff > 0x09) && (ff < 0x18)) { - helpers->log("moving wheel left"); - double percentForce = (ff - 191) / 31.0; + //Spring + double percentForce = (ff - 15) / 8.0; + double percentLength = 100; + triggers->Spring(percentForce); + } + + if ((ff > 0x1F) && (ff < 0x28)) + { + //Clutch + double percentForce = (ff - 31) / 8.0; + double percentLength = 100; + triggers->Friction(percentForce); + } + + if ((ff > 0x2F) && (ff < 0x3D)) + { + //Centering + double percentForce = (ff - 47) / 13.0; + double percentLength = 100; + triggers->Spring(percentForce); + } + + if ((ff > 0x3F) && (ff < 0x48)) + { + //Uncentering + double percentForce = (ff - 63) / 8.0; + double percentLength = 100; + triggers->Sine(70, 80, percentForce); + triggers->Rumble(percentForce, percentForce, percentLength); + } + + if ((ff > 0x4F) && (ff < 0x58)) + { + //Roll Left + double percentForce = (ff - 79) / 8.0; double percentLength = 100; triggers->Rumble(0, percentForce, percentLength); triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); } - else if ((ff > 0x7F)& (ff < 0x9F)) + else if ((ff > 0x5F) && (ff < 0x68)) { - helpers->log("moving wheel right"); - double percentForce = (ff - 127) / 31.0; + //Roll Right + double percentForce = (ff - 95) / 8.0; double percentLength = 100; triggers->Rumble(percentForce, 0, percentLength); triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); } - } - else if (hWnd2 > NULL) + } + + if ((hWnd1 > NULL) || (hWnd14 > NULL) || (hWnd15 > NULL)) { + if (!CustomStrengthInit) + { + CustomStrengthInit = true; + configMinForce = configMinForceSRally; + configMaxForce = configMaxForceSRally; + configAlternativeMinForceLeft = configAlternativeMinForceLeftSRally; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftSRally; + configAlternativeMinForceRight = configAlternativeMinForceRightSRally; + configAlternativeMaxForceRight = configAlternativeMaxForceRightSRally; + configFeedbackLength = configFeedbackLengthSRally; + PowerMode = PowerModeSRally; + EnableForceSpringEffect = EnableForceSpringEffectSRally; + ForceSpringStrength = ForceSpringStrengthSRally; + } + + UINT8 ff1 = helpers->ReadByte(0x174CF4, /* isRelativeOffset*/ true); //SegaRallyChampionship + std::string ffs = std::to_string(ff1); + helpers->log((char*)ffs.c_str()); + helpers->log("got value: "); + + if ((ff1 > 0xBF) && (ff1 < 0xDF)) + { + helpers->log("moving wheel left"); + double percentForce = (ff1 - 191) / 31.0; + double percentLength = 100; + triggers->Rumble(0, percentForce, percentLength); + triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); + } + else if ((ff1 > 0x7F) && (ff1 < 0x9F)) + { + helpers->log("moving wheel right"); + double percentForce = (ff1 - 127) / 31.0; + double percentLength = 100; + triggers->Rumble(percentForce, 0, percentLength); + triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); + } + } + + if ((hWnd2 > NULL) || (hWnd7 > NULL) || (hWnd8 > NULL) || (hWnd9 > NULL) || (hWnd10 > NULL) || (hWnd11 > NULL) || (hWnd12 > NULL) || (hWnd13 > NULL)) + { + if (!CustomStrengthInit) + { + CustomStrengthInit = true; + configMinForce = configMinForceDaytona; + configMaxForce = configMaxForceDaytona; + configAlternativeMinForceLeft = configAlternativeMinForceLeftDaytona; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftDaytona; + configAlternativeMinForceRight = configAlternativeMinForceRightDaytona; + configAlternativeMaxForceRight = configAlternativeMaxForceRightDaytona; + configFeedbackLength = configFeedbackLengthDaytona; + PowerMode = PowerModeDaytona; + EnableForceSpringEffect = EnableForceSpringEffectDaytona; + ForceSpringStrength = ForceSpringStrengthDaytona; + } + if (DaytonaForcePanoramicAttract == 1) { INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); @@ -713,4471 +884,86 @@ void M2Emulator::FFBLoop(EffectConstants * constants, Helpers * helpers, EffectT } } + ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //DaytonaUSA + } + if ((hWnd3 > NULL) || (hWnd16 > NULL) || (hWnd17 > NULL)) + { + if (!CustomStrengthInit) + { + CustomStrengthInit = true; + configMinForce = configMinForceIndy500; + configMaxForce = configMaxForceIndy500; + configAlternativeMinForceLeft = configAlternativeMinForceLeftIndy500; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftIndy500; + configAlternativeMinForceRight = configAlternativeMinForceRightIndy500; + configAlternativeMaxForceRight = configAlternativeMaxForceRightIndy500; + configFeedbackLength = configFeedbackLengthIndy500; + PowerMode = PowerModeIndy500; + EnableForceSpringEffect = EnableForceSpringEffectIndy500; + ForceSpringStrength = ForceSpringStrengthIndy500; + } - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //DaytonaUSA - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); + ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Indy500 + } - if ((ff > 0x09)& (ff < 0x18)) + if ((hWnd4 > NULL) || (hWnd18 > NULL) || (hWnd19 > NULL)) + { + if (!CustomStrengthInit) { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); + CustomStrengthInit = true; + configMinForce = configMinForceSTCC; + configMaxForce = configMaxForceSTCC; + configAlternativeMinForceLeft = configAlternativeMinForceLeftSTCC; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftSTCC; + configAlternativeMinForceRight = configAlternativeMinForceRightSTCC; + configAlternativeMaxForceRight = configAlternativeMaxForceRightSTCC; + configFeedbackLength = configFeedbackLengthSTCC; + PowerMode = PowerModeSTCC; + EnableForceSpringEffect = EnableForceSpringEffectSTCC; + ForceSpringStrength = ForceSpringStrengthSTCC; } + + ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Sega Touring Car Championship } - else if (hWnd3 > NULL) - { - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Indy500 - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - if ((ff > 0x09)& (ff < 0x18)) + if ((hWnd5 > NULL) || (hWnd20 > NULL)) + { + if (!CustomStrengthInit) { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); + CustomStrengthInit = true; + configMinForce = configMinForceOverRev; + configMaxForce = configMaxForceOverRev; + configAlternativeMinForceLeft = configAlternativeMinForceLeftOverRev; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftOverRev; + configAlternativeMinForceRight = configAlternativeMinForceRightOverRev; + configAlternativeMaxForceRight = configAlternativeMaxForceRightOverRev; + configFeedbackLength = configFeedbackLengthOverRev; + PowerMode = PowerModeOverRev; + EnableForceSpringEffect = EnableForceSpringEffectOverRev; + ForceSpringStrength = ForceSpringStrengthOverRev; } - else if ((ff > 0x1F)& (ff < 0x28)) + + ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //OverRev + } + + if (hWnd6 > NULL) + { + if (!CustomStrengthInit) { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); + CustomStrengthInit = true; + configMinForce = configMinForceSuperGT; + configMaxForce = configMaxForceSuperGT; + configAlternativeMinForceLeft = configAlternativeMinForceLeftSuperGT; + configAlternativeMaxForceLeft = configAlternativeMaxForceLeftSuperGT; + configAlternativeMinForceRight = configAlternativeMinForceRightSuperGT; + configAlternativeMaxForceRight = configAlternativeMaxForceRightSuperGT; + configFeedbackLength = configFeedbackLengthSuperGT; + PowerMode = PowerModeSuperGT; + EnableForceSpringEffect = EnableForceSpringEffectSuperGT; + ForceSpringStrength = ForceSpringStrengthSuperGT; } + + ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Super GT 24h } - else if (hWnd4 > NULL) - { - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Sega Touring Car Championship - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } - } - else if (hWnd5 > NULL) - { - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //OverRev - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } - } - else if (hWnd6 > NULL) - { - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Super GT 24h - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } - } - else if (hWnd7 > NULL) - { - - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA '93 Edition - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } - } - else if (hWnd8 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA (Saturn Ads) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} - - else if (hWnd9 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA Special Edition - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} - else if (hWnd10 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA Turbo - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} - else if (hWnd11 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA Turbo (Rev A) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} - else if (hWnd12 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA: GTX 2004 - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} - - else if (hWnd13 > NULL) - { - if (DaytonaForcePanoramicAttract == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1070, 0x00, /* isRelativeOffset*/ false); - } - - if (DaytonaAIMultiplayerHack == 1) - { - INT_PTR Rambase = helpers->ReadIntPtr(0x1AA888, /* isRelativeOffset*/ true); - INT_PTR Rambase1 = helpers->ReadIntPtr(Rambase + 0x100, /* isRelativeOffset */ false); - UINT8 gamestate = helpers->ReadByte(Rambase1 + 0x10A4, /* isRelativeOffset*/ false); - UINT8 track = helpers->ReadByte(Rambase1 + 0x1460, /* isRelativeOffset*/ false); - UINT8 trackselect = helpers->ReadByte(Rambase1 + 0x1468, /* isRelativeOffset*/ false); - UINT8 countdown = helpers->ReadByte(Rambase1 + 0x1850, /* isRelativeOffset*/ false); - UINT8 linksize = helpers->ReadByte(Rambase1 + 0x40001, /* isRelativeOffset*/ false); - UINT8 linkID = helpers->ReadByte(Rambase1 + 0x40002, /* isRelativeOffset*/ false); - INT_PTR gamestatetimer = helpers->ReadIntPtr(Rambase1 + 0x10A8, /* isRelativeOffset*/ false); - UINT8 camhack = helpers->ReadByte(Rambase1 + 0x14A4, /* isRelativeOffset*/ false); - UINT8 carsinfront = helpers->ReadByte(Rambase1 + 0x51EC, /* isRelativeOffset*/ false); - UINT8 mpposition = helpers->ReadByte(Rambase1 + 0x51ED, /* isRelativeOffset*/ false); - float cary = helpers->ReadFloat32(Rambase1 + 0x519C, /* isRelativeOffset */ false); - float carx = helpers->ReadFloat32(Rambase1 + 0x51A4, /* isRelativeOffset */ false); - UINT8 nop1 = helpers->ReadByte(0xC2130, /* isRelativeOffset*/ true); - UINT8 nop2 = helpers->ReadByte(0xC2131, /* isRelativeOffset*/ true); - UINT8 nop3 = helpers->ReadByte(0xC2132, /* isRelativeOffset*/ true); - - - if (gamestate == 0x1A) - { - helpers->WriteByte(Rambase1 + 0x51ED, carsinfront, /* isRelativeOffset*/ false); - } - - if (trackselect == 0x01) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x02, /* isRelativeOffset*/ false); - } - else if (trackselect == 0x02) - { - helpers->WriteByte(Rambase1 + 0x1460, 0x01, /* isRelativeOffset*/ false); - } - - if (linksize == 0x02) - { - if (linkID == 0x02) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 0.0, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x03) - { - if (linkID == 0x03) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - else if (linksize == 0x04) - { - if (linkID == 0x04) - { - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(250); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC302CAF4, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37C0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - if (linkID == 0x03) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C40, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(350); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37CF3D0, /* isRelativeOffset */ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - helpers->WriteFloat32(Rambase1 + 0x519C, 450.0, /* isRelativeOffset */ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x02) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540C80, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x01, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - Sleep(150); - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02 || track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - } - else if (linkID == 0x01) - { - if ((gamestate == 0x1A) & (gamestatetimer < 100)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - else if ((gamestate == 0x1A) & (gamestatetimer > 100)) - { - Sleep(100); - helpers->WriteNop(0xC2130, true); - helpers->WriteNop(0xC2131, true); - helpers->WriteNop(0xC2132, true); - } - - if ((gamestate > 0x1A)& (gamestate < 0x1A)) - { - helpers->WriteByte(0xC2130, 0x88, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2131, 0x14, /* isRelativeOffset*/ true); - helpers->WriteByte(0xC2132, 0x01, /* isRelativeOffset*/ true); - } - - if (gamestate > 0x07) - { - helpers->WriteIntPtr(Rambase1 + 0x40004, 0x00540D00, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x40008, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteIntPtr(Rambase1 + 0x4000C, 0x00540CC0, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5484, 0x00, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5784, 0x02, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5A84, 0x03, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x5D84, 0x04, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6084, 0x05, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6384, 0x06, /* isRelativeOffset*/ false); - helpers->WriteByte(Rambase1 + 0x6684, 0x07, /* isRelativeOffset*/ false); - } - if ((gamestatetimer > 4294964133)& (gamestate == 0x12)) - { - helpers->WriteIntPtr(Rambase1 + 0x10A8, 0x3B6, /* isRelativeOffset*/ false); - } - if ((gamestate == 0x16) & (countdown == 0x00) & (track == 0x00)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - helpers->WriteByte(Rambase1 + 0x1850, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x01)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC2F195E8, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - else if ((gamestate == 0x14) & (trackselect == 0x00) & (track == 0x02)) - { - helpers->WriteByte(Rambase1 + 0x40000, 0x99, /* isRelativeOffset*/ false); // change to 99 - Sleep(50); - helpers->WriteByte(Rambase1 + 0x10A4, 0x13, /* isRelativeOffset*/ false); // restart race - Sleep(50); - helpers->WriteByte(Rambase1 + 0x40000, 0x01, /* isRelativeOffset*/ false); // change back to 1 - Sleep(50); - helpers->WriteIntPtr(Rambase1 + 0x51A4, 0xC37E0001, /* isRelativeOffset */ false); - helpers->WriteByte(Rambase1 + 0x1468, 0x01, /* isRelativeOffset*/ false); - } - } - } - } - - UINT8 ff = helpers->ReadByte(0x0057285B, /* isRelativeOffset*/ false); //Daytona USA: To The Maxx - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 15) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x3D)) - { - //Centering - double percentForce = (ff - 47) / 13.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -if (hWnd14 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x174CF4, /* isRelativeOffset*/ true); //Sega Rally Championship (Rev B) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0xBF)& (ff < 0xDF)) - { - helpers->log("moving wheel left"); - double percentForce = (ff - 191) / 31.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x7F)& (ff < 0x9F)) - { - helpers->log("moving wheel right"); - double percentForce = (ff - 127) / 31.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -if (hWnd15 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x174CF4, /* isRelativeOffset*/ true); //Sega Rally Pro Drivin' - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0xBF)& (ff < 0xDF)) - { - helpers->log("moving wheel left"); - double percentForce = (ff - 191) / 31.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x7F)& (ff < 0x9F)) - { - helpers->log("moving wheel right"); - double percentForce = (ff - 127) / 31.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -else if (hWnd16 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Indianapolis 500 (Rev A, Twin, Newer rev) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -else if (hWnd17 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Indianapolis 500 (Rev A, Twin, Older rev) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -else if (hWnd18 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Sega Touring Car Championship - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -else if (hWnd19 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Sega Touring Car Championship (Rev B) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} -else if (hWnd20 > NULL) -{ - UINT8 ff = helpers->ReadByte(0x17285B, /* isRelativeOffset*/ true); //Over Rev (Model 2B) - std::string ffs = std::to_string(ff); - helpers->log((char*)ffs.c_str()); - helpers->log("got value: "); - - if ((ff > 0x09)& (ff < 0x18)) - { - //Spring - double percentForce = (ff - 10) / 14.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x1F)& (ff < 0x28)) - { - //Clutch - double percentForce = (ff - 31) / 8.0; - double percentLength = 100; - triggers->Friction(percentForce); - } - else if ((ff > 0x2F)& (ff < 0x38)) - { - //Centering - double percentForce = (ff - 47) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x37)& (ff < 0x40)) - { - //Centeringtestmenu - double percentForce = (ff - 55) / 8.0; - double percentLength = 100; - triggers->Spring(percentForce); - } - else if ((ff > 0x3F)& (ff < 0x48)) - { - //Uncentering - double percentForce = (ff - 63) / 8.0; - double percentLength = 100; - triggers->Sine(70, 80, percentForce); - } - else if ((ff > 0x4F)& (ff < 0x58)) - { - //Roll Left - double percentForce = (ff - 79) / 8.0; - double percentLength = 100; - triggers->Rumble(0, percentForce, percentLength); - triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce); - } - else if ((ff > 0x5F)& (ff < 0x68)) - { - //Roll Right - double percentForce = (ff - 95) / 8.0; - double percentLength = 100; - triggers->Rumble(percentForce, 0, percentLength); - triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce); - } -} } \ No newline at end of file