Mensajepor Nightwolf » Mar, 20 May 2014, 22:57
$this->bbcode_second_pass_quote('na_th_an', 'M')ira, este sirve para esto. Coge tu png y saca dos binarios. La idea es cargar esos binarios en el librarian y ver qué número de recursos se le asignan.
Luego debería ser tan sencillo como descomprimir esos recursos con get_resource en el sitio correcto... Podrías tener todo esto en tu función EXTERN y codificarlo de alguna forma.
Los pasos serían:
1.- Hacer los spritesets que necesites. Sabiendo que el conversor saca los 8 primeros frames en un archivo y los 8 siguientes en otro, organízate como quieras.
2.- Cuando tengas todos los binarios de enemigos y protas que necesites, los comprimes con apack uno a uno.
3.- Añades todos en la lista de recursos de librarian (list.txt). Ejecuta librarian y abre librarian.h para ver qué IDs tiene cada set de sprites.
4.- Luego te codificas do_extern_action para que descomprima lo que quieras en el sitio correcto.
Por ejemplo, imaginate que tenemos tres sets de enemigos y dos sets para el prota en los recursos 10, 11, 12, 13 y 14, en ese orden.
Podemos usar n = 1, 2 y 3 para poner los enemigos y 4 y 5 para poner al prota.
$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
switch (n) {
// Cambiar enemigos:
case 1:
get_resource (10, sprite_1_a + 144 * 8);
break;
case 2:
get_resource (11, sprite_1_a + 144 * 8);
break;
case 3:
get_resource (12, sprite_1_a + 144 * 8);
break;
// Cambiar prota:
case 4:
get_resource (13, sprite_1_a);
break;
case 5:
get_resource (14, sprite_1_a);
break;
}
}
')
Desde el script, para poner el segundo set de enemigos haríamos un EXTERN 2. Para poner el segundo set del prota, EXTERN 5.... Y así.
Buenas. Pues me he puesto a ver si soy capaz de poner esto. He añadido 4 .bin que corresponden a dos bin enemigos y dos bin de prota.
Al compilar, me da este error:
sccz80:"extern.h" L:163 Warning:#9:Converting pointer to integer without cast
sccz80:"extern.h" L:166 Warning:#9:Converting pointer to integer without cast
sccz80:"extern.h" L:169 Warning:#9:Converting pointer to integer without cast
sccz80:"extern.h" L:173 Warning:#9:Converting pointer to integer without cast
sccz80:"extern.h" L:176 Warning:#9:Converting pointer to integer without cast
[/code]
Esta es la parte que puse del extern, parece algo relacionado con el tipo de variable sprite_1_a
$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
switch (n) {
// Cambiar enemigos:
default:
saca_a_todo_el_mundo_de_aqui ();
draw_rectangle (4, BOX_Y, 26, BOX_Y + 1 + *(cads [n - 1]), 10); // 15
draw_texts (4, 7, 15, cads [n - 1], 24);
espera_activa (50 * (1 + *(cads [n - 1])));
break;
case 11:
get_resource (6, sprite_1_a + 144 * 8);
break;
case 12:
get_resource (7, sprite_1_a + 144 * 8);
break;
case 13:
get_resource (6, sprite_1_a + 144 * 8);
break;
// Cambiar prota:
case 14:
get_resource (4, sprite_1_a);
break;
case 15:
get_resource (5, sprite_1_a);
break;
}
}')
¿Alguna manilla con ésto?
EDIT: Nada, que soy un burranco. Funciona perfectamente. ¡Que no había comprimido los gráficos!