Problema al morir

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Problema al morir

Mensajepor na_th_an » Mié, 30 Sep 2015, 11:04

Tanto en la "d" como en MK2 tienes que abrir el archivo "C" y asegurarte de que estás reservando el número correcto de bloques para los sprites. En los comentarios del principio del archivo viene cómo hacer los cálculos.

Aparte de eso, y que en MK2 hay un porrón de opciones más en config.h (que puedes ignorar si estás portando un churrera) es prácticamente igual, salvo que en MK2 no hace falta convertir nada a mano, sino modificar el make.bat para que lo convierta todo automáticamente por tí (nada de reordenar tiles y montarlos a mano con la fuente, etcétera).

Otra cosa es que si tu juego tiene vista genital es posible que haya algunas cosas que no funcionen del todo bien en MK2 porque hasta la 0.89 no hay ningún juego que use esta perspectiva y seguro que se coló algún gazapo al portar la funcionalidad.

La versión "d" ahorra 150 bytes de uno de los buffers que mueve a un hueco que hay en la splib2 si no estamos en modo 128K, y además "recorta" un poco la pila dejando más espacio (vamos, que tu programa puede ocupar más de 36655). MK2, en general, está reescrita y ocupa bastante menos (además de ser levemente más rápida).
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Problema al morir

Mensajepor karkayu » Mié, 30 Sep 2015, 13:18

Colocando la melodía que viene por defecto en la Churrera, el binario se queda en 36648bytes y, claro, ahora va todo perfecto. Voy a tener que rehacer mi melodia del principio.


El juego no es vista cenital, no hay problema en ese sentido. Con la reserva de memoria para sprites te refieres NUMBLOCKS, no? El juego tiene al prota y tres enemigos mas, así que lo he dejado en 40. Aunque ahora que lo pienso, uso plataformas que se mueven. Eso cuenta como otro enemigo, verdad?? Voy a cambiar el valor.

Por cierto, los sprites de prota y enemigos ahora no son blanco puro (antes sí lo eran). Están tomando el color fucsia de los bloques que componen la fase. Imagino que eso lo puedo corregir editando el archivo sprites.h

Un saludo

EDITO: era problema del NUMBLOCKS. Ya está portado con exito a la versión 'd'. El binario se queda en 36510bytes con la música por defecto :)

De todas formas tengo alguna duda en cuanto al numero de bloques para reservar. Si, como he dicho, el juego tiene al prota, 3 enemigos, plataformas móviles y no tiene disparos, la cuenta sería 10*5 = 50, no??
Lo digo porque con valor 50 muestra la pantalla inicial pero ningún sprite. He colocado el valor 60 y parece que todo va fino. Estoy calculando mal, verdad?
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Problema al morir

Mensajepor na_th_an » Mié, 30 Sep 2015, 14:25

El número de bloques se refiere al número de sprites que se mueven a la vez en pantalla como máximo, no a los que tengas definidos. En la pantalla, al menos, siempre está el jugador y tres enemigos/plataformas. Se trata de cuatro sprites de 16x16, o de 2x2 caracteres.

Si un sprite mide WxH caracteres, necesita (W+1) * (H+1) bloques, más un bloque de control. Por eso, un sprite de 16x16, que mide 2x2 caracteres, necesita (2+1)*(2+1)+1 = 10 bloques.

De la misma forma, un proyectil de 8x8 mide 1x1 caracteres y necesita (1+1)*(1+1)+1 = 5 bloques.

El número de disparos que puede aparecer como máximo en pantalla se controla con "MAX_BULLETS". Por tanto, el número de bloques para los proyectiles será 5*MAX_BULLETS.

Que yo recuerde, en la Churrera no hay más que esto. Si no usas proyectiles el número de reserva debería ser 4*10 = 40 bloques de 15 bytes cada uno. Si con eso se te cuelga (estando por debajo de la memoria máxima, que tendría que mirar cuanto es en "d") tendría que mirarlo, porque puede que haya metido la gamba.
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Problema al morir

Mensajepor karkayu » Mié, 30 Sep 2015, 17:22

$this->bbcode_second_pass_quote('na_th_an', 'E')l número de bloques se refiere al número de sprites que se mueven a la vez en pantalla como máximo, no a los que tengas definidos. En la pantalla, al menos, siempre está el jugador y tres enemigos/plataformas. Se trata de cuatro sprites de 16x16, o de 2x2 caracteres.

Si un sprite mide WxH caracteres, necesita (W+1) * (H+1) bloques, más un bloque de control. Por eso, un sprite de 16x16, que mide 2x2 caracteres, necesita (2+1)*(2+1)+1 = 10 bloques.

De la misma forma, un proyectil de 8x8 mide 1x1 caracteres y necesita (1+1)*(1+1)+1 = 5 bloques.

El número de disparos que puede aparecer como máximo en pantalla se controla con "MAX_BULLETS". Por tanto, el número de bloques para los proyectiles será 5*MAX_BULLETS.

Que yo recuerde, en la Churrera no hay más que esto. Si no usas proyectiles el número de reserva debería ser 4*10 = 40 bloques de 15 bytes cada uno. Si con eso se te cuelga (estando por debajo de la memoria máxima, que tendría que mirar cuanto es en "d") tendría que mirarlo, porque puede que haya metido la gamba.



Como te he comentado, con un valor de 40 ó 50, el juego se cuelga al empezar el juego (la pantalla de titulo va bien). Yo puse 60 (por probar) y va todo fino. El binario se queda en 36510bytes.