Remote ARC ← Home

Games

NetLink

A Game Boy Advance link cable that runs through the internet. Two people, each on their own computer, link their Pokémon games in mGBA and battle or trade as if their GBAs were plugged together.

The NetLink kit

NetLinkCable.gba, netlink.lua and the steps below, in one zip. Both players download the same kit; nothing in it needs editing. The host's NetLink screen shows a 4-digit code and the other player types it in on theirs.

NetLink.zip
Or one at a time NetLinkCable.gba netlink.lua

NetLinkCable.gba is a tiny program made for NetLink (the other end of the cable), not a game. NetLink doesn't include any Pokémon game: use your own copy and save. netlink.lua is the mGBA script that connects the cable to this server.

  1. Get mGBA

    mGBA 0.10 or newer, free: mgba.io/downloads. Unzip the package somewhere you'll find it. You also need your own Pokémon game and its save (FireRed and LeafGreen are tested). NetLink doesn't include any Pokémon game.

  2. Open NetLink Cable

    Both of you do the same. In mGBA: File › Load ROM… → NetLinkCable.gba. Then Tools › Scripting…, and in that window File › Load script… → netlink.lua. Nothing to edit in it. (Next time: File › Load recent script.)

  3. Then your game

    In the NetLink Cable window: File › New multiplayer window, and in the new window open your Pokémon game. It plays on your usual save: NetLink copies it for you (see below).

  4. Connect

    One of you hosts

    Your NetLink Cable screen shows a 4-digit code. Tell it to your partner.

    The other joins

    Click your NetLink Cable window and press Z (mGBA's B) to join. Set the digits with the arrow keys (↑↓ change, ←→ move) and press X (mGBA's A).

    One key for the host: once you're connected, the host's NetLink screen asks for Ctrl+0 (Cmd+0 on a Mac) in the NetLink Cable window. That reopens NetLink Cable so that the host's game becomes the link's player 1; one of the two games has to be. The game keeps running.

  5. Meet at a Cable Club

    In both games, go upstairs in any Pokémon Center and talk to the attendant on the right (the Direct Corner). Both choose the same thing: Colosseum (and the same battle mode) or Trade Center. The game saves, then waits for the other player.

    Once both are waiting, the host gets three prompts ("When all players are ready…", the "2P LINK" box, then "Start link with 2 players"). Press A at each; on the last one, hold A until it moves on (a quick tap can be missed).

    In the Colosseum, walk up to your spot: the host's is on the left, the joiner's on the right. The battle starts when both of you stand on them. In the Trade Center, sit at the table.

  6. Finish

    Walk out of the room to end the link, or just close mGBA.

  • Your saves: mGBA gives the game in the second window its own save file (YourGame.sa2). NetLink fills it from your usual YourGame.sav and keeps the two the same while you play (whichever one the game changes is copied to the other). Before it first changes your .sav, it keeps the old one as YourGame.sav.netlink-backup.
  • Your game shows NEW GAME: you opened it before loading netlink.lua. NetLink copies your save and asks you to press Ctrl+R in the game window, which restarts it on your save.
  • "Both games were opened before NetLink Cable": one of you closes mGBA and starts again with NetLink Cable first.
  • "Couldn't find your game" on the NetLink screen: open the game from a file (not from inside an archive), or choose File › Save games › Load alternate save game… in its window and pick your .sav.
  • Clicking between windows pauses one? Turn off Pause when inactive in mGBA's settings.
  • The joiner's screen says there's no game with that code: check the digits with the host; the code stays the same until the host closes NetLink.
  • Can't connect: the NetLink screen says why. If the link was replaced, ask for a new one.

The NetLink Cable is a small homebrew GBA program that speaks Gen 3 Pokémon's link-cable protocol. In mGBA it's linked to your game in a second window, as if it were your friend's GBA; a Lua script in its window carries the traffic to the relay here (port 80, /netlink/connect), which passes it to the other player's. The cable only "plugs in" once both games are waiting at a Cable Club, and each game gets the other's messages in order, so battles and trades work with internet lag. Tested: FireRed ↔ FireRed, Colosseum single battle start to finish, relink, and leaving the room.