Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

Arcade Stick RetroPad layouts #141

Closed
dankcushions opened this issue Jul 5, 2017 · 25 comments
Closed

Arcade Stick RetroPad layouts #141

dankcushions opened this issue Jul 5, 2017 · 25 comments

Comments

@dankcushions
Copy link
Contributor

I'm a bit confused with some of the default button layouts when using an 8 button arcade stick.

For example, with CPS1-3 style fighting games (SF2, etc), the gamepad layout is the standard SNES SF2 layout, which seems sensible/the standard for SNES-style gamepads:

RetroPad Button Action
Y Weak Punch
X Medium Punch
L Strong Punch
B Weak Kick
A Medium Kick
R Strong Kick
   L             R

   ^             X
<     >       Y     A
   v             B
  SP            SK

   ^            MP
<     >      WP    MK
   v            WK

However, when you switch core option 'Control scheme' to 'Arcade' and use an arcade stick:

RetroPad Btn. SF2 Action
A Weak Punch
B Medium Punch
X Strong Punch
Y Weak Kick
L Medium Kick
R Strong Kick
   ^           A   B   X   -
<     >        Y   L   R   -
   v             
   ^           WP  MP  SP
<     >        WK  MK  SK  
   v             

I assume the RetroPad bindings are like this, as punches on the top row, kicks on the bottom are the standard for SF2 (etc), but that translates as a strange RetroPad layout on the arcade stick, I think. I wonder where it comes from? Are there any standards for RetroPad layouts on 6/8 button arcade sticks? With lr-mame2003 I just have the a single controller layout, so my arcade stick binding was always:

   ^           Y   X   L   -
<     >        B   A   R   -
   v             

If there is a standard RetroPad layout for a 6 button arcade stick, I could add a similar option, though.

This becomes maybe a libretro (paging @hizzlekizzle!) question :)

Further, when you look at the same situation for NeoGeo. When 'Control scheme' = 'Arcade', and you have the same arcade bindings as before:

RetroPad Btn. NeoGeo Btn.
A A
B B
X C
Y D
   ^           A   B   C   -
<     >        D   -   -   -
   v             

I think that once we have a RetroPad layout confirmed for an 8 button controller, D should be replicated to whatever RetroPad button is in the top row, 4th along. i.e.:

   ^           A   B   C   D
<     >        D   -   -   -
   v             

This would satisfy 6 and 8 button arcade stick users.

I asked a similar question here: https://forums.libretro.com/t/request-controller-layout-image-for-mame-fba/10099 - but I didn't realise that fbalpha had a seperate 'arcade' controller scheme - I always just assumed you set it up like SNES SF2.

@hizzlekizzle
Copy link

I haven't actually used the 'arcade' setting before. I've always just treated it like a normal retropad, which causes some issues with modern arcade sticks that want/expect PS2-and-later SF layouts (i.e., R1 and R2 for HP/HK instead of R1 and L1).

@dankcushions
Copy link
Contributor Author

@hizzlekizzle

I haven't actually used the 'arcade' setting before. I've always just treated it like a normal retropad

yes, same! hence my approach in mame2003. however i can see the value of having an 'arcade' core option for something like neogeo, which doesn't really fit into the standard 'SNES SF2' layout when using a stick.

i had a look at some modern fightsticks, and i think they would translate as:

   ^           Y   X   R   L
<     >        B   A   R2  L2
   v 

Really only 6 buttons are useful in most fighting games, but the 6 button layouts seem to still use R and R2:
image

So I think my vote would be to make:

   ^           Y   X   R   L
<     >        B   A   R2  L2
   v 

the recommended libretro fightstick/arcade layout, and adjust fbalpha (and mame2003, and i guess the other arcade cores eventually) to assume that layout if an 'arcade layout' type core option is selected.

@barbudreadmon
Copy link
Owner

As mentioned on retropie's forum ( https://retropie.org.uk/forum/topic/12917/street-fighter-iii-3rd-strike-mame-version-on-retro-pie/11 ), the arcade layout never made any sense to me, and it is indeed misleading.

If fight stick users want an original arcade feel, they should use "Classic" device type in controls (on older fbalpha-libretro : "control scheme" to "gamepad" + "L/R P1 gamepad scheme" to "normal" in core options) if they have an old stick and "Modern" device type if they have a new one (on older fbalpha-libretro : "control scheme" to "gamepad" + "L/R P1 gamepad scheme" to "remap to R1/R2").

Who is rightfully using the "Arcade" layout ? And i don't mean someone who selected this on the false assumption "i have a fight stick, i'm supposed to use this", and thinking "this is bullshit, how am i remapping this ?".

Except if someone can justify the presence of this layout, i'll probably get rid of it soon.

I'll link the people who were heavily involved in the development of this
@Oggom @fr500 @twinaphex @Themaister @ToadKing @CaptainCPS
Perhaps someone kinda know.

@barbudreadmon
Copy link
Owner

Just some (weird ?) idea i just had for the libretro api : if the autoconfig system was kinda able to tell me which kind of layout the joypad/joystick have (i'm mostly thinking about how L1/R1/L2/R2 are positioned, which is the most obvious difference between modern controllers and older ones : for example, let's say a hori fighting commander 4 has kinda the same layout than the madcatz fightstick alpha, and it would make sense if both controllers used the same "Modern" device type by default), i could probably preset a default device type from it.

@Oggom
Copy link
Contributor

Oggom commented Sep 21, 2017

The Arcade layout is designed with generic fightsticks in mind, although it also makes things easier for keyboard users. What you're expected to do is map out the lower three buttons as A, B and X with the three upper ones being Y, L and R and you're good to go.

It essentially mimics MAME's generic control setup with "Button 1" for example being "Retropad A". I assume modern fightsticks might have standardized the button layout like mentioned above, but the ones I have don't. If you'd like to rename the control scheme to something more obvious feel free to go ahead, however I'm strongly against removing it altogether.

@LodanZark
Copy link

LodanZark commented Sep 21, 2017

Neo Geo Console Layouts:

RetroPad Btn. NeoGeo Btn.
B A
A B
Y C
X D

@barbudreadmon
Copy link
Owner

@Oggom could you post a screenshot of your generic fightstick ? Or tell me the model ?

@LodanZark i don't think there is an issue with neogeo layouts (classic will use the neogeo console layout, modern will use the new xbox/playstation layout)

@andres-asm
Copy link
Contributor

andres-asm commented Sep 21, 2017

I agree with @barbudreadmon I would remove the arcade layout altogether, there is no single layout and this has been the case forever.

8bitdo-nes30-arcade-stick-gray-443159-
51ez255veul
0008449_8bitdo-arcade-joystick-bluetooth-wireless-controller-for-ios-android-fc30
xbox360_street_fighter_tournament_ed_fight_stick_rd2_front

So, it's impossible to provide a generic layout that works for everyone.

Some people may even have keyboard encoder based sticks which won't work obviously.

For keyboard encoders, I think the core could support "RETRO_DEVICE_KEYBOARD" then it would allow the user to use the new keymapper to bind their keys (and I'm working on supporting more than one user mapping to one keyboard, and a way to specify a default map from the core itself :) )

Edit: that whole idea was all kinds of wrong lol, the keymapper is physical gamepad to emulated keyboard mapping

@dankcushions
Copy link
Contributor Author

@fr500 three of those have the same layout - that's the classic 'modern' layout. i can't read the second one, but IMO there are two layouts that cover 99% of fightsticks.

i think fbalpha more than any other core may have flexible enough input options to allow for users to configure the two layout quite easily, but i need to test myself.

for other cores it might be a pain.

@barbudreadmon
Copy link
Owner

Old nintendo/sega joystick won't fit with the classic/modern layout, but honestly :

  • 99.9% of libretro users don't use those
  • those specific cases are easily handled through remapping

I mean, i have one of those :

Did i add a specific controller layout in fbalpha for it ? No, i handled it though remapping, because it makes no sense to have one specific option for one arcade stick which was one of a kind and never a standard. The capcom snes one above is also one of a kind and shouldn't be handled through anything else than remapping

@Oggom
Copy link
Contributor

Oggom commented Sep 21, 2017

@barbudreadmon
Sorry, I don't have a picture of it and can't seem to find an actual model number on it....probably why it was so cheap back then lol.

As for the layout, it's specifically designed so you only have to map out things once regardless of what kind of stick you're using, that's the entire idea behind it.

@andres-asm
Copy link
Contributor

Having a separate layout even if it's useless would help if you switch gamepad / stick I guess, you just have to change one thing instead of remapping everything.

Just some (weird ?) idea i just had for the libretro api : if the autoconfig system was kinda able to tell me which kind of layout the joypad/joystick

Sadly this is not API realm, autoconf is after all a frontend feature.

@barbudreadmon
Copy link
Owner

@Oggom
If i understand well, you mapped your fightstick to a retropad as follow :
Y L R
A B X

And you did this to match default input mapping on mame because you didn't want to use their osd.
And because of this, you added an alternative mapping to fba to match your non-standard retropad layout.

You understand there are other ways to deal with this ? Like using an alternate retroarch config for fba which would map your fightstick to a conventional retropad layout like :
Y X L1 L2
B A R1 R2
or
Y X R1 L1
B A R2 L2
And using either "classic" or "modern" settings for device type ?

Did i understand the whole story ?

Please handle it through your config and not through the core code, there is just no way i will keep on the long term the "arcade device type" if it doesn't match a conventional retropad layout and is just some hack introduced to match the weird layout of 1 people and could have been handled through your config.

@Oggom
Copy link
Contributor

Oggom commented Sep 22, 2017

If i understand well, you mapped your fightstick to a retropad as follow

Correct.

And you did this to match default input mapping on mame because you didn't want to use their osd.

No, I just used MAME as a reference since FBA's input system is such a huge mess in comparison.

And because of this, you added an alternative mapping to fba to match your non-standard retropad layout.

The default FBA button layout was designed with regular gamepads in mind, so I added an alternative configuration for arcadesticks/keyboards.

You understand there are other ways to deal with this ?

There weren't back when I added that feature years ago.

Like using an alternate retroarch config for fba which would map your fightstick to a conventional retropad layout like

That's possible yes, although it would still be confusing for newer users who do not have a full understanding on how the button mapping works.

there is just no way i will keep on the long term

Once again I see zero harm in keeping it, but you've already made you decision.

is just some hack introduced to match the weird layout

It's neither a hack nor a weird layout since FBA covers are wide range of different machines with all different setups makes having an option for a simple standardized layout a necessary addition for user convenience. Feel free to drop the entire configuration it if you think there is only one way to do things right. What works for you is what works best, apparently.

@barbudreadmon
Copy link
Owner

@Oggom
There are 2 big misunderstandings.

First misunderstanding :
You think this layout is somehow needed by someone in the present day, but is that true ? Nowadays 99% of users have their controllers handled by autoconfig without any need for further configuration, they all map to the following :
Y X
B A
with L1/R1/(L2)/(R2) being above or beside those 4 buttons depending on the actual physical layout of the controller. All those autoconfig fit perfectly well with classic and/or modern device type, and won't fit at all with arcade device type.
So you'll tell me, what about the 1% of users remaining ? Easy, there are recommendations in the retroarch ui, on the wiki, on various websites, on forums, etc... about that, + people who will gladly help you setup your controller properly. If they follow those recommendations, they'll end up with a standard retropad layout like those other 99%, so they'll be able to use the classic/modern device type, and if they don't follow recommendations, the chances they end up with exactly the same retropad layout as you are slim, so your arcade device type would make no sense for them either.
Perhaps your arcade device type was somehow needed 4 years ago (all i remember is that autoconfig and ability to load different config files was already there 3 years and a half ago), perhaps there was no recommandations on how to map a controller to a retropad in the retroarch ui or on the internet. But that was 4 years ago, people should move on.

Second misunderstanding :
You think there is no harm in keeping it. Well, there is a huge confusion because of its name, topic complaining about it on multiple forums, people using it on the false assumption "i have an arcade stick, i'm supposed to use this" (while, as explained above, they should use classic/modern) then going to mame because they are pissed off by the fba layout making no sense.

If it was not harmful, i wouldn't mind keeping it, but it's actually harmful, and not needed in the present day, not by you either, because you could follow the retropad mapping recommendations. So yes, i'll probably drop it, because that sure does seem like the right thing to do.

@andres-asm
Copy link
Contributor

With autoconf and some remaps improvements I think this will become even more superfluous.
After all, with autoconf you don't even see RetroPad Y, RetroPad X, you see Square, Triangle on the Retropad side, and Weak Punch, Medium Punch.

Having some defaults is good, but as the frontend matures and the UI improves it would be better to keep it simple in the core realm.

Just my opinion.

@hizzlekizzle
Copy link

Using core options for controls also complicates netplay, IIRC, causing desyncs if one person uses the option and the other doesn't.

@barbudreadmon
Copy link
Owner

barbudreadmon commented Sep 23, 2017

@hizzlekizzle I moved controls from core options to device type in controls a few weeks ago. I still need to move macros but i'm in need of some kind of dummy input descriptors to do that (hopefully @fr500 is working on the input system at the moment)

@barbudreadmon
Copy link
Owner

Ok, i'm finally starting to understand where this whole situation came from.

So basically, when the mame cores handle their default mapping, they don't take the retropad recommanded layout into account at all, it ended up in people disabling autoconfig and creating a new mapping which didn't respect the recommandation (right now, a core remapping seems like a better solution), then a fix to counterbalance this new mapping was introduced in fbalpha.

So, if a fix in the cores code is really needed (the core remapping seems pretty ok to me, but it seems some people really insist on some kind of fix in the cores code), there are 2 solutions to handle this :

  • Update mame cores so they will make some basic use of the recommanded layout as reference.
  • Update all non-mame cores with fixes to counterbalance the mame layout, we could also update the 150 autoconfig files with this layout, and edit the retropad wiki.

One of those solutions seems totally dumb to me, i'll let you guess which one. I'll also link some mame cores maintainer @markwkidd @r-type to get their thoughts about this.

@dankcushions
Copy link
Contributor Author

for my part i'm wanting to update mame2003 with a decent arcade mappings, but i can't just change the default layout. people spend many hours configuring their overrides and such.

is the device type approach the agreed one? right now mame2003 is basically set to 'classic' (SNES layout).

@r-type
Copy link

r-type commented Oct 3, 2017

To be honest, I do not really understand all this.

Now if everyone think it is better to follow the reference layout ...
that should not be a problem.
go ahead and PR mame 2009/2010/2014/2016 cores .

the only rule for the mame core (current) is if the PR are not invasive with upstream code ,they are welcome.

@barbudreadmon
Copy link
Owner

@dankcushions i tried 2 games on mame2003, 1 of them crash on the select champion screen (Street Fighter 2, could be an issue on my side but i don't see what i did wrong : i have the right romset and built the core from sources on my linux x64), the other was king of fighter 98 and the mapping was weird with the reference layout :
(weak kick) (strong punch)
(weak punch) (strong kick)
That's not the neocd mapping, neither the mapping on ps/xbox remakes.
Looks to me like buttons 1/2/3/4 are mapped as B/Y/X/A, while the order i use for 99% of fba's library (B/A/Y/X) would totally make sense.

And yes, the device type approach is the recommanded one since, unlike core options, it is compatible with netplay

@barbudreadmon
Copy link
Owner

barbudreadmon commented Oct 4, 2017

@r-type i think having all cores using the same layout as reference, which is :
Y X
B A
with L/R/L2/R2 being above or beside depending on the kind of controller (see https://wiki.libretro.com/index.php?title=RetroPad), would be a good thing. Right now, i'm not sure any core besides mame ones use something else.

As mentioned in the various example, if handled properly by the core, this reference layout is working pretty well with both joypads and arcade sticks (there are a few exceptions : saturn pads/sticks, snes arcade stick, ..., but i think it is safe to assume very few people use those, and using another reference layout wouldn't really help in their case).

But to be honest, using core remapping or the osd seems totally fine (except a lot of people are probably unaware of those features). What is worrying though is when people don't use the reference layout and start handling their new layout in the other cores code, because it adds more confusion.

@dankcushions
Copy link
Contributor Author

@barbudreadmon

the reference layout :
(weak kick) (strong punch)
(weak punch) (strong kick)

what is 'the reference layout'?

i corrected the CPS2 games to map well to the SNES layout (L and R are HK and HP). i can't remember if i touched neogeo, so yeah that's probably wrong in any layout.

@barbudreadmon
Copy link
Owner

iirc, on neocd it was :
(strong punch) (strong kick)
(weak punch) (weak kick)

and on remakes it is :
(strong kick) (weak kick)
(strong punch) (weak punch)

At least that's what i think i'm using on fba.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants