Few BG4 Pro Input Changes
This commit is contained in:
parent
89d136f3c1
commit
ca041f1c14
@ -4,52 +4,41 @@
|
|||||||
#include "Functions/Global.h"
|
#include "Functions/Global.h"
|
||||||
#include "Utility/Helper.h"
|
#include "Utility/Helper.h"
|
||||||
|
|
||||||
static bool CoinPressed = false;
|
static bool CoinPressed;
|
||||||
static bool TestPressed = false;
|
static bool TestPressed;
|
||||||
static bool ServicePressed = false;
|
static bool ServicePressed;
|
||||||
static bool TimeStartPressed = false;
|
static bool TimeStartPressed;
|
||||||
static bool StartPressed = false;
|
static bool StartPressed;
|
||||||
static bool ViewPressed = false;
|
static bool ViewPressed;
|
||||||
static bool HazardPressed = false;
|
static bool HazardPressed;
|
||||||
static bool OverTakePressed = false;
|
static bool OverTakePressed;
|
||||||
static bool ShiftLeftPressed = false;
|
static bool ShiftLeftPressed;
|
||||||
static bool ShiftRightPressed = false;
|
static bool ShiftRightPressed;
|
||||||
static bool SideBrakePressed = false;
|
static bool SideBrakePressed;
|
||||||
static bool SeatSwitch1Pressed = false;
|
static bool SeatSwitch1Pressed;
|
||||||
static bool SeatSwitch2Pressed = false;
|
static bool SeatSwitch2Pressed;
|
||||||
static bool Gear1Pressed = false;
|
static bool Gear1Pressed;
|
||||||
static bool Gear2Pressed = false;
|
static bool Gear2Pressed;
|
||||||
static bool Gear3Pressed = false;
|
static bool Gear3Pressed;
|
||||||
static bool Gear4Pressed = false;
|
static bool Gear4Pressed;
|
||||||
static bool Gear5Pressed = false;
|
static bool Gear5Pressed;
|
||||||
static bool Gear6Pressed = false;
|
static bool Gear6Pressed;
|
||||||
static bool KeyPressed = false;
|
static bool KeyPressed;
|
||||||
static bool init = false;
|
static bool init;
|
||||||
static bool MenuHack = false;
|
static bool MenuHack;
|
||||||
static bool MenuHackDelay = false;
|
static bool MenuHackDelay;
|
||||||
static bool TestMode = false;
|
static bool TestMode;
|
||||||
|
|
||||||
|
static DWORD imageBase;
|
||||||
|
|
||||||
extern int* wheelSection;
|
extern int* wheelSection;
|
||||||
extern int* ffbOffset;
|
extern int* ffbOffset;
|
||||||
extern int* ffbOffset3;
|
extern int* ffbOffset3;
|
||||||
extern int* ffbOffset4;
|
extern int* ffbOffset4;
|
||||||
extern int* ffbOffset5;
|
extern int* ffbOffset5;
|
||||||
static Helpers* myHelpers;
|
|
||||||
|
|
||||||
static DWORD WINAPI ChangeValues(LPVOID lpParam)
|
void BG4ManualHack(Helpers* helpers) //Hack to allow us to select Manual
|
||||||
{
|
{
|
||||||
Sleep(10000);
|
|
||||||
|
|
||||||
DWORD imageBase = (DWORD)GetModuleHandleA(0);
|
|
||||||
myHelpers->WriteByte(0x42E296, 0x01, true);
|
|
||||||
myHelpers->WriteByte(0x42E295, 0x80, true);
|
|
||||||
injector::MakeNOP(imageBase + 0x27400, 6);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BG4ManualHack(Helpers* helpers)
|
|
||||||
{
|
|
||||||
//Hack to allow us to select Manual
|
|
||||||
INT_PTR MenuTimerBase = helpers->ReadIntPtr(0x4C2924, true);
|
INT_PTR MenuTimerBase = helpers->ReadIntPtr(0x4C2924, true);
|
||||||
INT_PTR MenuTimerBaseA = helpers->ReadIntPtr(MenuTimerBase + 0x08, false);
|
INT_PTR MenuTimerBaseA = helpers->ReadIntPtr(MenuTimerBase + 0x08, false);
|
||||||
INT_PTR MenuTime = helpers->ReadIntPtr(MenuTimerBaseA + 0x45C, false);
|
INT_PTR MenuTime = helpers->ReadIntPtr(MenuTimerBaseA + 0x45C, false);
|
||||||
@ -82,21 +71,18 @@ void BG4ManualHack(Helpers* helpers)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BG4ProInputs(Helpers* helpers)
|
static void BG4ProManualHack(Helpers* helpers) //Hack to allow us to select Manual and Manual with Clutch
|
||||||
{
|
{
|
||||||
if (!init)
|
|
||||||
{
|
|
||||||
init = true;
|
|
||||||
myHelpers = helpers;
|
|
||||||
CreateThread(NULL, 0, ChangeValues, NULL, 0, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Hack to allow us to select Manual and Manual with Clutch
|
|
||||||
INT_PTR MenuTimerBase = helpers->ReadIntPtr(0x4C2924, true);
|
INT_PTR MenuTimerBase = helpers->ReadIntPtr(0x4C2924, true);
|
||||||
INT_PTR MenuTimerBaseA = helpers->ReadIntPtr(MenuTimerBase + 0x08, false);
|
INT_PTR MenuTimerBaseA = helpers->ReadIntPtr(MenuTimerBase + 0x08, false);
|
||||||
INT_PTR MenuTime = helpers->ReadIntPtr(MenuTimerBaseA + 0x45C, false);
|
INT_PTR MenuTime = helpers->ReadIntPtr(MenuTimerBaseA + 0x45C, false);
|
||||||
|
|
||||||
if (MenuTime == 0x1194)
|
INT_PTR VehicleSelectionBase = helpers->ReadIntPtr(0x42D4A0, true);
|
||||||
|
INT_PTR VehicleSelectionOff1 = helpers->ReadIntPtr(VehicleSelectionBase + 0x78, false);
|
||||||
|
INT_PTR VehicleSelectionOff2 = helpers->ReadIntPtr(VehicleSelectionOff1 + 0x190, false);
|
||||||
|
UINT8 VehicleSelection = helpers->ReadByte(VehicleSelectionOff2 + 0x20, false);
|
||||||
|
|
||||||
|
if (VehicleSelection)
|
||||||
{
|
{
|
||||||
if (!MenuHack)
|
if (!MenuHack)
|
||||||
{
|
{
|
||||||
@ -109,32 +95,45 @@ void BG4ProInputs(Helpers* helpers)
|
|||||||
if (MenuHack)
|
if (MenuHack)
|
||||||
{
|
{
|
||||||
MenuHack = false;
|
MenuHack = false;
|
||||||
MenuHackDelay = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MenuHack)
|
if (MenuHack)
|
||||||
{
|
{
|
||||||
if (!MenuHackDelay)
|
|
||||||
{
|
|
||||||
MenuHackDelay = true;
|
|
||||||
Sleep(2500);
|
|
||||||
}
|
|
||||||
helpers->WriteByte(MenuTimerBaseA + 0x454, 0x04, false);
|
helpers->WriteByte(MenuTimerBaseA + 0x454, 0x04, false);
|
||||||
BYTE This = helpers->ReadByte(MenuTimerBaseA + 0x44C, false);
|
BYTE This = helpers->ReadByte(MenuTimerBaseA + 0x44C, false);
|
||||||
|
|
||||||
if (This == 0x02)
|
switch (This)
|
||||||
{
|
{
|
||||||
helpers->WriteByte(0x42E341, 0xD0, true); //Set Shift SEN 2 to ON or error
|
case 0x02:
|
||||||
|
helpers->WriteByte(0x42E341, 0xD0, true); //Set Shift SEN 2 to ON or error
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
helpers->WriteByte(0x42E341, 0xE0, true); //Set Shift SEN 1 to ON or error
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if (This == 0x03)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BG4ProInputs(Helpers* helpers)
|
||||||
|
{
|
||||||
|
if (!init)
|
||||||
|
{
|
||||||
|
imageBase = (DWORD)GetModuleHandleA(0);
|
||||||
|
UINT8 WaitForAttract = helpers->ReadByte(0x42D964, true);
|
||||||
|
|
||||||
|
if (WaitForAttract)
|
||||||
{
|
{
|
||||||
helpers->WriteByte(0x42E341, 0xE0, true); //Set Shift SEN 1 to ON or error
|
helpers->WriteByte(0x42E296, 0x01, true);
|
||||||
|
helpers->WriteByte(0x42E295, 0x80, true);
|
||||||
|
injector::MakeNOP(imageBase + 0x27400, 6);
|
||||||
|
init = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD imageBase = (DWORD)GetModuleHandleA(0);
|
BG4ProManualHack(0);
|
||||||
UINT8 KeyInput = helpers->ReadByte(imageBase + 0x42E296, false);
|
|
||||||
|
UINT8 KeyInput = helpers->ReadByte(0x42E296, true);
|
||||||
|
|
||||||
if (*ffbOffset & 0x01) //Test
|
if (*ffbOffset & 0x01) //Test
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user