mirror of https://github.com/PCSX2/pcsx2.git
LilyPad: Replace Turbo hack
The "L3 Toggles Turbo" hack has been removed and been replaced by a bindable Turbo button on the Pad tabs. The Turbo function in the input configuration has been renamed Rapid Fire.
This commit is contained in:
parent
6e54dfe5ba
commit
6074d60a90
|
@ -112,7 +112,6 @@ const GeneralSettingsBool BoolOptionsInfo[] = {
|
||||||
|
|
||||||
{L"Save State in Title", IDC_SAVE_STATE_TITLE, 0}, // Not required for PCSX2
|
{L"Save State in Title", IDC_SAVE_STATE_TITLE, 0}, // Not required for PCSX2
|
||||||
{L"GH2", IDC_GH2_HACK, 0},
|
{L"GH2", IDC_GH2_HACK, 0},
|
||||||
{L"Turbo Key Hack", IDC_TURBO_KEY_HACK, 0},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void Populate(int port, int slot, int padtype);
|
void Populate(int port, int slot, int padtype);
|
||||||
|
@ -287,7 +286,7 @@ wchar_t *GetCommandStringW(u8 command, int port, int slot)
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
/* Get text from the buttons. */
|
/* Get text from the buttons. */
|
||||||
if (command >= 0x0C && command <= 0x29) {
|
if (command >= 0x0C && command <= 0x2A) {
|
||||||
HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], 0x10F0 + command);
|
HWND hWnd = GetDlgItem(hWnds[port][slot][padtype], 0x10F0 + command);
|
||||||
if (!hWnd) {
|
if (!hWnd) {
|
||||||
wchar_t *strings[] = {
|
wchar_t *strings[] = {
|
||||||
|
@ -321,6 +320,7 @@ wchar_t *GetCommandStringW(u8 command, int port, int slot)
|
||||||
L"R-Stick Left",
|
L"R-Stick Left",
|
||||||
L"Analog",
|
L"Analog",
|
||||||
L"Excluded Input",
|
L"Excluded Input",
|
||||||
|
L"Turbo",
|
||||||
};
|
};
|
||||||
return strings[command - 0xC];
|
return strings[command - 0xC];
|
||||||
}
|
}
|
||||||
|
@ -365,7 +365,7 @@ void CALLBACK PADsetSettingsDir(const char *dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetBinding(int port, int slot, int index, Device *&dev, Binding *&b, ForceFeedbackBinding *&ffb);
|
int GetBinding(int port, int slot, int index, Device *&dev, Binding *&b, ForceFeedbackBinding *&ffb);
|
||||||
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int turbo, int deadZone, int skipDeadZone);
|
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int rapidFire, int deadZone, int skipDeadZone);
|
||||||
|
|
||||||
int CreateEffectBinding(Device *dev, wchar_t *effectName, unsigned int port, unsigned int slot, unsigned int padtype, unsigned int motor, ForceFeedbackBinding **binding);
|
int CreateEffectBinding(Device *dev, wchar_t *effectName, unsigned int port, unsigned int slot, unsigned int padtype, unsigned int motor, ForceFeedbackBinding **binding);
|
||||||
|
|
||||||
|
@ -380,8 +380,8 @@ void SelChanged(int port, int slot)
|
||||||
wchar_t *devName = L"N/A";
|
wchar_t *devName = L"N/A";
|
||||||
wchar_t *key = L"N/A";
|
wchar_t *key = L"N/A";
|
||||||
wchar_t *command = L"N/A";
|
wchar_t *command = L"N/A";
|
||||||
// Second value is now turbo.
|
// Second value is now rapidFire.
|
||||||
int turbo = -1;
|
int rapidFire = -1;
|
||||||
int sensitivity = 0;
|
int sensitivity = 0;
|
||||||
int deadZone = 0;
|
int deadZone = 0;
|
||||||
int skipDeadZone = 0;
|
int skipDeadZone = 0;
|
||||||
|
@ -451,7 +451,7 @@ void SelChanged(int port, int slot)
|
||||||
if (((control->uid >> 16) & 0xFF) == RELAXIS) {
|
if (((control->uid >> 16) & 0xFF) == RELAXIS) {
|
||||||
disableFlip = 1;
|
disableFlip = 1;
|
||||||
}
|
}
|
||||||
turbo += b->turbo;
|
rapidFire += b->rapidFire;
|
||||||
if (b->sensitivity < 0) {
|
if (b->sensitivity < 0) {
|
||||||
flipped++;
|
flipped++;
|
||||||
sensitivity -= b->sensitivity;
|
sensitivity -= b->sensitivity;
|
||||||
|
@ -470,14 +470,14 @@ void SelChanged(int port, int slot)
|
||||||
}
|
}
|
||||||
if ((bFound && ffbFound) || ffbFound > 1) {
|
if ((bFound && ffbFound) || ffbFound > 1) {
|
||||||
ffb = 0;
|
ffb = 0;
|
||||||
turbo = -1;
|
rapidFire = -1;
|
||||||
deadZone = 0;
|
deadZone = 0;
|
||||||
skipDeadZone = 0;
|
skipDeadZone = 0;
|
||||||
sensitivity = 0;
|
sensitivity = 0;
|
||||||
disableFlip = 1;
|
disableFlip = 1;
|
||||||
bFound = ffbFound = 0;
|
bFound = ffbFound = 0;
|
||||||
} else if (bFound) {
|
} else if (bFound) {
|
||||||
turbo++;
|
rapidFire++;
|
||||||
sensitivity /= bFound;
|
sensitivity /= bFound;
|
||||||
if (nonButtons) {
|
if (nonButtons) {
|
||||||
deadZone /= nonButtons;
|
deadZone /= nonButtons;
|
||||||
|
@ -551,13 +551,13 @@ void SelChanged(int port, int slot)
|
||||||
if (disableFlip)
|
if (disableFlip)
|
||||||
EnableWindow(GetDlgItem(hWnd, IDC_FLIP), 0);
|
EnableWindow(GetDlgItem(hWnd, IDC_FLIP), 0);
|
||||||
|
|
||||||
EnableWindow(GetDlgItem(hWnd, IDC_TURBO), turbo >= 0);
|
EnableWindow(GetDlgItem(hWnd, IDC_RAPID_FIRE), rapidFire >= 0);
|
||||||
if (turbo > 0 && turbo < bFound) {
|
if (rapidFire > 0 && rapidFire < bFound) {
|
||||||
SendMessage(GetDlgItem(hWnd, IDC_TURBO), BM_SETSTYLE, BS_AUTO3STATE, 0);
|
SendMessage(GetDlgItem(hWnd, IDC_RAPID_FIRE), BM_SETSTYLE, BS_AUTO3STATE, 0);
|
||||||
CheckDlgButton(hWnd, IDC_TURBO, BST_INDETERMINATE);
|
CheckDlgButton(hWnd, IDC_RAPID_FIRE, BST_INDETERMINATE);
|
||||||
} else {
|
} else {
|
||||||
SendMessage(GetDlgItem(hWnd, IDC_TURBO), BM_SETSTYLE, BS_AUTOCHECKBOX, 0);
|
SendMessage(GetDlgItem(hWnd, IDC_RAPID_FIRE), BM_SETSTYLE, BS_AUTOCHECKBOX, 0);
|
||||||
CheckDlgButton(hWnd, IDC_TURBO, BST_CHECKED * (bFound && turbo == bFound));
|
CheckDlgButton(hWnd, IDC_RAPID_FIRE, BST_CHECKED * (bFound && rapidFire == bFound));
|
||||||
}
|
}
|
||||||
HWND hWndCombo = GetDlgItem(hWnd, IDC_AXIS_DIRECTION);
|
HWND hWndCombo = GetDlgItem(hWnd, IDC_AXIS_DIRECTION);
|
||||||
int enableCombo = 0;
|
int enableCombo = 0;
|
||||||
|
@ -712,7 +712,7 @@ int ListBoundEffect(int port, int slot, Device *dev, ForceFeedbackBinding *b)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only for use with control bindings. Affects all highlighted bindings.
|
// Only for use with control bindings. Affects all highlighted bindings.
|
||||||
void ChangeValue(int port, int slot, int *newSensitivity, int *newTurbo, int *newDeadZone, int *newSkipDeadZone)
|
void ChangeValue(int port, int slot, int *newSensitivity, int *newRapidFire, int *newDeadZone, int *newSkipDeadZone)
|
||||||
{
|
{
|
||||||
int padtype = config.padConfigs[port][slot].type;
|
int padtype = config.padConfigs[port][slot].type;
|
||||||
if (!hWnds[port][slot][padtype])
|
if (!hWnds[port][slot][padtype])
|
||||||
|
@ -748,8 +748,8 @@ void ChangeValue(int port, int slot, int *newSensitivity, int *newTurbo, int *ne
|
||||||
b->skipDeadZone = *newSkipDeadZone;
|
b->skipDeadZone = *newSkipDeadZone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (newTurbo) {
|
if (newRapidFire) {
|
||||||
b->turbo = *newTurbo;
|
b->rapidFire = *newRapidFire;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PropSheet_Changed(hWndProp, hWnds[port][slot][padtype]);
|
PropSheet_Changed(hWndProp, hWnds[port][slot][padtype]);
|
||||||
|
@ -912,7 +912,7 @@ int SaveSettings(wchar_t *file = 0)
|
||||||
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
||||||
VirtualControl *c = &dev->virtualControls[b->controlIndex];
|
VirtualControl *c = &dev->virtualControls[b->controlIndex];
|
||||||
wsprintfW(temp, L"Binding %i", bindingCount++);
|
wsprintfW(temp, L"Binding %i", bindingCount++);
|
||||||
wsprintfW(temp2, L"0x%08X, %i, %i, %i, %i, %i, %i, %i, %i", c->uid, port, b->command, b->sensitivity, b->turbo, slot, b->deadZone, b->skipDeadZone, padtype);
|
wsprintfW(temp2, L"0x%08X, %i, %i, %i, %i, %i, %i, %i, %i", c->uid, port, b->command, b->sensitivity, b->rapidFire, slot, b->deadZone, b->skipDeadZone, padtype);
|
||||||
noError &= WritePrivateProfileStringW(id, temp, temp2, file);
|
noError &= WritePrivateProfileStringW(id, temp, temp2, file);
|
||||||
}
|
}
|
||||||
for (int j = 0; j < dev->pads[port][slot][padtype].numFFBindings; j++) {
|
for (int j = 0; j < dev->pads[port][slot][padtype].numFFBindings; j++) {
|
||||||
|
@ -1039,7 +1039,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
}
|
}
|
||||||
last = 1;
|
last = 1;
|
||||||
unsigned int uid;
|
unsigned int uid;
|
||||||
int port, command, sensitivity, turbo, slot = 0, deadZone = 0, skipDeadZone = 0, padtype = 0;
|
int port, command, sensitivity, rapidFire, slot = 0, deadZone = 0, skipDeadZone = 0, padtype = 0;
|
||||||
int w = 0;
|
int w = 0;
|
||||||
char string[1000];
|
char string[1000];
|
||||||
while (temp2[w]) {
|
while (temp2[w]) {
|
||||||
|
@ -1047,7 +1047,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
w++;
|
w++;
|
||||||
}
|
}
|
||||||
string[w] = 0;
|
string[w] = 0;
|
||||||
int len = sscanf(string, " %i , %i , %i , %i , %i , %i , %i , %i , %i", &uid, &port, &command, &sensitivity, &turbo, &slot, &deadZone, &skipDeadZone, &padtype);
|
int len = sscanf(string, " %i , %i , %i , %i , %i , %i , %i , %i , %i", &uid, &port, &command, &sensitivity, &rapidFire, &slot, &deadZone, &skipDeadZone, &padtype);
|
||||||
if (len >= 5 && type) {
|
if (len >= 5 && type) {
|
||||||
VirtualControl *c = dev->GetVirtualControl(uid);
|
VirtualControl *c = dev->GetVirtualControl(uid);
|
||||||
if (!c)
|
if (!c)
|
||||||
|
@ -1064,7 +1064,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
padtype = skipDeadZone;
|
padtype = skipDeadZone;
|
||||||
skipDeadZone = 0;
|
skipDeadZone = 0;
|
||||||
}
|
}
|
||||||
BindCommand(dev, uid, port, slot, padtype, command, sensitivity, turbo, deadZone, skipDeadZone);
|
BindCommand(dev, uid, port, slot, padtype, command, sensitivity, rapidFire, deadZone, skipDeadZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1376,7 +1376,7 @@ int CreateEffectBinding(Device *dev, wchar_t *effectID, unsigned int port, unsig
|
||||||
return ListBoundEffect(port, slot, dev, b);
|
return ListBoundEffect(port, slot, dev, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int turbo, int deadZone, int skipDeadZone)
|
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int rapidFire, int deadZone, int skipDeadZone)
|
||||||
{
|
{
|
||||||
// Checks needed because I use this directly when loading bindings.
|
// Checks needed because I use this directly when loading bindings.
|
||||||
if (port > 1 || slot > 3 || padtype >= numPadTypes)
|
if (port > 1 || slot > 3 || padtype >= numPadTypes)
|
||||||
|
@ -1418,7 +1418,7 @@ int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int s
|
||||||
p->numBindings++;
|
p->numBindings++;
|
||||||
b->command = command;
|
b->command = command;
|
||||||
b->controlIndex = controlIndex;
|
b->controlIndex = controlIndex;
|
||||||
b->turbo = turbo;
|
b->rapidFire = rapidFire;
|
||||||
b->sensitivity = sensitivity;
|
b->sensitivity = sensitivity;
|
||||||
b->deadZone = deadZone;
|
b->deadZone = deadZone;
|
||||||
b->skipDeadZone = skipDeadZone;
|
b->skipDeadZone = skipDeadZone;
|
||||||
|
@ -1547,7 +1547,8 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
|
||||||
AddTooltip(ID_LOCK_ALL_INPUT, hWnd);
|
AddTooltip(ID_LOCK_ALL_INPUT, hWnd);
|
||||||
AddTooltip(ID_LOCK_DIRECTION, hWnd);
|
AddTooltip(ID_LOCK_DIRECTION, hWnd);
|
||||||
AddTooltip(ID_LOCK_BUTTONS, hWnd);
|
AddTooltip(ID_LOCK_BUTTONS, hWnd);
|
||||||
AddTooltip(IDC_TURBO, hWnd);
|
AddTooltip(ID_TURBO_KEY, hWnd);
|
||||||
|
AddTooltip(IDC_RAPID_FIRE, hWnd);
|
||||||
AddTooltip(IDC_FLIP, hWnd);
|
AddTooltip(IDC_FLIP, hWnd);
|
||||||
AddTooltip(IDC_SLIDER_DEADZONE, hWnd);
|
AddTooltip(IDC_SLIDER_DEADZONE, hWnd);
|
||||||
AddTooltip(IDC_SLIDER_SKIP_DEADZONE, hWnd);
|
AddTooltip(IDC_SLIDER_SKIP_DEADZONE, hWnd);
|
||||||
|
@ -1740,7 +1741,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
|
||||||
uid = (uid & 0x00FFFFFF) | axisUIDs[cbsel];
|
uid = (uid & 0x00FFFFFF) | axisUIDs[cbsel];
|
||||||
Binding backup = *b;
|
Binding backup = *b;
|
||||||
DeleteSelected(port, slot);
|
DeleteSelected(port, slot);
|
||||||
int index = BindCommand(dev, uid, port, slot, padtype, backup.command, backup.sensitivity, backup.turbo, backup.deadZone, backup.skipDeadZone);
|
int index = BindCommand(dev, uid, port, slot, padtype, backup.command, backup.sensitivity, backup.rapidFire, backup.deadZone, backup.skipDeadZone);
|
||||||
ListView_SetItemState(hWndList, index, LVIS_SELECTED, LVIS_SELECTED);
|
ListView_SetItemState(hWndList, index, LVIS_SELECTED, LVIS_SELECTED);
|
||||||
PropSheet_Changed(hWndProp, hWnd);
|
PropSheet_Changed(hWndProp, hWnd);
|
||||||
}
|
}
|
||||||
|
@ -1851,7 +1852,7 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
|
||||||
SetTimer(hWnd, 1, 3000, 0);
|
SetTimer(hWnd, 1, 3000, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (cmd >= ID_LOCK_BUTTONS && cmd <= ID_EXCLUDE) { // || cmd == ID_FORCE_FEEDBACK) {
|
} else if (cmd >= ID_LOCK_BUTTONS && cmd <= ID_TURBO_KEY) { // || cmd == ID_FORCE_FEEDBACK) {
|
||||||
// Messes up things, unfortunately.
|
// Messes up things, unfortunately.
|
||||||
// End binding on a bunch of notification messages, and
|
// End binding on a bunch of notification messages, and
|
||||||
// this will send a bunch.
|
// this will send a bunch.
|
||||||
|
@ -1873,11 +1874,11 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, unsigned int msg, WPARAM wParam, LPARAM l
|
||||||
} else if (cmd == IDC_CONFIGURE_ON_BIND) {
|
} else if (cmd == IDC_CONFIGURE_ON_BIND) {
|
||||||
config.configureOnBind = IsDlgButtonChecked(hWnd, IDC_CONFIGURE_ON_BIND);
|
config.configureOnBind = IsDlgButtonChecked(hWnd, IDC_CONFIGURE_ON_BIND);
|
||||||
}
|
}
|
||||||
if (cmd == IDC_TURBO) {
|
if (cmd == IDC_RAPID_FIRE) {
|
||||||
// Don't allow setting it back to indeterminate.
|
// Don't allow setting it back to indeterminate.
|
||||||
SendMessage(GetDlgItem(hWnd, IDC_TURBO), BM_SETSTYLE, BS_AUTOCHECKBOX, 0);
|
SendMessage(GetDlgItem(hWnd, IDC_RAPID_FIRE), BM_SETSTYLE, BS_AUTOCHECKBOX, 0);
|
||||||
int turbo = (IsDlgButtonChecked(hWnd, IDC_TURBO) == BST_CHECKED);
|
int rapidFire = (IsDlgButtonChecked(hWnd, IDC_RAPID_FIRE) == BST_CHECKED);
|
||||||
ChangeValue(port, slot, 0, &turbo, 0, 0);
|
ChangeValue(port, slot, 0, &rapidFire, 0, 0);
|
||||||
} else if (cmd == IDC_FLIP) {
|
} else if (cmd == IDC_FLIP) {
|
||||||
int val = GetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY);
|
int val = GetLogSliderVal(hWnd, IDC_SLIDER_SENSITIVITY);
|
||||||
ChangeValue(port, slot, &val, 0, 0, 0);
|
ChangeValue(port, slot, &val, 0, 0, 0);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* LilyPad - Pad plugin for PS2 Emulator
|
/* LilyPad - Pad plugin for PS2 Emulator
|
||||||
* Copyright (C) 2002-2014 PCSX2 Dev Team/ChickenLiver
|
* Copyright (C) 2002-2017 PCSX2 Dev Team/ChickenLiver
|
||||||
*
|
*
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
@ -68,7 +68,6 @@ public:
|
||||||
|
|
||||||
u8 saveStateTitle;
|
u8 saveStateTitle;
|
||||||
u8 GH2;
|
u8 GH2;
|
||||||
u8 turboKeyHack;
|
|
||||||
};
|
};
|
||||||
u8 bools[15];
|
u8 bools[15];
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,6 @@ Disable Screen Saver=0
|
||||||
Logging=0
|
Logging=0
|
||||||
Save State in Title=0
|
Save State in Title=0
|
||||||
GH2=0
|
GH2=0
|
||||||
Turbo Key Hack=0
|
|
||||||
Close Hack=0
|
Close Hack=0
|
||||||
Keyboard Mode=2
|
Keyboard Mode=2
|
||||||
Mouse Mode=0
|
Mouse Mode=0
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* LilyPad - Pad plugin for PS2 Emulator
|
/* LilyPad - Pad plugin for PS2 Emulator
|
||||||
* Copyright (C) 2002-2014 PCSX2 Dev Team/ChickenLiver
|
* Copyright (C) 2002-2017 PCSX2 Dev Team/ChickenLiver
|
||||||
*
|
*
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
@ -82,7 +82,7 @@ struct Binding
|
||||||
int sensitivity;
|
int sensitivity;
|
||||||
int deadZone;
|
int deadZone;
|
||||||
int skipDeadZone;
|
int skipDeadZone;
|
||||||
unsigned char turbo;
|
unsigned char rapidFire;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define UID_AXIS (1U << 31)
|
#define UID_AXIS (1U << 31)
|
||||||
|
|
|
@ -392,16 +392,13 @@ void ProcessButtonBinding(Binding *b, ButtonSum *sum, int value)
|
||||||
value = std::min((int)(((__int64)value * (FULLY_DOWN - (__int64)b->skipDeadZone)) / FULLY_DOWN) + b->skipDeadZone, FULLY_DOWN);
|
value = std::min((int)(((__int64)value * (FULLY_DOWN - (__int64)b->skipDeadZone)) / FULLY_DOWN) + b->skipDeadZone, FULLY_DOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.turboKeyHack == 1) { // send a tabulator keypress to emulator
|
if (b->command == 0x2A) { // Turbo key
|
||||||
//printf("%x\n", b->command);
|
static unsigned int LastCheck = 0;
|
||||||
if (b->command == 0x11) { // L3 button
|
unsigned int t = timeGetTime();
|
||||||
static unsigned int LastCheck = 0;
|
if (t - LastCheck < 300)
|
||||||
unsigned int t = timeGetTime();
|
return;
|
||||||
if (t - LastCheck < 300)
|
QueueKeyEvent(VK_TAB, KEYPRESS);
|
||||||
return;
|
LastCheck = t;
|
||||||
QueueKeyEvent(VK_TAB, KEYPRESS);
|
|
||||||
LastCheck = t;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int sensitivity = b->sensitivity;
|
int sensitivity = b->sensitivity;
|
||||||
|
@ -530,8 +527,8 @@ void Update(unsigned int port, unsigned int slot)
|
||||||
0, 0, hWndTop, &hWndGSProc};
|
0, 0, hWndTop, &hWndGSProc};
|
||||||
#endif
|
#endif
|
||||||
dm->Update(&info);
|
dm->Update(&info);
|
||||||
static int turbo = 0;
|
static int rapidFire = 0;
|
||||||
turbo++;
|
rapidFire++;
|
||||||
for (i = 0; i < dm->numDevices; i++) {
|
for (i = 0; i < dm->numDevices; i++) {
|
||||||
Device *dev = dm->devices[i];
|
Device *dev = dm->devices[i];
|
||||||
// Skip both disabled devices and inactive enabled devices.
|
// Skip both disabled devices and inactive enabled devices.
|
||||||
|
@ -547,7 +544,7 @@ void Update(unsigned int port, unsigned int slot)
|
||||||
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
||||||
int cmd = b->command;
|
int cmd = b->command;
|
||||||
int state = dev->virtualControlState[b->controlIndex];
|
int state = dev->virtualControlState[b->controlIndex];
|
||||||
if (!(turbo & b->turbo)) {
|
if (!(rapidFire & b->rapidFire)) {
|
||||||
if (cmd > 0x0F && cmd != 0x28) {
|
if (cmd > 0x0F && cmd != 0x28) {
|
||||||
ProcessButtonBinding(b, &s[port][slot], state);
|
ProcessButtonBinding(b, &s[port][slot], state);
|
||||||
} else if ((state >> 15) && !(dev->oldVirtualControlState[b->controlIndex] >> 15)) {
|
} else if ((state >> 15) && !(dev->oldVirtualControlState[b->controlIndex] >> 15)) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* LilyPad - Pad plugin for PS2 Emulator
|
/* LilyPad - Pad plugin for PS2 Emulator
|
||||||
* Copyright (C) 2002-2014 PCSX2 Dev Team/ChickenLiver
|
* Copyright (C) 2002-2017 PCSX2 Dev Team/ChickenLiver
|
||||||
*
|
*
|
||||||
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
* PCSX2 is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
@ -99,7 +99,7 @@ void DeleteBinding(int port, int slot, Device *dev, ForceFeedbackBinding *b)
|
||||||
dev->pads[port][slot][padtype].numFFBindings--;
|
dev->pads[port][slot][padtype].numFFBindings--;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int turbo, int deadZone)
|
int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int slot, unsigned int padtype, int command, int sensitivity, int rapidFire, int deadZone)
|
||||||
{
|
{
|
||||||
// Checks needed because I use this directly when loading bindings.
|
// Checks needed because I use this directly when loading bindings.
|
||||||
if (port > 1 || slot > 3 || padtype >= numPadTypes)
|
if (port > 1 || slot > 3 || padtype >= numPadTypes)
|
||||||
|
@ -136,7 +136,7 @@ int BindCommand(Device *dev, unsigned int uid, unsigned int port, unsigned int s
|
||||||
p->numBindings++;
|
p->numBindings++;
|
||||||
b->command = command;
|
b->command = command;
|
||||||
b->controlIndex = controlIndex;
|
b->controlIndex = controlIndex;
|
||||||
b->turbo = turbo;
|
b->rapidFire = rapidFire;
|
||||||
b->sensitivity = sensitivity;
|
b->sensitivity = sensitivity;
|
||||||
b->deadZone = deadZone;
|
b->deadZone = deadZone;
|
||||||
// Where it appears in listview.
|
// Where it appears in listview.
|
||||||
|
@ -214,7 +214,6 @@ const GeneralSettingsBool BoolOptionsInfo[] = {
|
||||||
|
|
||||||
{L"Save State in Title", 0 /*IDC_SAVE_STATE_TITLE*/, 0}, //No longer required, PCSX2 now handles it - avih 2011-05-17
|
{L"Save State in Title", 0 /*IDC_SAVE_STATE_TITLE*/, 0}, //No longer required, PCSX2 now handles it - avih 2011-05-17
|
||||||
{L"GH2", 0 /*IDC_GH2_HACK*/, 0},
|
{L"GH2", 0 /*IDC_GH2_HACK*/, 0},
|
||||||
{L"Turbo Key Hack", 0 /*IDC_TURBO_KEY_HACK*/, 0},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void CALLBACK PADsetSettingsDir(const char *dir)
|
void CALLBACK PADsetSettingsDir(const char *dir)
|
||||||
|
@ -277,7 +276,7 @@ int SaveSettings(wchar_t *file = 0)
|
||||||
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
Binding *b = dev->pads[port][slot][padtype].bindings + j;
|
||||||
VirtualControl *c = &dev->virtualControls[b->controlIndex];
|
VirtualControl *c = &dev->virtualControls[b->controlIndex];
|
||||||
wsprintfW(temp, L"Binding %i", bindingCount++);
|
wsprintfW(temp, L"Binding %i", bindingCount++);
|
||||||
wsprintfW(temp2, L"0x%08X, %i, %i, %i, %i, %i, %i, %i", c->uid, port, b->command, b->sensitivity, b->turbo, slot, b->deadZone, padtype);
|
wsprintfW(temp2, L"0x%08X, %i, %i, %i, %i, %i, %i, %i", c->uid, port, b->command, b->sensitivity, b->rapidFire, slot, b->deadZone, padtype);
|
||||||
cfg.WriteStr(id, temp, temp2);
|
cfg.WriteStr(id, temp, temp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -376,7 +375,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
}
|
}
|
||||||
last = 1;
|
last = 1;
|
||||||
unsigned int uid;
|
unsigned int uid;
|
||||||
int port, command, sensitivity, turbo, slot = 0, deadZone = 0, padtype = 0;
|
int port, command, sensitivity, rapidFire, slot = 0, deadZone = 0, padtype = 0;
|
||||||
int w = 0;
|
int w = 0;
|
||||||
char string[1000];
|
char string[1000];
|
||||||
while (temp2[w]) {
|
while (temp2[w]) {
|
||||||
|
@ -384,7 +383,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
w++;
|
w++;
|
||||||
}
|
}
|
||||||
string[w] = 0;
|
string[w] = 0;
|
||||||
int len = sscanf(string, " %u , %i , %i , %i , %i , %i , %i , %i", &uid, &port, &command, &sensitivity, &turbo, &slot, &deadZone, &padtype);
|
int len = sscanf(string, " %u , %i , %i , %i , %i , %i , %i , %i", &uid, &port, &command, &sensitivity, &rapidFire, &slot, &deadZone, &padtype);
|
||||||
if (len >= 5 && type) {
|
if (len >= 5 && type) {
|
||||||
VirtualControl *c = dev->GetVirtualControl(uid);
|
VirtualControl *c = dev->GetVirtualControl(uid);
|
||||||
if (!c)
|
if (!c)
|
||||||
|
@ -398,7 +397,7 @@ int LoadSettings(int force, wchar_t *file)
|
||||||
padtype = 1;
|
padtype = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BindCommand(dev, uid, port, slot, padtype, command, sensitivity, turbo, deadZone);
|
BindCommand(dev, uid, port, slot, padtype, command, sensitivity, rapidFire, deadZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,6 +88,8 @@ LPWSTR dialog_message(int ID, bool *updateText)
|
||||||
L"This option is useful when analog mode is enabled in a game that does not support it, as this causes the game to not recognise any input or to not even detect a controller.\n\n"
|
L"This option is useful when analog mode is enabled in a game that does not support it, as this causes the game to not recognise any input or to not even detect a controller.\n\n"
|
||||||
L"This option can also be used to enable analog mode in games that support, but do not automatically enable analog mode.\n\n"
|
L"This option can also be used to enable analog mode in games that support, but do not automatically enable analog mode.\n\n"
|
||||||
L"Note: Analog mode enables the analog sticks to function on a DualShock controller, while in digital mode it behaves as an original PlayStation controller.\n\n";
|
L"Note: Analog mode enables the analog sticks to function on a DualShock controller, while in digital mode it behaves as an original PlayStation controller.\n\n";
|
||||||
|
case ID_TURBO_KEY:
|
||||||
|
return L"Sets a key to send a TAB press to the emulator, which toggles Turbo mode(200% speed) in PCSX2.";
|
||||||
case ID_LOCK_ALL_INPUT:
|
case ID_LOCK_ALL_INPUT:
|
||||||
return L"Locks the current state of the pad. Any further input is handled normally, but the initial pad state is the locked state instead of a state with no buttons pressed. "
|
return L"Locks the current state of the pad. Any further input is handled normally, but the initial pad state is the locked state instead of a state with no buttons pressed. "
|
||||||
L"Pressing it again releases the old pad state, if the old pad state had any keys pressed. Otherwise, it's released automatically.";
|
L"Pressing it again releases the old pad state, if the old pad state had any keys pressed. Otherwise, it's released automatically.";
|
||||||
|
@ -97,7 +99,7 @@ LPWSTR dialog_message(int ID, bool *updateText)
|
||||||
case ID_LOCK_BUTTONS:
|
case ID_LOCK_BUTTONS:
|
||||||
return L"Locks the current state of the buttons. Pressing this when all input is locked unlocks only the buttons. "
|
return L"Locks the current state of the buttons. Pressing this when all input is locked unlocks only the buttons. "
|
||||||
L"Pressing it again will lock them again, keeping the d-pad and analog sticks locked.";
|
L"Pressing it again will lock them again, keeping the d-pad and analog sticks locked.";
|
||||||
case IDC_TURBO:
|
case IDC_RAPID_FIRE:
|
||||||
return L"Automatically presses/releases the input every other time the button is polled.";
|
return L"Automatically presses/releases the input every other time the button is polled.";
|
||||||
case IDC_FLIP:
|
case IDC_FLIP:
|
||||||
return L"Inverts a button or axis, making down up and up down.";
|
return L"Inverts a button or axis, making down up and up down.";
|
||||||
|
|
|
@ -40,7 +40,6 @@
|
||||||
#define IDC_MULTIPLE_BINDING 1122
|
#define IDC_MULTIPLE_BINDING 1122
|
||||||
#define IDC_FORCE_HIDE 1124
|
#define IDC_FORCE_HIDE 1124
|
||||||
#define IDC_GH2_HACK 1125
|
#define IDC_GH2_HACK 1125
|
||||||
#define IDC_TURBO_KEY_HACK 1128
|
|
||||||
#define IDC_SAVE_STATE_TITLE 1129
|
#define IDC_SAVE_STATE_TITLE 1129
|
||||||
#define IDC_PAD_LIST 1130
|
#define IDC_PAD_LIST 1130
|
||||||
#define IDC_COMBO1 1131
|
#define IDC_COMBO1 1131
|
||||||
|
@ -51,7 +50,7 @@
|
||||||
#define IDC_AXIS_DIRECTION 0x1002
|
#define IDC_AXIS_DIRECTION 0x1002
|
||||||
#define IDC_AXIS_CONTROL 0x1003
|
#define IDC_AXIS_CONTROL 0x1003
|
||||||
#define IDC_AXIS_SENSITIVITY 0x1004
|
#define IDC_AXIS_SENSITIVITY 0x1004
|
||||||
#define IDC_TURBO 0x1005
|
#define IDC_RAPID_FIRE 0x1005
|
||||||
#define IDC_AXIS_DEVICE 0x1006
|
#define IDC_AXIS_DEVICE 0x1006
|
||||||
#define ID_SENSITIVITY 0x1007
|
#define ID_SENSITIVITY 0x1007
|
||||||
#define IDC_SLIDER_DEADZONE 0x1008
|
#define IDC_SLIDER_DEADZONE 0x1008
|
||||||
|
@ -105,6 +104,7 @@
|
||||||
#define IDC_CONFIGURE_ON_BIND 0x1120
|
#define IDC_CONFIGURE_ON_BIND 0x1120
|
||||||
#define IDC_DEVICE_SELECT 0x1121
|
#define IDC_DEVICE_SELECT 0x1121
|
||||||
#define IDC_FACE_ANALOG 0x1122
|
#define IDC_FACE_ANALOG 0x1122
|
||||||
|
#define ID_TURBO_KEY 0x111A
|
||||||
#define IDC_BINDINGS_LIST 0x1200
|
#define IDC_BINDINGS_LIST 0x1200
|
||||||
#define ID_SAVE 0x1201
|
#define ID_SAVE 0x1201
|
||||||
#define ID_LOAD 0x1202
|
#define ID_LOAD 0x1202
|
||||||
|
|
Loading…
Reference in New Issue