mirror of https://github.com/RPCS3/rpcs3.git
Add in cellPadGetCapabilityInfo function
This commit is contained in:
parent
199845a9d1
commit
604eecf5d4
|
@ -86,6 +86,7 @@ enum ButtonDataOffset
|
||||||
static const u32 CELL_MAX_PADS = 127;
|
static const u32 CELL_MAX_PADS = 127;
|
||||||
static const u32 CELL_PAD_MAX_PORT_NUM = 7;
|
static const u32 CELL_PAD_MAX_PORT_NUM = 7;
|
||||||
static const u32 CELL_PAD_MAX_CODES = 64;
|
static const u32 CELL_PAD_MAX_CODES = 64;
|
||||||
|
static const u32 CELL_PAD_MAX_CAPABILITY_INFO = 32;
|
||||||
|
|
||||||
struct Button
|
struct Button
|
||||||
{
|
{
|
||||||
|
|
|
@ -3041,7 +3041,7 @@ s64 SysCalls::DoFunc(const u32 id)
|
||||||
case 0xd9a4f812: FUNC_LOG_ERROR("TODO: atoff");
|
case 0xd9a4f812: FUNC_LOG_ERROR("TODO: atoff");
|
||||||
case 0xda5a7eb8: FUNC_LOG_ERROR("TODO: strtoul");
|
case 0xda5a7eb8: FUNC_LOG_ERROR("TODO: strtoul");
|
||||||
case 0xdaeada07: FUNC_LOG_ERROR("TODO: mallopt");
|
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 0xddbac025: FUNC_LOG_ERROR("TODO: strcasecmp_ascii");
|
||||||
case 0xddc71a75: FUNC_LOG_ERROR("TODO: _SCE_Assert");
|
case 0xddc71a75: FUNC_LOG_ERROR("TODO: _SCE_Assert");
|
||||||
case 0xde1bb092: FUNC_LOG_ERROR("TODO: init_by_array_TT800");
|
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(0x78200559, cellPadInfoSensorMode);
|
||||||
sys_io.AddFunc(0xf83f8182, cellPadSetPressMode);
|
sys_io.AddFunc(0xf83f8182, cellPadSetPressMode);
|
||||||
sys_io.AddFunc(0xbe5be3ba, cellPadSetSensorMode);
|
sys_io.AddFunc(0xbe5be3ba, cellPadSetSensorMode);
|
||||||
|
sys_io.AddFunc(0xdbf4c59c, cellPadGetCapabilityInfo);
|
||||||
|
|
||||||
sys_io.AddFunc(0x433f6ec0, cellKbInit);
|
sys_io.AddFunc(0x433f6ec0, cellKbInit);
|
||||||
sys_io.AddFunc(0xbfce3285, cellKbEnd);
|
sys_io.AddFunc(0xbfce3285, cellKbEnd);
|
||||||
|
|
|
@ -314,6 +314,7 @@ extern int cellPadInfoPressMode(u32 port_no);
|
||||||
extern int cellPadInfoSensorMode(u32 port_no);
|
extern int cellPadInfoSensorMode(u32 port_no);
|
||||||
extern int cellPadSetPressMode(u32 port_no, u32 mode);
|
extern int cellPadSetPressMode(u32 port_no, u32 mode);
|
||||||
extern int cellPadSetSensorMode(u32 port_no, u32 mode);
|
extern int cellPadSetSensorMode(u32 port_no, u32 mode);
|
||||||
|
extern int cellPadGetCapabilityInfo(u32 port_no, mem32_t info_addr);
|
||||||
|
|
||||||
//cellKb
|
//cellKb
|
||||||
extern int cellKbInit(u32 max_connect);
|
extern int cellKbInit(u32 max_connect);
|
||||||
|
|
|
@ -45,6 +45,11 @@ struct CellPadInfo2
|
||||||
be_t<u32> device_type[CELL_PAD_MAX_PORT_NUM];
|
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)
|
int cellPadInit(u32 max_connect)
|
||||||
{
|
{
|
||||||
sys_io.Log("cellPadInit(max_connect=%d)", max_connect);
|
sys_io.Log("cellPadInit(max_connect=%d)", max_connect);
|
||||||
|
@ -240,6 +245,27 @@ int cellPadGetInfo2(u32 info_addr)
|
||||||
return CELL_OK;
|
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)
|
int cellPadSetPortSetting(u32 port_no, u32 port_setting)
|
||||||
{
|
{
|
||||||
sys_io.Log("cellPadSetPortSetting(port_no=%d, port_setting=0x%x)", port_no, port_setting);
|
sys_io.Log("cellPadSetPortSetting(port_no=%d, port_setting=0x%x)", port_no, port_setting);
|
||||||
|
|
Loading…
Reference in New Issue