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 78795bb761..535e9b831f 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
@@ -244,11 +244,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 91d1aac809..cdf5689343 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
@@ -905,10 +905,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 dd3e1dcb31..c9b0cdff77 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -945,7 +945,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 8777221faa..4b7912ecfe 100644
--- a/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp
+++ b/Source/Core/Core/IOS/USB/Emulated/Microphone.cpp
@@ -152,9 +152,9 @@ long Microphone::CubebDataCallback(cubeb_stream* stream, void* user_data, const
if (Core::GetState(Core::System::GetInstance()) != Core::State::Running)
return nframes;
- // Skip data when HLE Wii Speak is not connected
+ // Skip data when HLE Wii Speak is muted
// TODO: Update cubeb and use cubeb_stream_set_input_mute
- if (!Config::Get(Config::MAIN_WII_SPEAK_CONNECTED))
+ if (Config::Get(Config::MAIN_WII_SPEAK_MUTED))
return nframes;
auto* mic = static_cast(user_data);
diff --git a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.cpp
index 70b9095dd1..aaea7a04dc 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();
@@ -409,9 +399,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 3546d06851..9d620a97b1 100644
--- a/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h
+++ b/Source/Core/Core/IOS/USB/Emulated/WiiSpeak.h
@@ -76,7 +76,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 ac01503d04..23db58601d 100644
--- a/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp
+++ b/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.cpp
@@ -57,11 +57,10 @@ void WiiSpeakWindow::CreateMainWindow()
auto* 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,
- &WiiSpeakWindow::SetWiiSpeakConnectionState);
- config_layout->addWidget(checkbox_mic_connected);
+ 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::SetWiiSpeakMuted);
+ config_layout->addWidget(checkbox_mic_muted);
m_combobox_microphones = new QComboBox();
#ifndef HAVE_CUBEB
@@ -94,9 +93,9 @@ void WiiSpeakWindow::EmulateWiiSpeak(bool emulate)
Config::SetBaseOrCurrent(Config::MAIN_EMULATE_WII_SPEAK, emulate);
}
-void WiiSpeakWindow::SetWiiSpeakConnectionState(bool connected)
+void WiiSpeakWindow::SetWiiSpeakMuted(bool muted)
{
- Config::SetBaseOrCurrent(Config::MAIN_WII_SPEAK_CONNECTED, connected);
+ Config::SetBaseOrCurrent(Config::MAIN_WII_SPEAK_MUTED, muted);
}
void WiiSpeakWindow::OnEmulationStateChanged(Core::State state)
diff --git a/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.h b/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.h
index 2da4887cc9..858e794dc3 100644
--- a/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.h
+++ b/Source/Core/DolphinQt/EmulatedUSB/WiiSpeakWindow.h
@@ -21,7 +21,7 @@ private:
void CreateMainWindow();
void OnEmulationStateChanged(Core::State state);
void EmulateWiiSpeak(bool emulate);
- void SetWiiSpeakConnectionState(bool connected);
+ void SetWiiSpeakMuted(bool muted);
void OnInputDeviceChange();
QCheckBox* m_checkbox_enabled;