From 8aedb6449f6fec148c443dbfcad4a0b5748c8a5c Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Thu, 18 Jan 2024 08:26:25 -0500 Subject: [PATCH] Fix some vtables --- LEGO1/lego/legoomni/include/gifmanager.h | 14 ++++++++++---- LEGO1/lego/legoomni/include/legopathcontroller.h | 8 +++++++- LEGO1/lego/legoomni/src/common/gifmanager.cpp | 6 ++++++ .../lego/legoomni/src/paths/legopathcontroller.cpp | 10 ++++++++-- LEGO1/realtime/matrix.h | 2 +- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/LEGO1/lego/legoomni/include/gifmanager.h b/LEGO1/lego/legoomni/include/gifmanager.h index 3226b4b0..aa6d2d80 100644 --- a/LEGO1/lego/legoomni/include/gifmanager.h +++ b/LEGO1/lego/legoomni/include/gifmanager.h @@ -1,6 +1,7 @@ #ifndef GIFMANAGER_H #define GIFMANAGER_H +#include "compat.h" #include "decomp.h" #include "mxtypes.h" @@ -45,8 +46,11 @@ class GifMap { // VTABLE: LEGO1 0x100d86d4 class GifManagerBase { public: - // STUB: LEGO1 0x1005a310 - virtual ~GifManagerBase() {} // vtable+00 + // STUB: LEGO1 0x1005b660 + virtual ~GifManagerBase() {} + + // SYNTHETIC: LEGO1 0x1005a310 + // GifManagerBase::`scalar deleting destructor' inline GifData* Get(const char* p_name) { return m_unk0x8.Get(p_name); } @@ -59,8 +63,10 @@ class GifManagerBase { // VTABLE: LEGO1 0x100d86fc class GifManager : public GifManagerBase { public: - // STUB: LEGO1 0x1005a580 - virtual ~GifManager() {} // vtable+00 + virtual ~GifManager() override; + + // SYNTHETIC: LEGO1 0x1005a580 + // GifManager::`scalar deleting destructor' protected: undefined m_unk0x14[0x1c]; diff --git a/LEGO1/lego/legoomni/include/legopathcontroller.h b/LEGO1/lego/legoomni/include/legopathcontroller.h index f7278ca8..ada96e7e 100644 --- a/LEGO1/lego/legoomni/include/legopathcontroller.h +++ b/LEGO1/lego/legoomni/include/legopathcontroller.h @@ -8,7 +8,7 @@ class LegoPathController : public MxCore { public: LegoPathController(); - virtual ~LegoPathController() override; + virtual ~LegoPathController() override { Destroy(); }; virtual MxResult Tickle() override; // vtable+08 @@ -24,6 +24,12 @@ class LegoPathController : public MxCore { { return !strcmp(p_name, LegoPathController::ClassName()) || MxCore::IsA(p_name); } + + // SYNTHETIC: LEGO1 0x10045740 + // LegoPathController::`scalar deleting destructor' + + virtual void VTable0x14(); // vtable+0x14 + virtual void Destroy(); // vtable+0x18 }; #endif // LEGOPATHCONTROLLER_H diff --git a/LEGO1/lego/legoomni/src/common/gifmanager.cpp b/LEGO1/lego/legoomni/src/common/gifmanager.cpp index e9b10d49..c83714d4 100644 --- a/LEGO1/lego/legoomni/src/common/gifmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/gifmanager.cpp @@ -24,3 +24,9 @@ GifMapEntry* GifMap::FindNode(const char*& p_string) } return ret; } + +// STUB: LEGO1 0x10099870 +GifManager::~GifManager() +{ + // TODO +} diff --git a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp index a636253a..c187344c 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp @@ -6,8 +6,14 @@ LegoPathController::LegoPathController() // TODO } -// STUB: LEGO1 0x10045740 -LegoPathController::~LegoPathController() +// STUB: LEGO1 0x10045880 +void LegoPathController::VTable0x14() +{ + // TODO +} + +// STUB: LEGO1 0x10045b20 +void LegoPathController::Destroy() { // TODO } diff --git a/LEGO1/realtime/matrix.h b/LEGO1/realtime/matrix.h index 4e661ddb..9a301a01 100644 --- a/LEGO1/realtime/matrix.h +++ b/LEGO1/realtime/matrix.h @@ -58,7 +58,7 @@ class Matrix4 { m_data[3][3] = 1.0f; } // vtable+0x24 - // FUNCTION: LEGO1 0x10002850 + // FUNCTION: LEGO1 0x10002420 virtual void operator=(const Matrix4& p_matrix) { Equals(p_matrix); } // vtable+0x28 // FUNCTION: LEGO1 0x10002430