SDL joystick + Playstation DualShock

18 08 2007

Pues me encontraba yo haciendo una chorradita con la libreria SDL que va genial para hacer juegos con gráficos en 2D o en 3D si le añadimos OpenGL y quería usar un mando de la play. Tengo un adaptador de Play a USB que se llama Super Dual Box Pro, fabricado por MayFlash con el que lo tengo conectado al PC y que podéis conseguir en cualquier tienda de videojuegos. El caso es que con el último driver para vista (el de agosto del 2007 que por lo visto salió 3 días antes de que me diese por probarlo) no detecta la cruceta y la segunda palanca la mapea como una cosa rara así que para usarlo recomiendo el driver anterior que aunque no pone que soporte vista, a mi no me hace falta (http://www.mayflash.com/Download/Super5%20pro.EXE).

Bueno, usando las funciones de la SDL para obtener información del joystick y con el driver más o menos bien configurado, el perfil del DualShock es el siguiente:

5 Axes (5 ejes aunque las dos setas solo deberían ser 4)
1 Hat (la cruceta)
0 Balls (ni idea)
16 Buttons (16 botones, que con el código que hay al final corresponde con los siguientes valores)

triángulo = 0
O = 1
X = 2
Cuadrado = 3
L2 = 4
R2 = 5
L1 = 6
L2 = 7
Start = 8
Select = 9
L3 = 10
R3 = 11
Pad Arriba = 12
Pad Derecha  = 13
Pad Abajo = 14
Pad Izquierda = 15

Estas correspondencias se pueden cambiar desde la pantalla de configuración del driver.

Código que muestra los botones:

while(!done){     
    while(SDL_PollEvent(&ev)){
        if(ev.type == SDL_JOYBUTTONDOWN){
            cout << (int)ev.jbutton.button << endl;
        }
        if(ev.type == SDL_KEYDOWN){
            done=true;
        }
    }
}
           

Technorati Tags:

Powered by ScribeFire.

Entradas relacionadas

    Wishlist
    Me cago en… Carrefour y Carrefouronline

Actions

Informations

Se aprecian los comentarios

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">