diff --git a/src/client/symbiote/Interop/FArchive.cs b/src/client/symbiote/Interop/FArchive.cs new file mode 100644 index 00000000..ccfa1b2d --- /dev/null +++ b/src/client/symbiote/Interop/FArchive.cs @@ -0,0 +1,96 @@ +namespace Vezel.Novadrop.Interop; + +[StructLayout(LayoutKind.Explicit, Size = 0x8c)] +public unsafe struct FArchive +{ + [StructLayout(LayoutKind.Sequential)] + public struct VirtualFunctionTable + { + public delegate* unmanaged __vdtor; + + public delegate* unmanaged Serialize; + + public delegate* unmanaged SerializeBits; + + public delegate* unmanaged SerializeInt; + + public void* __slot4; + + public delegate* unmanaged CountBytes; + + public void* __slot6; + + public void* __slot7; + + public void* __slot8; + + public void* __slot9; + + public delegate* unmanaged Tell; + + public delegate* unmanaged TotalSize; + + public delegate* unmanaged AtEnd; + + public delegate* unmanaged Seek; + + public void* __slot14; + + public void* __slot15; + + public void* __slot16; + + public void* __slot17; + + public void* __slot18; + + public void* __slot19; + + public delegate* unmanaged Flush; + + public delegate* unmanaged Close; + + public delegate* unmanaged GetError; + + public void* __slot23; + + public void* __slot24; + + public void* __slot25; + + public void* __slot26; + + public void* __slot27; + + public void* __slot28; + + public void* __slot29; + } + + public static delegate* unmanaged __ctor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a843f10); + + public static delegate* unmanaged __vdtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a845fe0); + + public static delegate* unmanaged AtEnd { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a846ac0); + + public static delegate* unmanaged ByteOrderSerialize { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a846b10); + + public static delegate* unmanaged Close { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a846ba0); + + public static delegate* unmanaged GetError { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a8488f0); + + public static delegate* unmanaged SerializeBits { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a84bf20); + + public static delegate* unmanaged SerializeInt { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a84bf90); + + [FieldOffset(0x0)] + public VirtualFunctionTable* VFT; +} diff --git a/src/client/symbiote/Interop/FBufferReader.cs b/src/client/symbiote/Interop/FBufferReader.cs new file mode 100644 index 00000000..969317b2 --- /dev/null +++ b/src/client/symbiote/Interop/FBufferReader.cs @@ -0,0 +1,41 @@ +namespace Vezel.Novadrop.Interop; + +[StructLayout(LayoutKind.Explicit, Size = 0xa0)] +public unsafe struct FBufferReader +{ + [StructLayout(LayoutKind.Sequential)] + public struct VirtualFunctionTable + { + public FArchive.VirtualFunctionTable FArchive; + } + + public static delegate* unmanaged __ctor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a852b50); + + public static delegate* unmanaged __dtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a854b20); + + public static delegate* unmanaged __vdtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a8582e0); + + public static delegate* unmanaged AtEnd { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a85be40); + + public static delegate* unmanaged Close { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a85bfc0); + + public static delegate* unmanaged Seek { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a879ef0); + + public static delegate* unmanaged Serialize { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a87a370); + + public static delegate* unmanaged Tell { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a87faf0); + + [FieldOffset(0x0)] + public FArchive FArchive; + + [FieldOffset(0x0)] + public VirtualFunctionTable* VFT; +} diff --git a/src/client/symbiote/Interop/IS1MemoryObject.cs b/src/client/symbiote/Interop/IS1MemoryObject.cs index 7d248a9f..de54b285 100644 --- a/src/client/symbiote/Interop/IS1MemoryObject.cs +++ b/src/client/symbiote/Interop/IS1MemoryObject.cs @@ -6,11 +6,14 @@ public unsafe struct IS1MemoryObject [StructLayout(LayoutKind.Sequential)] public struct VirtualFunctionTable { - public delegate* unmanaged __dtor; + public delegate* unmanaged __vdtor; public delegate* unmanaged GetSize; } + public static delegate* unmanaged __vdtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69b4579e0); + [FieldOffset(0x0)] public VirtualFunctionTable* VFT; } diff --git a/src/client/symbiote/Interop/S1.cs b/src/client/symbiote/Interop/S1.cs index 5df5d697..22bda15f 100644 --- a/src/client/symbiote/Interop/S1.cs +++ b/src/client/symbiote/Interop/S1.cs @@ -3,4 +3,13 @@ namespace Vezel.Novadrop.Interop; public static unsafe class S1 { public static ref S1Context* Context => ref *(S1Context**)Tera.Resolve(0x7ff69d7b2040); + + public static delegate* unmanaged appMalloc { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a8977d0); + + public static delegate* unmanaged appRealloc { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a897870); + + public static delegate* unmanaged appFree { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69a897750); } diff --git a/src/client/symbiote/Interop/S1ClientSocket.cs b/src/client/symbiote/Interop/S1ClientSocket.cs index be7e8dee..0a40c718 100644 --- a/src/client/symbiote/Interop/S1ClientSocket.cs +++ b/src/client/symbiote/Interop/S1ClientSocket.cs @@ -17,6 +17,15 @@ public struct VirtualFunctionTable public delegate* unmanaged Disconnect; } + public static delegate* unmanaged __ctor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69ba9fe80); + + public static delegate* unmanaged __dtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69baa38d0); + + public static delegate* unmanaged __vdtor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69baa5540); + public static delegate* unmanaged Connect { get; } = (delegate* unmanaged)Tera.Resolve(0x7ff69baa9de0); diff --git a/src/client/symbiote/Interop/S1ClientSocketBuffer.cs b/src/client/symbiote/Interop/S1ClientSocketBuffer.cs index fe0af44d..62699aa3 100644 --- a/src/client/symbiote/Interop/S1ClientSocketBuffer.cs +++ b/src/client/symbiote/Interop/S1ClientSocketBuffer.cs @@ -9,6 +9,9 @@ public struct InlineArray_data private byte _element; } + public static delegate* unmanaged __ctor { get; } = + (delegate* unmanaged)Tera.Resolve(0x7ff69baa27a0); + public static delegate* unmanaged Consume { get; } = (delegate* unmanaged)Tera.Resolve(0x7ff69babc170);