Página 16 de 37

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Dom, 13 Abr 2014, 15:04
por na_th_an
Que buena pinta!!!

Enviado desde mi LT18i usando Tapatalk 2

Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Dom, 13 Abr 2014, 15:08
por angel
Me encanta! Algún tile de fondo para rellenar? :-)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Dom, 13 Abr 2014, 15:54
por Jarlaxe
$this->bbcode_second_pass_quote('angel', 'M')e encanta! Algún tile de fondo para rellenar? :-)


Veremos a ver que se puede hacer, me quedan 4 o 5 tiles disponibles y muchas cosas e ideas que están pidiendo cada uno de esos tiles :P

Será cosa de priorizar y ver que sacrificamos XD

Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Dom, 13 Abr 2014, 16:31
por angel
Jejeje

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 14 Abr 2014, 12:04
por Nightwolf
$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í.



Me estoy peleando con ésto, pero la verdad... no sé muy bien por donde empezar. :cabesa: Un lío tremendo lo de los archivos que hay que comprimirlos y luego... ¿dónde empieza cada uno? :S

A ver si alguno que tenga más maña que yo pueda hacer un ejemplito, que de seguro nos pueda servir a todos ^^ :boots:

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 14 Abr 2014, 12:15
por na_th_an
Precisamente para eso está el librarian. El librarian coge todos tus binarios, los repega uno detrás de otro generando un RAMn.bin, y luego genera un índice y asigna a cada binario que hay dentro de RAMn.bin un número de recurso. También se acuerda de en qué página de RAM estaba sin que tú te tengas que preocupar.

Desde tu programa, llamas a get_resource (n, address) y te descomprime el recurso "n" en la dirección "address".

Ahora mismo el único ejemplo que te puedo indicar es Goku Mal. Si te fijas en el proceso de construcción del juego (make.bat y auxiliares) se hacen archivos .bin con las pantallas comprimidas y las fases y se llama al librarian para que los pegue en RAM3.bin, RAM4,bin y RAM6.bin y genere el índice en librarian.h. Si abres librarian.h verás todos los .bin en un índice y el número de recurso que les corresponde:

$this->bbcode_second_pass_code('', '// librarian.h
// Generated by The Librarian
// Copyleft 2012 The Mojon Twins

typedef struct {
unsigned char ramPage;
unsigned int ramOffset;
} RESOURCE;

RESOURCE resources [] = {
{3, 49152}, // 0: title.bin
{3, 50737}, // 1: marco.bin
{3, 50737}, // 2: ending.bin
{3, 52504}, // 3: level1c.bin
{3, 55569}, // 4: level2c.bin
{3, 58289}, // 5: level3c.bin
{3, 61025}, // 6: level4c.bin
{4, 49152}, // 7: level5c.bin
{4, 51785}, // 8: zoneA.bin
{4, 54101}, // 9: zoneB.bin
{4, 56255}, // 10: leveltsc.bin
{4, 56793}, // 11: intro1.bin
{4, 58449}, // 12: intro2.bin
{4, 60216}, // 13: intro3.bin
{4, 61948}, // 14: intro4.bin
{6, 49152}, // 15: intro5.bin
{6, 51030}, // 16: intro6.bin
{6, 52896}, // 17: intro7.bin
{6, 54944}, // 18: logo.bin
{6, 56153}, // 19: controls.bin
{6, 57005} // 20: dedicado.bin
};

void get_resource (unsigned char res, unsigned int dest) {
unpack_RAMn (resources [res].ramPage, resources [res].ramOffset, dest);
}')

Con esto, en el juego por ejemplo, si se quiere pintar la pantalla comprimida "intro7.bin", se llamaría a get_resource (17, 16384), sin tener que preocuparnos ni de en qué página está, ni de en qué dirección ha caído. Todo eso es automático. Si, por ejemplo, tuviésemos un tileset en el recurso 38, haríamos un get_resource (38, tileset), para que el recurso 38 se descomprimiese sobre la dirección de memoria apuntada por "tileset".

Al principio puede parecer lioso, pero en cuanto haces uno ya le pillas el rollo. Lo primero es hacerte tu carpeta bin con el librarian y todos tus archivitos .bin. Luego haces list.txt con la lista de tus .bin, y ejecutas el librarian. Empieza por ahí, examina los resultados, y cuéntame.

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Mar, 15 Abr 2014, 01:22
por Nightwolf
¡Gracias Nathan! Empollaré a ver si doy con la tecla jeje :)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Jue, 01 May 2014, 16:13
por Nightwolf
Decoración del mapeado completo. Para subir un poco el Hype, venga, una pantallica:

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Jue, 01 May 2014, 16:55
por iforeve
tiene buena pinta ;)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Jue, 01 May 2014, 17:21
por elborra
Ummm, ganas de catarlo aumentando... ;)