Looking for some advice here, I'm out to complete two things:
- restore saves from the games I played using the stock firmware to GarlicOS
- get two player/two controllers working for couch gaming over HDMI
Specifics: I picked up a 16G microSD for the OS, and a 64G for ROMs, pulled the original (kinda garbage) SD and replaced it with the 16G that I loaded with GarlicOS. I copied the relevant roms that I loaded onto the original SD to the new set and moved the save files ( .sav) over to the saves folder in the relevant subfolder. Launching the game results in a blank save. I can't continue the save.
For dual controller/two player, I haven't tested HDMI yet (on the list) I'm just trying to get controllers working at the moment; I have an Anker USB 3 hub. What works right now, is if I plug my Stadia controller in, it gets picked up, no problem. but my xbox controller will mess everything up. If I just do my OTG adapter to the stadia controller, it works, OTG to hub to stadia, no problem. If I either go OTG to the xbox controller, or OTG to hub to controller, it does not come up in GarlicOS. If I plug OTG to hub to both controller, neither shows up. I added waitForUSB (I also tried waitforUSB) file to the OS SD card, with no effect (the file still exists).
With stock, I was able to use a controller (just the stadia controller), over USB OTG with HDMI, so I know that works, and it should still work. The Xbox Controller I'm using is almost brand new, it's an XBOX One controller, connected by a USB A to C cable, I picked up 10ft cables from Anker for the purpose. I'm fine with wired, but I also have a USB xbox wireless dongle for PC that I can't seem to find right now, and I'm wondering if that would do any better (and I would prefer this since it would be wireless).
Does anyone have any hits or tricks or information related to this that I can use to push this along? is the new series of xbox controllers not compatible? do I need to change the drivers or something to make it work better? I'm new to retroArch, and GarlicOS, and the 35xx is my first dedicated retro handheld. I'm refreshingly not new to linux or SBC's, so I'm very comfortable with making changes and taking chances. All my saves are archived on that original SD card, and I have a backup on my laptop, so I'm not worried about losing saves or data at all. If the controllers are not viable, I'm sure I can find something that works and pick that up, maybe something from 8bitdo.
Thanks in advance.
Well, in lieu of anyone else furthering discussion on this, I've hit a strange issue, but I've solved a few things as well.
For saves, I found that the problem stemmed from having multiple emulation options, and I was simply placing the files under the wrong emulator save directory. Some back and forth experimentation got it working. Bear in mind, I only had a handful of saves, so no big deal for me, but the stock OS generally puts the save files into the same folder as the game file itself, so it's fairly easy to find. It needs to be relocated to the saves folder under the applicable consoles engine. Once I sorted that out, all is well, my games now have their save files back. One quirk that's worthy of note for anyone struggling with this, is that you need to fully restart the game in garlic OS for the save files to be picked up, which can be done rather easily by simply pressing the start button to launch the game, rather than the A button (which loads the most recent state file). Once the game loads in fresh, it should pick up the save file without any further trouble.
For controllers, I've made some progress. I found my Xbox one era usb dongle for my controller. I tested it on my PC, which also allowed me to sync my controller to the dongle for testing. No issue there. All buttons work as far as I can tell, the gamepad comes up and works on my PC without issue. Plugging the dongle into the anbernic, I don't get any feedback and the controller will not sync to the dongle. I am guessing there's some kind of initialization needed on the host (PC) side before the dongle fully comes alive, and allows controllers to connect, which the anbernic isn't doing (unsurprisingly). IMO, without custom drivers added, this won't happen. I'm no stranger to adding stuff like this to strange Linux versions, but I haven't done the required work to even find an open source, or Linux/ARM compatible version of the driver, and honestly.... It seems like more trouble than it's worth.
To the best of my ability, Xbox one and newer controllers do not work with the 35xx.
I do, however, have a set of Xbox 360 controllers. I asked around and happened to get a 360 specific PC dongle too. Someone had it laying around, unused, and was happy to lend/give it to me. The good news here is that it works right out of the gate. Plug it into your otg cable and poof, four controller inputs. There is some strange behaviour here with the official Xbox controllers but it works. Whether you have four controllers connected or not, you'll get four in the interface. I think these phantom controllers are just a quirk of how this dongle works. Sure enough, when I got a controller to connect, its input was recieved. The Xbox 360 controllers don't show what "slot" they're on - if you don't recall, 360 controllers would light up one of four quadrants around the Xbox logo button to indicate whether you're player 1, 2, 3, or 4. This doesn't work. Instead it stays at a slow blink on the entire ring around the button. I'm guessing this is a software thing that is missing from the xinput driver in the anbernic, but I have no idea. It works, so we move on.
Two issues stem from the 360 controllers.... To date, despite having the wireless controllers play+charge cable adapter, the controllers will not show up if they're wired. I know others have used the dedicated wired only Xbox 360 controllers with success, so this is an oddity.... Maybe something else is wrong, further testing is required. The second issue is with garlic OS....
In the latest version of garlic OS, the integrated controller shows up as a discrete item on the controller selection window. In and of itself, this isn't a problem. The problem occurs when you try to change player 1's controller. It will instantly change the management controls exclusively to the controller selected. And for me, the button mapping does not work. So as soon as I select the external controller, I lose all ability to control the device. All buttons on the integrated controller are not mapped to any input, and the new controller has the wrong mapping. The unit still works, and if I reset it, I can use the integrated controller to select a game, once in game, P1 can't do anything.
The worst part is that if I go back into the retro arch menu to fix it, the controller on the unit stops working again, and I'm trapped in the retro arch menu with no way to exit or literally do anything.
I've fixed the problem by pulling the sd card and modifying the retroarch.cfg file manually and setting the controller designation to "0", which is the RG35xx integrated controller static designation.
What this means is that for two player couch gaming, I need to pull the SD, copy/paste the control mappings from player 2 (which has already been assigned to the Xbox controller), to player 1, and change the controller assignment to "1" and "2" respectively. When I'm done on the couch and want to go mobile, I have to pull the SD card again, and restore the original "0" controller mapping to player 1.
This kills any on the fly changing between handheld, and couch gaming, and makes the whole process very tedious. If I forget to switch the config back after a couch gaming session, I basically have a fancy paperweight until I reconnect the dongle and Xbox controller, or until I get to a PC where I can change the files. I plan to just have the two files saved as separate configs on the fs, and just copy them over the current retroarch.cfg when making the swap. It may be possible to do this "on the fly" (kinda) by carrying an SD to USB reader, and a USB C to USB A OTG adapter for the SD reader in my 35xx kit, so I can swap the cfg files on my phone or something. Not ideal, but at least I wouldn't be stuck with no ability to play when I'm on the go, simply because I forgot to switch away from the "couch" cfg file.
The most significant problem I've found is that it seems to also disable the menu button on the unit, so when couch gaming, I'm unable to quit the current game and move to a different one. Unless there's a mapping for this button I have yet to notice.... The only way to change titles would be to reset the unit and start over on the main menu.
Tedious.
From what I understand, in older versions of garlic OS, this wasn't a problem. If the P1 controller was mapped to a bad option, it would default to the integrated controller. Seems this was changed in the most recent version of garlic OS.
I'll continue on my journey to couch gaming, but for now I'll have to do some config editing, line by line, to get things going for couch gaming and test it fully. I expect the cfg file edits will be fine with the caveats already outlined above... Once I have the configs finalized, I'll look for a better solution. Maybe touch base with black saraph to see if they have any input on the matter.... It would be nice to build this out to be more capable for those wanting to do couch co-op with their 35xx. Afterall, why have an HDMI output if you can't? It's honestly one of the reasons why I picked the 35xx.... There are other, better, options if I didn't care about playing on a bigger screen and/or couch co-op with friends.
As of right now, the only real down side to the 35xx that I can't overcome easily is the complete lack of netplay; without wifi on board, I'm not sure what to do, or what could be done about it. I've seen some videos if people using Wi-Fi dongles with their 35xx, which shows promise, but AFAIK, there's no solution for it out of the box, even with any prepackaged custom firmware. But this is a problem for later.... For now, I'm just trying to muddle through so I can kick my SO's butt in a game of Mario Kart.
I'll try to come back with more updates later, as things progress.
Cheers.