1
0
mirror of synced 2025-02-22 04:49:40 +01:00

Modify Daytona 3

was causing lagging for Safire25 otherwise
This commit is contained in:
Aaron M 2019-11-02 14:11:34 +13:00
parent a8833892e9
commit 20f1997588

View File

@ -18,6 +18,7 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>.
static bool keybdleft = false;
static bool keybdright = false;
static bool keybdup = false;
static bool init = false;
static EffectTriggers *myTriggers;
static EffectConstants *myConstants;
static Helpers *myHelpers;
@ -37,12 +38,72 @@ static int HideCursor = GetPrivateProfileInt(TEXT("Settings"), TEXT("HideCursor"
static int RunningThread(void *ptr)
{
int cnt;
for (cnt = 0; cnt >= 0; ++cnt)
while (SDL_WaitEvent(&e) != 0)
{
UINT8 steering = myHelpers->ReadByte(0x019B4678, false);
UINT8 gamestate = myHelpers->ReadByte(0x19B5744, false);
UINT8 ff = myHelpers->ReadByte(0x15AFC46, false);
UINT8 gear = myHelpers->ReadByte(0x019B468C, /* isRelativeOffset */ false);
if (ShowButtonNumbersForSetup == 1)
{
if (e.type == SDL_JOYBUTTONDOWN)
{
if (e.jbutton.button >= 0)
{
char buff[100];
sprintf_s(buff, "Button %d Pressed", e.jbutton.button);
MessageBoxA(NULL, buff, "", NULL);
}
}
}
if (e.type == SDL_JOYBUTTONDOWN)
{
if (ChangeGearsViaPlugin == 1)
{
if (e.jbutton.button == Gear1)
{
myHelpers->WriteByte(0x019B468C, 0x00, false);
}
else if (e.jbutton.button == Gear2)
{
myHelpers->WriteByte(0x019B468C, 0x02, false);
}
else if (e.jbutton.button == Gear3)
{
myHelpers->WriteByte(0x019B468C, 0x01, false);
}
else if (e.jbutton.button == Gear4)
{
myHelpers->WriteByte(0x019B468C, 0x03, false);
}
else if ((e.jbutton.button == GearDown) && (gear > 0x00))
{
myHelpers->WriteByte(0x019B468C, --gear, false);
}
else if ((e.jbutton.button == GearUp) && (gear < 0x03))
{
myHelpers->WriteByte(0x019B468C, ++gear, false);
}
}
}
}
return 0;
}
void Daytona3::FFBLoop(EffectConstants *constants, Helpers *helpers, EffectTriggers* triggers) {
if (!init)
{
myTriggers = triggers;
myConstants = constants;
myHelpers = helpers;
SDL_Thread* thread;
thread = SDL_CreateThread(RunningThread, "RunningThread", (void*)NULL);
init = true;
}
UINT8 steering = helpers->ReadByte(0x019B4678, false);
UINT8 gamestate = helpers->ReadByte(0x19B5744, false);
UINT8 ff = helpers->ReadByte(0x15AFC46, false);
HWND hWnd = FindWindowA(0, ("Daytona Championship USA"));
if (HideCursor == 1)
@ -125,76 +186,17 @@ static int RunningThread(void *ptr)
{
double percentForce = (31 - ff) / 15.0;
double percentLength = 100;
myTriggers->Rumble(percentForce, 0, percentLength);
myTriggers->Constant(myConstants->DIRECTION_FROM_LEFT, percentForce);
triggers->Rumble(percentForce, 0, percentLength);
triggers->Constant(myConstants->DIRECTION_FROM_LEFT, percentForce);
}
else if (ff > 0)
{
double percentForce = (16 - ff) / 15.0;
double percentLength = 100;
myTriggers->Rumble(0, percentForce, percentLength);
myTriggers->Constant(myConstants->DIRECTION_FROM_RIGHT, percentForce);
triggers->Rumble(0, percentForce, percentLength);
triggers->Constant(myConstants->DIRECTION_FROM_RIGHT, percentForce);
}
}
return 0;
}
void Daytona3::FFBLoop(EffectConstants *constants, Helpers *helpers, EffectTriggers* triggers) {
SDL_Thread *thread;
thread = SDL_CreateThread(RunningThread, "RunningThread", (void *)NULL);
UINT8 gear = helpers->ReadByte(0x019B468C, /* isRelativeOffset */ false);
int ff = helpers->ReadInt32(0x15AFC46, /* isRelativeOffset */ false);
helpers->log("got value: ");
std::string ffs = std::to_string(ff);
helpers->log((char *)ffs.c_str());
while (SDL_WaitEvent(&e) != 0)
{
myTriggers = triggers;
myConstants = constants;
myHelpers = helpers;
if (ShowButtonNumbersForSetup == 1)
{
if (e.type == SDL_JOYBUTTONDOWN)
{
if (e.jbutton.button >= 0)
{
char buff[100];
sprintf_s(buff, "Button %d Pressed", e.jbutton.button);
MessageBoxA(NULL, buff, "", NULL);
}
}
}
if (e.type == SDL_JOYBUTTONDOWN)
{
if (ChangeGearsViaPlugin == 1)
{
if (e.jbutton.button == Gear1)
{
helpers->WriteByte(0x019B468C, 0x00, false);
}
else if (e.jbutton.button == Gear2)
{
helpers->WriteByte(0x019B468C, 0x02, false);
}
else if (e.jbutton.button == Gear3)
{
helpers->WriteByte(0x019B468C, 0x01, false);
}
else if (e.jbutton.button == Gear4)
{
helpers->WriteByte(0x019B468C, 0x03, false);
}
else if ((e.jbutton.button == GearDown) && (gear > 0x00))
{
helpers->WriteByte(0x019B468C, --gear, false);
}
else if ((e.jbutton.button == GearUp) && (gear < 0x03))
{
helpers->WriteByte(0x019B468C, ++gear, false);
}
}
}
}
}