Netplay
RetroArch network play, up to 4 players over LAN or device-to-device WiFi
RetroArch netplay lets up to 4 players play the same libretro core in real-time. Works over your home WiFi (LAN mode) or directly between two handhelds (device-to-device mode). Both devices must run the same ArchR version with the same core.
Pre-flight
Same version on both sides
ES → System Information: confirm matching ArchR version on host and clients.
Enable netplay globally
ES → Game Settings → Netplay Settings → NetPlay → ON. Also tap Index Games so RetroArch knows which ROMs you have.
Same core, same ROM
Each player needs the same core (e.g. snes9x_libretro) and the same ROM file. RetroArch hashes the ROM, if hashes differ, connection fails.
Option 1, over your home WiFi (LAN)
Host
ES → Network Settings → enable WiFi → disable Local Play Mode → set role 1 (Host).
In ES, highlight the game, press Y → Netplay Options → Host a Netplay Session. RetroArch starts in host mode and waits for clients.
Clients (up to 3)
ES → Network Settings → WiFi on → Local Play Mode OFF → role 2 / 3 / 4 (Client).
In ES, same game, Y → Netplay Options → Connect to a Netplay Session. Pick the host from the discovered list.
Option 2, device-to-device (no router)
When you're away from your home WiFi (parks, road trips). One device acts as a hotspot, the other connects to it.
Host
ES → Network Settings → Local Play Mode → ON → role 1 (Host).
ArchR creates a temporary WiFi access point on the host. Note the SSID + password it prints.
Clients
ES → Network Settings → connect to the host's SSID → Local Play Mode ON → role 2-4.
Same game-launch flow as LAN play.
Device-to-device mode disables internet, you can't scrape, RetroAchievements, or update while it's active.
Game-side setup
Both players launch the same ROM. RetroArch's session menu shows handshake status and frame buffer alignment. If you see "checksum mismatch", your ROMs aren't byte-identical (different region / dump).
For cores with rollback netcode (FBNeo, some 16-bit), RetroArch enables it automatically, input lag on a fast LAN feels close to local. For cores without rollback (most), play feels best when the host has the better connection, they run at near-zero lag, the client gets a few frames of buffered delay.
Optimal host pick
If you have one wired (eth-via-USB-C) device and one on WiFi, host on the wired one. RetroArch picks the host's frame as canonical, wired hosts mean fewer rollbacks.
If both are on WiFi, pick the device closer to the router as host.
Compatible cores
Any libretro core with netplay = supported in its info file. Quick list of known-working on RK3326 ArchR:
- snes9x2010, snes9x
- gambatte (GB/GBC), mgba (GBA)
- fceumm (NES), nestopia
- genesis_plus_gx (MD/MS/GG)
- fbneo (Arcade), rollback enabled
- mednafen_psx_hw (PSX)
Heavy 3D cores (mupen64plus_next, ppsspp_libretro) work technically but the A35 plus rendering load means stutter; not great experience.
Troubleshooting
"Checksum mismatch": different ROM dumps. Use the no-intro / Redump version on both sides.
"Connection timeout": host's IP is wrong (LAN mode) or hotspot isn't visible (device-to-device). In LAN mode, double-check both devices on the same subnet (ip addr over SSH).
Lag spikes: WiFi airtime contention. Move closer to the router, or disable Bluetooth on both devices during the session.
Audio out of sync: turn off the netplay audio buffer override. Quick Menu → Settings → Netplay → "Allow Asymmetric Frame Rate" → OFF.