Retomando la programación

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

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
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Retomando la programación

Mensaje por m0skit0 »

Ok mí entender, con eso te refieres a cuántas palabras (4 bytes).
Imagen

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

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 :D )

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 :oki:
... after all, we're all alike.

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

Uf, casi ni me acordaba de esto, lo tengo más dejado...y los archivos en el escritorio criando malvas :lol:

Le echaré un ojo, muchas gracias :D
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

De nada. Y si tienes dudas con gusto te explico.
... after all, we're all alike.

Responder