Jump to content
LaunchBox Community Forums

Universal virtual controller


Zkyo

Recommended Posts

Edit: I seem to have figured out most of my controller problems after two long, frustrating weeks! I'm now using a combination of Steam, Hidhide, Bigbox, Retroarch, and Moonlight. All my controllers are now functioning and can be rebound, can be streamed with Moonlight and Steam Link (with active controller forced to port 1), Steam games work with big picture rebinds, and Retroarch even support local multiplayer with potentially up to 16 players. I wrote a couple long replies to this reddit thread, describing everything I did.

I'm having a bit of trouble with binding controllers. To put it simply, I have an Xbox controller, generic wireless controller, and an 8BitDo SN30 (plus several more that I'll look into in the future), and would like to reverse the A/B and X/Y buttons on only the xbox controller. The catch is that I can't use Retroarch's rebinds, as I have to use Bigbox's Use All Controller options. The wireless controller's dongle acts as a connected wired controller at all times, whether it's active or not, and retroarch seems to always have this controller take priority. For the xbox/8bitdo controllers, they are both treated as the same xbox controller, so I can't rebind one without affecting the other. Oh, and to add to the complexity, I have streaming set up with moonlight too, but afaik that treats everything as an xbox controller too.

Basically, I'm looking for some kind of program that can accept inputs from multiple controllers connected (but not used) simultaneously, be able to rebind each controller individually, then output as a single universal controller to launchbox. Huge plus if it's a virtual controller that can have additional analog sticks and buttons w/ deadzone configuration, so I could use my flight stick too. Does anything like that exist? A program with a similar concept is Voicemeeter, I'm looking for something like that, but for controllers. Multiple different inputs, able to tweak them, then output as virtual hardware to the OS.

Edited by Zkyo
Link to comment
Share on other sites

  • Zkyo changed the title to Universal virtual controller

you mean like a program literally called "virtual controller" ? lol not sure if it does every single thing you listed but I know it will take multiple physical devices and remap them to the same virtual device. yea this link might call it "vjoy-controller" but it's not "vjoy"....this is "virtual controller". though vjoy is usable through this program too

https://sourceforge.net/projects/vjoy-controller/

 

Also, if you don't mind, verify for me if checking or unchecking BigBox's "Use All Controllers" option makes a difference for you. In my recent experience that check box doesn't matter. If I have multiple controllers plugged in or connected wireless, they are ALL detected and usable by BigBox, even when that option is not checked.  Which makes no sense to me. I made a post about it here for more details

 

Link to comment
Share on other sites

I should add I recently realized you can launch any program through Steam and said program will make use of Steam's overlay, which also means it makes use of Steam's controller remapping. So if all you really want to do is swap A/B and X/Y that would be super easy with this method. You would add BigBox to Steam as a non Steam Game, and simply launch BigBox from Steam. Then switch button mapping around as desired.

Link to comment
Share on other sites

That looks like it might be exactly what I need, I'll try it out tonight, thanks! 

 I thought use all controllers was necessary, because I wasn't able to control anything over moonlight without it checked. But I think it was just a coincidence, that I had other controllers connected while testing a stream. I just tried again last night, and I definitely couldn't control anything over moonlight, when an xbox controller was plugged into the launchbox pc and the UAC option enabled. So I'm not sure now. 

I actually already have LB booting through Steam with the overlay, I forgot you can rebind specific controllers with that. I'll be sure to try it out tonight too. I was originally using Steam Link to stream (which worked fairly well), but switched to moonlight. Moonlight can't boot software installed on a network share directly, so I'm using a steam shortcut instead as a workaround. 

Link to comment
Share on other sites

So, after a lot of trial and error with various programs over the last 2 weeks, I finally got most of my controller issues sorted out! I'm now using a combination of Steam, Hidhide, Bigbox, Retroarch, and Moonlight. All my controllers are now functioning and can be rebound, can be streamed with Moonlight and Steam Link (with active controller forced to port 1), Steam games work with big picture rebinds, and Retroarch even support local multiplayer with potentially up to 16 players. I just have to turn on the controllers I want (player 1 first), start moonlight or bigbox, and it's good to go.

I wrote a couple long replies to this reddit thread, describing everything I did.

Edited by Zkyo
Link to comment
Share on other sites

Hi @Zkyo

 

From reddit...

Quote

I'm splitting this into two parts, because apparently there's a 10,000 character limit on posts. O_o

🤣

more details the merrier I say though!

OK so you have a boatload of unique and exotic requirements here I think, so I'm glad you work through your challenges. I did notice one blurb on the reddit post

Quote

"I tried changing the RA emulator entry to use the steam shortcut on my desktop, but it usually didn't work. The shortcut probably can't use any parameters, so it doesn't load a core."

That's not entirely correct. Shortcuts will use parameters as if they were written anywhere else.  The "Target" field of the shortcut is where everything goes. I bet you left out the parameter needed to tell it to load a core. Or, at least, I made the same mistake first time I tried launching Retroarch games from command line/parameters. You would need it pointing to the executable of Retroarch (or the Steam URL that in itself is pointing to the Retroarch exe if you launch Retroarch through Steam), and then follow that with the required parameters. If you tell Retroach to open, that is all it will do. If you tell Retroarch to open, and specify a game to load, all it will do is open Retroarch because it wasn't told to load a core, so doesn't know what to do so defaults to just plain opening. You were so close, but didn't quite connect the last dot. Retroarch requires you to also specify the core. I would type it out so it launches Retroarch, then you tell it what core to load, then tell it what game to load, then I usually also tell it to go full screen as the last parameter. This is partly why we have to specify what core is used for what system in LB/BB. Retroarch launching through command lines needs those three things to work, run the exe, load core, load game.  For example, check this help page. Also included a specific example I made a while back to learn this myself along where you would put this

https://docs.libretro.com/guides/cli-intro/

 

D:\Arcade\Emulators\Retroarch\retroarch.exe -L D:\Arcade\Emulators\Retroarch\cores\snes9x_libretro.dll "D:\Arcade\ROMS\Super Nintendo Entertainment System\Contra III - The Alien Wars (USA).zip" -f

 

image.thumb.png.bed86a006aa1e80714461e2df2741652.png

Edited by skizzosjt
Link to comment
Share on other sites

4 hours ago, skizzosjt said:

That's not entirely correct. Shortcuts will use parameters as if they were written anywhere else.  The "Target" field of the shortcut is where everything goes. I bet you left out the parameter needed to tell it to load a core. Or, at least, I made the same mistake first time I tried launching Retroarch games from command line/parameters. You would need it pointing to the executable of Retroarch (or the Steam URL that in itself is pointing to the Retroarch exe if you launch Retroarch through Steam), and then follow that with the required parameters. If you tell Retroach to open, that is all it will do. If you tell Retroarch to open, and specify a game to load, all it will do is open Retroarch because it wasn't told to load a core, so doesn't know what to do so defaults to just plain opening. You were so close, but didn't quite connect the last dot. Retroarch requires you to also specify the core. I would type it out so it launches Retroarch, then you tell it what core to load, then tell it what game to load, then I usually also tell it to go full screen as the last parameter. This is partly why we have to specify what core is used for what system in LB/BB. Retroarch launching through command lines needs those three things to work, run the exe, load core, load game.  For example, check this help page. Also included a specific example I made a while back to learn this myself along where you would put this

Ah, yeah, that makes sense. I didn't really explain well in that sentence. What I meant to say was that using Launchbox to pass parameters to a steam URL shortcut didn't seem to work. I could probably add the parameters to the entry within steam, but that would only work for one game. I'd have to repeatedly add Retroarch as a non-steam game, then add parameters for each core and game. Considering that my LB database has around 9,000 games, there's not a chance I'm doing that lol. My thought there was to change the retroarch emulator location within LB to point to that URL shortcut, so Launchbox would handle changing the parameters as needed. Here's a screenshot of what I tried:

1551826260_Screenshot(74).thumb.png.f2012008382bd554fbb9fccec8459b85.png

  • Like 1
Link to comment
Share on other sites

 

Hi @Zkyo! OK now I know exactly what you're trying for here.

So though my original method does work out just fine, I understand this may not be desirable for a library so large since I did all that setup manually. With that said, I got a couple ideas one idea (lol) of how to do this better that would be useful for you.  The easiest idea that came to my head right away is why not launch LaunchBox and/or BigBox from Steam instead of launching just the emulator from Steam? By theory if you launch LB/BB from Steam, then any emulator and/or game launched from LB/BB will still have the Steam overlay and all related options, customization and features available as if you were launching the specific emulator or game directly from Steam. You therefore would get all the Steam related benefits like controller remapping, but everything LB/BB/emulator/ROM related will work as business as usual. You wouldn't need to edit any emulator launching arguments or have custom stuff setup for games etc. Assuming everything works for you now per your "normal" setup, all you need to do is add LB/BB as a non-Steam game and launch LB/BB from Steam.

Just confirmed this method works! 🎉 I did not get the ability to open the Steam overlay until I actually launch a game though. It would not come up when navigating around LB or BB. When a game was launched I see the little pop up notification in the bottom right corner from Steam and then I could bring up the overlay!

 

So please give this a shot and let us know if it makes your setup how you need it.

 

I had another idea using AHK to automate a few things but it failed miserably as I tested it tonight. Made a script to look at the ROM files in a selected folder that would then make shortcuts named from the ROM file name, and at the same time insert in arguments/parameters to load the right core and ROM file. This worked, but next steps fell apart because it requires manual work...or at least stuff I'm not going to bother figuring out how to use AHK for lol. Damn Steam does not transfer everything in the target field when you import it as a non-Steam game. It just removes anything written beyond the actual executable. In other words it omits all the arguments and parameters. So you then you have to manually enter that stuff into the Launch Options field, which would be required for every game. Same sort of issue getting it linked up in LB/BB, it would require manual work. Well.....this idea sounded good in my head until I trialed it out.

 

All these photos are showing how this sort of setup would work. The method I original used, but requires manual editing. Great method if it a few games....not if its a few thousand 🤣 Gotta turn of emulation. That's how I got this working in the past. I REALLY liked your idea better....but it just doesn't work like that apparently. LB/BB will determine the shortcuts are "not a valid application for this OS platform" if you make the emulator application path something like a shortcut in the ways we just tried. At least now we know!

 

Notice how arguments/parameters must go into Launch Options. Steam only transfers the text currently shown in the Target field as in just the text to launch the exe. Steam omits arguments/parameters when importing non-Steam game. Quite annoying quirk!

image.thumb.png.29a3f7e898779aa6e078cadbe134b95b.png

Showing you can get steam rungame ID's from viewing the URL shortcut's properties

image.thumb.png.96300ebb2f495017bb855d9a71c0e2c5.png

Using the steam rungameid - using the .URL file path here is also OK (emulation is OFF!)

image.thumb.png.bcea4ef4f6e8d4c990c46f01918d5b48.png

Gotta turn OFF emulation so LB/BB treats it like a standard app

image.thumb.png.3f870809a825421cd3fbec1ee5a12a1a.png

 

 

Edited by skizzosjt
removing extra photo
Link to comment
Share on other sites

1 hour ago, skizzosjt said:

launch LaunchBox and/or BigBox from Steam instead of launching just the emulator from Steam?

Yeah, I can confirm that works too because I've been doing that for like two weeks now (I did mention that in the reddit post). I added BigBox as a non-steam game, then created a Steam shortcut to BB on my desktop which I use manually, and added to GeForce Experience for streaming with Moonlight. It skips the step of having to open Steam or Big Picture.

1 hour ago, skizzosjt said:

So please give this a shot and let us know if it makes your setup how you need it.

I think we might have confused each other a bit here lol. My setup is already working how I'd like, described in that long post. At least mostly, There's still a couple controllers I couldn't get working right, but that's because Steam doesn't recognize it as a controller. Though if anyone else struggles with this in the future, hopefully this thread will help.

1 hour ago, skizzosjt said:

I did not get the ability to open the Steam overlay until I actually launch a game though. It would not come up when navigating around LB or BB.

Huh, you're right... I never noticed that the overlay wasn't working in BB. I don't think that makes much of a difference to me though, as I don't plan on ever using the Steam overlay in BB or retroarch. Steam still shows you as playing RA or BB, and controller remaps work.

A side note for anyone else, if you're going to be starting and stopping games in Steam repeatedly while testing things, set yourself to invisible so you don't spam everyone on your friends list. It's one of my pet peeves.

1 hour ago, skizzosjt said:

Gotta turn OFF emulation so LB/BB treats it like a standard app

image.thumb.png.3f870809a825421cd3fbec1ee5a12a1a.png

 

I didn't know that checkbox existed! That'll come in handy for when I eventually start adding older windows games, thanks.

 

Slightly off topic, I just saw that there's a version of Retroarch on the Steam store for free. I'd never heard of it so I thought it was fairly new, but it was added 12 years ago. 😮 Part of me wants to mess around with that version to see if it's any different, but now that my setup is working I don't really want to go break it.

Link to comment
Share on other sites

lol I clearly confused myself not paying close enough attention when reading, I think I mixed you up with another user 🤦‍♂️ chalk this up to a multi-tasking fail of not keeping track of who I was posting to and what issue they were trying to solve.  I mean for fucks sake I even said "glad you work through your challenges" in my first post here and then had a brain fart on the next post apparently thinking there was a need for help. but hey, our ramblings still helped us learn some new bits so it's still all worth it to me!

1 hour ago, Zkyo said:

Slightly off topic, I just saw that there's a version of Retroarch on the Steam store for free. I'd never heard of it so I thought it was fairly new, but it was added 12 years ago. 😮 Part of me wants to mess around with that version to see if it's any different, but now that my setup is working I don't really want to go break it.

🤣 12 years! never knew one existed on there either. Now I wonder why they never would update it on the Steam platform, might as well remove it if they want to guide everyone to their main website to download it. If you're feeling cavalier and want to mess around Retroarch should be considered "portable". It wouldn't mess up your current install if you make a new one in a different folder location. Alternatively If you wanted to preserve the current install but test the new install in the same spot you could try this. take the main Retroarch folder and rename it to Retroarch.old or whatever you want so you can put the new folder in the same place and test. If it doesn't work out and need to revert it's as simple as deleting the one that didn't work, and renaming the original back to the normal name without .old or whatever was used.

  • Like 1
Link to comment
Share on other sites

Another update on this: my controller setup is partly broken again, and I don't know why as I didn't change anything. Now if I have any controller connected to my desktop, Steam doesn't detect the Moonlight virtual controller at all, whether it's hidden via hidhide or not. I'm giving up entirely on streaming Bigbox. If anyone ever figures out a better solution, please ping me.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...