summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/kernel/ctrl.h28
-rw-r--r--nids/360/SceCtrl.yml1
2 files changed, 29 insertions, 0 deletions
diff --git a/include/kernel/ctrl.h b/include/kernel/ctrl.h
index 60ff673..ceab1f4 100644
--- a/include/kernel/ctrl.h
+++ b/include/kernel/ctrl.h
@@ -103,6 +103,23 @@ typedef struct SceCtrlPortInfo {
uint8_t unk[11]; //!< Unknown
} SceCtrlPortInfo;
+/** Structure to pass as argument to ::sceCtrlRegisterVirtualControllerDriver */
+typedef struct SceCtrlVirtualControllerDriver {
+ int (*readButtons)(int port, SceCtrlData *pad_data, int count);
+ int (*setActuator)(int port, const SceCtrlActuator* pState);
+ int (*getBatteryInfo)(int port, SceUInt8 *batt);
+ int (*disconnect)(int port);
+ int (*setTurnOffInterval)(int port);
+ int (*getActiveControllerPort)(void);
+ int (*changePortAssign)(int port1, int port2);
+ int (*unk0)(void);
+ int (*getControllerPortInfo)(SceCtrlPortInfo *info);
+ int (*setLightBar)(int port, SceUInt8 r, SceUInt8 g, SceUInt8 b);
+ int (*resetLightBar)(int port);
+ int (*unk1)(int port);
+ int (*singleControllerMode)(int port);
+} SceCtrlVirtualControllerDriver;
+
/**
* Set the controller mode.
*
@@ -259,6 +276,17 @@ int sceCtrlSetAnalogEmulation(unsigned int port, unsigned char slot,
unsigned char kernel_rX, unsigned char kernel_rY,
unsigned int uiMake);
+/**
+ * Register virtual controller driver.
+ *
+ * This function always overwrites global settings and not exist unregister method.
+ *
+ * @param[in] driver - See ::SceCtrlVirtualControllerDriver
+ *
+ * @return 0 on success. <0 on error
+ */
+int sceCtrlRegisterVirtualControllerDriver(SceCtrlVirtualControllerDriver *driver);
+
#ifdef __cplusplus
}
#endif
diff --git a/nids/360/SceCtrl.yml b/nids/360/SceCtrl.yml
index f091082..0eab598 100644
--- a/nids/360/SceCtrl.yml
+++ b/nids/360/SceCtrl.yml
@@ -60,6 +60,7 @@ modules:
sceCtrlReadBufferNegative: 0x8D4E0DD1
sceCtrlReadBufferPositive: 0x9B96A1AA
sceCtrlRegisterNotifyCallBack: 0xE170883E
+ sceCtrlRegisterVirtualControllerDriver: 0x18823EEA
sceCtrlSetAnalogEmulation: 0x06577FE8
sceCtrlSetBdRemoconConnected: 0xAA36F578
sceCtrlSetButtonEmulation: 0x1E750326