private void _UpdateModuleImports()
{
//var BaseMemoryStream = ElfLoader.MemoryStream.SliceWithLength(BaseAddress);
var ImportsStream = ElfLoader.MemoryStream.SliceWithBounds(HleModuleGuest.ModuleInfo.ImportsStart, HleModuleGuest.ModuleInfo.ImportsEnd);
//Console.WriteLine("ImportsStream.Length: {0}", ImportsStream.Length);
var ModuleImports = ImportsStream.ReadStructVectorUntilTheEndOfStream<ElfPsp.ModuleImport>();
Console.WriteLine("BASE ADDRESS: 0x{0:X}", BaseAddress);
Console.WriteLine("Imports ({0:X8}-{1:X8}):", HleModuleGuest.ModuleInfo.ImportsStart, HleModuleGuest.ModuleInfo.ImportsEnd);
foreach (var ModuleImport in ModuleImports)
{
String ModuleImportName = "INVALID";
try { ModuleImportName = ElfLoader.MemoryStream.ReadStringzAt(ModuleImport.Name); } catch { }
var HleModuleImports = new HleModuleImports();
HleModuleImports.Name = ModuleImportName;
HleModuleImports.Flags = ModuleImport.Flags;
HleModuleImports.Version = ModuleImport.Version;
var NidStreamReader = new BinaryReader(ElfLoader.MemoryStream.SliceWithLength(ModuleImport.NidAddress, ModuleImport.FunctionCount * sizeof(uint)));
for (int n = 0; n < ModuleImport.FunctionCount; n++)
{
var NID = NidStreamReader.ReadUInt32();
var CallAddress = (uint)(ModuleImport.CallAddress + n * 8);
HleModuleImports.Functions[NID] = new HleModuleImportsExports.Entry() { Address = CallAddress };
}
HleModuleGuest.ModulesImports.Add(HleModuleImports);
}
HleModuleGuest.ImportModules();
//Console.ReadKey();
}