Arcade style gamepad overlays for FBA/MAME core?

Would it be possible to have an arcade style game pad overlay for onscreen users in future updates of RA? This would be great for arcade style games when using cores like mame or fba, or even any other core where an arcade style button layout would be more suitable. Honestly the virtual dpads on the available game pads aren’t really all that great when using the onscreen controls, especially for arcade fighters which would be best suited with a virtual arcade stick instead. I could see other types of games (such as arcade shooters) benefiting from this as well. I’m referring to something along these lines (minus that sp button). Just the standard aracade stick and 6 button (or even just 4 button for like neogeo) layout.

These examples are from the mobile ports of samurai shodown II and king of fighters 98.

Also, any chance that RA will allow any core (especially mame & fba) to map several inputs to one button, or provide the option for extra buttons for that exact purpose? Such as mapping a+b+c or a+b, etc to one input.

I was working on something like this at one point, but I stopped when someone else said they were going to do it. I guess I should revisit it…

I’m pretty sure the input system would take a significant overhaul to do many-to-one mapping, unfortunately.

Ah, I see. I figured the mapping of multiple buttons to one input would require a lot of reworking; I just figured I’d ask about it since it’s a feature implemented in a few stock emulators I’ve used (such as FBA, Raine, mvspsp). Atleast hopefully the arcade style game pad layout can perhaps make it to RA in a future update, it should def be one of the stock options for game pad overlays.

Also, another suitable suggestion would be creating a gamepad overlay of a controller that used a joystick as it’s main input for movement. This would be great for games that don’t really require the 6 button layout of an arcade cabinet, but could still use the precision/flexibility of an arcade stick. Here is an example of a controller that used a joystick as it’s input for movement.

The first is of the neogeo cd gamepad, which was probably the first controller to feature a joystick that uses micro switches (just like original arcade sticks) in a controller. The second is the ps3 controller that snk came out that copies various aspects of the original controller while featuring all the inputs (besides dual joysticks) of the ps3 controller. Great for fighters or any game where the dual analog sticks were not needed.

I think the ‘retropad’ overlay has a button for switching to a left analog instead of a dpad (you’ll just have to enable the analog dpad option in RGUI)

Hmmm, i’m a RA user on ios; I couldn’t fine a ‘retropad’ overlay option in any of the overlay options in rgui. I have the latest version installed as well…

You can get it from here: https://github.com/libretro/common-overlays

Thanks, I went ahead and downloaded all the files, put them in my iPhone, and gave it a try. First, I wanted to know why this isn’t a stock available gamepad in RA? Seeing as how it’s called the retropad, it only makes sense that it should come default with RA. I think the toggle to switch between the dpad or analog stick is a great idea and can be really useful depending on what type of game you’re playing.

Though, when it comes to the analog stick (something I also noticed in the dualshock overlay), the way it emulates the joystick isn’t very ideal for touchscreen use. The problem isn’t in it’s accuracy or anything, in which it performs the same as it would if you were actually using a joystick. Though like a physical joystick, it requires you to make contact with the center of the joystick (or the joystick itself) and make those same movements you would with the real thing, except instead with your thumb. That’s where I feel the issue lies, that there’s no way to use the virtual stick in a way that it senses your input without having to actually make contact with the center first and then sliding your thumb in the desired movement; and despite it being a joystick, it actually makes it harder to use when on a touchscreen.

I think the best implementation of a virtual joystick/arcade stick for touchscreen (iOS/android) devices are from the fighting games ported/or made exclusive for mobile devices, also mobile ports of arcade games replicate it in the very same fashion. I’m referring to games like soulcalibur, street fighter iv volt, the king of fighters i/a 2012, street fighter x tekken mobile, and the many neogeo ports brought over by dotemu (such as samurai shodown ii, king of fighters 98, metal slug, blazing star, etc). The way they replicate the arcade stick for touchscreen devices is in a way that ends up working very well. Instead of first making contact in the center and then sliding to your desired movement, you can instead just tap (or tap and hold) below, above, or to the side (or anywhere really as long as you’re in proximity) of the arcade stick, and it will still read and follow your input. You can still press and make movements as if you were using a dpad without having to make the exact motions you would have to on an actual arcade stick; though if you wanted to, you could still do that too and it would work just the same. In a sense, it’s like an eightway dpad fused with an arcade stick. It can be used just like an arcade stick, or be used like a dpad, but with the full motion range of an arcade stick.

Is there any way this type of overlay analog stick can be implemented in RA? The only emulator on iOS that has somewhat come very close to doing this (but instead of a full 8 way motion, it only does 4) is mame4ios reloaded.

Hmm. I guess it might work to put an invisible 8-way dpad around the periphery of the analog. The stick wouldn’t snap to your finger in that case, but it would register the direction. So, you could tap straight to the edges or start at the center to do analog movement.

Also, those overlays should come in future releases. Some of the overlays just didn’t exist at the time of the last release, IIRC.

EDIT: try this retropad.cfg that has the digital hitboxes on the same overlay (invisible) as the analog stick:

overlays = 10

overlay0_full_screen = true
overlay0_normalized = true
overlay0_name = "landscape"
overlay0_range_mod = 1.5
overlay0_alpha_mod = 2.0
overlay1_full_screen = true
overlay1_normalized = true
overlay1_name = "portrait"
overlay1_range_mod = 1.5
overlay1_alpha_mod = 2.0
overlay2_overlay = quickmenu.png
overlay2_name = "landscape-menu"
overlay2_full_screen = true
overlay2_range_mod = 1.5
overlay2_alpha_mod = 2.0
overlay3_name = "hide"
overlay3_full_screen = true
overlay3_normalized = true
overlay4_full_screen = true
overlay4_normalized = true
overlay4_name = "landscape-analog"
overlay4_range_mod = 1.5
overlay4_alpha_mod = 2.0
overlay5_full_screen = true
overlay5_normalized = true
overlay5_name = "portrait-analog"
overlay5_range_mod = 1.5
overlay5_alpha_mod = 2.0
overlay6_overlay = quickmenu.png
overlay6_name = "landscape-analog-menu"
overlay6_full_screen = true
overlay6_alpha_mod = 2.0
overlay7_overlay = quickmenu.png
overlay7_name = "portrait-menu"
overlay7_full_screen = true
overlay7_alpha_mod = 2.0
overlay8_overlay = quickmenu.png
overlay8_name = "portrait-analog-menu"
overlay8_full_screen = true
overlay8_alpha_mod = 2.0
overlay9_name = "hide-analog"
overlay9_full_screen = true
overlay9_normalized = true

overlay0_descs = 28
overlay0_desc0 = "left,0.04375,0.80208333333,radial,0.0525,0.0875"
overlay0_desc1 = "right,0.19375,0.80208333333,radial,0.0525,0.0875"
overlay0_desc2 = "up,0.11845,0.67708333333,radial,0.0525,0.0875"
overlay0_desc3 = "down,0.11845,0.92708333333,radial,0.0525,0.0875"
overlay0_desc4 = "start,0.64375,0.94791666666667,rect,0.04375,0.052083333333"
overlay0_desc4_overlay = start.png
overlay0_desc5 = "select,0.35625,0.94791666666667,rect,0.04375,0.052083333333"
overlay0_desc5_overlay = select.png
overlay0_desc6 = "a,0.95625,0.802083333333,radial,0.04375,0.0729166666667"
overlay0_desc6_overlay = a.png
overlay0_desc7 = "b,0.88125,0.927083333333,radial,0.04375,0.0729166666667"
overlay0_desc7_overlay = b.png
overlay0_desc8 = "x,0.88125,0.677083333333,radial,0.04375,0.0729166666667"
overlay0_desc8_overlay = x.png
overlay0_desc9 = "y,0.80625,0.802083333333,radial,0.04375,0.0729166666667"
overlay0_desc9_overlay = y.png
overlay0_desc10 = "l,0.0625,0.052083333333,rect,0.0625,0.052083333333"
overlay0_desc10_overlay = l1.png
overlay0_desc11 = "r,0.9375,0.052083333333,rect,0.0625,0.052083333333"
overlay0_desc11_overlay = r1.png
overlay0_desc12 = "left|down,0.04375,0.9270833333333,radial,0.03125,0.0520833333333"
overlay0_desc13 = "right|up,0.19375,0.67708333333,radial,0.03125,0.0520833333333"
overlay0_desc14 = "up|left,0.04375,0.67708333333,radial,0.03125,0.0520833333333"
overlay0_desc15 = "down|right,0.19375,0.9270833333333,radial,0.03125,0.0520833333333"
overlay0_desc16 = "nul,0.11845,0.80208333333,rect,0.127575,0.212625"
overlay0_desc16_overlay = dpad.png
overlay0_desc17 = "overlay_next,0.70125,0.11708333333334,radial,0.025,0.04166666667"
overlay0_desc17_overlay = menu.png
overlay0_desc17_next_target = "landscape-menu"
overlay0_desc18 = "menu_toggle,0.50125,0.11708333333334,radial,0.025,0.04166666666"
overlay0_desc18_overlay = rgui.png
overlay0_desc19 = "overlay_next,0.30125,0.11708333333334,radial,0.025,0.04166666666"
overlay0_desc19_overlay = rotate.png
overlay0_desc19_next_target = "portrait"
overlay0_desc20 = "overlay_next,0.20125,0.11708333333334,radial,0.025,0.04166666666"
overlay0_desc20_overlay = analog.png
overlay0_desc20_next_target = "landscape-analog"
overlay0_desc21 = "toggle_fast_forward,0.60125,0.11708333333334,radial,0.025,0.04166666666"
overlay0_desc21_overlay = ff.png
overlay0_desc22 = "rewind,0.40125,0.11708333333334,radial,0.025,0.04166666666"
overlay0_desc22_overlay = rewind.png
overlay0_desc23 = "overlay_next,0.80125,0.11708333333334,radial,0.025,0.04166666667"
overlay0_desc23_overlay = hide.png
overlay0_desc23_next_target = "hide"
overlay0_desc24 = "r2,0.9475,0.157083333333,rect,0.0525,0.052083333333"
overlay0_desc24_overlay = r2.png
overlay0_desc25 = "r3,0.9575,0.262083333333,rect,0.0425,0.052083333333"
overlay0_desc25_overlay = r3.png
overlay0_desc26 = "l2,0.048,0.157083333333,rect,0.0525,0.052083333333"
overlay0_desc26_overlay = l2.png
overlay0_desc27 = "l3,0.033,0.262083333333,rect,0.0425,0.052083333333"
overlay0_desc27_overlay = l3.png

overlay1_descs = 27
overlay1_desc0 = "left,0.09375,0.86875,radial,0.0875,0.0525"
overlay1_desc1 = "right,0.34375,0.86875,radial,0.0875,0.0525"
overlay1_desc2 = "up,0.21875,0.79375,radial,0.0875,0.0525"
overlay1_desc3 = "down,0.21875,0.94375,radial,0.0875,0.0525"
overlay1_desc4 = "start,0.8958333333333,0.635,rect,0.0625,0.0375"
overlay1_desc4_overlay = start.png
overlay1_desc5 = "select,0.1041666667,0.635,rect,0.0625,0.0375"
overlay1_desc5_overlay = select.png
overlay1_desc6 = "a,0.9270833333333,0.83125,radial,0.0729166666667,0.04375"
overlay1_desc6_overlay = a.png
overlay1_desc7 = "b,0.8020833333333,0.90625,radial,0.0729166666667,0.04375"
overlay1_desc7_overlay = b.png
overlay1_desc8 = "x,0.8020833333333,0.75625,radial,0.0729166666667,0.04375"
overlay1_desc8_overlay = x.png
overlay1_desc9 = "y,0.677083333333,0.83125,radial,0.0729166666667,0.04375"
overlay1_desc9_overlay = y.png
overlay1_desc10 = "l,0.1041666667,0.52625,rect,0.1041666667,0.03125"
overlay1_desc10_overlay = l1.png
overlay1_desc11 = "r,0.8958333333333,0.52625,rect,0.1041666667,0.03125"
overlay1_desc11_overlay = r1.png
overlay1_desc12 = "left|down,0.09375,0.94375,radial,0.05208333333333,0.03125"
overlay1_desc13 = "right|up,0.34375,0.79375,radial,0.05208333333333,0.03125"
overlay1_desc14 = "up|left,0.09375,0.79375,radial,0.05208333333333,0.03125"
overlay1_desc15 = "down|right,0.34375,0.94375,radial,0.05208333333333,0.03125"
overlay1_desc16 = "nul,0.21875,0.87275,rect,0.21,0.13"
overlay1_desc16_overlay = dpad.png
overlay1_desc17 = "overlay_next,0.7016666667,0.53125,rect,0.041666667,0.025"
overlay1_desc17_overlay = menu.png
overlay1_desc17_next_target = "portrait-menu"
overlay1_desc18 = "menu_toggle,0.5,0.53125,radial,0.04166666666,0.025"
overlay1_desc18_overlay = rgui.png
overlay1_desc19 = "overlay_next,0.30125,0.53125,radial,0.04166666666,0.025"
overlay1_desc19_overlay = rotate.png
overlay1_desc19_next_target = "landscape"
overlay1_desc20 = "toggle_fast_forward,0.7016666667,0.61125,rect,0.041666667,0.025"
overlay1_desc20_overlay = ff.png
overlay1_desc21 = "rewind,0.30125,0.61125,radial,0.04166666666,0.025"
overlay1_desc21_overlay = rewind.png
overlay1_desc22 = "overlay_next,0.5,0.61125,radial,0.04166666666,0.025"
overlay1_desc22_next_target = "portrait-analog"
overlay1_desc22_overlay = analog.png
overlay1_desc23 = "l2,0.094,0.46125,rect,0.0941666667,0.03125"
overlay1_desc23_overlay = l2.png
overlay1_desc24 = "r2,0.906,0.46125,rect,0.0941666667,0.03125"
overlay1_desc24_overlay = r2.png
overlay1_desc25 = "l3,0.084,0.39725,rect,0.0841666667,0.03125"
overlay1_desc25_overlay = l3.png
overlay1_desc26 = "r3,0.916,0.39725,rect,0.0841666667,0.03125"
overlay1_desc26_overlay = r3.png

overlay2_descs = 11
overlay2_desc0 = "load_state,270,90,rect,120,30"
overlay2_desc1 = "save_state,270,170,rect,120,30"
overlay2_desc3 = "state_slot_increase,270,250,rect,120,30"
overlay2_desc2 = "state_slot_decrease,270,330,rect,120,30"
overlay2_desc6 = "reset,250,410,rect,100,30"
overlay2_desc4 = "rewind,530,90,rect,120,30"
overlay2_desc5 = "slowmotion,530,170,rect,120,30"
overlay2_desc7 = "toggle_fast_forward,530,250,rect,120,300"
overlay2_desc9 = "shader_prev,530,330,rect,120,30"
overlay2_desc8 = "shader_next,550,410,rect,100,30"
overlay2_desc10 = "overlay_next,400,460,rect,40,20"
overlay2_desc10_next_target = "landscape"

overlay3_descs = 1
overlay3_desc0 = "overlay_next,0.5,0.90,radial,0.04375,0.0729166666667"
overlay3_desc0_next_target = "landscape"
overlay3_desc0_overlay = show.png

overlay4_descs = 29
overlay4_desc0 = "nul,0.145,0.75,radial,0.127575,0.212625"
overlay4_desc0_overlay = thumbstick-background.png
overlay4_desc1 = "analog_left,0.145,0.75,radial,0.083,0.136"
overlay4_desc1_overlay = thumbstick-pad.png
overlay4_desc1_range_mod = 3.5
overlay4_desc1_pct = 0.65
overlay4_desc1_movable = true
overlay4_desc2 = "overlay_next,0.20125,0.11708333333334,radial,0.025,0.04166666666"
overlay4_desc2_next_target = "landscape"
overlay4_desc2_overlay = digital.png
overlay4_desc3 = "rewind,0.40125,0.11708333333334,radial,0.025,0.04166666666"
overlay4_desc3_overlay = rewind.png
overlay4_desc4 = "start,0.64375,0.94791666666667,rect,0.04375,0.052083333333"
overlay4_desc4_overlay = start.png
overlay4_desc5 = "select,0.35625,0.94791666666667,rect,0.04375,0.052083333333"
overlay4_desc5_overlay = select.png
overlay4_desc6 = "a,0.95625,0.802083333333,radial,0.04375,0.0729166666667"
overlay4_desc6_overlay = a.png
overlay4_desc7 = "b,0.88125,0.927083333333,radial,0.04375,0.0729166666667"
overlay4_desc7_overlay = b.png
overlay4_desc8 = "x,0.88125,0.677083333333,radial,0.04375,0.0729166666667"
overlay4_desc8_overlay = x.png
overlay4_desc9 = "y,0.80625,0.802083333333,radial,0.04375,0.0729166666667"
overlay4_desc9_overlay = y.png
overlay4_desc10 = "l,0.0625,0.052083333333,rect,0.0625,0.052083333333"
overlay4_desc10_overlay = l1.png
overlay4_desc11 = "r,0.9375,0.052083333333,rect,0.0625,0.052083333333"
overlay4_desc11_overlay = r1.png
overlay4_desc12 = "overlay_next,0.70125,0.11708333333334,rect,0.025,0.04166666667"
overlay4_desc12_overlay = menu.png
overlay4_desc12_next_target = "landscape-analog-menu"
overlay4_desc13 = "menu_toggle,0.50125,0.11708333333334,radial,0.025,0.04166666666"
overlay4_desc13_overlay = rgui.png
overlay4_desc14 = "overlay_next,0.30125,0.11708333333334,radial,0.025,0.04166666666"
overlay4_desc14_overlay = rotate.png
overlay4_desc14_next_target = "portrait-analog"
overlay4_desc15 = "toggle_fast_forward,0.60125,0.11708333333334,radial,0.025,0.04166666666"
overlay4_desc15_overlay = ff.png
overlay4_desc16 = "overlay_next,0.80125,0.11708333333334,radial,0.025,0.04166666667"
overlay4_desc16_overlay = hide.png
overlay4_desc16_next_target = "hide-analog"
overlay4_desc17 = "r2,0.9475,0.157083333333,rect,0.0525,0.052083333333"
overlay4_desc17_overlay = r2.png
overlay4_desc18 = "r3,0.9575,0.262083333333,rect,0.0425,0.052083333333"
overlay4_desc18_overlay = r3.png
overlay4_desc19 = "l2,0.048,0.157083333333,rect,0.0525,0.052083333333"
overlay4_desc19_overlay = l2.png
overlay4_desc20 = "l3,0.033,0.262083333333,rect,0.0425,0.052083333333"
overlay4_desc20_overlay = l3.png
overlay4_desc21 = "left|down,0.09375,0.94375,radial,0.05208333333333,0.03125"
overlay4_desc22 = "right|up,0.34375,0.79375,radial,0.05208333333333,0.03125"
overlay4_desc23 = "up|left,0.09375,0.79375,radial,0.05208333333333,0.03125"
overlay4_desc24 = "down|right,0.34375,0.94375,radial,0.05208333333333,0.03125"
overlay4_desc25 = "left,0.09375,0.86875,radial,0.0875,0.0525"
overlay4_desc26 = "right,0.34375,0.86875,radial,0.0875,0.0525"
overlay4_desc27 = "up,0.21875,0.79375,radial,0.0875,0.0525"
overlay4_desc28 = "down,0.21875,0.94375,radial,0.0875,0.0525"

overlay5_descs = 20
overlay5_desc0 = "nul,0.22,0.875,radial,0.212625,0.127575"
overlay5_desc0_overlay = thumbstick-background.png
overlay5_desc1 = "analog_left,0.22,0.875,radial,0.136,0.083"
overlay5_desc1_overlay = thumbstick-pad.png
overlay5_desc1_range_mod = 3.5
overlay5_desc1_pct = 0.65
overlay5_desc1_movable = true
overlay5_desc2 = "overlay_next,0.5,0.61125,radial,0.04166666666,0.025"
overlay5_desc2_next_target = "portrait"
overlay5_desc2_overlay = digital.png
overlay5_desc3 = "rewind,0.30125,0.61125,radial,0.04166666666,0.025"
overlay5_desc3_overlay = rewind.png
overlay5_desc4 = "start,0.8958333333333,0.635,rect,0.0625,0.0375"
overlay5_desc4_overlay = start.png
overlay5_desc5 = "select,0.1041666667,0.635,rect,0.0625,0.0375"
overlay5_desc5_overlay = select.png
overlay5_desc6 = "a,0.9270833333333,0.83125,radial,0.0729166666667,0.04375"
overlay5_desc6_overlay = a.png
overlay5_desc7 = "b,0.8020833333333,0.90625,radial,0.0729166666667,0.04375"
overlay5_desc7_overlay = b.png
overlay5_desc8 = "x,0.8020833333333,0.75625,radial,0.0729166666667,0.04375"
overlay5_desc8_overlay = x.png
overlay5_desc9 = "y,0.677083333333,0.83125,radial,0.0729166666667,0.04375"
overlay5_desc9_overlay = y.png
overlay5_desc10 = "l,0.1041666667,0.52625,rect,0.1041666667,0.03125"
overlay5_desc10_overlay = l1.png
overlay5_desc11 = "r,0.8958333333333,0.52625,rect,0.1041666667,0.03125"
overlay5_desc11_overlay = r1.png
overlay5_desc12 = "toggle_fast_forward,0.7016666667,0.61125,rect,0.041666667,0.025"
overlay5_desc12_overlay = ff.png
overlay5_desc13 = "overlay_next,0.7016666667,0.53125,radial,0.041666667,0.025"
overlay5_desc13_overlay = menu.png
overlay5_desc13_next_target = "portrait-analog-menu"
overlay5_desc14 = "menu_toggle,0.5,0.53125,radial,0.04166666666,0.025"
overlay5_desc14_overlay = rgui.png
overlay5_desc15 = "overlay_next,0.30125,0.53125,radial,0.04166666666,0.025"
overlay5_desc15_overlay = rotate.png
overlay5_desc15_next_target = "landscape-analog"
overlay5_desc16 = "l2,0.094,0.46125,rect,0.0941666667,0.03125"
overlay5_desc16_overlay = l2.png
overlay5_desc17 = "r2,0.906,0.46125,rect,0.0941666667,0.03125"
overlay5_desc17_overlay = r2.png
overlay5_desc18 = "l3,0.084,0.39725,rect,0.0841666667,0.03125"
overlay5_desc18_overlay = l3.png
overlay5_desc19 = "r3,0.916,0.39725,rect,0.0841666667,0.03125"
overlay5_desc19_overlay = r3.png

overlay6_descs = 11
overlay6_desc0 = "load_state,270,90,rect,120,30"
overlay6_desc1 = "save_state,270,170,rect,120,30"
overlay6_desc3 = "state_slot_increase,270,250,rect,120,30"
overlay6_desc2 = "state_slot_decrease,270,330,rect,120,30"
overlay6_desc6 = "reset,250,410,rect,100,30"
overlay6_desc4 = "rewind,530,90,rect,120,30"
overlay6_desc5 = "slowmotion,530,170,rect,120,30"
overlay6_desc7 = "toggle_fast_forward,530,250,rect,120,300"
overlay6_desc9 = "shader_prev,530,330,rect,120,30"
overlay6_desc8 = "shader_next,550,410,rect,100,30"
overlay6_desc10 = "overlay_next,400,460,rect,40,20"
overlay6_desc10_next_target = "landscape-analog"

overlay7_descs = 11
overlay7_desc0 = "load_state,270,90,rect,120,30"
overlay7_desc1 = "save_state,270,170,rect,120,30"
overlay7_desc3 = "state_slot_increase,270,250,rect,120,30"
overlay7_desc2 = "state_slot_decrease,270,330,rect,120,30"
overlay7_desc6 = "reset,250,410,rect,100,30"
overlay7_desc4 = "rewind,530,90,rect,120,30"
overlay7_desc5 = "slowmotion,530,170,rect,120,30"
overlay7_desc7 = "toggle_fast_forward,530,250,rect,120,300"
overlay7_desc9 = "shader_prev,530,330,rect,120,30"
overlay7_desc8 = "shader_next,550,410,rect,100,30"
overlay7_desc10 = "overlay_next,400,460,rect,40,20"
overlay7_desc10_next_target = "portrait"

overlay8_descs = 11
overlay8_desc0 = "load_state,270,90,rect,120,30"
overlay8_desc1 = "save_state,270,170,rect,120,30"
overlay8_desc3 = "state_slot_increase,270,250,rect,120,30"
overlay8_desc2 = "state_slot_decrease,270,330,rect,120,30"
overlay8_desc6 = "reset,250,410,rect,100,30"
overlay8_desc4 = "rewind,530,90,rect,120,30"
overlay8_desc5 = "slowmotion,530,170,rect,120,30"
overlay8_desc7 = "toggle_fast_forward,530,250,rect,120,300"
overlay8_desc9 = "shader_prev,530,330,rect,120,30"
overlay8_desc8 = "shader_next,550,410,rect,100,30"
overlay8_desc10 = "overlay_next,400,460,rect,40,20"
overlay8_desc10_next_target = "portrait-analog"

overlay9_descs = 1
overlay9_desc0 = "overlay_next,0.5,0.90,radial,0.04375,0.0729166666667"
overlay9_desc0_next_target = "landscape-analog"
overlay9_desc0_overlay = show.png

Alright, I’ll give it a try and give feedback afterwards; thanks!

Alright, just got through testing it out. Tapping by the joystick did register an input, but for some reason, only when tapping down or right. The others did nothing. Also tapping down did register as a down movement, but tapping right kept registering as a jump (straight up).

I went ahead and reloaded the original cfg to give it another test. Reaffirmed my conclusion that arcade fighters are not at all playable with the virtual analog sticks in RA. Though I did fire up an arcade shooter, which was blazing star (neogeo); the game was totally playable with no real issues with the virtual analog stick. I could see the current analog sticks in RA working well with other arcade shooters as well (as long as your thumb remains glued to the screen), just not for fighters. Also with the original cfg, I did notice that it does allow you to just tap, though you have to be even closer to the joystick and be more precise with your taps (which would be even harder with fast input type games and fighters).

What are your thoughts on retropad possibly getting a 3rd option (in regards to the 4 way dpad and analog stick) to choose from? Such as a circular (or even square) dpad that featured 8-way inputs? Perhaps this in a circle or square overlay? The overlay would have to be big enough as so a person wouldn’t be accidentally pressing the other inputs during their motions, and be spacious enough where people can be precise with it. This may perhaps be the best option if the virtual arcade sticks that mobile games offer cannot be replicated within RA.

Speaking of these mobile games, I happen to have all of them that I mentioned. Is there anything in the game’s application folder that could be pulled out and looked at (in regards to the virtual sticks being used) that could help?

Btw I’m on an iPhone 5s and these recent tests I’ve been doing in RA are with the FBA core while my phone is in the landscape position.

The one I posted was mostly just proof-of-concept and would have to be tweaked, probably to scoot the hitboxes farther to the edges of the analog circle. You can see exactly where they lie just by switching back to the digital landscape overlay, as I just copy/pasted them directly from there.

The diagram you showed is basically what the regular dpad is laid out like, though RetroArch’s overlays are limited to just rectangular or round/oval hitboxes.

Ah, I see, makes sense then. Guess I’ll be looking forward to the final version then. I noticed when I was downloading all the retropad files that each overlay input is it’s own png; not sure if this was asked before, but would it ever be possible to individually move each onscreen button freely on the screen, or will button placement be strictly tied to how it’s set in the cfg?

An overlay configurator doesn’t really belong in RetroArch itself, but it would be pretty easy to make a separate utility for it. I believe someone had talked about working on such a thing in the past but it never materialized.

Have you tried OMGsus’ ‘flat’ overlays? https://github.com/libretro/common-over … epads/flat

He created them by drawing the buttons and then he made a utility that recorded touch events and asked a bunch of people to press the buttons. He then placed the hitboxes according to averages of where people actually touched when they were trying to touch the buttons. It’s an ingenious strategy, since where touch events actually land may not be where people are aiming.

I haven’t, I’ll def give it a look and try though.

There is already a four and six button controller overlay for arcade. It’s called “arcade”! I recoded the button assignment since it was out of order for arcade games and because it switched layouts in portrait view for no apparent reason. You can download it at https://archive.org/download/RetroArch-arcade-controller-overlay/arcade%20controller%20overlay.zip