diff --git a/Utilities/rXml.h b/Utilities/rXml.h index ab5b2f1cb1..a68069ef57 100644 --- a/Utilities/rXml.h +++ b/Utilities/rXml.h @@ -1,6 +1,7 @@ -#pragma once +#pragma once #include +#include struct rXmlNode { diff --git a/rpcs3/Emu/CMakeLists.txt b/rpcs3/Emu/CMakeLists.txt index 6142d581b9..a630e9616c 100644 --- a/rpcs3/Emu/CMakeLists.txt +++ b/rpcs3/Emu/CMakeLists.txt @@ -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 diff --git a/rpcs3/Emu/Cell/Modules/cellGem.cpp b/rpcs3/Emu/Cell/Modules/cellGem.cpp index 148a6d54c0..4d0235c0f5 100644 --- a/rpcs3/Emu/Cell/Modules/cellGem.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGem.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); diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp index 5e10191add..da4c8c5be1 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp @@ -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" diff --git a/rpcs3/Emu/Cell/Modules/cellPad.cpp b/rpcs3/Emu/Cell/Modules/cellPad.cpp index fec83fdc42..663235c160 100644 --- a/rpcs3/Emu/Cell/Modules/cellPad.cpp +++ b/rpcs3/Emu/Cell/Modules/cellPad.cpp @@ -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" diff --git a/rpcs3/Emu/Cell/Modules/cellSaveData.h b/rpcs3/Emu/Cell/Modules/cellSaveData.h index f502539266..c649ae617a 100644 --- a/rpcs3/Emu/Cell/Modules/cellSaveData.h +++ b/rpcs3/Emu/Cell/Modules/cellSaveData.h @@ -1,5 +1,6 @@ #pragma once +#include "stdafx.h" #include // Return codes diff --git a/rpcs3/Emu/Cell/Modules/sceNpTrophy.h b/rpcs3/Emu/Cell/Modules/sceNpTrophy.h index e75dcfdf10..e7b33c54f2 100644 --- a/rpcs3/Emu/Cell/Modules/sceNpTrophy.h +++ b/rpcs3/Emu/Cell/Modules/sceNpTrophy.h @@ -1,5 +1,6 @@ #pragma once +#include "stdafx.h" #include "Emu/Memory/vm_ptr.h" #include diff --git a/rpcs3/Emu/Io/PadHandler.h b/rpcs3/Emu/Io/PadHandler.h index 2cdcce6491..3b3b0027af 100644 --- a/rpcs3/Emu/Io/PadHandler.h +++ b/rpcs3/Emu/Io/PadHandler.h @@ -1,285 +1,10 @@ #pragma once #include +#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