From 9ab3954bbb8712526edcf305a7410ada6775c0e6 Mon Sep 17 00:00:00 2001 From: MS Date: Sun, 11 Aug 2024 16:23:39 -0400 Subject: [PATCH] Minor tweak to MxList template (#1083) * Beta addrs for MxList and related functions * MxList DeleteAll and Empty functions --- .../legoomni/include/legopathcontrollerlist.h | 58 ++++++ LEGO1/lego/legoomni/src/entity/legoworld.cpp | 1 + LEGO1/omni/include/mxcore.h | 3 + LEGO1/omni/include/mxdsactionlist.h | 78 +++++++ LEGO1/omni/include/mxdsmultiaction.h | 5 + LEGO1/omni/include/mxdsselectaction.h | 4 + LEGO1/omni/include/mxlist.h | 45 ++-- LEGO1/omni/include/mxrectlist.h | 76 ++++++- LEGO1/omni/include/mxregionlist.h | 197 ++++++++++++++++++ LEGO1/omni/include/mxstringlist.h | 62 +++++- LEGO1/omni/src/action/mxdsmultiaction.cpp | 1 + LEGO1/omni/src/action/mxdsselectaction.cpp | 2 + .../omni/src/common/mxcompositepresenter.cpp | 4 +- LEGO1/omni/src/video/mxregion.cpp | 5 + LEGO1/omni/src/video/mxregioncursor.cpp | 1 + 15 files changed, 515 insertions(+), 27 deletions(-) diff --git a/LEGO1/lego/legoomni/include/legopathcontrollerlist.h b/LEGO1/lego/legoomni/include/legopathcontrollerlist.h index f3728b06..0bc1cb27 100644 --- a/LEGO1/lego/legoomni/include/legopathcontrollerlist.h +++ b/LEGO1/lego/legoomni/include/legopathcontrollerlist.h @@ -6,21 +6,27 @@ #include "mxtypes.h" // VTABLE: LEGO1 0x100d6380 +// VTABLE: BETA10 0x101bf130 // class MxCollection // VTABLE: LEGO1 0x100d6398 +// VTABLE: BETA10 0x101bf110 // class MxList // VTABLE: LEGO1 0x100d6320 +// VTABLE: BETA10 0x101bf0f0 // class MxPtrList // VTABLE: LEGO1 0x100d6338 +// VTABLE: BETA10 0x101bf0d0 // SIZE 0x18 class LegoPathControllerList : public MxPtrList { public: + // FUNCTION: BETA10 0x100dd060 LegoPathControllerList(MxBool p_ownership = FALSE) : MxPtrList(p_ownership) {} // FUNCTION: LEGO1 0x1001d210 + // FUNCTION: BETA10 0x100dd100 MxS8 Compare(LegoPathController* p_a, LegoPathController* p_b) override { return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; @@ -28,70 +34,122 @@ public: }; // VTABLE: LEGO1 0x100d6578 +// VTABLE: BETA10 0x101bf200 // class MxListCursor // VTABLE: LEGO1 0x100d6548 +// VTABLE: BETA10 0x101bf1e8 // class MxPtrListCursor // VTABLE: LEGO1 0x100d6560 +// VTABLE: BETA10 0x101bf1d0 // SIZE 0x10 class LegoPathControllerListCursor : public MxPtrListCursor { public: + // FUNCTION: BETA10 0x100dfd00 LegoPathControllerListCursor(LegoPathControllerList* p_list) : MxPtrListCursor(p_list) {} }; // TEMPLATE: LEGO1 0x1001d230 +// TEMPLATE: BETA10 0x100dd1f0 // MxCollection::Compare // TEMPLATE: LEGO1 0x1001d240 +// TEMPLATE: BETA10 0x100dd210 // MxList::MxList // TEMPLATE: LEGO1 0x1001d2d0 +// TEMPLATE: BETA10 0x100dd370 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x1001d320 +// TEMPLATE: BETA10 0x100dd430 // MxCollection::Destroy // TEMPLATE: LEGO1 0x1001d330 +// TEMPLATE: BETA10 0x100dd450 // MxList::~MxList // TEMPLATE: LEGO1 0x1001d3c0 +// TEMPLATE: BETA10 0x100dd530 // MxPtrList::Destroy // SYNTHETIC: LEGO1 0x1001d3d0 +// SYNTHETIC: BETA10 0x100dd580 // LegoPathControllerList::`scalar deleting destructor' // TEMPLATE: LEGO1 0x1001d440 +// TEMPLATE: BETA10 0x100dd5d0 // MxPtrList::~MxPtrList // SYNTHETIC: LEGO1 0x1001d490 +// SYNTHETIC: BETA10 0x100dd650 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x1001d500 +// SYNTHETIC: BETA10 0x100dd6a0 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x1001d5b0 +// SYNTHETIC: BETA10 0x100dd6f0 // MxPtrList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x1001d620 +// SYNTHETIC: BETA10 0x100dd740 // LegoPathControllerList::~LegoPathControllerList // SYNTHETIC: LEGO1 0x1001f830 +// SYNTHETIC: BETA10 0x100dfef0 // LegoPathControllerListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x1001f8a0 +// TEMPLATE: BETA10 0x100dff40 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x1001f8f0 +// SYNTHETIC: BETA10 0x100dffc0 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x1001f960 +// SYNTHETIC: BETA10 0x100e0010 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x1001f9d0 +// TEMPLATE: BETA10 0x100e0060 // MxListCursor::~MxListCursor // FUNCTION: LEGO1 0x1001fa20 +// FUNCTION: BETA10 0x100e00e0 // LegoPathControllerListCursor::~LegoPathControllerListCursor +// TEMPLATE: BETA10 0x100dd150 +// MxPtrList::MxPtrList + +// TEMPLATE: BETA10 0x100dd2c0 +// MxCollection::MxCollection + +// TEMPLATE: BETA10 0x100dd400 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x100dd4e0 +// MxPtrList::SetOwnership + +// TEMPLATE: BETA10 0x100dfda0 +// MxPtrListCursor::MxPtrListCursor + +// TEMPLATE: BETA10 0x100dfe40 +// MxListCursor::MxListCursor + +// TEMPLATE: BETA10 0x100e1cb0 +// MxList::DeleteAll + +// TEMPLATE: BETA10 0x100e1d70 +// MxListCursor::Next + +// TEMPLATE: BETA10 0x100e1ff0 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x100e2050 +// MxListEntry::GetValue + #endif // LEGOPATHCONTROLLERLIST_H diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index b7fd9aab..dce201c0 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -106,6 +106,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction) } // FUNCTION: LEGO1 0x1001e9d0 +// FUNCTION: BETA10 0x100d99ea void LegoWorld::Destroy(MxBool p_fromDestructor) { m_destroyed = TRUE; diff --git a/LEGO1/omni/include/mxcore.h b/LEGO1/omni/include/mxcore.h index 4bdc6193..4f271536 100644 --- a/LEGO1/omni/include/mxcore.h +++ b/LEGO1/omni/include/mxcore.h @@ -48,4 +48,7 @@ private: MxU32 m_id; // 0x04 }; +// SYNTHETIC: BETA10 0x10096940 +// MxCore::operator= + #endif // MXCORE_H diff --git a/LEGO1/omni/include/mxdsactionlist.h b/LEGO1/omni/include/mxdsactionlist.h index 989508e6..0124188d 100644 --- a/LEGO1/omni/include/mxdsactionlist.h +++ b/LEGO1/omni/include/mxdsactionlist.h @@ -6,18 +6,23 @@ #include "mxlist.h" // VTABLE: LEGO1 0x100dcea8 +// VTABLE: BETA10 0x101c2928 // class MxCollection // VTABLE: LEGO1 0x100dcec0 +// VTABLE: BETA10 0x101c2910 // class MxList // VTABLE: LEGO1 0x100dced8 +// VTABLE: BETA10 0x101c28f8 // SIZE 0x1c class MxDSActionList : public MxList { public: + // FUNCTION: BETA10 0x1015ad10 MxDSActionList() { this->m_unk0x18 = 0; } // FUNCTION: LEGO1 0x100c9c90 + // FUNCTION: BETA10 0x1015ad90 MxS8 Compare(MxDSAction* p_a, MxDSAction* p_b) override { return p_a == p_b ? 0 : p_a < p_b ? -1 : 1; @@ -27,6 +32,7 @@ public: static void Destroy(MxDSAction* p_action) { delete p_action; } // SYNTHETIC: LEGO1 0x100c9dc0 + // SYNTHETIC: BETA10 0x1015b070 // MxDSActionList::`scalar deleting destructor' private: @@ -34,31 +40,103 @@ private: }; // VTABLE: LEGO1 0x100d7e68 +// VTABLE: BETA10 0x101baf30 // class MxListCursor // VTABLE: LEGO1 0x100d7e50 +// VTABLE: BETA10 0x101baf18 // SIZE 0x10 class MxDSActionListCursor : public MxListCursor { public: + // FUNCTION: BETA10 0x1004db00 MxDSActionListCursor(MxDSActionList* p_list) : MxListCursor(p_list) {} }; // TEMPLATE: LEGO1 0x100c9cc0 +// TEMPLATE: BETA10 0x1015aed0 // MxCollection::Compare // TEMPLATE: LEGO1 0x100c9cd0 +// TEMPLATE: BETA10 0x1015af80 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x100c9d20 +// TEMPLATE: BETA10 0x1015aff0 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100c9d30 +// TEMPLATE: BETA10 0x1015b000 // MxList::~MxList // SYNTHETIC: LEGO1 0x100c9e30 +// SYNTHETIC: BETA10 0x1015b0b0 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c9ea0 +// SYNTHETIC: BETA10 0x1015b0f0 // MxList::`scalar deleting destructor' +// TEMPLATE: BETA10 0x1004dba0 +// MxListCursor::MxListCursor + +// TEMPLATE: BETA10 0x1004e460 +// MxListCursor::Head + +// TEMPLATE: BETA10 0x1004e4b0 +// ?Next@?$MxListCursor@PAVMxDSAction@@@@QAEEXZ + +// TEMPLATE: BETA10 0x1004e530 +// MxListCursor::Current + +// TEMPLATE: BETA10 0x1004e590 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x1004e5c0 +// MxListEntry::GetValue + +// TEMPLATE: BETA10 0x10137190 +// ?Next@?$MxListCursor@PAVMxDSAction@@@@QAEEAAPAVMxDSAction@@@Z + +// TEMPLATE: BETA10 0x101384e0 +// MxListCursor::Find + +// TEMPLATE: BETA10 0x10138580 +// MxListCursor::Detach + +// TEMPLATE: BETA10 0x101385c0 +// MxList::DeleteEntry + +// TEMPLATE: BETA10 0x10138670 +// MxListEntry::GetPrev + +// TEMPLATE: BETA10 0x10138690 +// MxListEntry::SetPrev + +// TEMPLATE: BETA10 0x101386c0 +// MxListEntry::SetNext + +// TEMPLATE: BETA10 0x1015ae10 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x1015ae40 +// MxList::MxList + +// TEMPLATE: BETA10 0x1015aef0 +// MxCollection::MxCollection + +// SYNTHETIC: BETA10 0x1015b130 +// MxDSActionList::~MxDSActionList + +// TEMPLATE: BETA10 0x1015b250 +// MxList::Append + +// TEMPLATE: BETA10 0x1015bca0 +// MxList::InsertEntry + +// TEMPLATE: BETA10 0x1015c140 +// MxListEntry::MxListEntry + +// TEMPLATE: BETA10 0x1015bd90 +// MxList::DeleteAll + #endif // MXDSACTIONLIST_H diff --git a/LEGO1/omni/include/mxdsmultiaction.h b/LEGO1/omni/include/mxdsmultiaction.h index 65ecb411..84ad1a4a 100644 --- a/LEGO1/omni/include/mxdsmultiaction.h +++ b/LEGO1/omni/include/mxdsmultiaction.h @@ -36,6 +36,7 @@ public: MxBool HasId(MxU32 p_objectId) override; // vtable+34; void SetUnknown90(MxLong p_unk0x90) override; // vtable+38; + // FUNCTION: BETA10 0x1004e180 MxDSActionList* GetActionList() const { return m_actions; } // SYNTHETIC: LEGO1 0x100ca040 @@ -47,15 +48,19 @@ protected: }; // SYNTHETIC: LEGO1 0x1004ad10 +// SYNTHETIC: BETA10 0x1004dc50 // MxDSActionListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x1004ad80 +// TEMPLATE: BETA10 0x1004dca0 // MxListCursor::~MxListCursor // SYNTHETIC: LEGO1 0x1004add0 +// SYNTHETIC: BETA10 0x1004dd20 // MxListCursor::`scalar deleting destructor' // FUNCTION: LEGO1 0x1004ae40 +// FUNCTION: BETA10 0x1004dd70 // MxDSActionListCursor::~MxDSActionListCursor #endif // MXDSMULTIACTION_H diff --git a/LEGO1/omni/include/mxdsselectaction.h b/LEGO1/omni/include/mxdsselectaction.h index 271819a8..3f3e4874 100644 --- a/LEGO1/omni/include/mxdsselectaction.h +++ b/LEGO1/omni/include/mxdsselectaction.h @@ -41,15 +41,19 @@ private: }; // SYNTHETIC: LEGO1 0x100cbbd0 +// SYNTHETIC: BETA10 0x1015bb60 // MxStringListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100cbc40 +// TEMPLATE: BETA10 0x1015bba0 // MxListCursor::~MxListCursor // SYNTHETIC: LEGO1 0x100cbc90 +// SYNTHETIC: BETA10 0x1015bc00 // MxListCursor::`scalar deleting destructor' // FUNCTION: LEGO1 0x100cbd00 +// FUNCTION: BETA10 0x1015bc40 // MxStringListCursor::~MxStringListCursor #endif // MXDSSELECTACTION_H diff --git a/LEGO1/omni/include/mxlist.h b/LEGO1/omni/include/mxlist.h index 985c48d2..b020eeb3 100644 --- a/LEGO1/omni/include/mxlist.h +++ b/LEGO1/omni/include/mxlist.h @@ -45,17 +45,14 @@ private: template class MxList : protected MxCollection { public: - MxList() - { - m_last = NULL; - m_first = NULL; - } + MxList() { m_first = m_last = NULL; } ~MxList() override; void Append(T p_obj) { InsertEntry(p_obj, this->m_last, NULL); } void Prepend(T p_obj) { InsertEntry(p_obj, NULL, this->m_first); } - void DeleteAll(MxBool p_destroy = TRUE); + void DeleteAll(); + void Empty(); MxU32 GetCount() { return this->m_count; } friend class MxListCursor; @@ -136,27 +133,33 @@ MxList::~MxList() DeleteAll(); } +// Delete entries and values template -inline void MxList::DeleteAll(MxBool p_destroy) +inline void MxList::DeleteAll() { - for (MxListEntry* t = m_first;;) { - if (!t) { - break; - } - - MxListEntry* next = t->GetNext(); - - if (p_destroy) { - this->m_customDestructor(t->GetValue()); - } - + MxListEntry* next; + for (MxListEntry* t = m_first; t; t = next) { + next = t->GetNext(); + this->m_customDestructor(t->GetValue()); delete t; - t = next; } this->m_count = 0; - m_last = NULL; - m_first = NULL; + m_first = m_last = NULL; +} + +// Delete entries only +template +inline void MxList::Empty() +{ + MxListEntry* next; + for (MxListEntry* t = m_first; t; t = next) { + next = t->GetNext(); + delete t; + } + + this->m_count = 0; + m_first = m_last = NULL; } template diff --git a/LEGO1/omni/include/mxrectlist.h b/LEGO1/omni/include/mxrectlist.h index 88cffa9f..c4be8dcd 100644 --- a/LEGO1/omni/include/mxrectlist.h +++ b/LEGO1/omni/include/mxrectlist.h @@ -5,85 +5,157 @@ #include "mxrect32.h" // VTABLE: LEGO1 0x100dc3f0 +// VTABLE: BETA10 0x101c1fb8 // SIZE 0x18 class MxRectList : public MxPtrList { public: + // FUNCTION: BETA10 0x1013b980 MxRectList(MxBool p_ownership = FALSE) : MxPtrList(p_ownership) {} }; // VTABLE: LEGO1 0x100dc438 +// VTABLE: BETA10 0x101c2048 // class MxListCursor // VTABLE: LEGO1 0x100dc408 +// VTABLE: BETA10 0x101c2030 // class MxPtrListCursor // VTABLE: LEGO1 0x100dc420 +// VTABLE: BETA10 0x101c2018 class MxRectListCursor : public MxPtrListCursor { public: + // FUNCTION: BETA10 0x1013bf10 MxRectListCursor(MxRectList* p_list) : MxPtrListCursor(p_list) {} }; // VTABLE: LEGO1 0x100dc3d8 +// VTABLE: BETA10 0x101c1fd0 // class MxPtrList // VTABLE: LEGO1 0x100dc450 +// VTABLE: BETA10 0x101c1fe8 // class MxList // VTABLE: LEGO1 0x100dc468 +// VTABLE: BETA10 0x101c2000 // class MxCollection // TEMPLATE: LEGO1 0x100b3c00 +// TEMPLATE: BETA10 0x1013ba00 // MxCollection::Compare // TEMPLATE: LEGO1 0x100b3c10 +// TEMPLATE: BETA10 0x1013bb30 // MxCollection::MxCollection // TEMPLATE: LEGO1 0x100b3c80 +// TEMPLATE: BETA10 0x1013bbc0 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x100b3cd0 +// TEMPLATE: BETA10 0x1013bc60 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100b3ce0 +// TEMPLATE: BETA10 0x1013bc70 // MxList::~MxList // TEMPLATE: LEGO1 0x100b3d70 +// TEMPLATE: BETA10 0x1013bd20 // MxPtrList::Destroy // SYNTHETIC: LEGO1 0x100b3d80 +// SYNTHETIC: BETA10 0x1013bd50 // MxRectList::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100b3df0 +// TEMPLATE: BETA10 0x1013bd90 // MxPtrList::~MxPtrList // SYNTHETIC: LEGO1 0x100b3e40 +// SYNTHETIC: BETA10 0x1013bdf0 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100b3eb0 +// SYNTHETIC: BETA10 0x1013be30 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100b3f60 +// SYNTHETIC: BETA10 0x1013be70 // MxPtrList::`scalar deleting destructor' -// TEMPLATE: LEGO1 0x100b3fd0 +// SYNTHETIC: LEGO1 0x100b3fd0 +// SYNTHETIC: BETA10 0x1013beb0 // MxRectList::~MxRectList // SYNTHETIC: LEGO1 0x100b4020 +// SYNTHETIC: BETA10 0x1013c0a0 // MxRectListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100b4090 +// TEMPLATE: BETA10 0x1013c0e0 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x100b40e0 +// SYNTHETIC: BETA10 0x1013c140 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100b4150 +// SYNTHETIC: BETA10 0x1013c180 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100b41c0 +// TEMPLATE: BETA10 0x1013c1c0 // MxListCursor::~MxListCursor -// TEMPLATE: LEGO1 0x100b4210 +// SYNTHETIC: LEGO1 0x100b4210 +// SYNTHETIC: BETA10 0x1013c220 // MxRectListCursor::~MxRectListCursor +// TEMPLATE: BETA10 0x1013ba20 +// MxPtrList::MxPtrList + +// TEMPLATE: BETA10 0x1013baa0 +// MxList::MxList + +// TEMPLATE: BETA10 0x1013bc30 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x1013bce0 +// MxPtrList::SetOwnership + +// TEMPLATE: BETA10 0x1013bf90 +// MxPtrListCursor::MxPtrListCursor + +// TEMPLATE: BETA10 0x1013c010 +// MxListCursor::MxListCursor + +// TEMPLATE: BETA10 0x1013c3c0 +// MxList::DeleteAll + +// TEMPLATE: BETA10 0x1013c450 +// MxListCursor::Next + +// TEMPLATE: BETA10 0x1013c610 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x1013c630 +// MxListEntry::GetValue + +// TEMPLATE: BETA10 0x10152860 +// MxList::Append + +// TEMPLATE: BETA10 0x10152890 +// MxList::InsertEntry + +// TEMPLATE: BETA10 0x10152980 +// MxListEntry::MxListEntry + +// TEMPLATE: BETA10 0x101529c0 +// MxListEntry::SetPrev + +// TEMPLATE: BETA10 0x101529f0 +// MxListEntry::SetNext + #endif // MXRECTLIST_H diff --git a/LEGO1/omni/include/mxregionlist.h b/LEGO1/omni/include/mxregionlist.h index 0852feda..3fc220ff 100644 --- a/LEGO1/omni/include/mxregionlist.h +++ b/LEGO1/omni/include/mxregionlist.h @@ -27,33 +27,43 @@ private: }; // VTABLE: LEGO1 0x100dcc40 +// VTABLE: BETA10 0x101c2628 // class MxCollection // VTABLE: LEGO1 0x100dcc58 +// VTABLE: BETA10 0x101c2610 // class MxList // VTABLE: LEGO1 0x100dcc70 +// VTABLE: BETA10 0x101c25f8 // class MxPtrList // VTABLE: LEGO1 0x100dcc88 +// VTABLE: BETA10 0x101c25e0 // SIZE 0x18 class MxRegionLeftRightList : public MxPtrList { public: + // FUNCTION: BETA10 0x1014bdd0 MxRegionLeftRightList() : MxPtrList(TRUE) {} // SYNTHETIC: LEGO1 0x100c4e90 + // SYNTHETIC: BETA10 0x1014c1a0 // MxRegionLeftRightList::`scalar deleting destructor' }; // VTABLE: LEGO1 0x100dcbf8 +// VTABLE: BETA10 0x101c25b0 // class MxPtrListCursor // VTABLE: LEGO1 0x100dcc28 +// VTABLE: BETA10 0x101c25c8 // class MxListCursor // VTABLE: LEGO1 0x100dcc10 +// VTABLE: BETA10 0x101c2598 class MxRegionLeftRightListCursor : public MxPtrListCursor { public: + // FUNCTION: BETA10 0x1014ba10 MxRegionLeftRightListCursor(MxRegionLeftRightList* p_list) : MxPtrListCursor(p_list) {} }; @@ -85,28 +95,36 @@ private: }; // VTABLE: LEGO1 0x100dcb10 +// VTABLE: BETA10 0x101c24f8 // class MxCollection // VTABLE: LEGO1 0x100dcb28 +// VTABLE: BETA10 0x101c24e0 // class MxList // VTABLE: LEGO1 0x100dcb40 +// VTABLE: BETA10 0x101c24c8 // class MxPtrList // VTABLE: LEGO1 0x100dcb58 +// VTABLE: BETA10 0x101c24b0 // SIZE 0x18 class MxRegionTopBottomList : public MxPtrList { public: + // FUNCTION: BETA10 0x1014abb0 MxRegionTopBottomList() : MxPtrList(TRUE) {} // SYNTHETIC: LEGO1 0x100c3410 + // SYNTHETIC: BETA10 0x1014af90 // MxRegionTopBottomList::`scalar deleting destructor' }; // VTABLE: LEGO1 0x100dcb70 +// VTABLE: BETA10 0x101c2528 // class MxPtrListCursor // VTABLE: LEGO1 0x100dcba0 +// VTABLE: BETA10 0x101c2540 // class MxListCursor // TODO: The initialize list param type should be MxRegionTopBottomList, but doing that @@ -114,96 +132,127 @@ public: // It also works with MxPtrList, so we'll do that until we figure this out. // VTABLE: LEGO1 0x100dcb88 +// VTABLE: BETA10 0x101c2510 class MxRegionTopBottomListCursor : public MxPtrListCursor { public: + // FUNCTION: BETA10 0x1014b470 MxRegionTopBottomListCursor(MxPtrList* p_list) : MxPtrListCursor(p_list) {} }; // TEMPLATE: LEGO1 0x100c32e0 +// TEMPLATE: BETA10 0x1014ac30 // MxCollection::Compare // TEMPLATE: LEGO1 0x100c32f0 +// TEMPLATE: BETA10 0x1014adf0 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x100c3340 +// TEMPLATE: BETA10 0x1014ae90 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100c3350 +// TEMPLATE: BETA10 0x1014aea0 // MxList::~MxList // TEMPLATE: LEGO1 0x100c33e0 +// TEMPLATE: BETA10 0x1014af50 // MxPtrList::Destroy // TEMPLATE: LEGO1 0x100c3480 +// TEMPLATE: BETA10 0x1014afd0 // MxPtrList::~MxPtrList // SYNTHETIC: LEGO1 0x100c34d0 +// SYNTHETIC: BETA10 0x1014b030 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3540 +// SYNTHETIC: BETA10 0x1014b070 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c35f0 +// SYNTHETIC: BETA10 0x1014b130 // MxPtrList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3be0 +// SYNTHETIC: BETA10 0x1014b600 // MxRegionTopBottomListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c3c50 +// TEMPLATE: BETA10 0x1014b640 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x100c3ca0 +// SYNTHETIC: BETA10 0x1014b6a0 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3d10 +// SYNTHETIC: BETA10 0x1014b6e0 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c3d80 +// TEMPLATE: BETA10 0x1014b720 // MxListCursor::~MxListCursor // FUNCTION: LEGO1 0x100c3dd0 +// FUNCTION: BETA10 0x1014b780 // MxRegionTopBottomListCursor::~MxRegionTopBottomListCursor // SYNTHETIC: LEGO1 0x100c4790 +// SYNTHETIC: BETA10 0x1014bba0 // MxRegionLeftRightListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4800 +// TEMPLATE: BETA10 0x1014bbe0 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x100c4850 +// SYNTHETIC: BETA10 0x1014bc40 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c48c0 +// SYNTHETIC: BETA10 0x1014bc80 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4930 +// TEMPLATE: BETA10 0x1014bcc0 // MxListCursor::~MxListCursor // TEMPLATE: LEGO1 0x100c4d80 +// TEMPLATE: BETA10 0x1014be50 // MxCollection::Compare // TEMPLATE: LEGO1 0x100c4d90 +// TEMPLATE: BETA10 0x1014c010 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x100c4de0 +// TEMPLATE: BETA10 0x1014c0b0 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100c4df0 +// TEMPLATE: BETA10 0x1014c0c0 // MxList::~MxList // TEMPLATE: LEGO1 0x100c4f00 +// TEMPLATE: BETA10 0x1014c1e0 // MxPtrList::~MxPtrList // SYNTHETIC: LEGO1 0x100c4f50 +// SYNTHETIC: BETA10 0x1014c240 // MxCollection::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4e80 +// TEMPLATE: BETA10 0x1014c170 // MxPtrList::Destroy // SYNTHETIC: LEGO1 0x100c4fc0 +// SYNTHETIC: BETA10 0x1014c280 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c5070 +// SYNTHETIC: BETA10 0x1014c2c0 // MxPtrList::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c54f0 @@ -216,15 +265,163 @@ public: // MxListCursor::operator= // TEMPLATE: LEGO1 0x100c58c0 +// TEMPLATE: BETA10 0x1014c650 // MxList::InsertEntry // TEMPLATE: LEGO1 0x100c5970 +// TEMPLATE: BETA10 0x1014cb20 // MxList::InsertEntry // TEMPLATE: LEGO1 0x100c5a20 +// TEMPLATE: BETA10 0x1014d050 // MxListEntry::MxListEntry // TEMPLATE: LEGO1 0x100c5a40 +// TEMPLATE: BETA10 0x1014d150 // MxList::DeleteEntry +// TEMPLATE: BETA10 0x1014ac50 +// MxPtrList::MxPtrList + +// TEMPLATE: BETA10 0x1014acd0 +// MxList::MxList + +// TEMPLATE: BETA10 0x1014ad60 +// MxCollection::MxCollection + +// TEMPLATE: BETA10 0x1014ae60 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x1014af10 +// MxPtrList::SetOwnership + +// FUNCTION: BETA10 0x1014b170 +// MxRegionTopBottomList::~MxRegionTopBottomList + +// TEMPLATE: BETA10 0x1014b440 +// MxList::Append + +// TEMPLATE: BETA10 0x1014b4f0 +// MxPtrListCursor::MxPtrListCursor + +// TEMPLATE: BETA10 0x1014b570 +// MxListCursor::MxListCursor + +// TEMPLATE: BETA10 0x1014ba90 +// MxPtrListCursor::MxPtrListCursor + +// TEMPLATE: BETA10 0x1014bb10 +// MxListCursor::MxListCursor + +// FUNCTION: BETA10 0x1014bd20 +// MxRegionLeftRightListCursor::~MxRegionLeftRightListCursor + +// TEMPLATE: BETA10 0x1014be70 +// MxPtrList::MxPtrList + +// TEMPLATE: BETA10 0x1014bef0 +// MxList::MxList + +// TEMPLATE: BETA10 0x1014bf80 +// MxCollection::MxCollection + +// TEMPLATE: BETA10 0x1014c080 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x1014c130 +// MxPtrList::SetOwnership + +// FUNCTION: BETA10 0x1014c300 +// MxRegionLeftRightList::~MxRegionLeftRightList + +// TEMPLATE: BETA10 0x1014c390 +// MxList::Append + +// SYNTHETIC: BETA10 0x1014c3c0 +// MxRegionLeftRightListCursor::operator= + +// SYNTHETIC: BETA10 0x1014c3f0 +// MxPtrListCursor::operator= + +// SYNTHETIC: BETA10 0x1014c420 +// MxListCursor::operator= + +// TEMPLATE: BETA10 0x1014c740 +// MxList::DeleteAll + +// TEMPLATE: BETA10 0x1014c7d0 +// MxListCursor::First + +// TEMPLATE: BETA10 0x1014c830 +// MxListCursor::Last + +// TEMPLATE: BETA10 0x1014c890 +// MxListCursor::Next + +// TEMPLATE: BETA10 0x1014c970 +// MxListCursor::Prev + +// TEMPLATE: BETA10 0x1014c9f0 +// MxListCursor::Current + +// TEMPLATE: BETA10 0x1014ca40 +// MxListCursor::Prepend + +// TEMPLATE: BETA10 0x1014ca90 +// MxListCursor::Destroy + +// TEMPLATE: BETA10 0x1014caf0 +// MxListCursor::HasMatch + +// TEMPLATE: BETA10 0x1014cc10 +// MxList::DeleteAll + +// TEMPLATE: BETA10 0x1014cd20 +// MxListCursor::Next + +// TEMPLATE: BETA10 0x1014cda0 +// MxListCursor::Prev + +// TEMPLATE: BETA10 0x1014ce70 +// MxListCursor::Prepend + +// TEMPLATE: BETA10 0x1014cec0 +// MxListCursor::Destroy + +// TEMPLATE: BETA10 0x1014cf50 +// MxListEntry::MxListEntry + +// TEMPLATE: BETA10 0x1014cf90 +// MxListEntry::GetPrev + +// TEMPLATE: BETA10 0x1014cfb0 +// MxListEntry::SetPrev + +// TEMPLATE: BETA10 0x1014cfe0 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x1014d000 +// MxListEntry::SetNext + +// TEMPLATE: BETA10 0x1014d030 +// MxListEntry::GetValue + +// TEMPLATE: BETA10 0x1014d090 +// MxListEntry::GetPrev + +// TEMPLATE: BETA10 0x1014d0b0 +// MxListEntry::SetPrev + +// TEMPLATE: BETA10 0x1014d0e0 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x1014d100 +// MxListEntry::SetNext + +// TEMPLATE: BETA10 0x1014d130 +// MxListEntry::GetValue + +// TEMPLATE: BETA10 0x1014d200 +// MxList::DeleteEntry + #endif // MXREGIONLIST_H diff --git a/LEGO1/omni/include/mxstringlist.h b/LEGO1/omni/include/mxstringlist.h index 7894aabd..e8556522 100644 --- a/LEGO1/omni/include/mxstringlist.h +++ b/LEGO1/omni/include/mxstringlist.h @@ -5,56 +5,112 @@ #include "mxstring.h" // VTABLE: LEGO1 0x100dd040 +// VTABLE: BETA10 0x101c2a18 // SIZE 0x18 class MxStringList : public MxList {}; +// SYNTHETIC: BETA10 0x1015b520 +// MxStringList::MxStringList + +// SYNTHETIC: LEGO1 0x100cb860 +// SYNTHETIC: BETA10 0x1015b920 +// MxStringList::`scalar deleting destructor' + +// SYNTHETIC: BETA10 0x1015b960 +// MxStringList::~MxStringList + // VTABLE: LEGO1 0x100dd058 +// VTABLE: BETA10 0x101c2a60 // SIZE 0x10 class MxStringListCursor : public MxListCursor { public: + // FUNCTION: BETA10 0x1015ba50 MxStringListCursor(MxStringList* p_list) : MxListCursor(p_list) {} - - // SYNTHETIC: LEGO1 0x100cb860 - // MxStringList::`scalar deleting destructor' }; // VTABLE: LEGO1 0x100dd010 +// VTABLE: BETA10 0x101c2a48 // class MxCollection // VTABLE: LEGO1 0x100dd028 +// VTABLE: BETA10 0x101c2a30 // class MxList // VTABLE: LEGO1 0x100dd070 +// VTABLE: BETA10 0x101c2a78 // class MxListCursor // TEMPLATE: LEGO1 0x100cb3c0 +// TEMPLATE: BETA10 0x1015b590 // MxCollection::Compare // TEMPLATE: LEGO1 0x100cb420 +// TEMPLATE: BETA10 0x1015b730 // MxCollection::~MxCollection // TEMPLATE: LEGO1 0x100cb470 +// TEMPLATE: BETA10 0x1015b7d0 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100cb4c0 +// TEMPLATE: BETA10 0x1015b830 // MxList::~MxList // SYNTHETIC: LEGO1 0x100cb590 +// SYNTHETIC: BETA10 0x1015b8a0 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100cb600 +// SYNTHETIC: BETA10 0x1015b8e0 // MxList::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100cbb40 +// TEMPLATE: BETA10 0x1015b9c0 // MxList::Append // TEMPLATE: LEGO1 0x100cc2d0 +// TEMPLATE: BETA10 0x1015be50 // MxList::InsertEntry // TEMPLATE: LEGO1 0x100cc3c0 +// TEMPLATE: BETA10 0x1015c180 // MxListEntry::MxListEntry // TEMPLATE: LEGO1 0x100cc450 +// TEMPLATE: BETA10 0x1015c2a0 // MxListEntry::GetValue +// TEMPLATE: BETA10 0x1015b610 +// MxList::MxList + +// TEMPLATE: BETA10 0x1015b6a0 +// MxCollection::MxCollection + +// TEMPLATE: BETA10 0x1015b7a0 +// MxCollection::SetDestroy + +// TEMPLATE: BETA10 0x1015bad0 +// MxListCursor::MxListCursor + +// TEMPLATE: BETA10 0x1015bf80 +// MxList::DeleteAll + +// TEMPLATE: BETA10 0x1015c070 +// MxListCursor::Next + +// TEMPLATE: BETA10 0x1015c220 +// MxListEntry::SetPrev + +// TEMPLATE: BETA10 0x1015c250 +// MxListEntry::GetNext + +// TEMPLATE: BETA10 0x1015c270 +// MxListEntry::SetNext + +// SYNTHETIC: BETA10 0x1015c310 +// MxListEntry::`scalar deleting destructor' + +// TEMPLATE: BETA10 0x1015c350 +// MxListEntry::~MxListEntry + #endif // MXSTRINGLIST_H diff --git a/LEGO1/omni/src/action/mxdsmultiaction.cpp b/LEGO1/omni/src/action/mxdsmultiaction.cpp index edf01c1d..0425b508 100644 --- a/LEGO1/omni/src/action/mxdsmultiaction.cpp +++ b/LEGO1/omni/src/action/mxdsmultiaction.cpp @@ -22,6 +22,7 @@ MxDSMultiAction::~MxDSMultiAction() } // FUNCTION: LEGO1 0x100ca0d0 +// FUNCTION: BETA10 0x101595ad void MxDSMultiAction::CopyFrom(MxDSMultiAction& p_dsMultiAction) { this->m_actions->DeleteAll(); diff --git a/LEGO1/omni/src/action/mxdsselectaction.cpp b/LEGO1/omni/src/action/mxdsselectaction.cpp index 0aa5f053..89eb4e9a 100644 --- a/LEGO1/omni/src/action/mxdsselectaction.cpp +++ b/LEGO1/omni/src/action/mxdsselectaction.cpp @@ -26,6 +26,7 @@ MxDSSelectAction::~MxDSSelectAction() } // FUNCTION: LEGO1 0x100cb950 +// FUNCTION: BETA10 0x1015a6ae void MxDSSelectAction::CopyFrom(MxDSSelectAction& p_dsSelectAction) { this->m_unk0x9c = p_dsSelectAction.m_unk0x9c; @@ -82,6 +83,7 @@ MxU32 MxDSSelectAction::GetSizeOnDisk() } // FUNCTION: LEGO1 0x100cbf60 +// FUNCTION: BETA10 0x1015aa30 void MxDSSelectAction::Deserialize(MxU8*& p_source, MxS16 p_unk0x24) { MxString string; diff --git a/LEGO1/omni/src/common/mxcompositepresenter.cpp b/LEGO1/omni/src/common/mxcompositepresenter.cpp index a88279ac..124d6b0a 100644 --- a/LEGO1/omni/src/common/mxcompositepresenter.cpp +++ b/LEGO1/omni/src/common/mxcompositepresenter.cpp @@ -23,6 +23,7 @@ MxCompositePresenter::~MxCompositePresenter() } // FUNCTION: LEGO1 0x100b6410 +// FUNCTION: BETA10 0x100e9d37 MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxDSAction* p_action) { AUTOLOCK(m_criticalSection); @@ -76,6 +77,7 @@ MxResult MxCompositePresenter::StartAction(MxStreamController* p_controller, MxD } // FUNCTION: LEGO1 0x100b65e0 +// FUNCTION: BETA10 0x101375bc void MxCompositePresenter::EndAction() { AUTOLOCK(m_criticalSection); @@ -84,7 +86,7 @@ void MxCompositePresenter::EndAction() return; } - ((MxDSMultiAction*) m_action)->GetActionList()->DeleteAll(FALSE); + ((MxDSMultiAction*) m_action)->GetActionList()->Empty(); while (!m_list.empty()) { MxPresenter* presenter = m_list.front(); diff --git a/LEGO1/omni/src/video/mxregion.cpp b/LEGO1/omni/src/video/mxregion.cpp index f499d54e..f294d3a5 100644 --- a/LEGO1/omni/src/video/mxregion.cpp +++ b/LEGO1/omni/src/video/mxregion.cpp @@ -7,6 +7,7 @@ DECOMP_SIZE_ASSERT(MxRegionTopBottom, 0x0c); DECOMP_SIZE_ASSERT(MxRegionLeftRight, 0x08); // FUNCTION: LEGO1 0x100c31c0 +// FUNCTION: BETA10 0x10148f00 MxRegion::MxRegion() { m_list = new MxRegionTopBottomList; @@ -28,6 +29,7 @@ MxRegion::~MxRegion() } // FUNCTION: LEGO1 0x100c3700 +// FUNCTION: BETA10 0x1014907a void MxRegion::Reset() { m_list->DeleteAll(); @@ -35,6 +37,7 @@ void MxRegion::Reset() } // FUNCTION: LEGO1 0x100c3750 +// FUNCTION: BETA10 0x101490bd void MxRegion::VTable0x18(MxRect32& p_rect) { MxRect32 rect(p_rect); @@ -117,6 +120,7 @@ MxRegionTopBottom::MxRegionTopBottom(MxS32 p_top, MxS32 p_bottom) } // FUNCTION: LEGO1 0x100c50e0 +// FUNCTION: BETA10 0x1014a2d6 MxRegionTopBottom::MxRegionTopBottom(MxRect32& p_rect) { m_top = p_rect.GetTop(); @@ -128,6 +132,7 @@ MxRegionTopBottom::MxRegionTopBottom(MxRect32& p_rect) } // FUNCTION: LEGO1 0x100c5280 +// FUNCTION: BETA10 0x1014a3fc void MxRegionTopBottom::MergeOrExpandRegions(MxS32 p_left, MxS32 p_right) { MxRegionLeftRightListCursor a(m_leftRightList); diff --git a/LEGO1/omni/src/video/mxregioncursor.cpp b/LEGO1/omni/src/video/mxregioncursor.cpp index 7fd4ddc8..827c1947 100644 --- a/LEGO1/omni/src/video/mxregioncursor.cpp +++ b/LEGO1/omni/src/video/mxregioncursor.cpp @@ -3,6 +3,7 @@ DECOMP_SIZE_ASSERT(MxRegionCursor, 0x18); // FUNCTION: LEGO1 0x100c3f70 +// FUNCTION: BETA10 0x10149663 MxRegionCursor::MxRegionCursor(MxRegion* p_region) { m_region = p_region;