Mensajepor antoniovillena » Mar, 17 Jun 2014, 14:02
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.