From 7295d22ef4ad0d01f10defe2c33c78b300b733b9 Mon Sep 17 00:00:00 2001 From: MizterB <5458030+MizterB@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:45:25 -0500 Subject: [PATCH] Special controls for MAME: 6 button arcade layout, 3 over 3 --- .../generators/libretro/libretroMAMEConfig.py | 14 ++++++++++- .../generators/mame/mameGenerator.py | 14 ++++++++++- .../configgen/generators/mame/mameTypes.py | 4 ++++ .../data/mame/mameControls.csv | 24 ++++++++++++++++++- .../batocera/emulators/mame/mame.emulator.yml | 4 ++++ .../libretro-mame/mame.libretro.core.yml | 2 ++ 6 files changed, 59 insertions(+), 3 deletions(-) diff --git a/package/batocera/core/batocera-configgen/configgen/configgen/generators/libretro/libretroMAMEConfig.py b/package/batocera/core/batocera-configgen/configgen/configgen/generators/libretro/libretroMAMEConfig.py index 659646fb1eb..5a39f9ebb50 100644 --- a/package/batocera/core/batocera-configgen/configgen/configgen/generators/libretro/libretroMAMEConfig.py +++ b/package/batocera/core/batocera-configgen/configgen/configgen/generators/libretro/libretroMAMEConfig.py @@ -528,17 +528,25 @@ def getMameControlScheme(system: Emulator, rom: Path) -> str: return "sfsnes" if controllerType == "megadrive": return "megadrive" + if controllerType in ["arcade33", "arcade33top1"]: + return "arcade33top1" elif romName in mkList: if controllerType in [ "auto", "snes", "fightstick" ]: return "mksnes" if controllerType == "megadrive": return "mkmegadrive" + if controllerType in ["arcade33", "arcade33top1"]: + return "mkarcade33" elif romName in kiList: if controllerType in [ "auto", "snes", "fightstick" ]: return "kisnes" if controllerType == "megadrive": return "megadrive" + if controllerType in ["arcade33", "arcade33top1"]: + return "arcade33top1" elif romName in neogeoList: + if controllerType in ["arcade33", "arcade33top1"]: + return "neoarcade33" return "neomini" elif romName in twinstickList: return "twinstick" @@ -547,7 +555,11 @@ def getMameControlScheme(system: Emulator, rom: Path) -> str: else: if controllerType == "fightstick": return "sfsnes" - + if controllerType == "arcade33": + return "arcade33" + if controllerType == "arcade33top1": + return "arcade33top1" + return "default" def generateMAMEPadConfig( diff --git a/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py b/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py index 8a84c326e6b..62adfb1384f 100644 --- a/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py +++ b/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameGenerator.py @@ -851,6 +851,8 @@ def getMameControlScheme(system: Emulator, rom_path: Path) -> MameControlScheme: return "megadrive" if controllerType == "fightstick": return "sfstick" + if controllerType in ["arcade33", "arcade33top1"]: + return "arcade33top1" elif romName in mkList: if controllerType in [ "auto", "snes" ]: return "mksnes" @@ -858,6 +860,8 @@ def getMameControlScheme(system: Emulator, rom_path: Path) -> MameControlScheme: return "mkmegadrive" if controllerType == "fightstick": return "mkstick" + if controllerType in ["arcade33", "arcade33top1"]: + return "mkarcade33" elif romName in kiList: if controllerType in [ "auto", "snes" ]: return "kisnes" @@ -865,7 +869,11 @@ def getMameControlScheme(system: Emulator, rom_path: Path) -> MameControlScheme: return "megadrive" if controllerType == "fightstick": return "sfstick" + if controllerType in ["arcade33", "arcade33top1"]: + return "arcade33top1" elif romName in neogeoList: + if controllerType in ["arcade33", "arcade33top1"]: + return "neoarcade33" return "neomini" elif romName in twinstickList: return "twinstick" @@ -876,5 +884,9 @@ def getMameControlScheme(system: Emulator, rom_path: Path) -> MameControlScheme: return "fightstick" if controllerType == "megadrive": return "mddefault" - + if controllerType == "arcade33": + return "arcade33" + if controllerType == "arcade33top1": + return "arcade33top1" + return "default" diff --git a/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameTypes.py b/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameTypes.py index c120b6039ae..95cf6f79e16 100644 --- a/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameTypes.py +++ b/package/batocera/core/batocera-configgen/configgen/configgen/generators/mame/mameTypes.py @@ -17,4 +17,8 @@ 'mkstick', 'kisnes', 'mddefault', + 'arcade33', + 'mkarcade33', + 'neoarcade33', + 'arcade33top1', ] diff --git a/package/batocera/core/batocera-configgen/data/mame/mameControls.csv b/package/batocera/core/batocera-configgen/data/mame/mameControls.csv index 83c1bc75a13..8c69081ddc6 100644 --- a/package/batocera/core/batocera-configgen/data/mame/mameControls.csv +++ b/package/batocera/core/batocera-configgen/data/mame/mameControls.csv @@ -120,4 +120,26 @@ fightstick,BUTTON4,l2 fightstick,BUTTON5,y fightstick,BUTTON6,x fightstick,BUTTON7,pagedown -fightstick,BUTTON8,pageup \ No newline at end of file +fightstick,BUTTON8,pageup +arcade33,BUTTON1,b +arcade33,BUTTON2,a +arcade33,BUTTON3,pagedown +arcade33,BUTTON4,y +arcade33,BUTTON5,x +arcade33,BUTTON6,pageup +mkarcade33,BUTTON1,y +mkarcade33,BUTTON2,x +mkarcade33,BUTTON3,pageup +mkarcade33,BUTTON4,b +mkarcade33,BUTTON5,pagedown +mkarcade33,BUTTON6,a +neoarcade33,BUTTON1,y +neoarcade33,BUTTON2,x +neoarcade33,BUTTON3,b +neoarcade33,BUTTON4,a +arcade33top1,BUTTON1,y +arcade33top1,BUTTON2,x +arcade33top1,BUTTON3,pageup +arcade33top1,BUTTON4,b +arcade33top1,BUTTON5,a +arcade33top1,BUTTON6,pagedown \ No newline at end of file diff --git a/package/batocera/emulators/mame/mame.emulator.yml b/package/batocera/emulators/mame/mame.emulator.yml index 082752eb37a..f01f3bce71c 100644 --- a/package/batocera/emulators/mame/mame.emulator.yml +++ b/package/batocera/emulators/mame/mame.emulator.yml @@ -1560,6 +1560,8 @@ systems: Neo Geo CD Pad: neocd Twin Stick with Triggers: twinstick Rotated 4-Way Stick (Q*Bert): qbert + Arcade 6-Button, 3 Over 3: arcade33 + Arcade 6-Button, 3 Over 3, Button 1 on Top: arcade33top1 hiscoreplugin: group: ADVANCED OPTIONS prompt: HIGH SCORE PLUGIN @@ -1595,6 +1597,8 @@ systems: Neo Geo CD Pad: neocd Twin Stick with Triggers: twinstick Rotated 4-Way Stick (Q*Bert): qbert + Arcade 6-Button, 3 Over 3: arcade33 + Arcade 6-Button, 3 Over 3, Button 1 on Top: arcade33top1 hiscoreplugin: group: ADVANCED OPTIONS prompt: HIGH SCORE PLUGIN diff --git a/package/batocera/emulators/retroarch/libretro/libretro-mame/mame.libretro.core.yml b/package/batocera/emulators/retroarch/libretro/libretro-mame/mame.libretro.core.yml index 1d3d8ba5405..394f715b5ca 100644 --- a/package/batocera/emulators/retroarch/libretro/libretro-mame/mame.libretro.core.yml +++ b/package/batocera/emulators/retroarch/libretro/libretro-mame/mame.libretro.core.yml @@ -60,6 +60,8 @@ custom_features: Neo Geo CD Pad: neocd Twin Stick with Triggers: twinstick Rotated 4-Way Stick (Q*Bert): qbert + Arcade 6-Button, 3 Over 3: arcade33 + Arcade 6-Button, 3 Over 3, Button 1 on Top: arcade33top1 hiscoreplugin: group: ADVANCED OPTIONS prompt: HIGH SCORE PLUGIN