1
0
mirror of synced 2025-02-01 04:15:50 +01:00

Merge pull request #65 from Boomslangnz/master

Daytona 3 and Xinput Changes
This commit is contained in:
Reaver 2019-11-15 02:12:37 +02:00 committed by GitHub
commit 6e962e60c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 201 additions and 154 deletions

View File

@ -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)();

View File

@ -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)