diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt index b2d9ab1b8b..77c5792b27 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.kt @@ -238,11 +238,11 @@ enum class BooleanSetting( "EmulateWiiSpeak", false ), - MAIN_WII_SPEAK_CONNECTED( + MAIN_WII_SPEAK_MUTED( Settings.FILE_DOLPHIN, Settings.SECTION_EMULATED_USB_DEVICES, - "WiiSpeakConnected", - false + "WiiSpeakMuted", + true ), MAIN_SHOW_GAME_TITLES( Settings.FILE_DOLPHIN, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt index b4427cf99c..b961fed382 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt @@ -901,10 +901,10 @@ class SettingsFragmentPresenter( ) ) sl.add( - InvertedSwitchSetting( + SwitchSetting( context, - BooleanSetting.MAIN_WII_SPEAK_CONNECTED, - R.string.disconnect_wii_speak, + BooleanSetting.MAIN_WII_SPEAK_MUTED, + R.string.mute_wii_speak, 0 ) ) diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index f063c937c7..7676a4ccb5 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -942,7 +942,7 @@ It can efficiently compress both junk data and encrypted Wii data. Please select a compatible figure file Wii Speak - Mute Wii Speak + Mute Wii Speak Missing Microphone Permission Wii Speak emulation requires microphone permission. You might need to restart the game for the permission to be effective. diff --git a/Source/Core/Core/Config/MainSettings.cpp b/Source/Core/Core/Config/MainSettings.cpp index 6555f20f17..6e782fdb4e 100644 --- a/Source/Core/Core/Config/MainSettings.cpp +++ b/Source/Core/Core/Config/MainSettings.cpp @@ -600,8 +600,7 @@ const Info MAIN_EMULATE_WII_SPEAK{{System::Main, "EmulatedUSBDevices", "Em const Info MAIN_WII_SPEAK_MICROPHONE{ {System::Main, "EmulatedUSBDevices", "WiiSpeakMicrophone"}, ""}; -const Info MAIN_WII_SPEAK_CONNECTED{{System::Main, "EmulatedUSBDevices", "WiiSpeakConnected"}, - false}; +const Info MAIN_WII_SPEAK_MUTED{{System::Main, "EmulatedUSBDevices", "WiiSpeakMuted"}, true}; // The reason we need this function is because some memory card code // expects to get a non-NTSC-K region even if we're emulating an NTSC-K Wii. diff --git a/Source/Core/Core/Config/MainSettings.h b/Source/Core/Core/Config/MainSettings.h index 057de249b1..add214340b 100644 --- a/Source/Core/Core/Config/MainSettings.h +++ b/Source/Core/Core/Config/MainSettings.h @@ -364,7 +364,7 @@ extern const Info MAIN_EMULATE_SKYLANDER_PORTAL; extern const Info MAIN_EMULATE_INFINITY_BASE; extern const Info MAIN_EMULATE_WII_SPEAK; extern const Info MAIN_WII_SPEAK_MICROPHONE; -extern const Info MAIN_WII_SPEAK_CONNECTED; +extern const Info MAIN_WII_SPEAK_MUTED; // GameCube path utility functions diff --git a/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp b/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp index 5a0cf12587..e98af9206b 100644 --- a/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp +++ b/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp @@ -185,7 +185,7 @@ u16 Microphone::ReadIntoBuffer(u8* ptr, u32 size) bool Microphone::HasData() const { - return m_samples_avail > 0 && Config::Get(Config::MAIN_WII_SPEAK_CONNECTED); + return m_samples_avail > 0 && !Config::Get(Config::MAIN_WII_SPEAK_MUTED); } const WiiSpeakState& Microphone::GetSampler() const diff --git a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp index 15c145a80f..3252c47061 100644 --- a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp +++ b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp @@ -5,7 +5,6 @@ #include -#include "Core/Config/MainSettings.h" #include "Core/HW/Memmap.h" #include "Core/System.h" @@ -95,12 +94,6 @@ int WiiSpeak::SubmitTransfer(std::unique_ptr cmd) m_vid, m_pid, m_active_interface, cmd->request_type, cmd->request, cmd->value, cmd->index, cmd->length); - // Without a proper way to reconnect the emulated Wii Speak, - // this error after being raised prevents some games to use the microphone later. - // - // if (!IsMicrophoneConnected()) - // return IPC_ENOENT; - switch (cmd->request_type << 8 | cmd->request) { case USBHDR(DIR_DEVICE2HOST, TYPE_STANDARD, REC_INTERFACE, REQUEST_GET_INTERFACE): @@ -163,9 +156,6 @@ int WiiSpeak::SubmitTransfer(std::unique_ptr cmd) int WiiSpeak::SubmitTransfer(std::unique_ptr cmd) { - // if (!IsMicrophoneConnected()) - // return IPC_ENOENT; - auto& system = cmd->GetEmulationKernel().GetSystem(); auto& memory = system.GetMemory(); @@ -405,9 +395,4 @@ void WiiSpeak::GetRegister(const std::unique_ptr& cmd) const break; } } - -bool WiiSpeak::IsMicrophoneConnected() const -{ - return Config::Get(Config::MAIN_WII_SPEAK_CONNECTED); -} } // namespace IOS::HLE::USB diff --git a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h index 7eafee155a..57e2959196 100644 --- a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h +++ b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h @@ -74,7 +74,6 @@ private: void GetRegister(const std::unique_ptr& cmd) const; void SetRegister(const std::unique_ptr& cmd); - bool IsMicrophoneConnected() const; const u16 m_vid = 0x057E; const u16 m_pid = 0x0308; diff --git a/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp b/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp index 3d644827b1..b5b66a100e 100644 --- a/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp +++ b/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp @@ -52,11 +52,11 @@ void WiiSpeakWindow::CreateMainWindow() m_config_group = new QGroupBox(tr("Microphone Configuration")); auto* config_layout = new QHBoxLayout(); - auto checkbox_mic_connected = new QCheckBox(tr("Connect"), this); - checkbox_mic_connected->setChecked(Config::Get(Config::MAIN_WII_SPEAK_CONNECTED)); - connect(checkbox_mic_connected, &QCheckBox::toggled, this, + auto checkbox_mic_muted = new QCheckBox(tr("Mute"), this); + checkbox_mic_muted->setChecked(Config::Get(Config::MAIN_WII_SPEAK_MUTED)); + connect(checkbox_mic_muted, &QCheckBox::toggled, this, &WiiSpeakWindow::SetWiiSpeakConnectionState); - config_layout->addWidget(checkbox_mic_connected); + config_layout->addWidget(checkbox_mic_muted); m_combobox_microphones = new QComboBox(); m_combobox_microphones->addItem(QLatin1String("(%1)").arg(tr("Autodetect preferred microphone")), @@ -86,9 +86,9 @@ void WiiSpeakWindow::EmulateWiiSpeak(bool emulate) m_config_group->setVisible(emulate); } -void WiiSpeakWindow::SetWiiSpeakConnectionState(bool connected) +void WiiSpeakWindow::SetWiiSpeakConnectionState(bool muted) { - Config::SetBaseOrCurrent(Config::MAIN_WII_SPEAK_CONNECTED, connected); + Config::SetBaseOrCurrent(Config::MAIN_WII_SPEAK_MUTED, muted); } void WiiSpeakWindow::OnEmulationStateChanged(Core::State state)