This topic was brought up a few months ago, and I've finally decided to try it out and see if it would work. I believe @Scribe99 , @Depch , and @jer_33 were ones who had brought it up in this post:
What is RetroArch?
RetroArch is a front end that can run multiple emulator cores. What does that mean? You can find more info here - http://www.retroarch.com
How it works, is you start up RetroArch, load an emulator core, and load content (i.e. a ROM).
Instead of having multiple emulator programs on your gaming system, RetroArch has cores. These cores aren't the emulator program, but pretty much the emulator code itself, that runs in RetroArch. So, for example, if I downloaded the Snes9x core (SNES emulator), I would start RetroArch, load the Snes9x core, and load a game (i.e. NHL '94) and it would run just like it would in the emulator, except you have the RetroArch interface. Then I can close the game, load the Genesis Plus GX core (Genesis emulator), and load a game for that as well, without having to close the RetroArch program.
There are advantages to having a single interface for multiple emulators. You can have global settings (i.e. controller button mappings) and you can switch between different systems very quickly without having to close and start up another program.
It is available for almost anything (PC, Mac, Linux, Android, iOS, etc). The interface is very clunky, and looks like the XMB interface on the PS3. It takes some getting used to. I suggest you download it and try it yourself. The emulator cores can be downloaded right from inside the RetroArch program (there are a ton of cores). Information about it is plentiful on the web.
Here is their official documentation - https://docs.libretro.com
Once testing is done, we will write up a setup tutorial, and I'm hoping to make some files that can be run to automate the setup process.
Why use RetroArch for playing 94 online?
We are looking for a reliable, better, and simpler Netplay experience. While ZSNES has robust netplay capabilities, Gens (with Kaillera) is absolute trash. Desyncs and lag are a huge problem with Gens. Desyncs in ZSNES, while rare, can be recovered by reconnecting and loading a save state. Back in the day, we used servers instead of direct connect with Hamachi. It was a much simpler setup. RetroArch can give us something similar to that. So, if we can eliminate hamachi, that's one less program to worry about causing issues. I believe this can solve a major issue which causes people to leave online play - too complicated of a setup, and flakey Netplay.
@kingraph and I tried out Netplay. It was very easy to set up. Kingraph would load the core and the content (NHL'94 ROM), start his Netplay server from the Netplay menu, I would go to the Netplay menu, click "Refresh Room List", then see Kingraph's name and click on it, and connect. No need for IP address. Though we aren't the best example since we live close to each other, Netplay was very smooth.
I can connect to him at ANY TIME during the game (as long as he set it for 2 players, I believe). So, if we desynced, the host (home team) just needs to pause the game, wait for the client (away team) to reconnect, and play continues. Kingraph was also able to load a state while we were connected, so I scored 10 goals on him in the second period, he could just load a state from before the second period!
We haven't tried out SNES yet. Hopefully tonight.
Also, it may be possible to play cross-platform (i.e PC vs PC, Mac vs Mac, Pc vs Mac). We need to test this as well. Heck, it may be possible for someone to be playing on Android, Linux, or another platform as well.
Will it work?
Well, not completely sure yet. It does run custom ROMs locally and via Netplay. The emulator cores are different; there is no Gens or ZSNES core. Probably no one made them because they are inferior emulators.
For cores (there are tons of different ones):
Genesis - Genesis Plus GX seems to work well
SNES - Possibly Snes9x, or bsnes will work
We will need to decide on a core to use and for everyone to use that core. Since the emulator cores are different than what we've used in the past, the save states will be different, and thus the game uploader on the site will need to be changed. I looked at the Genesis Plus GX save state, and it looks like the data may just be shifted, and the endianness is different (something that is 04 09 in Gens is 09 04 in Genesis Plus GX). Have not looked at Snes9x save states yet.
I'm still not sure if we need Hamachi or not. There is a "relay server" option in RetroArch that works similar to Hamachi. This is supposed to remove the need to open ports. Though I connected to Kingraph just fine and he did not have that enabled.
If anyone is interested to try it out, PM me here or on Discord and I can help set you up. I'm still a little unfamiliar with the interface (Kingraph and I just yesterday figured out how to close a ROM haha), but I can help you get ready to play online with it. I'd like to get more people to test it out, especially guys who are quite a distance away from each other. Once we have it fully tested, and it works well for us, we can start using this going forward for leagues.
TL;DR - Gens emulator sucks, RetroArch might replace it and ZSNES, need more testing.
Oh and just to warn you, the most confusing thing is the controller setup. The button layout is similar to an SNES controller. So if you plan on playing Genesis, "Input button Y" in RetroArch is equivalent to the A button on the Genesis controller, "Input button B" is B on the Genesis, and "Input button A" is C on the Genesis controller. What's nice is once you have it set up, you can use your controller to navigate the menu.