Merge pull request #65 from Boomslangnz/master
Daytona 3 and Xinput Changes
This commit is contained in:
commit
6e962e60c8
@ -15,6 +15,10 @@ bool daytonaPressStart = false;
|
||||
uintptr_t imageBase;
|
||||
bool shiftup = false;
|
||||
bool shiftdown = false;
|
||||
static bool viewchange = false;
|
||||
static bool keybdleft = false;
|
||||
static bool keybdright = false;
|
||||
static bool keybdup = false;
|
||||
|
||||
void ShiftUp(BYTE shift)
|
||||
{
|
||||
@ -37,10 +41,71 @@ static void InjectKeys()
|
||||
|
||||
BYTE gamestate = *(BYTE*)(imageBase + 0x15B5744);
|
||||
BYTE gear = *(BYTE*)(imageBase + 0x15B468C);
|
||||
BYTE viewread = *(BYTE*)(imageBase + 0x15B5DB0);
|
||||
|
||||
*(BYTE*)(imageBase + 0x15B4679) = gas;
|
||||
*(BYTE*)(imageBase + 0x15B467A) = brake;
|
||||
|
||||
HWND hWnd = FindWindowA(0, ("Daytona Championship USA"));
|
||||
|
||||
//Menu Movement & Game Initial Screen
|
||||
if (gamestate == 18 || gamestate == 30)
|
||||
{
|
||||
if ((wheel <= 0x75) && (wheel > 0x50))
|
||||
{
|
||||
//Menu Left
|
||||
if (!keybdleft)
|
||||
{
|
||||
keybdleft = true;
|
||||
SendMessage(hWnd, WM_KEYDOWN, VK_LEFT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessage(hWnd, WM_KEYUP, VK_LEFT, 0);
|
||||
}
|
||||
}
|
||||
else if (wheel <= 0x50)
|
||||
{
|
||||
SendMessage(hWnd, WM_KEYDOWN, VK_LEFT, 0);
|
||||
}
|
||||
else if ((wheel >= 0x89) && (wheel < 0xAE))
|
||||
{
|
||||
//Menu Right
|
||||
if (!keybdright)
|
||||
{
|
||||
keybdright = true;
|
||||
SendMessage(hWnd, WM_KEYDOWN, VK_RIGHT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessage(hWnd, WM_KEYUP, VK_RIGHT, 0);
|
||||
}
|
||||
}
|
||||
else if (wheel >= 0xAE)
|
||||
{
|
||||
SendMessage(hWnd, WM_KEYDOWN, VK_RIGHT, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
keybdleft = false;
|
||||
keybdright = false;
|
||||
SendMessage(hWnd, WM_KEYUP, VK_RIGHT, 0);
|
||||
SendMessage(hWnd, WM_KEYUP, VK_LEFT, 0);
|
||||
}
|
||||
keybdup = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!keybdup)
|
||||
{
|
||||
keybdup = true;
|
||||
keybdleft = false;
|
||||
keybdright = false;
|
||||
SendMessage(hWnd, WM_KEYUP, VK_RIGHT, 0);
|
||||
SendMessage(hWnd, WM_KEYUP, VK_LEFT, 0);
|
||||
}
|
||||
}
|
||||
|
||||
DWORD track = *(DWORD*)(imageBase + 0x011B0148);
|
||||
if (track != 0)
|
||||
{
|
||||
@ -84,46 +149,6 @@ static void InjectKeys()
|
||||
daytonaPressStart = false;
|
||||
}
|
||||
|
||||
if (wheel <= 0x40)
|
||||
{
|
||||
//Menu Left
|
||||
DWORD p = *(DWORD *)(imageBase + 0x1AAFFF0);
|
||||
if (p != 0)
|
||||
{
|
||||
DWORD p1 = *(DWORD *)(p + 0x00);
|
||||
if (p1 != 0)
|
||||
{
|
||||
*(BYTE *)(p1 + 0x25) = 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (wheel >= 0xC0)
|
||||
{
|
||||
//Menu Right
|
||||
DWORD p = *(DWORD *)(imageBase + 0x1AAFFF0);
|
||||
if (p != 0)
|
||||
{
|
||||
DWORD p1 = *(DWORD *)(p + 0x00);
|
||||
if (p1 != 0)
|
||||
{
|
||||
*(BYTE *)(p1 + 0x27) = 0xFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD p = *(DWORD *)(imageBase + 0x1AAFFF0);
|
||||
if (p != 0)
|
||||
{
|
||||
DWORD p1 = *(DWORD *)(p + 0x00);
|
||||
if (p1 != 0)
|
||||
{
|
||||
*(BYTE *)(p1 + 0x25) = 0x00;
|
||||
*(BYTE *)(p1 + 0x27) = 0x00;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (buttons == 0x01)
|
||||
{
|
||||
//Inject Start
|
||||
@ -200,45 +225,56 @@ static void InjectKeys()
|
||||
*(BYTE*)(imageBase + 0x15B468C) = 0x03;
|
||||
}
|
||||
|
||||
if (ToBool(config["General"]["View Change 1 To Cycle All Views"]))
|
||||
{
|
||||
if ((buttons2 == 0x10) && (viewread < 4)) //INCLUDES SPECIAL VIEW
|
||||
{
|
||||
//View Change 1
|
||||
if (!viewchange)
|
||||
{
|
||||
viewchange = true;
|
||||
*(BYTE*)(imageBase + 0x15B5DB0) = ++viewread;
|
||||
}
|
||||
}
|
||||
else if ((buttons2 == 0x10) && (viewread == 4))
|
||||
{
|
||||
if (!viewchange)
|
||||
{
|
||||
viewchange = true;
|
||||
*(BYTE*)(imageBase + 0x15B5DB0) = 0x00;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
viewchange = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (buttons2 == 0x10)
|
||||
{
|
||||
//View Change 1
|
||||
{
|
||||
*(DWORD*)(imageBase + 0x15B5DB0) = 0x00;
|
||||
}
|
||||
}
|
||||
|
||||
if (buttons2 == 0x20)
|
||||
{
|
||||
//View Change 2
|
||||
{
|
||||
*(DWORD*)(imageBase + 0x15B5DB0) = 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
if (buttons2 == 0x40)
|
||||
{
|
||||
//View Change 3
|
||||
{
|
||||
*(DWORD*)(imageBase + 0x15B5DB0) = 0x02;
|
||||
}
|
||||
}
|
||||
|
||||
if (buttons2 == 0x80)
|
||||
{
|
||||
//View Change 4
|
||||
{
|
||||
*(DWORD*)(imageBase + 0x15B5DB0) = 0x03;
|
||||
}
|
||||
}
|
||||
|
||||
if (buttons2 == 0xF0)
|
||||
{
|
||||
//View Change 5
|
||||
{
|
||||
*(DWORD *)(imageBase + 0x15B5DB0) = 0x04;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int(__stdcall* g_origControlsFunction)();
|
||||
|
@ -162,7 +162,18 @@ DWORD WINAPI XInputGetState
|
||||
if (GameDetect::currentGame == GameID::Daytona3)
|
||||
{
|
||||
gamepadState.bRightTrigger = daytonaPressStart ? 0xFF : 0x00;
|
||||
gamepadState.sThumbLX |= (-(33024 - *ffbOffset2) * 255);
|
||||
if (*ffbOffset2 < 1)
|
||||
{
|
||||
gamepadState.sThumbLX |= 257 - (-(32767 - *ffbOffset2) * 257);
|
||||
}
|
||||
else if ((*ffbOffset2 >= 121) && (*ffbOffset2 <= 133)) //Deadzone for FFB
|
||||
{
|
||||
gamepadState.sThumbLX == 32768;
|
||||
}
|
||||
else
|
||||
{
|
||||
gamepadState.sThumbLX |= (-(32768 - *ffbOffset2) * 257);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (pState->dwPacketNumber == UINT_MAX)
|
||||
|
Loading…
x
Reference in New Issue
Block a user