Diferente comportamiento de get_id en Wii, help!

Started by La momia que fuma, May 04, 2011, 08:17:36 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

La momia que fuma

En el juego que estoy haciendo para Wii tengo un ataque que son 3 bombas simultaneas que persiguen al enemigo, cada una a uno distinto en el caso de que haya mas de uno ese momento.

Para hacerlo, basicamente le paso un parametro al proceso bomba con un nº, bomba(1), bomba(2) y bomba(3)

En el momento en que la bomba elige enemigo hago:

for(num; num>0; num--)
   i=get_id(type enem);
end


Ya que se supone que en cada llamada a get_id sin que haya un frame de por medio te devuelve un proceso distinto del tipo indicado, de modo que bomba(1) hara una llamada a get_id y bomba(3) llamara 3 veces y se quedara con el 3er enemigo de la lista...

Bueno, pues en Pc funciona perfecto, 3 enemigos en pantalla, suelto las 3 bombas y se van cada una a por uno con una coordinacion y eficiencia dignas del Equipo A...

Pero en Wii no! Mismo código, pero se van todas a por el mismo si o si  :-[

He probado en Wii sin el for, haciendo una llamada simple a ver si sonaba la flauta, pero nada...Ideas?  :-\

SplinterGU

no me parece que lo que te pasa este relacionado con get_id... el codigo es generico, dudo que haya cambios en la version wii.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

La momia que fuma

Pues por algun motivo el comportamiento es diferente usando el mismo código en Pc y Wii :-\

FreeYourMind

si fuera un rand lo entenderia, al menos que internamente esa funcion utilice movidas relacionadas con el procesador..

Drumpi

Yo entendería que sucediese por distinto orden de ejecución de procesos, pero dices que usas un bucle, así que no debería ser por eso. No sé si el cambio de proceso que llama a get_id reinicia su cuenta o no, según cuentas en PC sí es así, así que ni idea, lo siento.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

a menos que en la version monolitica no implemente los llamados a los callback de reset adecuadamente, no los llame o los llame mas de lo debido.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita


La momia que fuma

Para quien le pueda interesar, Josebita me lo ha resuelto, era porque la variable num era un byte, que dan problemas en wii, cambiandolo a int ya funciona bien  :)

josebita

Sí, cualquier tipo de dato de tamaño inferior 4 (el tamaño del int) da problemas. El workaround es cambiar los tipos de dato a int.
Eso y el hecho de que los dcbs deben compilarse en la Wii son los dos únicos bugs de endianess que me quedan por resolver y que no tengo claro por dónde coger... A ver si cuando acabe exámenes me puedo poner con ello, pero no sé si seré capaz de arreglarlos.

FreeYourMind

Curioso, a ver si podemos recolectar todas las diferencias en un txt que acompañe la distro de Wii.

josebita

Todo esto está comentado en varios sitios, pero es verdad que sería buena idea ponerlo en un fichero que acompañara la release. Me lo apunto para la próxima. ¡Gracias!

SplinterGU

joseba no recuerdo si probaste el ejemplo de los endian para ver que output daba.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Creo que recuerdo haberlo probado pero no recuerdo qué paso... Voy a estar bastante ocupado estos días pero podríamos probar algo que se te ocurra en un momento.

Drumpi

¿Entonces eso puede estar afectándome también a mi? no recuerdo si he llegado a usar datos tipo byte o word (seguramente dentro de alguna estructura, pero siempre intentando que haya alineamiento a 4). Tendré que mirarlo, pero si no consigo resolverlo en las próximas 24 horas, no podré presentar el juego al concurso, es imposible que en menos de 20 días pueda hacer algo medianamente decente tal como está el proyecto ahora.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

FreeYourMind

Por cierto hablando de diferencias entre ports, pues tambien me estoy llevando una sorpresa, en este caso estoy teniendo un 'Segment Fault' en un determinado punto de mi nuevo juego (en mis ultimos cambios) y sólo en la Caanoo, en PC y WIZ no esta ocurriendo! A ver si mañana pongo un log para saber exactamente en que punto ocurre...