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: 26412
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: 26412
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

na_th_an escribió: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 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.
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Problema al morir

Mensajepor na_th_an » Mié, 30 Sep 2015, 23:39

Asegurate que no tienes activado PLAYER_CAN_FIRE en config.h - Con eso y 3 proyectiles (que es lo que viene por defecto) son necesarios 55 bloques. En la "c" no te da la cara porque siempre se reserva 56.
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Problema al morir

Mensajepor karkayu » Jue, 01 Oct 2015, 14:29

AAAAAHGGG!!! Quiero morir!!!
Con la versión 'd' de la churrera y la musica de inicio recortada, el binario ocupa 36526bytes y no da ningún problema.

He cambiado la pantalla de ending poniendo los textos en inglés (lo tengo presentado a la ZXDEV y me obligan a tenerlo en inglés). Pues al hacer este cambio, vuelve a colgarse el juego al morir :cry: :cry:
El archivo ending.bin de la pantalla en ingles ocupa menos que el que tenía en español. De hecho, el binario ahora ocupa 36499bytes, es decir, menos que antes... pero peta!! ¬¬'

¿alguna idea de que puede ser esta vez?

Ains!! Siento ser tan pesado:(

EDITO: Sigo sin saber devolver el blanco puro a los sprites del juego :(
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Problema al morir

Mensajepor na_th_an » Jue, 01 Oct 2015, 23:40

Mándame toda la carpeta del proyecto y le echo un ojal.
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Problema al morir

Mensajepor karkayu » Vie, 02 Oct 2015, 11:22

na_th_an escribió:Mándame toda la carpeta del proyecto y le echo un ojal.


here it is!! -- enlace eliminado --

Thank you so much for your help.
Última edición por karkayu el Vie, 02 Oct 2015, 14:35, editado 1 vez en total.
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Problema al morir

Mensajepor na_th_an » Vie, 02 Oct 2015, 12:31

En cuanto encuentre un ratow
Como diría Rorshach: "Urm..."
Avatar de Usuario
karkayu
Mensajes: 40
Registrado: Lun, 07 Sep 2015, 14:34

Re: Problema al morir

Mensajepor karkayu » Vie, 02 Oct 2015, 12:41

na_th_an escribió:En cuanto encuentre un ratow


Sin prisas, no te preocupes.
¿Lo has descargado ya? Es para quitar el enlace :)

Volver a “La Churrera”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado