1
0
mirror of synced 2024-11-23 22:40:57 +01:00

Merge pull request #2 from Boomslangnz/master

Merge with master.
This commit is contained in:
adamgp 2020-06-24 13:55:48 +01:00 committed by GitHub
commit 1bbb3f91a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 1110 additions and 108 deletions

View File

@ -67,6 +67,10 @@ PersistentAlternativeMaxForceRight=-1
GameId=1
MinForce=0
MaxForce=90
AlternativeMinForceLeft=0
AlternativeMaxForceLeft=-90
AlternativeMinForceRight=0
AlternativeMaxForceRight=90
FeedbackLength=500
ShowButtonNumbersForSetup=0
ChangeGearsViaPlugin=0
@ -84,12 +88,20 @@ HideCursor=0
GameId=2
MinForce=0
MaxForce=75
AlternativeMinForceLeft=0
AlternativeMaxForceLeft=-75
AlternativeMinForceRight=0
AlternativeMaxForceRight=75
DefaultCentering=15
[Chase HQ 2]
GameId=3
MinForce=0
MaxForce=75
AlternativeMinForceLeft=0
AlternativeMaxForceLeft=-75
AlternativeMinForceRight=0
AlternativeMaxForceRight=75
DefaultCentering=15
[GRID]
@ -235,14 +247,12 @@ PowerMode=0
[Ford Racing]
GameId=7
MaxForce=85
FeedbackLength=600
DefaultCentering=20
[Ford Racing Other]
GameId=38
FeedbackLength=600
MaxForce=100
[Machstorm]
GameId=14
@ -341,8 +351,6 @@ HowtoRumbleHealthEffect=0
[Outrun 2 Special Tours Deluxe Custom]
GameId=12
MinForce=0
MaxForce=100
FeedbackLength=80
DefaultCentering=-1
PowerMode=0
@ -357,8 +365,6 @@ Gear6=99
[Outrun 2 Special Tours Deluxe Real]
GameId=35
MinForce=0
MaxForce=100
FeedbackLength=80
SpringStrength=50
ShowButtonNumbersForSetup=0
@ -372,15 +378,9 @@ Gear6=99
[WMMT5]
GameId=9
MinForce=0
MaxForce=100
DefaultCentering=0
FeedbackLength=80
Logging=0
AlternativeMinForceLeft=0
AlternativeMaxForceLeft=-100
AlternativeMinForceRight=0
AlternativeMaxForceRight=100
SpringStrength=100
FrictionStrength=0
JointsAndStripesStrength=100
@ -411,11 +411,11 @@ PowerMode=0
[Road Fighters 3D]
GameId=29
MinForce=0
MaxForce=70
MaxForce=75
AlternativeMinForceLeft=0
AlternativeMaxForceLeft=-70
AlternativeMaxForceLeft=-75
AlternativeMinForceRight=0
AlternativeMaxForceRight=70
AlternativeMaxForceRight=75
FeedbackLength=500
CabinetID=1
Only2D=0

932
Config/PersistentValues.h Normal file
View File

@ -0,0 +1,932 @@
#include <Windows.h>
extern int configGameId;
extern int configMinForce;
extern int configMaxForce;
extern int AlternativeFFB;
extern int configAlternativeMinForceLeft;
extern int configAlternativeMaxForceLeft;
extern int configAlternativeMinForceRight;
extern int configAlternativeMaxForceRight;
extern char* romname;
extern LPCSTR CustomPersistentAlternativeMaxForceLeft;
extern LPCSTR CustomPersistentAlternativeMaxForceRight;
extern LPCSTR CustomPersistentMaxForce;
extern int PersistentMaxForce;
extern int PersistentAlternativeMaxForceLeft;
extern int PersistentAlternativeMaxForceRight;
extern int PersistentMaxForceDaytona2;
extern int PersistentAlternativeMaxForceLeftDaytona2;
extern int PersistentAlternativeMaxForceRightDaytona2;
extern int PersistentMaxForceScud;
extern int PersistentAlternativeMaxForceLeftScud;
extern int PersistentAlternativeMaxForceRightScud;
extern int PersistentMaxForceLeMans;
extern int PersistentAlternativeMaxForceLeftLeMans;
extern int PersistentAlternativeMaxForceRightLeMans;
extern int PersistentMaxForceDirtDevils;
extern int PersistentAlternativeMaxForceLeftDirtDevils;
extern int PersistentAlternativeMaxForceRightDirtDevils;
extern int PersistentMaxForceSRally2;
extern int PersistentAlternativeMaxForceLeftSRally2;
extern int PersistentAlternativeMaxForceRightSRally2;
extern int PersistentMaxForceECA;
extern int PersistentAlternativeMaxForceLeftECA;
extern int PersistentAlternativeMaxForceRightECA;
extern int PersistentMaxForceVirtuaRacing;
extern int PersistentAlternativeMaxForceLeftVirtuaRacing;
extern int PersistentAlternativeMaxForceRightVirtuaRacing;
extern int PersistentMaxForceSFRush;
extern int PersistentAlternativeMaxForceLeftSFRush;
extern int PersistentAlternativeMaxForceRightSFRush;
extern int PersistentMaxForceSFRushRock;
extern int PersistentAlternativeMaxForceLeftSFRushRock;
extern int PersistentAlternativeMaxForceRightSFRushRock;
extern int PersistentMaxForceCrusnWld;
extern int PersistentAlternativeMaxForceLeftCrusnWld;
extern int PersistentAlternativeMaxForceRightCrusnWld;
extern int PersistentMaxForceOffRoadC;
extern int PersistentAlternativeMaxForceLeftOffRoadC;
extern int PersistentAlternativeMaxForceRightOffRoadC;
extern int PersistentMaxForceCrusnUSA;
extern int PersistentAlternativeMaxForceLeftCrusnUSA;
extern int PersistentAlternativeMaxForceRightCrusnUSA;
extern int PersistentMaxForceCalSpeed;
extern int PersistentAlternativeMaxForceLeftCalSpeed;
extern int PersistentAlternativeMaxForceRightCalSpeed;
extern int PersistentMaxForceSFRush2049;
extern int PersistentAlternativeMaxForceLeftSFRush2049;
extern int PersistentAlternativeMaxForceRightSFRush2049;
extern int PersistentMaxForceHardD;
extern int PersistentAlternativeMaxForceLeftHardD;
extern int PersistentAlternativeMaxForceRightHardD;
extern int PersistentMaxForceORunners;
extern int PersistentAlternativeMaxForceLeftORunners;
extern int PersistentAlternativeMaxForceRightORunners;
extern int PersistentMaxForceTOutrun;
extern int PersistentAlternativeMaxForceLeftTOutrun;
extern int PersistentAlternativeMaxForceRightTOutrun;
extern int PersistentMaxForceCBombers;
extern int PersistentAlternativeMaxForceLeftCBombers;
extern int PersistentAlternativeMaxForceRightCBombers;
extern int PersistentMaxForceOutrun;
extern int PersistentAlternativeMaxForceLeftOutrun;
extern int PersistentAlternativeMaxForceRightOutrun;
extern int PersistentMaxForcePDrift;
extern int PersistentAlternativeMaxForceLeftPDrift;
extern int PersistentAlternativeMaxForceRightPDrift;
extern int PersistentMaxForceCisHeat;
extern int PersistentAlternativeMaxForceLeftCisHeat;
extern int PersistentAlternativeMaxForceRightCisHeat;
extern int PersistentMaxForceF1GpStar;
extern int PersistentAlternativeMaxForceLeftF1GpStar;
extern int PersistentAlternativeMaxForceRightF1GpStar;
extern int PersistentMaxForceF1GpStar2;
extern int PersistentAlternativeMaxForceLeftF1GpStar2;
extern int PersistentAlternativeMaxForceRightF1GpStar2;
extern int PersistentMaxForceHyperDrive;
extern int PersistentAlternativeMaxForceLeftHyperDrive;
extern int PersistentAlternativeMaxForceRightHyperDrive;
extern int PersistentMaxForceVaporTrx;
extern int PersistentAlternativeMaxForceLeftVaporTrx;
extern int PersistentAlternativeMaxForceRightVaporTrx;
extern int PersistentMaxForceRaveRacer;
extern int PersistentAlternativeMaxForceLeftRaveRacer;
extern int PersistentAlternativeMaxForceRightRaveRacer;
extern int PersistentMaxForceDaytonaMAME;
extern int PersistentAlternativeMaxForceLeftDaytonaMAME;
extern int PersistentAlternativeMaxForceRightDaytonaMAME;
extern int PersistentMaxForceSRallyMAME;
extern int PersistentAlternativeMaxForceLeftSRallyMAME;
extern int PersistentAlternativeMaxForceRightSRallyMAME;
extern int PersistentMaxForceIndy500MAME;
extern int PersistentAlternativeMaxForceLeftIndy500MAME;
extern int PersistentAlternativeMaxForceRightIndy500MAME;
extern int PersistentMaxForceSuperGTMAME;
extern int PersistentAlternativeMaxForceLeftSuperGTMAME;
extern int PersistentAlternativeMaxForceRightSuperGTMAME;
extern int PersistentMaxForceSuperChase;
extern int PersistentAlternativeMaxForceLeftSuperChase;
extern int PersistentAlternativeMaxForceRightSuperChase;
extern int PersistentMaxForceDirtDash;
extern int PersistentAlternativeMaxForceLeftDirtDash;
extern int PersistentAlternativeMaxForceRightDirtDash;
extern int PersistentMaxForceAceDriverVictory;
extern int PersistentAlternativeMaxForceLeftAceDriverVictory;
extern int PersistentAlternativeMaxForceRightAceDriverVictory;
extern int PersistentMaxForceAceDriver;
extern int PersistentAlternativeMaxForceLeftAceDriver;
extern int PersistentAlternativeMaxForceRightAceDriver;
//Supermodel Emulator Games
static std::string dayto2pe("dayto2pe");
static std::string daytona2("daytona2");
static std::string dirtdvlsa("dirtdvlsa");
static std::string dirtdvls("dirtdvls");
static std::string dirtdvlsj("dirtdvlsj");
static std::string dirtdvlsg("dirtdvlsg");
static std::string ecau("ecau");
static std::string eca("eca");
static std::string ecap("ecap");
static std::string ecaj("ecaj");
static std::string lemans24("lemans24");
static std::string scud("scud");
static std::string scuda("scuda");
static std::string scudj("scudj");
static std::string scudplus("scudplus");
static std::string scudplusa("scudplusa");
static std::string srally2("srally2");
static std::string srally2x("srally2x");
static std::string srally2p("srally2p");
static std::string srally2pa("srally2pa");
//MAME Games
static std::string aburner2("aburner2");
static std::string aburner2g("aburner2g");
static std::string acedrvrw("acedrvrw");
static std::string vformula("vformula");
static std::string vr("vr");
static std::string sfrush("sfrush");
static std::string sfrushrk("sfrushrk");
static std::string sfrushrkwo("sfrushrkwo");
static std::string sfrusha("sfrusha");
static std::string crusnwld("crusnwld");
static std::string crusnwld24("crusnwld24");
static std::string crusnwld23("crusnwld23");
static std::string crusnwld20("crusnwld20");
static std::string crusnwld19("crusnwld19");
static std::string crusnwld17("crusnwld17");
static std::string crusnwld13("crusnwld13");
static std::string daytona("daytona");
static std::string daytonas("daytonas");
static std::string daytonase("daytonase");
static std::string dirtdash("dirtdash");
static std::string offroadc("offroadc");
static std::string offroadc4("offroadc4");
static std::string offroadc3("offroadc3");
static std::string offroadc1("offroadc1");
static std::string crusnusa("crusnusa");
static std::string crusnusa40("crusnusa40");
static std::string crusnusa21("crusnusa21");
static std::string calspeed("calspeed");
static std::string calspeeda("calspeeda");
static std::string calspeedb("calspeedb");
static std::string indy500("indy500");
static std::string indy500d("indy500d");
static std::string indy500to("indy500to");
static std::string outrunra("outrunra");
static std::string outrun("outrun");
static std::string outruneh("outruneh");
static std::string toutrun("toutrun");
static std::string toutrund("toutrund");
static std::string toutrunj("toutrunj");
static std::string toutrunjd("toutrunjd");
static std::string pdrift("pdrift");
static std::string pdrifta("pdrifta");
static std::string pdrifte("pdrifte");
static std::string pdriftj("pdriftj");
static std::string pdriftl("pdriftl");
static std::string orunners("orunners");
static std::string orunnersu("orunnersu");
static std::string orunnersj("orunnersj");
static std::string sf2049("sf2049");
static std::string sf2049se("sf2049se");
static std::string sf2049te("sf2049te");
static std::string harddriv("harddriv");
static std::string harddriv1("harddriv1");
static std::string harddrivb6("harddrivb6");
static std::string harddrivb("harddrivb");
static std::string harddrivg4("harddrivg4");
static std::string harddrivg("harddrivg");
static std::string harddrivj6("harddrivj6");
static std::string harddrivj("harddrivj");
static std::string harddriv2("harddriv2");
static std::string harddriv3("harddriv3");
static std::string harddrivcb("harddrivcb");
static std::string harddrivcg("harddrivcg");
static std::string harddrivc1("harddrivc1");
static std::string harddrivc("harddrivc");
static std::string hdrivairp("hdrivairp");
static std::string hdrivair("hdrivair");
static std::string racedrivb1("racedrivb1");
static std::string racedrivb4("racedrivb4");
static std::string racedrivb("racedrivb");
static std::string racedrivg1("racedrivg1");
static std::string racedrivg4("racedrivg4");
static std::string racedrivg("racedrivg");
static std::string racedriv1("racedriv1");
static std::string racedriv2("racedriv2");
static std::string racedriv3("racedriv3");
static std::string racedriv4("racedriv4");
static std::string racedriv("racedriv");
static std::string racedrivcb4("racedrivcb4");
static std::string racedrivcb("racedrivcb");
static std::string racedrivcg4("racedrivcg4");
static std::string racedrivcg("racedrivcg");
static std::string racedrivc2("racedrivc2");
static std::string racedrivc4("racedrivc4");
static std::string racedrivc("racedrivc");
static std::string racedrivpan("racedrivpan");
static std::string raveracw("raveracw");
static std::string raveracj("raveracj");
static std::string raveracja("raveracja");
static std::string othunder("othunder");
static std::string othundero("othundero");
static std::string othunderuo("othunderuo");
static std::string othunderu("othunderu");
static std::string othunderj("othunderj");
static std::string opwolf("opwolf");
static std::string opwolfp("opwolfp");
static std::string opwolfj("opwolfj");
static std::string opwolfu("opwolfu");
static std::string opwolfa("opwolfa");
static std::string revx("revx");
static std::string revxp5("revxp5");
static std::string term2("term2");
static std::string term2la1("term2la1");
static std::string term2pa2("term2pa2");
static std::string term2la2("term2la2");
static std::string term2la3("term2la3");
static std::string term2lg1("term2lg1");
static std::string zombraid("zombraid");
static std::string zombraidpj("zombraidpj");
static std::string zombraidp("zombraidp");
static std::string bbusters("bbusters");
static std::string bbustersu("bbustersu");
static std::string bbustersua("bbustersua");
static std::string bbustersj("bbustersj");
static std::string mechatt("mechatt");
static std::string mechattu("mechattu");
static std::string mechattu1("mechattu1");
static std::string mechattj("mechattj");
static std::string tshoot("tshoot");
static std::string gunbustru("gunbustru");
static std::string gunbustr("gunbustr");
static std::string gunbustrj("gunbustrj");
static std::string alien3("alien3");
static std::string alien3u("alien3u");
static std::string ptblank2("ptblank2");
static std::string ptblank2ua("ptblank2ua");
static std::string ghlpanic("ghlpanic");
static std::string sgt24h("sgt24h");
static std::string srallyc("srallyc");
static std::string srallycb("srallycb");
static std::string srallycdxa("srallycdxa");
static std::string srallycdx("srallycdx");
static std::string spacegun("spacegun");
static std::string spacegunu("spacegunu");
static std::string spacegunj("spacegunj");
static std::string superchs("superchs");
static std::string superchsp("superchsp");
static std::string superchsj("superchsj");
static std::string superchsu("superchsu");
static std::string stcc("stcc");
static std::string stcca("stcca");
static std::string stccb("stccb");
static std::string rchase("rchase");
static std::string rchasej("rchasej");
static std::string lghost("lghost");
static std::string lghostd("lghostd");
static std::string lghostu("lghostu");
static std::string lghostud("lghostud");
static std::string lghostj("lghostj");
static std::string timecris("timecris");
static std::string timecrisa("timecrisa");
static std::string cischeat("cischeat");
static std::string f1gpstar("f1gpstar");
static std::string f1gpstaro("f1gpstaro");
static std::string f1gpstr2("f1gpstr2");
static std::string undrfire("undrfire");
static std::string undrfireu("undrfireu");
static std::string undrfirej("undrfirej");
static std::string cbombers("cbombers");
static std::string cbombersj("cbombersj");
static std::string cbombersp("cbombersp");
static std::string hyprdriv("hyprdriv");
static std::string vaportrx("vaportrx");
static std::string vaportrp("vaportrp");
static std::string victlapw("victlapw");
void DefaultConfigValues()
{
if (configGameId == 1)
{
configMinForce = 0;
configMaxForce = 90;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -90;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 90;
}
else if ((configGameId == 2) || (configGameId == 3) || (configGameId == 29))
{
configMinForce = 0;
configMaxForce = 75;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -75;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 75;
}
else if (configGameId == 22)
{
if (romname == superchs || romname == superchsj || romname == superchsp || romname == superchsu)
{
configMinForce = 0;
configMaxForce = 80;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -80;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 80;
}
else
{
configMinForce = 0;
configMaxForce = 100;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -100;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 100;
}
}
else
{
configMinForce = 0;
configMaxForce = 100;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -100;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 100;
}
}
void LoadPersistentSetup()
{
if (configGameId == 34)
{
if (romname == dayto2pe || romname == daytona2)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftDaytona2";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightDaytona2";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftDaytona2;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightDaytona2;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceDaytona2";
configMaxForce = PersistentMaxForceDaytona2;
}
}
if (romname == scud || romname == scuda || romname == scudj || romname == scudplus || romname == scudplusa)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftScud";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightScud";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftScud;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightScud;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceScud";
configMaxForce = PersistentMaxForceScud;
}
}
if (romname == lemans24)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftLeMans";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightLeMans";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftLeMans;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightLeMans;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceLeMans";
configMaxForce = PersistentMaxForceLeMans;
}
}
if (romname == dirtdvlsa || romname == dirtdvls || romname == dirtdvlsj || romname == dirtdvlsg)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftDirtDevils";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightDirtDevils";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftDirtDevils;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightDirtDevils;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceDirtDevils";
configMaxForce = PersistentMaxForceDirtDevils;
}
}
if (romname == srally2 || romname == srally2x || romname == srally2p || romname == srally2pa)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSRally2";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSRally2";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSRally2;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSRally2;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSRally2";
configMaxForce = PersistentMaxForceSRally2;
}
}
if (romname == ecau || romname == eca || romname == ecap || romname == ecaj)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftECA";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightECA";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftECA;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightECA;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceECA";
configMaxForce = PersistentMaxForceECA;
}
}
}
else if (configGameId == 22)
{
if (romname == vr)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftVirtuaRacing";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightVirtuaRacing";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftVirtuaRacing;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightVirtuaRacing;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceVirtuaRacing";
configMaxForce = PersistentMaxForceVirtuaRacing;
}
}
if (romname == sfrush || romname == sfrusha)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSFRush";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSFRush";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSFRush;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSFRush;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSFRush";
configMaxForce = PersistentMaxForceSFRush;
}
}
if (romname == sfrushrk || romname == sfrushrkwo)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSFRushRock";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSFRushRock";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSFRushRock;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSFRushRock;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSFRushRock";
configMaxForce = PersistentMaxForceSFRushRock;
}
}
if (romname == crusnwld || romname == crusnwld24 || romname == crusnwld23 || romname == crusnwld20 || romname == crusnwld19 || romname == crusnwld17)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftCrusnWld";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightCrusnWld";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftCrusnWld;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightCrusnWld;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceCrusnWld";
configMaxForce = PersistentMaxForceCrusnWld;
}
}
if (romname == superchs || romname == superchsj || romname == superchsp || romname == superchsu)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSuperChase";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSuperChase";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSuperChase;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSuperChase;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSuperChase";
configMaxForce = PersistentMaxForceSuperChase;
}
}
if (romname == offroadc || romname == offroadc4 || romname == offroadc3 || romname == offroadc1)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftOffRoadC";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightOffRoadC";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftOffRoadC;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightOffRoadC;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceOffRoadC";
configMaxForce = PersistentMaxForceOffRoadC;
}
}
if (romname == crusnusa || romname == crusnusa40 || romname == crusnusa21)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftCrusnUSA";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightCrusnUSA";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftCrusnUSA;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightCrusnUSA;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceCrusnUSA";
configMaxForce = PersistentMaxForceCrusnUSA;
}
}
if (romname == calspeed || romname == calspeeda || romname == calspeedb)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftCalSpeed";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightCalSpeed";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftCalSpeed;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightCalSpeed;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceCalSpeed";
configMaxForce = PersistentMaxForceCalSpeed;
}
}
if (romname == sf2049 || romname == sf2049se || romname == sf2049te)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSFRush2049";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSFRush2049";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSFRush2049;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSFRush2049;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSFRush2049";
configMaxForce = PersistentMaxForceSFRush2049;
}
}
if (romname == harddriv1 || romname == harddrivb6 || romname == harddrivb || romname == harddrivg4 || romname == harddrivg || romname == harddrivj6 || romname == harddrivj ||
romname == harddriv2 || romname == harddriv3 || romname == harddriv || romname == harddrivcb || romname == harddrivcg || romname == harddrivc1 || romname == harddrivc ||
romname == hdrivairp || romname == hdrivair || romname == racedrivb1 || romname == racedrivb4 || romname == racedrivb || romname == racedrivg1 || romname == racedrivg4 ||
romname == racedrivg || romname == racedriv1 || romname == racedriv2 || romname == racedriv3 || romname == racedriv4 || romname == racedriv || romname == racedrivcb4 ||
romname == racedrivcb || romname == racedrivcg4 || romname == racedrivcg || romname == racedrivc2 || romname == racedrivc4 || romname == racedrivc || romname == racedrivpan)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftHardD";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightHardD";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftHardD;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightHardD;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceHardD";
configMaxForce = PersistentMaxForceHardD;
}
}
if (romname == orunners || romname == orunnersu || romname == orunnersj)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftORunners";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightORunners";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftORunners;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightORunners;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceORunners";
configMaxForce = PersistentMaxForceORunners;
}
}
if (romname == toutrun || romname == toutrund || romname == toutrunj || romname == toutrunjd)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftTOutrun";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightTOutrun";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftTOutrun;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightTOutrun;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceTOutrun";
configMaxForce = PersistentMaxForceTOutrun;
}
}
if (romname == cbombers || romname == cbombersj || romname == cbombersp)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftCBombers";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightCBombers";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftCBombers;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightCBombers;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceCBombers";
configMaxForce = PersistentMaxForceCBombers;
}
}
if (romname == outrunra || romname == outrun || romname == outruneh)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftOutrun";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightOutrun";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftOutrun;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightOutrun;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceOutrun";
configMaxForce = PersistentMaxForceOutrun;
}
}
if (romname == pdrift || romname == pdrifta || romname == pdrifte || romname == pdriftj || romname == pdriftl)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftPDrift";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightPDrift";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftPDrift;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightPDrift;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForcePDrift";
configMaxForce = PersistentMaxForcePDrift;
}
}
if (romname == cischeat)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftCisHeat";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightCisHeat";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftCisHeat;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightCisHeat;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceCisHeat";
configMaxForce = PersistentMaxForceCisHeat;
}
}
if (romname == f1gpstar || romname == f1gpstaro)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftF1GpStar";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightF1GpStar";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftF1GpStar;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightF1GpStar;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceF1GpStar";
configMaxForce = PersistentMaxForceF1GpStar;
}
}
if (romname == f1gpstr2)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftF1GpStar2";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightF1GpStar2";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftF1GpStar2;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightF1GpStar2;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceF1GpStar2";
configMaxForce = PersistentMaxForceF1GpStar2;
}
}
if (romname == hyprdriv)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftHyperDrive";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightHyperDrive";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftHyperDrive;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightHyperDrive;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceHyperDrive";
configMaxForce = PersistentMaxForceHyperDrive;
}
}
if (romname == vaportrx || romname == vaportrp)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftVaporTrx";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightVaporTrx";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftVaporTrx;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightVaporTrx;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceVaporTrx";
configMaxForce = PersistentMaxForceVaporTrx;
}
}
if (romname == raveracw || romname == raveracj || romname == raveracja)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftRaveRacer";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightRaveRacer";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftRaveRacer;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightRaveRacer;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceRaveRacer";
configMaxForce = PersistentMaxForceRaveRacer;
}
}
if (romname == daytona || romname == daytonas || romname == daytonase)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftDaytona";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightDaytona";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftDaytonaMAME;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightDaytonaMAME;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceDaytona";
configMaxForce = PersistentMaxForceDaytonaMAME;
}
}
if (romname == indy500 || romname == indy500d || romname == indy500to)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftIndy500";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightIndy500";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftIndy500MAME;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightIndy500MAME;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceIndy500";
configMaxForce = PersistentMaxForceIndy500MAME;
}
}
if (romname == sgt24h)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSuperGT";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSuperGT";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSuperGTMAME;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSuperGTMAME;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSuperGT";
configMaxForce = PersistentMaxForceSuperGTMAME;
}
}
if (romname == srallyc || romname == srallycb || romname == srallycdx || romname == srallycdxa)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftSRally";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightSRally";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftSRallyMAME;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightSRallyMAME;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceSRally";
configMaxForce = PersistentMaxForceSRallyMAME;
}
}
if (romname == dirtdash)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftDirtDash";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightDirtDash";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftDirtDash;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightDirtDash;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceDirtDash";
configMaxForce = PersistentMaxForceDirtDash;
}
}
if (romname == victlapw)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftAceDriverVictory";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightAceDriverVictory";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftAceDriverVictory;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightAceDriverVictory;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceAceDriverVictory";
configMaxForce = PersistentMaxForceAceDriverVictory;
}
}
if (romname == acedrvrw)
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeftAceDriver";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRightAceDriver";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeftAceDriver;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRightAceDriver;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForceAceDriver";
configMaxForce = PersistentMaxForceAceDriver;
}
}
}
else
{
if (AlternativeFFB == 1)
{
CustomPersistentAlternativeMaxForceLeft = "PersistentAlternativeMaxForceLeft";
CustomPersistentAlternativeMaxForceRight = "PersistentAlternativeMaxForceRight";
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeft;
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRight;
}
else
{
CustomPersistentMaxForce = "PersistentMaxForce";
configMaxForce = PersistentMaxForce;
}
}
}

View File

@ -21,6 +21,7 @@
<ItemGroup>
<ClInclude Include="Common Files\CRCCheck.h" />
<ClInclude Include="Common Files\SignatureScanning.h" />
<ClInclude Include="Config\PersistentValues.h" />
<ClInclude Include="Game Files\AliensExtermination.h" />
<ClInclude Include="Game Files\Batman.h" />
<ClInclude Include="Game Files\DirtyDrivin.h" />

View File

@ -287,6 +287,9 @@
<ClInclude Include="Common Files\CRCCheck.h">
<Filter>Common Header Files</Filter>
</ClInclude>
<ClInclude Include="Config\PersistentValues.h">
<Filter>Common Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<MASM Include="DLLWrapper.asm" />

View File

@ -26,6 +26,8 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>.
#include "IDirectInputDevice.h"
#include <d3d11.h>
#include "Config/PersistentValues.h"
// include all game header files here.
#include "Game Files/TestGame.h"
#include "Game Files/AliensExtermination.h"
@ -869,6 +871,10 @@ int joystick1Index = -1;
int joystick_index2 = -1;
int joystick_index3 = -1;
LPCSTR CustomPersistentAlternativeMaxForceLeft;
LPCSTR CustomPersistentAlternativeMaxForceRight;
LPCSTR CustomPersistentMaxForce;
// settings
wchar_t* settingsFilename = TEXT(".\\FFBPlugin.ini");
int configMinForce = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForce"), 0, settingsFilename);
@ -926,12 +932,8 @@ int PersistentMaxForce = GetPrivateProfileInt(TEXT("Settings"), TEXT("Persistent
int PersistentAlternativeMaxForceLeft = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeft"), 1, settingsFilename);
int PersistentAlternativeMaxForceRight = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRight"), -1, settingsFilename);
int defaultCenterMaxForce = configMaxForce;
int defaultCenterMinForce = configMinForce;
int defaultAlternativeCenterMaxForceRight = configAlternativeMaxForceRight;
int defaultAlternativeCenterMinForceRight = configAlternativeMinForceRight;
int defaultAlternativeCenterMaxForceLeft = configAlternativeMaxForceLeft;
int defaultAlternativeCenterMinForceLeft = configAlternativeMinForceRight;
extern void DefaultConfigValues();
extern void LoadPersistentSetup();
char chainedDLL[256];
@ -1946,12 +1948,12 @@ void WritePersistentMaxForce()
{
if (AlternativeFFB == 1)
{
WritePrivateProfileStringA("Settings", "PersistentAlternativeMaxForceLeft", (char*)(std::to_string(configAlternativeMaxForceLeft)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", "PersistentAlternativeMaxForceRight", (char*)(std::to_string(configAlternativeMaxForceRight)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", CustomPersistentAlternativeMaxForceLeft, (char*)(std::to_string(configAlternativeMaxForceLeft)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", CustomPersistentAlternativeMaxForceRight, (char*)(std::to_string(configAlternativeMaxForceRight)).c_str(), ".\\FFBPlugin.ini");
}
else
{
WritePrivateProfileStringA("Settings", "PersistentMaxForce", (char*)(std::to_string(configMaxForce)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", CustomPersistentMaxForce, (char*)(std::to_string(configMaxForce)).c_str(), ".\\FFBPlugin.ini");
}
}
}
@ -2024,19 +2026,7 @@ DWORD WINAPI AdjustFFBStrengthLoop(LPVOID lpParam)
if (e.jbutton.button == ResetFFBStrength)
{
if (AlternativeFFB == 1)
{
configAlternativeMaxForceRight = defaultAlternativeCenterMaxForceRight;
configAlternativeMinForceRight = defaultAlternativeCenterMinForceRight;
configAlternativeMaxForceLeft = defaultAlternativeCenterMaxForceLeft;
configAlternativeMinForceRight = defaultAlternativeCenterMinForceLeft;
}
else
{
configMaxForce = defaultCenterMaxForce;
configMinForce = defaultCenterMinForce;
}
DefaultConfigValues();
WritePersistentMaxForce();
}
}
@ -2049,6 +2039,28 @@ DWORD WINAPI AdjustFFBStrengthLoop(LPVOID lpParam)
DWORD WINAPI FFBLoop2(LPVOID lpParam)
{
if (EnableRumble == 1)
{
if ((configGameId != 1) && (configGameId != 9) && (configGameId != 12) && (configGameId != 26) && (configGameId != 28) && (configGameId != 29) && (configGameId != 30) && (configGameId != 31) && (configGameId != 35))
{
// Workaround for SDL_JoystickRumble rumble not stopping issue
SDL_CreateThread(WorkaroundToFixRumble, "WorkaroundToFixRumble", (void*)NULL);
}
//SPECIAL K DISABLES RUMBLE BY DEFAULT. WRITE IT TO FALSE
char RumbleDisableChar[256];
GetPrivateProfileStringA("Input.Gamepad", "DisableRumble", "", RumbleDisableChar, 256, ".\\dxgi.ini");
std::string rumbletrue("true");
std::string rumbleTRUE("TRUE");
std::string rumbleTrue("True");
std::string rumdisable(RumbleDisableChar);
if ((rumdisable.compare(rumbletrue) == 0) || (rumdisable.compare(rumbleTrue) == 0) || (rumdisable.compare(rumbleTRUE) == 0))
{
WritePrivateProfileStringA("Input.Gamepad", "DisableRumble", "false", ".\\dxgi.ini");
}
}
// assign FFB effects here
t.Constant = &TriggerConstantEffect;
t.Spring = &TriggerSpringEffect;
@ -2228,7 +2240,7 @@ DWORD WINAPI FFBLoop2(LPVOID lpParam)
if (configDefaultFriction >= 0 && configDefaultFriction <= 100) {
TriggerFrictionEffectWithDefaultOption(configDefaultFriction / 100.0, true);
}
hlp.log("Entering Game's FFBLoop loop");
bool* kr = (bool*)lpParam;
while (*kr)
@ -2247,28 +2259,6 @@ DWORD WINAPI FFBLoop(LPVOID lpParam)
{
hlp.log("In FFBLoop");
if (EnableRumble == 1)
{
if ((configGameId != 1) && (configGameId != 9) && (configGameId != 12) && (configGameId != 26) && (configGameId != 28) && (configGameId != 29) && (configGameId != 30) && (configGameId != 31) && (configGameId != 35))
{
// Workaround for SDL_JoystickRumble rumble not stopping issue
SDL_CreateThread(WorkaroundToFixRumble, "WorkaroundToFixRumble", (void*)NULL);
}
//SPECIAL K DISABLES RUMBLE BY DEFAULT. WRITE IT TO FALSE
char RumbleDisableChar[256];
GetPrivateProfileStringA("Input.Gamepad", "DisableRumble", "", RumbleDisableChar, 256, ".\\dxgi.ini");
std::string rumbletrue("true");
std::string rumbleTRUE("TRUE");
std::string rumbleTrue("True");
std::string rumdisable(RumbleDisableChar);
if ((rumdisable.compare(rumbletrue) == 0) || (rumdisable.compare(rumbleTrue) == 0) || (rumdisable.compare(rumbleTRUE) == 0))
{
WritePrivateProfileStringA("Input.Gamepad", "DisableRumble", "false", ".\\dxgi.ini");
}
}
SDL_HapticStopAll(haptic);
CreateThread(NULL, 0, FFBLoop2, (LPVOID)&keepRunning, 0, NULL);
if (configGameId != 29) //For games which need code to run quicker etc. Some games will crash if no sleep added
@ -2276,6 +2266,7 @@ DWORD WINAPI FFBLoop(LPVOID lpParam)
Sleep(2500);
}
Initialize(0);
hlp.log("Initialize() complete");
if (EnableFFBStrengthDynamicAdjustment == 1)
{
CreateThread(NULL, 0, AdjustFFBStrengthLoop, NULL, 0, NULL);
@ -2284,27 +2275,9 @@ DWORD WINAPI FFBLoop(LPVOID lpParam)
// Load persistent max force if previously set.
if (EnablePersistentMaxForce == 1)
{
if (AlternativeFFB == 1)
{
if (PersistentAlternativeMaxForceLeft <= 0)
{
configAlternativeMaxForceLeft = PersistentAlternativeMaxForceLeft;
}
if (PersistentAlternativeMaxForceRight >= 0)
{
configAlternativeMaxForceRight = PersistentAlternativeMaxForceRight;
}
}
else
{
if (PersistentMaxForce >= 0)
{
configMaxForce = PersistentMaxForce;
}
}
Sleep(4000);
LoadPersistentSetup();
}
hlp.log("Initialize() complete");
return 0;
}

View File

@ -28,6 +28,7 @@ extern void SmashingDriveInputsEnabled(Helpers* helpers);
extern void ATVTrackInputsEnabled(Helpers* helpers);
extern void FasterThanSpeedInputsEnabled(Helpers* helpers);
extern void MaximumSpeedInputsEnabled(Helpers* helpers);
extern void changeVolume();
static EffectTriggers* myTriggers;
static EffectConstants* myConstants;
@ -45,7 +46,6 @@ static bool shiftupA;
static bool shiftdownA;
static bool coinA;
static bool VolumeMute = false;
static bool VolumeMute2 = false;
static bool CRCinit = false;
static bool NOPinit = false;
static bool InputFind = false;
@ -80,9 +80,9 @@ extern int configAlternativeMinForceRight;
extern int configAlternativeMaxForceRight;
extern int EnableForceSpringEffect;
extern int ForceSpringStrength;
extern int AutoCloseWindowError;
static int InputDeviceWheelEnable = GetPrivateProfileInt(TEXT("Settings"), TEXT("InputDeviceWheelEnable"), 0, settingsFilename);
static int AutoCloseWindowError = GetPrivateProfileInt(TEXT("Settings"), TEXT("AutoCloseWindowError"), 0, settingsFilename);
static int configMinForceInitialDDemul = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceInitialDDemul"), 0, settingsFilename);
static int configMaxForceInitialDDemul = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceInitialDDemul"), 100, settingsFilename);
@ -497,16 +497,6 @@ static DWORD WINAPI MaximumSpeedRunningLoop(LPVOID lpParam)
}
}
void changeVolume()
{
INPUT ip = { 0 };
ip.type = INPUT_KEYBOARD;
ip.ki.wVk = VK_VOLUME_MUTE;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
}
static DWORD WINAPI VolumeMuteThread(LPVOID lpParam)
{
SendMessage(hWnd, WM_CLOSE, NULL, NULL);
@ -550,12 +540,6 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
{
if (!VolumeMute)
{
if (!VolumeMute2)
{
changeVolume();
VolumeMute2 = true;
}
//Remove window error popup
hWnd = FindWindowA(0, ("padDemul"));
if (hWnd > NULL)

View File

@ -278,6 +278,7 @@ extern wchar_t* settingsFilename;
extern int DeviceGUID;
extern int configFeedbackLength;
extern int configGameId;
extern int AlternativeFFB;
extern int configMinForce;
extern int configMaxForce;
extern int PowerMode;
@ -311,6 +312,13 @@ extern int RumbleStrengthLeftMotor;
extern int RumbleStrengthRightMotor;
extern int EnableForceSpringEffect;
extern int ForceSpringStrength;
extern int EnablePersistentMaxForce;
extern int PersistentMaxForce;
extern int PersistentAlternativeMaxForceLeft;
extern int PersistentAlternativeMaxForceRight;
extern LPCSTR CustomPersistentAlternativeMaxForceLeft;
extern LPCSTR CustomPersistentAlternativeMaxForceRight;
extern LPCSTR CustomPersistentMaxForce;
static int configMinForceDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceDaytona2"), 0, settingsFilename);
static int configMaxForceDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceDaytona2"), 100, settingsFilename);
@ -320,6 +328,9 @@ static int configAlternativeMinForceRightDaytona2 = GetPrivateProfileInt(TEXT("S
static int configAlternativeMaxForceRightDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightDaytona2"), 100, settingsFilename);
static int configFeedbackLengthDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthDaytona2"), 120, settingsFilename);
static int PowerModeDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeDaytona2"), 0, settingsFilename);
int PersistentMaxForceDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceDaytona2"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftDaytona2"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightDaytona2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightDaytona2"), -1, settingsFilename);
static int configMinForceScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceScud"), 0, settingsFilename);
static int configMaxForceScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceScud"), 100, settingsFilename);
@ -329,6 +340,9 @@ static int configAlternativeMinForceRightScud = GetPrivateProfileInt(TEXT("Setti
static int configAlternativeMaxForceRightScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightScud"), 100, settingsFilename);
static int configFeedbackLengthScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthScud"), 120, settingsFilename);
static int PowerModeScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeScud"), 0, settingsFilename);
int PersistentMaxForceScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceScud"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftScud"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightScud = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightScud"), -1, settingsFilename);
static int configMinForceLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceLeMans"), 0, settingsFilename);
static int configMaxForceLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceLeMans"), 100, settingsFilename);
@ -338,8 +352,10 @@ static int configAlternativeMinForceRightLeMans = GetPrivateProfileInt(TEXT("Set
static int configAlternativeMaxForceRightLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightLeMans"), 100, settingsFilename);
static int configFeedbackLengthLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthLeMans"), 120, settingsFilename);
static int PowerModeLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeLeMans"), 0, settingsFilename);
int PersistentMaxForceLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceLeMans"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftLeMans"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightLeMans"), -1, settingsFilename);
static int ForceSpringStrengthLeMans = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthLeMans"), 0, settingsFilename);
static int configMinForceDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceDirtDevils"), 0, settingsFilename);
static int configMaxForceDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceDirtDevils"), 100, settingsFilename);
static int configAlternativeMinForceLeftDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftDirtDevils"), 0, settingsFilename);
@ -350,6 +366,9 @@ static int configFeedbackLengthDirtDevils = GetPrivateProfileInt(TEXT("Settings"
static int PowerModeDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeDirtDevils"), 0, settingsFilename);
static int EnableForceSpringEffectDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectDirtDevils"), 0, settingsFilename);
static int ForceSpringStrengthDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthDirtDevils"), 0, settingsFilename);
int PersistentMaxForceDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceDirtDevils"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftDirtDevils"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightDirtDevils = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightDirtDevils"), -1, settingsFilename);
static int configMinForceSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSRally2"), 0, settingsFilename);
static int configMaxForceSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSRally2"), 100, settingsFilename);
@ -361,6 +380,9 @@ static int configFeedbackLengthSRally2 = GetPrivateProfileInt(TEXT("Settings"),
static int PowerModeSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSRally2"), 0, settingsFilename);
static int EnableForceSpringEffectSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSRally2"), 0, settingsFilename);
static int ForceSpringStrengthSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSRally2"), 0, settingsFilename);
int PersistentMaxForceSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSRally2"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSRally2"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSRally2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSRally2"), -1, settingsFilename);
static int configMinForceECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceECA"), 0, settingsFilename);
static int configMaxForceECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceECA"), 100, settingsFilename);
@ -372,6 +394,9 @@ static int configFeedbackLengthECA = GetPrivateProfileInt(TEXT("Settings"), TEXT
static int PowerModeECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeECA"), 0, settingsFilename);
static int EnableForceSpringEffectECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectECA"), 0, settingsFilename);
static int ForceSpringStrengthECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthECA"), 0, settingsFilename);
int PersistentMaxForceECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceECA"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftECA"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightECA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightECA"), -1, settingsFilename);
static int configMinForceVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceVirtuaRacing"), 0, settingsFilename);
static int configMaxForceVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceVirtuaRacing"), 100, settingsFilename);
@ -382,6 +407,9 @@ static int configAlternativeMaxForceRightVirtuaRacing = GetPrivateProfileInt(TEX
static int configFeedbackLengthVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthVirtuaRacing"), 120, settingsFilename);
static int EnableForceSpringEffectVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectVirtuaRacing"), 0, settingsFilename);
static int ForceSpringStrengthVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthVirtuaRacing"), 0, settingsFilename);
int PersistentMaxForceVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceVirtuaRacing"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftVirtuaRacing"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightVirtuaRacing = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightVirtuaRacing"), -1, settingsFilename);
static int configMinForceSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSFRush"), 0, settingsFilename);
static int configMaxForceSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSFRush"), 100, settingsFilename);
@ -393,9 +421,12 @@ static int configFeedbackLengthSFRush = GetPrivateProfileInt(TEXT("Settings"), T
static int PowerModeSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSFRush"), 0, settingsFilename);
static int EnableForceSpringEffectSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSFRush"), 0, settingsFilename);
static int ForceSpringStrengthSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSFRush"), 0, settingsFilename);
int PersistentMaxForceSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSFRush"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSFRush"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSFRush = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSFRush"), -1, settingsFilename);
static int configMinForceSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSFRushRock"), 0, settingsFilename);
static int configMaxForceSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSFRushRock"), 100, settingsFilename);
static int configAlternativeMinForceLeftSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftSFRushRock"), 0, settingsFilename);
static int configAlternativeMaxForceLeftSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftSFRushRock"), 100, settingsFilename);
static int configAlternativeMinForceRightSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightSFRushRock"), 0, settingsFilename);
@ -404,6 +435,9 @@ static int configFeedbackLengthSFRushRock = GetPrivateProfileInt(TEXT("Settings"
static int PowerModeSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSFRushRock"), 0, settingsFilename);
static int EnableForceSpringEffectSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSFRushRock"), 0, settingsFilename);
static int ForceSpringStrengthSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSFRushRock"), 0, settingsFilename);
int PersistentMaxForceSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSFRushRock"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSFRushRock"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSFRushRock = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSFRushRock"), -1, settingsFilename);
static int configMinForceCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceCrusnWld"), 0, settingsFilename);
static int configMaxForceCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceCrusnWld"), 100, settingsFilename);
@ -415,6 +449,9 @@ static int configFeedbackLengthCrusnWld = GetPrivateProfileInt(TEXT("Settings"),
static int PowerModeCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeCrusnWld"), 0, settingsFilename);
static int EnableForceSpringEffectCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectCrusnWld"), 0, settingsFilename);
static int ForceSpringStrengthCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthCrusnWld"), 0, settingsFilename);
int PersistentMaxForceCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceCrusnWld"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftCrusnWld"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightCrusnWld = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightCrusnWld"), -1, settingsFilename);
static int configMinForceOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceOffRoadC"), 0, settingsFilename);
static int configMaxForceOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceOffRoadC"), 100, settingsFilename);
@ -426,6 +463,9 @@ static int configFeedbackLengthOffRoadC = GetPrivateProfileInt(TEXT("Settings"),
static int PowerModeOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeOffRoadC"), 0, settingsFilename);
static int EnableForceSpringEffectOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectOffRoadC"), 0, settingsFilename);
static int ForceSpringStrengthOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthOffRoadC"), 0, settingsFilename);
int PersistentMaxForceOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceOffRoadC"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftOffRoadC"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightOffRoadC = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightOffRoadC"), -1, settingsFilename);
static int configMinForceCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceCrusnUSA"), 0, settingsFilename);
static int configMaxForceCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceCrusnUSA"), 100, settingsFilename);
@ -437,6 +477,9 @@ static int configFeedbackLengthCrusnUSA = GetPrivateProfileInt(TEXT("Settings"),
static int PowerModeCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeCrusnUSA"), 0, settingsFilename);
static int EnableForceSpringEffectCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectCrusnUSA"), 0, settingsFilename);
static int ForceSpringStrengthCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthCrusnUSA"), 0, settingsFilename);
int PersistentMaxForceCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceCrusnUSA"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftCrusnUSA"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightCrusnUSA = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightCrusnUSA"), -1, settingsFilename);
static int configMinForceCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceCalSpeed"), 0, settingsFilename);
static int configMaxForceCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceCalSpeed"), 100, settingsFilename);
@ -448,6 +491,9 @@ static int configFeedbackLengthCalSpeed = GetPrivateProfileInt(TEXT("Settings"),
static int PowerModeCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeCalSpeed"), 0, settingsFilename);
static int EnableForceSpringEffectCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectCalSpeed"), 0, settingsFilename);
static int ForceSpringStrengthCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthCalSpeed"), 0, settingsFilename);
int PersistentMaxForceCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceCalSpeed"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftCalSpeed"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightCalSpeed = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightCalSpeed"), -1, settingsFilename);
static int configMinForceSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSFRush2049"), 0, settingsFilename);
static int configMaxForceSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSFRush2049"), 100, settingsFilename);
@ -459,6 +505,9 @@ static int configFeedbackLengthSFRush2049 = GetPrivateProfileInt(TEXT("Settings"
static int PowerModeSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSFRush2049"), 0, settingsFilename);
static int EnableForceSpringEffectSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSFRush2049"), 0, settingsFilename);
static int ForceSpringStrengthSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSFRush2049"), 0, settingsFilename);
int PersistentMaxForceSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSFRush2049"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSFRush2049"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSFRush2049 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSFRush2049"), -1, settingsFilename);
static int configMinForceHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceHardD"), 0, settingsFilename);
static int configMaxForceHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceHardD"), 100, settingsFilename);
@ -470,6 +519,9 @@ static int configFeedbackLengthHardD = GetPrivateProfileInt(TEXT("Settings"), TE
static int PowerModeHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeHardD"), 0, settingsFilename);
static int EnableForceSpringEffectHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectHardD"), 0, settingsFilename);
static int ForceSpringStrengthHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthHardD"), 0, settingsFilename);
int PersistentMaxForceHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceHardD"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftHardD"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightHardD = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightHardD"), -1, settingsFilename);
static int configMinForceRevX = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceRevX"), 0, settingsFilename);
static int configMaxForceRevX = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceRevX"), 100, settingsFilename);
@ -614,6 +666,9 @@ static int SineFadePeriodORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT(
static int SineStrengthORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthORunners"), 0, settingsFilename);
static int RumbleStrengthLeftMotorORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorORunners"), 0, settingsFilename);
static int RumbleStrengthRightMotorORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorORunners"), 0, settingsFilename);
int PersistentMaxForceORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceORunners"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftORunners"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightORunners = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightORunners"), -1, settingsFilename);
static int configMinForceTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceTOutrun"), 0, settingsFilename);
static int configMaxForceTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceTOutrun"), 100, settingsFilename);
@ -629,6 +684,9 @@ static int SineFadePeriodTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("
static int SineStrengthTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthTOutrun"), 0, settingsFilename);
static int RumbleStrengthLeftMotorTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorTOutrun"), 0, settingsFilename);
static int RumbleStrengthRightMotorTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorTOutrun"), 0, settingsFilename);
int PersistentMaxForceTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceTOutrun"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftTOutrun"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightTOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightTOutrun"), -1, settingsFilename);
static int configMinForceCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceCBombers"), 0, settingsFilename);
static int configMaxForceCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceCBombers"), 100, settingsFilename);
@ -644,6 +702,9 @@ static int SineFadePeriodCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT(
static int SineStrengthCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthCBombers"), 0, settingsFilename);
static int RumbleStrengthLeftMotorCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorCBombers"), 0, settingsFilename);
static int RumbleStrengthRightMotorCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorCBombers"), 0, settingsFilename);
int PersistentMaxForceCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceCBombers"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftCBombers"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightCBombers = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightCBombers"), -1, settingsFilename);
static int configMinForceOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceOutrun"), 0, settingsFilename);
static int configMaxForceOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceOutrun"), 100, settingsFilename);
@ -659,6 +720,9 @@ static int SineFadePeriodOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("S
static int SineStrengthOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthOutrun"), 0, settingsFilename);
static int RumbleStrengthLeftMotorOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorOutrun"), 0, settingsFilename);
static int RumbleStrengthRightMotorOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorOutrun"), 0, settingsFilename);
int PersistentMaxForceOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceOutrun"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftOutrun"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightOutrun = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightOutrun"), -1, settingsFilename);
static int configMinForcePDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForcePDrift"), 0, settingsFilename);
static int configMaxForcePDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForcePDrift"), 100, settingsFilename);
@ -674,6 +738,9 @@ static int SineFadePeriodPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("S
static int SineStrengthPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthPDrift"), 0, settingsFilename);
static int RumbleStrengthLeftMotorPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorPDrift"), 0, settingsFilename);
static int RumbleStrengthRightMotorPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorPDrift"), 0, settingsFilename);
int PersistentMaxForcePDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForcePDrift"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftPDrift"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightPDrift = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightPDrift"), -1, settingsFilename);
static int configMinForceAfterBurner2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceAfterBurner2"), 0, settingsFilename);
static int configMaxForceAfterBurner2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceAfterBurner2"), 100, settingsFilename);
@ -694,6 +761,9 @@ static int SineFadePeriodCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("
static int SineStrengthCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthCisHeat"), 0, settingsFilename);
static int RumbleStrengthLeftMotorCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorCisHeat"), 0, settingsFilename);
static int RumbleStrengthRightMotorCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorCisHeat"), 0, settingsFilename);
int PersistentMaxForceCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceCisHeat"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftCisHeat"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightCisHeat = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightCisHeat"), -1, settingsFilename);
static int configMinForceF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceF1GpStar"), 0, settingsFilename);
static int configMaxForceF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceF1GpStar"), 100, settingsFilename);
@ -709,6 +779,9 @@ static int SineFadePeriodF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT(
static int SineStrengthF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthF1GpStar"), 0, settingsFilename);
static int RumbleStrengthLeftMotorF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorF1GpStar"), 0, settingsFilename);
static int RumbleStrengthRightMotorF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorF1GpStar"), 0, settingsFilename);
int PersistentMaxForceF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceF1GpStar"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftF1GpStar"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightF1GpStar = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightF1GpStar"), -1, settingsFilename);
static int configMinForceF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceF1GpStar2"), 0, settingsFilename);
static int configMaxForceF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceF1GpStar2"), 100, settingsFilename);
@ -724,6 +797,9 @@ static int SineFadePeriodF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT
static int SineStrengthF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("SineStrengthF1GpStar2"), 0, settingsFilename);
static int RumbleStrengthLeftMotorF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthLeftMotorF1GpStar2"), 0, settingsFilename);
static int RumbleStrengthRightMotorF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("RumbleStrengthRightMotorF1GpStar2"), 0, settingsFilename);
int PersistentMaxForceF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceF1GpStar2"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftF1GpStar2"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightF1GpStar2 = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightF1GpStar2"), -1, settingsFilename);
static int configMinForceHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceHyperDrive"), 0, settingsFilename);
static int configMaxForceHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceHyperDrive"), 100, settingsFilename);
@ -734,6 +810,9 @@ static int configAlternativeMaxForceRightHyperDrive = GetPrivateProfileInt(TEXT(
static int configFeedbackLengthHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthHyperDrive"), 120, settingsFilename);
static int EnableForceSpringEffectHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectHyperDrive"), 0, settingsFilename);
static int ForceSpringStrengthHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthHyperDrive"), 0, settingsFilename);
int PersistentMaxForceHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceHyperDrive"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftHyperDrive"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightHyperDrive = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightHyperDrive"), -1, settingsFilename);
static int configMinForceVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceVaporTrx"), 0, settingsFilename);
static int configMaxForceVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceVaporTrx"), 100, settingsFilename);
@ -744,6 +823,9 @@ static int configAlternativeMaxForceRightVaporTrx = GetPrivateProfileInt(TEXT("S
static int configFeedbackLengthVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthVaporTrx"), 120, settingsFilename);
static int EnableForceSpringEffectVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectVaporTrx"), 0, settingsFilename);
static int ForceSpringStrengthVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthVaporTrx"), 0, settingsFilename);
int PersistentMaxForceVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceVaporTrx"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftVaporTrx"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightVaporTrx = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightVaporTrx"), -1, settingsFilename);
static int configMinForceRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceRaveRacer"), 0, settingsFilename);
static int configMaxForceRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceRaveRacer"), 100, settingsFilename);
@ -755,6 +837,9 @@ static int PowerModeRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("Pow
static int configFeedbackLengthRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthRaveRacer"), 120, settingsFilename);
static int EnableForceSpringEffectRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectRaveRacer"), 0, settingsFilename);
static int ForceSpringStrengthRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthRaveRacer"), 0, settingsFilename);
int PersistentMaxForceRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceRaveRacer"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftRaveRacer"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightRaveRacer = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightRaveRacer"), -1, settingsFilename);
static int configMinForceDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceDaytona"), 0, settingsFilename);
static int configMaxForceDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceDaytona"), 100, settingsFilename);
@ -766,6 +851,9 @@ static int PowerModeDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("P
static int configFeedbackLengthDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthDaytona"), 120, settingsFilename);
static int EnableForceSpringEffectDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectDaytona"), 0, settingsFilename);
static int ForceSpringStrengthDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthDaytona"), 0, settingsFilename);
int PersistentMaxForceDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceDaytona"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftDaytona"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightDaytonaMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightDaytona"), -1, settingsFilename);
static int configMinForceSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSRally"), 0, settingsFilename);
static int configMaxForceSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSRally"), 100, settingsFilename);
@ -777,6 +865,9 @@ static int PowerModeSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("Po
static int configFeedbackLengthSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSRally"), 120, settingsFilename);
static int EnableForceSpringEffectSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSRally"), 0, settingsFilename);
static int ForceSpringStrengthSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSRally"), 0, settingsFilename);
int PersistentMaxForceSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSRally"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSRally"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSRallyMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSRally"), -1, settingsFilename);
static int configMinForceIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceIndy500"), 0, settingsFilename);
static int configMaxForceIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceIndy500"), 100, settingsFilename);
@ -788,6 +879,9 @@ static int PowerModeIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("P
static int configFeedbackLengthIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthIndy500"), 120, settingsFilename);
static int EnableForceSpringEffectIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectIndy500"), 0, settingsFilename);
static int ForceSpringStrengthIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthIndy500"), 0, settingsFilename);
int PersistentMaxForceIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceIndy500"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftIndy500"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightIndy500MAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightIndy500"), -1, settingsFilename);
static int configMinForceSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSuperGT"), 0, settingsFilename);
static int configMaxForceSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSuperGT"), 100, settingsFilename);
@ -799,6 +893,9 @@ static int PowerModeSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("P
static int configFeedbackLengthSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSuperGT"), 120, settingsFilename);
static int EnableForceSpringEffectSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSuperGT"), 0, settingsFilename);
static int ForceSpringStrengthSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSuperGT"), 0, settingsFilename);
int PersistentMaxForceSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSuperGT"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSuperGT"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSuperGT"), -1, settingsFilename);
static int configMinForceSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSuperChase"), 0, settingsFilename);
static int configMaxForceSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSuperChase"), 100, settingsFilename);
@ -810,6 +907,9 @@ static int PowerModeSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("Po
static int configFeedbackLengthSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("FeedbackLengthSuperChase"), 120, settingsFilename);
static int EnableForceSpringEffectSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSuperChase"), 0, settingsFilename);
static int ForceSpringStrengthSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSuperChase"), 0, settingsFilename);
int PersistentMaxForceSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceSuperChase"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftSuperChase"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightSuperChase"), -1, settingsFilename);
static int configMinForceDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceDirtDash"), 0, settingsFilename);
static int configMaxForceDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceDirtDash"), 100, settingsFilename);
@ -822,6 +922,9 @@ static int configFeedbackLengthDirtDash = GetPrivateProfileInt(TEXT("Settings"),
static int EnableForceSpringEffectDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectDirtDash"), 0, settingsFilename);
static int ForceSpringStrengthDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthDirtDash"), 0, settingsFilename);
static int FFBDivideDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("FFBDivideDirtDash"), 0, settingsFilename);
int PersistentMaxForceDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceDirtDash"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftDirtDash"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightDirtDash = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightDirtDash"), -1, settingsFilename);
static int configMinForceAceDriverVictory= GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceAceDriverVictory"), 0, settingsFilename);
static int configMaxForceAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceAceDriverVictory"), 100, settingsFilename);
@ -834,6 +937,9 @@ static int configFeedbackLengthAceDriverVictory = GetPrivateProfileInt(TEXT("Set
static int EnableForceSpringEffectAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectAceDriverVictory"), 0, settingsFilename);
static int ForceSpringStrengthAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthAceDriverVictory"), 0, settingsFilename);
static int FFBDivideAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("FFBDivideAceDriverVictory"), 0, settingsFilename);
int PersistentMaxForceAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceAceDriverVictory"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftAceDriverVictory"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightAceDriverVictory = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightAceDriverVictory"), -1, settingsFilename);
static int configMinForceAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceAceDriver"), 0, settingsFilename);
static int configMaxForceAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceAceDriver"), 100, settingsFilename);
@ -846,6 +952,9 @@ static int configFeedbackLengthAceDriver = GetPrivateProfileInt(TEXT("Settings")
static int EnableForceSpringEffectAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectAceDriver"), 0, settingsFilename);
static int ForceSpringStrengthAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthAceDriver"), 0, settingsFilename);
static int FFBDivideAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("FFBDivideAceDriver"), 0, settingsFilename);
int PersistentMaxForceAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentMaxForceAceDriver"), -1, settingsFilename);
int PersistentAlternativeMaxForceLeftAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceLeftAceDriver"), 1, settingsFilename);
int PersistentAlternativeMaxForceRightAceDriver = GetPrivateProfileInt(TEXT("Settings"), TEXT("PersistentAlternativeMaxForceRightAceDriver"), -1, settingsFilename);
static bool init = false;
static bool initSpring = false;
@ -1186,7 +1295,7 @@ static DWORD WINAPI ScanThread(LPVOID lpParam)
if (romname == indy500 || romname == indy500d || romname == indy500to) //Indy500
{
aAddy2 = PatternScan("\xFF\x4E\x00\x00\x00\x00\x01", "xxxxxxx");
aAddy2 = PatternScan("\x01\xFF\xFF\xFF\x10\x00\xFF\x4E", "xxxx??xx");
}
if (romname == sgt24h) //Sega GT 24hr
@ -1196,7 +1305,7 @@ static DWORD WINAPI ScanThread(LPVOID lpParam)
if (romname == srallyc || romname == srallycb || romname == srallycdx || romname == srallycdxa) //Sega Rally
{
aAddy2 = PatternScan("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x70\xFF\x00\x00\x70\xFF", "xxxxxxxxxxxxxxxx");
aAddy2 = PatternScan("\x01\x04\x00\x00\x80\x3F\xF2\xFF\xFF\xFF\x01\x00\x02\x00\x00\x00\x0B\x00\x01\x00\x01", "xxxxxxxxxxxxxxxxxxxxx");
}
if (romname == superchs || romname == superchsj || romname == superchsp || romname == superchsu) //Super Chase Criminal Termination
@ -1617,7 +1726,7 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
configAlternativeMinForceRight = configAlternativeMinForceRightDaytona2;
configAlternativeMaxForceRight = configAlternativeMaxForceRightDaytona2;
configFeedbackLength = configFeedbackLengthDaytona2;
PowerMode = PowerModeDaytona2;
PowerMode = PowerModeDaytona2;
RunningFFB = "Daytona2Active";
}
@ -3327,11 +3436,10 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
CreateThread(NULL, 0, ScanThread, NULL, 0, NULL);
Scan = true;
}
UINT8 CheckAddy2 = helpers->ReadByte((int)aAddy2 - 0x02, false);
UINT8 CheckAddy2 = helpers->ReadByte((int)aAddy2 + 0x04, false);
if (CheckAddy2 == 0x01)
{
FFBAddress = (int)aAddy2 - 0x02;
FFBAddress = (int)aAddy2 + 0x04;
PatternFind = true;
}
}
@ -3432,9 +3540,10 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
Scan = true;
}
if ((UINT8)aAddy2 == 0x53)
UINT8 CheckAddy2 = helpers->ReadByte((int)aAddy2 + 0x35, false);
if (CheckAddy2 == 0xFF)
{
FFBAddress = (int)aAddy2 - 0x0A;
FFBAddress = (int)aAddy2 + 0x2B;
PatternFind = true;
}
}