Issue with buttons 1, 2 and 4 in the Picade

I built my (second) Picade last week and I’ve got some issues with some of the buttons. I’ve just flashed the PCB with the latest rom but the problem persists.

I’m using Retropie, but I exit to the terminal to try this so it doesn’t seem software related.

So the thing is: I exit Emulation Station to the terminal. I have my panel open for easy access to the PCB. If I press one of the mentioned buttons (1, 2 and 4), the TX led does light up as does with any other button. But for those three, I get no key press in the terminal.

This is to be expected.
If you look at the source code for the Picade sketch (https://github.com/pimoroni/Picade-Sketch/blob/master/Picade/Picade.ino) you will see:
Button 1 is left_control
Button 2 is left_alt
Button 4 is left_shift
The other buttons:
Button 3 is ’ ’ (space)
Button 5 is 'z’
Button 6 is ‘x’

E.g. pressing buttons 4 and 5 together should give you ‘Z’ (capital Z) in terminal
and pressing buttons 1 and 6 together should give you ctrl-x (control-x)

1 Like

Ooh! I feel soooo silly I didn’t even think about control/alt/shift keys!

I guess I’ll just need to configure Retropie/emulators to use those.

Thank you so much! :)

I have absolutely no idea why control, shift and alt were picked for those button bindings. I’m sure there was a reason for it at the time, but they seem illogical. In retrospect I wish I’d gone with my gut and used “asd” and “zxc” for face buttons.

RetroPie doesn’t seem to care, though, so it seems okay!

Mame… It’s default three buttons are L-CTRL, L-SHIFT and Space. See here for details - ULTIMARC

1 Like

Ah, it all makes sense now! I’ve never really used MAME- I tend toward my childhood comfort zone of Megadrive, SNES and C64. I clearly need to get up to speed- beyond the Picade PCB and its firmware I really know precious little.

I have Picade guts strewn all over my floor to get it working as a fight-stick, yet I’m terrible at 2D fighting games!

I wouldn’t worry. Mame is awesome in what it does, but its so old that how it does it makes little / no sence nowadays. It probably did in the days of SVGA and DOS. Hitting fire five times in a row on Windows brings up the sticky keys prompt! So I just remap it all anyway.

Multiple mappings selected by a button combo or a switch would be amazing… I think some of the keyboard encoders you can buy do that, one of the buttons (usually coin) acts like a shift. you just get a coin if you hit it on its own, but hit it with something else depressed and you can pick another key mapping…

I have been thinking about this and other solutions for multiple on-the-fly key bindings. I was thinking of using the Volume Up/Down buttons as special keys since under normal circumstances they would never be pressed during gameplay. However it’s possible one of the bindings could set up and use the volume buttons as regular buttons which may be useful in some instances.

On my cards after messing with PS3, USB HID joystick is trying to make the Picade dynamically re-programmable over serial using a config utility, with the ability to save configurations to the EEPROM. This, combined with a button combo, would cover off all but the most obscure of use cases/config desires.

1 Like

Ohhh shiny. That would be really useful. I’ve been playing with RetroArch on Windows today but that will just normalise most of my standard controls, however, it would allow me to fire a script to switch the mapping when I start a core.

The use case here is that Spectrums have three common control types (QAOP, Kempston, Sinclair) but the start button or joystick select is a mess but it is usually some combination of S, 1, 5, space or fire. So I’d have a ‘special’ set of mappings for the most common combinations.

So if you do a nice config util, can you make sure you can fire it from a command line?

Sure! Is there a hook in RetroPie/RetroArch that let’s you run scripts when a particular core is launched, or were you thinking of polling the process list?

I was going to use Emulation Station on top and make a ‘system’ for each of my mappings. So I have Kempston Spectrum and change the config to launch retroarch into a script that would call the mapping util and then the right retroarch core. If that makes sense.

Not sure I can make retroarch do it directly - but you can run retroarch from the command line so it would work with any front end.