Bueno, lo primero que tienes que saber, es que ese rango no tiene nada que ver con la pantalla, si no con el movimiento del stick.
El rango ese, es bastante excesivo, así que no estaría mal rebajarlo con un desplazamiento (>>8) y de esa forma tendrías un rango de -128 a 127, donde 0 sería la posición central.
Sin embargo, los sticks analógicos tienen fluctuaciones en los valores devueltos, por lo que es conveniente definir una zona muerta de valores, para evitar que el mando responda por si solo, o por una pulsación muy leve del stick.
Por ejemplo, si comparamos de está forma, podriamos usar de forma "digital" el mando:
// suponemos que X e Y contienen las lecturas del stick.
// suponemos que mover_X, mover_y son las coordenadas de pantalla
X>>=8;Y>>=8; // dividimos entre 256
if(X<-32) {/* Izquierda pulsada*/ mover_x--;if(mover_x<0) mover_x=0;}
if(X>=32) {/* Derecha pulsada*/ mover_x++;if(mover_x>479) mover_x=479;}
/* para Y hacer lo mismo, pero con sus valores (puede que tenga el eje invertido) */
Si el movimiento te parece suave, puedes hacer mover_x+=2; en vez de mover_x++; u otro valor
Y luego está el uso como analógico, que en este caso, también podrías definir un tope máximo de valores por si no llegan los valores al maximo.
X>>=11;Y>>=11; // dividimos entre 2048 (de esta forma limitamos también el rango mínimo)
/* Aqui tenemos un rango maximo de -16 a +15 para X e Y (para los maximos teoricos -32768 a 32767)*/
if(X<-8) X=-8; // esto limita el rango maximo
if(X>8) X=8; // esto limita el rango maximo
if(Y<-8) Y=-8; // esto limita el rango máximo
if(Y>8) Y=8; // esto limita el rango máximo
/* Aqui tenemos que X (o Y) ==0 si está en posición central y desde -8 a +8 nos marcaría el rango analógico (a mas valor por ejemplo, mas rápido aceleras o mas fuerte frenas) */
mover_x+=X;
if(mover_x<0) mover_x=0;
if(mover_x>479) mover_x=479;
/* para Y hacer lo mismo, pero con sus valores (puede que tenga el eje invertido) */