Ya está, ya he terminado la demo tal cual estaba, incluyendo el manejo del personaje por la pantalla con las teclas OPQA. Los archivos cambiados son main.c, bunuelera.h y loader.asm.
No tengo mucha idea en el manejo de este compilador, y no sé cómo decirle los registros que va a machacar la rutina FRAME, por eso me daba fallos. De momento lo he solventado salvando IX y BC, pero no es una solución definitiva.
Para los curiosos que no tengan ganas de meterse en el repositorio, este es el main.c:
$this->bbcode_second_pass_code('', '
#include "bunuelera.h"
const unsigned char data[32]= {
0x00, 0x42, 0x11, 0,
0x08, 0x60, 0x60, 2,
0x09, 0xa8, 0x48, 3,
0x0a, 0x22, 0x02, 1,
0x0b, 0xd0, 0x6e, 2,
0x0c, 0xb6, 0x34, 3,
0x0d, 0x32, 0x32, 1,
0x04, 0x52, 0x5e, 0};
int main(){
// variables
int i, x= 0, y= 0;
// pasar personajes a sprites
for ( i = 0; i < 32; i++ )
sprites[i>>2][i&3]= data[i];
// inicializar engine
INIT;
// mostrar la primera pantalla al comienzo
screen= 0;
while(1){
// esto hace que el engine procese un frame generando el escenario
FRAME;
// movimiento de los enemigos
for ( i = 1; i < 8; i++ ){
if( sprites[i][3]&1 )
if( sprites[i][2] )
sprites[i][2]--;
else
sprites[i][3]^= 1;
else
if( sprites[i][2]<0x90 )
sprites[i][2]++;
else
sprites[i][3]^= 1;
if( sprites[i][3]&2 )
if( sprites[i][1]>0x08 )
sprites[i][1]--;
else
sprites[i][3]^= 2;
else
if( sprites[i][1]<0xe8 )
sprites[i][1]++;
else
sprites[i][3]^= 2;
}
// movimiento del protagonista
if( ~KeybYUIOP & 0x01 ){ // P
if( sprites[0][1]<0xee )
sprites[0][1]++;
else if( x < 11 )
sprites[0][1]= 0x02,
screen= y*12 + ++x;
}
else if( ~KeybYUIOP & 0x02 ){ // O
if( sprites[0][1]>0x02 )
sprites[0][1]--;
else if( x )
sprites[0][1]= 0xee,
screen= y*12 + --x;
}
if( ~KeybGFDSA & 0x01 ){ // A
if( sprites[0][2]<0xa0 )
sprites[0][2]++;
else if( y < 1 )
sprites[0][2]= 0x01,
screen= ++y*12 + x;
}
else if( ~KeybTREWQ & 0x01 ){ // Q
if( sprites[0][2]>0x01 )
sprites[0][2]--;
else if( y )
sprites[0][2]= 0xa0,
screen= --y*12 + x;
}
}
}
')
FASE (Fucking Awesome Spectrum Engine)
Moderador: na_th_an
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
Re: Buñuelera
Si lo de FAES era solo por hacer la coña XD
FASE, mola mucho ^^_
Voy revisando archivos![Sonrisa :)](./images/smilies/icon_e_smile.gif)
FASE, mola mucho ^^_
Voy revisando archivos
![Sonrisa :)](./images/smilies/icon_e_smile.gif)
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
FASE (Fucking Awesome Spectrum Engine)
Entonces decidido, se llamará así.
He escrito un mensaje al foro de ZX Basic para ver si nos pueden echar una mano con la demo, de momento espera aprobación, cuando lo aprueben os paso el link.
El interfaz SDCC está cogido con pinzas, por ejemplo sprites[2][1] quedaría más claro como sprites[2].x y la forma en que se lee el teclado no es muy adecuada. Espero que tengas más suerte con Z88DK.
He escrito un mensaje al foro de ZX Basic para ver si nos pueden echar una mano con la demo, de momento espera aprobación, cuando lo aprueben os paso el link.
El interfaz SDCC está cogido con pinzas, por ejemplo sprites[2][1] quedaría más claro como sprites[2].x y la forma en que se lee el teclado no es muy adecuada. Espero que tengas más suerte con Z88DK.
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
Re: FASE (Fucking Awesome Spectrum Engine)
Ya que estoy voy a explicar cómo funcionan los tiles. Del procesado de los mismos se encarga GfxBu, nosotros le indicamos en un parámetro (el cuarto) qué modo utilizar. Independientemente del modo que hayamos escogido, GfxBu nos mostrará cuánto ocupan los tiles en los 4 modos disponibles: no index, index bitmap, index attr y full index con códigos 0, 1, 2 y 3 respectivamente. Mientras más indexado sea el modo más tardará la rutina de pintado, aunque no hay mucha diferencia de velocidad, por lo que es preferible escoger el modo que ocupe menos bytes, así dejaremos más memoria libre para nuestro juego.
Los tiles indexados producen mapeados más redundantes gráficamente, pero ocupan mucho menos. Esto quiere decir que a igualdad de tamaño, los tiles indexados permiten mapas con mayor número de tiles distintos, por tanto más variados que si se usaran tiles no indexados, por eso es una característica que conviene explotar.
Los tiles indexados producen mapeados más redundantes gráficamente, pero ocupan mucho menos. Esto quiere decir que a igualdad de tamaño, los tiles indexados permiten mapas con mayor número de tiles distintos, por tanto más variados que si se usaran tiles no indexados, por eso es una característica que conviene explotar.
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
Re: FASE (Fucking Awesome Spectrum Engine)
Hay ya cosas a mejorar del engine en C propuesto, yo estoy metiendo defines y bueno del teclado, es curioso cuanto menos... A ver como podemos simplificarlo. De todas formas se entiende perfectamente ![Guiño ;)](./images/smilies/icon_e_wink.gif)
Quizás lo menos C de todo lo que has preparado para SDCC son las macros INIT y FRAME. Pero ya digo todo es dejarlo que coja forma, pintaza tiene ya
Un Saludo!![Sartar en la corchoneta :corchoneta:](./images/smilies/jumper.gif)
![Guiño ;)](./images/smilies/icon_e_wink.gif)
Quizás lo menos C de todo lo que has preparado para SDCC son las macros INIT y FRAME. Pero ya digo todo es dejarlo que coja forma, pintaza tiene ya
![Muy Feliz :D](./images/smilies/icon_e_biggrin.gif)
Un Saludo!
![Sartar en la corchoneta :corchoneta:](./images/smilies/jumper.gif)
David Skywalker
Weblog: http://david.dantoine.org
Weblog: http://david.dantoine.org
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
Re: FASE (Fucking Awesome Spectrum Engine)
He simplificado todo lo que he podido el engine, cambiando los nombres de los archivos, agrupando los parámetros importantes en un archivo de configuración y reduciendo el número de líneas del .bat para que quede todo claro. También he creado un readme.txt donde explico en inglés lo justo y necesario para hacerlo funcionar.
A partir de ahora no incluyo código fuente en dicho paquete, salvo los imprescindibles engine.asm y loader.asm. Habría que recurrir al repositorio para obtener los demás.
A partir de ahora no incluyo código fuente en dicho paquete, salvo los imprescindibles engine.asm y loader.asm. Habría que recurrir al repositorio para obtener los demás.
- Adjuntos
-
FASE.0.11.zip
- (581.95 KiB) Descargado 762 veces
Re: FASE (Fucking Awesome Spectrum Engine)
Uf, tendré que mirarlo de arriba a abajo para poder adaptarlo a Z88DK, paso del SDCC (y menos ahora que Z88DK va a tenerlo en sus tripas también). Es más, deberíais aseguraros que será compatible con la próxima versión de Z88DK, más que nada porque los proyectos SDCC y Z88DK van destinados a ser uno desde esa versión.
-
- Mensajes: 494
- Registrado: Jue, 24 Oct 2013, 15:52
Re: FASE (Fucking Awesome Spectrum Engine)
Ahora mismo sólo hay demos escritas en SDCC y en el ZX Basic de Boriel. No te puedo decir cual será el compilador C preferente porque esta decisión depende de D_Skywalk, es el que se encarga de escribir la parte C del engine.
Re: FASE (Fucking Awesome Spectrum Engine)
Sin problemas, a las malas me hago yo cuatro funciones para manejar esto como el mecanismo de un chupete desde Z88DK.
No lo veo complicado de usar.
No lo veo complicado de usar.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 64 invitados