D-pad multikey press error?

I noticed problem with retroarch and the d-pad on the gameshell. Pushing down and left for example for diagonal movement dont work. This is very annying if you play a game like zelda. Is this hardware, firmware, drivers or a software issue?

Its both hardware and firmware

NOOOOOOOO!! That is so bad.

The keypad code is open, you could always think of something smart to emulate it but then how would retroarch see that?

I honestly haven’t noticed it at all… I’ve played quite a bit too. Hmm. Will look into it when I’m home

i have issues with the d-pad as well. except for me if i press the right or left button too hard it activates up or down. it’s super frustrating.

I just tried and I have no issues at all… 8 directional movement definitely works for me. Tried on Zelda LLtP

Same here as for @Meowi-Waui, playing Tetris or Rick Dangerous can be quite frustrating. However it seems not only to be a Soft/Hard problem. When my wife is playing Tetris she never ever got that issue. I play a few seconds and while pressing down to drop an element, chances are high the d-pad also gets a movement left or right triggered.

I have already uploaded a custom firmware to my GameShell keypad, at the moment only to have some more functionality with my keys. However I will most certainly also look into this issue here, if there is a possibility to improve it on software side.

The way to reproduce the issue is by holding up. Push hard up, keep the pressure and move your thumb to right. You never let go of the dpad just change the direction. I guess it up to different playing styles or hopefully different settings in retroarch.

I also have this issue (although intermittently) and it is really annoying whenever it happens. :unamused:

I was thinking it could just be the other directional buttons making slight contact (since the directional pad is just one piece), but it never occurred to me to be that it could be a firmware issue. Is that even possible?

I took a short look at the code and a theory came up. Not sure if it that way. The code clockworkpi_keypad.ino walks through each key in the order KEYPAD_UP, KEYPAD_LEFT, KEYPAD_DOWN, KEYPAD_RIGHT, KEYPAD_Y, KEYPAD_X, KEYPAD_A, KEYPAD_B, KEYPAD_START,
KEYPAD_MENU, KEYPAD_SELECT, KEYPAD_LIGHT1, KEYPAD_LIGHT2, KEYPAD_LIGHT4, KEYPAD_LIGHT5

Don´t have my gameshell with me but can any one try walking down and then move the pressure of the thumb to left? If this works maybe change the order dependent on what is in the old_keys (keyspressed).

If you move your thumb up to up&left the traditional gameboy registrer that as up&left but when you release up and go to left it does not registrer as left. This is not a problem playing with keyboards since you dont use your thumb all directions.

This problem could be solved by checking the latest d-pad key and release all others. The downside is that you can not move diagonally.

An other option is that if both up and left are pressed you simulate keypressed up, wait, left, wait, up, wait, left and so on.

This could be done with the code.

for the issue moving to the sides when going up or down you can put a tape on the center of the D-Pad to elevate it slightly so it doesnt make false contact with the left right

2 Likes

You can try this I made to debug @Lenux problem: https://github.com/Mihaylov93/Keypad/blob/master/clockworkpi_keypad.ino

It has a flag in the beginning that enables serial output so you can press keys and see what the serial sends.

Did some searches and looks like NES has a 8-directional D-pad.