CSPspEmu.Hle.Loader.ElfPspLoader._UpdateModuleImports C# (CSharp) Method

_UpdateModuleImports() private method

private _UpdateModuleImports ( ) : void
return void
        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();
        }