Arcade controls advice
I'm starting to plan for building an actual cabinet!
One of the things I'm very happy with for the past year or so is that I feel I have a very reliable setup (knock on wood) which works with two (or more) PS3 Sixaxis controllers.
I've read different posts on setting up joysticks now, which make me a bit wary. I'd like to have two 8-button joysticks, and I'll probably make them Sanwa, with snap-in buttons, so that's fine - unless someone strongly objects to that. My main problem, however, is compatibility / getting them to work on the emulators.
I imagine the Libretro emulators will work well, but what about DosBox, Daphne and Reicast for instance? Any particular do-s and don't-s?
The two main options I've been considering are GPIO (via a Control Block, for instance), or via those USB adaptors (Zero Delay, I think). I also read of the IPAC.
Any feedback, experience or recommendation would be more than welcome.
@pjft I have set up a few arcade builds now and there is nothing to be afraid of! I have used the easyget zero delay usb encoders and they work extremely well with most all of the retroarch emulators. The only issue i had with them was trying to use @meleu's joystick selector, on a few emulators like FBA2012 the first player joystick would control both first and second controller. Easy solution to fix that was use FBA romset, but eventually i just rewired the joysticks so that the encoder that was recognized first was attached to the first player joystick.
I don't have any experience with DosBox or Daphne, however the easyget zero delay are recognized as dragonrise USB controllers and they program exactly the same as my ps4 controllers. I followed the same steps and they work exactly the same, even for N64 and Reicast. My only issue is that I have a 4 player build and my controllers are recognized as js0, js1, js2, js3 and no matter what I do to the emu.cfg file reicast will always make js1 the first player and it ignores js0. If you are only doing 2 joysticks this should not be an issue if you add
The other issue you will have is the restrictor plate dilemma for 4 way games. I need to look into setting up xboxdrv for my first player joystick for 4-way arcade games only. I have heard this is not an easy task, but I plan to look into it soon. The xboxdrv allows you to convert your 8-way joystick to a 4-way without using a restrictor plate.
If you end up using the zero delays i can offer you a bunch of help as i have spent a lot of time with them. They are slick and easy and I highly recommend them.
I would also recommend that you get a 7-port usb hub from pi-hut for your build and get a usb extension plug in like this: USB Dash Mount
You can then plug in additional controllers, or a keyboard without needing to access your pi. Unfortunately i cant get the roms to read when plugged into the hub, so my rom usb is plugged dirrectly into the pi, then my joysticks are plugged into the hub along with the usb dash mount. Let me know when you start and if you have any questions. Here is my latest TMNT build!
@tmntturtlguy Oh, wow - thanks for the detailed description and endorsement! I have placed an order for two Zero-Delay encoders then. They look like the right approach.
Also, thanks for sharing pictures of your cabinet - it looks great, and actually I am going to take some ideas from it! I love the USB plug - I'm ordering those as we speak.
As for the "Mode" and "Action" buttons, what are they?
Also, I was wondering if you would have ever used the Auto-fire / Turbo modes from the Zero Delay boards, and if so how do they work for you. Are "Turbo" and "Auto" the same?
I reached out to you over GitHub as I was going to take you up on the kind offer you had made for the artwork, should you still be up for it and be available as well. Even if you aren't, it's certainly not a problem, by all means :)
@pjft i never go notification of your github message, but i logged in and there it was! I just responded and am excited for your build.
You can't go wrong with the encoders. I have a few tricks up my sleeves for some issues so we can talk more when you start your build. The panel I have in the pictures above i have 2 different button types and a different brand arcade stick - retroarch doesn't like the mis-matched "brands" so I had to manually create the auto joystick file by just renaming my PS4 file and changing the button numbers using notepad++...it is really easy to do actually. If you have all similar buttons it should auto create as normal.
I love the usb plug - so handy when i need to attach different controllers or keyboard. I might actually drill a hole into my full size cabinet to add one to that as well!
On this build I decided to do things differently, so right now "mode" is my hot button instead of select. I didn't know what verbiage to use, so I used mode as I have the option to hook this button up to the zero delay as you have suggested to make it the button to change turbo and auto. "action" is another one I didn't know what to call it. Based on my current setup I should have called it exit. Again this is a multipurpose button. Right now it is used for exiting with the Mode button, I also have it set as a menu button, but I have the flexibility to set my hot button to the select button and my exit button to start, then i can use the mode and functions buttons for volume controls, or for Auto or turbo buttons. They are basically flexible buttons.
I have not used the auto and turbo modes on the zero delay yet. The reason i have not is because you also need a clear button so you need 1 dedicated button to activate "turbo" and you need another to deactivate it. I may try this in the future, but haven't done so yet.
Capeman last edited by Capeman
I would suggest something completely opposite, haha. I swear by using iPac style keyboard encoders for arcade controls.
There's nothing more stable than keyboard controls, and they are easy, if not tedious, to set up. I just posted a few minutes ago in @spruce_m00se's build thread on how i setup mine.
There are lots of benefits to keyboard controls. Players 1 and 2 are hard coded to specific keys, so there is no worry about controller order or knowing which button will activate which key. Any emulator that is finicky with gamepads usually work well with keyboards. Even more, these encoders have a dedicated button for ESC, so exiting an emulator can be set to 1 button (no combination) and will be universal no matter what emulator you use - this also applies to any HOTKEY activated button, on a keyboard, if you disable the hotkey button, all hotkey functions can be activated by one key instead of combination (this is not possible with gamepads). Most if not all encoders are set to mame default layout, so if you setup your retroarch.cfg files with these in mind, you can copy the config files to other builds and the controls will be maintained. The benefits are worth the higher price and slighly tedious setup. But once its setup, it's ridiculously stable.
As for @TMNTturtlguy's suggestion on using software to control 4 vs 8way restrictor switching, you can also use an octagonal restrictor instead since it gives you a stop point for all 8 directions, versus a normal fighting style 8way which doesnt have a gap for UDLR, just the diagonals. Makes games like pacman playable, and since it's just a quick $1 hardware upgrade to a sanwa joystick, it's not a bank breaker if you dont like it.
@capeman I don't think @pjft can go wrong either way. With the zero delays they work just like the ps3 controllers he is already using and it is really slick as long as you wire all your joysticks the same. Then setup is a breeze as you set up one joystick and all 4 are set the same. With the zero delays you can also cop your config files from one cabinet to another. so that is equal as well. You do have good points as well though. I think it is personal preference and what you are used to working with.
regarding the restrictor plate. The 8-way still does not stop you from hitting a diagnol when trying to dodge those pesky ghosts or get mario off of the ladder before the barrel gets you. If you hit the diagnol you get a dead press and stall out. From what others have shared is that using the xboxdrv the 4way works great and you don't get the dead presses.
Capeman last edited by
Definitely agree, personal preference trumps all.
One idea i used on my atari console build was to wire in an old pcb from a keyboard to operate the buttons on the console to use hotkey buttons and disable the hotkey button from the controller. This can be retrofitted into an arcade also if he wants to use the benefit of one button hotkey function presses. Have a junked keyboard in there for save/load state, escape exit emulator, and such, while using joystick encoders for the actual controls. That combo would be super easy to add to his current setup. Just a quick edit in retroarch.cfg.
The dead press affects Ghouls and Ghosts as well, i hate that - I mostly play DK and any version of GnG on console for those reasons alone. But those games are pretty few.
@capeman We are high jacking his thread! I am going to try to use xboxdrv on just the selected arcade games that need the 4-way restriction and no other games. I heard it is terrible to set up, but once it works it is great. If and when i get it working i will create some instructions on how to do it.
Capeman last edited by Capeman
I'd like to see that tutorial!
Also i noticed your images above, i love what you did with the glowing buttons and the fake insert coin buttons (groovygamegear?). I was thinking about doing something like that later on down the line in my build, but for now i'm just sticking to all white controls.
Well, I can only hope to put together as nice a cabinet as any of yours here so far :)
Apologies for my brief answers as I've been under a lot of work these past few days. I saw the note on the square vs octagonal one - good call. Ordering one now.
I suppose you're right on the Turbo and Auto ones - those were my concerns. I think that it'd be useful for fast-paced shoot'em-ups, rather than just constantly hammering the buttons, but then again that's part of the experience... Still undecided.
I'm definitely keeping the USB plugs there, as well as a Mode button which is needed for Daphne/DosBox according to my research (will need to actually check at the time). Do you think it's possible to have a single button mapped to both Zero Delay encoders - so, shared Mode, Turbo and Clear buttons? In concept, could I just get two wires, connect them to the same button, and then lead them to the two different Zero Delays?
Just a thought.
@capeman that is really nice looking! You could keep the white buttons and have the clear housing. My buttons are clear housings with black pads and green LED in them. When the machine is off they look like standard black buttons.
The coin buttons are functioning buttons, they are obviously set to coin!
@pjft I think if you pig tail the wires it should work to use one button as the "function" button for auto and then you press that and whatever button you want to set as auto. I think you can actually set this up in retroarch or with the xboxdrv as well, I haven't tried yet, but I think some emulators let you set them up on a per game basis. Some games have dipswitch settings to enable turbo and auto functions as well.
Capeman last edited by
@pjft Turbo is for the weak! Real men hammer the buttons!
@pjft Yes sir! The red coin buttons are real push buttons (they don't take coin, they are push buttons). I have this on both my arcade machines and love it. I have my coin button set to L3 which would be the thumb push button on the ps4 controller, i assume your ps3 controller has a button when you push straight down on the joysticks?
All the coin button (L3) does is operate the coin button for arcade, neo geo, fba, mame games. I can also set them to load or save games or any other function combined with my "Mode" button which is my hot key. It is a pretty fun feature when used as a single button, and an added button for flexibility with the hot key.
@tmntturtlguy I imagine you edited RetroArch.cfg for that not to be mapped to the select button, then.
UDb23 last edited by
After reading and researching quite a lot , my choice for my first custom control panel was:
Suzo Happ Super Joysticks , IL concave buttons, cherry microswitches and Ipac-2.
With that joystick you can switch it from 8 to 4 way by "inverting" a dedicated part at the bottom of the stick (no need for restrictor).
Really happy with that configuration!
@pjft yes, you are correct.
@udb23 I assume you need to access the bottom underside of your control panel to switch the plate? I can do that as well, but it is a hassle and not user friendly, especially when friends are over, or kids are playing.
UDb23 last edited by
bottom underside of your control panel to switch the plate?
It's not really a plate but... yes that's the negative point of this approach... means you need to decide in advance if you wanna play 4 way games...
I also have a Qanba Stick that I modded (it's easy to do) to accept Sanwa JLF "diamond restrictor"; this has an option to go "4 way" mode by just turning a restrictor ring (still you need to access the bottom).
I tried octagonal restrictor before but still couldn't play 4 way games like Pac-Man and Pengo the way they are meant to be played (played the original arcade games as a kid).
Timing and precision on these games is absolutely key: one missed direction and you're done; one life lost.