FASE (Fucking Awesome Spectrum Engine)

Chit chat general. Habla con los MojonTwins y con los amigos de los MojonTwins. Reza a Vah-ka. Delinque. Aviso: está PROHIBIDO tirarse peos fuerte. Si les cortas el pescuezo, vale.

Moderador: na_th_an

Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Mié, 18 Jun 2014, 18:56

angel escribió:Jodo D_Skywalk, vas a tener que poner a Antonio en los créditos, casi te está haciendo el juego para la jam :lol:

Estoy dejándome los sesos para tener algo jugable para el viernes, vaya madikita :lol: :lol: :lol: :lol: :lol:

Te lo envío por correo, muchas gracias antonio... y voy a dibujar el mapeado para enseñarle mi jarte al mundo :mrgreen:

:ymca:
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Jue, 19 Jun 2014, 04:12

Ya está. Creo que ya sé cual es tu error. No te lo puedo confirmar al 100% porque no tengo linux a mano para compilarlo pero estoy casi seguro.

Aquí haces un casting:

Código: Seleccionar todo

        print_value(3,10, (int) getattr(tmpx, tmpy));


La macro getattr hace lo siguiente:

Código: Seleccionar todo

#define getattr(x,y) map_attr[x + (y << 4) - y]


El array tiles se declara así:

Código: Seleccionar todo

unsigned char *tiles= 0x5b40;


Al parsear la macro pasa algo como esto:

Código: Seleccionar todo

        print_value(3,10, (int) tiles[tmpx+tmpy*15]);


O sea que estas pasando a entero de 2 bytes (en otra arquitectura serían 4) un array de unsigned char (un byte).

De todas formas, te he creado un main.c (con el game.tap) modificado desde lo que hay ahora mismo el repositorio que muestra el número de tile por donde está pasando el personaje, te puedes guiar por dicho código.

Por cierto he reorganizado los directorios según tu esquema y compila en windows. Si tienes tiempo pruébalo a ver si lo hace también en Linux.
Adjuntos
ejemplo.zip
(21.59 KiB) Descargado 125 veces
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Jue, 19 Jun 2014, 09:51

antoniovillena escribió:Al parsear la macro pasa algo como esto:

Código: Seleccionar todo

        print_value(3,10, (int) tiles[tmpx+tmpy*15]);

Y que problema hay de pasar un unsigned char a entero?

Además esa función como ya ha pasado el "tiempo/frame" funciona, donde no funciona es en el prepare_screen que hay un bucle que se llena de basura (línea ~399). Lo que está en player_handler es para comprobar si attr tiene los datos buenos, sólo tienes que descomentar gettile y ver que se imprime perfecto, al contrario del getattr que veras que tiene ceros (forzados) y basura (ver bucle).

Y supongo que será mas cosa de la hora, espero que hayas descansado... Pero mezclas tiles con map_attr, son dos arrays diferentes.

Con forzar un valor en map_attr (como hago con el 0), veras que se muestran perfectamente. El problema es cuando quieres simplemente asignar el valor que tiene el array de tiles, entonces sólo hay basurilla ;)

Y sin esto pues no puedo hacer un sencillo mapa de durezas tipo churrera :muaka:
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Jue, 19 Jun 2014, 10:54

Ya te dicho que no te lo podía confirmar al 100%. De todas formas la solución la tienes en el adjunto de arriba que no te has bajado.

D_Skywalk escribió:Y que problema hay de pasar un unsigned char a entero?

Además esa función como ya ha pasado el "tiempo/frame" funciona, donde no funciona es en el prepare_screen que hay un bucle que se llena de basura (línea ~399). Lo que está en player_handler es para comprobar si attr tiene los datos buenos, sólo tienes que descomentar gettile y ver que se imprime perfecto, al contrario del getattr que veras que tiene ceros (forzados) y basura (ver bucle).

Y supongo que será mas cosa de la hora, espero que hayas descansado... Pero mezclas tiles con map_attr, son dos arrays diferentes.

Con forzar un valor en map_attr (como hago con el 0), veras que se muestran perfectamente. El problema es cuando quieres simplemente asignar el valor que tiene el array de tiles, entonces sólo hay basurilla ;)

Y sin esto pues no puedo hacer un sencillo mapa de durezas tipo churrera :muaka:
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Jue, 19 Jun 2014, 12:54

Muchas gracias antonio, es que como decías lo del char to int, creía que creías que ahí estaba el fallo, disculpa el error. Estoy preparando unas cosas de la JAM (que tb la organizo XD) y me pongo a ver el ejemplo. Gracias tio :adore:
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Jue, 19 Jun 2014, 13:37

Sí, es porque no había una forma fácil de compilar tu código, por eso lo que hice fue cambiar el código de la demo. Como has hecho un cambio de estructura de directorios y yo he hecho una modificación posterior no lo tenía fácil para compilarlo en Windows.

Los cambios de estructura que has propuesto están muy bien, está bastante más claro. Yo los he traspasado al repositorio de manera permanente. Además, he movido el fuente en asm a una carpeta llamada src (la iba a llamar asm pero por seguir tu nomeclatura lo hice así).

Hay un cambio más que me gustaría hacer pero no sin antes consultarte. La carpeta /lib (con sus directorios /lib/src y /lib/bin) queda fuera de /engine, por lo que no queda muy bonito en el paquete de producción (en el repositorio la verdad que me da igual). Lo que me gustaría es meter /lib dentro de engine. Fíjate en el antes y en el después:
Adjuntos
FASE.1.03_despues.zip
(801.05 KiB) Descargado 121 veces
FASE.1.03_antes.zip
(726.54 KiB) Descargado 118 veces
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Jue, 19 Jun 2014, 14:34

Acabo de llegar a casa :)

Si metes src dentro del engine, estoy de acuerdo en meter lib/bin (aunque lo seguiría metiendo dentro de lib/src).

La cuestión es no mezclar el generador del engine, del código del juego. Por ejemplo yo lo saqué por que sólo quería versionar (con git) la carpeta del juego. El engine no lo tengo que tocar para hacer el fase-game, por lo tanto lo saqué fuera
¿para que quiero versionar binarios y src del generador?

Pero es cuestión quizás más de apreciación, pero si quieres meter el src de la libreria entonces la verdad también meteria los binarios :cafe:

Me alegra que te guste la ordenación, le di unas cuantas vueltas quería ponermelo lo más claro posible, pa enterarme yo más que nada ;)
:porro:

Ps. igual que hago un gitignore de build, se podría añadir de lib y src, pero como digo si no lo necesito tocar, pues fuera XD
Ps. ahora los juegos estan así: fase/lib , fase/guego1, fase/guego2 , ...
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Jue, 19 Jun 2014, 16:01

He metido lib como dices y he renombrado el src que yo creé a asm, ya que queda menos confuso y no es plan de mezclar fuentes de c y ensamblador en la misma carpeta. Como siempre, hay 2 versiones, una completa en el repositorio y otra reducida con los ejecutables ya generados que es la que distribuyo en la web de los mojon twins.

Este zip es la versión reducida, si quieres podemos añadir los compilados a linux para facilitarle la vida a los linuxeros, eso ya lo que tú decidas. También he creado un faseb.bat que compila con ZX Basic, que por cierto ya dejo de incluir. Si todo está en orden en unos días le digo a na_th_an que suba el zip a la web de FASE que hay en mojontwins.com
Adjuntos
FASE.1.03.zip
(774.72 KiB) Descargado 135 veces
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor D_Skywalk » Jue, 19 Jun 2014, 16:38

se coló un htaccess en el zip :)

¿por que no metes el make.sh al menos?? y los makefiles? :(
O esos van en el src ampliado :roll:
David Skywalker
Weblog: http://david.dantoine.org
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: FASE (Fucking Awesome Spectrum Engine)

Mensajepor antoniovillena » Jue, 19 Jun 2014, 16:42

El .htaccess es para la parte HTML5 (game.html y game.js) que están también incluídos. En el paquete no hay ningún código fuente de .c, por lo que no tiene sentido el makefile. Para Linux lo suyo es o bien adaptarse con el repositorio o sacar otro paquete similar a este con los compilados ya generados.

Volver a “General”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados