diff options
| author | 2021-11-04 14:43:08 -0600 | |
|---|---|---|
| committer | 2021-11-24 20:30:27 -0600 | |
| commit | b21fcd952721af357d50d487ffba9580e5a6bf00 (patch) | |
| tree | 2a8cd332b11ba01a422ed61e406445a025e4cc93 | |
| parent | settings: Fix controller preview not displaying the correct controller (diff) | |
| download | yuzu-b21fcd952721af357d50d487ffba9580e5a6bf00.tar.gz yuzu-b21fcd952721af357d50d487ffba9580e5a6bf00.tar.xz yuzu-b21fcd952721af357d50d487ffba9580e5a6bf00.zip | |
service/hid: Add support for new controllers
Diffstat (limited to '')
| -rw-r--r-- | src/core/hid/hid_types.h | 2 | ||||
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 31 |
2 files changed, 31 insertions, 2 deletions
diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h index 7e4f6a804..22177b5ed 100644 --- a/src/core/hid/hid_types.h +++ b/src/core/hid/hid_types.h | |||
| @@ -89,13 +89,13 @@ enum class NpadStyleIndex : u8 { | |||
| 89 | None = 0, | 89 | None = 0, |
| 90 | ProController = 3, | 90 | ProController = 3, |
| 91 | Handheld = 4, | 91 | Handheld = 4, |
| 92 | HandheldNES = 4, | ||
| 92 | JoyconDual = 5, | 93 | JoyconDual = 5, |
| 93 | JoyconLeft = 6, | 94 | JoyconLeft = 6, |
| 94 | JoyconRight = 7, | 95 | JoyconRight = 7, |
| 95 | GameCube = 8, | 96 | GameCube = 8, |
| 96 | Pokeball = 9, | 97 | Pokeball = 9, |
| 97 | NES = 10, | 98 | NES = 10, |
| 98 | HandheldNES = 11, | ||
| 99 | SNES = 12, | 99 | SNES = 12, |
| 100 | N64 = 13, | 100 | N64 = 13, |
| 101 | SegaGenesis = 14, | 101 | SegaGenesis = 14, |
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index e4a3d9163..fcc36bbc1 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -221,7 +221,6 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) { | |||
| 221 | break; | 221 | break; |
| 222 | case Core::HID::NpadStyleIndex::GameCube: | 222 | case Core::HID::NpadStyleIndex::GameCube: |
| 223 | shared_memory.style_set.gamecube.Assign(1); | 223 | shared_memory.style_set.gamecube.Assign(1); |
| 224 | // The GC Controller behaves like a wired Pro Controller | ||
| 225 | shared_memory.device_type.fullkey.Assign(1); | 224 | shared_memory.device_type.fullkey.Assign(1); |
| 226 | shared_memory.system_properties.is_vertical.Assign(1); | 225 | shared_memory.system_properties.is_vertical.Assign(1); |
| 227 | shared_memory.system_properties.use_plus.Assign(1); | 226 | shared_memory.system_properties.use_plus.Assign(1); |
| @@ -231,6 +230,24 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) { | |||
| 231 | shared_memory.device_type.palma.Assign(1); | 230 | shared_memory.device_type.palma.Assign(1); |
| 232 | shared_memory.assignment_mode = NpadJoyAssignmentMode::Single; | 231 | shared_memory.assignment_mode = NpadJoyAssignmentMode::Single; |
| 233 | break; | 232 | break; |
| 233 | case Core::HID::NpadStyleIndex::NES: | ||
| 234 | shared_memory.style_set.lark.Assign(1); | ||
| 235 | shared_memory.device_type.fullkey.Assign(1); | ||
| 236 | break; | ||
| 237 | case Core::HID::NpadStyleIndex::SNES: | ||
| 238 | shared_memory.style_set.lucia.Assign(1); | ||
| 239 | shared_memory.device_type.fullkey.Assign(1); | ||
| 240 | shared_memory.applet_footer.type = AppletFooterUiType::Lucia; | ||
| 241 | break; | ||
| 242 | case Core::HID::NpadStyleIndex::N64: | ||
| 243 | shared_memory.style_set.lagoon.Assign(1); | ||
| 244 | shared_memory.device_type.fullkey.Assign(1); | ||
| 245 | shared_memory.applet_footer.type = AppletFooterUiType::Lagon; | ||
| 246 | break; | ||
| 247 | case Core::HID::NpadStyleIndex::SegaGenesis: | ||
| 248 | shared_memory.style_set.lager.Assign(1); | ||
| 249 | shared_memory.device_type.fullkey.Assign(1); | ||
| 250 | break; | ||
| 234 | default: | 251 | default: |
| 235 | break; | 252 | break; |
| 236 | } | 253 | } |
| @@ -431,6 +448,10 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* | |||
| 431 | UNREACHABLE(); | 448 | UNREACHABLE(); |
| 432 | break; | 449 | break; |
| 433 | case Core::HID::NpadStyleIndex::ProController: | 450 | case Core::HID::NpadStyleIndex::ProController: |
| 451 | case Core::HID::NpadStyleIndex::NES: | ||
| 452 | case Core::HID::NpadStyleIndex::SNES: | ||
| 453 | case Core::HID::NpadStyleIndex::N64: | ||
| 454 | case Core::HID::NpadStyleIndex::SegaGenesis: | ||
| 434 | pad_state.connection_status.raw = 0; | 455 | pad_state.connection_status.raw = 0; |
| 435 | pad_state.connection_status.is_connected.Assign(1); | 456 | pad_state.connection_status.is_connected.Assign(1); |
| 436 | pad_state.connection_status.is_wired.Assign(1); | 457 | pad_state.connection_status.is_wired.Assign(1); |
| @@ -1108,6 +1129,14 @@ bool Controller_NPad::IsControllerSupported(Core::HID::NpadStyleIndex controller | |||
| 1108 | return style.gamecube; | 1129 | return style.gamecube; |
| 1109 | case Core::HID::NpadStyleIndex::Pokeball: | 1130 | case Core::HID::NpadStyleIndex::Pokeball: |
| 1110 | return style.palma; | 1131 | return style.palma; |
| 1132 | case Core::HID::NpadStyleIndex::NES: | ||
| 1133 | return style.lark; | ||
| 1134 | case Core::HID::NpadStyleIndex::SNES: | ||
| 1135 | return style.lucia; | ||
| 1136 | case Core::HID::NpadStyleIndex::N64: | ||
| 1137 | return style.lagoon; | ||
| 1138 | case Core::HID::NpadStyleIndex::SegaGenesis: | ||
| 1139 | return style.lager; | ||
| 1111 | default: | 1140 | default: |
| 1112 | return false; | 1141 | return false; |
| 1113 | } | 1142 | } |