› Foros › Multiplataforma › Desarrollo
edelpuerto escribió:Gracias a todos!!
Bueno me gustaria ponerlo de una manera algo "compacta".
NO es lo mismo tener el eboot y una cuantas carpetas y dentro de ellas los archivos de musica, de video, de imagenes, de datos, etc... que si tengo, por ejemplo un eboot y otro archivo donde tenga todo dentro.
No se si me he explicado bien.
Eskematico eso del .pak, creo que no estaría mal
Por favor, ¿me podrias decir como se haría?
Muchas gracias a todos de nuevo.
Hermes escribió:
Hombre, si quieres usar carpetas, etc y no tener que complicarte mucho, podrias tirar de una ISO (eso si, necesitarias interpretar la iso, claro esta), pero para empaquetar datos en un fichero, te puedes inventar el sistema que mas te guste.
Por ejemplo, podrias crear un struct similar a este:
struct entry{
unsigned offset;
unsigned size;
char name[56];
};
Un paquete asi, ocuparia 64 bytes en una tabla que le podrias dar un tamaño fijo o variable (si le das tamaño fijo, no necesitarias entry_size, para conocer el tamaño, pero desperdiciaras espacio)
La estructura del fichero, podria ser tal que asi:
unsigned id; // identificador del fichero, por ejemplo 0x10c0fe0
int entry_size; //-> tamaño de la tabla de entradas: sizeof(entry)*MAX_ENTRADAS
struct entry entradas[MAX_ENTRADAS]; // tablas de entrada de "ficheros"
/* --------------- */ //-> datos del primer fichero, seguido de los datos del segundo, etc
Ahora analicemos los datos de una entrada:
offset: -> podria ser el offset de los datos de ese "fichero" desde el inicio del fichero o a partir de la ultima entrada de directorio
size: -> tamaño en bytes del fichero
name: 55 caracteres+1 (\0). Podrias usar cualquier nombre y por ejemplo "data/score.dat" seria un nombre completo (y no un directorio+nombre)
Para proceder a buscar un fichero, solo seria buscar el nombre en la tabla partiendo desde el primer elemento hasta entry_size/sizeof(entry).