protected void LoadModuleInfo()
{
var sectionHeaderName = ".rodata.sceModuleInfo";
var programHeader = ElfLoader.ProgramHeaders.FirstOrDefault();
Stream stream;
if (ElfLoader.SectionHeadersByName.ContainsKey(sectionHeaderName))
{
var sectionHeader = ElfLoader.SectionHeadersByName[".rodata.sceModuleInfo"];
stream = ElfLoader.SectionHeaderMemoryStream(sectionHeader);
Logger.Info("LoadModuleInfo: .rodata.sceModuleInfo 0x{0:X8}[{1}]",
BaseAddress + sectionHeader.Address, sectionHeader.Size);
}
else
{
var moduleInfoAddress =
(uint)(BaseAddress + (programHeader.PsysicalAddress & 0x7FFFFFFFL) - programHeader.Offset);
var size = Marshal.SizeOf(typeof(ElfPsp.ModuleInfo));
stream = ElfLoader.MemoryStream.SliceWithLength(moduleInfoAddress, size);
Logger.Info("LoadModuleInfo: 0x{0:X8}[{1}]", moduleInfoAddress, size);
}
HleModuleGuest.ModuleInfo = stream.ReadStruct <ElfPsp.ModuleInfo>();
Logger.Info("{0}", HleModuleGuest.ModuleInfo.ToStringDefault());
}