FasterARK/src/pbp.h

79 lines
1.8 KiB
C

typedef enum PbpType{
PBP_TYPE_NPUMDIMG = 0,
PBP_TYPE_PSISOIMG = 1,
PBP_TYPE_PSTITLEIMG = 2,
PBP_TYPE_UNKNOWN = 3
} PbpType;
// for PSISOIMG and PSTITLEIMG contents
typedef struct DataPspHeader{
SceUInt8 magic[0x4];
SceUInt8 unk[0x7C];
SceUInt8 unk2[0x32];
SceUInt8 unk3[0xE];
SceUInt8 hash[0x14];
SceUInt8 reserved[0x58];
SceUInt8 unk4[0x434];
char content_id[0x30];
} DataPspHeader;
// for NPUMDIMG content
typedef struct NpUmdImgBody {
SceUInt16 sector_size; // 0x0800
SceUInt16 unk_2; // 0xE000
SceUInt32 unk_4;
SceUInt32 unk_8;
SceUInt32 unk_12;
SceUInt32 unk_16;
SceUInt32 lba_start;
SceUInt32 unk_24;
SceUInt32 nsectors;
SceUInt32 unk_32;
SceUInt32 lba_end;
SceUInt32 unk_40;
SceUInt32 block_entry_offset;
char disc_id[0x10];
SceUInt32 header_start_offset;
SceUInt32 unk_68;
SceUInt8 unk_72;
SceUInt8 bbmac_param;
SceUInt8 unk_74;
SceUInt8 unk_75;
SceUInt32 unk_76;
SceUInt32 unk_80;
SceUInt32 unk_84;
SceUInt32 unk_88;
SceUInt32 unk_92;
} NpUmdImgBody;
typedef struct NpUmdImgHeader{
SceUInt8 magic[0x08]; // "NPUMDIMG"
SceUInt32 key_index; // usually 2, or 3.
SceUInt32 block_basis;
char content_id[0x30];
NpUmdImgBody body;
SceUInt8 header_key[0x10];
SceUInt8 data_key[0x10];
SceUInt8 header_hash[0x10];
SceUInt8 padding[0x8];
SceUInt8 ecdsa_sig[0x28];
} NpUmdImgHeader;
// generic eboot.pbp header
typedef struct PbpHeader
{
char magic[0x4];
SceUInt32 version;
SceUInt32 param_sfo_ptr;
SceUInt32 icon0_png_ptr;
SceUInt32 icon1_pmf_ptr;
SceUInt32 pic0_png_ptr;
SceUInt32 pic1_png_ptr;
SceUInt32 snd0_at3_ptr;
SceUInt32 data_psp_ptr;
SceUInt32 data_psar_ptr;
} PbpHeader;
int HashPbp(char* eboot_file, unsigned char* out_hash);