[TLAC] Fake coin emulation

This commit is contained in:
nastys
2020-08-05 22:01:01 +02:00
parent 47388e9a95
commit b03aadbd3e
3 changed files with 26 additions and 1 deletions
+2
View File
@@ -43,6 +43,8 @@ MENU_L = Left, Up, Ds4_L1, XINPUT_LS, Ds4_DPad_Left, Ds4_DPad_Up, XINPUT_LEFT, X
MENU_R = Right, Down, Ds4_R1, XINPUT_RS, Ds4_DPad_Right, Ds4_DPad_Down, XINPUT_RIGHT, XINPUT_DOWN, E, O, Ds4_L_Stick_Right, XINPUT_LRIGHT, Ds4_L_Stick_Down, XINPUT_LDOWN, Ds4_R_Stick_Right, XINPUT_RRIGHT, Ds4_R_Stick_Down, XINPUT_RDOWN
MENU_CIRCLE = Spacebar
COIN = F10
# Touch Slider:
LEFT_SIDE_SLIDE_LEFT = Q, Ds4_L_Stick_Left, XINPUT_LLEFT
LEFT_SIDE_SLIDE_RIGHT = E, Ds4_L_Stick_Right, XINPUT_LRIGHT
@@ -80,6 +80,8 @@ namespace TLAC::Components
MenuCircleBinding = new Binding();
CoinBinding = new Binding();
FileSystem::ConfigFile configFile(framework::GetModuleDirectory(), KEY_CONFIG_FILE_NAME);
configFile.OpenRead();
@@ -97,6 +99,7 @@ namespace TLAC::Components
Config::BindConfigKeys(configFile.ConfigMap, "MENU_L", *MenuLBinding, { "Left", "Up" });
Config::BindConfigKeys(configFile.ConfigMap, "MENU_R", *MenuRBinding, { "Down", "Right" });
Config::BindConfigKeys(configFile.ConfigMap, "MENU_CIRCLE", *MenuCircleBinding, { "D", "L", "Spacebar" });
Config::BindConfigKeys(configFile.ConfigMap, "COIN", *CoinBinding, { "F10" });
mouseScrollPvSelection = configFile.GetBooleanValue("mouse_scroll_pv_selection");
}
@@ -295,6 +298,9 @@ namespace TLAC::Components
if (buttonTestFunc(RightBinding))
buttons |= JVS_R;
if (buttonTestFunc(CoinBinding))
addCoin();
return buttons;
}
@@ -398,7 +404,7 @@ namespace TLAC::Components
void InputEmulator::SetMetaButtons()
{
// bit 0x6e is used to skip a bunch of screens
if ((inputState->Down.Buttons & (JVS_L | JVS_R)) == 0) // ask sega okay? idk why this is needed
if ((inputState->Down.Buttons & (JVS_L | JVS_R)) == 0) // ask sega, okay? idk why this is needed
{
if ((inputState->Tapped.Buttons & (JVS_START | JVS_TRIANGLE | JVS_SQUARE | JVS_CROSS | JVS_CIRCLE)) != 0)
inputState->SetBit(0x6e, true, InputBufferType_Tapped);
@@ -416,4 +422,17 @@ namespace TLAC::Components
inputState->SetBit(0x6e, false, InputBufferType_Released);
}
}
void InputEmulator::addCoin()
{
printf("[TLAC] Adding coin\n");
unsigned char* credits = (unsigned char*)0x14CD93788;
if (*credits < 9)
{
*(unsigned char*)0x14CD93A9C = 1;
(*credits)++;
(*(unsigned char*)0x14CD93A98)++;
if ((*(unsigned char*)0x14CD93A98) == 0) (*(unsigned char*)0x14CD93A98)++;
}
}
}
@@ -38,6 +38,8 @@ namespace TLAC::Components
Input::Binding* MenuRBinding;
Input::Binding* MenuCircleBinding;
Input::Binding* CoinBinding;
InputEmulator();
~InputEmulator();
@@ -106,5 +108,7 @@ namespace TLAC::Components
void UpdateInputBit(uint32_t bit, uint8_t keycode);
void UpdateSliderLR();
void SetMetaButtons();
void addCoin();
};
}