Saturday, October 3, 2020

Building a Cheapo Hitbox-style Stickless Arcade Stick

I've been playing Street Fighter games for nearly 30 yrs (at the time of this writing), so you'd think even complex maneuvers would be long since committed to muscle memory. Instead, I frequently biff even basic moves and I find my piss-poor execution to be a significant impediment to my proficiency.

So, I decided to try out a "Hitbox"-style interface. Also known as a "stickless arcade stick", among other snappy names (for brevity, I'm just going to call them the generic "hitbox"), it's basically just a normal arcade control panel but instead of using the familiar joystick for directional inputs, it uses 4 buttons, one for each cardinal direction. These interfaces became popular a few years ago, as they make certain types of tricky inputs (for example, advanced movement tricks from many games, including "instant air-dashing", so-called "Korean backdashing" and more) essentially trivial to perform. As a Zangief-main, I was intrigued by the possibilities for consistent SPDs, as well as the opportunity to break a lot of bad joystick-handling habits I've developed over the years.

My first hitbox was just thrown together using a spare control panel I was experimenting with and some extra 30mm Sanwa OBSF buttons I had lying around. It works well enough, but most hitbox practitioners prefer using all 24mm buttons with one 30mm button in the middle as the 'jump' button that can be pressed with either thumb. These buttons are usually about $4+ per, and they're usually paired with a Brook Universal control board, and some people will also add an LED controller board, bringing the grand total to somewhere between $150 and $300.

I didn't feel like paying that much and decided to go cheap while I'm still learning, since I may give up on it at some point anyway (that is, I think it definitely helps with my execution, but at the cost of playing intuitively; it's just feels less natural, spontaneous and fun so far).

I went with a board from the "zero delay" family (since proven to be a misnomer; they add up to about a frame of latency in some cases) by SJ@JX that includes dedicated LED power lines and pre-wired .110 quick-disconnects for just under $20 and some cheap 24mm buttons with integrated LEDs that come in 5 colors (fun!).

Buttons first: similar to the expensive buttons from Gamerfinger, the EG Starts buttons have a mechanical keyboard switch, but this time with an Alps-style switch rather than Cherry-style. Contrary to comments on Amazon, they are not clicky and are instead linear and non-tactile. The comments are correct, though, that they have a much longer travel than Sanwa 24mm buttons, the actuation weight is heavier and the actuation point seems a bit farther down (I don't consider this a bad thing, necessarily, as Sanwas are annoyingly sensitive, in my opinion).

 
The integrated LEDs are not simply white LEDs that are tinted by the colored plastic housing as I had suspected. Instead they shine brightly in the actual color. The only thing to be aware of with them is that the LED +/- posts are connected directly to the 2 large solder pads (visible just above the switch in the image) and can easily be jarred loose by too much force. If this happens, there's not a whole lot that can be done about it, as far as I can tell, because when I tried to reflow the solder, it just sucked up off the pad entirely and wouldn't stick back down to the board, no matter how much flux I used. So just be careful and use a light touch.

Now for the board: it comes with a bunch of pre-terminated molex jumpers with Asian-style button-compatible .110 quick disconnects, though there's another model available for the same price that comes with .187 quick-disconnects for use with American-style buttons/switches. It has 3 different modes of operation: the default PC/PS3 mode, an "Android" mode and an xinput/"360 PC" mode (it specifically does not work with Xbox 360). Only the first mode would map in RetroArch, so that's what I stuck with.

The board comes with some sort of SOCD (simultaneous opposing cardinal directions) cleaning, but I get the feeling it may be inadvertent, as it doesn't really make any sense. Left+right=left and up+down=down. So, you could still do a few SOCD shenanigans, like instant-return-to-charge sonic booms from the P2 side, but nothing crazy and game-breaking. (for the record, ideal SOCD-cleaning is left+right=neutral and up+down=up, IIRC)

Unfortunately, the jumper/wires it comes with are wired in such a way that it is impossible to make the aforementioned buttons light up when you press them. Instead, they are lit all the time, which is fine if that's what you're going for, but if you want them to light on press, you have to cut the lines and splice the black lines with the yellow and vice versa.

 Once that's done, the wires should be connected like this:


In my case, I wanted all of the buttons to light up, but the board is only designed to light up the non-directional buttons, and if you have a light-up joystick, there's a separate power line and 5-pin Sanwa-style joystick interface that you can connect. It does have additional, separate directional input jumper jacks, but they are 2-pin (i.e., just signal and ground; missing the power pin entirely), while all of the jumper wires they provided have the 3-pin molex, so they won't even fit the directional jumper jack. My solution was to use male-to-female breadboard jumper wires to steal power from unused buttons (L3 and R3 in my case) and run a pair of jumper wires from each directional jack. The pins from my breadboard wires fit nicely into the molex holes. I did have to hot-glue them into place, though, to keep them from just falling out if you look at them funny.

That wasn't the end of my problems, though, unfortunately.

Most hitbox layouts cram the 24mm buttons very closely together, I guess to minimize how far your fingers need to move or something? I dunno. But in any event, the vinyl nuts that come with the threaded EG Starts buttons are much too large for the distance between the buttons, so I had to get creative with how I torqued them down.

After all that, everything seems to be working well. I wouldn't really recommend going this route as a serious thing, but if you just want to have some fun and save some money and don't mind getting your hands dirty, it seems to do the trick:

Update (11/17/2020): after using it for a while, the Zero-Delay board is a real problem. The SOCD cleaning is strange and the variable latency on inputs (testing puts it anywhere between just under a frame to more than 2 frames) causes a lot of inconsistency in execution. So, I switched to an Arduino Pro Micro running the fantastic DaemonBite program, which was a night-and-day difference, even for me (and I'm not a stickler for latency stuff).
 
The boards cost between $5 and $10 depending on how many you buy, so it's still a very low-cost option vs a Brook board. I was also able to pull enough juice for the LEDs from the Arduino's 5v line, so it was just a matter of duping that line out in parallel to the voltage input lines of the existing cables. I used the same breadboard-jumper-to-molex trick as before.

4 comments:

Unknown said...

I'm not sure if this is active anymore, but I'm going down a similar path. Anyways, did you have to do any fiddling with Daemonbite in order to get it to recognize digital directions? Looks to me like it's meant for stick. It might be user error but I'm unsure why I'm not getting it to work wired as shown on the github page. Any advice is appreciated!

Hunter K. said...

Hey man, yeah, I'm still around :)

Hmm, no, I didn't have to do anything other than load the firmware onto the board and then wire up the buttons according to this image: https://raw.githubusercontent.com/MickGyver/DaemonBite-Arcade-Encoder/master/images/daemonbite-arcade-encoder-wiring.png

The directions should show up as arrow keys, IIRC.

Lorenzo said...

But the Arduino encoder still gets connected over USB, are there real advantages over a native USB encoder?

Hunter K. said...

@Lorenzo
I'm not sure I understand the question. You mean vs a "zero delay" board? If so, it's the boards' internal latency that's such a problem, not anything related to USB.

Analytics Tracking Footer