Trying to get my head around control binds
-
So I have two things I'm trying to achieve, which are both really one thing but the second one's more complicated.
CASE 1: Pac-Manic-Miner-Man. This is an amazing port of Manic Miner to arcade Pac-Man hardware by Jim Bagley. The only problem with it is that Pac-Man has no fire button so jumping was mapped to Right on the second joystick. (Which is weird because I don't know of any arcade Pac-Man with two joysticks either, but it is what it is.)
CASE 2: Super Smash TV on the SNES, which unusually for a console Smash TV port had no option to use two controllers for move and fire, because the SNES face buttons were already in a convenient d-pad shape.
So what I'm TRYING to do is (a) map the second stick on my double-joystick controller so that I can use a P1 fire button for jump in PMMM rather than the second joystick, and (b) do the opposite in Super Smash TV - map the four P1 face buttons onto the P2 joystick.
[PLEASE NOTE XBOXDRV IS NOT AN OPTION HERE AS I WOULD RATHER DIE]
It feels like SOME combination of Controls and Settings>Input>Binds in Retroarch ought to be able to achieve this, as hinted at around 1m30s in this video:
but I may have misunderstood it. All I know is that nothing I've tried so far is working. (I can get jump onto a P1 fire button in PMMM okay, for example, but not without screwing up movement to the right.)
Can anyone talk an idiot through it, or tell me it's not possible?
-
@JimmyFromTheBay
I think you can solve the first one by mapping the player 2 controls to port 1 (controller 1) and then assigning an otherwise unused button from controller 1 to the action you want.I've used this trick to solve games like Indiana Jones on the atari 2600 which uses both joysticks to make up for the atari limit of one button per stick.
-
@YFZdude If only it were so simple. I first remapped the jump control from P2 Right to the P2 A button using the Controls menu. That was fine, now the game is completely playable using the P2 A button for jumping, which is at least an improvement.
But since I actually want to use the P1 button not the P2 one, I then went into Settings>Input>P2 Binds and switched the controller from Gamepad#2 to Gamepad#1, and that screwed everything up - I can now jump with the P1 A button if I'm moving right or standing still (woo!), but not if I'm moving left (boo!).
I assume this is because even though I've remapped P2 Right to a button, the game is still effectively interpreting that as Right, and therefore as the impossible event of moving the same stick left and right at the same time. (What actually happens is that I keep moving left without jumping, since the "right" command is presumably being read as invalid and ignored.)
I'm coming to the conclusion that this problem simply can't be solved, since the emulator in question is FBNeo so I can't change any controls inside it. So no matter what I do with Controls and/or Binds, I'm still going to bump up against the simultaneous-left-and-right issue due to the game's bizarre choice of jump control. (Why not just use Up, ffs?)
Also, even if I somehow fix this issue I have no idea how to save the bind data. I note that last year someone else was also horribly confused by the bind configuration options and how to save them for a single game without messing up the controls for a whole core:
https://retropie.org.uk/forum/topic/30225/saving-config-confusion
They got a deeply unhelpful "RTFM" reply, linking to a page without a single mention of the word "bind" on it: https://retropie.org.uk/docs/RetroArch-Configuration/
I eventually managed to find the page that DOES have (some) information about binds:
https://docs.libretro.com/guides/input-and-controls/
but it's no help at all, telling you nothing about what gets saved where and when.
So frankly, Case 1 is looking bad. I think I might have an idea how to handle Case 2 now, though, so I'm off to have a fiddle with it :D
-
@JimmyFromTheBay said in Trying to get my head around control binds:
I can now jump with the P1 A button if I'm moving right or standing still (woo!), but not if I'm moving left (boo!).
I assume this is because even though I've remapped P2 Right to a button, the game is still effectively interpreting that as Right, and therefore as the impossible event of moving the same stick left and right at the same time. (What actually happens is that I keep moving left without jumping, since the "right" command is presumably being read as invalid and ignored.)
That may be because you still have P1 controller issuing the command for Player 2 Left if you didn't clear that button out.
Try remapping Left to a different button that you won't hit by mistake.For the case I did this, I mapped player 2 Up, Down, Left, Right to the Player 1 North, South, West, East buttons so that I essentially had a Joytisck on the left and a 'virtual joystick' on the 4 face buttons. (actually sort of creating a Smash T.V. setup like SNES uses.)
-
@YFZdude said in Trying to get my head around control binds:
@JimmyFromTheBay said in Trying to get my head around control binds:
I can now jump with the P1 A button if I'm moving right or standing still (woo!), but not if I'm moving left (boo!).
I assume this is because even though I've remapped P2 Right to a button, the game is still effectively interpreting that as Right, and therefore as the impossible event of moving the same stick left and right at the same time. (What actually happens is that I keep moving left without jumping, since the "right" command is presumably being read as invalid and ignored.)
That may be because you still have P1 controller issuing the command for Player 2 Left if you didn't clear that button out.
Try remapping Left to a different button that you won't hit by mistake.Ah, that sorted it, cheers :)
So now I have the control remap saved, how do I save the Port 2 bind (Gamepad#2 to Gamepad#1) so that it only applies to PMMM and doesn't mess up every other FBNeo game?
For the case I did this, I mapped player 2 Up, Down, Left, Right to the Player 1 North, South, West, East buttons so that I essentially had a Joytisck on the left and a 'virtual joystick' on the 4 face buttons. (actually sort of creating a Smash T.V. setup like SNES uses.)
That's what I've been trying to do, but nothing seems to work. Are you doing that in Controls or in Settings>Input?
-
@JimmyFromTheBay said in Trying to get my head around control binds:
So now I have the control remap saved, how do I save the Port 2 bind (Gamepad#2 to Gamepad#1) so that it only applies to PMMM and doesn't mess up every other FBNeo game?
I thought saving a per-game remap file would do that. If it doesn't then I'm not sure what other option would.
For the case I did this, I mapped player 2 Up, Down, Left, Right to the Player 1 North, South, West, East buttons so that I essentially had a Joytisck on the left and a 'virtual joystick' on the 4 face buttons. (actually sort of creating a Smash T.V. setup like SNES uses.)
That's what I've been trying to do, but nothing seems to work. Are you doing that in Controls or in Settings>Input?
I was referring still to case #1 for PMMM with that example. I've seen other threads mention the idea of using two controllers both working for a single players inputs but I didn't think that was possible in the current versions of RetroArch and/or FBNeo. Maybe someone else has a better idea if that is something that can be done.
-
@YFZdude said in Trying to get my head around control binds:
@JimmyFromTheBay said in Trying to get my head around control binds:
So now I have the control remap saved, how do I save the Port 2 bind (Gamepad#2 to Gamepad#1) so that it only applies to PMMM and doesn't mess up every other FBNeo game?
I thought saving a per-game remap file would do that. If it doesn't then I'm not sure what other option would.
No, saving a game remap file saves the changes you made in Controls (eg changing the jump command from P2 Right to P2 Button A), but it doesn't save the ones you made in Settings>Input to switch that to P1 Button A. Save Game Overrides in the Quick Menu doesn't do it either.
So at the moment, every time I load the game I have to go into the latter and switch the Settings>Input>Port 2 Binds setting manually from Gamepad#2 to Gamepad#1.
The Settings>Input>Port 2 Binds menu has a Save Autoconfig option, but nobody seems to know what that actually means.
-
@JimmyFromTheBay said in Trying to get my head around control binds:
at the moment, every time I load the game I have to go into the latter and switch the Settings>Input>Port 2 Binds setting manually from Gamepad#2 to Gamepad#1.
Try
input_player2_joypad_index = "0"
. Default is player 1 index =0, player 2 index =1, etc.; this binds player 2 to the same index (0) as player 1.Put this in a game override config at
~/RetroPie/roms/[system]/[romname.ext].cfg
e.g.:~/RetroPie/roms/arcade/pmmm.zip.cfg
-
@sleve_mcdichael Sorted! Many thanks!
(Any idea whether Case 2 is solvable?)
-
@JimmyFromTheBay said in Trying to get my head around control binds:
(Any idea whether Case 2 is solvable?)
Case 2 should be a simple core-input remap. quick menu > controls > port 2 controls:
1: "mapped port: port 1"
2: map D-pad to face buttons
3: save game remap. -
@sleve_mcdichael So, absolutely nothing is working here. There is no "mapped port: port 1" option, so I assume by that you mean the CFG file line mentioned earlier.
Here's what I now have in Port 2 Controls:
I've swapped all the d-pad controls for buttons, and vice versa to avoid conflicts. This did nothing.
Here's what I now have in Port 2 Binds:
Basically the same again - buttons swapped for d-pad and vice versa, and Device Index switched from #2 to #1.
I've tried each of these steps on their own, and worked up to having them all present at once. But none of them changes anything. Whatever I do, movement is still on P1 joystick, and firing is still on P1 buttons.
-
@JimmyFromTheBay said in Trying to get my head around control binds:
There is no "mapped port: port 1" option, so I assume by that you mean the CFG file line mentioned earlier.
No I meant in the RGUI menu. What version is your RetroArch?
-
@sleve_mcdichael said in Trying to get my head around control binds:
@JimmyFromTheBay said in Trying to get my head around control binds:
There is no "mapped port: port 1" option, so I assume by that you mean the CFG file line mentioned earlier.
No I meant in the RGUI menu. What version is your RetroArch?
God knows. Where is that even displayed?
-
@JimmyFromTheBay said in Trying to get my head around control binds:
Where is that even displayed?
You can run
/opt/retropie/emulators/retroarch/bin/retroarch --version
or it's shown in the RGUI menu on the bottom banner on some items that don't have any other item-specific info there -- like in your images where it says bsnes 1.8.8; if you browse around the menus, sometimes that will say the RetroArch version (or there's probably an "info" page somewhere in the menu itself but I'm not at my screen right now to check.) -
@sleve_mcdichael Hmmm, nothing like that anywhere but it seems like it was built in November 2020 so I guess it's pretty out of date. I'm INCREDIBLY wary of updating core features because they invariably break something that necessitates me repairing 2,500 individual config files because they decided to change the aspect ratio numbering or something for a laugh. I might just stick to the arcade Smash TV...
-
@JimmyFromTheBay said in Trying to get my head around control binds:
nothing like that anywhere but it seems like it was built in November 2020 so I guess it's pretty out of date.
Yeah, it looks like the "mapped port" feature was added about a year ago.
-
@sleve_mcdichael Ah. That's annoying, looks like a really useful feature but the stakes are just so high on the gamble :(
-
@JimmyFromTheBay said in Trying to get my head around control binds:
but the stakes are just so high on the gamble
It looks like the aspect-ratio-index fiasco happened in 1.7.4 in 2018; I'm not aware of anything else like that that's happened since, but, you do have a backup...right?
Do you really have 2500 custom override configs? What do you use them all for? Are a lot of them duplicates? For example, I usually use integer scaling and a scanline shader, but for vertical (rotated) arcade titles, I turn integer scaling off and use a different shader. I have one config that sets these overrides, and then in my various different game configs, I just have:
#include "/opt/retropie/configs/arcade/arcade-vertical.cfg"
That way, if anything does change (or I just want to use a different setting), I can just change that "arcade-vertical.cfg" and I don't have to do it in 52 individual game-overrides.
-
@sleve_mcdichael said in Trying to get my head around control binds:
Do you really have 2500 custom override configs?
Rather more than that, it turns out :D
Obviously not all of those would be potentially affected by a Retroarch change, but goodness knows how many might be, and I never want to go through AspectRatioGate again. Even now, years later, I'm still finding games with the screen all wrong.
(I have CFGs for all sorts of reasons, in many cases it's as simple as a bezel but even those often need custom tweaks.)
And yeah, I have a backup but at 256GB it takes two days just to write the memory card. (And it's not really practical for a case like this, because if a new Retroarch broke everything the only suitable backup is a complete image file. What I actually have as a day-to-day backup are copies of the ROMS and CONFIGS folders, which can be updated in seconds, but that would be no use for a Retroarch meltdown. You can't save a 256GB image file every night.)
Anyway, that's my hangup to deal with, I'd really like the new feature but since it's basically only for two SNES ports that already run fine in MAME I'll have to weigh up the risk, and the terror of possibly having to go through the infinite pain of configuring WonderSwan games again. Thanks for the help :)
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.