Room-based voice chat for Retro Rewind running on WiiCompiled.
Everyone in the same Retro Rewind online room who also runs MKW VoiceChat is connected automatically. No room codes or separate apps.
Important
This is an unofficial, independent project. It is not affiliated with, endorsed by or supported by WiiCompiled, Wheel Wizard or Retro Rewind, and absolutely not by Nintendo. Do not report issues with this project to any of them.
Large parts of this repository were generated with AI, including the native runtime, the installer/patcher and the CI/release workflows. The commit history was recreated and ported with AI from a private repository and does not reflect the original development history. The project is neither optimized nor technically polished and is not intended for merging into the real WiiCompiled.
The WiiCompiled README tells users to only use builds from its official Releases page and to avoid third-party installers. This project still provides an installer for convenience. And again: it's not an official WiiCompiled build.
If you don't trust it, don't use it, or read the source and build it yourself (see Building).
- Automatic voice rooms based on your current Retro Rewind room
- Opus, 48 kHz mono, 20 ms frames, FEC and packet-loss concealment
- Peer-to-peer over WebRTC (libdatachannel, DTLS-encrypted), TURN relay fallback when configured
- RNNoise noise suppression, noise gate, compressor, automatic normalization, mic gain
- Voice activation, push-to-talk, push-to-mute, mute and deafen with keyboard/controller hotkeys
- Per-player volume and mute
- Mute presets: everyone, friends only, everyone but friends, teammates, everyone but teammates, new players
- Speaker overlay with friend/muted/deafened state and a local status indicator
- Microphone loopback test and output test tone
- Update check in-game, separate updater with SHA-256 verification
- Global Voice Chat online count, plus an online-user list for users whose Retro Rewind license/profile and friend code can be resolved
Defined in version.json:
| MKW VoiceChat | 0.14.8 |
| Protocol | 1 |
| WiiCompiled base | 0.2.34 |
The installer only builds against this exact WiiCompiled version. When a new WiiCompiled version is released, installing is blocked until an MKW VoiceChat update supporting it is available.
If a newer official WiiCompiled version is released before a matching MKW VoiceChat build is available, the game can still start, but Voice Chat is disabled for that process. The Voice Chat tab shows the version mismatch and keeps the update button disabled until a compatible MKW VoiceChat release is available.
Once a matching release is available, the update button becomes available and the installed updater can update the Voice Chat build. You do not need to manually uninstall the old build first.
Requirements: Windows 10/11 x64, Wheel Wizard with a clean PAL RMCP01 image configured, and Retro Rewind installed/launched once. WiiCompiled does not need to be installed, the installer sets it up automatically. An existing WiiCompiled installation is never removed or replaced. MKW VoiceChat is built as a separate copy, so you end up with both.
- Download
WiiCompiled-VoiceChat-Installer.exefrom Releases. - Close the game and run the installer, choose Install / Update.
- Start the game through the Wiicompiled (Voicechat) desktop shortcut.
Warning
Wheel Wizard's normal Retro Rewind button launches the official build without voice chat.
What the installer does:
- Installs, verifies or updates the official WiiCompiled base and Retro Rewind as needed
- Applies the voice patch to a copy, downloads pinned dependency sources and compiles a separate build locally
- Installs to
%APPDATA%\CT-MKWII\Recomp\MKWVoiceChat(or Wheel Wizard's configured AppData location) - Creates the desktop shortcut and installs the updater
Installer menu: Install / Update, Repair / Repatch (forces a clean rebuild), Uninstall (removes only the voice build and shortcut). Logs are written to ...\MKWVoiceChat\logs.
CLI: WiiCompiled-VoiceChat-Installer.exe [run|check|reconcile|patch|repair|update|launch|unpatch] [--wait-pid PID]
Press F10 in-game and open Voice Chat. Everything is configured there: enable/disable, input/output device, processing, activation mode, hotkeys, mute presets, overlay and the per-player list. Settings are saved in the [voicechat] section of WiiCompiled's Config.toml.
- Voice is sent peer-to-peer, like Retro Rewind's own online play. The client only connects to players in your current Retro Rewind room, who can already see your IP address through in-game traffic. Room membership is not authenticated yet though, so a modified client could join a voice room by claiming a player ID from the public RWFC room list and see the IP addresses of its voice participants.
- While Voice Chat is enabled, the client maintains a signaling presence connection used for the global online count. The count includes connected MKW VoiceChat clients even when they are not currently in a Retro Rewind room.
- If your current Retro Rewind profile/license can be resolved, your profile ID, display name and friend code are used by the signaling service and may be included in the global online-user list shown to other MKW VoiceChat users. Clients without a resolved profile/friend code are still counted, but are not shown in that list.
- The Retro Rewind session key is kept in memory only and is never included in the online-user list.
- Windows only.
- Room membership is based on the public RWFC room list and is not authenticated yet. The
rr_verifierbridge exists, but RR GPSP is not publicly reachable. - The signaling server runs on Cloudflare Workers Free and can run out of daily requests.
Requires .NET 8 SDK, Python 3.10+, CMake and Visual Studio 2022 with the C++ workload.
dotnet publish patcher/MKWVoiceChat.Patcher/MKWVoiceChat.Patcher.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o distThe build publishes and embeds the updater and downloads the pinned RNNoise model (SHA-verified) via tools/prepare_rnnoise_model.py.
Self-tests (same as CI):
dotnet run --project patcher/MKWVoiceChat.Patcher -c Release -- selftest-version
dotnet run --project patcher/MKWVoiceChat.Patcher -c Release -- selftest-bootstrap
git clone --depth 1 --branch v0.2.33 https://github.com/patchzyy/Wiicompiled.git upstream
dotnet run --project patcher/MKWVoiceChat.Patcher -c Release -- selftest-patch upstreamDev/debug client (ImGui) with LAN UDP, room codes, manual ICE, network simulation and codec diagnostics. Dependencies come from vcpkg.json (manifest mode).
- Windows:
msbuild MKW-VoiceChat.sln -p:Configuration=Release -p:Platform=x64(requiresvcpkg integrate install) - macOS:
./build-macos.sh(output:bin/mkw_voicechat)
cmake -S tests -B audio-tests -DMKWVC_TEST_SPEECH=path/to/speech.wav -DCMAKE_BUILD_TYPE=Release
cmake --build audio-tests --config Release
ctest --test-dir audio-tests -C Release --output-on-failurePush a tag vX.Y.Z matching productVersion in version.json. The release workflow runs all tests, builds the installer and publishes it together with mkwvc-release.json and Licenses.zip.
| Directory | Purpose |
|---|---|
signaling_worker/ |
Production signaling (Cloudflare Workers + Durable Objects) |
signaling_server/ |
Local Python signaling server for development (pip install -r signaling_server/requirements.txt, python signaling_server/server.py --port 8765) |
turn_server/ |
coturn deployment (Docker) for relay fallback |
rr_verifier/ |
Retro Rewind session verifier (not usable in production yet) |
See the READMEs in signaling_worker/, turn_server/ and rr_verifier/ for deployment.
| Path | Content |
|---|---|
include/, src/ |
Voice core (audio, codec, jitter buffer, transports, signaling) and standalone client |
patcher/MKWVoiceChat.Patcher/ |
Installer and WiiCompiled integration |
patcher/MKWVoiceChat.Updater/ |
Update bootstrap |
patcher/payload/runtime/ |
Code injected into WiiCompiled's runtime |
third_party/rnnoise/ |
Vendored RNNoise |
tests/ |
Audio regression tests |
version.json |
Single source of version identity |
GPL-3.0, same as WiiCompiled. Third-party components keep their own licenses, see THIRD-PARTY-NOTICES.md and third_party/rnnoise/COPYING.
No Nintendo code, assets or game data are included in this repository or its releases.
