summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/settings.cpp7
-rw-r--r--src/core/hid/emulated_devices.cpp83
-rw-r--r--src/core/hid/emulated_devices.h29
-rw-r--r--src/core/hle/service/acc/acc.cpp8
-rw-r--r--src/core/hle/service/acc/acc_su.cpp4
-rw-r--r--src/core/hle/service/am/am.cpp6
-rw-r--r--src/core/hle/service/aoc/aoc_u.cpp3
-rw-r--r--src/core/hle/service/audio/hwopus.cpp2
-rw-r--r--src/core/hle/service/hid/controllers/gesture.cpp5
-rw-r--r--src/core/hle/service/hid/controllers/mouse.cpp3
-rw-r--r--src/core/hle/service/hid/controllers/touchscreen.cpp5
-rw-r--r--src/core/hle/service/hid/hid.cpp6
-rw-r--r--src/core/hle/service/hid/hid.h1
-rw-r--r--src/core/hle/service/hid/hidbus.cpp26
-rw-r--r--src/core/hle/service/hid/hidbus.h4
-rw-r--r--src/core/hle/service/ncm/ncm.cpp1
-rw-r--r--src/core/hle/service/ns/ns.cpp12
-rw-r--r--src/core/hle/service/sockets/bsd.cpp3
-rw-r--r--src/core/hle/service/ssl/ssl.cpp10
-rw-r--r--src/core/hle/service/vi/vi.cpp5
-rw-r--r--src/core/hle/service/vi/vi_m.cpp4
-rw-r--r--src/yuzu/configuration/config.cpp4
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp2
23 files changed, 148 insertions, 85 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 49b41c158..749ac213f 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -76,6 +76,13 @@ void LogSettings() {
76 log_setting("Debugging_GDBStub", values.use_gdbstub.GetValue()); 76 log_setting("Debugging_GDBStub", values.use_gdbstub.GetValue());
77 log_setting("Input_EnableMotion", values.motion_enabled.GetValue()); 77 log_setting("Input_EnableMotion", values.motion_enabled.GetValue());
78 log_setting("Input_EnableVibration", values.vibration_enabled.GetValue()); 78 log_setting("Input_EnableVibration", values.vibration_enabled.GetValue());
79 log_setting("Input_EnableTouch", values.touchscreen.enabled);
80 log_setting("Input_EnableMouse", values.mouse_enabled.GetValue());
81 log_setting("Input_EnableKeyboard", values.keyboard_enabled.GetValue());
82 log_setting("Input_EnableRingController", values.enable_ring_controller.GetValue());
83 log_setting("Input_EnableIrSensor", values.enable_ir_sensor.GetValue());
84 log_setting("Input_EnableCustomJoycon", values.enable_joycon_driver.GetValue());
85 log_setting("Input_EnableCustomProController", values.enable_procon_driver.GetValue());
79 log_setting("Input_EnableRawInput", values.enable_raw_input.GetValue()); 86 log_setting("Input_EnableRawInput", values.enable_raw_input.GetValue());
80} 87}
81 88
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp
index 578a6ff61..8e165dded 100644
--- a/src/core/hid/emulated_devices.cpp
+++ b/src/core/hid/emulated_devices.cpp
@@ -19,52 +19,53 @@ void EmulatedDevices::ReloadFromSettings() {
19 19
20void EmulatedDevices::ReloadInput() { 20void EmulatedDevices::ReloadInput() {
21 // If you load any device here add the equivalent to the UnloadInput() function 21 // If you load any device here add the equivalent to the UnloadInput() function
22
23 // Native Mouse is mapped on port 1, pad 0
24 const Common::ParamPackage mouse_params{"engine:mouse,port:1,pad:0"};
25
26 // Keyboard keys is mapped on port 1, pad 0 for normal keys, pad 1 for moddifier keys
27 const Common::ParamPackage keyboard_params{"engine:keyboard,port:1"};
28
22 std::size_t key_index = 0; 29 std::size_t key_index = 0;
23 for (auto& mouse_device : mouse_button_devices) { 30 for (auto& mouse_device : mouse_button_devices) {
24 Common::ParamPackage mouse_params; 31 Common::ParamPackage mouse_button_params = mouse_params;
25 mouse_params.Set("engine", "mouse"); 32 mouse_button_params.Set("button", static_cast<int>(key_index));
26 mouse_params.Set("button", static_cast<int>(key_index)); 33 mouse_device = Common::Input::CreateInputDevice(mouse_button_params);
27 mouse_device = Common::Input::CreateInputDevice(mouse_params);
28 key_index++; 34 key_index++;
29 } 35 }
30 36
31 mouse_stick_device = 37 Common::ParamPackage mouse_position_params = mouse_params;
32 Common::Input::CreateInputDeviceFromString("engine:mouse,axis_x:0,axis_y:1"); 38 mouse_position_params.Set("axis_x", 0);
39 mouse_position_params.Set("axis_y", 1);
40 mouse_position_params.Set("deadzone", 0.0f);
41 mouse_position_params.Set("range", 1.0f);
42 mouse_position_params.Set("threshold", 0.0f);
43 mouse_stick_device = Common::Input::CreateInputDevice(mouse_position_params);
33 44
34 // First two axis are reserved for mouse position 45 // First two axis are reserved for mouse position
35 key_index = 2; 46 key_index = 2;
36 for (auto& mouse_device : mouse_analog_devices) { 47 for (auto& mouse_device : mouse_wheel_devices) {
37 // Mouse axis are only mapped on port 1, pad 0 48 Common::ParamPackage mouse_wheel_params = mouse_params;
38 Common::ParamPackage mouse_params; 49 mouse_wheel_params.Set("axis", static_cast<int>(key_index));
39 mouse_params.Set("engine", "mouse"); 50 mouse_device = Common::Input::CreateInputDevice(mouse_wheel_params);
40 mouse_params.Set("axis", static_cast<int>(key_index));
41 mouse_params.Set("port", 1);
42 mouse_params.Set("pad", 0);
43 mouse_device = Common::Input::CreateInputDevice(mouse_params);
44 key_index++; 51 key_index++;
45 } 52 }
46 53
47 key_index = 0; 54 key_index = 0;
48 for (auto& keyboard_device : keyboard_devices) { 55 for (auto& keyboard_device : keyboard_devices) {
49 // Keyboard keys are only mapped on port 1, pad 0 56 Common::ParamPackage keyboard_key_params = keyboard_params;
50 Common::ParamPackage keyboard_params; 57 keyboard_key_params.Set("button", static_cast<int>(key_index));
51 keyboard_params.Set("engine", "keyboard"); 58 keyboard_key_params.Set("pad", 0);
52 keyboard_params.Set("button", static_cast<int>(key_index)); 59 keyboard_device = Common::Input::CreateInputDevice(keyboard_key_params);
53 keyboard_params.Set("port", 1);
54 keyboard_params.Set("pad", 0);
55 keyboard_device = Common::Input::CreateInputDevice(keyboard_params);
56 key_index++; 60 key_index++;
57 } 61 }
58 62
59 key_index = 0; 63 key_index = 0;
60 for (auto& keyboard_device : keyboard_modifier_devices) { 64 for (auto& keyboard_device : keyboard_modifier_devices) {
61 // Keyboard moddifiers are only mapped on port 1, pad 1 65 Common::ParamPackage keyboard_moddifier_params = keyboard_params;
62 Common::ParamPackage keyboard_params; 66 keyboard_moddifier_params.Set("button", static_cast<int>(key_index));
63 keyboard_params.Set("engine", "keyboard"); 67 keyboard_moddifier_params.Set("pad", 1);
64 keyboard_params.Set("button", static_cast<int>(key_index)); 68 keyboard_device = Common::Input::CreateInputDevice(keyboard_moddifier_params);
65 keyboard_params.Set("port", 1);
66 keyboard_params.Set("pad", 1);
67 keyboard_device = Common::Input::CreateInputDevice(keyboard_params);
68 key_index++; 69 key_index++;
69 } 70 }
70 71
@@ -80,14 +81,14 @@ void EmulatedDevices::ReloadInput() {
80 }); 81 });
81 } 82 }
82 83
83 for (std::size_t index = 0; index < mouse_analog_devices.size(); ++index) { 84 for (std::size_t index = 0; index < mouse_wheel_devices.size(); ++index) {
84 if (!mouse_analog_devices[index]) { 85 if (!mouse_wheel_devices[index]) {
85 continue; 86 continue;
86 } 87 }
87 mouse_analog_devices[index]->SetCallback({ 88 mouse_wheel_devices[index]->SetCallback({
88 .on_change = 89 .on_change =
89 [this, index](const Common::Input::CallbackStatus& callback) { 90 [this, index](const Common::Input::CallbackStatus& callback) {
90 SetMouseAnalog(callback, index); 91 SetMouseWheel(callback, index);
91 }, 92 },
92 }); 93 });
93 } 94 }
@@ -95,7 +96,9 @@ void EmulatedDevices::ReloadInput() {
95 if (mouse_stick_device) { 96 if (mouse_stick_device) {
96 mouse_stick_device->SetCallback({ 97 mouse_stick_device->SetCallback({
97 .on_change = 98 .on_change =
98 [this](const Common::Input::CallbackStatus& callback) { SetMouseStick(callback); }, 99 [this](const Common::Input::CallbackStatus& callback) {
100 SetMousePosition(callback);
101 },
99 }); 102 });
100 } 103 }
101 104
@@ -128,7 +131,7 @@ void EmulatedDevices::UnloadInput() {
128 for (auto& button : mouse_button_devices) { 131 for (auto& button : mouse_button_devices) {
129 button.reset(); 132 button.reset();
130 } 133 }
131 for (auto& analog : mouse_analog_devices) { 134 for (auto& analog : mouse_wheel_devices) {
132 analog.reset(); 135 analog.reset();
133 } 136 }
134 mouse_stick_device.reset(); 137 mouse_stick_device.reset();
@@ -362,18 +365,18 @@ void EmulatedDevices::SetMouseButton(const Common::Input::CallbackStatus& callba
362 TriggerOnChange(DeviceTriggerType::Mouse); 365 TriggerOnChange(DeviceTriggerType::Mouse);
363} 366}
364 367
365void EmulatedDevices::SetMouseAnalog(const Common::Input::CallbackStatus& callback, 368void EmulatedDevices::SetMouseWheel(const Common::Input::CallbackStatus& callback,
366 std::size_t index) { 369 std::size_t index) {
367 if (index >= device_status.mouse_analog_values.size()) { 370 if (index >= device_status.mouse_wheel_values.size()) {
368 return; 371 return;
369 } 372 }
370 std::unique_lock lock{mutex}; 373 std::unique_lock lock{mutex};
371 const auto analog_value = TransformToAnalog(callback); 374 const auto analog_value = TransformToAnalog(callback);
372 375
373 device_status.mouse_analog_values[index] = analog_value; 376 device_status.mouse_wheel_values[index] = analog_value;
374 377
375 if (is_configuring) { 378 if (is_configuring) {
376 device_status.mouse_position_state = {}; 379 device_status.mouse_wheel_state = {};
377 lock.unlock(); 380 lock.unlock();
378 TriggerOnChange(DeviceTriggerType::Mouse); 381 TriggerOnChange(DeviceTriggerType::Mouse);
379 return; 382 return;
@@ -392,7 +395,7 @@ void EmulatedDevices::SetMouseAnalog(const Common::Input::CallbackStatus& callba
392 TriggerOnChange(DeviceTriggerType::Mouse); 395 TriggerOnChange(DeviceTriggerType::Mouse);
393} 396}
394 397
395void EmulatedDevices::SetMouseStick(const Common::Input::CallbackStatus& callback) { 398void EmulatedDevices::SetMousePosition(const Common::Input::CallbackStatus& callback) {
396 std::unique_lock lock{mutex}; 399 std::unique_lock lock{mutex};
397 const auto touch_value = TransformToTouch(callback); 400 const auto touch_value = TransformToTouch(callback);
398 401
diff --git a/src/core/hid/emulated_devices.h b/src/core/hid/emulated_devices.h
index 76f9150df..caf2ca659 100644
--- a/src/core/hid/emulated_devices.h
+++ b/src/core/hid/emulated_devices.h
@@ -23,8 +23,8 @@ using KeyboardModifierDevices = std::array<std::unique_ptr<Common::Input::InputD
23 Settings::NativeKeyboard::NumKeyboardMods>; 23 Settings::NativeKeyboard::NumKeyboardMods>;
24using MouseButtonDevices = std::array<std::unique_ptr<Common::Input::InputDevice>, 24using MouseButtonDevices = std::array<std::unique_ptr<Common::Input::InputDevice>,
25 Settings::NativeMouseButton::NumMouseButtons>; 25 Settings::NativeMouseButton::NumMouseButtons>;
26using MouseAnalogDevices = std::array<std::unique_ptr<Common::Input::InputDevice>, 26using MouseWheelDevices = std::array<std::unique_ptr<Common::Input::InputDevice>,
27 Settings::NativeMouseWheel::NumMouseWheels>; 27 Settings::NativeMouseWheel::NumMouseWheels>;
28using MouseStickDevice = std::unique_ptr<Common::Input::InputDevice>; 28using MouseStickDevice = std::unique_ptr<Common::Input::InputDevice>;
29 29
30using MouseButtonParams = 30using MouseButtonParams =
@@ -36,7 +36,7 @@ using KeyboardModifierValues =
36 std::array<Common::Input::ButtonStatus, Settings::NativeKeyboard::NumKeyboardMods>; 36 std::array<Common::Input::ButtonStatus, Settings::NativeKeyboard::NumKeyboardMods>;
37using MouseButtonValues = 37using MouseButtonValues =
38 std::array<Common::Input::ButtonStatus, Settings::NativeMouseButton::NumMouseButtons>; 38 std::array<Common::Input::ButtonStatus, Settings::NativeMouseButton::NumMouseButtons>;
39using MouseAnalogValues = 39using MouseWheelValues =
40 std::array<Common::Input::AnalogStatus, Settings::NativeMouseWheel::NumMouseWheels>; 40 std::array<Common::Input::AnalogStatus, Settings::NativeMouseWheel::NumMouseWheels>;
41using MouseStickValue = Common::Input::TouchStatus; 41using MouseStickValue = Common::Input::TouchStatus;
42 42
@@ -50,7 +50,7 @@ struct DeviceStatus {
50 KeyboardValues keyboard_values{}; 50 KeyboardValues keyboard_values{};
51 KeyboardModifierValues keyboard_moddifier_values{}; 51 KeyboardModifierValues keyboard_moddifier_values{};
52 MouseButtonValues mouse_button_values{}; 52 MouseButtonValues mouse_button_values{};
53 MouseAnalogValues mouse_analog_values{}; 53 MouseWheelValues mouse_wheel_values{};
54 MouseStickValue mouse_stick_value{}; 54 MouseStickValue mouse_stick_value{};
55 55
56 // Data for HID serices 56 // Data for HID serices
@@ -111,15 +111,6 @@ public:
111 /// Reverts any mapped changes made that weren't saved 111 /// Reverts any mapped changes made that weren't saved
112 void RestoreConfig(); 112 void RestoreConfig();
113 113
114 // Returns the current mapped ring device
115 Common::ParamPackage GetRingParam() const;
116
117 /**
118 * Updates the current mapped ring device
119 * @param param ParamPackage with ring sensor data to be mapped
120 */
121 void SetRingParam(Common::ParamPackage param);
122
123 /// Returns the latest status of button input from the keyboard with parameters 114 /// Returns the latest status of button input from the keyboard with parameters
124 KeyboardValues GetKeyboardValues() const; 115 KeyboardValues GetKeyboardValues() const;
125 116
@@ -187,19 +178,13 @@ private:
187 * @param callback A CallbackStatus containing the wheel status 178 * @param callback A CallbackStatus containing the wheel status
188 * @param index wheel ID to be updated 179 * @param index wheel ID to be updated
189 */ 180 */
190 void SetMouseAnalog(const Common::Input::CallbackStatus& callback, std::size_t index); 181 void SetMouseWheel(const Common::Input::CallbackStatus& callback, std::size_t index);
191 182
192 /** 183 /**
193 * Updates the mouse position status of the mouse device 184 * Updates the mouse position status of the mouse device
194 * @param callback A CallbackStatus containing the position status 185 * @param callback A CallbackStatus containing the position status
195 */ 186 */
196 void SetMouseStick(const Common::Input::CallbackStatus& callback); 187 void SetMousePosition(const Common::Input::CallbackStatus& callback);
197
198 /**
199 * Updates the ring analog sensor status of the ring controller
200 * @param callback A CallbackStatus containing the force status
201 */
202 void SetRingAnalog(const Common::Input::CallbackStatus& callback);
203 188
204 /** 189 /**
205 * Triggers a callback that something has changed on the device status 190 * Triggers a callback that something has changed on the device status
@@ -212,7 +197,7 @@ private:
212 KeyboardDevices keyboard_devices; 197 KeyboardDevices keyboard_devices;
213 KeyboardModifierDevices keyboard_modifier_devices; 198 KeyboardModifierDevices keyboard_modifier_devices;
214 MouseButtonDevices mouse_button_devices; 199 MouseButtonDevices mouse_button_devices;
215 MouseAnalogDevices mouse_analog_devices; 200 MouseWheelDevices mouse_wheel_devices;
216 MouseStickDevice mouse_stick_device; 201 MouseStickDevice mouse_stick_device;
217 202
218 mutable std::mutex mutex; 203 mutable std::mutex mutex;
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 1495d64de..1241fcdff 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -76,6 +76,8 @@ public:
76 {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+ 76 {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+
77 {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+ 77 {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+
78 {150, nullptr, "CreateAuthorizationRequest"}, 78 {150, nullptr, "CreateAuthorizationRequest"},
79 {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"},
80 {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
79 }; 81 };
80 // clang-format on 82 // clang-format on
81 83
@@ -136,7 +138,10 @@ public:
136 {140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+ 138 {140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+
137 {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+ 139 {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+
138 {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+ 140 {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+
141 {143, nullptr, "GetNetworkServiceLicenseCacheEx"},
139 {150, nullptr, "CreateAuthorizationRequest"}, 142 {150, nullptr, "CreateAuthorizationRequest"},
143 {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"},
144 {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"},
140 {200, nullptr, "IsRegistered"}, 145 {200, nullptr, "IsRegistered"},
141 {201, nullptr, "RegisterAsync"}, 146 {201, nullptr, "RegisterAsync"},
142 {202, nullptr, "UnregisterAsync"}, 147 {202, nullptr, "UnregisterAsync"},
@@ -242,6 +247,7 @@ public:
242 {100, nullptr, "GetRequestWithTheme"}, 247 {100, nullptr, "GetRequestWithTheme"},
243 {101, nullptr, "IsNetworkServiceAccountReplaced"}, 248 {101, nullptr, "IsNetworkServiceAccountReplaced"},
244 {199, nullptr, "GetUrlForIntroductionOfExtraMembership"}, // 2.0.0 - 5.1.0 249 {199, nullptr, "GetUrlForIntroductionOfExtraMembership"}, // 2.0.0 - 5.1.0
250 {200, nullptr, "ApplyAsyncWithAuthorizedToken"},
245 }; 251 };
246 // clang-format on 252 // clang-format on
247 253
@@ -647,9 +653,11 @@ public:
647 {0, nullptr, "EnsureAuthenticationTokenCacheAsync"}, 653 {0, nullptr, "EnsureAuthenticationTokenCacheAsync"},
648 {1, nullptr, "LoadAuthenticationTokenCache"}, 654 {1, nullptr, "LoadAuthenticationTokenCache"},
649 {2, nullptr, "InvalidateAuthenticationTokenCache"}, 655 {2, nullptr, "InvalidateAuthenticationTokenCache"},
656 {3, nullptr, "IsDeviceAuthenticationTokenCacheAvailable"},
650 {10, nullptr, "EnsureEdgeTokenCacheAsync"}, 657 {10, nullptr, "EnsureEdgeTokenCacheAsync"},
651 {11, nullptr, "LoadEdgeTokenCache"}, 658 {11, nullptr, "LoadEdgeTokenCache"},
652 {12, nullptr, "InvalidateEdgeTokenCache"}, 659 {12, nullptr, "InvalidateEdgeTokenCache"},
660 {13, nullptr, "IsEdgeTokenCacheAvailable"},
653 {20, nullptr, "EnsureApplicationAuthenticationCacheAsync"}, 661 {20, nullptr, "EnsureApplicationAuthenticationCacheAsync"},
654 {21, nullptr, "LoadApplicationAuthenticationTokenCache"}, 662 {21, nullptr, "LoadApplicationAuthenticationTokenCache"},
655 {22, nullptr, "LoadApplicationNetworkServiceClientConfigCache"}, 663 {22, nullptr, "LoadApplicationNetworkServiceClientConfigCache"},
diff --git a/src/core/hle/service/acc/acc_su.cpp b/src/core/hle/service/acc/acc_su.cpp
index b6bfd6155..d9882ecd3 100644
--- a/src/core/hle/service/acc/acc_su.cpp
+++ b/src/core/hle/service/acc/acc_su.cpp
@@ -55,6 +55,10 @@ ACC_SU::ACC_SU(std::shared_ptr<Module> module_, std::shared_ptr<ProfileManager>
55 {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"}, 55 {290, nullptr, "ProxyProcedureForGuestLoginWithNintendoAccount"},
56 {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"}, 56 {291, nullptr, "ProxyProcedureForFloatingRegistrationWithNintendoAccount"},
57 {299, nullptr, "SuspendBackgroundDaemon"}, 57 {299, nullptr, "SuspendBackgroundDaemon"},
58 {900, nullptr, "SetUserUnqualifiedForDebug"},
59 {901, nullptr, "UnsetUserUnqualifiedForDebug"},
60 {902, nullptr, "ListUsersUnqualifiedForDebug"},
61 {910, nullptr, "RefreshFirmwareSettingsForDebug"},
58 {997, nullptr, "DebugInvalidateTokenCacheForUser"}, 62 {997, nullptr, "DebugInvalidateTokenCacheForUser"},
59 {998, nullptr, "DebugSetUserStateClose"}, 63 {998, nullptr, "DebugSetUserStateClose"},
60 {999, nullptr, "DebugSetUserStateOpen"}, 64 {999, nullptr, "DebugSetUserStateOpen"},
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index beb2da06e..26af499d2 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -226,6 +226,8 @@ IDebugFunctions::IDebugFunctions(Core::System& system_)
226 {30, nullptr, "RequestLaunchApplicationWithUserAndArgumentForDebug"}, 226 {30, nullptr, "RequestLaunchApplicationWithUserAndArgumentForDebug"},
227 {31, nullptr, "RequestLaunchApplicationByApplicationLaunchInfoForDebug"}, 227 {31, nullptr, "RequestLaunchApplicationByApplicationLaunchInfoForDebug"},
228 {40, nullptr, "GetAppletResourceUsageInfo"}, 228 {40, nullptr, "GetAppletResourceUsageInfo"},
229 {50, nullptr, "AddSystemProgramIdAndAppletIdForDebug"},
230 {51, nullptr, "AddOperationConfirmedLibraryAppletIdForDebug"},
229 {100, nullptr, "SetCpuBoostModeForApplet"}, 231 {100, nullptr, "SetCpuBoostModeForApplet"},
230 {101, nullptr, "CancelCpuBoostModeForApplet"}, 232 {101, nullptr, "CancelCpuBoostModeForApplet"},
231 {110, nullptr, "PushToAppletBoundChannelForDebug"}, 233 {110, nullptr, "PushToAppletBoundChannelForDebug"},
@@ -237,6 +239,8 @@ IDebugFunctions::IDebugFunctions(Core::System& system_)
237 {131, nullptr, "FriendInvitationClearApplicationParameter"}, 239 {131, nullptr, "FriendInvitationClearApplicationParameter"},
238 {132, nullptr, "FriendInvitationPushApplicationParameter"}, 240 {132, nullptr, "FriendInvitationPushApplicationParameter"},
239 {140, nullptr, "RestrictPowerOperationForSecureLaunchModeForDebug"}, 241 {140, nullptr, "RestrictPowerOperationForSecureLaunchModeForDebug"},
242 {200, nullptr, "CreateFloatingLibraryAppletAccepterForDebug"},
243 {300, nullptr, "TerminateAllRunningApplicationsForDebug"},
240 {900, nullptr, "GetGrcProcessLaunchedSystemEvent"}, 244 {900, nullptr, "GetGrcProcessLaunchedSystemEvent"},
241 }; 245 };
242 // clang-format on 246 // clang-format on
@@ -1855,6 +1859,8 @@ IHomeMenuFunctions::IHomeMenuFunctions(Core::System& system_)
1855 {31, nullptr, "GetWriterLockAccessorEx"}, 1859 {31, nullptr, "GetWriterLockAccessorEx"},
1856 {40, nullptr, "IsSleepEnabled"}, 1860 {40, nullptr, "IsSleepEnabled"},
1857 {41, nullptr, "IsRebootEnabled"}, 1861 {41, nullptr, "IsRebootEnabled"},
1862 {50, nullptr, "LaunchSystemApplet"},
1863 {51, nullptr, "LaunchStarter"},
1858 {100, nullptr, "PopRequestLaunchApplicationForDebug"}, 1864 {100, nullptr, "PopRequestLaunchApplicationForDebug"},
1859 {110, nullptr, "IsForceTerminateApplicationDisabledForDebug"}, 1865 {110, nullptr, "IsForceTerminateApplicationDisabledForDebug"},
1860 {200, nullptr, "LaunchDevMenu"}, 1866 {200, nullptr, "LaunchDevMenu"},
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index 7264f23f9..1bbf057cb 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -129,6 +129,9 @@ AOC_U::AOC_U(Core::System& system_)
129 {101, &AOC_U::CreatePermanentEcPurchasedEventManager, "CreatePermanentEcPurchasedEventManager"}, 129 {101, &AOC_U::CreatePermanentEcPurchasedEventManager, "CreatePermanentEcPurchasedEventManager"},
130 {110, nullptr, "CreateContentsServiceManager"}, 130 {110, nullptr, "CreateContentsServiceManager"},
131 {200, nullptr, "SetRequiredAddOnContentsOnContentsAvailabilityTransition"}, 131 {200, nullptr, "SetRequiredAddOnContentsOnContentsAvailabilityTransition"},
132 {300, nullptr, "SetupHostAddOnContent"},
133 {301, nullptr, "GetRegisteredAddOnContentPath"},
134 {302, nullptr, "UpdateCachedList"},
132 }; 135 };
133 // clang-format on 136 // clang-format on
134 137
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp
index e01f87356..3db3fe188 100644
--- a/src/core/hle/service/audio/hwopus.cpp
+++ b/src/core/hle/service/audio/hwopus.cpp
@@ -362,6 +362,8 @@ HwOpus::HwOpus(Core::System& system_) : ServiceFramework{system_, "hwopus"} {
362 {5, &HwOpus::GetWorkBufferSizeEx, "GetWorkBufferSizeEx"}, 362 {5, &HwOpus::GetWorkBufferSizeEx, "GetWorkBufferSizeEx"},
363 {6, nullptr, "OpenHardwareOpusDecoderForMultiStreamEx"}, 363 {6, nullptr, "OpenHardwareOpusDecoderForMultiStreamEx"},
364 {7, &HwOpus::GetWorkBufferSizeForMultiStreamEx, "GetWorkBufferSizeForMultiStreamEx"}, 364 {7, &HwOpus::GetWorkBufferSizeForMultiStreamEx, "GetWorkBufferSizeForMultiStreamEx"},
365 {8, nullptr, "GetWorkBufferSizeExEx"},
366 {9, nullptr, "GetWorkBufferSizeForMultiStreamExEx"},
365 }; 367 };
366 RegisterHandlers(functions); 368 RegisterHandlers(functions);
367} 369}
diff --git a/src/core/hle/service/hid/controllers/gesture.cpp b/src/core/hle/service/hid/controllers/gesture.cpp
index 32e0708ba..de0090cc5 100644
--- a/src/core/hle/service/hid/controllers/gesture.cpp
+++ b/src/core/hle/service/hid/controllers/gesture.cpp
@@ -65,6 +65,11 @@ void Controller_Gesture::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
65} 65}
66 66
67void Controller_Gesture::ReadTouchInput() { 67void Controller_Gesture::ReadTouchInput() {
68 if (!Settings::values.touchscreen.enabled) {
69 fingers = {};
70 return;
71 }
72
68 const auto touch_status = console->GetTouch(); 73 const auto touch_status = console->GetTouch();
69 for (std::size_t id = 0; id < fingers.size(); ++id) { 74 for (std::size_t id = 0; id < fingers.size(); ++id) {
70 fingers[id] = touch_status[id]; 75 fingers[id] = touch_status[id];
diff --git a/src/core/hle/service/hid/controllers/mouse.cpp b/src/core/hle/service/hid/controllers/mouse.cpp
index b11cb438d..0afc66681 100644
--- a/src/core/hle/service/hid/controllers/mouse.cpp
+++ b/src/core/hle/service/hid/controllers/mouse.cpp
@@ -33,10 +33,11 @@ void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
33 return; 33 return;
34 } 34 }
35 35
36 next_state = {};
37
36 const auto& last_entry = shared_memory->mouse_lifo.ReadCurrentEntry().state; 38 const auto& last_entry = shared_memory->mouse_lifo.ReadCurrentEntry().state;
37 next_state.sampling_number = last_entry.sampling_number + 1; 39 next_state.sampling_number = last_entry.sampling_number + 1;
38 40
39 next_state.attribute.raw = 0;
40 if (Settings::values.mouse_enabled) { 41 if (Settings::values.mouse_enabled) {
41 const auto& mouse_button_state = emulated_devices->GetMouseButtons(); 42 const auto& mouse_button_state = emulated_devices->GetMouseButtons();
42 const auto& mouse_position_state = emulated_devices->GetMousePosition(); 43 const auto& mouse_position_state = emulated_devices->GetMousePosition();
diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp
index 1da8d3eb0..d90a4e732 100644
--- a/src/core/hle/service/hid/controllers/touchscreen.cpp
+++ b/src/core/hle/service/hid/controllers/touchscreen.cpp
@@ -58,6 +58,11 @@ void Controller_Touchscreen::OnUpdate(const Core::Timing::CoreTiming& core_timin
58 } 58 }
59 59
60 if (!finger.pressed && current_touch.pressed) { 60 if (!finger.pressed && current_touch.pressed) {
61 // Ignore all touch fingers if disabled
62 if (!Settings::values.touchscreen.enabled) {
63 continue;
64 }
65
61 finger.attribute.start_touch.Assign(1); 66 finger.attribute.start_touch.Assign(1);
62 finger.pressed = true; 67 finger.pressed = true;
63 finger.position = current_touch.position; 68 finger.position = current_touch.position;
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index eb3c45a58..8c99cec06 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -63,6 +63,7 @@ IAppletResource::IAppletResource(Core::System& system_,
63 MakeControllerWithServiceContext<Controller_NPad>(HidController::NPad, shared_memory); 63 MakeControllerWithServiceContext<Controller_NPad>(HidController::NPad, shared_memory);
64 MakeController<Controller_Gesture>(HidController::Gesture, shared_memory); 64 MakeController<Controller_Gesture>(HidController::Gesture, shared_memory);
65 MakeController<Controller_ConsoleSixAxis>(HidController::ConsoleSixAxisSensor, shared_memory); 65 MakeController<Controller_ConsoleSixAxis>(HidController::ConsoleSixAxisSensor, shared_memory);
66 MakeController<Controller_Stubbed>(HidController::DebugMouse, shared_memory);
66 MakeControllerWithServiceContext<Controller_Palma>(HidController::Palma, shared_memory); 67 MakeControllerWithServiceContext<Controller_Palma>(HidController::Palma, shared_memory);
67 68
68 // Homebrew doesn't try to activate some controllers, so we activate them by default 69 // Homebrew doesn't try to activate some controllers, so we activate them by default
@@ -74,6 +75,7 @@ IAppletResource::IAppletResource(Core::System& system_,
74 GetController<Controller_Stubbed>(HidController::CaptureButton).SetCommonHeaderOffset(0x5000); 75 GetController<Controller_Stubbed>(HidController::CaptureButton).SetCommonHeaderOffset(0x5000);
75 GetController<Controller_Stubbed>(HidController::InputDetector).SetCommonHeaderOffset(0x5200); 76 GetController<Controller_Stubbed>(HidController::InputDetector).SetCommonHeaderOffset(0x5200);
76 GetController<Controller_Stubbed>(HidController::UniquePad).SetCommonHeaderOffset(0x5A00); 77 GetController<Controller_Stubbed>(HidController::UniquePad).SetCommonHeaderOffset(0x5A00);
78 GetController<Controller_Stubbed>(HidController::DebugMouse).SetCommonHeaderOffset(0x3DC00);
77 79
78 // Register update callbacks 80 // Register update callbacks
79 npad_update_event = Core::Timing::CreateEvent( 81 npad_update_event = Core::Timing::CreateEvent(
@@ -236,6 +238,7 @@ Hid::Hid(Core::System& system_)
236 {1, &Hid::ActivateDebugPad, "ActivateDebugPad"}, 238 {1, &Hid::ActivateDebugPad, "ActivateDebugPad"},
237 {11, &Hid::ActivateTouchScreen, "ActivateTouchScreen"}, 239 {11, &Hid::ActivateTouchScreen, "ActivateTouchScreen"},
238 {21, &Hid::ActivateMouse, "ActivateMouse"}, 240 {21, &Hid::ActivateMouse, "ActivateMouse"},
241 {26, nullptr, "ActivateDebugMouse"},
239 {31, &Hid::ActivateKeyboard, "ActivateKeyboard"}, 242 {31, &Hid::ActivateKeyboard, "ActivateKeyboard"},
240 {32, &Hid::SendKeyboardLockKeyEvent, "SendKeyboardLockKeyEvent"}, 243 {32, &Hid::SendKeyboardLockKeyEvent, "SendKeyboardLockKeyEvent"},
241 {40, nullptr, "AcquireXpadIdEventHandle"}, 244 {40, nullptr, "AcquireXpadIdEventHandle"},
@@ -2380,6 +2383,8 @@ public:
2380 {20, nullptr, "DeactivateMouse"}, 2383 {20, nullptr, "DeactivateMouse"},
2381 {21, nullptr, "SetMouseAutoPilotState"}, 2384 {21, nullptr, "SetMouseAutoPilotState"},
2382 {22, nullptr, "UnsetMouseAutoPilotState"}, 2385 {22, nullptr, "UnsetMouseAutoPilotState"},
2386 {25, nullptr, "SetDebugMouseAutoPilotState"},
2387 {26, nullptr, "UnsetDebugMouseAutoPilotState"},
2383 {30, nullptr, "DeactivateKeyboard"}, 2388 {30, nullptr, "DeactivateKeyboard"},
2384 {31, nullptr, "SetKeyboardAutoPilotState"}, 2389 {31, nullptr, "SetKeyboardAutoPilotState"},
2385 {32, nullptr, "UnsetKeyboardAutoPilotState"}, 2390 {32, nullptr, "UnsetKeyboardAutoPilotState"},
@@ -2495,6 +2500,7 @@ public:
2495 {2000, nullptr, "DeactivateDigitizer"}, 2500 {2000, nullptr, "DeactivateDigitizer"},
2496 {2001, nullptr, "SetDigitizerAutoPilotState"}, 2501 {2001, nullptr, "SetDigitizerAutoPilotState"},
2497 {2002, nullptr, "UnsetDigitizerAutoPilotState"}, 2502 {2002, nullptr, "UnsetDigitizerAutoPilotState"},
2503 {2002, nullptr, "ReloadFirmwareDebugSettings"},
2498 }; 2504 };
2499 // clang-format on 2505 // clang-format on
2500 2506
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h
index b7c2a23ef..8fc9ed88a 100644
--- a/src/core/hle/service/hid/hid.h
+++ b/src/core/hle/service/hid/hid.h
@@ -33,6 +33,7 @@ enum class HidController : std::size_t {
33 NPad, 33 NPad,
34 Gesture, 34 Gesture,
35 ConsoleSixAxisSensor, 35 ConsoleSixAxisSensor,
36 DebugMouse,
36 Palma, 37 Palma,
37 38
38 MaxControllers, 39 MaxControllers,
diff --git a/src/core/hle/service/hid/hidbus.cpp b/src/core/hle/service/hid/hidbus.cpp
index bd94e8f3d..8dbb2cf50 100644
--- a/src/core/hle/service/hid/hidbus.cpp
+++ b/src/core/hle/service/hid/hidbus.cpp
@@ -91,7 +91,7 @@ std::optional<std::size_t> HidBus::GetDeviceIndexFromHandle(BusHandle handle) co
91 if (handle.abstracted_pad_id == device_handle.abstracted_pad_id && 91 if (handle.abstracted_pad_id == device_handle.abstracted_pad_id &&
92 handle.internal_index == device_handle.internal_index && 92 handle.internal_index == device_handle.internal_index &&
93 handle.player_number == device_handle.player_number && 93 handle.player_number == device_handle.player_number &&
94 handle.bus_type == device_handle.bus_type && 94 handle.bus_type_id == device_handle.bus_type_id &&
95 handle.is_valid == device_handle.is_valid) { 95 handle.is_valid == device_handle.is_valid) {
96 return i; 96 return i;
97 } 97 }
@@ -123,7 +123,7 @@ void HidBus::GetBusHandle(Kernel::HLERequestContext& ctx) {
123 continue; 123 continue;
124 } 124 }
125 if (static_cast<Core::HID::NpadIdType>(handle.player_number) == parameters.npad_id && 125 if (static_cast<Core::HID::NpadIdType>(handle.player_number) == parameters.npad_id &&
126 handle.bus_type == parameters.bus_type) { 126 handle.bus_type_id == static_cast<u8>(parameters.bus_type)) {
127 is_handle_found = true; 127 is_handle_found = true;
128 handle_index = i; 128 handle_index = i;
129 break; 129 break;
@@ -140,7 +140,7 @@ void HidBus::GetBusHandle(Kernel::HLERequestContext& ctx) {
140 .abstracted_pad_id = static_cast<u8>(i), 140 .abstracted_pad_id = static_cast<u8>(i),
141 .internal_index = static_cast<u8>(i), 141 .internal_index = static_cast<u8>(i),
142 .player_number = static_cast<u8>(parameters.npad_id), 142 .player_number = static_cast<u8>(parameters.npad_id),
143 .bus_type = parameters.bus_type, 143 .bus_type_id = static_cast<u8>(parameters.bus_type),
144 .is_valid = true, 144 .is_valid = true,
145 }; 145 };
146 handle_index = i; 146 handle_index = i;
@@ -172,7 +172,7 @@ void HidBus::IsExternalDeviceConnected(Kernel::HLERequestContext& ctx) {
172 LOG_INFO(Service_HID, 172 LOG_INFO(Service_HID,
173 "Called, abstracted_pad_id={}, bus_type={}, internal_index={}, " 173 "Called, abstracted_pad_id={}, bus_type={}, internal_index={}, "
174 "player_number={}, is_valid={}", 174 "player_number={}, is_valid={}",
175 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 175 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
176 bus_handle_.player_number, bus_handle_.is_valid); 176 bus_handle_.player_number, bus_handle_.is_valid);
177 177
178 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 178 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -201,7 +201,7 @@ void HidBus::Initialize(Kernel::HLERequestContext& ctx) {
201 LOG_INFO(Service_HID, 201 LOG_INFO(Service_HID,
202 "called, abstracted_pad_id={} bus_type={} internal_index={} " 202 "called, abstracted_pad_id={} bus_type={} internal_index={} "
203 "player_number={} is_valid={}, applet_resource_user_id={}", 203 "player_number={} is_valid={}, applet_resource_user_id={}",
204 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 204 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
205 bus_handle_.player_number, bus_handle_.is_valid, applet_resource_user_id); 205 bus_handle_.player_number, bus_handle_.is_valid, applet_resource_user_id);
206 206
207 is_hidbus_enabled = true; 207 is_hidbus_enabled = true;
@@ -253,7 +253,7 @@ void HidBus::Finalize(Kernel::HLERequestContext& ctx) {
253 LOG_INFO(Service_HID, 253 LOG_INFO(Service_HID,
254 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, " 254 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, "
255 "player_number={}, is_valid={}, applet_resource_user_id={}", 255 "player_number={}, is_valid={}, applet_resource_user_id={}",
256 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 256 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
257 bus_handle_.player_number, bus_handle_.is_valid, applet_resource_user_id); 257 bus_handle_.player_number, bus_handle_.is_valid, applet_resource_user_id);
258 258
259 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 259 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -301,7 +301,7 @@ void HidBus::EnableExternalDevice(Kernel::HLERequestContext& ctx) {
301 "called, enable={}, abstracted_pad_id={}, bus_type={}, internal_index={}, " 301 "called, enable={}, abstracted_pad_id={}, bus_type={}, internal_index={}, "
302 "player_number={}, is_valid={}, inval={}, applet_resource_user_id{}", 302 "player_number={}, is_valid={}, inval={}, applet_resource_user_id{}",
303 parameters.enable, parameters.bus_handle.abstracted_pad_id, 303 parameters.enable, parameters.bus_handle.abstracted_pad_id,
304 parameters.bus_handle.bus_type, parameters.bus_handle.internal_index, 304 parameters.bus_handle.bus_type_id, parameters.bus_handle.internal_index,
305 parameters.bus_handle.player_number, parameters.bus_handle.is_valid, parameters.inval, 305 parameters.bus_handle.player_number, parameters.bus_handle.is_valid, parameters.inval,
306 parameters.applet_resource_user_id); 306 parameters.applet_resource_user_id);
307 307
@@ -329,7 +329,7 @@ void HidBus::GetExternalDeviceId(Kernel::HLERequestContext& ctx) {
329 LOG_DEBUG(Service_HID, 329 LOG_DEBUG(Service_HID,
330 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, " 330 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, "
331 "is_valid={}", 331 "is_valid={}",
332 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 332 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
333 bus_handle_.player_number, bus_handle_.is_valid); 333 bus_handle_.player_number, bus_handle_.is_valid);
334 334
335 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 335 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -357,7 +357,7 @@ void HidBus::SendCommandAsync(Kernel::HLERequestContext& ctx) {
357 LOG_DEBUG(Service_HID, 357 LOG_DEBUG(Service_HID,
358 "called, data_size={}, abstracted_pad_id={}, bus_type={}, internal_index={}, " 358 "called, data_size={}, abstracted_pad_id={}, bus_type={}, internal_index={}, "
359 "player_number={}, is_valid={}", 359 "player_number={}, is_valid={}",
360 data.size(), bus_handle_.abstracted_pad_id, bus_handle_.bus_type, 360 data.size(), bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id,
361 bus_handle_.internal_index, bus_handle_.player_number, bus_handle_.is_valid); 361 bus_handle_.internal_index, bus_handle_.player_number, bus_handle_.is_valid);
362 362
363 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 363 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -384,7 +384,7 @@ void HidBus::GetSendCommandAsynceResult(Kernel::HLERequestContext& ctx) {
384 LOG_DEBUG(Service_HID, 384 LOG_DEBUG(Service_HID,
385 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, " 385 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, "
386 "is_valid={}", 386 "is_valid={}",
387 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 387 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
388 bus_handle_.player_number, bus_handle_.is_valid); 388 bus_handle_.player_number, bus_handle_.is_valid);
389 389
390 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 390 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -413,7 +413,7 @@ void HidBus::SetEventForSendCommandAsycResult(Kernel::HLERequestContext& ctx) {
413 LOG_INFO(Service_HID, 413 LOG_INFO(Service_HID,
414 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, " 414 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, "
415 "is_valid={}", 415 "is_valid={}",
416 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 416 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
417 bus_handle_.player_number, bus_handle_.is_valid); 417 bus_handle_.player_number, bus_handle_.is_valid);
418 418
419 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 419 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -464,7 +464,7 @@ void HidBus::EnableJoyPollingReceiveMode(Kernel::HLERequestContext& ctx) {
464 LOG_INFO(Service_HID, 464 LOG_INFO(Service_HID,
465 "called, t_mem_handle=0x{:08X}, polling_mode={}, abstracted_pad_id={}, bus_type={}, " 465 "called, t_mem_handle=0x{:08X}, polling_mode={}, abstracted_pad_id={}, bus_type={}, "
466 "internal_index={}, player_number={}, is_valid={}", 466 "internal_index={}, player_number={}, is_valid={}",
467 t_mem_handle, polling_mode_, bus_handle_.abstracted_pad_id, bus_handle_.bus_type, 467 t_mem_handle, polling_mode_, bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id,
468 bus_handle_.internal_index, bus_handle_.player_number, bus_handle_.is_valid); 468 bus_handle_.internal_index, bus_handle_.player_number, bus_handle_.is_valid);
469 469
470 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 470 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
@@ -492,7 +492,7 @@ void HidBus::DisableJoyPollingReceiveMode(Kernel::HLERequestContext& ctx) {
492 LOG_INFO(Service_HID, 492 LOG_INFO(Service_HID,
493 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, " 493 "called, abstracted_pad_id={}, bus_type={}, internal_index={}, player_number={}, "
494 "is_valid={}", 494 "is_valid={}",
495 bus_handle_.abstracted_pad_id, bus_handle_.bus_type, bus_handle_.internal_index, 495 bus_handle_.abstracted_pad_id, bus_handle_.bus_type_id, bus_handle_.internal_index,
496 bus_handle_.player_number, bus_handle_.is_valid); 496 bus_handle_.player_number, bus_handle_.is_valid);
497 497
498 const auto device_index = GetDeviceIndexFromHandle(bus_handle_); 498 const auto device_index = GetDeviceIndexFromHandle(bus_handle_);
diff --git a/src/core/hle/service/hid/hidbus.h b/src/core/hle/service/hid/hidbus.h
index 8c687f678..91c99b01f 100644
--- a/src/core/hle/service/hid/hidbus.h
+++ b/src/core/hle/service/hid/hidbus.h
@@ -41,7 +41,7 @@ private:
41 }; 41 };
42 42
43 // This is nn::hidbus::BusType 43 // This is nn::hidbus::BusType
44 enum class BusType : u8 { 44 enum class BusType : u32 {
45 LeftJoyRail, 45 LeftJoyRail,
46 RightJoyRail, 46 RightJoyRail,
47 InternalBus, // Lark microphone 47 InternalBus, // Lark microphone
@@ -54,7 +54,7 @@ private:
54 u32 abstracted_pad_id; 54 u32 abstracted_pad_id;
55 u8 internal_index; 55 u8 internal_index;
56 u8 player_number; 56 u8 player_number;
57 BusType bus_type; 57 u8 bus_type_id;
58 bool is_valid; 58 bool is_valid;
59 }; 59 };
60 static_assert(sizeof(BusHandle) == 0x8, "BusHandle is an invalid size"); 60 static_assert(sizeof(BusHandle) == 0x8, "BusHandle is an invalid size");
diff --git a/src/core/hle/service/ncm/ncm.cpp b/src/core/hle/service/ncm/ncm.cpp
index 68210a108..4c66cfeba 100644
--- a/src/core/hle/service/ncm/ncm.cpp
+++ b/src/core/hle/service/ncm/ncm.cpp
@@ -124,6 +124,7 @@ public:
124 {12, nullptr, "InactivateContentMetaDatabase"}, 124 {12, nullptr, "InactivateContentMetaDatabase"},
125 {13, nullptr, "InvalidateRightsIdCache"}, 125 {13, nullptr, "InvalidateRightsIdCache"},
126 {14, nullptr, "GetMemoryReport"}, 126 {14, nullptr, "GetMemoryReport"},
127 {15, nullptr, "ActivateFsContentStorage"},
127 }; 128 };
128 // clang-format on 129 // clang-format on
129 130
diff --git a/src/core/hle/service/ns/ns.cpp b/src/core/hle/service/ns/ns.cpp
index f59a1a63d..e53bdde52 100644
--- a/src/core/hle/service/ns/ns.cpp
+++ b/src/core/hle/service/ns/ns.cpp
@@ -159,6 +159,8 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
159 {606, nullptr, "GetContentMetaStorage"}, 159 {606, nullptr, "GetContentMetaStorage"},
160 {607, nullptr, "ListAvailableAddOnContent"}, 160 {607, nullptr, "ListAvailableAddOnContent"},
161 {609, nullptr, "ListAvailabilityAssuredAddOnContent"}, 161 {609, nullptr, "ListAvailabilityAssuredAddOnContent"},
162 {610, nullptr, "GetInstalledContentMetaStorage"},
163 {611, nullptr, "PrepareAddOnContent"},
162 {700, nullptr, "PushDownloadTaskList"}, 164 {700, nullptr, "PushDownloadTaskList"},
163 {701, nullptr, "ClearTaskStatusList"}, 165 {701, nullptr, "ClearTaskStatusList"},
164 {702, nullptr, "RequestDownloadTaskList"}, 166 {702, nullptr, "RequestDownloadTaskList"},
@@ -228,6 +230,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
228 {1900, nullptr, "IsActiveAccount"}, 230 {1900, nullptr, "IsActiveAccount"},
229 {1901, nullptr, "RequestDownloadApplicationPrepurchasedRights"}, 231 {1901, nullptr, "RequestDownloadApplicationPrepurchasedRights"},
230 {1902, nullptr, "GetApplicationTicketInfo"}, 232 {1902, nullptr, "GetApplicationTicketInfo"},
233 {1903, nullptr, "RequestDownloadApplicationPrepurchasedRightsForAccount"},
231 {2000, nullptr, "GetSystemDeliveryInfo"}, 234 {2000, nullptr, "GetSystemDeliveryInfo"},
232 {2001, nullptr, "SelectLatestSystemDeliveryInfo"}, 235 {2001, nullptr, "SelectLatestSystemDeliveryInfo"},
233 {2002, nullptr, "VerifyDeliveryProtocolVersion"}, 236 {2002, nullptr, "VerifyDeliveryProtocolVersion"},
@@ -276,8 +279,11 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
276 {2352, nullptr, "RequestResolveNoDownloadRightsError"}, 279 {2352, nullptr, "RequestResolveNoDownloadRightsError"},
277 {2353, nullptr, "GetApplicationDownloadTaskInfo"}, 280 {2353, nullptr, "GetApplicationDownloadTaskInfo"},
278 {2354, nullptr, "PrioritizeApplicationBackgroundTask"}, 281 {2354, nullptr, "PrioritizeApplicationBackgroundTask"},
279 {2355, nullptr, "Unknown2355"}, 282 {2355, nullptr, "PreferStorageEfficientUpdate"},
280 {2356, nullptr, "Unknown2356"}, 283 {2356, nullptr, "RequestStorageEfficientUpdatePreferable"},
284 {2357, nullptr, "EnableMultiCoreDownload"},
285 {2358, nullptr, "DisableMultiCoreDownload"},
286 {2359, nullptr, "IsMultiCoreDownloadEnabled"},
281 {2400, nullptr, "GetPromotionInfo"}, 287 {2400, nullptr, "GetPromotionInfo"},
282 {2401, nullptr, "CountPromotionInfo"}, 288 {2401, nullptr, "CountPromotionInfo"},
283 {2402, nullptr, "ListPromotionInfo"}, 289 {2402, nullptr, "ListPromotionInfo"},
@@ -295,6 +301,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
295 {2519, nullptr, "IsQualificationTransitionSupported"}, 301 {2519, nullptr, "IsQualificationTransitionSupported"},
296 {2520, nullptr, "IsQualificationTransitionSupportedByProcessId"}, 302 {2520, nullptr, "IsQualificationTransitionSupportedByProcessId"},
297 {2521, nullptr, "GetRightsUserChangedEvent"}, 303 {2521, nullptr, "GetRightsUserChangedEvent"},
304 {2522, nullptr, "IsRomRedirectionAvailable"},
298 {2800, nullptr, "GetApplicationIdOfPreomia"}, 305 {2800, nullptr, "GetApplicationIdOfPreomia"},
299 {3000, nullptr, "RegisterDeviceLockKey"}, 306 {3000, nullptr, "RegisterDeviceLockKey"},
300 {3001, nullptr, "UnregisterDeviceLockKey"}, 307 {3001, nullptr, "UnregisterDeviceLockKey"},
@@ -311,6 +318,7 @@ IApplicationManagerInterface::IApplicationManagerInterface(Core::System& system_
311 {3012, nullptr, "IsApplicationTitleHidden"}, 318 {3012, nullptr, "IsApplicationTitleHidden"},
312 {3013, nullptr, "IsGameCardEnabled"}, 319 {3013, nullptr, "IsGameCardEnabled"},
313 {3014, nullptr, "IsLocalContentShareEnabled"}, 320 {3014, nullptr, "IsLocalContentShareEnabled"},
321 {3050, nullptr, "ListAssignELicenseTaskResult"},
314 {9999, nullptr, "GetApplicationCertificate"}, 322 {9999, nullptr, "GetApplicationCertificate"},
315 }; 323 };
316 // clang-format on 324 // clang-format on
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index bdb499268..330a66409 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -954,6 +954,9 @@ BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} {
954 {10, nullptr, "ClearArpEntries"}, 954 {10, nullptr, "ClearArpEntries"},
955 {11, nullptr, "ClearArpEntries2"}, 955 {11, nullptr, "ClearArpEntries2"},
956 {12, nullptr, "PrintArpEntries"}, 956 {12, nullptr, "PrintArpEntries"},
957 {13, nullptr, "Unknown13"},
958 {14, nullptr, "Unknown14"},
959 {15, nullptr, "Unknown15"},
957 }; 960 };
958 // clang-format on 961 // clang-format on
959 962
diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp
index dcf47083f..015208593 100644
--- a/src/core/hle/service/ssl/ssl.cpp
+++ b/src/core/hle/service/ssl/ssl.cpp
@@ -46,6 +46,14 @@ public:
46 {25, nullptr, "GetCipherInfo"}, 46 {25, nullptr, "GetCipherInfo"},
47 {26, nullptr, "SetNextAlpnProto"}, 47 {26, nullptr, "SetNextAlpnProto"},
48 {27, nullptr, "GetNextAlpnProto"}, 48 {27, nullptr, "GetNextAlpnProto"},
49 {28, nullptr, "SetDtlsSocketDescriptor"},
50 {29, nullptr, "GetDtlsHandshakeTimeout"},
51 {30, nullptr, "SetPrivateOption"},
52 {31, nullptr, "SetSrtpCiphers"},
53 {32, nullptr, "GetSrtpCipher"},
54 {33, nullptr, "ExportKeyingMaterial"},
55 {34, nullptr, "SetIoTimeout"},
56 {35, nullptr, "GetIoTimeout"},
49 }; 57 };
50 // clang-format on 58 // clang-format on
51 59
@@ -69,6 +77,8 @@ public:
69 {9, nullptr, "AddPolicyOid"}, 77 {9, nullptr, "AddPolicyOid"},
70 {10, nullptr, "ImportCrl"}, 78 {10, nullptr, "ImportCrl"},
71 {11, nullptr, "RemoveCrl"}, 79 {11, nullptr, "RemoveCrl"},
80 {12, nullptr, "ImportClientCertKeyPki"},
81 {13, nullptr, "GeneratePrivateKeyAndCert"},
72 }; 82 };
73 RegisterHandlers(functions); 83 RegisterHandlers(functions);
74 } 84 }
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 2fb631183..0915785d2 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -249,6 +249,9 @@ public:
249 {2053, nullptr, "DestroyIndirectProducerEndPoint"}, 249 {2053, nullptr, "DestroyIndirectProducerEndPoint"},
250 {2054, nullptr, "CreateIndirectConsumerEndPoint"}, 250 {2054, nullptr, "CreateIndirectConsumerEndPoint"},
251 {2055, nullptr, "DestroyIndirectConsumerEndPoint"}, 251 {2055, nullptr, "DestroyIndirectConsumerEndPoint"},
252 {2060, nullptr, "CreateWatermarkCompositor"},
253 {2062, nullptr, "SetWatermarkText"},
254 {2063, nullptr, "SetWatermarkLayerStacks"},
252 {2300, nullptr, "AcquireLayerTexturePresentingEvent"}, 255 {2300, nullptr, "AcquireLayerTexturePresentingEvent"},
253 {2301, nullptr, "ReleaseLayerTexturePresentingEvent"}, 256 {2301, nullptr, "ReleaseLayerTexturePresentingEvent"},
254 {2302, nullptr, "GetDisplayHotplugEvent"}, 257 {2302, nullptr, "GetDisplayHotplugEvent"},
@@ -279,6 +282,8 @@ public:
279 {6011, nullptr, "EnableLayerAutoClearTransitionBuffer"}, 282 {6011, nullptr, "EnableLayerAutoClearTransitionBuffer"},
280 {6012, nullptr, "DisableLayerAutoClearTransitionBuffer"}, 283 {6012, nullptr, "DisableLayerAutoClearTransitionBuffer"},
281 {6013, nullptr, "SetLayerOpacity"}, 284 {6013, nullptr, "SetLayerOpacity"},
285 {6014, nullptr, "AttachLayerWatermarkCompositor"},
286 {6015, nullptr, "DetachLayerWatermarkCompositor"},
282 {7000, nullptr, "SetContentVisibility"}, 287 {7000, nullptr, "SetContentVisibility"},
283 {8000, nullptr, "SetConductorLayer"}, 288 {8000, nullptr, "SetConductorLayer"},
284 {8001, nullptr, "SetTimestampTracking"}, 289 {8001, nullptr, "SetTimestampTracking"},
diff --git a/src/core/hle/service/vi/vi_m.cpp b/src/core/hle/service/vi/vi_m.cpp
index 1ab7fe4ab..7ca44354b 100644
--- a/src/core/hle/service/vi/vi_m.cpp
+++ b/src/core/hle/service/vi/vi_m.cpp
@@ -14,6 +14,10 @@ VI_M::VI_M(Core::System& system_, NVFlinger::NVFlinger& nv_flinger_,
14 static const FunctionInfo functions[] = { 14 static const FunctionInfo functions[] = {
15 {2, &VI_M::GetDisplayService, "GetDisplayService"}, 15 {2, &VI_M::GetDisplayService, "GetDisplayService"},
16 {3, nullptr, "GetDisplayServiceWithProxyNameExchange"}, 16 {3, nullptr, "GetDisplayServiceWithProxyNameExchange"},
17 {100, nullptr, "PrepareFatal"},
18 {101, nullptr, "ShowFatal"},
19 {102, nullptr, "DrawFatalRectangle"},
20 {103, nullptr, "DrawFatalText32"},
17 }; 21 };
18 RegisterHandlers(functions); 22 RegisterHandlers(functions);
19} 23}
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index db68ed259..bfed2d038 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -1312,9 +1312,7 @@ void Config::SaveRendererValues() {
1312 static_cast<u32>(Settings::values.renderer_backend.GetValue(global)), 1312 static_cast<u32>(Settings::values.renderer_backend.GetValue(global)),
1313 static_cast<u32>(Settings::values.renderer_backend.GetDefault()), 1313 static_cast<u32>(Settings::values.renderer_backend.GetDefault()),
1314 Settings::values.renderer_backend.UsingGlobal()); 1314 Settings::values.renderer_backend.UsingGlobal());
1315 WriteSetting(QString::fromStdString(Settings::values.renderer_force_max_clock.GetLabel()), 1315 WriteGlobalSetting(Settings::values.renderer_force_max_clock);
1316 static_cast<u32>(Settings::values.renderer_force_max_clock.GetValue(global)),
1317 static_cast<u32>(Settings::values.renderer_force_max_clock.GetDefault()));
1318 WriteGlobalSetting(Settings::values.vulkan_device); 1316 WriteGlobalSetting(Settings::values.vulkan_device);
1319 WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()), 1317 WriteSetting(QString::fromStdString(Settings::values.fullscreen_mode.GetLabel()),
1320 static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)), 1318 static_cast<u32>(Settings::values.fullscreen_mode.GetValue(global)),
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index cc0155a2c..7ab5d5bf5 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -45,8 +45,6 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
45 &Settings::values.max_anisotropy); 45 &Settings::values.max_anisotropy);
46 ConfigurationShared::SetHighlight(ui->label_gpu_accuracy, 46 ConfigurationShared::SetHighlight(ui->label_gpu_accuracy,
47 !Settings::values.gpu_accuracy.UsingGlobal()); 47 !Settings::values.gpu_accuracy.UsingGlobal());
48 ConfigurationShared::SetHighlight(ui->renderer_force_max_clock,
49 !Settings::values.renderer_force_max_clock.UsingGlobal());
50 ConfigurationShared::SetHighlight(ui->af_label, 48 ConfigurationShared::SetHighlight(ui->af_label,
51 !Settings::values.max_anisotropy.UsingGlobal()); 49 !Settings::values.max_anisotropy.UsingGlobal());
52 } 50 }