mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 19:45:20 +00:00
Add in cellPadGetCapabilityInfo function
This commit is contained in:
parent
199845a9d1
commit
604eecf5d4
5 changed files with 30 additions and 1 deletions
|
@ -86,6 +86,7 @@ enum ButtonDataOffset
|
|||
static const u32 CELL_MAX_PADS = 127;
|
||||
static const u32 CELL_PAD_MAX_PORT_NUM = 7;
|
||||
static const u32 CELL_PAD_MAX_CODES = 64;
|
||||
static const u32 CELL_PAD_MAX_CAPABILITY_INFO = 32;
|
||||
|
||||
struct Button
|
||||
{
|
||||
|
|
|
@ -3041,7 +3041,7 @@ s64 SysCalls::DoFunc(const u32 id)
|
|||
case 0xd9a4f812: FUNC_LOG_ERROR("TODO: atoff");
|
||||
case 0xda5a7eb8: FUNC_LOG_ERROR("TODO: strtoul");
|
||||
case 0xdaeada07: FUNC_LOG_ERROR("TODO: mallopt");
|
||||
case 0xdbf4c59c: FUNC_LOG_ERROR("TODO: cellPadGetCapabilityInfo");
|
||||
//case 0xdbf4c59c: FUNC_LOG_ERROR("TODO: cellPadGetCapabilityInfo");
|
||||
case 0xddbac025: FUNC_LOG_ERROR("TODO: strcasecmp_ascii");
|
||||
case 0xddc71a75: FUNC_LOG_ERROR("TODO: _SCE_Assert");
|
||||
case 0xde1bb092: FUNC_LOG_ERROR("TODO: init_by_array_TT800");
|
||||
|
|
|
@ -20,6 +20,7 @@ void sys_io_init()
|
|||
sys_io.AddFunc(0x78200559, cellPadInfoSensorMode);
|
||||
sys_io.AddFunc(0xf83f8182, cellPadSetPressMode);
|
||||
sys_io.AddFunc(0xbe5be3ba, cellPadSetSensorMode);
|
||||
sys_io.AddFunc(0xdbf4c59c, cellPadGetCapabilityInfo);
|
||||
|
||||
sys_io.AddFunc(0x433f6ec0, cellKbInit);
|
||||
sys_io.AddFunc(0xbfce3285, cellKbEnd);
|
||||
|
|
|
@ -314,6 +314,7 @@ extern int cellPadInfoPressMode(u32 port_no);
|
|||
extern int cellPadInfoSensorMode(u32 port_no);
|
||||
extern int cellPadSetPressMode(u32 port_no, u32 mode);
|
||||
extern int cellPadSetSensorMode(u32 port_no, u32 mode);
|
||||
extern int cellPadGetCapabilityInfo(u32 port_no, mem32_t info_addr);
|
||||
|
||||
//cellKb
|
||||
extern int cellKbInit(u32 max_connect);
|
||||
|
|
|
@ -45,6 +45,11 @@ struct CellPadInfo2
|
|||
be_t<u32> device_type[CELL_PAD_MAX_PORT_NUM];
|
||||
};
|
||||
|
||||
struct CellCapabilityInfo
|
||||
{
|
||||
be_t<u32> info[CELL_PAD_MAX_CAPABILITY_INFO];
|
||||
};
|
||||
|
||||
int cellPadInit(u32 max_connect)
|
||||
{
|
||||
sys_io.Log("cellPadInit(max_connect=%d)", max_connect);
|
||||
|
@ -240,6 +245,27 @@ int cellPadGetInfo2(u32 info_addr)
|
|||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellPadGetCapabilityInfo(u32 port_no, mem32_t info_addr)
|
||||
{
|
||||
sys_io.Log("cellPadGetCapabilityInfo[port_no: %d, data_addr: 0x%x]", port_no, info_addr.GetAddr());
|
||||
if (!Emu.GetPadManager().IsInited()) return CELL_PAD_ERROR_UNINITIALIZED;
|
||||
const PadInfo& rinfo = Emu.GetPadManager().GetInfo();
|
||||
if (port_no >= rinfo.max_connect) return CELL_PAD_ERROR_INVALID_PARAMETER;
|
||||
if (port_no >= rinfo.now_connect) return CELL_PAD_ERROR_NO_DEVICE;
|
||||
|
||||
const std::vector<Pad>& pads = Emu.GetPadManager().GetPads();
|
||||
|
||||
CellCapabilityInfo data;
|
||||
memset(&data, 0, sizeof(CellCapabilityInfo));
|
||||
|
||||
//Should return the same as device capability mask, psl1ght has it backwards in pad.h
|
||||
data.info[0] = pads[port_no].m_device_capability;
|
||||
|
||||
Memory.WriteData(info_addr.GetAddr(), data);
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
int cellPadSetPortSetting(u32 port_no, u32 port_setting)
|
||||
{
|
||||
sys_io.Log("cellPadSetPortSetting(port_no=%d, port_setting=0x%x)", port_no, port_setting);
|
||||
|
|
Loading…
Add table
Reference in a new issue