From 0eada87b93d2d5dedc9326825c6d880058a65e13 Mon Sep 17 00:00:00 2001 From: Joshua Peisach <itzswirlz2020@outlook.com> Date: Fri, 15 Dec 2023 11:41:07 -0500 Subject: [PATCH] Bootstrap MxControlPresenter (#332) * Start MxControlPresenter vtable functions * Add changes --------- Co-authored-by: Christian Semmler <mail@csemmler.com> --- LEGO1/mxcontrolpresenter.cpp | 85 ++++++++++++++++++++++++++++++++++-- LEGO1/mxcontrolpresenter.h | 30 ++++++++++--- 2 files changed, 105 insertions(+), 10 deletions(-) diff --git a/LEGO1/mxcontrolpresenter.cpp b/LEGO1/mxcontrolpresenter.cpp index 07802a08..47e8a720 100644 --- a/LEGO1/mxcontrolpresenter.cpp +++ b/LEGO1/mxcontrolpresenter.cpp @@ -10,20 +10,80 @@ MxControlPresenter::MxControlPresenter() { this->m_unk0x4c = 0; this->m_unk0x4e = -1; - this->m_unk0x50 = 0; + this->m_unk0x50 = FALSE; this->m_unk0x52 = 0; this->m_unk0x58 = 0; this->m_unk0x54 = 0; } +// FUNCTION: LEGO1 0x10043fd0 +void MxControlPresenter::RepeatingTickle() +{ + // empty +} + +// FUNCTION: LEGO1 0x10043fe0 +MxBool MxControlPresenter::VTable0x64(undefined4 p_undefined) +{ + return m_unk0x50; +} + +// FUNCTION: LEGO1 0x10043ff0 +void MxControlPresenter::VTable0x68(MxBool p_undefined) +{ + m_unk0x50 = p_undefined; +} + // FUNCTION: LEGO1 0x10044110 MxControlPresenter::~MxControlPresenter() { - if (this->m_unk0x58) { - delete this->m_unk0x58; + if (m_unk0x58) + delete m_unk0x58; +} + +// FUNCTION: LEGO1 0x10044180 +MxResult MxControlPresenter::AddToManager() +{ + m_unk0x4e = 0; + return SUCCESS; +} + +// STUB: LEGO1 0x10044190 +MxResult MxControlPresenter::StartAction(MxStreamController*, MxDSAction*) +{ + // TODO + return SUCCESS; +} + +// FUNCTION: LEGO1 0x10044260 +void MxControlPresenter::EndAction() +{ + if (m_action) { + m_unk0x50 = TRUE; + MxCompositePresenter::EndAction(); } } +// STUB: LEGO1 0x10044270 +MxBool MxControlPresenter::FUN_10044270(undefined4, undefined4, undefined4*) +{ + // TODO + return TRUE; +} + +// STUB: LEGO1 0x10044480 +MxBool MxControlPresenter::FUN_10044480(undefined4, undefined4*) +{ + // TODO + return TRUE; +} + +// STUB: LEGO1 0x10044540 +void MxControlPresenter::FUN_10044540(undefined2) +{ + // TODO +} + // FUNCTION: LEGO1 0x10044610 void MxControlPresenter::ReadyTickle() { @@ -33,3 +93,22 @@ void MxControlPresenter::ReadyTickle() m_previousTickleStates |= 1 << (unsigned char) m_currentTickleState; m_currentTickleState = TickleState_Repeating; } + +// STUB: LEGO1 0x10044640 +void MxControlPresenter::ParseExtra() +{ + // TODO +} + +// STUB: LEGO1 0x10044820 +void MxControlPresenter::Enable(MxBool p_enable) +{ + // TODO +} + +// STUB: LEGO1 0x100448a0 +MxBool MxControlPresenter::HasTickleStatePassed(TickleState p_tickleState) +{ + // TODO + return TRUE; +} diff --git a/LEGO1/mxcontrolpresenter.h b/LEGO1/mxcontrolpresenter.h index dfe104bf..d4ee347f 100644 --- a/LEGO1/mxcontrolpresenter.h +++ b/LEGO1/mxcontrolpresenter.h @@ -24,15 +24,31 @@ public: return !strcmp(p_name, MxControlPresenter::ClassName()) || MxCompositePresenter::IsA(p_name); } - virtual void ReadyTickle() override; // vtable+0x18 + virtual void ReadyTickle() override; // vtable+0x18 + virtual void RepeatingTickle() override; // vtable+0x24 + virtual void ParseExtra() override; // vtable+0x30 + virtual MxResult AddToManager() override; // vtable+0x34 + virtual MxResult StartAction(MxStreamController*, MxDSAction*) override; // vtable+0x3c + virtual void EndAction() override; // vtable+0x40 + virtual MxBool HasTickleStatePassed(TickleState p_tickleState) override; // vtable+0x48 + virtual void Enable(MxBool p_enable) override; // vtable+0x54 + virtual MxBool VTable0x64(undefined4 p_undefined) override; // vtable+0x64 + virtual void VTable0x68(MxBool p_undefined); // vtable+0x64 private: - undefined2 m_unk0x4c; - MxS16 m_unk0x4e; - undefined m_unk0x50; - undefined2 m_unk0x52; - undefined2 m_unk0x54; - undefined4* m_unk0x58; + MxBool FUN_10044270(undefined4, undefined4, undefined4*); + MxBool FUN_10044480(undefined4, undefined4*); + void FUN_10044540(undefined2); + + undefined2 m_unk0x4c; // 0x4c + MxS16 m_unk0x4e; // 0x4e + MxBool m_unk0x50; // 0x50 + undefined2 m_unk0x52; // 0x52 + undefined2 m_unk0x54; // 0x54 + undefined4* m_unk0x58; // 0x58 }; +// SYNTHETIC: LEGO1 0x100440f0 +// MxControlPresenter::`scalar deleting destructor' + #endif // MXCONTROLPRESENTER_H