GP2X Gp2x Joystick Actual Facts


I think It's been said a number of times but I'll just state my own impression from the things I've read.


Basically the idea seems to be if you're pressing, let's say left, on the stick your character will go left. Press up and that is of course where he'll go. The problem with some sticks after a long period of use is that eventually pressing left and a little bit down accicentally means you could suddenly wander off at an angle to you death all the while screaming "I pushed LEFT, DAMMIT!"

With the 2X's redundancy built in, if you pressed left and accidentally rolled a little downward you would still go left because you need to make contact with both of the "down" and "left" of the diagonal rather than just a "little down" while pressing left in order for it to register as that direction and thus you character remains going left.
 
no_skill: Nothing has been cleared up. It has actually raised more questions!

davec: or you have case 3, where you only read sw1, sw2, sw3 etc and ignore sw1+sw2 etc. This is how I'm using it and it results in a nice smooth 8 way stick with no noticable deadzone.
 
Woogal:
Since you get signals from 2 at the same time converting that to 1 signal means that you would have to chose either one making some directions slightly more likely to press. The question is: how likely is it that you get one of the combined angles?
 
Digital Awakening posted on Oct 27 2005 at 12:08 PM said:
Woogal:
Since you get signals from 2 at the same time converting that to 1 signal means that you would have to chose either one making some directions slightly more likely to press. The question is: how likely is it that you get one of the combined angles?
Not sure I understand you. I just throw away any result that is 2 switches combined. I don't choose between anything and no direction is more likely to be pressed than any other.
 
Last edited by a moderator:
woogal posted on Oct 27 2005 at 11:45 AM said:
Digital Awakening posted on Oct 27 2005 at 12:08 PM said:
Woogal:
Since you get signals from 2 at the same time converting that to 1 signal means that you would have to chose either one making some directions slightly more likely to press. The question is: how likely is it that you get one of the combined angles?
Not sure I understand you. I just throw away any result that is 2 switches combined. I don't choose between anything and no direction is more likely to be pressed than any other.


So it just reads the first one pressed and disregards the second one until the first is no longer closed?

So say you hit sw1 and moved the stick slightly so now sw1+sw2 were closed, it would still read as sw1 (up) because that was closed first? If you then moved slightly again so that only sw2 was closed it would now read as a diagonal?

If you hit both at the exact same time (faster than the hardware polling the stick could determine first pressed) it would just pick a direction? So if you hit sw1 and sw2 at the same time what would it pick?
 
Last edited by a moderator:
What are the chances? Have you been practicing?

I suppose sod's law says that unless you code for it, someone's gonna do it :rolleyes:


And I do hope that all the joysticks are the same.
And not that some show 'half' directions, but some don't :(
 
DaveC posted on Oct 27 2005 at 03:09 PM said:
So say you hit sw1 and moved the stick slightly so now sw1+sw2 were closed, it would still read as sw1 (up) because that was closed first? If you then moved slightly again so that only sw2 was closed it would now read as a diagonal?

If you hit both at the exact same time (faster than the hardware polling the stick could determine first pressed) it would just pick a direction? So if you hit sw1 and sw2 at the same time what would it pick?
I'm just doing things in a very basic way - if both are pressed I ignore them. So if sw1 is pressed I read it. As the stick is slowly rotated round it hits both sw1 and sw2 so I ignore it. At this point the joystick is effectively centered. Move it slowly round a bit further and it hits sw2 only, so I read it again. There's no 'remembering what was pressed last' or 'both are hit lets pick one at random'. Now I know you're thinking that having a 'dead' stick is a bad idea when both sw1 and sw2 are hit, but from what I can see the switches are so close together that you don't really notice it. I could of course be wrong and the stick working like that doesn't really feel right, but at the moment I'm working with a bare board with a little pointy metal stick and have no idea how an actual stick will feel. All I know for certain is that playing duke with all 16 results active made me feel like I was playing on the zodiac with an analog stick, and duke was wobbling around like he was drunk. Switching to only reading 8 ways made it feel much better. The great thing about it is, different people will work with the stick in different ways for different apps - if something works very well using the method I'm currently playing with then it will use that method. If something else feels wrong, then the stick will be made to work differently.
 
Last edited by a moderator:
woogal posted on Oct 27 2005 at 06:19 PM said:
DaveC posted on Oct 27 2005 at 03:09 PM said:
So say you hit sw1 and moved the stick slightly so now sw1+sw2 were closed, it would still read as sw1 (up) because that was closed first?  If you then moved slightly again so that only sw2 was closed it would now read as a diagonal?

If you hit both at the exact same time (faster than the hardware polling the stick could determine first pressed)  it would just pick a direction?  So if you hit sw1 and sw2 at the same time what would it pick?
I'm just doing things in a very basic way - if both are pressed I ignore them. So if sw1 is pressed I read it. As the stick is slowly rotated round it hits both sw1 and sw2 so I ignore it. At this point the joystick is effectively centered. Move it slowly round a bit further and it hits sw2 only, so I read it again. There's no 'remembering what was pressed last' or 'both are hit lets pick one at random'. Now I know you're thinking that having a 'dead' stick is a bad idea when both sw1 and sw2 are hit, but from what I can see the switches are so close together that you don't really notice it. I could of course be wrong and the stick working like that doesn't really feel right, but at the moment I'm working with a bare board with a little pointy metal stick and have no idea how an actual stick will feel. All I know for certain is that playing duke with all 16 results active made me feel like I was playing on the zodiac with an analog stick, and duke was wobbling around like he was drunk. Switching to only reading 8 ways made it feel much better. The great thing about it is, different people will work with the stick in different ways for different apps - if something works very well using the method I'm currently playing with then it will use that method. If something else feels wrong, then the stick will be made to work differently.


I can see this being a very bad thing. Say for example you are playing something and want to move diagonally like a scrolling shooter for example. You are moving diagonal and you move the stick slightly so that both sw1+sw2 make contact by accident. Now your character/ship stops dead and you get clobbered by the incomming missile. Now you have to always be thinking "I better not slip slightly, keep it exactly on position" Now you are thinking more about the controls than the game, bad. I can see this being a big problem that wil ruin many games of this type.


I think this would be the best scheme:

case 1:

sw1 is up
sw1+sw2 is up
sw2 is up-right diagonal
sw2+sw3 is right.
sw3 is right
and so on...

This gives bias to the up, down, left, right while making diagonals slightly less likely to hit but there are no dead spots. This is like a normal 4-switch stick like a GP32, Nintendo gamepad etc where those directions are easier to hit than the diagonals.


With this stick it seems like we are getting all of the disadvantages of an analog without the benifits ;)
I really wish GPH didn't do something "cute" like this. I can see alot of problems.
 
Last edited by a moderator:
Woogal:
Ah, that's about how I originally thought it would work. The fact that the "mixed" directions make up a very limited part of the full circle may actually be a good thing because as you say it is usefull when doing 8 directions. And I think I agree with you on the dead zones. If they are small and the player knows that you are only using 8 directions he will be pushing the stick in the 8 directions so he won't notice the dead zones much. I think that if the final stick works like this then we will have some nice options for coding the stick controlls.
 
Jaw posted on Oct 26 2005 at 05:58 PM said:
all arcade joysticks even '8-way' ones only have 4 microswitches.

yeah, but the way those switches are activated are different than with the 2x's stick.

having 8 seperate switches seems a little too much, but at least the amount of sensitivity can be controlled in the software.

looks very interesting, can't wait for mine!
 
Last edited by a moderator:
Digital Awakening posted on Oct 27 2005 at 08:25 PM said:
Dave:
When playing a free movement game like a shoot'em up then you would take advantage of all 16 directions. It's really up to the programmer.


You can't if you are playing something emulated. If you are playing a shooter on a MD for example it was only programmed for 8 possible directions. Unless you re-programm the ROM it is impossible.
 
Last edited by a moderator:
DaveC posted on Oct 27 2005 at 09:27 PM said:
Digital Awakening posted on Oct 27 2005 at 08:25 PM said:
Dave:
When playing a free movement game like a shoot'em up then you would take advantage of all 16 directions. It's really up to the programmer.


You can't if you are playing something emulated. If you are playing a shooter on a MD for example it was only programmed for 8 possible directions. Unless you re-programm the ROM it is impossible.

For emulators that's something else.
 
Last edited by a moderator:
you can't reprogram those games. anyway, like squidge said, you can get the stick to behave like a traditional 8way pad through software, so it's all good.....but, can you hit something like Up & Right without hitting UpRight?
 
Hmm... I know that I don't post very often, but even at the risk of being accused of flogging a dead horse, I feel that DaveC may have touched upon something that might eventually turn out to be rather important.

I cannot help but wonder at the wisdom of introducing discrete switches for diagonal directions. Unless the physical triggering of pairs of switches can indeed also be used in combination to yield a total of 16 distinct directions, then what exactly does this new feature bring to the table apart from a heightened possibility of directional sensitivity issues? Although I have personally always been very pleased with the functionality of my own trusty GP32 BLU's joystick, I do recall reading about some people having difficulties being able to get their GP32s to reliably register certain directions, and this was using the traditional tried and tested 4-switch system that it implements. Is it not a possibility that the introduction of an 8-switch system in the GP2X whose usage will probably comprise mostly of applications that were originally intended to be controlled using only 4-switch controllers actually end up serving to create unnecessary additional complications?

One thing that concerns me is that this more elaborate system may turn out to be less tolerant to variations in build quality from one device to the next, which could result in a higher ratio of people dissatisfied with the functionality of their controller than there would have been if GPH has simply stuck with the original GP32 controller. Ah, well. I guess we'll have to wait and see...

Anyway until then, what do people think of this idea:

sw1 is up
sw1+sw2 is up
sw2 is up-right diagonal
sw2+sw3 is up-right diagonal
sw3 is right
sw3+sw4 is right
and so on...

Instead of ignoring pairs of closed switches or granting priority to specific directions, why not simply allocate 2 of the 16 permutations to each 8-way direction, thereby preserving equal priority to each of the 8 directions? This may result in a slightly staggered arrangement, but it may turn out to be hardly noticeable and there wouldn't be any dead zones either :)
 
Here are some visual examples.

joystick.png


Case 1 would be good for any native games but also games that used analog or trakballs like Centipede, Missile command, or for emulating mouse movement like in ST/Amiga

Case 2 would be the ideal one for use in emulators and any game requiring traditional 8-way control. Typical 4-switch, 8-way controllers always were easier to hit the horiz/vertical than diagonals. This is because it is harder to keep 2 switches closed simultaneously than one. This would include, Atari-2600 type joystick, Nintendo cross pads, PSX pads, MD, SNES etc.

Case 3 would be useful for those isometric oriented games like Desert strike, Zaxxon etc that are mostly diagonal but still use some vertical/horizontal.

Case 4 would be useful if you wan't to get pissed that your character stopped moving and you got killed. You just have to ask yourself, do you feel lucky? Hit the dead zone at the wrong time and well...you're dead. This is for those that think games are too easy and want an extra challenge :p

Case 5 Horiz/vert 4-way. Useful for 4-way games such as Pac-man Thick purple lines separate directions for visualization. Anything from sw8 to sw1+sw2 would be "UP" and so on. Must be slightly rotated to make all zones even in size. I picked the rotation this way as it folows the arc your thumb would make while playing.

Case 6 Diag 4-way. Useful for 4-way diagonal only games such as Q*Bert. Thick purple lines separate directions for visualization. Must be slightly rotated to make all zones even in size.

Case 7 (not shown) would be like "Axe_Murderer" said but results in slight rotation as well. would take some getting used to as far as the rotation.

Developers should think about these different configs, and include in the menu option screen a choice between a couple. MAME for example would be able to use case 1, 2, 3, 5, 6. Megadrive and most other emus would probably only need case 2 or 7. Atari-ST would use case 1 for mouse and then switch to case 2 or 7 when using joystick mode.
 
DaveC posted on Oct 28 2005 at 07:05 AM said:
Case 4 would be useful if you wan't to get pissed that your character stopped moving and you got killed.
I think it would be very good for text entry.

DaveC said:
Developers should think about these different configs, and include in the menu option screen a choice between a couple.
Someone should do a library for this, so that every developer could quickly integrate it with his project.

I'm thinking about really simple api like this:
Code:
  int transcode_input(int input_register_value); // returns "new input register value"
  int select_input_method(int method); // returns error code
Using given api would require only minimal changes to existing and future code.
 
Last edited by a moderator:
woogal posted on Oct 27 2005 at 06:19 PM said:
I'm just doing things in a very basic way - if both are pressed I ignore them. So if sw1 is pressed I read it. As the stick is slowly rotated round it hits both sw1 and sw2 so I ignore it. At this point the joystick is effectively centered. Move it slowly round a bit further and it hits sw2 only, so I read it again. There's no 'remembering what was pressed last' or 'both are hit lets pick one at random'. Now I know you're thinking that having a 'dead' stick is a bad idea when both sw1 and sw2 are hit, but from what I can see the switches are so close together that you don't really notice it. I could of course be wrong and the stick working like that doesn't really feel right, but at the moment I'm working with a bare board with a little pointy metal stick and have no idea how an actual stick will feel. All I know for certain is that playing duke with all 16 results active made me feel like I was playing on the zodiac with an analog stick, and duke was wobbling around like he was drunk. Switching to only reading 8 ways made it feel much better. The great thing about it is, different people will work with the stick in different ways for different apps - if something works very well using the method I'm currently playing with then it will use that method. If something else feels wrong, then the stick will be made to work differently.

What do you think of my new diagram of the different joystick options? Do you think you could try a few of the other options to see how they work? I think "case 2" would be a better solution than having dead zones, what do you think? Have you tried any of these configs yet?
 
Last edited by a moderator:
One further way would be to remember which of the "primary" 8 directions you have selected, and if you select one of the 8 "in between" directions next to that, you use the primary you used to have selected. This basically means you have a bias for the primary direction you currently have selected, this should make control more stable.
 
Back
Top