Special controls for MAME: 6 button arcade layout, 3 over 3 - #15180
Special controls for MAME: 6 button arcade layout, 3 over 3#15180MizterB wants to merge 1 commit into
Conversation
|
currently PR merges are on hold. keep an eye on Master for the transition. the wip from Bryan is here as an fyi - master...bryanforbes:batocera.linux:feature/improve-es-features |
d9bcef1 to
1fb7a4e
Compare
|
Rebased on current master, no conflicts — the configgen refactor since didn't touch any of this. Re-tested the mapping on both the libretro and standalone MAME generators and it's still correct. Should be good for another look now that merges are moving again. Thanks @dmanlfc |
|
Interesting. Wanted to chime in because sine I was the one that did a lot of the 6 face button controller mappings. Using kbtopads I set them up on my arcade(3x3 layout) in the same way. WEST, NORTH, L1 As of v43.1, This has correct mapping for mame standalone out of the box, using traditional 6 button fighting games like street fighter 2 as a test. Libretro out of the box mappings are different however, so it would be nice to get them consistent. IMO, there's less potential confusion if we recommend just mapping arcade 3x3's to the same inputs we recommend for 6 face button controllers, rather than different I think. It could simplify a lot. Arguably 4x4's could even just use: WEST, NORTH, L1, L2 But this would need testing. ( I don't have anything with this layout) I have found some other arcade games specifically that are not mapped correctly regardless of the internal ES mapping, soul calibur/souledge, and Mortal Kombat games(MK4 even uses different mappings than the others, the button assaignments are different). |
|
Soul Edge/SoulCalibur has unique mapping: A(horizontal slash), B(vertical slash), K(kick) Mortal Kombat most closely follows: HP(high punch), G(guard), HK(high kick) All but the first motal kombat games have run, in MK1, both guard and run both just guard. This is keeping with the universal mantra of batocera following cardinal direction above all else. There may be more, but this is all I've found so far. |
|
mame generator is already setting specific control for capcom games, motal kombat , kille instict, neogeo ... based on csv rom list.Are you talking about libretro-mame ? (as this PR is about mame standalone) |
looking at your |
|
do we have a real usecase for inverted rows ? I mean, if we add a new layout in mame, it should be supported by other arcade emu like flycast for example. we already support the 2 more common layout: classic: Y X L L2 modern: and AFAIK, all premade arcade cabinet && arcade sticks are using theses 2 layouts. |
Mame stand alone since that’s what the PR is for. I’m not really concerned about libretro mame atm since I’m not using it. But I have identified some inconsistencies with it if anyone else wants to take a look. For mame stand alone. I had to change the inputs for MK in the csv file, I can only assume whoever determines the defaults does not know the real arcade input mappings, and beyond that there is need for a new one for soul edge/soul caliber since it uses the default which is completely wrong. additionally MK4 doesn’t use the same internal mapping as all the other MK games so it needs its own handling separate from the other MK games. Completely separate mappings in the csv |
I disagree with this - historically, 3 over 3 is very common arcade cabinet layout for MAME. In fact, as I mentioned at the top, the default IPAC keymap in https://github.com/batocera-linux/batocera.linux/blob/master/package/batocera/controllers/pads/keyboardtopads/inputs/UltimarcIPAC2ultimarcIPAC2.vd209.p0420.yml reflects this, as it exposes only 6 gameplay buttons. While Batocera has done some great work to standardize keymaps for certain manufacturers and groups of games, it doesn't cover everything. Individual MAME game drivers have their own longstanding keymaps, and many assumed a stacked button layout, with Batocera's default abstraction across all systems assumes the primary button is The point here is to give the end-user flexibility. As 20+ year MAME user, I want Batocera in an arcade cabinet to easily preserve MAME behaviors. At the same time, if someone prefers a keymap that is more faithful to the Batocera retropad abstraction, I have provided that option as well. Best of both worlds. Also - to be clear - this PR is not just about MAME standalone. It also works perfectly fine with LR-MAME. |
yes, 3 over 3 is very common, but want I want to said, if that the sfsnes mapping, is already done for 3 over 3. so, you arcade33 mapping is just the 2 rows inverted . my point is mainly that you'll have problem with other arcade emu like flycast, namco2x6,... because the default layout is arcade33top1 almost everywhere since the snes era. (including also all other console emu)
Well, indeed, but it's really depend of how you are wiring your encoder. I'm owning an ipac mysel too, and I known that I can't have a corect mapping in every emulator without using the classic layout wired, with button1 wired on top-right. but if you think that it's a common wiring, no problem ! maybe it should avoid duplication of sfsnes with arcade33top1.
ah yes, sorry |
for mortalkombat, I don't have tested it yet, but the csv look strange. AFAIK, the mapping is done for mk1->3, not 4. with the real cabinet with T buttons in X . + the run button in mk3. I known that console port have done a mapping like: low_punch high_punch block but I don't known how it's implement in the csv ? for soulcalibur, it should need a custom mapping indeed. |
|
thinking about that, is it only to fix the mapping with the new keyboardtopad feature ? because, maybe the original problem is the mapping in /usr/share/keyboardToPads/inputs/*.yml , where the row are inverted ? (fixed them, should fix mapping in other emulator too) Edit: I have looked the yml from keyboardtomap, for ipac for example: "key:leftctrl": "btn:west" (button1) "key:leftshift": "btn:south" (button4) That's match the default street fighter layout in mame |
|
Thanks @aderumier. This option is MAME/LR-MAME only — it doesn't touch flycast or the other arcade emus, so I don't think the cross-emulator consistency concern applies here. And the arcade33 vs arcade33top1 choice only changes the generic default bucket: capcom, MK, KI and Neo-Geo all route to the same scheme in both modes, so the fighters land on the same buttons either way. On the sfsnes overlap — arcade33top1's rows do match it, but sfsnes isn't user-selectable (it's only returned internally for capcom), so this fills a gap there was no way to reach before. Happy to alias arcade33top1 to sfsnes in code if you'd rather drop the duplicate rows. For the Mortal Kombat mappings, whether the underlying button semantics are right is really a separate discussion — I'd suggest a dedicated PR for that. My mkarcade33 rows just position the existing scheme onto a 3-over-3 panel; happy to walk through them if anything looks off. |
it's selectable with "snes" model for the generics games, indeed it's different, because we don't have "snes" we have fighstick, but it's modern layout only (with button3= R1 button6=R2). so, indeed this make sense to have something different than "snes" I'm still unsure about both arcade33 + arcade33top1, because than mean that we should have the same for "fightstick".
what I don't understand for example, is controller arcade33top1 is same layout than controllertype snes, it should be more something like: with fix to mksnes mapping another example for capcom both controller type arcade33 && arcade33top1 are use layout arcade33top1, which is the same than default sfsnes layout so it could be (and fighstick look strange too here, as I don't see how it can work for button3 && button6 killer instinct: they seem to use also a default layout, I'm not sure, but maybe the kisnes is wrong too ? I'll try to tests next week on my side, with both standalone && libretro, with different games, with default vs snes vs fighstick vs arcade33. |
|
I’m in 100% agreement the current mame / libretro-mame input mappings are kind of a mess and seem to have just been an accumulation of fixes here and there. But now it’s just a mess. something worth considering in the setting names is to prefix the target hardware: pad: snes Otherwise it’s a tad ambiguous. Especially with the new keyboardtopads, I’m not even sure some of the existing layouts are even really needed. a key thing is knowing what a “standard” input layout should be for arcade owners, regardless of what a default ipac or encoder sets up, it’s still mapped to ES and that should be the consistent part. my ipac uses the arrow keys, and q,e,r,t,y,u for player 1. For player 2 (wasd for directional) and f,g,h,j,k,l. But that doesn’t really matter because in ES it’s then mapped to the typical gamepad centric layout: West, north, L1 if someone is mapping their arcade inputs differently, might be good to know what it is and why. |
|
I think we also need to have group for games with <=3 buttons or 4 buttons. 3 button can set in row for arcade panel , but need 2 + 1 in gamepad 4 buttons games can be set to 1 row with 8 buttons acade panel, but need 2 +2 for 6 buttons panel or gamepad I think it's also miss for 2 buttons games on gamepad, a X-A layout. (instead A-B or X-Y). I have begin to look at warped polygon guy presets (he have done the 3500 mames games manually), most of the game can be grouped like now (6button fighter, 2/3/4 buttons games, neogeo, ...) then they are also specific games too (mortal kombat, soul calibur , racing games that need pedal, .....). also, killer instinct look like a classic capcom 6 button layout, I'm not sure why it was separated with a strange layout. I'll do tests next week |
Additional special controls for MAME, for automatically mapping games to a 6 button, 3x3 arcade layout. Button assignments are based on the default layout used by
keyboadToPads.There are 2 variants:
arcade33: Is a standard RetroPad layout. In its default state, MAME'sBUTTON1is mapped to the bottom-left button:arcade33top1: Is a traditional MAME layout. In it's default state, MAME'sBUTTON1mapped to the top-left button:Both variants automatically remap fighting games and Neo-Geo as needed.