From 57e47eee5d86fb3b913955e7db4b7599aaa208dd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 2 Dec 2022 15:58:06 -0800 Subject: [PATCH] Add LE passthrough properties --- BurnOutSharp.Wrappers/LinearExecutable.cs | 194 +++++++++++++++++++++- 1 file changed, 193 insertions(+), 1 deletion(-) diff --git a/BurnOutSharp.Wrappers/LinearExecutable.cs b/BurnOutSharp.Wrappers/LinearExecutable.cs index 50bfaffb..307b6681 100644 --- a/BurnOutSharp.Wrappers/LinearExecutable.cs +++ b/BurnOutSharp.Wrappers/LinearExecutable.cs @@ -75,7 +75,199 @@ namespace BurnOutSharp.Wrappers #endregion - // TODO: Determine what properties can be passed through + #region Information Block + + /// + public char[] Signature => _executable.InformationBlock.Signature; + + /// + public Models.LinearExecutable.ByteOrder ByteOrder => _executable.InformationBlock.ByteOrder; + + /// + public Models.LinearExecutable.WordOrder WordOrder => _executable.InformationBlock.WordOrder; + + /// + public uint ExecutableFormatLevel => _executable.InformationBlock.ExecutableFormatLevel; + + /// + public Models.LinearExecutable.CPUType CPUType => _executable.InformationBlock.CPUType; + + /// + public Models.LinearExecutable.OperatingSystem ModuleOS => _executable.InformationBlock.ModuleOS; + + /// + public uint ModuleVersion => _executable.InformationBlock.ModuleVersion; + + /// + public Models.LinearExecutable.ModuleFlags ModuleTypeFlags => _executable.InformationBlock.ModuleTypeFlags; + + /// + public uint ModuleNumberPages => _executable.InformationBlock.ModuleNumberPages; + + /// + public uint InitialObjectCS => _executable.InformationBlock.InitialObjectCS; + + /// + public uint InitialEIP => _executable.InformationBlock.InitialEIP; + + /// + public uint InitialObjectSS => _executable.InformationBlock.InitialObjectSS; + + /// + public uint InitialESP => _executable.InformationBlock.InitialESP; + + /// + public uint MemoryPageSize => _executable.InformationBlock.MemoryPageSize; + + /// + public uint BytesOnLastPage => _executable.InformationBlock.BytesOnLastPage; + + /// + public uint FixupSectionSize => _executable.InformationBlock.FixupSectionSize; + + /// + public uint FixupSectionChecksum => _executable.InformationBlock.FixupSectionChecksum; + + /// + public uint LoaderSectionSize => _executable.InformationBlock.LoaderSectionSize; + + /// + public uint LoaderSectionChecksum => _executable.InformationBlock.LoaderSectionChecksum; + + /// + public uint ObjectTableOffset => _executable.InformationBlock.ObjectTableOffset; + + /// + public uint ObjectTableCount => _executable.InformationBlock.ObjectTableCount; + + /// + public uint ObjectPageMapOffset => _executable.InformationBlock.ObjectPageMapOffset; + + /// + public uint ObjectIterateDataMapOffset => _executable.InformationBlock.ObjectIterateDataMapOffset; + + /// + public uint ResourceTableOffset => _executable.InformationBlock.ResourceTableOffset; + + /// + public uint ResourceTableCount => _executable.InformationBlock.ResourceTableCount; + + /// + public uint ResidentNamesTableOffset => _executable.InformationBlock.ResidentNamesTableOffset; + + /// + public uint EntryTableOffset => _executable.InformationBlock.EntryTableOffset; + + /// + public uint ModuleDirectivesTableOffset => _executable.InformationBlock.ModuleDirectivesTableOffset; + + /// + public uint ModuleDirectivesCount => _executable.InformationBlock.ModuleDirectivesCount; + + /// + public uint FixupPageTableOffset => _executable.InformationBlock.FixupPageTableOffset; + + /// + public uint FixupRecordTableOffset => _executable.InformationBlock.FixupRecordTableOffset; + + /// + public uint ImportedModulesNameTableOffset => _executable.InformationBlock.ImportedModulesNameTableOffset; + + /// + public uint ImportedModulesCount => _executable.InformationBlock.ImportedModulesCount; + + /// + public uint ImportProcedureNameTableOffset => _executable.InformationBlock.ImportProcedureNameTableOffset; + + /// + public uint PerPageChecksumTableOffset => _executable.InformationBlock.PerPageChecksumTableOffset; + + /// + public uint DataPagesOffset => _executable.InformationBlock.DataPagesOffset; + + /// + public uint PreloadPageCount => _executable.InformationBlock.PreloadPageCount; + + /// + public uint NonResidentNamesTableOffset => _executable.InformationBlock.NonResidentNamesTableOffset; + + /// + public uint NonResidentNamesTableLength => _executable.InformationBlock.NonResidentNamesTableLength; + + /// + public uint NonResidentNamesTableChecksum => _executable.InformationBlock.NonResidentNamesTableChecksum; + + /// + public uint AutomaticDataObject => _executable.InformationBlock.AutomaticDataObject; + + /// + public uint DebugInformationOffset => _executable.InformationBlock.DebugInformationOffset; + + /// + public uint DebugInformationLength => _executable.InformationBlock.DebugInformationLength; + + /// + public uint PreloadInstancePagesNumber => _executable.InformationBlock.PreloadInstancePagesNumber; + + /// + public uint DemandInstancePagesNumber => _executable.InformationBlock.DemandInstancePagesNumber; + + /// + public uint ExtraHeapAllocation => _executable.InformationBlock.ExtraHeapAllocation; + + #endregion + + #region Tables + + /// + public Models.LinearExecutable.ObjectTableEntry[] ObjectTable => _executable.ObjectTable; + + /// + public Models.LinearExecutable.ObjectPageTableEntry[] ObjectPageTable => _executable.ObjectPageTable; + + // TODO: Object iterate data map table [Does this exist?] + + /// + public Models.LinearExecutable.ResourceTableEntry[] ResourceTable => _executable.ResourceTable; + + /// + public Models.LinearExecutable.ResidentNameTableEntry[] ResidentNameTable => _executable.ResidentNameTable; + + /// + public Models.LinearExecutable.EntryTableEntry[] EntryTable => _executable.EntryTable; + + /// + public Models.LinearExecutable.ModuleFormatDirectivesTableEntry[] ModuleFormatDirectivesTable => _executable.ModuleFormatDirectivesTable; + + /// + public Models.LinearExecutable.VerifyRecordDirectiveTableEntry[] VerifyRecordDirectiveTable => _executable.VerifyRecordDirectiveTable; + + /// + public Models.LinearExecutable.PerPageChecksumTableEntry[] PerPageChecksumTable => _executable.PerPageChecksumTable; + + /// + public Models.LinearExecutable.FixupPageTableEntry[] FixupPageTable => _executable.FixupPageTable; + + /// + public Models.LinearExecutable.FixupRecordTableEntry[] FixupRecordTable => _executable.FixupRecordTable; + + /// + public Models.LinearExecutable.ImportModuleNameTableEntry[] ImportModuleNameTable => _executable.ImportModuleNameTable; + + /// + public Models.LinearExecutable.ImportModuleProcedureNameTableEntry[] ImportModuleProcedureNameTable => _executable.ImportModuleProcedureNameTable; + + // TODO: Preload Pages + // TODO: Demand Load Pages + // TODO: Iterated Pages + + /// + public Models.LinearExecutable.NonResidentNameTableEntry[] NonResidentNameTable => _executable.NonResidentNameTable; + + /// + public Models.LinearExecutable.DebugInformation DebugInformation => _executable.DebugInformation; + + #endregion #endregion