Add additional button defines.

Not yet functional (overlap with virtkeys.)
This commit is contained in:
Unknown W. Brackets 2015-12-23 23:15:15 -08:00
parent 86df05555b
commit 9b7f43db04
3 changed files with 51 additions and 18 deletions

View file

@ -664,6 +664,15 @@ const KeyMap_IntStrPair psp_button_names[] = {
{VIRTKEY_AXIS_SWAP, "AxisSwap"},
{VIRTKEY_DEVMENU, "DevMenu"},
{CTRL_HOME, "Home"},
{CTRL_HOLD, "Hold"},
{CTRL_WLAN, "Wlan"},
{CTRL_REMOTE_HOLD, "Remote hold"},
{CTRL_VOL_UP, "Vol +"},
{CTRL_VOL_DOWN, "Vol -"},
{CTRL_SCREEN, "Screen"},
{CTRL_NOTE, "Note"},
};
const int AXIS_BIND_NKCODE_START = 4000;

View file

@ -207,6 +207,8 @@ static int __CtrlReadSingleBuffer(PSPPointer<_ctrl_data> data, bool negative)
*data = ctrlBufs[ctrlBufRead];
ctrlBufRead = (ctrlBufRead + 1) % NUM_CTRL_BUFFERS;
// Mask out buttons games aren't allowed to see.
data->buttons &= CTRL_MASK_USER;
if (negative)
data->buttons = ~data->buttons;
@ -500,24 +502,28 @@ static int sceCtrlPeekBufferNegative(u32 ctrlDataPtr, u32 nBufs)
return done;
}
static u32 sceCtrlPeekLatch(u32 latchDataPtr)
{
DEBUG_LOG(SCECTRL, "sceCtrlPeekLatch(%08x)", latchDataPtr);
if (Memory::IsValidAddress(latchDataPtr))
Memory::WriteStruct(latchDataPtr, &latch);
return ctrlLatchBufs;
void __CtrlWriteUserLatch(CtrlLatch *userLatch) {
*userLatch = latch;
userLatch->btnBreak &= CTRL_MASK_USER;
userLatch->btnMake &= CTRL_MASK_USER;
userLatch->btnPress &= CTRL_MASK_USER;
userLatch->btnRelease &= CTRL_MASK_USER;
}
static u32 sceCtrlReadLatch(u32 latchDataPtr)
{
DEBUG_LOG(SCECTRL, "sceCtrlReadLatch(%08x)", latchDataPtr);
static u32 sceCtrlPeekLatch(u32 latchDataPtr) {
auto userLatch = PSPPointer<CtrlLatch>::Create(latchDataPtr);
if (userLatch.IsValid()) {
__CtrlWriteUserLatch(userLatch);
}
return hleLogSuccessI(SCECTRL, ctrlLatchBufs);
}
if (Memory::IsValidAddress(latchDataPtr))
Memory::WriteStruct(latchDataPtr, &latch);
return __CtrlResetLatch();
static u32 sceCtrlReadLatch(u32 latchDataPtr) {
auto userLatch = PSPPointer<CtrlLatch>::Create(latchDataPtr);
if (userLatch.IsValid()) {
__CtrlWriteUserLatch(userLatch);
}
return hleLogSuccessI(SCECTRL, __CtrlResetLatch());
}
static const HLEFunction sceCtrl[] =
@ -531,8 +537,8 @@ static const HLEFunction sceCtrl[] =
{0X3A622550, &WrapI_UU<sceCtrlPeekBufferPositive>, "sceCtrlPeekBufferPositive", 'i', "xx"},
{0XC152080A, &WrapI_UU<sceCtrlPeekBufferNegative>, "sceCtrlPeekBufferNegative", 'i', "xx"},
{0X60B81F86, &WrapI_UU<sceCtrlReadBufferNegative>, "sceCtrlReadBufferNegative", 'i', "xx"},
{0XB1D0E5CD, &WrapU_U<sceCtrlPeekLatch>, "sceCtrlPeekLatch", 'x', "x" },
{0X0B588501, &WrapU_U<sceCtrlReadLatch>, "sceCtrlReadLatch", 'x', "x" },
{0XB1D0E5CD, &WrapU_U<sceCtrlPeekLatch>, "sceCtrlPeekLatch", 'i', "x" },
{0X0B588501, &WrapU_U<sceCtrlReadLatch>, "sceCtrlReadLatch", 'i', "x" },
{0X348D99D4, nullptr, "sceCtrlSetSuspendingExtraSamples", '?', "" },
{0XAF5960F3, nullptr, "sceCtrlGetSuspendingExtraSamples", '?', "" },
{0XA68FD260, nullptr, "sceCtrlClearRapidFire", '?', "" },

View file

@ -40,7 +40,25 @@ const int CTRL_STICK_RIGHT = 1;
#define CTRL_LTRIGGER 0x0100
#define CTRL_RTRIGGER 0x0200
#define CTRL_ALL_BUTTONS 0xF3F9
// System-ish buttons. Not generally used by games.
#define CTRL_HOME 0x00010000
#define CTRL_HOLD 0x00020000
#define CTRL_WLAN 0x00040000
#define CTRL_REMOTE_HOLD 0x00080000
#define CTRL_VOL_UP 0x00100000
#define CTRL_VOL_DOWN 0x00200000
#define CTRL_SCREEN 0x00400000
#define CTRL_NOTE 0x00800000
#define CTRL_DISC 0x01000000
#define CTRL_MEMSTICK 0x02000000
#define CTRL_FORWARD 0x10000000
#define CTRL_BACK 0x20000000
#define CTRL_PLAYPAUSE 0x40000000
#define CTRL_MASK_DPAD (CTRL_UP | CTRL_DOWN | CTRL_LEFT | CTRL_RIGHT)
#define CTRL_MASK_ACTION (CTRL_SQUARE | CTRL_TRIANGLE | CTRL_CIRCLE | CTRL_CROSS)
#define CTRL_MASK_TRIGGER (CTRL_LTRIGGER | CTRL_RTRIGGER)
#define CTRL_MASK_USER (CTRL_MASK_DPAD | CTRL_MASK_ACTION | CTRL_START | CTRL_SELECT | CTRL_MASK_TRIGGER | CTRL_HOME | CTRL_HOLD)
void __CtrlInit();
void __CtrlDoState(PointerWrap &p);