PDA

Ver la versión completa : [Programación] (Caanoo) No me aclaro con el joystick



snork3ls
10/06/2011, 22:47
Hola, ya se que pregunte algo parecido pero es que: DEFINITIVAMENTE NO ME ACLARO!!!

A ver. Estoy terminando un programa (como podeis ver en mi firma) hecho con SDL. Esta todo hecho menos la parte que tiene que leer el joystick y las teclas de la consola (no puedo ni salir del programa :miedo:)

Tenia ya escrito este codigo pero se me olvido grabarlo antes de mi ultimo format.

En fin. A lo que vamos. Puedo leer el raton (pantalla) pero no las teclas. He hecho esto:

Primero meto el enum con los codigos de tecla

enum
{
BTN_A = 0, // A / 1
BTN_X = 1, // X / 2
BTN_B = 2, // B / 3
BTN_Y = 3, // Y / 4
BTN_L = 4, // L / 5, L1
BTN_R = 5, // R / 6, L2
BTN_HOME = 6, // Home / 7, R1
BTN_HOLD = 7, // Hold / 8, R2
BTN_HELP1 = 8, // Help I / Select
BTN_HELP2 = 9, // Help II / Start
BTN_TACT = 10, // Tact / L Thumb Stick
BTN_UP = 11,
BTN_DOWN = 12,
BTN_LEFT = 13,
BTN_RIGHT = 14,
};

Ahora en el main hago esto para leer las entradas de la consola:

done = 0;
while (!done)
{
SDL_Event event;

/* Check for events */
while (SDL_PollEvent (&event))
{
switch (event.type)
{
case SDL_MOUSEMOTION:
//hacer cosas...
break;
//ahora lo mismo con el mousebutton...
//ahora la parte del joystick

case SDL_JOYBUTTONDOWN:


switch(event.jbutton.button){
case BTN_HOME:done=1;break;
case BTN_L:if (modo>0) {modo--;}break;
case BTN_R:if (modo<4) {modo++;}break;
case BTN_A:if (preset_act>0) {preset_act--;cargapreset();} break;
case BTN_B:if (preset_act<max_presets) {preset_act++;cargapreset();}break;
case BTN_LEFT:if (preset_act>0) {preset_act--;cargapreset();} break;
case BTN_RIGHT:if (preset_act<max_presets) {preset_act++;cargapreset();}break;
}
break;

//aqui pongo lo mismo pero con las teclas del ordenador para hacer pruebas....

Antes me funcionaba bien asi pero ya no. Es posible que me haya rallado con algun break o algun } (creo que no).

Si no. Podria algun alma caritativa pasarme el codigo para leer estos eventos? Es que si no no puedo hacer nada y tengo muchos programas parados.

jduranmaster
10/06/2011, 23:10
los botones de la consola se mapean asi: (en el caso de Wiz, con Caanoo creo que tiene algun boton mas definido):



#define WIZ_UP 0
#define WIZ_LEFT 2
#define WIZ_DOWN 4
#define WIZ_RIGHT 6
#define WIZ_START 8
#define WIZ_SELECT 9
#define WIZ_L 10
#define WIZ_R 11
#define WIZ_A 12
#define WIZ_B 13
#define WIZ_Y 15
#define WIZ_X 14
#define WIZ_VOLUP 16
#define WIZ_VOLDN 17


y por lo que veo los codigos los tienes definidos de otra forma (no se si es que cambian los codigos). sin entrar al codigo del manejo de eventos que as puesto.... has llegado a inicializar el joystick????:



SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
SDL_ShowCursor(SDL_DISABLE);
SDL_JoystickOpen(0);

snork3ls
10/06/2011, 23:30
Si. Lo del joystick ya lo tenia, era por no marear mas con el codigo.

Voy a probar ya tus codigos de mapeo a ver que tal tiran (si hay suerte lo subo esta noche).

Gracias por responder tan rapido. Ahora te cuento...

< - >
Que mal. Estos codigos no me valen.

GameMaster
10/06/2011, 23:31
En Caanoo creo que sólo tiene más el boton 'I', y les falta los del volumen, ya que este es analogico y el digital aunque lo mapees no existe. Los mappers de Wiz en teoria tienen que funcionar todos en Caanoo tambien.

jduranmaster
10/06/2011, 23:32
Si. Lo del joystick ya lo tenia, era por no marear mas con el codigo.

Voy a probar ya tus codigos de mapeo a ver que tal tiran (si hay suerte lo subo esta noche).

Gracias por responder tan rapido. Ahora te cuento...

< - >
Que mal. Estos codigos no me valen.

pues deberian ir, porque son los mismos que en Caanoo. Seguro que inicializas bien el joystick???

hardyx
11/06/2011, 01:52
No son los mismos códigos, en Caanoo son distintos. Y la direcciones no van por botones como en Wiz, tienes que leer el joystick en modo analógico. Mira este post (http://www.gp32spain.com/foros/showpost.php?p=1159560&postcount=35).

snork3ls
11/06/2011, 19:17
Gracias hardyx. Tenia los codigos mal. Ademas el mayor problema eran estas malditas lineas:

#ifdef PLATFORM_GP2X

He cambiado los codigos y he quitado esas lineas y ahora funciona.

Que tendria que poner en su lugar para compilar para Caanoo?

hardyx
12/06/2011, 00:07
Simplemente pon #ifdef CAANOO y luego pones -DCAANOO en las opciones de compilación del perfil del Caanoo. Puedes poner el nombre que quieras, pero esta bien para separar el codigo de pc y de consola.

snork3ls
12/06/2011, 00:29
Mola.