private static DisassemblyTask New(List <JDmaData> dmadata, int index, OverlayRecord ovlInfo, OvlType nameClass) { string name = GetTaskName(dmadata, index, ovlInfo, nameClass); DisassemblyTask task = new DisassemblyTask() { Name = name, VRam = ovlInfo.VRam, VRom = ovlInfo.VRom, }; task.PreparseActions.Add(input => { OverlayPreprocess(task, input, ovlInfo); }); return(task); }
private static DisassemblyTask New(List <JOcaBase.JDmaData> dmadata, Rom rom, int index, OverlayRecord ovlInfo, OvlType nameClass) { RomFile file; //what we're going to disassemble BinaryReader FileReader; ActorInit actorInfo = new ActorInit(); var overlay = new Overlay(); var dmaRecord = dmadata.SingleOrDefault(x => x.VRomStart == ovlInfo.VRom.Start && ovlInfo.VRom.Start != 0); string name = (dmaRecord != null)? dmaRecord.Filename : $"{nameClass}_{index:X4}"; if (ovlInfo.VRom.Size != 0) { file = rom.Files.GetFile(ovlInfo.VRom); FileReader = new BinaryReader(file); overlay = new Overlay(FileReader); } DisassemblyTask task = new DisassemblyTask() { Name = name, VRam = ovlInfo.VRam, VRom = ovlInfo.VRom, Relocations = overlay.Relocations }; N64Ptr fstart = task.VRam.Start; Section text = new Section("text", fstart, fstart, overlay.TextSize, 0, true); Section data = new Section("data", fstart, text.VRam + text.Size, overlay.DataSize, 0); Section rodata = new Section("rodata", fstart, data.VRam + data.Size, overlay.RodataSize, 0); long off = ovlInfo.VRam.Start + ovlInfo.VRom.Size; Section bss = new Section("bss", fstart, off, overlay.BssSize, 0); task.Sections.Values.Add(text); task.Sections.Values.Add(data); task.Sections.Values.Add(rodata); task.Sections.Values.Add(bss); return(task); }
private static string GetTaskName(List <JDmaData> dmadata, int index, OverlayRecord ovlInfo, OvlType nameClass) { var dmaRecord = dmadata.SingleOrDefault(x => x.VRomStart == ovlInfo.VRom.Start && ovlInfo.VRom.Start != 0); string name = (dmaRecord != null) ? dmaRecord.Filename : $"{nameClass}_{index:X4}"; return(name); }