Frames and Fans
Live
Components

Dolphin Android NetPlay Enables Cross-Platform Wii

Dolphin Emulator's latest update introduces NetPlay online multiplayer for Android, allowing cross-platform play between mobile devices and desktop systems

Dolphin Emulator's latest update introduces NetPlay online multiplayer for Android, allowing cross-platform play between...

Dolphin 2609 introduces NetPlay on Android, enabling online multiplayer for GameCube and Wii games. The update features a new graphical user interface built with Google's Jetpack Compose by developer tom-pratt, who stepped up to the challenge wanting to share some of his favorite childhood experiences with his own kids. This marks the first time the emulator's signature online play feature is fully accessible on mobile, bridging a long-standing gap between Android and desktop systems.

Google's Jetpack Compose simplified the Android UI development process. Using Compose, he built up the NetPlay Android GUI across several pull requests, with an initial bare bones implementation. Developer tom-pratt built a minimum viable product using the toolkit and later added features like controller port configuration. The update is now ready for users in Dolphin build 2609.

How Dolphin NetPlay works across devices

NetPlay uses a lockstep synchronization method to enable online multiplayer. This technique requires each participant's emulator to run in parallel, recording only user input rather than full video data. To maintain synchronization, games must run at nearly the same pace, using frame delays to compensate for minor timing differences. Traditionally, NetPlay required participants to use the same operating system and desktop environment. The new Android implementation breaks that barrier, allowing Android and desktop Dolphin instances to play together.

A standard network connection like Wi-Fi or Ethernet is currently required for Android NetPlay. The shift to cross-platform play, however, inherently increases the risk of desynchronization due to different underlying processor architectures.

Technical challenges and solutions for mobile emulation

Running Dolphin on Android is now feasible due to the power of recent flagship devices. The emulator itself requires a quad-core CPU or better to function optimally. On a four-core system, Dolphin uses two cores for its main emulation threads, a third for auxiliary tasks, and leaves the fourth for the operating system and background processes.

Power management was a significant hurdle. Dolphin's solution was to configure the application to run primarily on a single CPU core to limit power usage. This approach, previously a challenge on mobile platforms, is now viable thanks to modern hardware. Dolphin runs on 64-bit operating systems including Windows 10 and 11, Linux, macOS Catalina and above, and Android 5.0 and above.

Known limitations and risks in cross-platform NetPlay

Cross-platform NetPlay faces specific technical risks that can lead to desyncs. The primary challenge stems from CPU architecture differences: most desktops use x86-64 processors, while phones use ARM. Dolphin uses different just-in-time compilers (JITs) for each host CPU. The ARM64 and x86-64 JITs are very similar but not completely identical. Differences in how they compile certain game instructions can cause desynchronization.

Graphics driver variations introduce another layer of complexity. Framebuffer differences, particularly from different graphics drivers, can cause desyncs. Games that use EFB Access or Store EFB/XFB Copies to RAM may get different results depending on the driver. These mismatched framebuffer results can cause timebase desyncs even if the core game logic remains unaffected.

These issues can occur even between two Android devices. For instance, a phone with an Adreno GPU playing with a device using a Mali driver may desync in certain games. Driver differences may not immediately break a NetPlay session but can cause divergence over time, slowly pulling the game states out of sync.

Beyond NetPlay, Dolphin is popular for Nintendo Wii and GameCube emulation due to features like HD upscaling, custom graphics mods, and broad Bluetooth and USB controller support. It allows games to be played in full 1080p HD. The emulator supports all PC controllers, turbo speed, and local multiplayer on a single computer. For optimal performance, a discrete graphics card supporting DirectX 11.1 and OpenGL 4.4 is highly recommended.

Recommended GPU for HD PlayModel or Series
NvidiaGeForce GTX 1060 or better
AMDRadeon RX 570 or better
Intel IntegratedIris Pro or newer (older than HD 4000 not supported)

Dolphin requires at least 2GB of RAM, though RAM speed generally has no effect on emulation performance. To run the Windows version, the 64-bit Visual C++ redistributable for Visual Studio 2022 must be installed. For local multiplayer on one computer, only the first two controller ports need configuration.

The development team is already looking ahead. Work has started on adding Wi-Fi Direct support for Android NetPlay, aiming to emulate the local wireless play of the Nintendo DS. Using NetPlay over mobile data is not recommended due to potential packet loss and latency issues. The team is working on collaborative play via Wi-Fi Direct to emulate Nintendo DS local Wi-Fi.

Related coverage

More from Components