summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Ameer2020-06-21 12:36:28 -0400
committerGravatar Ameer2020-06-21 12:36:28 -0400
commit0248614add99c1df1bc7c9ff97091f678ff75aca (patch)
treee7a4a8e629039f940b4bef76e69d51ddbf2a0639 /src/core
parentMerge pull request #4120 from lioncash/arb (diff)
downloadyuzu-0248614add99c1df1bc7c9ff97091f678ff75aca.tar.gz
yuzu-0248614add99c1df1bc7c9ff97091f678ff75aca.tar.xz
yuzu-0248614add99c1df1bc7c9ff97091f678ff75aca.zip
GC Adapter Implementation
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index c55d900e2..d92325cb5 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -44,7 +44,7 @@ static Controller_NPad::NPadControllerType MapSettingsTypeToNPad(Settings::Contr
44 case Settings::ControllerType::RightJoycon: 44 case Settings::ControllerType::RightJoycon:
45 return Controller_NPad::NPadControllerType::JoyRight; 45 return Controller_NPad::NPadControllerType::JoyRight;
46 default: 46 default:
47 UNREACHABLE(); 47 UNREACHABLE();
48 return Controller_NPad::NPadControllerType::JoyDual; 48 return Controller_NPad::NPadControllerType::JoyDual;
49 } 49 }
50} 50}
@@ -93,7 +93,10 @@ u32 Controller_NPad::IndexToNPad(std::size_t index) {
93 }; 93 };
94} 94}
95 95
96Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {} 96Controller_NPad::Controller_NPad(Core::System& system)
97 : ControllerBase(system), system(system) {
98}
99
97Controller_NPad::~Controller_NPad() = default; 100Controller_NPad::~Controller_NPad() = default;
98 101
99void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { 102void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) {
@@ -106,7 +109,7 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) {
106 controller.device_type.raw = 0; 109 controller.device_type.raw = 0;
107 switch (controller_type) { 110 switch (controller_type) {
108 case NPadControllerType::None: 111 case NPadControllerType::None:
109 UNREACHABLE(); 112 UNREACHABLE();
110 break; 113 break;
111 case NPadControllerType::Handheld: 114 case NPadControllerType::Handheld:
112 controller.joy_styles.handheld.Assign(1); 115 controller.joy_styles.handheld.Assign(1);
@@ -194,7 +197,8 @@ void Controller_NPad::OnInit() {
194 197
195 std::transform( 198 std::transform(
196 Settings::values.players.begin(), Settings::values.players.end(), 199 Settings::values.players.begin(), Settings::values.players.end(),
197 connected_controllers.begin(), [](const Settings::PlayerInput& player) { 200 connected_controllers.begin(), [](const Settings::PlayerInput& player)
201 {
198 return ControllerHolder{MapSettingsTypeToNPad(player.type), player.connected}; 202 return ControllerHolder{MapSettingsTypeToNPad(player.type), player.connected};
199 }); 203 });
200 204
@@ -238,7 +242,8 @@ void Controller_NPad::OnLoadInputDevices() {
238 } 242 }
239} 243}
240 244
241void Controller_NPad::OnRelease() {} 245void Controller_NPad::OnRelease() {
246}
242 247
243void Controller_NPad::RequestPadStateUpdate(u32 npad_id) { 248void Controller_NPad::RequestPadStateUpdate(u32 npad_id) {
244 const auto controller_idx = NPadIdToIndex(npad_id); 249 const auto controller_idx = NPadIdToIndex(npad_id);
@@ -276,27 +281,31 @@ void Controller_NPad::RequestPadStateUpdate(u32 npad_id) {
276 pad_state.d_down.Assign(button_state[DDown - BUTTON_HID_BEGIN]->GetStatus()); 281 pad_state.d_down.Assign(button_state[DDown - BUTTON_HID_BEGIN]->GetStatus());
277 282
278 pad_state.l_stick_right.Assign( 283 pad_state.l_stick_right.Assign(
279 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus( 284 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->
285 GetAnalogDirectionStatus(
280 Input::AnalogDirection::RIGHT)); 286 Input::AnalogDirection::RIGHT));
281 pad_state.l_stick_left.Assign( 287 pad_state.l_stick_left.Assign(
282 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus( 288 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->
289 GetAnalogDirectionStatus(
283 Input::AnalogDirection::LEFT)); 290 Input::AnalogDirection::LEFT));
284 pad_state.l_stick_up.Assign( 291 pad_state.l_stick_up.Assign(
285 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus( 292 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->
293 GetAnalogDirectionStatus(
286 Input::AnalogDirection::UP)); 294 Input::AnalogDirection::UP));
287 pad_state.l_stick_down.Assign( 295 pad_state.l_stick_down.Assign(
288 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->GetAnalogDirectionStatus( 296 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Left)]->
297 GetAnalogDirectionStatus(
289 Input::AnalogDirection::DOWN)); 298 Input::AnalogDirection::DOWN));
290 299
291 pad_state.r_stick_right.Assign( 300 pad_state.r_stick_right.Assign(
292 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 301 analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
293 ->GetAnalogDirectionStatus(Input::AnalogDirection::RIGHT)); 302 ->GetAnalogDirectionStatus(Input::AnalogDirection::RIGHT));
294 pad_state.r_stick_left.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 303 pad_state.r_stick_left.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
295 ->GetAnalogDirectionStatus(Input::AnalogDirection::LEFT)); 304 ->GetAnalogDirectionStatus(Input::AnalogDirection::LEFT));
296 pad_state.r_stick_up.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 305 pad_state.r_stick_up.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
297 ->GetAnalogDirectionStatus(Input::AnalogDirection::UP)); 306 ->GetAnalogDirectionStatus(Input::AnalogDirection::UP));
298 pad_state.r_stick_down.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)] 307 pad_state.r_stick_down.Assign(analog_state[static_cast<std::size_t>(JoystickId::Joystick_Right)]
299 ->GetAnalogDirectionStatus(Input::AnalogDirection::DOWN)); 308 ->GetAnalogDirectionStatus(Input::AnalogDirection::DOWN));
300 309
301 pad_state.left_sl.Assign(button_state[SL - BUTTON_HID_BEGIN]->GetStatus()); 310 pad_state.left_sl.Assign(button_state[SL - BUTTON_HID_BEGIN]->GetStatus());
302 pad_state.left_sr.Assign(button_state[SR - BUTTON_HID_BEGIN]->GetStatus()); 311 pad_state.left_sr.Assign(button_state[SR - BUTTON_HID_BEGIN]->GetStatus());
@@ -363,7 +372,7 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8*
363 372
364 switch (controller_type) { 373 switch (controller_type) {
365 case NPadControllerType::None: 374 case NPadControllerType::None:
366 UNREACHABLE(); 375 UNREACHABLE();
367 break; 376 break;
368 case NPadControllerType::Handheld: 377 case NPadControllerType::Handheld:
369 handheld_entry.connection_status.raw = 0; 378 handheld_entry.connection_status.raw = 0;
@@ -459,8 +468,9 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
459 continue; 468 continue;
460 } 469 }
461 const auto requested_controller = 470 const auto requested_controller =
462 i <= MAX_NPAD_ID ? MapSettingsTypeToNPad(Settings::values.players[i].type) 471 i <= MAX_NPAD_ID
463 : NPadControllerType::Handheld; 472 ? MapSettingsTypeToNPad(Settings::values.players[i].type)
473 : NPadControllerType::Handheld;
464 if (!IsControllerSupported(requested_controller)) { 474 if (!IsControllerSupported(requested_controller)) {
465 const auto is_handheld = requested_controller == NPadControllerType::Handheld; 475 const auto is_handheld = requested_controller == NPadControllerType::Handheld;
466 if (is_handheld) { 476 if (is_handheld) {