Skip to content
 
 

Repository files navigation

NextUI Netplay

Features

Scared-Screen Netplay (LAN)

Local network multiplayer with shared screen and synchronized inputs. Both devices display the same game state—-think of it as playing on the same console, but over WiFi or hotspot.

  • Supports 2 players (host + client)
  • Connect via WiFi (same network) or hotspot (auto-generated by host)
  • Support limited sync recovery
  • Not internet-based multiplayer—LAN only
  • Ad hoc/hotspot is the best for performance

GBA/GBC/GB Link

True multiplayer for GameBoy Advance/Game Boy Color/Game Boy. Each player has their own independent screen and game state.

  • Supports 2 players (host + client)
  • Connect via WiFi (same network) or hotspot (auto-generated by host)
  • Works with GBA games that support the GBA Wireless Adapter
  • Works for GBC/GB games that support Game Link.
  • Linked games do not have to be the same — Red/Blue, Seasons/Ages all work

Instanced cores (experimental, Game Boy and Game Boy Advance)

Turn on Use instanced cores in Settings and each device emulates both Game Boys, keeping the link cable inside the device and sending only controller inputs over WiFi. It removes a WiFi round trip from every cable exchange, which is what makes trading and battling feel responsive instead of sluggish.

The core picker is a submenu with separate Gambatte and mGBA choices. mGBA is off by default. Enabling it installs Netplay's matched ordinary MGBA.pak on each supported platform represented on the card while keeping the paired core inside Netplay.pak. Existing paks, saves and states are backed up first, and disabling it offers an independent restore for each category.

Both devices have to have it switched on, and both have to have both cartridges installed — no game files are ever sent between devices. If either condition isn't met, the game restarts automatically on the normal link-cable path and plays as it always did.

Compatibility

The .pak will check each installed core's build for shared-screen netplay. Matching builds = maximum compatibility. If the builds don't match, it can attempt to fall back on specially compiled "compatibility cores" that should work regardless.

Currently builds for:

  • TG5040 (Trimui Brick, Trimui Smart Pro)
  • TG5050 (Trimui Smart Pro S)
  • my282 (Miyoo A30)
  • my355 (Miyoo Flip)
  • H700 (Anbernic XX devices)

I'm trying to make everything compatible, but I only have a Trimui Brick and Miyoo A30 so I cannot promise everything will work properly on other devices.

Supported Platforms

Core Platform
FBNeo Arcade
FCEUmm NES / Famicom
Snes9x SNES / Super Famicom
Supafaust SNES / Super Famicom
PicoDrive Sega Genesis / Mega Drive, Sega CD, 32X
PCSX PlayStation
gpSP Game Boy Advance
Gambatte Game Boy Color
Gambatte Game Boy

Installation

⚠️ Backup your SD card before proceeding. This is beta software, and despite testing, I cannot promise that no bugs exist.

Prerequisites

  • NextUI already installed on your compatible device

Installation

Manual Installation

  1. Mount your NextUI SD card to a computer.
  2. Download the latest release file named Netplay.pak.zip from Github.
  3. Copy the zip file to /Tools/<PLATFORM>/Netplay.pak.zip (replace <PLATFORM> with your device: tg5040/tg5050/my282/my355/h700).
  4. Extract the zip, then delete the zip file.
  5. Confirm that there is a /Tools/<PLATFORM>/Netplay.pak folder on your SD card.
  6. Unmount your SD Card and insert it into your TrimUI device.

Pak Store Installation

Might come soon?

Update

Delete previous Netplay.pak folder. Extract new one.

Development harness

The DevBridge-powered two-device harness can discover handhelds through the Windows-to-WSL relay, check emulator readiness, atomically deploy mGBA/DraStic development artifacts with backups, create correlated sessions, and collect their logs. See docs/test-harness.md.

Usage

Netplay (LAN)

  1. From one device, open the .pak and select 'Host.' If ad hoc is recognized as being available for your device, the option will be available.
    • For ad hoc, the device will scan the local wifi channels for one with the least noise
    • It will create a nextui-XXXX network while still staying connected to the original host network
  2. From the other device, open the .pak and select 'Join.'
  3. Select the wifi network of the Host device. If none appear, press 'rescan'
  4. After both devices are connected, exit the .pak and navigate to the game you want to play together
  5. When you are done playing, go back to the .pak and press X to end the session. Previous wifi networks should be re-established.

Hosting continues in a detached session broker after the setup app closes. If you reopen Netplay.pak, the main screen shows Hosting: nextui-XXXX and its connected guests on the host, or Joined: nextui-XXXX and the host address on the guest. Host and Join stay hidden until the session ends.

An empty host remains available for guests to leave and rejoin. If the device reboots without ending the session, Netplay discards that previous-boot session on the next boot, game launch, or opening of the setup app; installed launcher bindings remain as inactive passthroughs.

Game Switcher shortcut

Tools > Settings > Add Netplay to GameSwitcher is off by default. When it is enabled, Netplay appears at the top of NextUI's Game Switcher. Opening it starts the Netplay Quick app, where you can host, join, or press X to end an armed session.

While a session is armed, the Game Switcher intentionally contains only the Netplay shortcut. Your normal history is backed up and restored, with Netplay kept at the top, when the session ends. NextUI uses the same recent.txt data for both the Game Switcher and its in-menu Recents folder, so those two views cannot have different contents while the session is armed without modifying NextUI itself.

From a running netplay game, use NextUI's configured Game Switcher shortcut (MENU+SELECT on the stock mapping). Netplay's MinArch shell wrapper removes the false slot marker/preview produced by MinArch's rejected quicksave and restores any metadata that existed before the session. The shipped MinArch binary is not modified or replaced.

Controller ports remain fixed at host/player 1 and guest/player 2. Swapping ports requires synchronized transport support and is not exposed as a setting yet.

Saving and save states:

Save states are disabled while in netplay.

For shared-screen netplay, the host's save file will be used, and will not be saved to the guest's SD card.

For game linking, each device will use its own save file.

Disclaimer

This is an unofficial modification. Use at your own risk. Always backup your SD card before installing.

Credits

  • NextUI by LoveRetro
  • mohammadsyuhada for original netplay implementation
  • My son, who wanted to trade Pokemon with me

About

Rewritten Netplay.pak to avoid drop-in patches, working with shims and stubs

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages