Página 7 de 20

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Sab, 25 Ene 2014, 22:09
por antoniovillena
He modificado el main.c para que en la demo el protagonista pueda disparar, adjunto el .TAP. Me gustaría que la demo fuese lo más sencilla posible pero a la vez muestre todo el potencial del engine. Si tenéis alguna sugerencia ya sabéis.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 10:17
por radastan
Va como la seda.

Espero con ansia las llamadas desde C que está preparando D_Skywalk.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 11:46
por antoniovillena
$this->bbcode_second_pass_quote('radastan', 'V')a como la seda.

Espero con ansia las llamadas desde C que está preparando D_Skywalk.


De todas formas no hay ningún compromiso. A todos nos gustaría que D_Skywalk completara la parte C del engine para tener algo parecido a la Churrera (que no haya que picar ni una línea de código), pero hay que tener en cuenta que es una tarea muy complicada que le llevará tiempo, incluso si opta por hacer un copy/paste de la Churrera.

En cualquier caso tal y como está planteado el proyecto ahora mismo se pueden hacer juegos en C sin tener que calentarse mucho la cabeza en el aspecto gráfico. Ya tengo terminada la demo definitiva (adjunto .tap). La demo está muy simplificada para que sea didáctica, en un juego real los sprites tienen inercia y gravedad, el protagonista tiene una secuencia de animación compuesta por 8 sprites y los enemigos por 2 sprites y hay muchos más elementos en el juego (sonido, saltos, colisiones con los enemigos, cerrojos, tiles animados, etc...).

La demo está hecha con SDCC, que en general es un compilador más eficiente pero menos amigable que el Z88DK, sobre todo a la hora de incluir ASM embebido y por el hecho de que no acepta ficheros binarios (he tenido que emplear una herramienta intermedia bin2c para incrustar la pantalla de fin)

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 12:29
por elborra
Cuanto crack junto hay por aquí...

Algún día le meteré caña al asm, siempre he querido y nunca me he puesto... y que mejor que empezar con el asm para z80 :D

Si que has incrustado la pantalla del final, si XD

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 12:51
por radastan
$this->bbcode_second_pass_quote('antoniovillena', 'A') todos nos gustaría que D_Skywalk completara la parte C del engine para tener algo parecido a la Churrera (que no haya que picar ni una línea de código), pero hay que tener en cuenta que es una tarea muy complicada que le llevará tiempo, incluso si opta por hacer un copy/paste de la Churrera.


Vale, pues entonces miraré en cuanto pueda cómo integrar tu motor en Z88DK y hacer las funciones de llamada en C a tu motor. No quiero una churrera, hablo de integrara en Z88DK tu motor y tener llamadas en C para manejarlo todo.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 13:20
por antoniovillena
$this->bbcode_second_pass_quote('radastan', '
')Vale, pues entonces miraré en cuanto pueda cómo integrar tu motor en Z88DK y hacer las funciones de llamada en C a tu motor. No quiero una churrera, hablo de integrara en Z88DK tu motor y tener llamadas en C para manejarlo todo.


Pues básicamente de lo que se trata es de compilar un binario que empiece en la dirección $8000 (32768) y que se comunique con el motor escribiendo en la zona $5b00-$5c08. Hay constantes pre-generadas en define.h que te pueden ser muy útiles. El quid de la cuestión es cómo mapear esa zona de memoria en C. Con SDCC lo he hecho de una forma un poco cutre: el sprite número N se accede con sprite[N][0] para el número de sprite, sprite[N][1] para la coordenada X y sprite[N][2] para la coordenada Y. Aquí sería más lógico emplear struct y algo como sprite[N].x.

El formato está explicado al comienzo de este hilo aunque se puede deducir (mejor completentar) con el código fuente:
https://github.com/DSkywalk/fase/blob/m ... ine/main.c
https://github.com/DSkywalk/fase/blob/m ... ine/fase.h

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 13:34
por na_th_an
También puedes usar defines:

$this->bbcode_second_pass_code('', '#define SPRITE_X(n) sprite[n][1]')

Un poner :)

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Lun, 27 Ene 2014, 21:27
por antoniovillena
Buena idea la de los defines, son muy socorridos.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Mié, 29 Ene 2014, 00:28
por antoniovillena
Por fin he acabado de documentarlo. No es muy buena pero al menos es mejor que lo que había. También doy por finalizado el código y liberado la versión 0.99, que salvo bugs y cambios leves será la última versión que publique. Como la parte C del engine es una cosa que está todavía en el aire, no hago ninguna alusión en el readme.html, así me evito el posible vaporware y no meto presión a D_Skywalk. Si sale, bien; si no siempre queda un bonito engine al estilo de Bitfrost* para hacer juegos en C de alto nivel.

Voy a publicarlo en otros foros. Si veis cualquier fallo en el engine o algo que no se entienda en la documentación avisadme. También podéis colaborar pasando la demo a Z88DK, creando otra demo más chula, diseñando un logo o lo que queráis.

Re: FASE (Fucking Awesome Spectrum Engine)

Publicado: Mié, 29 Ene 2014, 00:35
por antoniovillena
Un segundo post para poner la demo