Hi,
This post is about consistency between virtual joypads on touchscreens and their USB joypad counterparts for directional button presses, particularly for retro fighting games in gaming tournaments. The question I have is: Is there a way to program button priority for touchscreens when simultaneous directional buttons are pressed?
In the fighting game community, HitBoxes are tournament-legal “stickless” controllers that have buttons instead of a joystick for directions, like a keyboard with WASD controls. You’ll see them pop up in yearly fighting game major tournaments like EVO. HitBoxes allow for simultaneous opposing cardinal directions (SOCD), which was at first notoriously bad because unintended errors can happen, like for example pressing left+right together and glitching the game for TAS runs in Zelda on SNES emulators. SOCD cleaners were implemented for tournament gameplay to prevent unforeseen gaming events occurring outside of the developer’s scope of expectations.
Now for the majority of Street Fighter games, the standard I’ve always seen for SOCD cleaners are to have left+right = neutral (aka “neutral” cleaning), or sometimes left+right = forward, and up+down = up (aka “absolute priority” cleaning). Capcom stresses in Street Fighter V that improper SOCD cleaning is considered cheating and not tournament legal, and HitBox and CrossUp USB controllers for purchase will have some sort of SOCD cleaning already implemented. Long story short, SOCD cleaning is a recent and rather nuanced topic in tournament gameplay, and to prevent in-game cheating, only certain SOCD cleaning styles are tournament legal and officially sanctioned. To my surprise RetroArch devs already took care of everything for external controllers. Every USB controller I’ve ever owned, ever, works flawlessly wrt its intended SOCD cleaning when plugged into any device that runs RetroArch.
However, RetroArch’s virtual gamepad only follows the Smash Box SOCD cleaning method: the touchscreen always defaults to “neutral” SOCD cleaning no matter what. In a RetroArch gaming session, for example, using a USB HitBox controller behavior is as expected, following “absolute priority” SOCD cleaning when pressing up+down, yielding up. But for the corresponding HitBox touchscreen layout in RetroArch’s virtual gamepad overlay, there’s a contradiction when touching up+down: RetroArch always defaults to neutral, it should default to up, and I can’t change the virtual gamepad’s behavior to mimic my USB tournament standard controllers that I’ve plugged in.
tldr: All the nuances and styles in tournament-legal SOCD cleaners are handled brilliantly for RetroArch’s USB controllers, but only one “neutral” style of SOCD cleaning is implemented for RetroArch’s onscreen virtual gamepads. Therefore in fighting games, RetroArch’s virtual gamepads in the HitBox layout may behave differently compared to HitBox USB controllers when it comes to simultaneously pressed directional inputs. Is there a way to program button priority for touchscreens when simultaneous directional buttons are pressed?
As always, there’s just no beating this amazing program, and thank you for listening.