mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-20 22:05:12 +00:00
This commit is contained in:
parent
de070bf485
commit
a90b5cf37a
1998 changed files with 1034301 additions and 0 deletions
95
rpcs3/Loader/SELF.h
Normal file
95
rpcs3/Loader/SELF.h
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
#pragma once
|
||||
#include "Loader.h"
|
||||
|
||||
struct SceHeader
|
||||
{
|
||||
u32 se_magic;
|
||||
u32 se_hver;
|
||||
u16 se_flags;
|
||||
u16 se_type;
|
||||
u32 se_meta;
|
||||
u64 se_hsize;
|
||||
u64 se_esize;
|
||||
|
||||
void Load(wxFile& f)
|
||||
{
|
||||
se_magic = Read32(f);
|
||||
se_hver = Read32(f);
|
||||
se_flags = Read16(f);
|
||||
se_type = Read16(f);
|
||||
se_meta = Read32(f);
|
||||
se_hsize = Read64(f);
|
||||
se_esize = Read64(f);
|
||||
}
|
||||
|
||||
void Show()
|
||||
{
|
||||
ConLog.Write("Magic: %08x", se_magic);
|
||||
ConLog.Write("Class: %s", "SELF");
|
||||
ConLog.Write("hver: 0x%08x", se_hver);
|
||||
ConLog.Write("flags: 0x%04x", se_flags);
|
||||
ConLog.Write("type: 0x%04x", se_type);
|
||||
ConLog.Write("meta: 0x%08x", se_meta);
|
||||
ConLog.Write("hsize: 0x%llx", se_hsize);
|
||||
ConLog.Write("esize: 0x%llx", se_esize);
|
||||
}
|
||||
|
||||
bool CheckMagic() const { return se_magic == 0x53434500; }
|
||||
};
|
||||
|
||||
struct SelfHeader
|
||||
{
|
||||
u64 se_htype;
|
||||
u64 se_appinfooff;
|
||||
u64 se_elfoff;
|
||||
u64 se_phdroff;
|
||||
u64 se_shdroff;
|
||||
u64 se_secinfoff;
|
||||
u64 se_sceveroff;
|
||||
u64 se_controloff;
|
||||
u64 se_controlsize;
|
||||
u64 pad;
|
||||
|
||||
void Load(wxFile& f)
|
||||
{
|
||||
se_htype = Read64(f);
|
||||
se_appinfooff = Read64(f);
|
||||
se_elfoff = Read64(f);
|
||||
se_phdroff = Read64(f);
|
||||
se_shdroff = Read64(f);
|
||||
se_secinfoff = Read64(f);
|
||||
se_sceveroff = Read64(f);
|
||||
se_controloff = Read64(f);
|
||||
se_controlsize = Read64(f);
|
||||
pad = Read64(f);
|
||||
}
|
||||
|
||||
void Show()
|
||||
{
|
||||
ConLog.Write("header type: 0x%llx", se_htype);
|
||||
ConLog.Write("app info offset: 0x%llx", se_appinfooff);
|
||||
ConLog.Write("elf offset: 0x%llx", se_elfoff);
|
||||
ConLog.Write("program header offset: 0x%llx", se_phdroff);
|
||||
ConLog.Write("section header offset: 0x%llx", se_shdroff);
|
||||
ConLog.Write("section info offset: 0x%llx", se_secinfoff);
|
||||
ConLog.Write("sce version offset: 0x%llx", se_sceveroff);
|
||||
ConLog.Write("control info offset: 0x%llx", se_controloff);
|
||||
ConLog.Write("control info size: 0x%llx", se_controlsize);
|
||||
}
|
||||
};
|
||||
|
||||
class SELFLoader : public LoaderBase
|
||||
{
|
||||
wxFile& self_f;
|
||||
|
||||
SceHeader sce_hdr;
|
||||
SelfHeader self_hdr;
|
||||
|
||||
public:
|
||||
SELFLoader(wxFile& f);
|
||||
SELFLoader(const wxString& path);
|
||||
~SELFLoader() {Close();}
|
||||
|
||||
virtual bool LoadInfo();
|
||||
virtual bool LoadData();
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue