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.