1
0
mirror of synced 2025-01-19 07:47:25 +01:00

Added Super Chase Criminal Termination to MAME

This commit is contained in:
Aaron M 2020-05-26 14:52:46 +12:00
parent 30939c6989
commit 0129d59241
2 changed files with 92 additions and 3 deletions

View File

@ -1158,6 +1158,16 @@ AlternativeMinForceRightSuperGT=0
AlternativeMaxForceRightSuperGT=100
EnableForceSpringEffectSuperGT=0
ForceSpringStrengthSuperGT=80
PowerModeSuperChase=0
FeedbackLengthSuperChase=500
MinForceSuperChase=0
MaxForceSuperChase=40
AlternativeMinForceLeftSuperChase=0
AlternativeMaxForceLeftSuperChase=-40
AlternativeMinForceRightSuperChase=0
AlternativeMaxForceRightSuperChase=40
EnableForceSpringEffectSuperChase=0
ForceSpringStrengthSuperChase=80
[MAME 64bit Outputs]
GameId=22
@ -1568,6 +1578,16 @@ AlternativeMinForceRightSuperGT=0
AlternativeMaxForceRightSuperGT=100
EnableForceSpringEffectSuperGT=0
ForceSpringStrengthSuperGT=80
PowerModeSuperChase=0
FeedbackLengthSuperChase=500
MinForceSuperChase=0
MaxForceSuperChase=40
AlternativeMinForceLeftSuperChase=0
AlternativeMaxForceLeftSuperChase=-40
AlternativeMinForceRightSuperChase=0
AlternativeMaxForceRightSuperChase=40
EnableForceSpringEffectSuperChase=0
ForceSpringStrengthSuperChase=80
; ***********************************************************************************************************************************
; ************************************************* Test cases are established below ************************************************

View File

@ -566,6 +566,17 @@ static int configFeedbackLengthSuperGTMAME = GetPrivateProfileInt(TEXT("Settings
static int EnableForceSpringEffectSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("EnableForceSpringEffectSuperGT"), 0, settingsFilename);
static int ForceSpringStrengthSuperGTMAME = GetPrivateProfileInt(TEXT("Settings"), TEXT("ForceSpringStrengthSuperGT"), 0, settingsFilename);
static int configMinForceSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("MinForceSuperChase"), 0, settingsFilename);
static int configMaxForceSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("MaxForceSuperChase"), 100, settingsFilename);
static int configAlternativeMinForceLeftSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceLeftSuperChase"), 0, settingsFilename);
static int configAlternativeMaxForceLeftSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceLeftSuperChase"), 100, settingsFilename);
static int configAlternativeMinForceRightSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMinForceRightSuperChase"), 0, settingsFilename);
static int configAlternativeMaxForceRightSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("AlternativeMaxForceRightSuperChase"), 100, settingsFilename);
static int PowerModeSuperChase = GetPrivateProfileInt(TEXT("Settings"), TEXT("PowerModeSuperChase"), 0, settingsFilename);
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);
static bool init = false;
static bool initSpring = false;
static bool EmuName = false;
@ -1334,6 +1345,7 @@ std::string srallycdx("srallycdx");
std::string spacegun("spacegun");
std::string spacegunu("spacegunu");
std::string spacegunj("spacegunj");
std::string superchs("superchs");
std::string stcc("stcc");
std::string stcca("stcca");
std::string stccb("stccb");
@ -1377,6 +1389,7 @@ std::string RaveRacerActive("RaveRacerActive");
std::string AfterburnerActive("AfterburnerActive");
std::string OutrunActive("OutrunActive");
std::string PDriftActive("PDriftActive");
std::string SuperChaseActive("SuperChaseActive");
//Names of FFB Outputs
std::string RawDrive("RawDrive");
@ -1663,10 +1676,8 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
RunningFFB = "RacingFullValueActive2";
}
if (romname == crusnwld || romname == crusnwld24 || romname == crusnwld23 || romname == crusnwld20 || romname == crusnwld19 || romname == crusnwld17 || romname == crusnwld13)
if (romname == crusnwld || romname == crusnwld24 || romname == crusnwld23 || romname == crusnwld20 || romname == crusnwld19 || romname == crusnwld17)
{
configMinForce = configMinForceCrusnWld;
configMaxForce = configMaxForceCrusnWld;
configAlternativeMinForceLeft = configAlternativeMinForceLeftCrusnWld;
@ -1681,6 +1692,22 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
RunningFFB = "RacingFullValueActive2";
}
if (romname == superchs)
{
configMinForce = configMinForceSuperChase;
configMaxForce = configMaxForceSuperChase;
configAlternativeMinForceLeft = configAlternativeMinForceLeftSuperChase;
configAlternativeMaxForceLeft = configAlternativeMaxForceLeftSuperChase;
configAlternativeMinForceRight = configAlternativeMinForceRightSuperChase;
configAlternativeMaxForceRight = configAlternativeMaxForceRightSuperChase;
configFeedbackLength = configFeedbackLengthSuperChase;
PowerMode = PowerModeSuperChase;
EnableForceSpringEffect = EnableForceSpringEffectSuperChase;
ForceSpringStrength = ForceSpringStrengthSuperChase;
RunningFFB = "SuperChaseActive";
}
if (romname == offroadc || romname == offroadc4 || romname == offroadc3 || romname == offroadc1)
{
configMinForce = configMinForceOffRoadC;
@ -3310,6 +3337,48 @@ void MAMESupermodel::FFBLoop(EffectConstants* constants, Helpers* helpers, Effec
}
}
if (RunningFFB == SuperChaseActive)
{
if (Emulator == MAME)
{
if (!PatternFind)
{
aAddy2 = PatternScan("\xD2\x00\xFF\xFF\x00\x01\xE4", "xxxxxxx");
UINT8 CheckAddy2 = helpers->ReadByte((int)aAddy2 + 0x32, false);
if (CheckAddy2 == 0x04)
{
FFBAddress = (int)aAddy2 + 0x32;
PatternFind = true;
}
}
else
{
ff = helpers->ReadByte(FFBAddress, false);
helpers->log("got value: ");
std::string ffs = std::to_string(ff);
helpers->log((char*)ffs.c_str());
if (ff & 0x01)
{
double percentForce = 1.0;
double percentLength = 100;
triggers->Rumble(percentForce, 0, percentLength);
triggers->Constant(constants->DIRECTION_FROM_LEFT, percentForce);
}
if (ff & 0x02)
{
double percentForce = 1.0;
double percentLength = 100;
triggers->Rumble(0, percentForce, percentLength);
triggers->Constant(constants->DIRECTION_FROM_RIGHT, percentForce);
}
}
}
}
if (RunningFFB == HardDrivinActive) //Hard Drivin
{
if (Emulator == MAME)