1
0
mirror of synced 2025-01-19 15:48:40 +01:00

Merge pull request #9 from adamgp/master

FFB Strength adjustments all tested, minor tweaks to allow for flexibility
This commit is contained in:
Boomslangnz 2020-07-18 15:19:01 +12:00 committed by GitHub
commit 8c934944d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 402 additions and 56 deletions

View File

@ -52,6 +52,8 @@ ResetFFBStrength=
; Step is the amount to adjust when increasing or decreasing per button where FFB strength is represented on
; a scale of 0-100.
StepFFBStrength=5
; Set to 1 if you want FFB strength adjustments to persist between loads, else 0.
EnableFFBStrengthPersistence=0
; Set to 1 if you want FFB strength adjustments text to speech over speaker
EnableFFBStrengthTextToSpeech=0

View File

@ -9,9 +9,46 @@ extern int configAlternativeMaxForceLeft;
extern int configAlternativeMinForceRight;
extern int configAlternativeMaxForceRight;
extern char* romname;
extern char* romnameM2;
extern char* romnameDemul;
extern LPCSTR CustomAlternativeMaxForceLeft;
extern LPCSTR CustomAlternativeMaxForceRight;
extern LPCSTR CustomMaxForce;
extern int EnableFFBStrengthPersistence;
int defaultMaxForce;
int defaultAlternativeMaxForceLeft;
int defaultAlternativeMaxForceRight;
//Demul Emulator Games
static std::string Nascar("Nascar");
static std::string InitialDArcadeStage("Initial D Arcade Stage");
static std::string SmashingDrive("Smashing Drive");
static std::string MaximumSpeed("Maximum Speed");
static std::string FasterThanSpeed("Faster Than Speed");
static std::string ATVTrack("ATV Track");
//M2 Emulator Games
static std::string SegaRallyChampionship("Sega Rally Championship");
static std::string SegaRallyChampionshipRevB("Sega Rally Championship (Rev B)");
static std::string SegaRallyProDrivin("Sega Rally Pro Drivin'");
static std::string DaytonaUSA("Daytona USA");
static std::string DaytonaUSA93Edition("Daytona USA '93 Edition");
static std::string DaytonaUSASaturnAds("Daytona USA (Saturn Ads)");
static std::string DaytonaUSASpecialEdition("Daytona USA Special Edition");
static std::string DaytonaUSATurbo("Daytona USA Turbo");
static std::string DaytonaUSATurboRevA("Daytona USA Turbo (Rev A)");
static std::string DaytonaUSAGTX2004("Daytona USA: GTX 2004");
static std::string DaytonaUSAToTheMaxx("Daytona USA: To The Maxx");
static std::string Indianapolis500RevADeluxe("Indianapolis 500 (Rev A, Deluxe)");
static std::string Indianapolis500RevATwinNewerrev("Indianapolis 500 (Rev A, Twin, Newer rev)");
static std::string Indianapolis500RevATwinOlderrev("Indianapolis 500 (Rev A, Twin, Older rev)");
static std::string OverRev("Over Rev");
static std::string OverRevModel2B("Over Rev (Model 2B)");
static std::string SuperGT24h("Super GT 24h");
static std::string SegaTouringCarChampionship("Sega Touring Car Championship");
static std::string SegaTouringCarChampionshipRevA("Sega Touring Car Championship (Rev A)");
static std::string SegaTouringCarChampionshipRevB("Sega Touring Car Championship (Rev B)");
//Supermodel Emulator Games
static std::string dayto2pe("dayto2pe");
@ -204,34 +241,46 @@ static std::string victlapw("victlapw");
void DefaultConfigValues()
{
if (configGameId == 1)
if (EnableFFBStrengthPersistence == 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)
if (configGameId == 1)
{
configMinForce = 0;
configMaxForce = 80;
configMaxForce = 90;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -80;
configAlternativeMaxForceLeft = -90;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 80;
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
{
@ -245,17 +294,18 @@ void DefaultConfigValues()
}
else
{
configMinForce = 0;
configMaxForce = 100;
configAlternativeMinForceLeft = 0;
configAlternativeMaxForceLeft = -100;
configAlternativeMinForceRight = 0;
configAlternativeMaxForceRight = 100;
configMaxForce = defaultMaxForce;
configAlternativeMaxForceLeft = defaultAlternativeMaxForceLeft;
configAlternativeMaxForceRight = defaultAlternativeMaxForceRight;
}
}
void CustomFFBStrengthSetup()
{
defaultMaxForce = configMaxForce;
defaultAlternativeMaxForceLeft = configAlternativeMaxForceLeft;
defaultAlternativeMaxForceRight = configAlternativeMaxForceRight;
if (configGameId == 34)
{
if (romname == dayto2pe || romname == daytona2)
@ -706,6 +756,166 @@ void CustomFFBStrengthSetup()
}
}
}
else if (configGameId == 25)
{
if (romnameM2 == DaytonaUSA || romnameM2 == DaytonaUSA93Edition || romnameM2 == DaytonaUSASaturnAds || romnameM2 == DaytonaUSASpecialEdition || romnameM2 == DaytonaUSATurbo || romnameM2 == DaytonaUSATurboRevA || romnameM2 == DaytonaUSAGTX2004 || romnameM2 == DaytonaUSAToTheMaxx)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftDaytona";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightDaytona";
}
else
{
CustomMaxForce = "MaxForceDaytona";
}
}
if (romnameM2 == SegaRallyChampionship || romnameM2 == SegaRallyChampionshipRevB || romnameM2 == SegaRallyProDrivin)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftSRally";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightSRally";
}
else
{
CustomMaxForce = "MaxForceSRally";
}
}
if (romnameM2 == Indianapolis500RevADeluxe || romnameM2 == Indianapolis500RevATwinNewerrev || romnameM2 == Indianapolis500RevATwinOlderrev)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftIndy500";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightIndy500";
}
else
{
CustomMaxForce = "MaxForceIndy500";
}
}
if (romnameM2 == SegaTouringCarChampionship || romnameM2 == SegaTouringCarChampionshipRevA || romnameM2 == SegaTouringCarChampionshipRevB)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftSTCC";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightSTCC";
}
else
{
CustomMaxForce = "MaxForceSTCC";
}
}
if (romnameM2 == OverRev || romnameM2 == OverRevModel2B)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftOverRev";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightOverRev";
}
else
{
CustomMaxForce = "MaxForceOverRev";
}
}
if (romnameM2 == SuperGT24h)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftSuperGT";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightSuperGT";
}
else
{
CustomMaxForce = "MaxForceSuperGT";
}
}
}
else if (configGameId == 26)
{
if (romnameDemul == Nascar)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftNascarRacing";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightNascarRacing";
}
else
{
CustomMaxForce = "MaxForceNascarRacing";
}
}
if (romnameDemul == InitialDArcadeStage)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftInitialDDemul";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightInitialDDemul";
}
else
{
CustomMaxForce = "MaxForceInitialDDemul";
}
}
if (romnameDemul == SmashingDrive)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftSmashingDrive";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightSmashingDrive";
}
else
{
CustomMaxForce = "MaxForceSmashingDrive";
}
}
if (romnameDemul == MaximumSpeed)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftMaximumSpeed";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightMaximumSpeed";
}
else
{
CustomMaxForce = "MaxForceMaximumSpeed";
}
}
if (romnameDemul == FasterThanSpeed)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftFasterSpeed";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightFasterSpeed";
}
else
{
CustomMaxForce = "MaxForceFasterSpeed";
}
}
if (romnameDemul == ATVTrack)
{
if (AlternativeFFB == 1)
{
CustomAlternativeMaxForceLeft = "AlternativeMaxForceLeftATVTrack";
CustomAlternativeMaxForceRight = "AlternativeMaxForceRightATVTrack";
}
else
{
CustomMaxForce = "MaxForceATVTrack";
}
}
}
else
{
if (AlternativeFFB == 1)

View File

@ -929,6 +929,7 @@ int IncreaseFFBStrength = GetPrivateProfileInt(TEXT("Settings"), TEXT("IncreaseF
int DecreaseFFBStrength = GetPrivateProfileInt(TEXT("Settings"), TEXT("DecreaseFFBStrength"), NULL, settingsFilename);
int ResetFFBStrength = GetPrivateProfileInt(TEXT("Settings"), TEXT("ResetFFBStrength"), NULL, settingsFilename);
int StepFFBStrength = GetPrivateProfileInt(TEXT("Settings"), TEXT("StepFFBStrength"), 5, settingsFilename);
int EnableFFBStrengthPersistence = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableFFBStrengthPersistence"), 0, settingsFilename);
int EnableFFBStrengthTextToSpeech = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableFFBStrengthTextToSpeech"), 0, settingsFilename);
extern void DefaultConfigValues();
@ -1948,14 +1949,17 @@ int WorkaroundToFixRumble(void* ptr)
void WritePersistentMaxForce()
{
if (AlternativeFFB == 1)
if (EnableFFBStrengthPersistence == 1)
{
WritePrivateProfileStringA("Settings", CustomAlternativeMaxForceLeft, (char*)(std::to_string(configAlternativeMaxForceLeft)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", CustomAlternativeMaxForceRight, (char*)(std::to_string(configAlternativeMaxForceRight)).c_str(), ".\\FFBPlugin.ini");
}
else
{
WritePrivateProfileStringA("Settings", CustomMaxForce, (char*)(std::to_string(configMaxForce)).c_str(), ".\\FFBPlugin.ini");
if (AlternativeFFB == 1)
{
WritePrivateProfileStringA("Settings", CustomAlternativeMaxForceLeft, (char*)(std::to_string(configAlternativeMaxForceLeft)).c_str(), ".\\FFBPlugin.ini");
WritePrivateProfileStringA("Settings", CustomAlternativeMaxForceRight, (char*)(std::to_string(configAlternativeMaxForceRight)).c_str(), ".\\FFBPlugin.ini");
}
else
{
WritePrivateProfileStringA("Settings", CustomMaxForce, (char*)(std::to_string(configMaxForce)).c_str(), ".\\FFBPlugin.ini");
}
}
}

View File

@ -22,6 +22,14 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>.
#include "../Common Files/CRCCheck.h"
#include "../Common Files/SignatureScanning.h"
//Demul Emulator Games
std::string Nascar("Nascar");
std::string InitialDArcadeStage("Initial D Arcade Stage");
std::string SmashingDrive("Smashing Drive");
std::string MaximumSpeed("Maximum Speed");
std::string FasterThanSpeed("Faster Than Speed");
std::string ATVTrack("ATV Track");
extern void NascarInputsEnabled(Helpers* helpers);
extern void InitialDInputsEnabled(Helpers* helpers);
extern void SmashingDriveInputsEnabled(Helpers* helpers);
@ -164,6 +172,8 @@ static INT_PTR FFBAddress;
static int ffnascar = 0;
static int fffaster = 0;
char* romnameDemul;
int nascar(int ffnas) {
switch (ffnas) {
@ -686,6 +696,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
NascarRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", Nascar);
}
if (!EnumWindows(FindWindowBySubstr, (LPARAM)substring2))
@ -703,6 +715,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
InitialDRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", InitialDArcadeStage);
}
if (!EnumWindows(FindWindowBySubstr, (LPARAM)substring3))
@ -720,6 +734,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
SmashingDriveRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", SmashingDrive);
}
if (!EnumWindows(FindWindowBySubstr, (LPARAM)substring4))
@ -737,6 +753,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
MaximumSpeedRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", MaximumSpeed);
}
if (!EnumWindows(FindWindowBySubstr, (LPARAM)substring5))
@ -754,6 +772,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
FasterThanSpeedRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", FasterThanSpeed);
}
if (!EnumWindows(FindWindowBySubstr, (LPARAM)substring6))
@ -771,6 +791,8 @@ void Demul::FFBLoop(EffectConstants* constants, Helpers* helpers, EffectTriggers
ATVTrackRunning = true;
WindowSearch = true;
sprintf(romnameDemul, "%s", ATVTrack);
}
}
}

View File

@ -17,6 +17,28 @@ along with FFB Arcade Plugin.If not, see < https://www.gnu.org/licenses/>.
#include "math.h"
#include "SDL.h"
//M2 Emulator Games
std::string SegaRallyChampionship("Sega Rally Championship");
std::string SegaRallyChampionshipRevB("Sega Rally Championship (Rev B)");
std::string SegaRallyProDrivin("Sega Rally Pro Drivin'");
std::string DaytonaUSA("Daytona USA");
std::string DaytonaUSA93Edition("Daytona USA '93 Edition");
std::string DaytonaUSASaturnAds("Daytona USA (Saturn Ads)");
std::string DaytonaUSASpecialEdition("Daytona USA Special Edition");
std::string DaytonaUSATurbo("Daytona USA Turbo");
std::string DaytonaUSATurboRevA("Daytona USA Turbo (Rev A)");
std::string DaytonaUSAGTX2004("Daytona USA: GTX 2004");
std::string DaytonaUSAToTheMaxx("Daytona USA: To The Maxx");
std::string Indianapolis500RevADeluxe("Indianapolis 500 (Rev A, Deluxe)");
std::string Indianapolis500RevATwinNewerrev("Indianapolis 500 (Rev A, Twin, Newer rev)");
std::string Indianapolis500RevATwinOlderrev("Indianapolis 500 (Rev A, Twin, Older rev)");
std::string OverRev("Over Rev");
std::string OverRevModel2B("Over Rev (Model 2B)");
std::string SuperGT24h("Super GT 24h");
std::string SegaTouringCarChampionship("Sega Touring Car Championship");
std::string SegaTouringCarChampionshipRevA("Sega Touring Car Championship (Rev A)");
std::string SegaTouringCarChampionshipRevB("Sega Touring Car Championship (Rev B)");
//Config Settings
extern wchar_t* settingsFilename;
extern int DeviceGUID;
@ -140,28 +162,114 @@ static bool Hook(void * toHook, void * ourFunct, int len) {
static DWORD jmpBackAddy;
char* romnameM2;
void M2Emulator::FFBLoop(EffectConstants * constants, Helpers * helpers, EffectTriggers * triggers) {
HWND hWnd1 = FindWindowA(0, ("Sega Rally Championship"));
HWND hWnd2 = FindWindowA(0, ("Daytona USA"));
HWND hWnd3 = FindWindowA(0, ("Indianapolis 500 (Rev A, Deluxe)"));
HWND hWnd4 = FindWindowA(0, ("Sega Touring Car Championship (Rev A)"));
HWND hWnd5 = FindWindowA(0, ("Over Rev"));
HWND hWnd6 = FindWindowA(0, ("Super GT 24h"));
HWND hWnd7 = FindWindowA(0, ("Daytona USA '93 Edition"));
HWND hWnd8 = FindWindowA(0, ("Daytona USA (Saturn Ads)"));
HWND hWnd9 = FindWindowA(0, ("Daytona USA Special Edition"));
HWND hWnd10 = FindWindowA(0, ("Daytona USA Turbo"));
HWND hWnd11 = FindWindowA(0, ("Daytona USA Turbo (Rev A)"));
HWND hWnd12 = FindWindowA(0, ("Daytona USA: GTX 2004"));
HWND hWnd13 = FindWindowA(0, ("Daytona USA: To The Maxx"));
HWND hWnd14 = FindWindowA(0, ("Sega Rally Championship (Rev B)"));
HWND hWnd15 = FindWindowA(0, ("Sega Rally Pro Drivin'"));
HWND hWnd16 = FindWindowA(0, ("Indianapolis 500 (Rev A, Twin, Newer rev)"));
HWND hWnd17 = FindWindowA(0, ("Indianapolis 500 (Rev A, Twin, Older rev)"));
HWND hWnd18 = FindWindowA(0, ("Sega Touring Car Championship"));
HWND hWnd19 = FindWindowA(0, ("Sega Touring Car Championship (Rev B)"));
HWND hWnd20 = FindWindowA(0, ("Over Rev (Model 2B)"));
HWND hWnd1 = FindWindowA(0, SegaRallyChampionship.c_str());
HWND hWnd2 = FindWindowA(0, DaytonaUSA.c_str());
HWND hWnd3 = FindWindowA(0, Indianapolis500RevADeluxe.c_str());
HWND hWnd4 = FindWindowA(0, SegaTouringCarChampionshipRevA.c_str());
HWND hWnd5 = FindWindowA(0, OverRev.c_str());
HWND hWnd6 = FindWindowA(0, SuperGT24h.c_str());
HWND hWnd7 = FindWindowA(0, DaytonaUSA93Edition.c_str());
HWND hWnd8 = FindWindowA(0, DaytonaUSASaturnAds.c_str());
HWND hWnd9 = FindWindowA(0, DaytonaUSASpecialEdition.c_str());
HWND hWnd10 = FindWindowA(0, DaytonaUSATurbo.c_str());
HWND hWnd11 = FindWindowA(0, DaytonaUSATurboRevA.c_str());
HWND hWnd12 = FindWindowA(0, DaytonaUSAGTX2004.c_str());
HWND hWnd13 = FindWindowA(0, DaytonaUSAToTheMaxx.c_str());
HWND hWnd14 = FindWindowA(0, SegaRallyChampionshipRevB.c_str());
HWND hWnd15 = FindWindowA(0, SegaRallyProDrivin.c_str());
HWND hWnd16 = FindWindowA(0, Indianapolis500RevATwinNewerrev.c_str());
HWND hWnd17 = FindWindowA(0, Indianapolis500RevATwinOlderrev.c_str());
HWND hWnd18 = FindWindowA(0, SegaTouringCarChampionship.c_str());
HWND hWnd19 = FindWindowA(0, SegaTouringCarChampionshipRevB.c_str());
HWND hWnd20 = FindWindowA(0, OverRevModel2B.c_str());
romnameM2 = new char[256];
// TODO: would be better to dump all the game names in an array and loop instead with a single hWnd
if (hWnd1 > NULL)
{
sprintf(romnameM2, "%s", SegaRallyChampionship);
}
else if(hWnd2 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSA);
}
else if (hWnd3 > NULL)
{
sprintf(romnameM2, "%s", Indianapolis500RevADeluxe);
}
else if (hWnd4 > NULL)
{
sprintf(romnameM2, "%s", SegaTouringCarChampionshipRevA);
}
else if (hWnd5 > NULL)
{
sprintf(romnameM2, "%s", OverRev);
}
else if (hWnd6 > NULL)
{
sprintf(romnameM2, "%s", SuperGT24h);
}
else if (hWnd7 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSA93Edition);
}
else if (hWnd8 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSASaturnAds);
}
else if (hWnd9 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSASpecialEdition);
}
else if (hWnd10 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSATurbo);
}
else if (hWnd11 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSATurboRevA);
}
else if (hWnd12 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSAGTX2004);
}
else if (hWnd13 > NULL)
{
sprintf(romnameM2, "%s", DaytonaUSAToTheMaxx);
}
else if (hWnd14 > NULL)
{
sprintf(romnameM2, "%s", SegaRallyChampionshipRevB);
}
else if (hWnd15 > NULL)
{
sprintf(romnameM2, "%s", SegaRallyProDrivin);
}
else if (hWnd16 > NULL)
{
sprintf(romnameM2, "%s", Indianapolis500RevATwinNewerrev);
}
else if (hWnd17 > NULL)
{
sprintf(romnameM2, "%s", Indianapolis500RevATwinOlderrev);
}
else if (hWnd18 > NULL)
{
sprintf(romnameM2, "%s", SegaTouringCarChampionship);
}
else if (hWnd19 > NULL)
{
sprintf(romnameM2, "%s", SegaTouringCarChampionshipRevB);
}
else if (hWnd20 > NULL)
{
sprintf(romnameM2, "%s", OverRevModel2B);
}
if (EnableForceSpringEffect == 1)
{