Support Bluepad32 gamepads as native Joy-Con pair sources
This commit is contained in:
parent
ab70536fdf
commit
a17ca603aa
33 changed files with 2529 additions and 851 deletions
|
|
@ -177,9 +177,11 @@ if(SWITCH_PICO_SWITCH2_MEMORY_CAPTURE)
|
|||
endif()
|
||||
set(SWITCH2_BRIDGE_WII_INPUT OFF)
|
||||
set(SWITCH2_BRIDGE_DUALSENSE_INPUT OFF)
|
||||
set(SWITCH2_BRIDGE_GAMEPAD_INPUT OFF)
|
||||
set(SWITCH2_BRIDGE_FULL_INPUT OFF)
|
||||
if(SWITCH_PICO_SWITCH2_USB_BRIDGE)
|
||||
set(SWITCH2_BRIDGE_INPUT "JOYCON2" CACHE STRING "Native bridge source: JOYCON2, WII or DUALSENSE")
|
||||
set_property(CACHE SWITCH2_BRIDGE_INPUT PROPERTY STRINGS JOYCON2 WII DUALSENSE)
|
||||
set(SWITCH2_BRIDGE_INPUT "JOYCON2" CACHE STRING "Native source: JOYCON2, WII, DUALSENSE or GAMEPAD")
|
||||
set_property(CACHE SWITCH2_BRIDGE_INPUT PROPERTY STRINGS JOYCON2 WII DUALSENSE GAMEPAD)
|
||||
set(SWITCH2_BRIDGE_IMU_TARGET "BOTH" CACHE STRING "Translated native-pair IMU target: LEFT, RIGHT or BOTH")
|
||||
set_property(CACHE SWITCH2_BRIDGE_IMU_TARGET PROPERTY STRINGS LEFT RIGHT BOTH)
|
||||
if(SWITCH2_BRIDGE_IMU_TARGET STREQUAL "RIGHT")
|
||||
|
|
@ -195,12 +197,22 @@ if(SWITCH_PICO_SWITCH2_USB_BRIDGE)
|
|||
if(NOT SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
||||
message(FATAL_ERROR "Switch 2 USB bridge requires BLUEPAD32")
|
||||
endif()
|
||||
if(SWITCH2_BRIDGE_INPUT STREQUAL "DUALSENSE")
|
||||
if(NOT SWITCH2_PROBE_HUB OR NOT SWITCH_PICO_ENABLE_CLASSIC)
|
||||
message(FATAL_ERROR "DualSense native R/L bridge requires HUB and Classic Bluetooth")
|
||||
if(SWITCH2_BRIDGE_INPUT STREQUAL "DUALSENSE" OR SWITCH2_BRIDGE_INPUT STREQUAL "GAMEPAD")
|
||||
if(NOT SWITCH2_PROBE_HUB)
|
||||
message(FATAL_ERROR "Translated full-controller input requires the native R/L HUB")
|
||||
endif()
|
||||
set(SWITCH2_BRIDGE_FULL_INPUT ON)
|
||||
add_compile_definitions(SWITCH2_BRIDGE_FULL_INPUT=1)
|
||||
if(SWITCH2_BRIDGE_INPUT STREQUAL "DUALSENSE")
|
||||
if(NOT SWITCH_PICO_ENABLE_CLASSIC)
|
||||
message(FATAL_ERROR "DualSense input requires Classic Bluetooth")
|
||||
endif()
|
||||
set(SWITCH2_BRIDGE_DUALSENSE_INPUT ON)
|
||||
add_compile_definitions(SWITCH2_BRIDGE_DUALSENSE_INPUT=1)
|
||||
else()
|
||||
set(SWITCH2_BRIDGE_GAMEPAD_INPUT ON)
|
||||
add_compile_definitions(SWITCH2_BRIDGE_GAMEPAD_INPUT=1)
|
||||
endif()
|
||||
set(SWITCH2_BRIDGE_DUALSENSE_INPUT ON)
|
||||
add_compile_definitions(SWITCH2_BRIDGE_DUALSENSE_INPUT=1)
|
||||
elseif(NOT SWITCH_PICO_ENABLE_BLE OR NOT SWITCH_PICO_SWITCH2_MOUSE_CAPTURE
|
||||
OR NOT SWITCH_PICO_SWITCH2_MOUSE_CAPTURE_NATIVE)
|
||||
message(FATAL_ERROR "Joy-Con/Wii USB bridge requires BLE and native Joy-Con capture")
|
||||
|
|
@ -214,10 +226,10 @@ if(SWITCH_PICO_SWITCH2_USB_BRIDGE)
|
|||
endif()
|
||||
set(SWITCH2_BRIDGE_WII_INPUT ON)
|
||||
add_compile_definitions(SWITCH2_BRIDGE_WII_INPUT=1 SWITCH_PICO_WII_IR=1)
|
||||
elseif(NOT SWITCH2_BRIDGE_INPUT STREQUAL "JOYCON2" AND NOT SWITCH2_BRIDGE_DUALSENSE_INPUT)
|
||||
message(FATAL_ERROR "SWITCH2_BRIDGE_INPUT must be JOYCON2, WII or DUALSENSE")
|
||||
elseif(NOT SWITCH2_BRIDGE_INPUT STREQUAL "JOYCON2" AND NOT SWITCH2_BRIDGE_FULL_INPUT)
|
||||
message(FATAL_ERROR "SWITCH2_BRIDGE_INPUT must be JOYCON2, WII, DUALSENSE or GAMEPAD")
|
||||
endif()
|
||||
if(NOT SWITCH2_BRIDGE_DUALSENSE_INPUT AND NOT SWITCH2_BRIDGE_IMU_TARGET STREQUAL "BOTH")
|
||||
if(NOT SWITCH2_BRIDGE_FULL_INPUT AND NOT SWITCH2_BRIDGE_IMU_TARGET STREQUAL "BOTH")
|
||||
message(FATAL_ERROR "LEFT/RIGHT IMU routing requires a translated full-controller native pair")
|
||||
endif()
|
||||
add_compile_definitions(SWITCH_PICO_SWITCH2_USB_BRIDGE=1)
|
||||
|
|
@ -382,6 +394,10 @@ if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
|||
${CMAKE_CURRENT_LIST_DIR}/bluepad32_config/parser/uni_hid_parser_switch2.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/bluepad32_config/parser/uni_switch2_pairing.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/bluepad32_config/parser/uni_switch2_haptics.c)
|
||||
if(SWITCH2_BRIDGE_FULL_INPUT)
|
||||
target_sources(bluepad32 PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/bluepad32_config/parser/uni_hid_parser_native_motion.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Firmware sources live under one include root and are grouped by responsibility.
|
||||
|
|
@ -423,16 +439,16 @@ if(SWITCH_PICO_SWITCH2_USB_BRIDGE)
|
|||
endif()
|
||||
target_include_directories(switch-pico PRIVATE ${CMAKE_CURRENT_LIST_DIR}/external)
|
||||
target_sources(switch-pico PRIVATE ${SWITCH2_USB_PROBE_DIR}/native_imu.cpp ${LIBOGC_IR_GENERATED})
|
||||
elseif(SWITCH2_BRIDGE_DUALSENSE_INPUT)
|
||||
elseif(SWITCH2_BRIDGE_FULL_INPUT)
|
||||
target_sources(switch-pico PRIVATE
|
||||
${SWITCH2_USB_PROBE_DIR}/dualsense_input.cpp
|
||||
${SWITCH2_USB_PROBE_DIR}/native_gamepad_input.cpp
|
||||
${SWITCH2_USB_PROBE_DIR}/native_imu.cpp)
|
||||
endif()
|
||||
if(NOT SWITCH2_BRIDGE_SOURCE_AUTO)
|
||||
target_compile_definitions(switch-pico PRIVATE
|
||||
SWITCH2_BRIDGE_SOURCE_ADDRESS_BYTES=${SWITCH2_BRIDGE_SOURCE_ADDRESS_BYTES})
|
||||
endif()
|
||||
if((SWITCH2_PROBE_COMPOSITE OR SWITCH2_PROBE_HUB) AND NOT SWITCH2_BRIDGE_DUALSENSE_INPUT)
|
||||
if((SWITCH2_PROBE_COMPOSITE OR SWITCH2_PROBE_HUB) AND NOT SWITCH2_BRIDGE_FULL_INPUT)
|
||||
target_compile_definitions(switch-pico PRIVATE
|
||||
SWITCH2_BRIDGE_SECOND_SOURCE_ADDRESS_BYTES=${SWITCH2_BRIDGE_SECOND_SOURCE_ADDRESS_BYTES})
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue