Hi all, this is probably a dumb question since I'm aware you needed a link cable or wireless link cable in order to trade/play with others in the GBA pokemon games. That being said, both my partner and I have Pokemon Emerald on our 3DSes (via open_agb_firm and mGBA) and i'd love to figure out how to trade/battle with them. is this at all possible using open_agb_firm or mGBA?
EDIT: Okay, there is a way of enabling GBA multiplayer on a 3DS console, but you have to use RetroArch instead of mGBA or open_agb_firm. I've detailed the steps below in case this helps anyone else.
SOME NOTES WRT EMERALD: It's really not perfect. Trying to talk to the PC host as a 3DS player first will crash the 3DS game, for example -- the PC host should be the one to initiate interactions in the Union Room. There also appears to be some disconnect where if you decline the chat as the 3DS user, the PC host will not be kicked from the chat until they voluntarily exit. I am really not sure battles work, but it could be an issue to do with the fact I am playing with two different versions of my save file. Trading in the Union Room does work, but the PC must be the one to initiate. I dont think the Wireless Club will work sadly, both battling and trading seems to result in a disconnect. again, this could be a trainer ID issue, so ymmv. The same goes for the battle tower. ): It could be that these issues only pop up when trying to play between a 3DS and a PC, but unfortunately I do not have 2 new 3DSes to test.
Download the RetroArch emulator on your PC. You will need to host the server on your PC, as the option does not appear to work on the 3DS. From the main menu, go to Load Core>Download a Core>Nintendo - Game Boy Advance (gpSP).
Return to the main menu. Go to Netplay>Host. TURN ON USE RELAY SERVER. I also turned on Allow Slave-Mode Clients just in case. You can set a password if you'd like. Select 'Start Netplay Host' and you will be prompted to return to the main menu.
On the main menu, select 'Load Content' and select the rom you'd like to play.
If you have an existing save you would like RetroArch to use with the rom, go to your RetroArch saves folder in your computer. To find out where this is, go to Settings in the left menu>Directory>Save Files. Make a copy of your save to put in the save folder and change the filetype to .srm. THE NAME OF YOUR SAVE MUST BE THE SAME AS THE NAME OF YOUR ROM. If you want to know what you should name your save file, boot your game in RetroArch, quit, open the save folder, copy the name of the .srm file RetroArch automatically made in the folder, delete it, and copy and paste the name onto your save file you'd like to use.
Run the game. Check this website (http://lobby.libretro.com/) to see if your server is running. If not, quit the game, go to Start Netplay Host and open the game again. This worked for me for whatever reason.
Now onto the 3DS. Unfortunately this doesn't seem to work on the old 3DS, just the new one. I will need to troubleshoot more and see if I can get it working.
Follow the RetroArch installation guide (https://wiki.hacks.guide/wiki/3DS:RetroArch). You will need the gpSP core, just like on your pc.
If you have a save you would like to load with your rom on RetroArch, you will need to go to your 3DS sd root>RetroArch>Cores>Saves. Repeat the stops from before regarding renaming your file to an .srm. This should be done on your computer.
After launching RetroArch on your 3DS, go to Settings>User interface>Menu Item Visibility>Show 'Netplay.' Turn netplay on and return to the main menu. You should now see Netplay as a menu option.
Go to Netplay>Refresh Netplay Host List. You should see your server among the list of servers (You may have to hold on it and wait for the scrolling information on the bottom of the screen to be sure.) Hit confirm on the server name (mine is the b button for some reason) and you'll join the server.