This guide will lead you through the process of running 12 instances of Mario Kart Wii at once on PC. This enables 12 player split screen.
Understand that, while I try to be fairly thorough, this is an inherently technical project. Please read through the entire guide first, before you even start, just to make sure you understand what you'll be doing. Be prepared to look up what you don't understand, and be prepared for failure at first, as there are many small details that need to be done right. I also provide a video guide (TODO), which you can reference as well.
I will do my best to keep this guide up-to-date. The latest files needed will always be available in this guide. Note that the video may fall out of date, while this guide will continue to receive updates. If in conflict, trust the written guide.
This guide requires running a large number of Dolphin instances. This means using a heavily multithreaded CPU and gaming-grade components. The following are the bare minimum recomendations to run this setup. If you have less capable hardware, you may be able to get away with fewer instances to claw back performance. It is also possible to network multiple PCs together if preferred.
A suitable machine can be built for less than $1,000 as of writing: https://pcpartpicker.com/list/dsMfJy
| Component | Minimum Recommendation |
|---|---|
| CPU | 12 threads (e.g., Core i7-8700, Ryzen 5 3600) |
| GPU | GTX 1080 Ti or better |
| RAM | 17GB or more |
| Display | 1440p or more and 16:9 |
- Create a folder called
MKW. All files should be placed as directed within it. - Place a known good dump of Mario Kart Wii in the
MKWfolder. You may legally obtain a copy by dumping it yourself. I suggest the CleanRip approach, as it will provide a confirmed good dump. For the purposes of this guide, I will useRMCE01.iso, but other regions of the game should work too. - Download the latest Dolphin resease (2409 at time of writing) from https://dolphin-emu.org/download/. Setting names and locations may change across versions, so using the same version as the guide, 2409, will ease your ability to follow along.
- Extract the folder from the
7zarchive so thatDolphin.execan be found inMKW\Dolphin-x64. Note: If you use a different architecture than x86 64-bit or an OS other than Windows, these names may be a bit different. This tutorial has not been tested on these configurations, but they should still work if you put in the effort to adapt this guide. - Create a folder at
MKW\Users\User1. This is the folder where we will set up most of our initial configuration options. - Open a command prompt in the
MKWdirectory. RunDolphin-x64\Dolphin.exe --user=Users\User1. This will launch Dolphin, but contain all user preferences, saves, etc. within the User1 folder. This is important, as we want each instance to have its own preferences eventually. If you get the error,This program can't start because VC_.dll is missing, you need to install the 64-bit Visual C++ redistributable for Visual Studio 2022 before Dolphin will run. - From the Toolbar, select
Tools->Perform Online System Update->United States. You will be prompted to connect to the Internet. SelectYes. This will install the Wii System Menu, which is needed to create our license Miis. You can choose a different region if you like, but I have only tested this setup with the US version of the game and system menu. - Go to
Config->Wii->Misc Settings->Connect USB Keyboardand check the box. This will present your system keyboard to Dolphin. This will make it easier to type in Mii names directly on your keyboard. - Go to
Controllers->Wii Remote 1->Configure->Motion Simulationand increase theTotal YawandTotal Pitch, perhaps to around 45 degrees each. This will ensure all settings are reachable during Wii System Menu setup. - Launch the system menu by selecting
Tools->Load System Menu 4.3U. Run through the setup as you would set up any other Wii console. - From the Wii System Menu, launch the Mii Channel.
- Create your 12 Miis. You may customize them as you please. I suggest giving them meaningful names, as they will show up when playing multiplayer. I named them
Player 1-Player 12and uniquely assigned each Mii one of the 12 available Mii colors. - Stop the emulator. Now we will set our configuration options.
- Uncheck
Config->General->Basic Settings->Enable Dual Core (speedhack). This normally provides a speedup by using more cores, but running 12 instances means the extra compute load from dual core will actually slow things down. - Check
Config->General->Basic Settings->Enable Cheats. We will enable some cheats later in the guide. - Uncheck
Config->Interface->User Interface->Hotkeys Require Window Focus. This will enable us to terminate all instances at once with a single press of the Escape key. - Uncheck
Config->Interface->Render Window->Confirm on Stop. When we want to stop all instances, it is tedious to get 12 confirmation dialogs, so we disable them. - Uncheck
Config->Interface->Render Window->Use Panic Handlers. Panic handlers are useful for identifying errors, but it will pause the offending instance, causing desync. Furthermore, actual errors are unlikely when using a clean dump of the game and a stable, recent build of Dolphin. - Uncheck
Config->Interface->Render Window->Show On-Screen Display Messages. These messages show in the corner of each instance. While not strictly necessary, disabling these will maintain a clean appearance. - Under
Config->Audio->Volume, reduce the slider to 8%. This will prevent audio peaking, as all 12 instances combine their sounds cumulatively. - Click on
Config->Paths->Game Folders->Add.... Select theMKWfolder. This will help Dolphin locate Mario Kart Wii, which should have been placed in this folder already. - In the dropdown under
Config->Wii->Misc Settings->Aspect Ratio:, select4:3. Twelve 4:3 aspect ratio instances can be scaled to fit perfectly within a single 16:9 display. Different layouts may be better suited by keeping this at 16:9. - Optional: Under
Config->Advanced->Clock Override, checkEnable Emulated CPU Clock Overrideand set the slider to 60%. This should reduce emulator burden on your CPU, to claw back a bit more performance. This is not necessary on more capable PCs. - Close the Config settings and open the Graphics settings.
- Under
Graphics->General->Shader Compilation, selectSkip Drawingand checkCompile Shaders Before Starting. This will prevent shader compilation stutter. Stutters often lead to instances desynchronizing from one another. - Optional: If you GPU is strong enough and your display large enough, go under
Graphics->Enhancements->Enhancementsand increaseInternal Resolutionto something suitable for your screen resolution. This is only beneficial if your screen is larger than 2560x1440. You should do some math to figure out what the ideal resolution will be for your particular screen size. By default, the game renders at 640x528. We will lay out the instances 4 wide and 3 tall on a 16:9 screen. - Check
Graphics->Hacks->Other->Vertex Rounding. When using the internal resolution enhancement, this will prevent unsightly seams in the Mario Kart Wii UI. - Close the Graphics settings.
- From the Dolphin games list, right-click Mario Kart Wii and select
Properties. - Click on
Verify->Verify Integrity. You may need to make the pop up wider or click the arrow on the right to see theVerifytab. Upon verification, it should reportThis is a good dump.. If it does not, then you need to get a proper dump of the game to ensure everything works. - Under
Game Config->Editor->User Config, paste the following codes. Note that most only work on NTSC-U version of the game. You will need to find your region's equivalent codes.
[Gecko]
$Force 30 FPS [Nick Reynolds]
004250D4 00000002
0029FD69 00000002
$No Background Music [davidevgen]
0489D940 30000000
*This includes the Track Music, Menu BG Music, and WiFi BG Music.
$High Data Rate [MrBean / Chadderz]
04653A20 28040007
04653AD4 3B400000
*Causes RACE data packets to be sent by the console much more often.
$Ultimate License Unlocker [mdmwii]
48000000 809B8F88
DE000000 90009380
5A010000 000000AC
60000003 00000001
6000001F 00000000
14000000 00000100
18000004 00000000
20180004 00000000
5A010000 00000070
62000000 00000000
5A010000 00008188
14000000 FFFFFFFF
14000004 031FFFFC
5A010000 00000468
62000000 00000001
E0000000 80008000
*This code will unlock all characters, vehicles, tracks, and it will put 3 stars on every tracks giving you 3 stars as overall rating on ALL licenses.
$9999 VR
48000000 809B8F88
DE000000 90009380
5A010000 00009050
3A000000 0000270F
12000000 0000270F
E0000000 80008000
$9999 BR
48000000 809B8F88
DE000000 90009380
5A010000 00009050
3A000008 0000270F
12000008 0000270F
E0000000 80008000
$No SSL [Fix94]
C0000000 0000000E
3C004E80 60000020
900F0000 3D808000
618C3000 3C00017F
6000CFFC 7C0903A6
3D607474 616B7073
800C0000 7C005800
40A20034 394C0003
392C0002 7D455378
38600000 8C050001
2C000000 38630001
4082FFF4 8C0A0001
9C090001 3463FFFF
4082FFF4 398C0001
4200FFC0 4E800020
*This code will work on ALL Wii Games, not just Mario Kart Wii.
*This code changes any instance of https to http on the url writes of your game. This is a good code for users of DWC-Emulator servers. You can use this code instead of configuring the Private Server NoSSL option within USB Loader GX.
*Region-Free
$No ESRB Screen [Diamond]
04604094 4800001C
*Bypasses the ESRB warning screen for the NTSC-U game.
$Disable Title Demo Movie [Diamond]
026F59BC 00004800
*This will disable the two demo movies that appear when leaving the title screen idle after a short period of time.
$Join Friend on Game Launch [Star / Riidefi]
C2008ED0 00000008
38800002 908D93E8
48000021 00000000
00000000 2D733133
32202D6C 30202D70
32393220 2D723000
7C8802A6 38A40008
90A40004 908D93EC
60000000 00000000
*This code joins a specified friend on license 0 when the game is launched.
$Auto Forwarded to Friends Menu Online [TheLordScruffy]
0061514B 0000008D
*Once you have successfully connected online, you are automatically in the Friends Menu (Open Room-View Friends-Add FC) instead of default main menu (WW-Regs-Friends).
$Skip License Screen [TheLordScruffy]
C2609C98 00000007
3FC0809C 83DED508
83DE0000 807E019C
38830468 3D808063
618C2A78 7D8903A6
4E800421 807E019C
80031308 3C808089
60000000 00000000
04633078 38000057
0483209C 38800057
045FF74C 38800057
*This code skips the license select screen and automatically selects the specified license (check "license" in ASM source). It makes it impossible to access the Options menu. It will also prompt you to make a new license if the selected one is blank.
$Force 150CC Room [XeR]
C2659D7C 00000002
3B800002 9B9D003F
60000000 00000000
*You must be the HOST in the WW/Room for this to work.
[Gecko_Enabled]
$No Background Music
$High Data Rate
$Ultimate License Unlocker
$9999 VR
$9999 BR
$No SSL
$No ESRB Screen
$Disable Title Demo Movie
$Skip License Screen
$Force 150CC RoomWe enable the following codes by default:
- No Background Music: Disable music. Instances often have some slowdown between them, resulting in a desync in the music, which is hard to listen to. Thus, we disable the background music. We can reenable it for a single instance as a compromise.
- High Data Rate: Increases the packet send rate between instances. Since they all run on the same local machine, there should be no problems with sending additional packets. This will effectively improve the "lag" between all players for free.
- Ultimate License Unlocker: Unlocks all characters, karts, and tracks by default.
- 9999 VR and 9999 BR: Since players do not truly own their own accounts, we simply force all of them to max VR and BR. This encourages higher CC racing and provides polish, as the racers don't have all different VR and BR ratings.
- No SSL: Needed to support connections to the custom server.
- No ESRB Screen: Skips the ESRB screen, reducing effective boot time.
- Disable Title Demo Movie: Avoids the demo movie, which is annoying when playing at different times across 12 instances.
- Skip License Screen: Automatically selects the first license. This prevents players from accidentally creating a new license that isn't friends with the other instances.
- Force 150CC Room: Used to ensure a consistent engine CC across races.
We will enable the following codes later:
- Auto Forwarded to Friends Menu Online: Since all instances are trying to play together, forwarding directly to the friends menu streamlines the process of connecting. This can be turned on for instance 1 later to streamline setup.
- Join Friend on Game Launch: Automatically attempts to join the first friend. This can be turned on for instances 2-12 later to streamline setup.
These codes can be further adjusted later under Gecko Codes.
- Optional: If you are concerned about performance, you can use a cheat code to limit all instances to 30 FPS. This will permit you to reduce the Emulated CPU Clock Override further. Close and reopen the game config to apply the ini changes we made, then go to
Gecko Codesand checkForce 30 FPS. Go back toConfig->Advanced->Clock Overrideand adjust it down before the point of in-game slowdown. This is most easily tested by adjusting the clock in a single player race.
- Open the Controllers settings.
- Under
Controllers->GameCube Controllers->Port 1, clickConfigureand set buttons as you please. We will update these bindings later. - Set
Controllers->Wii Remotes->Wii Remote 1toNone. This will prevent accidentally pressing a button on an emulated controller that you do not wish to use. We will be configuring GameCube controllers for this setup later. - Check
Controllers->Common->Background Input. Operating systems only permit a single window to be in focus at a time. Background input enables all 12 instances to receive inputs from their associated controllers. - Close the emulator entirely. This will ensure all configuration settings have been written to file.
All settings previously configured will be shared across all instances, but some settings, such as controller bindings and save files, must be specific to each instance.
- Find your
MKW\Users\User1folder and make 11 additional copies of it in theUsersdirectory. You should be left with 12 folders in total. Rename the copies so you have folders namedUser1-User12. - Create a script that will launch all 12 instances at once and place it in
MKW. Copy and paste the script from below and name itstart.bat.
REM start.bat
REM This script will automatically launch 12 instances of Mario Kart Wii in Dolphin.
REM It has been commented in detail so that users can understand how it works and can make changes as needed.
REM Do not print these commands to the screen.
@ECHO OFF
REM Clear the screen.
CLS
REM Change to the working directory.
cd /d %~dp0
REM Set this to the ISO all instances should launch.
SET game="RMCE01.iso"
REM Set this to the number of instances to launch.
SET instances=12
REM Start multiple instances of the emulator, each with its own config.
REM For each instance.
FOR /L %%N IN (1,1,%instances%) DO (
REM Configuration version. This version will launch the instances for configuration purposes, without launching the game.
start /HIGH Dolphin-x64\Dolphin.exe --user="Users\User%%N"
REM Standard version. This is what will be used to launch 12 copies of the game.
REM start /HIGH Dolphin-x64\Dolphin.exe --user="Users\User%%N" --exec=%game%
REM Each part of this launch command is broken down in the comments below.
REM start: Start the program, detached from the current command prompt. This allows us to launch multiple instances of Dolphin in parallel instead of one at a time.
REM /HIGH: Launch the program with high system scheduling priority. This minimizes the impact of background processes on game performance.
REM Dolphin-x64\Dolphin.exe: Launch Dolphin.
REM --user="Users\User%%N": Specify a unique user configuration directory for each instance. Each config directory contains unique preferences, saves, etc.
REM --exec=%game%: Immediately launch the specified game ISO.
REM Wait 3 seconds between starting each instance. This is done to make sure each instance launches in order.
timeout 3
)- Launch the script in the configuration version. In the Windows File Explorer, you can simply double-click
start.bat. - On the first instance only (the first to launch), find your clean copy of Mario Kart Wii,
Right-click->Properties->Gecko Codesand uncheckNo Background Music. This ensures we will still have music, though it will be very quiet. - Optional: On instance 1, find your clean copy of Mario Kart Wii,
Right-click->Properties->Gecko Codesand checkAuto Forwarded to Friends Menu Online. This will cause instance 1 to automatically load the friends menu on boot, to more quickly create a lobby. - Optional: On instances 2-12, find your clean copy of Mario Kart Wii,
Right-click->Properties->Gecko Codesand checkJoin Friend on Game Launch. This will cause these instances to automatically join player 1's room. Player 1 will need to connect online and create a room before the other instances try to connect or they will fail to join.
The following steps must be done individually for all 12 instances:
- Open the Controllers settings.
- Under
Controllers->GameCube Controllers->Port 1, clickConfigure. - Set the bindings according to your preferences.
Note: There are several common pain points that become evident when configuring many controllers on one machine. Here are some issues you may run into depending on the controllers you try to use:
- Windows is limited to 4 XInput devices, a hard cap that cannot (easily) be broken. Most modern Windows controllers (particularly Xbox controllers) use XInput.
- Bluetooth is limited to 7 connected devices, and even having that many is unstable with most Bluetooth adapters. This makes wireless PlayStation controllers difficult to work with.
- Xbox One (and presumably Xbox Series) controllers cannot perform background inputs. You can still use them, but only on the one instance that you keep in focus. Supposedly, downgrading your controller drivers can fix this.
- WGInput does not support background input.
- The official GameCube Controller Adapter will work, but each adapter is assigned to one instance of Dolphin each, meaning most ports are wasted and you'll need a dozen adapters.
- DInput controllers generally work in the background and have no device limits, but it is an older, less common standard.
To avoid these issues, I suggest using GameCube Adapter Unlimited, an input feeder I developed specifically for Mario Kart split screen multiplayer, which takes an arbitrary number of GameCube Controller Adapters for Wii U/Switch (both official and unofficial) and maps them to DInput controllers usable by Dolphin. Here's how you use GameCube Adapter Unlimited:
- Download and install the ViGEm Driver: https://github.com/ViGEm/ViGEmBus/releases/latest. This will enable the automatic creation of virtual DInput controllers for use in Dolphin (or any other application that accepts DInput/PS4 controllers).
- Download and install the WinUSB driver using Zadig: https://dolphin-emu.org/docs/guides/how-use-official-gc-controller-adapter-wii-u/#Using_Zadig. This will allow GameCube Adapter Unlimited to read the inputs from the controllers.
- Download
GameCubeAdapterUnlimited.exe. This is the input feeder that does the mapping from GameCube controllers to virtual DInput controllers. - Optional: Overclock the USB polling rate for each adapter using the overclocking guide. This can make inputs slightly more responsive and consistent.
- If you want specific adapters to get specific controller IDs (1, 2, 3, etc.), ensure all adapters are unplugged initially.
- Run
GameCubeControllerUnlimited.exe. It should open a console window that saysInput feeder started. - Attach your adapters in the order you want them. The first adapter maps to controllers 1-4 (devices 0-3 in Dolphin), the second to 5-8, and so-on. Ensure 3rd party adapters are running in Wii U/Switch mode before connecting them.
- Start Dolphin. Under
Controllers->GameCube Controllers->Port 1, clickConfigure. Configure controllers using theGCAUnltd.iniprofile below. Once copied to the correct location,GCAUnltd.inishould appear in the Profile drop down. Select it, then clickLoadand change the number in the device ID (SDL/0/PS4 Controller) for each instance. You may also wish to calibrate the sticks and triggers of each controller, for ideal handling. - Note: Once attached, ports are fixed to specific controller IDs. This was done to ensure ports don't randomly migrate around to different instances. For instance, anyone who connects to port 1 on adapter 2 will always be Player 5.
- Note: If an adapter is removed, port orderings are still preserved. Reattaching an adapter or replacing it with another will fill in for those lost ports. This handles situations where an adapter is accidentally disconnected. This way, you don't have to restart the entire process of resetting the feeder and attaching each adapter again to maintain order. For instance, if you have 3 adapters and adapter 2 is disconnected, players 5-8 will no longer be able to pass any inputs; reconnecting an adapter will reclaim the role of adapter 2, and players 5-8 can continue playing from that adapter. Subsequently, attaching a fourth adapter will still have it properly assigned as adapter 4.
Sometimes, Windows will change the established order of the virtual controllers. This is problematic because assigned ports may correspond to different instances than originally configured. To correct this, you must remove all the virtual controllers from the Windows Device Manager, then re-add the controllers. GameCube Adapter Unlimited can accomodate this.
If you run GameCubeAdapterUnlimited.exe as admin, it will automatically remove all PS4 controllers (including the virtual controllers created by GameCube Adapter Unlimited) from the Device Manager upon launch.
Then it will continue as usual.
Correct port orderings will be maintained, at least until the next reboot of Windows, and you shouldn't need to run as admin unless this issue reappears.
You can choose to always run as admin if you never want to worry about this problem.
Need hardware for this setup? You can buy clone controllers and adapters in bulk. Having everyone use the same controller type also enables a more consistent player experience. Alibaba provides clone controllers for $5 each and clone adapters for $8 each. In my experience, clone controllers are of poor quality but are adequate for these purposes. That's about $84 in hardware for 12 players. You could also use existing equipment or a bring-your-own-controller policy to run on a tighter budget.
Here is my controller profile for GameCube Adapter Unlimited. Save it with the .ini extension to MKW\Users\UserX\Config\Profiles\GCPad, where UserX is each of the User1-User12 instance folders.
By doing this, you can load the profile in each emulator instance and simply change the device to the preferred controller, rather than having to manually map every button for every controller.
These bindings will perfectly match each GameCube controller to the associated emulated button presses.
# GCAUnltd.ini
[Profile]
Device = SDL/0/PS4 Controller
Buttons/A = `Button E`
Buttons/B = `Button S`
Buttons/X = `Button N`
Buttons/Y = `Button W`
Buttons/Z = Back
Buttons/Start = Start
Main Stick/Up = `Left Y+`
Main Stick/Down = `Left Y-`
Main Stick/Left = `Left X-`
Main Stick/Right = `Left X+`
Main Stick/Modifier/Range = 50.
C-Stick/Up = `Right Y+`
C-Stick/Down = `Right Y-`
C-Stick/Left = `Right X-`
C-Stick/Right = `Right X+`
C-Stick/Modifier/Range = 50.
Triggers/Dead Zone = 12.
Triggers/L = `Shoulder L`
Triggers/R = `Shoulder R`
Triggers/L-Analog = `Trigger L`
Triggers/R-Analog = `Trigger R`
D-Pad/Up = `Pad N`
D-Pad/Down = `Pad S`
D-Pad/Left = `Pad W`
D-Pad/Right = `Pad E`
Rumble/Motor = MotorClose all instances of the emulator.
Nintendo's official servers are long gone, so we are unable to connect to them. Furthermore, Wiimmfi, the most popular fan-run server replacement, requires additional effort to get working in Dolphin, requiring a 7-day wait period for each instance and a NAND dump from a real Wii. To avoid those limitations, we will be setting up our own private server, which will run locally, on the same machine our Dolphin instances run on.
- Download and install VMWare Workstation Pro. A direct download is available here. VMWare is free to use non-commercially.
- Open the VM image provided here: https://github.com/SMarioMan/wii-online-server/releases/latest/. The username is "
marioman" and the password is "" Alternatively, you may be able to create your own VM image by following the directions here: https://github.com/EnergyCube/CoWFC. In my experience, the script is broken, so I advise using the pre-made VM. - Log in to the VM, using the credentials listed in the VM description.
- Within the VM, run
ifconfigand note the IPv4 address. It will likely look something like192.168.0.x. Also note the MAC address associated with that interface. - Update the DNS configuration to match by running
sudo nano /etc/dnsmasq.conf. Scroll to the bottom using thePage Downkey. Replace all occurrences of192.168.0.108with the actual IP assigned to the server. Reload the DNS server by runningsudo /etc/init.d/dnsmasq restart, which will apply the changes. - Change your system DNS settings to point to the custom server's DNS. In Windows, go to
Network Connections->Right-click main network adapter->Properties->Internet protocol version 4 (TCP/IPv4)and selectUse the following DNS server addresses:. Set thePreferred DNS server:to your VM's IP. SetAlternate DNS server:to a normal server, such as 8.8.8.8 or your own router's DNS. Without this second DNS, your machine will be unable to resolve DNS queries whenever your VM isn't running. Alternatively, you can revert the manual DNS settings back to automatic in Windows when you aren't using this multiplayer setup. - Optional: Go to your router's network settings and create a static IP rule to ensure the IP address doesn't change from what you noted. The steps to do this vary with each router, so you will need to look this up yourself. If you don't do this, you will have to check and potentially update the dnsmasq rules (steps 4-6) each time you start the server.
- Start the custom server, if it isn't already running.
- Change the script to the standard version and launch. You accomplish this by commenting out the configuration version line and uncommenting the standard version line. You can comment out lines by adding
REMand un-comment lines by removingREMat the beginning of the line. - Create a license for each game instance, assigning Miis 1-12. This ensures each player is uniquely labeled.
- In the game menu, launch Nintendo WFC/Wiimmfi in 1 player mode.
- Once connected, go to
Friendsto pull up the friend code associated with each instance. - Using
Register a Friend, exchange friend codes between instance 1 and instances 2-12. - Wait for registration to complete. This can be urged along by opening the
Find a Friendscreen on all instances. - In instance 1, go to
Friends->Create a Room. In the other instances, go toFriends->Find a Friend, then select Player 1 and join the room. - Once all instances have joined, use the messages system in-game to make everyone friends with everyone else. This way, any instance can host a room in the future.
Finding a way to lay out 12 windows cleanly has been a challenge for me. In Windows, I have historically used the OBS projector. This looks nice, but there is some added latency associated with it. In Linux, laying out my windows in the i3 desktop environment has worked well, as you can tweak the borders down to 0 pixels. Recently, I have developed a tool, ArrangeInstances, that will use the Windows API to automatically lay out the windows at optimal sizes to maximize use of screen real-estate while eliminating window decorations (title bars, frames, shadows, etc.) and keeping input latency at a minimum.
Note: ArrangeInstances may be incorrectly identified as a virus by Windows Security.
To bypass this detection, you may need to temporarily disable real-time protection, download the file, move the binary to the MKW folder, and add MKW to your antivirus exclusions list before re-enabling protection.
If you don't feel comfortable running the executable directly, you can also evaluate and build it yourself from source using Visual Studio 2022 or later, or you can look for a different solution to window tiling.
- Download ArrangeInstances.exe.
- Ensure your instances are already launched using
start.bat. - Open the command prompt where you placed the tool and run
ArrangeInstances.exe 1.33333333333 "Dolphin.* \|.*". Dolphin windows will automatically be optimally arranged across your primary monitor.
Once everything has been fully configured, these are all the steps you'll need to take to get running in the future.
- Start your server VM.
- Ensure your VM IP matches the one configured in
dnsmasq.conf. It will likely have changed if you are using your setup on a different network or didn't configure your router to provide the server with a static IP. If it doesn't match, update the configuration and apply your changes. - Update your OS DNS settings to point to your VM.
- Run
GameCubeControllerUnlimited.exe. It should open a console window that saysInput feeder started. - Attach your adapters in the order you want them.
- Run the
start.batscript to launch all instances. - Run
ArrangeInstances.exe 1.33333333333 "Dolphin.* \|.*". - Ensure controllers are still assigned properly.
- Have one instance create a room.
- Have all other instances join the room.
- Gather all your players together.
- Play the game.
Please make sure to read over the guide and associated doumentation thoroughly. If you'd like to "converse with the documents", you can set up a NotebookLM instance to help troubleshoot. Add the following links as sources:
https://gist.github.com/SMarioMan/2ba30f226c979c4a9f7c2c024d9793ca
https://pcpartpicker.com/list/dsMfJy
https://dolphin-emu.org/docs/guides/ripping-games/
https://dolphin-emu.org/download/release/2409/
https://dolphin-emu.org/download/
https://7-zip.org/download.html
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
https://gaming.stackexchange.com/questions/322406/xbone-controller-driver-issues-how-to-use-dolphin-and-steam-on-the-same-driver
https://github.com/SMarioMan/gamecube-adapter-unlimited/
https://github.com/nefarius/ViGEmBus
https://dolphin-emu.org/docs/guides/how-use-official-gc-controller-adapter-wii-u/#Using_Zadig
https://github.com/SMarioMan/gamecube-adapter-unlimited
https://docs.google.com/document/d/1cQ3pbKZm_yUtcLK9ZIXyPzVbTJkvnfxKIyvuFMwzWe0/edit?pli=1&tab=t.0
https://github.com/SMarioMan/devcon
https://www.alibaba.com/product-detail/Console-GC-Port-USB-Wired-Gamepad_1600271816220.html
https://www.alibaba.com/product-detail/4-Ports-Converter-For-GameCube-GC_1600085021376.html
https://blogs.vmware.com/cloud-foundation/2025/03/10/vmware-fusion-workstation-going-free-new-resources/
https://web.archive.org/web/20250301202355/https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.6.2/24409262/windows/core/
https://github.com/SMarioMan/wii-online-server
https://github.com/EnergyCube/CoWFC
https://github.com/SMarioMan/ArrangeInstances/Or use this pre-made version (documents last updated 11/15/2025): https://notebooklm.google.com/notebook/e700e5aa-d7cd-4fd2-9e54-3d7256eebe00