Moderadores: Kravenbcn , largeroliker , fidelcastro , cerealkiller , pspCaracas , m0skit0 , LnD , ka69 , zacky06
largeroliker
Administrador
Mensajes: 8283 Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Ubicación: Málaga
Contactar:
Mensaje
por largeroliker » 30 Mar 2011, 19:46
Ay, las unidades...quien yo me se me mataria xD 5 bytes / 4 bytes = 1 vuelta + otra de propina, 2 vueltas que recogen 8 bytes. Si hubiera 9, pues seria 9/4 = 2 + la propina 3 XD
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
m0skit0
Administrador
Mensajes: 5585 Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef
Mensaje
por m0skit0 » 30 Mar 2011, 23:41
Ok mí entender, con eso te refieres a cuántas palabras (4 bytes).
Yn$an€
Desarrollador
Mensajes: 258 Registrado: 11 Feb 2011, 21:44
Mensaje
por Yn$an€ » 20 Jul 2011, 12:13
Bueno, aún sabiendo que el tema es viejo y está parado... Aquí te dejo un trozo de código del emu, que creo que te servirá si buscas inspiración de nuevo para el extractor de document.dat. No creo que descubra nada nuevo a estas alturas, pero ahí queda, por si te pica el gusanillo.
(Estaba trabajando en ello y me acordé del hilo
)
Spoiler:
Código: Seleccionar todo
#include <iostream> #include <fstream> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> typedef unsigned char tByte; typedef unsigned short int tHalfWord; typedef unsigned int tWord; typedef unsigned int tDato; typedef unsigned int tLongitud; typedef enum { icon0 = 1, icon1, bckgrnd, pic1, snd0, psp, psar } tContenidoPBP; typedef enum { Binary = 0, String = 2, Integer = 4 } tPSFDataType; /* */ /* PBP Defines and Structs */ /* */ // PBP Magic Number 0x00 'P' 'B' 'P' #define PBPMAGNUM 0x50425000 // Header typedef struct { uint ident; uint version; uint offsetparam; uint offseticon0; uint offseticon1; uint offsetbckgrnd; uint offsetpic1; uint offsetsnd0; uint offsetpsp; uint offsetpsar; } tPBPHeaderInfo; // FileInfo typedef struct { uint sizeparam; uint sizeicon0; uint sizeicon1; uint sizebckgrnd; uint sizepic1; uint sizesnd0; uint sizepsp; uint sizepsar; } tPBPFileInfo; //PSF defines #define PSFMAGNUM 0x00505346 typedef struct { uint ident; //Siempre 0x00505346 (".PSF") uint version; //Siempre 0x0101 0000 uint keytableoffset; //Relativo al comienzo del PSF uint valuetableoffset; //Relativo al comienzo del PSF uint numkeys; } tPSFHeaderinfo; typedef struct { ushort LabelOffset; char DataAlignment; tPSFDataType DataType; uint DataFieldUsed; uint DataFieldSize; uint DataOffset; } tPSFSectionInfo; int main(){ tPBPFileInfo pbpfinfo; tPBPHeaderInfo pbphinfo; uint filesize; std::ifstream pbp("/home/alvaro/workspace/psp-emu/PBP/HBL/EBOOT.PBP", std::ios::in | std::ios::binary); if (pbp.is_open()) { pbp.seekg (0, std::ios::end); filesize = pbp.tellg(); pbp.seekg (0, std::ios::beg); pbp.read(reinterpret_cast<char*> (&pbphinfo), sizeof(tPBPHeaderInfo)); pbpfinfo.sizeparam = pbphinfo.offseticon0 - pbphinfo.offsetparam; pbpfinfo.sizeicon0 = pbphinfo.offseticon1 - pbphinfo.offseticon0; pbpfinfo.sizeicon1 = pbphinfo.offsetbckgrnd - pbphinfo.offseticon1; pbpfinfo.sizebckgrnd = pbphinfo.offsetpic1 - pbphinfo.offsetbckgrnd; pbpfinfo.sizepic1 = pbphinfo.offsetsnd0 - pbphinfo.offsetpic1; pbpfinfo.sizesnd0 = pbphinfo.offsetpsp - pbphinfo.offsetsnd0; pbpfinfo.sizepsp = pbphinfo.offsetpsar - pbphinfo.offsetpsp; pbpfinfo.sizepsar = filesize - pbphinfo.offsetpsar; //////////////////////El método es siempre el mismo para cada archivo char *buffer = new char[pbpfinfo.sizeparam]; pbp.seekg (pbphinfo.offsetparam, std::ios::beg); pbp.read(buffer, pbpfinfo.sizeparam); std::ofstream snd0("/home/alvaro/workspace/psp-emu/PBP/HBL/param", std::ios::out | std::ios::binary); snd0.write(buffer,pbpfinfo.sizeparam); snd0.close(); delete buffer; ///////////////////////////////////////////////////////// buffer = new char[pbpfinfo.sizeicon0]; pbp.seekg (pbphinfo.offseticon0, std::ios::beg); pbp.read(buffer, pbpfinfo.sizeicon0); std::ofstream icon1("/home/alvaro/workspace/psp-emu/PBP/HBL/icon1", std::ios::out | std::ios::binary); icon1.write(buffer,pbpfinfo.sizeicon0); icon1.close(); delete buffer; ////////////////////////////////////////////////////////////////////////////// buffer = new char[pbpfinfo.sizepic1]; pbp.seekg (pbphinfo.offsetpic1, std::ios::beg); pbp.read(buffer, pbpfinfo.sizepic1); std::ofstream ico("/home/alvaro/workspace/psp-emu/PBP/HBL/pic", std::ios::out | std::ios::binary); ico.write(buffer,pbpfinfo.sizepic1); ico.close(); delete buffer; /////////////////////////////////////////////////////////////////////////////////////////// pbp.close(); std::cout << pbphinfo.ident <<" vs " << PBPMAGNUM; std::cout<<"\n"; std::cout <<pbpfinfo.sizeparam; std::cout<<"\n"; std::cout <<pbpfinfo.sizeicon0; std::cout<<"\n"; std::cout <<pbpfinfo.sizeicon1; std::cout<<"\n"; std::cout <<pbpfinfo.sizebckgrnd; std::cout<<"\n"; std::cout <<pbpfinfo.sizepic1; std::cout<<"\n"; std::cout <<pbpfinfo.sizesnd0; std::cout<<"\n"; std::cout <<pbpfinfo.sizepsp; std::cout<<"\n"; std::cout <<pbpfinfo.sizepsar; return 0; } }
Aviso que el código está asquerosamente mal hecho, pero eran pruebas, así que...
saludos
... after all, we're all alike.
largeroliker
Administrador
Mensajes: 8283 Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Ubicación: Málaga
Contactar:
Mensaje
por largeroliker » 20 Jul 2011, 12:29
Uf, casi ni me acordaba de esto, lo tengo más dejado...y los archivos en el escritorio criando malvas
Le echaré un ojo, muchas gracias
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Yn$an€
Desarrollador
Mensajes: 258 Registrado: 11 Feb 2011, 21:44
Mensaje
por Yn$an€ » 20 Jul 2011, 15:07
De nada. Y si tienes dudas con gusto te explico.
... after all, we're all alike.