Página 16 de 20
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Lun, 16 Jun 2014, 00:54
por antoniovillena
$this->bbcode_second_pass_quote('D_Skywalk', 'L')o que no funcionaría sería el BAT de windows, por eso te digo, yo es que no tengo windows donde mirar
Por eso no te preocupes. Haz que funcione el make.sh que yo portaré los cambios al make.bat
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Lun, 16 Jun 2014, 13:30
por D_Skywalk
¿Que binario debo usar para saber cuanta memoria me queda? Con el final comprimido con z7 ese?
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Lun, 16 Jun 2014, 14:13
por antoniovillena
Yo lo muestro en loader.asm, sí en el propio código fuente con la directiva DISPLAY:
$this->bbcode_second_pass_code('', '
display "----------------------------"
display /A,0x8000-tmpbuf-stasp-mainrw, " bytes free"
display "____________________________"
')
Pero puedes generarlo antes si quieres, por ejemplo en step2.c. Todas las variables (tmpbuf, stasp y mainrw) se encuentran en ndefload.asm
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Mar, 17 Jun 2014, 13:21
por D_Skywalk
He reescrito la demo y toda la base para que sea más C.
Hay muchas cosas que aun no termino de comprender como, activar las animaciones y cosas así pero por el momento te quiero compartir lo que llevo y si te parece bien lo subes ahora tu a git o la semana que viene ya lo subo yo, después de la JAM
los makefiles ahora genera los ficheros de una forma, creo que más clara. hay una lib, con sus binarios y he intentado no mezclar assets con código, al menos todo lo que he podido. Por que las utilidades del engine generan código ASM+BIN y sin entenderlo completamente es un poco complejo de estructurar...
Lo dicho lo subo aquí y así le echas un ojo tio
Ps. no cobran por poner {} XD
Ps2. no sabía que se podían usar comas en C
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Mar, 17 Jun 2014, 13:29
por D_Skywalk
Y ahora un post de dudas.
Estoy intentando animar al gatete y entre otras cosas no se explica en ningún lugar que significan:
sprites[].n o sprites[].fEl nombre no me da mucha pista y el código, que está muy optimizado, tampoco XD
-----------
Otra como poner texto?
Es que updatescore, no da mucha pista... que yo entienda XD
$this->bbcode_second_pass_code('', 'void update_scoreboard(){
unsigned int scr, dst;
char count;
scr= 0x3d80+killed*8;
dst= 0x50de|*shadow<<8;
for ( count= 0; count<8; count++ )
zxmem[dst]= zxmem[scr++]^0xff,
dst+= 0x100;
}')
thx!
Re: FASE (Fucking Awesome Spectrum Engine)
Publicado: Mar, 17 Jun 2014, 14:02
por antoniovillena
Le echaré un vistazo luego y te comentaré.
$this->bbcode_second_pass_quote('D_Skywalk', 'Y') ahora un post de dudas.
Estoy intentando animar al gatete y entre otras cosas no se explica en ningún lugar que significan:
sprites[].n o sprites[].fEl nombre no me da mucha pista y el código, que está muy optimizado, tampoco XD
sprites[].n es para decirle al engine qué sprite queremos mostrar en dicha entrada, en readme.html viene esta ayuda:
You have 16 different sprites so you must specify what sprite you want to show. Put the high bit to 1 if you want to disable the sprite (or to hide it)
sprites[].f es el cuarto byte de la entrada, no sirve para nada porque nada más se usan 3 bytes. Pero el array está alineado a 4 bytes para que sea más eficiente calcular los índices. En la demo lo uso a modo de variable para almacenar la dirección de movimiento de los enemigos. Quizás habría quedado más claro almacenar esta información en otro array.
$this->bbcode_second_pass_quote('D_Skywalk', '
')Otra como poner texto?
Es que updatescore, no da mucha pista... que yo entienda XD
$this->bbcode_second_pass_code('', 'void update_scoreboard(){
unsigned int scr, dst;
char count;
scr= 0x3d80+killed*8;
dst= 0x50de|*shadow<<8;
for ( count= 0; count<8; count++ )
zxmem[dst]= zxmem[scr++]^0xff,
dst+= 0x100;
}')
thx!
Es que update_scoreboard es una función en C a bajo nivel que escribe el numerito de abajo/derecha (cuántos enemigos llevas matados). Como sólo hay que mostrar un carácter lo que hago es pasar los 8 bytes que definen el carácter numérico desde la ROM a memoria de video. El '0' empieza en $3d80, así que dependiendo de la variable killed a mostrar, empiezo en $3d80, $3d88, etc...
El destino (dst) es la memoria de video. Ojo, para que funcione bien tengo que tener en cuenta la variable shadow, por lo que el byte de partida puede ser $50de (página 5) o bien $d0de (página 7). Lo último es un bucle que copia los 8 bytes a memoria de video. Como la memoria de video no es lineal, lo que hago aumentar el puntero dst en $100 en lugar de uno.