diff --git a/CMakeLists.txt b/CMakeLists.txt index 65b0d933..0ce0e7c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ add_library(lego1 SHARED LEGO1/lego/legoomni/src/act1/act1state.cpp LEGO1/lego/legoomni/src/act2/act2brick.cpp LEGO1/lego/legoomni/src/act2/act2policestation.cpp + LEGO1/lego/legoomni/src/act2/legoact2.cpp LEGO1/lego/legoomni/src/act2/legoact2state.cpp LEGO1/lego/legoomni/src/act3/act3.cpp LEGO1/lego/legoomni/src/act3/act3shark.cpp diff --git a/LEGO1/lego/legoomni/include/act3.h b/LEGO1/lego/legoomni/include/act3.h index 053bde82..b693663f 100644 --- a/LEGO1/lego/legoomni/include/act3.h +++ b/LEGO1/lego/legoomni/include/act3.h @@ -11,6 +11,9 @@ class Act3 : public LegoWorld { virtual ~Act3() override; // vtable+00 + virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4 + virtual MxResult Tickle() override; // vtable+0x8 + // FUNCTION: LEGO1 0x10072510 inline virtual const char* ClassName() const override // vtable+0x0c { @@ -24,6 +27,14 @@ class Act3 : public LegoWorld { return !strcmp(p_name, Act3::ClassName()) || LegoWorld::IsA(p_name); } + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual void VTable0x60() override; // vtable+0x60 + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; } inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; } diff --git a/LEGO1/lego/legoomni/include/hospital.h b/LEGO1/lego/legoomni/include/hospital.h index bbaa3e74..3e88a58a 100644 --- a/LEGO1/lego/legoomni/include/hospital.h +++ b/LEGO1/lego/legoomni/include/hospital.h @@ -12,6 +12,7 @@ class Hospital : public LegoWorld { virtual ~Hospital() override; // vtable+0x0 virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 + virtual MxResult Tickle() override; // vtable+0x08 // FUNCTION: LEGO1 0x100746b0 inline virtual const char* ClassName() const override // vtable+0x0c @@ -26,6 +27,12 @@ class Hospital : public LegoWorld { return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name); } + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + // SYNTHETIC: LEGO1 0x100747d0 // Hospital::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/jukebox.h b/LEGO1/lego/legoomni/include/jukebox.h index de351ad9..7916f22a 100644 --- a/LEGO1/lego/legoomni/include/jukebox.h +++ b/LEGO1/lego/legoomni/include/jukebox.h @@ -10,6 +10,9 @@ class JukeBox : public LegoWorld { public: JukeBox(); + virtual MxLong Notify(MxParam& p_param) override; // vtable+0x4 + virtual MxResult Tickle() override; // vtable+0x8 + // FUNCTION: LEGO1 0x1005d6f0 inline virtual const char* ClassName() const override // vtable+0x0c { @@ -23,6 +26,12 @@ class JukeBox : public LegoWorld { return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name); } + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + // SYNTHETIC: LEGO1 0x1005d810 // JukeBox::`scalar deleting destructor' diff --git a/LEGO1/lego/legoomni/include/legoact2.h b/LEGO1/lego/legoomni/include/legoact2.h index 1f0138ce..4918fa76 100644 --- a/LEGO1/lego/legoomni/include/legoact2.h +++ b/LEGO1/lego/legoomni/include/legoact2.h @@ -3,10 +3,21 @@ #include "legocarraceactor.h" #include "legopathactor.h" +#include "legoworld.h" // VTABLE: LEGO1 0x100d82e0 // SIZE 0x1154 class LegoAct2 : public LegoWorld { + + virtual MxLong Notify(MxParam& p_param) override; // vtable+0x04 + virtual MxResult Tickle() override; // vtable+0x08 + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual void VTable0x60() override; // vtable+0x60 + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + // SYNTHETIC: LEGO1 0x1004fe20 // LegoAct2::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/legocarbuild.h b/LEGO1/lego/legoomni/include/legocarbuild.h index c3b1b1f6..70db5856 100644 --- a/LEGO1/lego/legoomni/include/legocarbuild.h +++ b/LEGO1/lego/legoomni/include/legocarbuild.h @@ -26,6 +26,12 @@ class LegoCarBuild : public LegoWorld { return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name); } + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + // SYNTHETIC: LEGO1 0x10022a60 // LegoCarBuild::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/include/police.h b/LEGO1/lego/legoomni/include/police.h index 9d6bc1c7..c291226e 100644 --- a/LEGO1/lego/legoomni/include/police.h +++ b/LEGO1/lego/legoomni/include/police.h @@ -26,6 +26,12 @@ class Police : public LegoWorld { return !strcmp(p_name, Police::ClassName()) || LegoWorld::IsA(p_name); } + virtual MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void VTable0x50() override; // vtable+0x50 + virtual MxBool VTable0x5c() override; // vtable+0x5c + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual void VTable0x68(MxBool p_add) override; // vtable+0x68 + // SYNTHETIC: LEGO1 0x1005e300 // Police::`scalar deleting destructor' }; diff --git a/LEGO1/lego/legoomni/src/act2/legoact2.cpp b/LEGO1/lego/legoomni/src/act2/legoact2.cpp new file mode 100644 index 00000000..c487e9a4 --- /dev/null +++ b/LEGO1/lego/legoomni/src/act2/legoact2.cpp @@ -0,0 +1,54 @@ +#include "legoact2.h" + +// STUB: LEGO1 0x1004fe10 +MxBool LegoAct2::VTable0x5c() +{ + // TODO + return FALSE; +} + +// STUB: LEGO1 0x1004ff20 +MxResult LegoAct2::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10050040 +MxResult LegoAct2::Tickle() +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10050380 +MxLong LegoAct2::Notify(MxParam& p_param) +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x10050a80 +void LegoAct2::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x10050cf0 +void LegoAct2::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x100519c0 +void LegoAct2::VTable0x60() +{ + // TODO +} + +// STUB: LEGO1 0x100519d0 +MxBool LegoAct2::VTable0x64() +{ + // TODO + return FALSE; +} diff --git a/LEGO1/lego/legoomni/src/act3/act3.cpp b/LEGO1/lego/legoomni/src/act3/act3.cpp index 149e19a7..e17db3dc 100644 --- a/LEGO1/lego/legoomni/src/act3/act3.cpp +++ b/LEGO1/lego/legoomni/src/act3/act3.cpp @@ -8,8 +8,67 @@ Act3::Act3() // TODO } +// STUB: LEGO1 0x10072500 +MxBool Act3::VTable0x5c() +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x100726a0 Act3::~Act3() { // TODO } + +// STUB: LEGO1 0x10072c30 +MxResult Act3::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10072d50 +void Act3::Destroy(MxBool p_fromDestructor) +{ + // TODO +} + +// STUB: LEGO1 0x10072de0 +MxLong Act3::Notify(MxParam& p_param) +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x10073270 +void Act3::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x10073300 +MxResult Act3::Tickle() +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10073a90 +void Act3::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x10073e40 +void Act3::VTable0x60() +{ + // TODO +} + +// STUB: LEGO1 0x10073e50 +MxBool Act3::VTable0x64() +{ + // TODO + return FALSE; +} diff --git a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp index f75e4653..61576ece 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp @@ -6,12 +6,26 @@ LegoCarBuild::LegoCarBuild() // TODO } +// STUB: LEGO1 0x10022930 +MxBool LegoCarBuild::VTable0x5c() +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x10022a80 LegoCarBuild::~LegoCarBuild() { // TODO } +// STUB: LEGO1 0x10022b70 +MxResult LegoCarBuild::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + // STUB: LEGO1 0x100238b0 MxResult LegoCarBuild::Tickle() { @@ -27,3 +41,22 @@ MxLong LegoCarBuild::Notify(MxParam& p_param) return 0; } + +// STUB: LEGO1 0x100242c0 +void LegoCarBuild::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x100256c0 +void LegoCarBuild::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x10025e70 +MxBool LegoCarBuild::VTable0x64() +{ + // TODO + return FALSE; +} diff --git a/LEGO1/lego/legoomni/src/hospital/hospital.cpp b/LEGO1/lego/legoomni/src/hospital/hospital.cpp index e8de5495..8ede37e2 100644 --- a/LEGO1/lego/legoomni/src/hospital/hospital.cpp +++ b/LEGO1/lego/legoomni/src/hospital/hospital.cpp @@ -23,12 +23,26 @@ Hospital::Hospital() NotificationManager()->Register(this); } +// STUB: LEGO1 0x100746a0 +MxBool Hospital::VTable0x5c() +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x100747f0 Hospital::~Hospital() { // TODO } +// STUB: LEGO1 0x100748c0 +MxResult Hospital::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + // STUB: LEGO1 0x10074990 MxLong Hospital::Notify(MxParam& p_param) { @@ -36,3 +50,29 @@ MxLong Hospital::Notify(MxParam& p_param) return 0; } + +// STUB: LEGO1 0x10074a60 +void Hospital::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x10076220 +void Hospital::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x10076270 +MxResult Hospital::Tickle() +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x10076330 +MxBool Hospital::VTable0x64() +{ + // TODO + return FALSE; +} diff --git a/LEGO1/lego/legoomni/src/isle/jukebox.cpp b/LEGO1/lego/legoomni/src/isle/jukebox.cpp index d5ded948..687c0a79 100644 --- a/LEGO1/lego/legoomni/src/isle/jukebox.cpp +++ b/LEGO1/lego/legoomni/src/isle/jukebox.cpp @@ -12,3 +12,50 @@ JukeBox::JukeBox() m_unk0xfc = 0; NotificationManager()->Register(this); } + +// STUB: LEGO1 0x1005d6e0 +MxBool JukeBox::VTable0x5c() +{ + // TODO + return FALSE; +} + +// STUB: LEGO1 0x1005d8d0 +MxResult JukeBox::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x1005d980 +MxLong JukeBox::Notify(MxParam& p_param) +{ + // TODO + return 0; +} + +// STUB: LEGO1 0x1005d9f0 +void JukeBox::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x1005dde0 +void JukeBox::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x1005de30 +MxResult JukeBox::Tickle() +{ + // TODO + return SUCCESS; +} + +// STUB: LEGO1 0x1005de70 +MxBool JukeBox::VTable0x64() +{ + // TODO + return FALSE; +} diff --git a/LEGO1/lego/legoomni/src/police/police.cpp b/LEGO1/lego/legoomni/src/police/police.cpp index 67577ecc..1084d88d 100644 --- a/LEGO1/lego/legoomni/src/police/police.cpp +++ b/LEGO1/lego/legoomni/src/police/police.cpp @@ -6,12 +6,26 @@ Police::Police() // TODO } +// STUB: LEGO1 0x1005e1d0 +MxBool Police::VTable0x5c() +{ + // TODO + return FALSE; +} + // STUB: LEGO1 0x1005e320 Police::~Police() { // TODO } +// STUB: LEGO1 0x1005e3e0 +MxResult Police::Create(MxDSAction& p_dsAction) +{ + // TODO + return SUCCESS; +} + // STUB: LEGO1 0x1005e480 MxLong Police::Notify(MxParam& p_param) { @@ -19,3 +33,22 @@ MxLong Police::Notify(MxParam& p_param) return 0; } + +// STUB: LEGO1 0x1005e530 +void Police::VTable0x50() +{ + // TODO +} + +// STUB: LEGO1 0x1005e740 +void Police::VTable0x68(MxBool p_add) +{ + // TODO +} + +// STUB: LEGO1 0x1005e790 +MxBool Police::VTable0x64() +{ + // TODO + return FALSE; +}