diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d909c9..442368d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ add_subdirectory(extern) include(cmake/aurora_core.cmake) include(cmake/aurora_gx.cmake) include(cmake/aurora_pad.cmake) +include(cmake/aurora_si.cmake) include(cmake/aurora_main.cmake) include(cmake/aurora_mtx.cmake) include(cmake/aurora_vi.cmake) diff --git a/cmake/aurora_pad.cmake b/cmake/aurora_pad.cmake index 77fc6d2..b3db579 100644 --- a/cmake/aurora_pad.cmake +++ b/cmake/aurora_pad.cmake @@ -3,5 +3,5 @@ add_library(aurora_pad STATIC lib/dolphin/pad/pad.cpp) add_library(aurora::pad ALIAS aurora_pad) target_include_directories(aurora_pad PUBLIC include) -target_link_libraries(aurora_pad PUBLIC aurora::core) +target_link_libraries(aurora_pad PUBLIC aurora::core aurora::si) target_link_libraries(aurora_pad PRIVATE absl::flat_hash_map) diff --git a/cmake/aurora_si.cmake b/cmake/aurora_si.cmake new file mode 100644 index 0000000..e44961f --- /dev/null +++ b/cmake/aurora_si.cmake @@ -0,0 +1,6 @@ +add_library(aurora_si STATIC lib/dolphin/si/si.cpp) + +add_library(aurora::si ALIAS aurora_si) + +target_include_directories(aurora_si PUBLIC include) +target_link_libraries(aurora_si PUBLIC aurora::core) diff --git a/lib/dolphin/pad/pad.cpp b/lib/dolphin/pad/pad.cpp index 12e2f46..b391288 100644 --- a/lib/dolphin/pad/pad.cpp +++ b/lib/dolphin/pad/pad.cpp @@ -264,22 +264,6 @@ void PADControlAllMotors(const uint32_t* commands) { } } -uint32_t SIProbe(int32_t chan) { - auto* const controller = aurora::input::get_controller_for_player(chan); - if (controller == nullptr) { - return SI_ERROR_NO_RESPONSE; - } - - if (controller->m_isGameCube) { - auto level = SDL_GetJoystickPowerInfo(SDL_GetGamepadJoystick(controller->m_controller), nullptr); - if (level == SDL_POWERSTATE_UNKNOWN) { - return SI_GC_WAVEBIRD; - } - } - - return SI_GC_CONTROLLER; -} - struct PADCLampRegion { uint8_t minTrigger; uint8_t maxTrigger; diff --git a/lib/dolphin/si/si.cpp b/lib/dolphin/si/si.cpp new file mode 100644 index 0000000..6164105 --- /dev/null +++ b/lib/dolphin/si/si.cpp @@ -0,0 +1,20 @@ +#include +#include "../../input.hpp" + +#include + +uint32_t SIProbe(int32_t chan) { + auto* const controller = aurora::input::get_controller_for_player(chan); + if (controller == nullptr) { + return SI_ERROR_NO_RESPONSE; + } + + if (controller->m_isGameCube) { + auto level = SDL_GetJoystickPowerInfo(SDL_GetGamepadJoystick(controller->m_controller), nullptr); + if (level == SDL_POWERSTATE_UNKNOWN) { + return SI_GC_WAVEBIRD; + } + } + + return SI_GC_CONTROLLER; +}