Página 19 de 20

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Mié, 18 Jun 2014, 18:56
por D_Skywalk
$this->bbcode_second_pass_quote('angel', 'J')odo 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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 04:12
por antoniovillena
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:

$this->bbcode_second_pass_code('', '
print_value(3,10, (int) getattr(tmpx, tmpy));
')

La macro getattr hace lo siguiente:

$this->bbcode_second_pass_code('', '
#define getattr(x,y) map_attr[x + (y << 4) - y]
')

El array tiles se declara así:

$this->bbcode_second_pass_code('', '
unsigned char *tiles= 0x5b40;
')

Al parsear la macro pasa algo como esto:

$this->bbcode_second_pass_code('', '
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.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 09:51
por D_Skywalk
$this->bbcode_second_pass_quote('antoniovillena', 'A')l parsear la macro pasa algo como esto:

$this->bbcode_second_pass_code('', '
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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 10:54
por antoniovillena
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.

$this->bbcode_second_pass_quote('D_Skywalk', '
')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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 12:54
por D_Skywalk
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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 13:37
por antoniovillena
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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 14:34
por D_Skywalk
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 , ...

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 16:01
por antoniovillena
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

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 16:38
por D_Skywalk
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:

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Jue, 19 Jun 2014, 16:42
por antoniovillena
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.