diff --git a/BurnOutSharp.Models/LinearExecutable/Executable.cs b/BurnOutSharp.Models/LinearExecutable/Executable.cs index 6f7b510b..0ca8b39c 100644 --- a/BurnOutSharp.Models/LinearExecutable/Executable.cs +++ b/BurnOutSharp.Models/LinearExecutable/Executable.cs @@ -20,7 +20,11 @@ namespace BurnOutSharp.Models.LinearExecutable /// public InformationBlock InformationBlock { get; set; } - // TODO: Object table + /// + /// Object table + /// + public ObjectTableEntry[] ObjectTable { get; set; } + // TODO: Object page map table // TODO: Object iterate data map table // TODO: Resource table diff --git a/BurnOutSharp.Models/LinearExecutable/ObjectTableEntry.cs b/BurnOutSharp.Models/LinearExecutable/ObjectTableEntry.cs new file mode 100644 index 00000000..68602efb --- /dev/null +++ b/BurnOutSharp.Models/LinearExecutable/ObjectTableEntry.cs @@ -0,0 +1,47 @@ +using System.Runtime.InteropServices; + +namespace BurnOutSharp.Models.LinearExecutable +{ + /// + /// The object table contains information that describes each segment in + /// an executable file. This information includes segment length, segment + /// type, and segment-relocation data. The following list summarizes the + /// values found in in the segment table (the locations are relative to + /// the beginning of each entry): + /// + /// + [StructLayout(LayoutKind.Sequential)] + public class ObjectTableEntry + { + /// + /// Virtual segment size in bytes + /// + public uint VirtualSegmentSize; + + /// + /// Relocation base address + /// + public uint RelocationBaseAddress; + + /// + /// Object flags + /// + /// No flags are documented properly + public uint ObjectFlags; + + /// + /// Page map index + /// + public uint PageMapIndex; + + /// + /// Page map entries + /// + public uint PageMapEntries; + + /// + /// ??? + /// + public uint Reserved; + } +}