diff options
| author | 2020-06-21 12:36:28 -0400 | |
|---|---|---|
| committer | 2020-06-21 12:36:28 -0400 | |
| commit | 0248614add99c1df1bc7c9ff97091f678ff75aca (patch) | |
| tree | e7a4a8e629039f940b4bef76e69d51ddbf2a0639 /src/core | |
| parent | Merge pull request #4120 from lioncash/arb (diff) | |
| download | yuzu-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.cpp | 42 |
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 | ||
| 96 | Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) {} | 96 | Controller_NPad::Controller_NPad(Core::System& system) |
| 97 | : ControllerBase(system), system(system) { | ||
| 98 | } | ||
| 99 | |||
| 97 | Controller_NPad::~Controller_NPad() = default; | 100 | Controller_NPad::~Controller_NPad() = default; |
| 98 | 101 | ||
| 99 | void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { | 102 | void 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 | ||
| 241 | void Controller_NPad::OnRelease() {} | 245 | void Controller_NPad::OnRelease() { |
| 246 | } | ||
| 242 | 247 | ||
| 243 | void Controller_NPad::RequestPadStateUpdate(u32 npad_id) { | 248 | void 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) { |