mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Add additional button defines.
Not yet functional (overlap with virtkeys.)
This commit is contained in:
parent
86df05555b
commit
9b7f43db04
3 changed files with 51 additions and 18 deletions
|
@ -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;
|
||||
|
|
|
@ -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", '?', "" },
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue