Analog Gamepads




I bought this gamepad from Wal-Mart, it's a "Gemini Game Elements GGE908" and it sucks so don't buy one.


However, before I take it back, I thought I should determine if it sucks worse than anything else I'm likely to find. Thus I query the world's experience with game controllers via Google, and when that turns up nothing, I post an off-topic post to a random newsgroup. (So little of everything else in this newsgroup has to do with assembly, so whatever...)

The problem I have with it is its analog controls. The don't work correctly at all, at least with respect to how I believe they should work.

My previous experience is with connecting two cheap 2-button joysticks to a normal sound-card joystick port (via a special cable that allows you to do this) and using that to play Descent. Using that method I then became so good at Descent that I had to restrict myself to using only the flare as a weapon, otherwise my friends wouldn't play against me. Using this gamepad, I can't play for ***.

To investigate the problem, I used a program that displays a little dot on the screen showing where the joystick is pointed at, something like this:

  +----------+----------+ +127
  |          |          |
  |          |          |
  |          |          |
  |          |          |
  +----------+----------+ 0
  |          |          |
  |          |          |
  |          |          |
  |          |          |
  +----------+----------+ -127
-127         0        +127

There're a couple of problems with this gamepad.

First, you've got the stick, which in ascii art looks like this:

       /XXXXXXX\
       XXXXXXXXX
           X
         _.X._
       /XXXXXXX\
------/XXXXXXXXX\------

This thing can only be tilted about 40 degrees in each direction. I would expect that -40 degrees will report -127, and +40 degrees will report +127.

Here's a graph of what I actually get:


|+127 | **** | ** | * | ** | ** | * | ** --------------*********-------------- -40 ** | +40 * | ** | ** | * | ** | **** |-127

Basically, there's a huge area in the center where the gamepad reports no movement at all, and a similar area at the extreme positions where no movement is reported.

This has the effect that I try to turn a little in Descent by moving the control about 10 degrees, then I see very little movement on the screen, so I move it another 10 degrees expecting to get two times very little movement, and instead get half of full speed. Very annoying.

Ordinary PC joysticks don't do this, with them there is a straight diagonal line from (-40, -127) to (40, 127) which is how it should be.

The other problem is that once the control is moving in one direction, it has to move about 15 degrees back in the other direction before any movement in that direction is reported.

I set up the program to leave points drawn where the stick has been, and then tried to draw a box in the upper-right corner. This is what I ended up with:

  +----------+----------+ +127
  |          |          |
  |          **    *    |
  |          |     *    |
  |          *     *    |
  +----------*******----+ 0
  |          |          |
  |          |          |
  |          |          |
  |          |          |
  +----------+----------+ -127
-127         0        +127

Basically, starting at the origin and going right, it draws a dot at every point going to the right. Then it does the same going up. Then when I begin going left, it ignores the left movement until I've moved about 20% of the range back to the left, at which point the dot jumps over to where it should be and begins moving correctly again. It does the same thing going down.

It basically does that wherever you move the dot, whichever direction the axis last moved in, it has to move 20% of the way back in the other direction before movements in that direction are reported.

This makes movement a real pain in the ass. Say I want to turn to the right at a certain speed, and so I move the stick, but decide that I went just a little too far. I can't just move it a little back to center, because that won't register, I have to move it much further than that so that it registers, and then begin moving it to the right again, but then that doesn't register until it's gone it's 15 degrees, and so it skips over where I want to be again, and so then I figure out that I've got to just move it way over to the left, then slowly back to the right, and make damn sure not to pass the point where I want it to be at or else I get to do it all over again, and by then I'm too pissed off to want to play a game.

Anyway, I can't find a comment anywhere on the internet about this sort of problem, which means one of a few possible things:

1. All game pads with analog controls work like this, and in fact, everyone but me actually prefers it that way.

2. No one else can play games well with this thing either, but they don't have any idea what it's doing to make things so difficult, so they don't post about it on the internet.

3. When people buy a bad gamepad, they don't post about it on the internet, but instead they just throw it in the closet and go buy a new one.

So anyway, hopefully someone has experience with several gamepads and can tell me if this is usual gamepad behavior or if I've just bought a piece of ***.
.



Quantcast