diff --git a/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.cpp b/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.cpp index 4405e03e5d..1efe6829a6 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.cpp @@ -7,14 +7,12 @@ #include #include "Common/Assert.h" -#include "Common/BitUtils.h" #include "Common/Common.h" #include "Common/CommonTypes.h" #include "Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" -#include "InputCommon/ControllerEmu/Control/Input.h" #include "InputCommon/ControllerEmu/ControlGroup/Buttons.h" namespace WiimoteEmu @@ -54,20 +52,24 @@ TaTaCon::TaTaCon() : Extension3rdParty("TaTaCon", _trans("Taiko Drum")) void TaTaCon::BuildDesiredExtensionState(DesiredExtensionState* target_state) { - DataFormat tatacon_data = {}; + DesiredState tatacon_data = {}; m_center->GetState(&tatacon_data.state, center_bitmasks.data(), m_input_override_function); m_rim->GetState(&tatacon_data.state, rim_bitmasks.data(), m_input_override_function); - // Flip button bits. - tatacon_data.state ^= 0xff; - target_state->data = tatacon_data; } void TaTaCon::Update(const DesiredExtensionState& target_state) { - DefaultExtensionUpdate(&m_reg, target_state); + DesiredState desired_state{}; + if (std::holds_alternative(target_state.data)) + desired_state = std::get(target_state.data); + + // Flip button bits. + desired_state.state ^= 0xff; + + m_reg.controller_data[5] = desired_state.state; } void TaTaCon::Reset() diff --git a/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.h b/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.h index 2342feacaf..bf8259bddc 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.h +++ b/Source/Core/Core/HW/WiimoteEmu/Extension/TaTaCon.h @@ -29,7 +29,10 @@ public: }; static_assert(sizeof(DataFormat) == 6, "Wrong size"); - using DesiredState = DataFormat; + struct DesiredState + { + u8 state; + }; TaTaCon(); diff --git a/Source/Core/Core/Movie.cpp b/Source/Core/Core/Movie.cpp index 679e5f3600..aee5e4707a 100644 --- a/Source/Core/Core/Movie.cpp +++ b/Source/Core/Core/Movie.cpp @@ -716,7 +716,7 @@ static std::string GenerateWiiInputDisplayString(int index, const DesiredWiimote if (state.extension.data.index() != ExtensionNumber::NONE) { const auto ext_visitor = overloaded{ - [&](const Nunchuk::DataFormat& nunchuk) { + [&](const Nunchuk::DesiredState& nunchuk) { const auto bt = nunchuk.GetButtons(); if (bt & Nunchuk::BUTTON_C) display_str += " C"; @@ -726,7 +726,7 @@ static std::string GenerateWiiInputDisplayString(int index, const DesiredWiimote nunchuk.GetAccelZ()); display_str += Analog2DToString(nunchuk.jx, nunchuk.jy, " ANA"); }, - [&](const Classic::DataFormat& cc) { + [&](const Classic::DesiredState& cc) { const auto bt = cc.GetButtons(); constexpr std::pair named_buttons[] = { {Classic::PAD_LEFT, "LEFT"}, {Classic::PAD_RIGHT, "RIGHT"}, @@ -757,12 +757,12 @@ static std::string GenerateWiiInputDisplayString(int index, const DesiredWiimote const auto right_stick = cc.GetRightStick().value; display_str += Analog2DToString(right_stick.x, right_stick.y, " R-ANA", rstick_max); }, - [&](const Guitar::DataFormat&) { display_str += " Guitar"; }, + [&](const Guitar::DesiredState&) { display_str += " Guitar"; }, [&](const Drums::DesiredState&) { display_str += " Drums"; }, - [&](const Turntable::DataFormat&) { display_str += " Turntable"; }, - [&](const UDrawTablet::DataFormat&) { display_str += " UDraw"; }, - [&](const DrawsomeTablet::DataFormat&) { display_str += " Drawsome"; }, - [&](const TaTaCon::DataFormat&) { display_str += " TaTaCon"; }, + [&](const Turntable::DesiredState&) { display_str += " Turntable"; }, + [&](const UDrawTablet::DesiredState&) { display_str += " UDraw"; }, + [&](const DrawsomeTablet::DesiredState&) { display_str += " Drawsome"; }, + [&](const TaTaCon::DesiredState&) { display_str += " TaTaCon"; }, [&](const Shinkansen::DesiredState&) { display_str += " Shinkansen"; }, [](const auto& arg) { static_assert(std::is_same_v>,