mirror of
https://github.com/ARMSX2/ARMSX3.git
synced 2026-08-24 16:58:52 -07:00
Untangle GUI and input includes
This commit is contained in:
+2
-1
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
|
||||
#include <pugixml.hpp>
|
||||
#include <memory>
|
||||
|
||||
struct rXmlNode
|
||||
{
|
||||
|
||||
@@ -341,8 +341,9 @@ target_link_libraries(rpcs3_emu
|
||||
|
||||
# Io
|
||||
target_sources(rpcs3_emu PRIVATE
|
||||
Io/pad_config.cpp
|
||||
Io/KeyboardHandler.cpp
|
||||
Io/pad_config.cpp
|
||||
Io/pad_config_types.cpp
|
||||
Io/PadHandler.cpp
|
||||
Io/usb_device.cpp
|
||||
Io/Skylander.cpp
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "Emu/Io/MouseHandler.h"
|
||||
#include "Emu/RSX/GSRender.h"
|
||||
#include "Utilities/Timer.h"
|
||||
#include "Input/pad_thread.h"
|
||||
|
||||
LOG_CHANNEL(cellGem);
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "Emu/Cell/lv2/sys_sync.h"
|
||||
#include "Emu/RSX/Overlays/overlays.h"
|
||||
|
||||
#include "Input/pad_thread.h"
|
||||
|
||||
#include "cellSysutil.h"
|
||||
#include "cellMsgDialog.h"
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "Emu/Cell/PPUModule.h"
|
||||
#include "Emu/Cell/lv2/sys_process.h"
|
||||
|
||||
#include "Emu/Io/pad_types.h"
|
||||
#include "Input/pad_thread.h"
|
||||
#include "cellPad.h"
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdafx.h"
|
||||
#include <Emu/Memory/vm_ptr.h>
|
||||
|
||||
// Return codes
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Emu/Memory/vm_ptr.h"
|
||||
#include <atomic>
|
||||
|
||||
|
||||
+2
-277
@@ -1,285 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <cmath>
|
||||
#include "pad_types.h"
|
||||
#include "pad_config.h"
|
||||
#include "pad_config_types.h"
|
||||
#include "Utilities/types.h"
|
||||
#include "Emu/GameInfo.h"
|
||||
|
||||
// TODO: HLE info (constants, structs, etc.) should not be available here
|
||||
|
||||
enum SystemInfo
|
||||
{
|
||||
CELL_PAD_INFO_INTERCEPTED = 0x00000001
|
||||
};
|
||||
|
||||
enum PortStatus
|
||||
{
|
||||
CELL_PAD_STATUS_DISCONNECTED = 0x00000000,
|
||||
CELL_PAD_STATUS_CONNECTED = 0x00000001,
|
||||
CELL_PAD_STATUS_ASSIGN_CHANGES = 0x00000002,
|
||||
CELL_PAD_STATUS_CUSTOM_CONTROLLER = 0x00000004,
|
||||
};
|
||||
|
||||
enum PortSettings
|
||||
{
|
||||
CELL_PAD_SETTING_LDD = 0x00000001, // Speculative
|
||||
CELL_PAD_SETTING_PRESS_ON = 0x00000002,
|
||||
CELL_PAD_SETTING_SENSOR_ON = 0x00000004,
|
||||
CELL_PAD_SETTING_PRESS_OFF = 0x00000000,
|
||||
CELL_PAD_SETTING_SENSOR_OFF = 0x00000000,
|
||||
};
|
||||
|
||||
enum Digital1Flags
|
||||
{
|
||||
CELL_PAD_CTRL_LEFT = 0x00000080,
|
||||
CELL_PAD_CTRL_DOWN = 0x00000040,
|
||||
CELL_PAD_CTRL_RIGHT = 0x00000020,
|
||||
CELL_PAD_CTRL_UP = 0x00000010,
|
||||
CELL_PAD_CTRL_START = 0x00000008,
|
||||
CELL_PAD_CTRL_R3 = 0x00000004,
|
||||
CELL_PAD_CTRL_L3 = 0x00000002,
|
||||
CELL_PAD_CTRL_SELECT = 0x00000001,
|
||||
};
|
||||
|
||||
enum Digital2Flags
|
||||
{
|
||||
CELL_PAD_CTRL_SQUARE = 0x00000080,
|
||||
CELL_PAD_CTRL_CROSS = 0x00000040,
|
||||
CELL_PAD_CTRL_CIRCLE = 0x00000020,
|
||||
CELL_PAD_CTRL_TRIANGLE = 0x00000010,
|
||||
CELL_PAD_CTRL_R1 = 0x00000008,
|
||||
CELL_PAD_CTRL_L1 = 0x00000004,
|
||||
CELL_PAD_CTRL_R2 = 0x00000002,
|
||||
CELL_PAD_CTRL_L2 = 0x00000001,
|
||||
};
|
||||
|
||||
enum DeviceCapability
|
||||
{
|
||||
CELL_PAD_CAPABILITY_PS3_CONFORMITY = 0x00000001, // PS3 Conformity Controller
|
||||
CELL_PAD_CAPABILITY_PRESS_MODE = 0x00000002, // Press mode supported
|
||||
CELL_PAD_CAPABILITY_SENSOR_MODE = 0x00000004, // Sensor mode supported
|
||||
CELL_PAD_CAPABILITY_HP_ANALOG_STICK = 0x00000008, // High Precision analog stick
|
||||
CELL_PAD_CAPABILITY_ACTUATOR = 0x00000010, // Motor supported
|
||||
};
|
||||
|
||||
enum DeviceType
|
||||
{
|
||||
CELL_PAD_DEV_TYPE_STANDARD = 0,
|
||||
CELL_PAD_DEV_TYPE_BD_REMOCON = 4,
|
||||
CELL_PAD_DEV_TYPE_LDD = 5,
|
||||
};
|
||||
|
||||
enum ButtonDataOffset
|
||||
{
|
||||
CELL_PAD_BTN_OFFSET_DIGITAL1 = 2,
|
||||
CELL_PAD_BTN_OFFSET_DIGITAL2 = 3,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_X = 4,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_Y = 5,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_LEFT_X = 6,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_LEFT_Y = 7,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_RIGHT = 8,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_LEFT = 9,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_UP = 10,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_DOWN = 11,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_TRIANGLE = 12,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_CIRCLE = 13,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_CROSS = 14,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_SQUARE = 15,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_L1 = 16,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_R1 = 17,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_L2 = 18,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_R2 = 19,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_X = 20,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_Y = 21,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_Z = 22,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_G = 23,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
CELL_PAD_ACTUATOR_MAX = 2,
|
||||
CELL_PAD_MAX_PORT_NUM = 7,
|
||||
CELL_PAD_MAX_CAPABILITY_INFO = 32,
|
||||
CELL_PAD_MAX_CODES = 64,
|
||||
CELL_MAX_PADS = 127,
|
||||
};
|
||||
|
||||
struct Button
|
||||
{
|
||||
u32 m_offset;
|
||||
u32 m_keyCode;
|
||||
u32 m_outKeyCode;
|
||||
u16 m_value = 0;
|
||||
bool m_pressed = false;
|
||||
|
||||
u16 m_actual_value = 0; // only used in keyboard_pad_handler
|
||||
bool m_analog = false; // only used in keyboard_pad_handler
|
||||
bool m_trigger = false; // only used in keyboard_pad_handler
|
||||
|
||||
Button(u32 offset, u32 keyCode, u32 outKeyCode)
|
||||
: m_offset(offset)
|
||||
, m_keyCode(keyCode)
|
||||
, m_outKeyCode(outKeyCode)
|
||||
{
|
||||
if (offset == CELL_PAD_BTN_OFFSET_DIGITAL1)
|
||||
{
|
||||
if (outKeyCode == CELL_PAD_CTRL_LEFT || outKeyCode == CELL_PAD_CTRL_RIGHT ||
|
||||
outKeyCode == CELL_PAD_CTRL_UP || outKeyCode == CELL_PAD_CTRL_DOWN)
|
||||
{
|
||||
m_analog = true;
|
||||
}
|
||||
}
|
||||
else if (offset == CELL_PAD_BTN_OFFSET_DIGITAL2)
|
||||
{
|
||||
if (outKeyCode == CELL_PAD_CTRL_CROSS || outKeyCode == CELL_PAD_CTRL_CIRCLE ||
|
||||
outKeyCode == CELL_PAD_CTRL_SQUARE || outKeyCode == CELL_PAD_CTRL_TRIANGLE ||
|
||||
outKeyCode == CELL_PAD_CTRL_L1 || outKeyCode == CELL_PAD_CTRL_R1)
|
||||
{
|
||||
m_analog = true;
|
||||
}
|
||||
else if (outKeyCode == CELL_PAD_CTRL_L2 || outKeyCode == CELL_PAD_CTRL_R2)
|
||||
{
|
||||
m_trigger = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct AnalogStick
|
||||
{
|
||||
u32 m_offset;
|
||||
u32 m_keyCodeMin;
|
||||
u32 m_keyCodeMax;
|
||||
u16 m_value = 128;
|
||||
|
||||
AnalogStick(u32 offset, u32 keyCodeMin, u32 keyCodeMax)
|
||||
: m_offset(offset)
|
||||
, m_keyCodeMin(keyCodeMin)
|
||||
, m_keyCodeMax(keyCodeMax)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct AnalogSensor
|
||||
{
|
||||
u32 m_offset;
|
||||
u16 m_value;
|
||||
|
||||
AnalogSensor(u32 offset, u16 value)
|
||||
: m_offset(offset)
|
||||
, m_value(value)
|
||||
{}
|
||||
};
|
||||
|
||||
struct VibrateMotor
|
||||
{
|
||||
bool m_isLargeMotor;
|
||||
u16 m_value;
|
||||
|
||||
VibrateMotor(bool largeMotor, u16 value)
|
||||
: m_isLargeMotor(largeMotor)
|
||||
, m_value(value)
|
||||
{}
|
||||
};
|
||||
|
||||
struct Pad
|
||||
{
|
||||
bool m_buffer_cleared;
|
||||
u32 m_port_status;
|
||||
u32 m_device_capability;
|
||||
u32 m_device_type;
|
||||
u32 m_class_type;
|
||||
|
||||
// Cable State: 0 - 1 plugged in ?
|
||||
u8 m_cable_state;
|
||||
|
||||
// DS4: 0 - 9 while unplugged, 0 - 10 while plugged in, 11 charge complete
|
||||
// XInput: 0 = Empty, 1 = Low, 2 = Medium, 3 = Full
|
||||
u8 m_battery_level;
|
||||
|
||||
std::vector<Button> m_buttons;
|
||||
std::vector<AnalogStick> m_sticks;
|
||||
std::vector<AnalogSensor> m_sensors;
|
||||
std::vector<VibrateMotor> m_vibrateMotors;
|
||||
|
||||
// These hold bits for their respective buttons
|
||||
u16 m_digital_1;
|
||||
u16 m_digital_2;
|
||||
|
||||
// All sensors go from 0-255
|
||||
u16 m_analog_left_x;
|
||||
u16 m_analog_left_y;
|
||||
u16 m_analog_right_x;
|
||||
u16 m_analog_right_y;
|
||||
|
||||
u16 m_press_right;
|
||||
u16 m_press_left;
|
||||
u16 m_press_up;
|
||||
u16 m_press_down;
|
||||
u16 m_press_triangle;
|
||||
u16 m_press_circle;
|
||||
u16 m_press_cross;
|
||||
u16 m_press_square;
|
||||
u16 m_press_L1;
|
||||
u16 m_press_L2;
|
||||
u16 m_press_R1;
|
||||
u16 m_press_R2;
|
||||
|
||||
// Except for these...0-1023
|
||||
// ~399 on sensor y is a level non moving controller
|
||||
u16 m_sensor_x;
|
||||
u16 m_sensor_y;
|
||||
u16 m_sensor_z;
|
||||
u16 m_sensor_g;
|
||||
|
||||
bool ldd = false;
|
||||
u8 ldd_data[132] = {};
|
||||
|
||||
void Init(u32 port_status, u32 device_capability, u32 device_type, u32 class_type)
|
||||
{
|
||||
m_port_status = port_status;
|
||||
m_device_capability = device_capability;
|
||||
m_device_type = device_type;
|
||||
m_class_type = class_type;
|
||||
}
|
||||
|
||||
Pad(u32 port_status, u32 device_capability, u32 device_type)
|
||||
: m_buffer_cleared(true)
|
||||
, m_port_status(port_status)
|
||||
, m_device_capability(device_capability)
|
||||
, m_device_type(device_type)
|
||||
, m_class_type(0)
|
||||
, m_cable_state(0)
|
||||
, m_battery_level(0)
|
||||
|
||||
, m_digital_1(0)
|
||||
, m_digital_2(0)
|
||||
|
||||
, m_analog_left_x(128)
|
||||
, m_analog_left_y(128)
|
||||
, m_analog_right_x(128)
|
||||
, m_analog_right_y(128)
|
||||
|
||||
, m_press_right(0)
|
||||
, m_press_left(0)
|
||||
, m_press_up(0)
|
||||
, m_press_down(0)
|
||||
, m_press_triangle(0)
|
||||
, m_press_circle(0)
|
||||
, m_press_cross(0)
|
||||
, m_press_square(0)
|
||||
, m_press_L1(0)
|
||||
, m_press_L2(0)
|
||||
, m_press_R1(0)
|
||||
, m_press_R2(0)
|
||||
|
||||
, m_sensor_x(512)
|
||||
, m_sensor_y(399)
|
||||
, m_sensor_z(512)
|
||||
, m_sensor_g(512)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct PadDevice
|
||||
{
|
||||
|
||||
@@ -2,30 +2,6 @@
|
||||
#include "pad_config.h"
|
||||
#include "Emu/System.h"
|
||||
|
||||
template <>
|
||||
void fmt_class_string<pad_handler>::format(std::string& out, u64 arg)
|
||||
{
|
||||
format_enum(out, arg, [](pad_handler value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case pad_handler::null: return "Null";
|
||||
case pad_handler::keyboard: return "Keyboard";
|
||||
case pad_handler::ds3: return "DualShock 3";
|
||||
case pad_handler::ds4: return "DualShock 4";
|
||||
#ifdef _WIN32
|
||||
case pad_handler::xinput: return "XInput";
|
||||
case pad_handler::mm: return "MMJoystick";
|
||||
#endif
|
||||
#ifdef HAVE_LIBEVDEV
|
||||
case pad_handler::evdev: return "Evdev";
|
||||
#endif
|
||||
}
|
||||
|
||||
return unknown;
|
||||
});
|
||||
}
|
||||
|
||||
bool cfg_input::load(const std::string& title_id)
|
||||
{
|
||||
cfg_name = Emulator::GetCustomInputConfigPath(title_id);
|
||||
|
||||
@@ -1,23 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "pad_config_types.h"
|
||||
|
||||
#include "Utilities/Config.h"
|
||||
#include "Utilities/File.h"
|
||||
|
||||
enum class pad_handler
|
||||
{
|
||||
null,
|
||||
keyboard,
|
||||
ds3,
|
||||
ds4,
|
||||
#ifdef _WIN32
|
||||
xinput,
|
||||
mm,
|
||||
#endif
|
||||
#ifdef HAVE_LIBEVDEV
|
||||
evdev,
|
||||
#endif
|
||||
};
|
||||
|
||||
struct cfg_player final : cfg::node
|
||||
{
|
||||
pad_handler def_handler = pad_handler::null;
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#include "stdafx.h"
|
||||
#include "pad_config_types.h"
|
||||
|
||||
template <>
|
||||
void fmt_class_string<pad_handler>::format(std::string& out, u64 arg)
|
||||
{
|
||||
format_enum(out, arg, [](pad_handler value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case pad_handler::null: return "Null";
|
||||
case pad_handler::keyboard: return "Keyboard";
|
||||
case pad_handler::ds3: return "DualShock 3";
|
||||
case pad_handler::ds4: return "DualShock 4";
|
||||
#ifdef _WIN32
|
||||
case pad_handler::xinput: return "XInput";
|
||||
case pad_handler::mm: return "MMJoystick";
|
||||
#endif
|
||||
#ifdef HAVE_LIBEVDEV
|
||||
case pad_handler::evdev: return "Evdev";
|
||||
#endif
|
||||
}
|
||||
|
||||
return unknown;
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "Utilities/types.h"
|
||||
|
||||
enum class pad_handler
|
||||
{
|
||||
null,
|
||||
keyboard,
|
||||
ds3,
|
||||
ds4,
|
||||
#ifdef _WIN32
|
||||
xinput,
|
||||
mm,
|
||||
#endif
|
||||
#ifdef HAVE_LIBEVDEV
|
||||
evdev,
|
||||
#endif
|
||||
};
|
||||
|
||||
struct PadInfo
|
||||
{
|
||||
u32 now_connect;
|
||||
u32 system_info;
|
||||
bool ignore_input;
|
||||
};
|
||||
@@ -0,0 +1,273 @@
|
||||
#pragma once
|
||||
|
||||
enum SystemInfo
|
||||
{
|
||||
CELL_PAD_INFO_INTERCEPTED = 0x00000001
|
||||
};
|
||||
|
||||
enum PortStatus
|
||||
{
|
||||
CELL_PAD_STATUS_DISCONNECTED = 0x00000000,
|
||||
CELL_PAD_STATUS_CONNECTED = 0x00000001,
|
||||
CELL_PAD_STATUS_ASSIGN_CHANGES = 0x00000002,
|
||||
CELL_PAD_STATUS_CUSTOM_CONTROLLER = 0x00000004,
|
||||
};
|
||||
|
||||
enum PortSettings
|
||||
{
|
||||
CELL_PAD_SETTING_LDD = 0x00000001, // Speculative
|
||||
CELL_PAD_SETTING_PRESS_ON = 0x00000002,
|
||||
CELL_PAD_SETTING_SENSOR_ON = 0x00000004,
|
||||
CELL_PAD_SETTING_PRESS_OFF = 0x00000000,
|
||||
CELL_PAD_SETTING_SENSOR_OFF = 0x00000000,
|
||||
};
|
||||
|
||||
enum Digital1Flags
|
||||
{
|
||||
CELL_PAD_CTRL_LEFT = 0x00000080,
|
||||
CELL_PAD_CTRL_DOWN = 0x00000040,
|
||||
CELL_PAD_CTRL_RIGHT = 0x00000020,
|
||||
CELL_PAD_CTRL_UP = 0x00000010,
|
||||
CELL_PAD_CTRL_START = 0x00000008,
|
||||
CELL_PAD_CTRL_R3 = 0x00000004,
|
||||
CELL_PAD_CTRL_L3 = 0x00000002,
|
||||
CELL_PAD_CTRL_SELECT = 0x00000001,
|
||||
};
|
||||
|
||||
enum Digital2Flags
|
||||
{
|
||||
CELL_PAD_CTRL_SQUARE = 0x00000080,
|
||||
CELL_PAD_CTRL_CROSS = 0x00000040,
|
||||
CELL_PAD_CTRL_CIRCLE = 0x00000020,
|
||||
CELL_PAD_CTRL_TRIANGLE = 0x00000010,
|
||||
CELL_PAD_CTRL_R1 = 0x00000008,
|
||||
CELL_PAD_CTRL_L1 = 0x00000004,
|
||||
CELL_PAD_CTRL_R2 = 0x00000002,
|
||||
CELL_PAD_CTRL_L2 = 0x00000001,
|
||||
};
|
||||
|
||||
enum DeviceCapability
|
||||
{
|
||||
CELL_PAD_CAPABILITY_PS3_CONFORMITY = 0x00000001, // PS3 Conformity Controller
|
||||
CELL_PAD_CAPABILITY_PRESS_MODE = 0x00000002, // Press mode supported
|
||||
CELL_PAD_CAPABILITY_SENSOR_MODE = 0x00000004, // Sensor mode supported
|
||||
CELL_PAD_CAPABILITY_HP_ANALOG_STICK = 0x00000008, // High Precision analog stick
|
||||
CELL_PAD_CAPABILITY_ACTUATOR = 0x00000010, // Motor supported
|
||||
};
|
||||
|
||||
enum DeviceType
|
||||
{
|
||||
CELL_PAD_DEV_TYPE_STANDARD = 0,
|
||||
CELL_PAD_DEV_TYPE_BD_REMOCON = 4,
|
||||
CELL_PAD_DEV_TYPE_LDD = 5,
|
||||
};
|
||||
|
||||
enum ButtonDataOffset
|
||||
{
|
||||
CELL_PAD_BTN_OFFSET_DIGITAL1 = 2,
|
||||
CELL_PAD_BTN_OFFSET_DIGITAL2 = 3,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_X = 4,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_RIGHT_Y = 5,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_LEFT_X = 6,
|
||||
CELL_PAD_BTN_OFFSET_ANALOG_LEFT_Y = 7,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_RIGHT = 8,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_LEFT = 9,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_UP = 10,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_DOWN = 11,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_TRIANGLE = 12,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_CIRCLE = 13,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_CROSS = 14,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_SQUARE = 15,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_L1 = 16,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_R1 = 17,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_L2 = 18,
|
||||
CELL_PAD_BTN_OFFSET_PRESS_R2 = 19,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_X = 20,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_Y = 21,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_Z = 22,
|
||||
CELL_PAD_BTN_OFFSET_SENSOR_G = 23,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
CELL_PAD_ACTUATOR_MAX = 2,
|
||||
CELL_PAD_MAX_PORT_NUM = 7,
|
||||
CELL_PAD_MAX_CAPABILITY_INFO = 32,
|
||||
CELL_PAD_MAX_CODES = 64,
|
||||
CELL_MAX_PADS = 127,
|
||||
};
|
||||
|
||||
struct Button
|
||||
{
|
||||
u32 m_offset;
|
||||
u32 m_keyCode;
|
||||
u32 m_outKeyCode;
|
||||
u16 m_value = 0;
|
||||
bool m_pressed = false;
|
||||
|
||||
u16 m_actual_value = 0; // only used in keyboard_pad_handler
|
||||
bool m_analog = false; // only used in keyboard_pad_handler
|
||||
bool m_trigger = false; // only used in keyboard_pad_handler
|
||||
|
||||
Button(u32 offset, u32 keyCode, u32 outKeyCode)
|
||||
: m_offset(offset)
|
||||
, m_keyCode(keyCode)
|
||||
, m_outKeyCode(outKeyCode)
|
||||
{
|
||||
if (offset == CELL_PAD_BTN_OFFSET_DIGITAL1)
|
||||
{
|
||||
if (outKeyCode == CELL_PAD_CTRL_LEFT || outKeyCode == CELL_PAD_CTRL_RIGHT || outKeyCode == CELL_PAD_CTRL_UP || outKeyCode == CELL_PAD_CTRL_DOWN)
|
||||
{
|
||||
m_analog = true;
|
||||
}
|
||||
}
|
||||
else if (offset == CELL_PAD_BTN_OFFSET_DIGITAL2)
|
||||
{
|
||||
if (outKeyCode == CELL_PAD_CTRL_CROSS || outKeyCode == CELL_PAD_CTRL_CIRCLE || outKeyCode == CELL_PAD_CTRL_SQUARE || outKeyCode == CELL_PAD_CTRL_TRIANGLE || outKeyCode == CELL_PAD_CTRL_L1 ||
|
||||
outKeyCode == CELL_PAD_CTRL_R1)
|
||||
{
|
||||
m_analog = true;
|
||||
}
|
||||
else if (outKeyCode == CELL_PAD_CTRL_L2 || outKeyCode == CELL_PAD_CTRL_R2)
|
||||
{
|
||||
m_trigger = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct AnalogStick
|
||||
{
|
||||
u32 m_offset;
|
||||
u32 m_keyCodeMin;
|
||||
u32 m_keyCodeMax;
|
||||
u16 m_value = 128;
|
||||
|
||||
AnalogStick(u32 offset, u32 keyCodeMin, u32 keyCodeMax)
|
||||
: m_offset(offset)
|
||||
, m_keyCodeMin(keyCodeMin)
|
||||
, m_keyCodeMax(keyCodeMax)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct AnalogSensor
|
||||
{
|
||||
u32 m_offset;
|
||||
u16 m_value;
|
||||
|
||||
AnalogSensor(u32 offset, u16 value)
|
||||
: m_offset(offset)
|
||||
, m_value(value)
|
||||
{}
|
||||
};
|
||||
|
||||
struct VibrateMotor
|
||||
{
|
||||
bool m_isLargeMotor;
|
||||
u16 m_value;
|
||||
|
||||
VibrateMotor(bool largeMotor, u16 value)
|
||||
: m_isLargeMotor(largeMotor)
|
||||
, m_value(value)
|
||||
{}
|
||||
};
|
||||
|
||||
struct Pad
|
||||
{
|
||||
bool m_buffer_cleared;
|
||||
u32 m_port_status;
|
||||
u32 m_device_capability;
|
||||
u32 m_device_type;
|
||||
u32 m_class_type;
|
||||
|
||||
// Cable State: 0 - 1 plugged in ?
|
||||
u8 m_cable_state;
|
||||
|
||||
// DS4: 0 - 9 while unplugged, 0 - 10 while plugged in, 11 charge complete
|
||||
// XInput: 0 = Empty, 1 = Low, 2 = Medium, 3 = Full
|
||||
u8 m_battery_level;
|
||||
|
||||
std::vector<Button> m_buttons;
|
||||
std::vector<AnalogStick> m_sticks;
|
||||
std::vector<AnalogSensor> m_sensors;
|
||||
std::vector<VibrateMotor> m_vibrateMotors;
|
||||
|
||||
// These hold bits for their respective buttons
|
||||
u16 m_digital_1;
|
||||
u16 m_digital_2;
|
||||
|
||||
// All sensors go from 0-255
|
||||
u16 m_analog_left_x;
|
||||
u16 m_analog_left_y;
|
||||
u16 m_analog_right_x;
|
||||
u16 m_analog_right_y;
|
||||
|
||||
u16 m_press_right;
|
||||
u16 m_press_left;
|
||||
u16 m_press_up;
|
||||
u16 m_press_down;
|
||||
u16 m_press_triangle;
|
||||
u16 m_press_circle;
|
||||
u16 m_press_cross;
|
||||
u16 m_press_square;
|
||||
u16 m_press_L1;
|
||||
u16 m_press_L2;
|
||||
u16 m_press_R1;
|
||||
u16 m_press_R2;
|
||||
|
||||
// Except for these...0-1023
|
||||
// ~399 on sensor y is a level non moving controller
|
||||
u16 m_sensor_x;
|
||||
u16 m_sensor_y;
|
||||
u16 m_sensor_z;
|
||||
u16 m_sensor_g;
|
||||
|
||||
bool ldd = false;
|
||||
u8 ldd_data[132] = {};
|
||||
|
||||
void Init(u32 port_status, u32 device_capability, u32 device_type, u32 class_type)
|
||||
{
|
||||
m_port_status = port_status;
|
||||
m_device_capability = device_capability;
|
||||
m_device_type = device_type;
|
||||
m_class_type = class_type;
|
||||
}
|
||||
|
||||
Pad(u32 port_status, u32 device_capability, u32 device_type)
|
||||
: m_buffer_cleared(true)
|
||||
, m_port_status(port_status)
|
||||
, m_device_capability(device_capability)
|
||||
, m_device_type(device_type)
|
||||
, m_class_type(0)
|
||||
, m_cable_state(0)
|
||||
, m_battery_level(0)
|
||||
|
||||
, m_digital_1(0)
|
||||
, m_digital_2(0)
|
||||
|
||||
, m_analog_left_x(128)
|
||||
, m_analog_left_y(128)
|
||||
, m_analog_right_x(128)
|
||||
, m_analog_right_y(128)
|
||||
|
||||
, m_press_right(0)
|
||||
, m_press_left(0)
|
||||
, m_press_up(0)
|
||||
, m_press_down(0)
|
||||
, m_press_triangle(0)
|
||||
, m_press_circle(0)
|
||||
, m_press_cross(0)
|
||||
, m_press_square(0)
|
||||
, m_press_L1(0)
|
||||
, m_press_L2(0)
|
||||
, m_press_R1(0)
|
||||
, m_press_R2(0)
|
||||
|
||||
, m_sensor_x(512)
|
||||
, m_sensor_y(399)
|
||||
, m_sensor_z(512)
|
||||
, m_sensor_g(512)
|
||||
{
|
||||
}
|
||||
};
|
||||
@@ -1,7 +1,5 @@
|
||||
#include "stdafx.h"
|
||||
#include "Emu/Memory/vm.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Emu/Cell/lv2/sys_time.h"
|
||||
|
||||
#include "Emu/Cell/lv2/sys_usbd.h"
|
||||
#include "Emu/Io/usb_device.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(push, 0)
|
||||
@@ -15,7 +15,6 @@
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
#include "Emu/Memory/vm.h"
|
||||
#include "Emu/Cell/lv2/sys_usbd.h"
|
||||
|
||||
struct UsbTransfer;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "overlays.h"
|
||||
#include "Utilities/CPUStats.h"
|
||||
#include "Emu/system_config_types.h"
|
||||
|
||||
namespace rsx
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "stdafx.h"
|
||||
#include "overlays.h"
|
||||
#include "Utilities/date_time.h"
|
||||
|
||||
namespace rsx
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "overlays.h"
|
||||
#include "../GSRender.h"
|
||||
#include "../GSRender.h"
|
||||
#include "Input/pad_thread.h"
|
||||
|
||||
LOG_CHANNEL(overlays);
|
||||
|
||||
|
||||
@@ -2,22 +2,19 @@
|
||||
#include "overlay_animation.h"
|
||||
#include "overlay_controls.h"
|
||||
|
||||
#include "../../../Utilities/date_time.h"
|
||||
#include "../../../Utilities/Thread.h"
|
||||
#include "../../Io/PadHandler.h"
|
||||
#include "Emu/Memory/vm.h"
|
||||
#include "Emu/IdManager.h"
|
||||
#include "Input/pad_thread.h"
|
||||
|
||||
#include "Emu/Cell/ErrorCodes.h"
|
||||
#include "Emu/Cell/Modules/cellSaveData.h"
|
||||
#include "Emu/Cell/Modules/cellMsgDialog.h"
|
||||
#include "Emu/Cell/Modules/cellOskDialog.h"
|
||||
#include "Emu/Cell/Modules/sceNpTrophy.h"
|
||||
#include "Utilities/CPUStats.h"
|
||||
#include "Utilities/Timer.h"
|
||||
|
||||
#include <list>
|
||||
#include <thread>
|
||||
|
||||
// Utils
|
||||
extern u64 get_system_time();
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "Emu/Cell/lv2/sys_event.h"
|
||||
#include "Emu/Cell/Modules/cellGcmSys.h"
|
||||
#include "Overlays/overlay_perf_metrics.h"
|
||||
#include "Utilities/date_time.h"
|
||||
|
||||
#include "Utilities/span.h"
|
||||
#include "Utilities/StrUtil.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user