Example #1
0
        public void Load(Stream FileStream, Stream MemoryStream, MemoryPartition MemoryPartition, HleModuleManager ModuleManager)
        {
            this.ElfLoader = new ElfLoader();
            this.ModuleManager = ModuleManager;

            this.ElfLoader.Load(FileStream);

            PspEmulatorContext.PspConfig.InfoExeHasRelocation = this.ElfLoader.NeedsRelocation;

            BaseAddress = (uint)(this.ElfLoader.NeedsRelocation ? 0x08900000 : 0);

            this.ElfLoader.AllocateAndWrite(MemoryStream, MemoryPartition, BaseAddress);

            if (this.ElfLoader.NeedsRelocation)
            {
                RelocateFromHeaders();
            }

            this.ModuleInfo = ElfLoader.SectionHeaderFileStream(ElfLoader.SectionHeadersByName[".rodata.sceModuleInfo"]).ReadStruct<ElfPsp.ModuleInfo>(); ;

            //Console.WriteLine(this.ModuleInfo.ToStringDefault());

            this.InitInfo.PC = ElfLoader.Header.EntryPoint + BaseAddress;
            this.InitInfo.GP = this.ModuleInfo.GP + BaseAddress;

            UpdateModuleImports();
        }