Parece broma, otro posible bug... pero este es menor :P

Started by Noivern, January 07, 2011, 03:33:15 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Noivern

Me da cosa ya, pero en fin...

Mira, tengo este código:
[code language="bennu"]
function howToPlay()
private
   int pngTeclado;
   int pngGamepad_OrNone;
   int pngWiz_Caanoo;   
   int fuenteUtilizada;
   int idTxtPulsaTecla;
   int asdf;
   int idTeclado;
   int idGamepad_OrNone;
   int idWiz_Caanoo;
   int idNaveDummy;
   int distanciaRecorrida;
   
   int idMusic;
begin

   idMusic = load_song("sonidos/musica/rb_select.ogg");
   play_song(idMusic, -1);
   clear_screen();   

   start_scroll(0, fileMenuId, 2, 0, 0, 1+2);
   fade_on();
   
   write(fntid_score,160,0,1,"How to Play!");
   if (os_id == OS_GP2X_WIZ)
      pngWiz_Caanoo = load_png("graficos/htp_w");
      idWiz_Caanoo = objeto(0, pngWiz_Caanoo, 320 + 160,240,-1);
      fuenteUtilizada = fntid_wiz;
   elsif (os_id == CONST_OS_CAANOO)
      pngWiz_Caanoo = load_png("graficos/htp_c");
      idWiz_Caanoo = objeto(0, pngWiz_Caanoo, 320 + 160,240,-1);
      fuenteUtilizada = fntid_wiz;
   else
      pngTeclado = load_png("graficos/htp_k");
      idTeclado = objeto(0, pngTeclado, 320 + 160,240 - 120,-1);
      
      if (joy_numjoysticks() > 0)
         pngGamepad_OrNone = load_png("graficos/htp_g");
      else
         pngGamepad_OrNone = load_png("graficos/htp_ng");
      end
      
      idGamepad_OrNone = objeto(0, pngGamepad_OrNone, 320 + 160 , 240 + 120,-1);
      fuenteUtilizada = 0;
      
   end
           //más lógica
end
[/code]

Este if crashea con win32 exception:
[code language="bennu"]
if (joy_numjoysticks() > 0)
   pngGamepad_OrNone = load_png("graficos/htp_g");
else
   pngGamepad_OrNone = load_png("graficos/htp_nj");
end
[/code]

Y solo cuando pregunto directamente con joy_numjoysticks().

Si en vez de usar eso, guardo previamente el nº de joys en el sistema en una variable ya no crashea:
[code language="bennu"]
variable = joy_numjoysticks();
if (variable > 0)
   pngGamepad_OrNone = load_png("graficos/htp_g");
else
   pngGamepad_OrNone = load_png("graficos/htp_nj");
end
[/code]
Ahora lo voy a dejar de esta manera, pero no debería crashear de la primera manera, creo :S
Lo que quiero hacer es poner 2 imágenes distintas dependiendo si hay o no joys conectados al pc.

Lo otro que se me ocurre es que tengo un proceso con prioridad 1000 leyendo el estado del joystick... ¿puede ser eso?


SplinterGU

tiene que haber otra cosa... las funciones esas de por si no crashean...

esto es el codigo tal cual lo tengo yo? o es una nueva version?

me podes pasar el codigo y el dcb compilado?

probaste con la 189?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Noivern

Nop, lo he modificado levemente, ya que Futu me paso unos gráficos para el menu.
Te paso el código enseguida y el dcb, es más estoy preparando la descarga para windows.
Y no he probado con la 189.

Ah me faltó decir que ahora noto a VECES un ruido tipo "chicharreo" en las canciones de fondo.
En especial en el el ending.
En unos minutos más tengo todo listo, vas a tener que descargartelo también por que los gráficos no son de 8 bits, asi que tuve que meterlos en un fpg de 16 bits aparte, claro son 2 imagenes nada más pero igual xD

SplinterGU

sonido tiene que ver con la mixer, en eso no puedo hacer nada.

con respecto al joys, tene cuidado, porque no podes usar funciones como joy_buttons y cosas asi, si no tenes joys, porque puede dejar el sistema inestable.

si joy_num te dice que no tenes joys conectados, no tenes que usar ninguna funcion de joys...

aunque me suena que el bug que tenes (si no es un pise de memoria por alguna otra cosa, como usar funciones como las que mencione) puede ser un bug del core por alguno de los cambios dentro de los que se hicieron y que provoco el bug anterior
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Noivern

Listo, revisa tus MPs
¡Y ya subí la version windows!
Tenés que descargartela igual :P

Noivern

Veamos, intenté reproducir nuevamente el crash, pero no pude :S
Ahora me reportan que crashea el juego nada más darle a empezar.
Yo me hice unas funciones para detectar los botones y el estado de la cruz, creo que muy parecida a tu librería. Ya llevaba como el 50% hecho cuando me percaté que había una librería llegar y usar, así que al final seguí con lo mío.

Uhm, normalmente el proceso que lee el estado de las direccionales se crea solo si hay un joy conectado, sin embargo con los botones no soy tan prolijo, simplemente los leo segun la configuración que se establece en las opciones, pero sin preguntar si hay o no joys, solo intenta leer. Claro que nunca antes había tenido problemas con esto.
Intentaré reproducir nuevamente el crash

SplinterGU

Quote from: Noivern on January 07, 2011, 04:28:49 PM
Veamos, intenté reproducir nuevamente el crash, pero no pude :S
Ahora me reportan que crashea el juego nada más darle a empezar.
Yo me hice unas funciones para detectar los botones y el estado de la cruz, creo que muy parecida a tu librería. Ya llevaba como el 50% hecho cuando me percaté que había una librería llegar y usar, así que al final seguí con lo mío.

Uhm, normalmente el proceso que lee el estado de las direccionales se crea solo si hay un joy conectado, sin embargo con los botones no soy tan prolijo, simplemente los leo segun la configuración que se establece en las opciones, pero sin preguntar si hay o no joys, solo intenta leer. Claro que nunca antes había tenido problemas con esto.
Intentaré reproducir nuevamente el crash

si haces eso es probable que crashee... en la lib que hice yo, no chequeo joys, porque en caanoo y wiz, los joys estan siempre si o si, ya que son los pad y los botones, ahora en pc tenes que chequear que existan y no llamar a ninguna funcion si no hay joys, tanto los joys como los botones, no podes pedir un boton que no existe porque es probable que crashee.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Noivern

¿Osea que podría provocar crash al azar?
Por que antes y ahora nunca me dio problemas leer así los botones, solo este evento en particular.
Una duda: ¿sdl detecta cuando se conecta un gamepad en medio de la ejecución?
Se me ocurre que puedo tener una var global donde almacenar la cantidad de joys conectados, preguntando solo al principio de la ejecución del programa. Luego usar esta variable para comprobar cosas en lugar de hacer joy_numjoysticks() siempre. Cosa personal, siempre me equivoco al escribir esa, siempre le pongo getNumJoys() y al final termino irritado corrigiendo el nombre de la función xD

SplinterGU

si, eso provoca crash... el azar depende de si justo cuando va a leer lee en algun area con datos de otra cosa o lee en areas no apuntadas...

sdl no detecta cambio de estados de conexion de pad, por lo menos no la version que usamos nosotros, la 1.2, y en las pruebas que yo hice, quizas desinicializando e inicializando nuevamente la lib lo detecte, no lo se.

mira la funcion joy_numjoystick tambien devuelve una variable interna, asi que es casi lo mismo, pero mejor si tienes una variable tu ya con el numero de joys
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Noivern

uhm Ahora me pasa algo muy extraño (pa variar)... Le voy a grabar un video para que sea más gráfico...

Noivern

#10
Mira mira...

http://www.youtube.com/watch?v=_Oy9uJdG08Q
Ponlo en 720p para que sea más claro.

Esto es en la r201. ¿En la r203 pasará? Que si no lo pones en el hilo del proyecto no me entero que existe ^^U

FreeYourMind

Perdona por el offtopic, que programa usabas para grabar videos ? Y para pasarlos despues a flv ?

Noivern

Quote from: FreeYourMind on January 07, 2011, 09:14:41 PM
Perdona por el offtopic, que programa usabas para grabar videos ? Y para pasarlos despues a flv ?

CamStudio para grabar. Tiene el pequeño contra que si tu video pasa las  2 GB no se puede ver, es un bug conocido.
Para transformar a flv (y muchos otros formatos) uso el Super

FreeYourMind

Ya que estamos, presento un nuevo bug tambien, estoy con la r201, así que no se si es de esta version, pero si no lo es es de las ultimas.

Estaba probando juegos antiguos con el runtime en la WIZ, los que funcionan sin problemas ya compilados con versiones de Bennu ya muy antiguas.

Pero el 'Skull' no me esta funcionando, he puesto los logs y tengo este raro resultado:

stderror1.txt --> Segmentation fault

stdout.txt --> FB_OpenMouse() Using tslib touchscreen0

Yo utilizo el touchscreen con el mouse pero sólo en el menu, y este error me sale al cargar, donde no uso touchscreen. No tengo el src para mirartelo a fondo.

SplinterGU

Quote from: FreeYourMind on January 07, 2011, 09:45:01 PM
Ya que estamos, presento un nuevo bug tambien, estoy con la r201, así que no se si es de esta version, pero si no lo es es de las ultimas.

Estaba probando juegos antiguos con el runtime en la WIZ, los que funcionan sin problemas ya compilados con versiones de Bennu ya muy antiguas.

Pero el 'Skull' no me esta funcionando, he puesto los logs y tengo este raro resultado:

stderror1.txt --> Segmentation fault

stdout.txt --> FB_OpenMouse() Using tslib touchscreen0

Yo utilizo el touchscreen con el mouse pero sólo en el menu, y este error me sale al cargar, donde no uso touchscreen. No tengo el src para mirartelo a fondo.

eso no es un error...
el "FB_OpenMouse() Using tslib touchscreen0" es la apertura del driver del mouse, siempre pone ese mensaje...

el segmentation fault, siempre lo dan al salir, no se que es, pero siempre que sale la aplicacion lo da en wiz y/o en caanoo, aun no se que es, pero es en la salida.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2