diff options
| -rw-r--r-- | src/common/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 9 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.h | 3 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.cpp | 38 | ||||
| -rw-r--r-- | src/core/hle/service/hid/hid.h | 2 |
5 files changed, 56 insertions, 3 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 5d54516eb..0fb5d9708 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -192,4 +192,9 @@ create_target_directory_groups(common) | |||
| 192 | find_package(Boost 1.71 COMPONENTS context headers REQUIRED) | 192 | find_package(Boost 1.71 COMPONENTS context headers REQUIRED) |
| 193 | 193 | ||
| 194 | target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile) | 194 | target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile) |
| 195 | target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd xbyak) | 195 | target_link_libraries(common PRIVATE lz4::lz4 xbyak) |
| 196 | if (MSVC) | ||
| 197 | target_link_libraries(common PRIVATE zstd::zstd) | ||
| 198 | else() | ||
| 199 | target_link_libraries(common PRIVATE zstd) | ||
| 200 | endif() | ||
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index a03af8df4..2de4ed348 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -846,6 +846,15 @@ Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) { | |||
| 846 | } | 846 | } |
| 847 | } | 847 | } |
| 848 | 848 | ||
| 849 | bool Controller_NPad::IsUnintendedHomeButtonInputProtectionEnabled(u32 npad_id) const { | ||
| 850 | return unintended_home_button_input_protection[NPadIdToIndex(npad_id)]; | ||
| 851 | } | ||
| 852 | |||
| 853 | void Controller_NPad::SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled, | ||
| 854 | u32 npad_id) { | ||
| 855 | unintended_home_button_input_protection[NPadIdToIndex(npad_id)] = is_protection_enabled; | ||
| 856 | } | ||
| 857 | |||
| 849 | void Controller_NPad::SetVibrationEnabled(bool can_vibrate) { | 858 | void Controller_NPad::SetVibrationEnabled(bool can_vibrate) { |
| 850 | can_controllers_vibrate = can_vibrate; | 859 | can_controllers_vibrate = can_vibrate; |
| 851 | } | 860 | } |
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h index e65277c7b..fd5c5a6eb 100644 --- a/src/core/hle/service/hid/controllers/npad.h +++ b/src/core/hle/service/hid/controllers/npad.h | |||
| @@ -146,6 +146,8 @@ public: | |||
| 146 | bool IsSixAxisSensorAtRest() const; | 146 | bool IsSixAxisSensorAtRest() const; |
| 147 | void SetSixAxisEnabled(bool six_axis_status); | 147 | void SetSixAxisEnabled(bool six_axis_status); |
| 148 | LedPattern GetLedPattern(u32 npad_id); | 148 | LedPattern GetLedPattern(u32 npad_id); |
| 149 | bool IsUnintendedHomeButtonInputProtectionEnabled(u32 npad_id) const; | ||
| 150 | void SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled, u32 npad_id); | ||
| 149 | void SetVibrationEnabled(bool can_vibrate); | 151 | void SetVibrationEnabled(bool can_vibrate); |
| 150 | bool IsVibrationEnabled() const; | 152 | bool IsVibrationEnabled() const; |
| 151 | void ClearAllConnectedControllers(); | 153 | void ClearAllConnectedControllers(); |
| @@ -387,6 +389,7 @@ private: | |||
| 387 | std::array<Kernel::EventPair, 10> styleset_changed_events; | 389 | std::array<Kernel::EventPair, 10> styleset_changed_events; |
| 388 | Vibration last_processed_vibration{}; | 390 | Vibration last_processed_vibration{}; |
| 389 | std::array<ControllerHolder, 10> connected_controllers{}; | 391 | std::array<ControllerHolder, 10> connected_controllers{}; |
| 392 | std::array<bool, 10> unintended_home_button_input_protection{}; | ||
| 390 | GyroscopeZeroDriftMode gyroscope_zero_drift_mode{GyroscopeZeroDriftMode::Standard}; | 393 | GyroscopeZeroDriftMode gyroscope_zero_drift_mode{GyroscopeZeroDriftMode::Standard}; |
| 391 | bool can_controllers_vibrate{true}; | 394 | bool can_controllers_vibrate{true}; |
| 392 | bool sixaxis_sensors_enabled{true}; | 395 | bool sixaxis_sensors_enabled{true}; |
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index 001427fd8..71dbaba7f 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp | |||
| @@ -224,8 +224,8 @@ Hid::Hid(Core::System& system) : ServiceFramework("hid"), system(system) { | |||
| 224 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, | 224 | {128, &Hid::SetNpadHandheldActivationMode, "SetNpadHandheldActivationMode"}, |
| 225 | {129, &Hid::GetNpadHandheldActivationMode, "GetNpadHandheldActivationMode"}, | 225 | {129, &Hid::GetNpadHandheldActivationMode, "GetNpadHandheldActivationMode"}, |
| 226 | {130, &Hid::SwapNpadAssignment, "SwapNpadAssignment"}, | 226 | {130, &Hid::SwapNpadAssignment, "SwapNpadAssignment"}, |
| 227 | {131, nullptr, "IsUnintendedHomeButtonInputProtectionEnabled"}, | 227 | {131, &Hid::IsUnintendedHomeButtonInputProtectionEnabled, "IsUnintendedHomeButtonInputProtectionEnabled"}, |
| 228 | {132, nullptr, "EnableUnintendedHomeButtonInputProtection"}, | 228 | {132, &Hid::EnableUnintendedHomeButtonInputProtection, "EnableUnintendedHomeButtonInputProtection"}, |
| 229 | {133, nullptr, "SetNpadJoyAssignmentModeSingleWithDestination"}, | 229 | {133, nullptr, "SetNpadJoyAssignmentModeSingleWithDestination"}, |
| 230 | {134, nullptr, "SetNpadAnalogStickUseCenterClamp"}, | 230 | {134, nullptr, "SetNpadAnalogStickUseCenterClamp"}, |
| 231 | {135, nullptr, "SetNpadCaptureButtonAssignment"}, | 231 | {135, nullptr, "SetNpadCaptureButtonAssignment"}, |
| @@ -809,6 +809,40 @@ void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) { | |||
| 809 | } | 809 | } |
| 810 | } | 810 | } |
| 811 | 811 | ||
| 812 | void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx) { | ||
| 813 | IPC::RequestParser rp{ctx}; | ||
| 814 | const auto npad_id{rp.Pop<u32>()}; | ||
| 815 | const auto applet_resource_user_id{rp.Pop<u64>()}; | ||
| 816 | |||
| 817 | LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id, | ||
| 818 | applet_resource_user_id); | ||
| 819 | |||
| 820 | auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad); | ||
| 821 | |||
| 822 | IPC::ResponseBuilder rb{ctx, 3}; | ||
| 823 | rb.Push(RESULT_SUCCESS); | ||
| 824 | rb.Push<bool>(controller.IsUnintendedHomeButtonInputProtectionEnabled(npad_id)); | ||
| 825 | } | ||
| 826 | |||
| 827 | void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) { | ||
| 828 | IPC::RequestParser rp{ctx}; | ||
| 829 | const auto unintended_home_button_input_protection{rp.Pop<bool>()}; | ||
| 830 | const auto npad_id{rp.Pop<u32>()}; | ||
| 831 | const auto applet_resource_user_id{rp.Pop<u64>()}; | ||
| 832 | |||
| 833 | LOG_WARNING(Service_HID, | ||
| 834 | "(STUBBED) called, unintended_home_button_input_protection={}, npad_id={}," | ||
| 835 | "applet_resource_user_id={}", | ||
| 836 | npad_id, unintended_home_button_input_protection, applet_resource_user_id); | ||
| 837 | |||
| 838 | auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad); | ||
| 839 | controller.SetUnintendedHomeButtonInputProtectionEnabled( | ||
| 840 | unintended_home_button_input_protection, npad_id); | ||
| 841 | |||
| 842 | IPC::ResponseBuilder rb{ctx, 2}; | ||
| 843 | rb.Push(RESULT_SUCCESS); | ||
| 844 | } | ||
| 845 | |||
| 812 | void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) { | 846 | void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) { |
| 813 | IPC::RequestParser rp{ctx}; | 847 | IPC::RequestParser rp{ctx}; |
| 814 | const auto applet_resource_user_id{rp.Pop<u64>()}; | 848 | const auto applet_resource_user_id{rp.Pop<u64>()}; |
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h index 1c7d39b67..fd0372b18 100644 --- a/src/core/hle/service/hid/hid.h +++ b/src/core/hle/service/hid/hid.h | |||
| @@ -123,6 +123,8 @@ private: | |||
| 123 | void SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); | 123 | void SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); |
| 124 | void GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); | 124 | void GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx); |
| 125 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); | 125 | void SwapNpadAssignment(Kernel::HLERequestContext& ctx); |
| 126 | void IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx); | ||
| 127 | void EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx); | ||
| 126 | void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx); | 128 | void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx); |
| 127 | void EndPermitVibrationSession(Kernel::HLERequestContext& ctx); | 129 | void EndPermitVibrationSession(Kernel::HLERequestContext& ctx); |
| 128 | void SendVibrationValue(Kernel::HLERequestContext& ctx); | 130 | void SendVibrationValue(Kernel::HLERequestContext& ctx); |