diff --git a/ISLE/isleapp.h b/ISLE/isleapp.h index 70b2ba20..d31c6f42 100644 --- a/ISLE/isleapp.h +++ b/ISLE/isleapp.h @@ -3,7 +3,7 @@ #include -#include "mxresult.h" +#include "mxtypes.h" #include "mxvideoparam.h" class IsleApp diff --git a/LEGO1/act1state.cpp b/LEGO1/act1state.cpp index cdd9de26..556e6dbc 100644 --- a/LEGO1/act1state.cpp +++ b/LEGO1/act1state.cpp @@ -6,18 +6,3 @@ Act1State::Act1State() // TODO } -// OFFSET: LEGO1 0x100346d0 STUB -MxBool Act1State::VTable0x18() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x10033ac0 STUB -undefined4 Act1State::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/act1state.h b/LEGO1/act1state.h index c429dbcf..edcb9e9d 100644 --- a/LEGO1/act1state.h +++ b/LEGO1/act1state.h @@ -3,29 +3,25 @@ #include "legostate.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d7028 +// SIZE 0x26c class Act1State : public LegoState { public: Act1State(); // OFFSET: LEGO1 0x100338a0 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { + // 0x100f0154 return "Act1State"; }; // OFFSET: LEGO1 0x100338b0 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, Act1State::ClassName()) || LegoState::IsA(name); }; - - virtual MxBool VTable0x18(); - virtual undefined4 VTable0x1c(undefined4 param); }; #endif // ACT1STATE_H diff --git a/LEGO1/act2brick.h b/LEGO1/act2brick.h index f3c141a9..d5703081 100644 --- a/LEGO1/act2brick.h +++ b/LEGO1/act2brick.h @@ -3,17 +3,30 @@ #include "legopathactor.h" +// VTABLE 0x100d9b60 +// SIZE 0x194 class Act2Brick : public LegoPathActor { public: Act2Brick(); - virtual ~Act2Brick(); // vtable+0x0 + virtual ~Act2Brick() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x08 + + // OFFSET: LEGO1 0x1007a360 + inline virtual const char *ClassName() override // vtable+0x0c + { + // 0x100f0438 + return "Act2Brick"; + } + + // OFFSET: LEGO1 0x1007a370 + inline virtual MxBool IsA(const char *name) override // vtable+0x10 + { + return !strcmp(Act2Brick::ClassName(), name) || LegoEntity::IsA(name); + } - virtual long Notify(MxParam &p); // vtable+0x4 - virtual long Tickle(); // vtable+08 - - // VTABLE 0x100d9b60 - // SIZE 0x194 }; #endif // ACT2BRICK_H diff --git a/LEGO1/act2policestation.cpp b/LEGO1/act2policestation.cpp index 27f5e0d5..14f69db4 100644 --- a/LEGO1/act2policestation.cpp +++ b/LEGO1/act2policestation.cpp @@ -1,9 +1,9 @@ #include "act2policestation.h" -// OFFSET: LEGO1 0x100d53ac STUB +// OFFSET: LEGO1 0x1004e0e0 STUB long Act2PoliceStation::Notify(MxParam &p) { // TODO return 0; -} \ No newline at end of file +} diff --git a/LEGO1/act2policestation.h b/LEGO1/act2policestation.h index dd3014a6..e935e252 100644 --- a/LEGO1/act2policestation.h +++ b/LEGO1/act2policestation.h @@ -3,10 +3,25 @@ #include "legoentity.h" +// VTABLE 0x100d53a8 +// SIZE 0x68 class Act2PoliceStation : public LegoEntity { public: - virtual long Notify(MxParam &p); // vtable+0x4 + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x1000e200 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03fc + return "Act2PoliceStation"; + } + + // OFFSET: LEGO1 0x1000e210 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(name); + } }; #endif // ACT2POLICESTATION_H diff --git a/LEGO1/act3.h b/LEGO1/act3.h index 1d989345..d0cad28a 100644 --- a/LEGO1/act3.h +++ b/LEGO1/act3.h @@ -3,13 +3,28 @@ #include "legoworld.h" +// VTABLE 0x100d9628 +// SIZE 0x4274 class Act3 : public LegoWorld { public: Act3(); - virtual ~Act3(); - // VTABLE 0x100d9628 + virtual ~Act3() override; // vtable+00 + + // OFFSET: LEGO1 0x10072510 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f013c + return "Act3"; + } + + // OFFSET: LEGO1 0x10072520 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Act3::ClassName()) || LegoWorld::IsA(name); + } + }; diff --git a/LEGO1/act3actor.h b/LEGO1/act3actor.h index 2482c260..a88884a1 100644 --- a/LEGO1/act3actor.h +++ b/LEGO1/act3actor.h @@ -1,9 +1,18 @@ #ifndef ACT3ACTOR_H #define ACT3ACTOR_H +// FIXME: Uncertain location. There are three vtables which eventually call this +// class' ClassName() function, but none of them call it directly. class Act3Actor { - // VTABLE 0x100d7750 +public: + // OFFSET: LEGO1 0x100431b0 + inline virtual const char *ClassName() override + { + // 0x100f03ac + return "Act3Actor"; + } + }; #endif // ACT3ACTOR_H diff --git a/LEGO1/act3shark.cpp b/LEGO1/act3shark.cpp index 28a5ff8e..95e5a0e0 100644 --- a/LEGO1/act3shark.cpp +++ b/LEGO1/act3shark.cpp @@ -1,4 +1 @@ #include "act3shark.h" - -// 0x100f03a0 -static char* g_act3SharkString = "Act3Shark"; \ No newline at end of file diff --git a/LEGO1/act3shark.h b/LEGO1/act3shark.h index 3b32899c..6cbdbc09 100644 --- a/LEGO1/act3shark.h +++ b/LEGO1/act3shark.h @@ -3,9 +3,16 @@ #include "legoanimactor.h" +// VTABLE 0x100d7920 class Act3Shark : public LegoAnimActor { - // VTABLE 0x100d7920 +public: + // OFFSET: LEGO1 0x100430c0 + inline virtual const char *ClassName() const override + { + // 0x100f03a0 + return "Act3Shark"; + } }; #endif // ACT3SHARK_H diff --git a/LEGO1/act3state.cpp b/LEGO1/act3state.cpp index d1c30417..5e56a31b 100644 --- a/LEGO1/act3state.cpp +++ b/LEGO1/act3state.cpp @@ -1,13 +1,7 @@ #include "act3state.h" -// OFFSET: LEGO1 0x10072270 STUB -Act3State::Act3State() -{ - // TODO -} - -// OFFSET: LEGO1 0x100d4fdc +// OFFSET: LEGO1 0x1000e2f0 MxBool Act3State::VTable0x14() { return FALSE; -} \ No newline at end of file +} diff --git a/LEGO1/act3state.h b/LEGO1/act3state.h index 397644bf..17c19ca6 100644 --- a/LEGO1/act3state.h +++ b/LEGO1/act3state.h @@ -3,24 +3,35 @@ #include "legostate.h" +// VTABLE 0x100d4fc8 +// SIZE 0xc class Act3State : public LegoState { public: - Act3State(); + inline Act3State() + { + m_unk08 = 0; + } // OFFSET: LEGO1 0x1000e300 - inline virtual const char *ClassName() const // vtable+0x0c - { + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03f0 return "Act3State"; - }; + } - // OFFSET: LEGO1 0x100d4fd8 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + // OFFSET: LEGO1 0x1000e310 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, Act3State::ClassName()) || LegoState::IsA(name); - }; + } + + virtual MxBool VTable0x14() override; + +private: + // FIXME: May be part of LegoState? Uncertain... + MxU32 m_unk08; - virtual MxBool VTable0x14(); }; #endif // ACT3STATE_H diff --git a/LEGO1/ambulance.h b/LEGO1/ambulance.h index 919789eb..dd89af3c 100644 --- a/LEGO1/ambulance.h +++ b/LEGO1/ambulance.h @@ -3,13 +3,26 @@ #include "islepathactor.h" +// VTABLE 0x100d71a8 +// SIZE 0x184 class Ambulance : public IslePathActor { public: Ambulance(); - // VTABLE 0x100d71a8 - // SIZE 0x184 + // OFFSET: LEGO1 0x10035fa0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03c4 + return "Ambulance"; + } + + // OFFSET: LEGO1 0x10035fb0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Ambulance::ClassName()) || IslePathActor::IsA(name); + } + }; #endif // AMBULANCE_H diff --git a/LEGO1/ambulancemissionstate.cpp b/LEGO1/ambulancemissionstate.cpp index 5ff8e36f..6b20ce3a 100644 --- a/LEGO1/ambulancemissionstate.cpp +++ b/LEGO1/ambulancemissionstate.cpp @@ -5,11 +5,3 @@ AmbulanceMissionState::AmbulanceMissionState() { // TODO } - -// OFFSET: LEGO1 0x10037440 STUB -undefined4 AmbulanceMissionState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/ambulancemissionstate.h b/LEGO1/ambulancemissionstate.h index 460558f6..572bba9a 100644 --- a/LEGO1/ambulancemissionstate.h +++ b/LEGO1/ambulancemissionstate.h @@ -3,28 +3,26 @@ #include "legostate.h" +// VTABLE 0x100d72a0 +// SIZE 0x24 class AmbulanceMissionState : public LegoState { public: AmbulanceMissionState(); // OFFSET: LEGO1 0x10037600 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f00e8 return "AmbulanceMissionState"; - }; + } // OFFSET: LEGO1 0x10037610 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, AmbulanceMissionState::ClassName()) || LegoState::IsA(name); - }; + } - virtual undefined4 VTable0x1c(undefined4 param); - - // VTABLE 0x100d72a0 - // SIZE 0x24 }; diff --git a/LEGO1/animstate.cpp b/LEGO1/animstate.cpp index b73afc45..887328bb 100644 --- a/LEGO1/animstate.cpp +++ b/LEGO1/animstate.cpp @@ -11,19 +11,3 @@ AnimState::~AnimState() { // TODO } - -// OFFSET: LEGO1 0x100654f0 STUB -MxBool AnimState::VTable0x18() -{ - // TODO - - return MxBool(); -} - -// OFFSET: LEGO1 0x100652d0 STUB -undefined4 AnimState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/animstate.h b/LEGO1/animstate.h index 1eb0c1a7..2095c1cb 100644 --- a/LEGO1/animstate.h +++ b/LEGO1/animstate.h @@ -3,30 +3,27 @@ #include "legostate.h" +// VTABLE 0x100d8d80 +// SIZE 0x1c class AnimState : public LegoState { public: AnimState(); - virtual ~AnimState(); // vtable+0x0 + virtual ~AnimState() override; // vtable+0x0 // OFFSET: LEGO1 0x10065070 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0460 return "AnimState"; - }; + } // OFFSET: LEGO1 0x10065080 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, AnimState::ClassName()) || LegoState::IsA(name); - }; + } - virtual MxBool VTable0x18(); // vtable+0x18 - virtual undefined4 VTable0x1c(undefined4 param); // vtable+0x1c - - // VTABLE 0x100d8d80 - // SIZE 0x1c }; -#endif // ANIMSTATE_H \ No newline at end of file +#endif // ANIMSTATE_H diff --git a/LEGO1/beachhouseentity.cpp b/LEGO1/beachhouseentity.cpp index c4b6c339..029e022f 100644 --- a/LEGO1/beachhouseentity.cpp +++ b/LEGO1/beachhouseentity.cpp @@ -1,9 +1,9 @@ #include "beachhouseentity.h" -// OFFSET: LEGO1 0x100153b0 STUB -undefined4 BeachHouseEntity::VTable0x50() +// OFFSET: LEGO1 0x100150a0 STUB +long BeachHouseEntity::Notify(MxParam &p) { - // TODO + // TODO return 0; -} \ No newline at end of file +} diff --git a/LEGO1/beachhouseentity.h b/LEGO1/beachhouseentity.h index 33dbb5a9..1749ff54 100644 --- a/LEGO1/beachhouseentity.h +++ b/LEGO1/beachhouseentity.h @@ -3,17 +3,25 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d4a18 +// SIZE 0x68 class BeachHouseEntity : public BuildingEntity { - virtual undefined4 VTable0x50(); // vtable+0x50 +public: + virtual long Notify(MxParam &p) override; // vtable+04 - // VTABLE 0x100d4a18 - // SIZE 0x68 + // OFFSET: LEGO1 0x1000ee80 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0314 + return "BeachHouseEntity"; + } + + // OFFSET: LEGO1 0x1000ee90 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(name); + } }; - #endif // BEACHHOUSEENTITY_H diff --git a/LEGO1/bike.cpp b/LEGO1/bike.cpp index a2360b6d..ac741a44 100644 --- a/LEGO1/bike.cpp +++ b/LEGO1/bike.cpp @@ -6,22 +6,3 @@ Bike::Bike() // TODO } -// OFFSET: LEGO1 0x100769a0 STUB -undefined4 Bike::VTable0xcc() -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x10076aa0 STUB -undefined4 Bike::VTable0xd4(undefined4 param) -{ - return undefined4(); -} - -// OFFSET: LEGO1 0x10076920 STUB -void Bike::VTable0xe4() -{ - // TODO -} diff --git a/LEGO1/bike.h b/LEGO1/bike.h index 22e4b7c9..8d2de0f1 100644 --- a/LEGO1/bike.h +++ b/LEGO1/bike.h @@ -3,21 +3,26 @@ #include "islepathactor.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d9808 +// SIZE 0x164 class Bike : public IslePathActor { public: Bike(); - virtual undefined4 VTable0xcc(); // vtable+0xcc - virtual undefined4 VTable0xd4(undefined4 param); // vtable+0xd4 - virtual void VTable0xe4(); // vtable+0xe4 + // OFFSET: LEGO1 0x100766f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03d0 + return "Bike"; + } + + // OFFSET: LEGO1 0x10076700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Bike::ClassName()) || IslePathActor::IsA(name); + } - // VTABLE 0x100d9808 - // SIZE 0x74 }; diff --git a/LEGO1/buildingentity.h b/LEGO1/buildingentity.h index d3b4f575..0f515cb0 100644 --- a/LEGO1/buildingentity.h +++ b/LEGO1/buildingentity.h @@ -3,11 +3,26 @@ #include "legoentity.h" +// VTABLE 0x100d5c88 +// SIZE <= 0x68, hard to tell because it's always constructed as a derivative class BuildingEntity : public LegoEntity { public: BuildingEntity(); - virtual ~BuildingEntity(); // vtable+0x0 + virtual ~BuildingEntity() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10014f20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f07e8 + return "BuildingEntity"; + } + + // OFFSET: LEGO1 0x10014f30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BuildingEntity::ClassName()) || LegoEntity::IsA(name); + } }; -#endif // BUILDINGENTITY_H \ No newline at end of file +#endif // BUILDINGENTITY_H diff --git a/LEGO1/bumpbouy.cpp b/LEGO1/bumpbouy.cpp index 855a18ae..c4c8069d 100644 --- a/LEGO1/bumpbouy.cpp +++ b/LEGO1/bumpbouy.cpp @@ -1,18 +1 @@ #include "bumpbouy.h" - -// 0x100f0394 -static char* g_bumpBouyString = "BumpBouy"; - -// OFFSET: LEGO1 0x100274e0 STUB -const char *BumpBouy::ClassName() const -{ - return g_bumpBouyString; -} - -// OFFSET: LEG01 0x10027500 STUB -MxBool BumpBouy::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/bumpbouy.h b/LEGO1/bumpbouy.h index 949ad95d..58553153 100644 --- a/LEGO1/bumpbouy.h +++ b/LEGO1/bumpbouy.h @@ -1,13 +1,25 @@ #ifndef BUMPBOUY_H #define BUMPBOUY_H +#include "legoanimactor.h" #include "mxtypes.h" -class BumpBouy +// VTABLE 0x100d6790 +class BumpBouy : public LegoAnimActor { public: - virtual const char* ClassName() const; // vtable+0xc - virtual MxBool IsA(const char *name) const; // vtable+0x10 + // OFFSET: LEGO1 0x100274e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0394 + return "BumpBouy"; + } + + // OFFSET: LEGO1 0x10027500 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, BumpBouy::ClassName()) || LegoAnimActor::IsA(name); + } }; #endif // BUMPBOUY_H diff --git a/LEGO1/carrace.h b/LEGO1/carrace.h index ddc8aa38..23230da0 100644 --- a/LEGO1/carrace.h +++ b/LEGO1/carrace.h @@ -3,10 +3,25 @@ #include "legorace.h" +// VTABLE 0x100d5e50 +// SIZE 0x154 class CarRace : public LegoRace { public: CarRace(); + + // OFFSET: LEGO1 0x10016b20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0528 + return "CarRace"; + } + + // OFFSET: LEGO1 0x10016b30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, CarRace::ClassName()) || LegoRace::IsA(name); + } }; #endif // CARRACE_H diff --git a/LEGO1/carracestate.h b/LEGO1/carracestate.h index 3fef2472..49e77b5d 100644 --- a/LEGO1/carracestate.h +++ b/LEGO1/carracestate.h @@ -3,21 +3,23 @@ #include "racestate.h" +// VTABLE 0x100d4b70 +// SIZE 0x2c class CarRaceState : public RaceState { public: // OFFSET: LEGO1 0x1000dd30 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f009c return "CarRaceState"; - }; + } // OFFSET: LEGO1 0x1000dd40 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, CarRaceState::ClassName()) || RaceState::IsA(name); - }; + } }; #endif // CARRACESTATE_H diff --git a/LEGO1/doors.h b/LEGO1/doors.h index 96710242..702a47ce 100644 --- a/LEGO1/doors.h +++ b/LEGO1/doors.h @@ -3,9 +3,23 @@ #include "legopathactor.h" +// VTABLE 0x100d4788 +// SIZE 0x1f8 class Doors : public LegoPathActor { - // SIZE 0x1f8 +public: + // OFFSET: LEGO1 0x1000e430 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03e8 + return "Doors"; + } + + // OFFSET: LEGO1 0x1000e440 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Doors::ClassName()) || LegoPathActor::IsA(name); + } }; diff --git a/LEGO1/dunebuggy.h b/LEGO1/dunebuggy.h index c2c29ef4..1f89784e 100644 --- a/LEGO1/dunebuggy.h +++ b/LEGO1/dunebuggy.h @@ -3,13 +3,26 @@ #include "islepathactor.h" +// VTABLE 0x100d8f98 +// SIZE 0x16c class DuneBuggy : public IslePathActor { public: DuneBuggy(); + + // OFFSET: LEGO1 0x10067c30 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0410 + return "DuneBuggy"; + } + + // OFFSET: LEGO1 0x10067c40 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, DuneBuggy::ClassName()) || IslePathActor::IsA(name); + } - // VTABLE 0x100d8f98 - // SIZE 0x16c }; -#endif // DUNEBUGGY_H \ No newline at end of file +#endif // DUNEBUGGY_H diff --git a/LEGO1/elevatorbottom.cpp b/LEGO1/elevatorbottom.cpp index cf8bfa2a..d216fe35 100644 --- a/LEGO1/elevatorbottom.cpp +++ b/LEGO1/elevatorbottom.cpp @@ -1,8 +1,5 @@ #include "elevatorbottom.h" -// 0x100f04ac -static char* g_elevatorBottomClassName = "ElevatorBottom"; - // OFFSET: LEGO1 0x10017e90 STUB ElevatorBottom::ElevatorBottom() { @@ -22,31 +19,3 @@ long ElevatorBottom::Notify(MxParam &p) return 0; } - -// OFFSET: LEGO1 0x10017f20 STUB -const char *ElevatorBottom::ClassName() const -{ - return g_elevatorBottomClassName; -} - -// OFFSET: LEGO1 0x10017f30 STUB -MxBool ElevatorBottom::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} - -// OFFSET: LEGO1 0x10017f10 STUB -undefined4 ElevatorBottom::VTable0x5c() -{ - // TODO - - return 1; -} - -// OFFSET: LEGO1 0x100182c0 STUB -void ElevatorBottom::VTable0x68(undefined1 param_1) -{ - // TODO -} diff --git a/LEGO1/elevatorbottom.h b/LEGO1/elevatorbottom.h index a01df9fc..0d86080a 100644 --- a/LEGO1/elevatorbottom.h +++ b/LEGO1/elevatorbottom.h @@ -3,28 +3,28 @@ #include "legoworld.h" -#ifndef undefined4 -#define undefined4 int -#endif - -#ifndef undefined1 -#define undefined1 char -#endif - +// VTABLE 0x100d5f20 class ElevatorBottom : public LegoWorld { public: ElevatorBottom(); - virtual ~ElevatorBottom(); // vtable+0x0 + virtual ~ElevatorBottom() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 - virtual const char* ClassName() const; // vtable+0xc - virtual MxBool IsA(const char *name) const; // vtable+0x10 + virtual long Notify(MxParam &p) override; // vtable+0x4 - virtual undefined4 VTable0x5c(); // vtable+0x5c - virtual void VTable0x68(undefined1 param_1); // vtable+0x68 + // OFFSET: LEGO1 0x10017f20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04ac + return "ElevatorBottom"; + } + + // OFFSET: LEGO1 0x10017f30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, ElevatorBottom::ClassName()) || LegoWorld::IsA(name); + } - // VTABLE 0x100d5f20 }; #endif // ELEVATORBOTTOM_H diff --git a/LEGO1/gasstation.cpp b/LEGO1/gasstation.cpp index 1f2af6f3..d50ef317 100644 --- a/LEGO1/gasstation.cpp +++ b/LEGO1/gasstation.cpp @@ -27,11 +27,3 @@ long GasStation::Tickle() return 0; } - -// OFFSET: LEGO1 0x10005e70 STUB -undefined GasStation::VTable0x64(undefined4 param) -{ - // TODO - - return undefined(); -} diff --git a/LEGO1/gasstation.h b/LEGO1/gasstation.h index 1ea756e4..9f22ca3f 100644 --- a/LEGO1/gasstation.h +++ b/LEGO1/gasstation.h @@ -3,27 +3,31 @@ #include "legoworld.h" -#ifndef undefined -#define undefined int -#endif - -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d4650 +// SIZE 0x128 +// Radio variable at 0x46, in constructor class GasStation : public LegoWorld { public: GasStation(); - virtual ~GasStation(); // vtable+0x0 + virtual ~GasStation() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 - virtual long Tickle(); // vtable+0x8 - undefined VTable0x64(undefined4 param); // vtable+0x64 + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10004780 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0168 + return "GasStation"; + } + + // OFFSET: LEGO1 0x10004790 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, GasStation::ClassName()) || LegoWorld::IsA(name); + } - // VTABLE 0x100d4650 - // SIZE 0x128 - // Radio variable at 0x46, in constructor }; #endif // GASSTATION_H diff --git a/LEGO1/gasstationentity.cpp b/LEGO1/gasstationentity.cpp index 533d30a6..ebe58c46 100644 --- a/LEGO1/gasstationentity.cpp +++ b/LEGO1/gasstationentity.cpp @@ -1,9 +1 @@ #include "gasstationentity.h" - -// OFFSET: LEGO1 0x100151d0 STUB -undefined4 GasStationEntity::VTable0x50() -{ - // TODO - - return 0; -} \ No newline at end of file diff --git a/LEGO1/gasstationentity.h b/LEGO1/gasstationentity.h index 7eab53b5..27eb60f3 100644 --- a/LEGO1/gasstationentity.h +++ b/LEGO1/gasstationentity.h @@ -3,16 +3,23 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d5258 +// SIZE 0x68 class GasStationEntity : public BuildingEntity { - virtual undefined4 VTable0x50(); // vtable+0x50 +public: + // OFFSET: LEGO1 0x1000eb20 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0348 + return "GasStationEntity"; + } - // VTABLE 0x100d5258 - // SIZE 0x68 + // OFFSET: LEGO1 0x1000eb30 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, GasStationEntity::ClassName()) || BuildingEntity::IsA(name); + } }; #endif // GASSTATIONENTITY_H diff --git a/LEGO1/gasstationstate.cpp b/LEGO1/gasstationstate.cpp index 58861b3c..d9fa2c29 100644 --- a/LEGO1/gasstationstate.cpp +++ b/LEGO1/gasstationstate.cpp @@ -5,11 +5,3 @@ GasStationState::GasStationState() { // TODO } - -// OFFSET: LEGO1 0x10006300 STUB -undefined4 GasStationState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/gasstationstate.h b/LEGO1/gasstationstate.h index f19663a6..a7696bed 100644 --- a/LEGO1/gasstationstate.h +++ b/LEGO1/gasstationstate.h @@ -3,29 +3,26 @@ #include "legostate.h" +// VTABLE 0x100d46e0 +// SIZE 0x24 class GasStationState : public LegoState { public: GasStationState(); // OFFSET: LEGO1 0x100061d0 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0174 return "GasStationState"; - }; + } // OFFSET: LEGO1 0x100061e0 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, GasStationState::ClassName()) || LegoState::IsA(name); - }; + } - virtual undefined4 VTable0x1c(undefined4 param); - - // field 0x8 is prob MxResult - // field 0xc is prob MxResult - // field 0x10 is prob MxResult }; #endif // GASSTATIONSTATE_H diff --git a/LEGO1/helicopter.cpp b/LEGO1/helicopter.cpp index ce2f6d39..318f3dab 100644 --- a/LEGO1/helicopter.cpp +++ b/LEGO1/helicopter.cpp @@ -1,8 +1,5 @@ #include "helicopter.h" -// 0x100f0130 -static char* g_helicopterClassName = "Helicopter"; - // OFFSET: LEGO1 0x10001e60 STUB Helicopter::Helicopter() { @@ -14,29 +11,3 @@ Helicopter::~Helicopter() { // TODO } - -// OFFSET: LEGO1 0x10003070 STUB -const char *Helicopter::ClassName() const -{ - return g_helicopterClassName; -} - -// OFFSET: LEGO1 0x10003080 STUB -MxBool Helicopter::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} - -// OFFSET: LEGO1 0x10003ee0 STUB -void Helicopter::VTable0x70(float param_1) -{ - // TODO -} - -// OFFSET:LEGO1 0x10003360 STUB -void Helicopter::VTable0xe4() -{ - // TODO -} diff --git a/LEGO1/helicopter.h b/LEGO1/helicopter.h index 99a297f7..15134f32 100644 --- a/LEGO1/helicopter.h +++ b/LEGO1/helicopter.h @@ -3,19 +3,27 @@ #include "islepathactor.h" +// VTABLE 0x100d40f8 +// SIZE 0x230 class Helicopter : public IslePathActor { public: Helicopter(); virtual ~Helicopter(); // vtable+0x0 - virtual const char* ClassName() const; // vtable+0xc - virtual MxBool IsA(const char *name) const; // vtable+0x10 + // OFFSET: LEGO1 0x10003070 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0130 + return "Helicopter"; + } - virtual void VTable0x70(float param_1); // vtable+0x70 - virtual void VTable0xe4(); // vtable+0xe4 + // OFFSET: LEGO1 0x10003080 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Helicopter::ClassName()) || IslePathActor::IsA(name); + } - // VTABLE 0x100d40f8 }; #endif // HELICOPTER_H diff --git a/LEGO1/helicopterstate.cpp b/LEGO1/helicopterstate.cpp index 1c2c0140..70d71a0c 100644 --- a/LEGO1/helicopterstate.cpp +++ b/LEGO1/helicopterstate.cpp @@ -1,13 +1 @@ #include "helicopterstate.h" - -// OFFSET: LEGO1 0x1000e0b0 -MxBool HelicopterState::VTable0x14() -{ - return FALSE; -} - -// OFFSET: LEGO1 0x1000e0c0 STUB -MxBool HelicopterState::VTable0x18() -{ - return TRUE; -} diff --git a/LEGO1/helicopterstate.h b/LEGO1/helicopterstate.h index a973ce20..161624dd 100644 --- a/LEGO1/helicopterstate.h +++ b/LEGO1/helicopterstate.h @@ -3,24 +3,23 @@ #include "legostate.h" +// VTABLE 0x100d5418 +// SIZE 0xc class HelicopterState : public LegoState { public: // OFFSET: LEGO1 0x1000e0d0 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0144 return "HelicopterState"; - }; + } - // OFFSET: LEGO1 0x100d5428 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + // OFFSET: LEGO1 0x1000e0e0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, HelicopterState::ClassName()) || LegoState::IsA(name); - }; - - virtual MxBool VTable0x14(); - virtual MxBool VTable0x18(); + } }; #endif // HELICOPTERSTATE_H diff --git a/LEGO1/historybook.h b/LEGO1/historybook.h index 65fdaa42..bbdc6246 100644 --- a/LEGO1/historybook.h +++ b/LEGO1/historybook.h @@ -3,14 +3,28 @@ #include "legoworld.h" +// VTABLE 0x100da328 +// SIZE 0x3e4 class HistoryBook : public LegoWorld { public: HistoryBook(); - virtual ~HistoryBook(); // vtable+0x0 + virtual ~HistoryBook() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 - // VTABLE 0x100da328 + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x10082390 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04bc + return "HistoryBook"; + } + + // OFFSET: LEGO1 0x100823a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HistoryBook::ClassName()) || LegoWorld::IsA(name); + } }; #endif // HISTORYBOOK_H diff --git a/LEGO1/hospital.cpp b/LEGO1/hospital.cpp index bfd05ee4..2581cf34 100644 --- a/LEGO1/hospital.cpp +++ b/LEGO1/hospital.cpp @@ -19,9 +19,3 @@ long Hospital::Notify(MxParam &p) return 0; } - -// OFFSET: LEGO1 0x10076220 STUB -void Hospital::VTable0x68(char param_1) -{ - // TODO -} diff --git a/LEGO1/hospital.h b/LEGO1/hospital.h index 879de97d..b14de205 100644 --- a/LEGO1/hospital.h +++ b/LEGO1/hospital.h @@ -3,16 +3,29 @@ #include "legoworld.h" +// VTABLE 0x100d9730 +// SIZE 0x12c class Hospital : public LegoWorld { public: Hospital(); - virtual ~Hospital(); // vtable+0x0 + virtual ~Hospital() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x04 - virtual void VTable0x68(char param_1); // vtable+0x68 + virtual long Notify(MxParam &p) override; // vtable+0x04 + + // OFFSET: LEGO1 0x100746b0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0490 + return "Hospital"; + } + + // OFFSET: LEGO1 0x100746c0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Hospital::ClassName()) || LegoWorld::IsA(name); + } - // SIZE 0x300 }; #endif // HOSPITAL_H diff --git a/LEGO1/hospitalentity.cpp b/LEGO1/hospitalentity.cpp index 8d3eb449..8da86464 100644 --- a/LEGO1/hospitalentity.cpp +++ b/LEGO1/hospitalentity.cpp @@ -1,9 +1 @@ #include "hospitalentity.h" - -// OFFSET: LEGO1 0x10015270 STUB -undefined4 HospitalEntity::VTable0x50() -{ - // TODO - - return undefined4(); -} \ No newline at end of file diff --git a/LEGO1/hospitalentity.h b/LEGO1/hospitalentity.h index 22cadb47..537bff12 100644 --- a/LEGO1/hospitalentity.h +++ b/LEGO1/hospitalentity.h @@ -3,16 +3,24 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d5068 +// SIZE 0x68 class HospitalEntity : public BuildingEntity { - virtual undefined4 VTable0x50(); // vtable+0x50 +public: + // OFFSET: LEGO1 0x1000ec40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0338 + return "HospitalEntity"; + } + + // OFFSET: LEGO1 0x1000ec50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, HospitalEntity::ClassName()) || BuildingEntity::IsA(name); + } - // VTABLE 0x100d5068 - // SIZE 0x68 }; #endif // HOSPITALENTITY_H diff --git a/LEGO1/hospitalstate.cpp b/LEGO1/hospitalstate.cpp index c95786ee..066dceec 100644 --- a/LEGO1/hospitalstate.cpp +++ b/LEGO1/hospitalstate.cpp @@ -5,11 +5,3 @@ HospitalState::HospitalState() { // TODO } - -// OFFSET: LEGO1 0x10076530 STUB -undefined4 HospitalState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/hospitalstate.h b/LEGO1/hospitalstate.h index 1bb600a9..ccecf07b 100644 --- a/LEGO1/hospitalstate.h +++ b/LEGO1/hospitalstate.h @@ -3,28 +3,26 @@ #include "legostate.h" +// VTABLE 0x100d97a0 +// SIZE 0x18 class HospitalState : public LegoState { public: HospitalState(); // OFFSET: LEGO1 0x10076400 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0480 return "HospitalState"; - }; + } // OFFSET: LEGO1 0x10076410 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, HospitalState::ClassName()) || LegoState::IsA(name); - }; + } - virtual undefined4 VTable0x1c(undefined4 param); - - // VTABLE 0x100d97a0 - // SIZE 0x18 }; #endif // HOSPITALSTATE_H diff --git a/LEGO1/infocenter.cpp b/LEGO1/infocenter.cpp index d029c80e..1ad07ee4 100644 --- a/LEGO1/infocenter.cpp +++ b/LEGO1/infocenter.cpp @@ -1,19 +1,19 @@ #include "infocenter.h" // OFFSET: LEGO1 0x1006ea20 STUB -InfoCenter::InfoCenter() +Infocenter::Infocenter() { // TODO } // OFFSET: LEGO1 0x1006ec90 STUB -InfoCenter::~InfoCenter() +Infocenter::~Infocenter() { // TODO } // OFFSET: LEGO1 0x1006ef10 STUB -long InfoCenter::Notify(MxParam &p) +long Infocenter::Notify(MxParam &p) { // TODO @@ -21,7 +21,7 @@ long InfoCenter::Notify(MxParam &p) } // OFFSET: LEGO1 0x10070af0 STUB -long InfoCenter::Tickle() +long Infocenter::Tickle() { // TODO diff --git a/LEGO1/infocenter.h b/LEGO1/infocenter.h index 0a05bf80..49a71acb 100644 --- a/LEGO1/infocenter.h +++ b/LEGO1/infocenter.h @@ -3,17 +3,30 @@ #include "legoworld.h" -class InfoCenter : public LegoWorld +// VTABLE 0x100d9338 +// SIZE 0x1d8 +class Infocenter : public LegoWorld { public: - InfoCenter(); - virtual ~InfoCenter(); + Infocenter(); + virtual ~Infocenter() override; - virtual long Notify(MxParam &p); // vtable+0x4 - virtual long Tickle(); // vtable+0x8 + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x1006eb40 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f04ec + return "Infocenter"; + } + + // OFFSET: LEGO1 0x1006eb50 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Infocenter::ClassName()) || LegoWorld::IsA(name); + } - // VTABLE 0x100d9338 - // SIZE 0x1d8 }; #endif // INFOCENTER_H diff --git a/LEGO1/infocenterdoor.cpp b/LEGO1/infocenterdoor.cpp index cf6742fb..be57f96e 100644 --- a/LEGO1/infocenterdoor.cpp +++ b/LEGO1/infocenterdoor.cpp @@ -1,19 +1,19 @@ #include "infocenterdoor.h" // OFFSET: LEGO1 0x10037730 STUB -InfoCenterDoor::InfoCenterDoor() +InfocenterDoor::InfocenterDoor() { // TODO } // OFFSET: LEGO1 0x100378f0 STUB -InfoCenterDoor::~InfoCenterDoor() +InfocenterDoor::~InfocenterDoor() { // TODO } // OFFSET: LEGO1 0x100379e0 STUB -long InfoCenterDoor::Notify(MxParam &p) +long InfocenterDoor::Notify(MxParam &p) { // TODO diff --git a/LEGO1/infocenterdoor.h b/LEGO1/infocenterdoor.h index 667bdbc4..77a0c021 100644 --- a/LEGO1/infocenterdoor.h +++ b/LEGO1/infocenterdoor.h @@ -3,16 +3,29 @@ #include "legoworld.h" -class InfoCenterDoor : public LegoWorld +// VTABLE 0x100d72d8 +// SIZE 0xfc +class InfocenterDoor : public LegoWorld { public: - InfoCenterDoor(); - virtual ~InfoCenterDoor(); // vtable+0x0 + InfocenterDoor(); + virtual ~InfocenterDoor(); // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x100377b0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f049c + return "InfocenterDoor"; + } + + // OFFSET: LEGO1 0x100377c0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, InfocenterDoor::ClassName()) || LegoWorld::IsA(name); + } - // VTABLE 0x100d72d8 - // SIZE 0xfc }; #endif // INFOCENTERDOOR_H diff --git a/LEGO1/infocenterentity.cpp b/LEGO1/infocenterentity.cpp index a301ee58..211cf0b8 100644 --- a/LEGO1/infocenterentity.cpp +++ b/LEGO1/infocenterentity.cpp @@ -1,9 +1 @@ #include "infocenterentity.h" - -// OFFSET: LEGO1 0x100150c0 STUB -undefined4 InfoCenterEntity::VTable0x50() -{ - // TODO - - return undefined4(); -} \ No newline at end of file diff --git a/LEGO1/infocenterentity.h b/LEGO1/infocenterentity.h index 7d942aed..3980e68a 100644 --- a/LEGO1/infocenterentity.h +++ b/LEGO1/infocenterentity.h @@ -3,13 +3,24 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d4b90 +// SIZE 0x68 class InfoCenterEntity : public BuildingEntity { - virtual undefined4 VTable0x50(); // vtable+0x50 +public: + // OFFSET: LEGO1 0x1000ea00 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f035c + return "InfoCenterEntity"; + } + + // OFFSET: LEGO1 0x1000ea10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(name); + } + }; -#endif // INFOCENTERENTITY_H \ No newline at end of file +#endif // INFOCENTERENTITY_H diff --git a/LEGO1/infocenterstate.cpp b/LEGO1/infocenterstate.cpp index 1c3b6a59..d680eb43 100644 --- a/LEGO1/infocenterstate.cpp +++ b/LEGO1/infocenterstate.cpp @@ -1,19 +1,14 @@ #include "infocenterstate.h" // OFFSET: LEGO1 0x10071600 STUB -InfoCenterState::InfoCenterState() +InfocenterState::InfocenterState() { // TODO } // OFFSET: LEGO1 0x10071920 STUB -InfoCenterState::~InfoCenterState() +InfocenterState::~InfocenterState() { // TODO } -// OFFSET: LEGO1 0x10071830 -MxBool InfoCenterState::VTable0x14() -{ - return FALSE; -} diff --git a/LEGO1/infocenterstate.h b/LEGO1/infocenterstate.h index 6df6ce0e..4f09d496 100644 --- a/LEGO1/infocenterstate.h +++ b/LEGO1/infocenterstate.h @@ -3,29 +3,26 @@ #include "legostate.h" -class InfoCenterState : public LegoState +// VTABLE 0x100d93a8 +// SIZE 0x94 +class InfocenterState : public LegoState { public: - InfoCenterState(); - virtual ~InfoCenterState(); + InfocenterState(); + virtual ~InfocenterState(); // OFFSET: LEGO1 0x10071840 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f04dc - return "InfoCenterState"; - }; + return "InfocenterState"; + } // OFFSET: LEGO1 0x10071850 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { - return !strcmp(name, InfoCenterState::ClassName()) || LegoState::IsA(name); - }; - - virtual MxBool VTable0x14(); - - // VTABLE 0x100d93a8 - // SIZE 0x94 + return !strcmp(name, InfocenterState::ClassName()) || LegoState::IsA(name); + } }; -#endif // INFOCENTERSTATE_H \ No newline at end of file +#endif // INFOCENTERSTATE_H diff --git a/LEGO1/isle.cpp b/LEGO1/isle.cpp index 1c8e89c7..fa5d806b 100644 --- a/LEGO1/isle.cpp +++ b/LEGO1/isle.cpp @@ -5,23 +5,3 @@ Isle::Isle() { // TODO } - -// OFFSET: LEGO1 0x10030fc0 STUB -void Isle::VTable0x50() -{ - // TODO -} - -// OFFSET: LEGO1 0x10033180 STUB -undefined4 Isle::VTable0x64() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x10033050 STUB -void Isle::VTable0x6c(int *param) -{ - // TODO -} diff --git a/LEGO1/isle.h b/LEGO1/isle.h index a8fc14e7..4aedbbcf 100644 --- a/LEGO1/isle.h +++ b/LEGO1/isle.h @@ -3,18 +3,26 @@ #include "legoworld.h" +// VTABLE 0x100d6fb8 +// SIZE 0x140 +// Radio at 0x12c class Isle : public LegoWorld { public: Isle(); - virtual void VTable0x50(); // vtable+0x50 - virtual int VTable0x64(); // vtable+0x64 - virtual void VTable0x6c(int* param); // vtable+0x6c + // OFFSET: LEGO1 0x10030910 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0458 + return "Isle"; + } - // VTABLE 0x100d6fb8 - // SIZE 0x140 - // Radio at 0x12c + // OFFSET: LEGO1 0x10030920 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Isle::ClassName()) || LegoWorld::IsA(name); + } }; #endif // ISLE_H diff --git a/LEGO1/isleactor.cpp b/LEGO1/isleactor.cpp index 0989364b..ca286e37 100644 --- a/LEGO1/isleactor.cpp +++ b/LEGO1/isleactor.cpp @@ -1,26 +1 @@ #include "isleactor.h" - -// 0x100f07dc -static char* g_isleActorClassName = "IsleActor"; - -// OFFSET: LEGO1 0x100d5178 STUB -long IsleActor::Notify(MxParam &p) -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x1000e660 STUB -const char *IsleActor::ClassName() const -{ - return g_isleActorClassName; -} - -// OFFSET: LEGO1 0x1000e670 STUB -MxBool IsleActor::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/isleactor.h b/LEGO1/isleactor.h index cbb7776d..3b7660f5 100644 --- a/LEGO1/isleactor.h +++ b/LEGO1/isleactor.h @@ -3,14 +3,22 @@ #include "legoactor.h" +// VTABLE 0x100d5178 class IsleActor : public LegoActor { public: - virtual long Notify(MxParam &p); // vtable+0x4 - virtual const char* ClassName() const; // vtable+0xc - virtual MxBool IsA(const char *name) const; // vtable+0x10 + // OFFSET: LEGO1 0x1000e660 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f07dc + return "IsleActor"; + } - // VTABLE 0x100d5178 + // OFFSET: LEGO1 0x1000e670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, IsleActor::ClassName()) || LegoActor::IsA(name); + } }; #endif // ISLEACTOR_H diff --git a/LEGO1/islepathactor.cpp b/LEGO1/islepathactor.cpp index d1ff7a1e..72ed76d8 100644 --- a/LEGO1/islepathactor.cpp +++ b/LEGO1/islepathactor.cpp @@ -1,21 +1 @@ #include "islepathactor.h" - -// OFFSET: LEGO1 0x10001e60 STUB -IslePathActor::IslePathActor() -{ - // TODO -} - -// OFFSET: LEGO1 0x1001a2a0 STUB -void IslePathActor::Destroy() -{ - // LegoEntity::Destroy(this); - - // TODO -} - -// OFFSET: LEGO1 0x1001b5b0 STUB -void IslePathActor::VTable0xec(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, void *, char) -{ - // TODO -} diff --git a/LEGO1/islepathactor.h b/LEGO1/islepathactor.h index 8f49befe..fce450ac 100644 --- a/LEGO1/islepathactor.h +++ b/LEGO1/islepathactor.h @@ -3,20 +3,23 @@ #include "legopathactor.h" -#ifndef undefined -#define undefined int -#endif - +// VTABLE 0x100d4398 +// SIZE >= 0x230 class IslePathActor : public LegoPathActor { public: - IslePathActor(); + // OFFSET: LEGO1 0x10002ea0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0104 + return "IslePathActor"; + } - virtual void Destroy(); // vtable+0x1c - virtual void VTable0xec(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, void*, char); // vtable+0xec - - // VTABLE 0x100d4398 - // SIZE >= 0x230 + // OFFSET: LEGO1 0x10002eb0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, IslePathActor::ClassName()) || LegoPathActor::IsA(name); + } }; #endif // ISLEPATHACTOR_H diff --git a/LEGO1/jetski.h b/LEGO1/jetski.h index 28301ecd..7cabea4d 100644 --- a/LEGO1/jetski.h +++ b/LEGO1/jetski.h @@ -3,13 +3,26 @@ #include "islepathactor.h" +// VTABLE 0x100d9ec8 +// SIZE 0x164 class Jetski : public IslePathActor { public: Jetski(); - // VTABLE 0x100d9ec8 - // SIZE 0x164 + // OFFSET: LEGO1 0x1007e430 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f03d8 + return "Jetski"; + } + + // OFFSET: LEGO1 0x1007e440 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Jetski::ClassName()) || IslePathActor::IsA(name); + } + }; diff --git a/LEGO1/jetskiRace.cpp b/LEGO1/jetskiRace.cpp deleted file mode 100644 index a437cac7..00000000 --- a/LEGO1/jetskiRace.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "jetskiRace.h" - -// OFFSET: LEGO1 0x10015aa0 STUB -JetskiRace::JetskiRace() -{ - // TODO -} - -// OFFSET: LEGO1 0x100166a0 STUB -undefined4 JetskiRace::VTable0x70(int param_1) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/jetskiRace.h b/LEGO1/jetskiRace.h deleted file mode 100644 index 6d2c4f92..00000000 --- a/LEGO1/jetskiRace.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef JETSKIRACE_H -#define JETSKIRACE_H - -#include "legorace.h" - -#ifndef undefined4 -#define undefined4 int -#endif - -class JetskiRace : public LegoRace -{ -public: - JetskiRace(); - - undefined4 VTable0x70(int param_1); // vtable+0x70 - - // VTABLE 0x100d4fe8 -}; - -#endif // JETSKIRACE_H \ No newline at end of file diff --git a/LEGO1/jetskirace.cpp b/LEGO1/jetskirace.cpp new file mode 100644 index 00000000..cc119878 --- /dev/null +++ b/LEGO1/jetskirace.cpp @@ -0,0 +1 @@ +#include "jetskirace.h" diff --git a/LEGO1/jetskirace.h b/LEGO1/jetskirace.h new file mode 100644 index 00000000..bea59903 --- /dev/null +++ b/LEGO1/jetskirace.h @@ -0,0 +1,26 @@ +#ifndef JETSKIRACE_H +#define JETSKIRACE_H + +#include "legorace.h" + +// VTABLE 0x100d4fe8 +// SIZE 0x144 +class JetskiRace : public LegoRace +{ +public: + + // OFFSET: LEGO1 0x1000daf0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0530 + return "JetskiRace"; + } + + // OFFSET: LEGO1 0x1000db00 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JetskiRace::ClassName()) || LegoRace::IsA(name); + } +}; + +#endif // JETSKIRACE_H diff --git a/LEGO1/jetskiracestate.h b/LEGO1/jetskiracestate.h index ad611cfb..bdcfc0cd 100644 --- a/LEGO1/jetskiracestate.h +++ b/LEGO1/jetskiracestate.h @@ -3,24 +3,24 @@ #include "racestate.h" +// VTABLE 0x100d4fa8 +// SIZE 0x2c class JetskiRaceState : public RaceState { public: // OFFSET: LEGO1 0x1000dc40 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f00ac return "JetskiRaceState"; - }; + } // OFFSET: LEGO1 0x1000dc50 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, JetskiRaceState::ClassName()) || RaceState::IsA(name); - }; + } - // VTABLE 0x100d4fa8 - // SIZE 0x2c }; #endif // JETSKIRACESTATE_H diff --git a/LEGO1/jukebox.h b/LEGO1/jukebox.h index 8adf0ff0..3083f901 100644 --- a/LEGO1/jukebox.h +++ b/LEGO1/jukebox.h @@ -1,14 +1,28 @@ #ifndef JUKEBOX_H #define JUKEBOX_H -#include "legoentity.h" +#include "legoworld.h" -class JukeBox : public LegoEntity +// VTABLE 0x100d8958 +// SIZE 0x104 +class JukeBox : public LegoWorld { public: JukeBox(); + + // OFFSET: LEGO1 0x1005d6f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02cc + return "JukeBox"; + } + + // OFFSET: LEGO1 0x1005d700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JukeBox::ClassName()) || LegoWorld::IsA(name); + } - // SIZE 0x50 }; #endif // JUKEBOX_H diff --git a/LEGO1/jukeboxentity.h b/LEGO1/jukeboxentity.h index ffd6b7ed..8571f203 100644 --- a/LEGO1/jukeboxentity.h +++ b/LEGO1/jukeboxentity.h @@ -3,13 +3,27 @@ #include "legoentity.h" +// VTABLE 0x100da8a0 +// SIZE 0x6c class JukeBoxEntity : public LegoEntity { public: JukeBoxEntity(); - virtual ~JukeBoxEntity(); // vtable+0x0 + virtual ~JukeBoxEntity() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10085cc0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02f0 + return "JukeBoxEntity"; + } + + // OFFSET: LEGO1 0x10085cd0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(name); + } - // VTABLE 0x100da8a0 }; -#endif // JUKEBOXENTITY_H \ No newline at end of file +#endif // JUKEBOXENTITY_H diff --git a/LEGO1/jukeboxstate.cpp b/LEGO1/jukeboxstate.cpp index 60390c54..25b6dc90 100644 --- a/LEGO1/jukeboxstate.cpp +++ b/LEGO1/jukeboxstate.cpp @@ -1,7 +1 @@ #include "jukeboxstate.h" - -// OFFSET: LEGO1 0x1000f300 -MxBool JukeBoxState::VTable0x14() -{ - return FALSE; -} \ No newline at end of file diff --git a/LEGO1/jukeboxstate.h b/LEGO1/jukeboxstate.h index b68b6b0a..75640fe3 100644 --- a/LEGO1/jukeboxstate.h +++ b/LEGO1/jukeboxstate.h @@ -3,26 +3,24 @@ #include "legostate.h" +// VTABLE 0x100d4a90 +// SIZE 0x10 class JukeBoxState : public LegoState { public: // OFFSET: LEGO1 0x1000f310 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f02bc return "JukeBoxState"; - }; + } // OFFSET: LEGO1 0x1000f320 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, JukeBoxState::ClassName()) || LegoState::IsA(name); - }; + } - virtual MxBool VTable0x14(); - - // VTABLE 0x100d4a90 - // SIZE 0x10 }; -#endif // JUKEBOXSTATE_H \ No newline at end of file +#endif // JUKEBOXSTATE_H diff --git a/LEGO1/lego3dwavepresenter.h b/LEGO1/lego3dwavepresenter.h index bd6ecd11..b9a2b7f5 100644 --- a/LEGO1/lego3dwavepresenter.h +++ b/LEGO1/lego3dwavepresenter.h @@ -3,9 +3,23 @@ #include "legowavepresenter.h" +// VTABLE 0x100d52b0 +// SIZE 0xa0 class Lego3DWavePresenter : public LegoWavePresenter { - // SIZE 0xa0 +public: + // OFFSET: LEGO1 0x1000d890 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f058c + return "Lego3DWavePresenter"; + } + + // OFFSET: LEGO1 0x1000d8a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(name); + } }; #endif // LEGO3DWAVEPRESENTER_H diff --git a/LEGO1/legoact2state.cpp b/LEGO1/legoact2state.cpp index c8631046..1ca6a144 100644 --- a/LEGO1/legoact2state.cpp +++ b/LEGO1/legoact2state.cpp @@ -1,7 +1 @@ #include "legoact2state.h" - -// OFFSET: LEGO1 0x1000df70 -MxBool LegoAct2State::VTable0x14() -{ - return FALSE; -} \ No newline at end of file diff --git a/LEGO1/legoact2state.h b/LEGO1/legoact2state.h index 2b09da18..321138ba 100644 --- a/LEGO1/legoact2state.h +++ b/LEGO1/legoact2state.h @@ -3,25 +3,24 @@ #include "legostate.h" +// VTABLE 0x100d4a70 +// SIZE 0x10 class LegoAct2State : public LegoState { public: // OFFSET: LEGO1 0x1000df80 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0428 return "LegoAct2State"; - }; + } // OFFSET: LEGO1 0x1000df90 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, LegoAct2State::ClassName()) || LegoState::IsA(name); - }; + } - virtual MxBool VTable0x14(); - - // SIZE 0x10 }; #endif // LEGOACT2STATE_H diff --git a/LEGO1/legoactioncontrolpresenter.cpp b/LEGO1/legoactioncontrolpresenter.cpp index 104cdbc7..598c0958 100644 --- a/LEGO1/legoactioncontrolpresenter.cpp +++ b/LEGO1/legoactioncontrolpresenter.cpp @@ -1,7 +1 @@ #include "legoactioncontrolpresenter.h" - -// OFFSET: LEGO1 0x10043e20 STUB -void LegoActionControlPresenter::VTable0x5c(char param) -{ - // TODO -} \ No newline at end of file diff --git a/LEGO1/legoactioncontrolpresenter.h b/LEGO1/legoactioncontrolpresenter.h index f46f3a67..7e051805 100644 --- a/LEGO1/legoactioncontrolpresenter.h +++ b/LEGO1/legoactioncontrolpresenter.h @@ -3,13 +3,23 @@ #include "mxmediapresenter.h" +// VTABLE 0x100d5118 +// SIZE 0x68 class LegoActionControlPresenter : public MxMediaPresenter { public: - void VTable0x5c(char param); // vtable+0x5c + // OFFSET: LEGO1 0x1000d0e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f05bc + return "LegoActionControlPresenter"; + } - // VTABLE 0x100d5118 - // SIZE 0x68 + // OFFSET: LEGO1 0x1000d0f0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActionControlPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } }; #endif // LEGOACTIONCONTROLPRESENTER_H diff --git a/LEGO1/legoactor.h b/LEGO1/legoactor.h index e3a5ae40..9b23e943 100644 --- a/LEGO1/legoactor.h +++ b/LEGO1/legoactor.h @@ -3,9 +3,23 @@ #include "legoentity.h" +// VTABLE 0x100d6d68 +// SIZE 0x78 class LegoActor : public LegoEntity { - +public: + // OFFSET: LEGO1 0x1002d210 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0124 + return "LegoActor"; + } + + // OFFSET: LEGO1 0x1002d220 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActor::ClassName()) || LegoEntity::IsA(name); + } }; #endif // LEGOACTOR_H diff --git a/LEGO1/legoactorpresenter.h b/LEGO1/legoactorpresenter.h index d3056182..fd3ae4e7 100644 --- a/LEGO1/legoactorpresenter.h +++ b/LEGO1/legoactorpresenter.h @@ -3,9 +3,23 @@ #include "legoentitypresenter.h" +// VTABLE 0x100d5320 +// SIZE 0x50 class LegoActorPresenter : public LegoEntityPresenter { - // VTABLE 0x100d5320 +public: + // OFFSET: LEGO1 0x1000cb10 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f06a4 + return "LegoActorPresenter"; + } + + // OFFSET: LEGO1 0x1000cb20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoActorPresenter::ClassName()) || LegoEntityPresenter::IsA(name); + } }; #endif // LEGOACTORPRESENTER_H diff --git a/LEGO1/legoanimactor.cpp b/LEGO1/legoanimactor.cpp index 640863d0..d3515937 100644 --- a/LEGO1/legoanimactor.cpp +++ b/LEGO1/legoanimactor.cpp @@ -1,24 +1 @@ #include "legoanimactor.h" - -// 0x100f057c -static char* g_legoAnimActorClassName = "LegoAnimActor"; - -// OFFSET: LEGO1 0x1000fb90 STUB -const char* GetClassNameInternal() -{ - return g_legoAnimActorClassName; -} - -// OFFSET: LEGO1 0x1000fb90 STUB -const char *LegoAnimActor::ClassName() const -{ - return GetClassNameInternal(); -} - -// OFFSET: LEGO1 0x1000fbb0 STUB -MxBool LegoAnimActor::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/legoanimactor.h b/LEGO1/legoanimactor.h index 36024619..f535028c 100644 --- a/LEGO1/legoanimactor.h +++ b/LEGO1/legoanimactor.h @@ -6,10 +6,6 @@ class LegoAnimActor : public LegoPathActor { public: - virtual const char* ClassName() const; - virtual MxBool IsA(const char *name) const; - - // VTABLE 0x100d5440 }; #endif // LEGOANIMACTOR_H diff --git a/LEGO1/legoanimationmanager.h b/LEGO1/legoanimationmanager.h index b0a3daac..5fae368e 100644 --- a/LEGO1/legoanimationmanager.h +++ b/LEGO1/legoanimationmanager.h @@ -3,21 +3,35 @@ #include "mxcore.h" +// VTABLE 0x100d8c18 +// SIZE 0x500 class LegoAnimationManager : public MxCore { public: LegoAnimationManager(); - virtual ~LegoAnimationManager(); // vtable+0x0 + virtual ~LegoAnimationManager() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x1005ec80 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7508 + return "LegoAnimationManager"; + } + + // OFFSET: LEGO1 0x1005ec90 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAnimationManager::ClassName()) || MxCore::IsA(name); + } - virtual long Notify(MxParam &p); // vtable+0x4 - virtual long Tickle(); // vtable+0x8 __declspec(dllexport) static void configureLegoAnimationManager(int param_1); private: void Init(); - - // VTABLE 0x100d8c18 - // SIZE 0x500 + }; #endif // LEGOANIMATIONMANAGER_H diff --git a/LEGO1/legoanimmmpresenter.cpp b/LEGO1/legoanimmmpresenter.cpp index 1118c9af..1c98b7c1 100644 --- a/LEGO1/legoanimmmpresenter.cpp +++ b/LEGO1/legoanimmmpresenter.cpp @@ -3,5 +3,5 @@ // OFFSET: LEGO1 0x1004a8d0 STUB LegoAnimMMPresenter::LegoAnimMMPresenter() { - // TODO -} \ No newline at end of file + // TODO +} diff --git a/LEGO1/legoanimmmpresenter.h b/LEGO1/legoanimmmpresenter.h index c4643900..8cb61be0 100644 --- a/LEGO1/legoanimmmpresenter.h +++ b/LEGO1/legoanimmmpresenter.h @@ -3,13 +3,26 @@ #include "mxcompositepresenter.h" +// VTABLE 0x100d7de8 +// SIZE 0x74 class LegoAnimMMPresenter : public MxCompositePresenter { public: LegoAnimMMPresenter(); - // VTABLE 0x100d7de8 - // SIZE 0x74 + // OFFSET: LEGO1 0x1004a950 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f046c + return "LegoAnimMMPresenter"; + } + + // OFFSET: LEGO1 0x1004a960 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + }; #endif // LEGOANIMMMPRESENTER_H diff --git a/LEGO1/legoanimpresenter.h b/LEGO1/legoanimpresenter.h index 4ec20b83..56fcc989 100644 --- a/LEGO1/legoanimpresenter.h +++ b/LEGO1/legoanimpresenter.h @@ -3,15 +3,28 @@ #include "mxvideopresenter.h" +// VTABLE 0x100d90c8 class LegoAnimPresenter : public MxVideoPresenter { public: LegoAnimPresenter(); + + // OFFSET: LEGO1 0x10068530 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f071c + return "LegoAnimPresenter"; + } + + // OFFSET: LEGO1 0x10068540 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } private: void Init(); - // VTABLE 0x100d90c8 }; #endif // LEGOANIMPRESENTER_H diff --git a/LEGO1/legobuildingmanager.cpp b/LEGO1/legobuildingmanager.cpp index 737a99f4..b2c4e7ea 100644 --- a/LEGO1/legobuildingmanager.cpp +++ b/LEGO1/legobuildingmanager.cpp @@ -5,10 +5,9 @@ LegoBuildingManager::LegoBuildingManager() { } -// OFFSET: LEGO1 0x10030150 STUB -void LegoBuildingManager::UnknownFunction(int param_1, int param_2, char param_3, LegoBuildingManager *param_4) +// OFFSET: LEGO1 0x1002f960 STUB +LegoBuildingManager::~LegoBuildingManager() { - // TODO } // OFFSET: LEGO1 0x1002f9d0 STUB diff --git a/LEGO1/legobuildingmanager.h b/LEGO1/legobuildingmanager.h index bdf1eb50..17701617 100644 --- a/LEGO1/legobuildingmanager.h +++ b/LEGO1/legobuildingmanager.h @@ -1,19 +1,28 @@ #ifndef LEGOBUILDINGMANAGER_H #define LEGOBUILDINGMANAGER_H -class LegoBuildingManager +#include "mxcore.h" + +// VTABLE 0x100d6f50 +// SIZE 0x30 +class LegoBuildingManager : public MxCore { public: LegoBuildingManager(); + virtual ~LegoBuildingManager() override; + + // OFFSET: LEGO1 0x1002f930 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f37d0 + return "LegoBuildingManager"; + } __declspec(dllexport) static void configureLegoBuildingManager(int param_1); - - void UnknownFunction(int param_1, int param_2, char param_3, LegoBuildingManager* param_4); private: void Init(); - // VTABLE 0x100d6f50 }; #endif // LEGOBUILDINGMANAGER_H diff --git a/LEGO1/legocachesound.cpp b/LEGO1/legocachesound.cpp index cdf3d0ba..37495920 100644 --- a/LEGO1/legocachesound.cpp +++ b/LEGO1/legocachesound.cpp @@ -1,9 +1,9 @@ #include "legocachesound.h" -// OFFSET: LEGO1 0x100064d0 STUB +// OFFSET: LEGO1 0x100064d0 LegoCacheSound::LegoCacheSound() { - // TODO + Init(); } // OFFSET: LEGO1 0x10006630 STUB @@ -12,12 +12,6 @@ LegoCacheSound::~LegoCacheSound() // TODO } -// OFFSET: LEGO1 0x10006920 STUB -void LegoCacheSound::VTable0x18() -{ - // TODO -} - // OFFSET: LEGO1 0x100066d0 STUB void LegoCacheSound::Init() { diff --git a/LEGO1/legocachesound.h b/LEGO1/legocachesound.h index b2e91efc..3506aa95 100644 --- a/LEGO1/legocachesound.h +++ b/LEGO1/legocachesound.h @@ -3,19 +3,29 @@ #include "mxcore.h" +// VTABLE 0x100d4718 +// SIZE 0x88 class LegoCacheSound : public MxCore { public: LegoCacheSound(); - virtual ~LegoCacheSound(); // vtable+0x0 + virtual ~LegoCacheSound() override; // vtable+0x0 - virtual void VTable0x18(); // vtable+0x18 + // OFFSET: LEGO1 0x10006580 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f01c4 + return "LegoCacheSound"; + } + + // OFFSET: LEGO1 0x10006590 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCacheSound::ClassName()) || MxCore::IsA(name); + } private: void Init(); - - // VTABLE 0x100d4718 - // SIZE 0x88 }; #endif // LEGOCACHESOUND_H diff --git a/LEGO1/legocameracontroller.cpp b/LEGO1/legocameracontroller.cpp index 073abf7c..da023851 100644 --- a/LEGO1/legocameracontroller.cpp +++ b/LEGO1/legocameracontroller.cpp @@ -1,13 +1,13 @@ #include "legocameracontroller.h" +// OFFSET: LEGO1 0x10011d50 STUB +LegoCameraController::LegoCameraController() +{ + // TODO +} + // OFFSET: LEGO1 0x10011f70 STUB LegoCameraController::~LegoCameraController() { // TODO } - -// OFFSET: LEGO1 0x10011ff0 STUB -void LegoCameraController::VTable0x44() -{ - // TODO -} diff --git a/LEGO1/legocameracontroller.h b/LEGO1/legocameracontroller.h index aabedc9b..af5015ae 100644 --- a/LEGO1/legocameracontroller.h +++ b/LEGO1/legocameracontroller.h @@ -3,14 +3,27 @@ #include "mxcore.h" +// VTABLE 0x100d57b0 +// SIZE 0xc8 class LegoCameraController : public MxCore { public: - virtual ~LegoCameraController(); // vtable+0x0 + LegoCameraController(); + virtual ~LegoCameraController() override; // vtable+0x0 - virtual void VTable0x44(); // vtable+0x44 + // OFFSET: LEGO1 0x10011ec0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0850 + return "LegoCameraController"; + } + + // OFFSET: LEGO1 0x10011ed0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCameraController::ClassName()) || MxCore::IsA(name); + } - // VTABLE 0x100d57b0 }; #endif // LEGOCAMERACONTROLLER_H diff --git a/LEGO1/legocarbuild.cpp b/LEGO1/legocarbuild.cpp index 47770289..d96668e4 100644 --- a/LEGO1/legocarbuild.cpp +++ b/LEGO1/legocarbuild.cpp @@ -27,41 +27,3 @@ long LegoCarBuild::Tickle() return 0; } - -// OFFSET: LEGO1 0x10025e70 STUB -undefined4 LegoCarBuild::VTable0x64() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x100256c0 STUB -void LegoCarBuild::VTable0x68(char param_1) -{ - // TODO -} - -// OFFSET: LEGO1 0x10022fc0 STUB -void LegoCarBuild::VTable0x6c() -{ - // TODO -} - -// OFFSET: LEGO1 0x10023500 STUB -void LegoCarBuild::VTable0x74(float *param_1, float *param_2) -{ - // TODO -} - -// OFFSET: LEGO1 0x10023570 STUB -void LegoCarBuild::VTable0x78(float *param_1, float *param_2) -{ - // TODO -} - -// OFFSET: LEGO1 0x10023620 STUB -void LegoCarBuild::VTable0x7c(float *param_1, float *param_2) -{ - // TODO -} diff --git a/LEGO1/legocarbuild.h b/LEGO1/legocarbuild.h index 1599f0e6..10396c9e 100644 --- a/LEGO1/legocarbuild.h +++ b/LEGO1/legocarbuild.h @@ -3,24 +3,29 @@ #include "legoworld.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d6658 +// SIZE 0x34c class LegoCarBuild : public LegoWorld { public: LegoCarBuild(); - virtual ~LegoCarBuild(); + virtual ~LegoCarBuild() override; - virtual long Notify(MxParam &p); // vtable+0x4 - virtual long Tickle(); // vtable+0x8 - virtual undefined4 VTable0x64(); // vtable+0x64 - virtual void VTable0x68(char param_1); // vtable+0x68 - virtual void VTable0x6c(); // vtable+0x6c - virtual void VTable0x74(float* param_1, float* param_2); // vtable+0x74 - virtual void VTable0x78(float* param_1, float* param_2); // vtable+0x78 - virtual void VTable0x7c(float* param_1, float* param_2); // vtable+0x7c + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10022940 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0504 + return "LegoCarBuild"; + } + + // OFFSET: LEGO1 0x10022950 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarBuild::ClassName()) || LegoWorld::IsA(name); + } }; #endif // LEGOCARBUILD_H diff --git a/LEGO1/legocarbuildanimpresenter.h b/LEGO1/legocarbuildanimpresenter.h index 6f7bd429..b270243e 100644 --- a/LEGO1/legocarbuildanimpresenter.h +++ b/LEGO1/legocarbuildanimpresenter.h @@ -3,11 +3,26 @@ #include "legoanimpresenter.h" +// VTABLE 0x100d99e0 +// SIZE 0x150 class LegoCarBuildAnimPresenter : public LegoAnimPresenter { public: LegoCarBuildAnimPresenter(); - virtual ~LegoCarBuildAnimPresenter(); // vtable+0x0 + virtual ~LegoCarBuildAnimPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x10078510 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f05ec + return "LegoCarBuildAnimPresenter"; + } + + // OFFSET: LEGO1 0x10078520 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(name); + } }; #endif // LEGOCARBUILDANIMPRESENTER_H diff --git a/LEGO1/legocarraceactor.h b/LEGO1/legocarraceactor.h index 5b0696b6..36ba3ab1 100644 --- a/LEGO1/legocarraceactor.h +++ b/LEGO1/legocarraceactor.h @@ -3,9 +3,22 @@ #include "legoraceactor.h" +// VTABLE 0x100da0d8 class LegoCarRaceActor : public LegoRaceActor { +public: + // OFFSET: LEGO1 0x10081650 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0568 + return "LegoCarRaceActor"; + } + // OFFSET: LEGO1 0x10081670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(name); + } }; #endif // LEGOCARRACEACTOR_H diff --git a/LEGO1/legocontrolmanager.cpp b/LEGO1/legocontrolmanager.cpp index a7beece5..0959df9c 100644 --- a/LEGO1/legocontrolmanager.cpp +++ b/LEGO1/legocontrolmanager.cpp @@ -1,7 +1,10 @@ #include "legocontrolmanager.h" -// 0x100f31b8 -static char* g_legoControlManagerClassName = "LegoControlManager"; +// OFFSET: LEGO1 0x10028520 STUB +LegoControlManager::LegoControlManager() +{ + // TODO +} // OFFSET: LEGO1 0x10028d60 STUB LegoControlManager::~LegoControlManager() @@ -16,17 +19,3 @@ long LegoControlManager::Tickle() return 0; } - -// OFFSET: LEGO1 0x10028cb0 STUB -const char *LegoControlManager::ClassName() const -{ - return g_legoControlManagerClassName; -} - -// OFFSET: LEGO1 0x10028cc0 STUB -MxBool LegoControlManager::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/legocontrolmanager.h b/LEGO1/legocontrolmanager.h index 9141affe..d3e183fd 100644 --- a/LEGO1/legocontrolmanager.h +++ b/LEGO1/legocontrolmanager.h @@ -3,16 +3,28 @@ #include "mxcore.h" +// VTABLE 0x100d6a80 class LegoControlManager : public MxCore { public: - virtual ~LegoControlManager(); // vtable+0x0 + LegoControlManager(); + virtual ~LegoControlManager() override; // vtable+0x0 - virtual long Tickle(); // vtable+0x8 - virtual const char* ClassName() const; // vtable+0xc - virtual MxBool IsA(const char *name) const; // vtable+0x10 + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x10028cb0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f31b8 + return "LegoControlManager"; + } + + // OFFSET: LEGO1 0x10028cc0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoControlManager::ClassName()) || MxCore::IsA(name); + } - // VTABLE 0x100d6a80 }; #endif // LEGOCONTROLMANAGER_H diff --git a/LEGO1/legoentity.cpp b/LEGO1/legoentity.cpp index 05d0d421..fe500cb7 100644 --- a/LEGO1/legoentity.cpp +++ b/LEGO1/legoentity.cpp @@ -1,11 +1,5 @@ #include "legoentity.h" -// OFFSET: LEGO1 0x100105f0 STUB -LegoEntity::LegoEntity() -{ - // TODO -} - // OFFSET: LEGO1 0x1000c290 LegoEntity::~LegoEntity() { @@ -20,88 +14,8 @@ long LegoEntity::Notify(MxParam &p) return 0; } -// OFFSET: LEGO1 0x100107e0 STUB -undefined4 LegoEntity::VTable0x18(undefined4 param) -{ - // TODO - - return undefined4(); -} - // OFFSET: LEGO1 0x10010810 STUB void LegoEntity::Destroy() { // TODO } - -// OFFSET: LEGO1 0x10010e10 STUB -void LegoEntity::VTable0x20(char *param) -{ - // TODO -} - -// OFFSET: LEGO1 0x100108a0 STUB -void LegoEntity::VTable0x24(undefined4 param_1, undefined1 param_2, undefined1 param_3) -{ - // TODO -} - -// OFFSET: LEGO1 0x10010790 STUB -void LegoEntity::VTable0x28(undefined4 param_1, undefined4 param2) -{ - // TODO -} - -// OFFSET: LEGO1 0x10010650 STUB -void LegoEntity::VTable0x2c(undefined1 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x10001090 STUB -void LegoEntity::VTable0x30(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x10010f10 STUB -void LegoEntity::VTable0x34(undefined1 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x10011070 STUB -void LegoEntity::VTable0x38() -{ - // TODO -} - -// OFFSET: LEGO1 0x10011300 STUB -void LegoEntity::VTable0x3c() -{ - // TODO -} - -// OFFSET: LEGO1 0x10011360 STUB -void LegoEntity::VTable0x40() -{ - // TODO -} - -// OFFSET: LEGO1 0x100113c0 STUB -void LegoEntity::VTable0x44() -{ - // TODO -} - -// OFFSET: LEGO1 0x10011420 STUB -void LegoEntity::VTable0x48(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x10011470 STUB -void LegoEntity::VTable0x4c() -{ - // TODO -} diff --git a/LEGO1/legoentity.h b/LEGO1/legoentity.h index 7feadace..774b19f2 100644 --- a/LEGO1/legoentity.h +++ b/LEGO1/legoentity.h @@ -3,44 +3,34 @@ #include "mxentity.h" -#ifndef undefined1 -#define undefined1 char -#endif - +// VTABLE 0x100d4858 class LegoEntity : public MxEntity { public: - LegoEntity(); - __declspec(dllexport) virtual ~LegoEntity(); // vtable+0x0 + // Inlined at 0x100853f7 + inline LegoEntity() + { + // TODO + } - virtual long Notify(MxParam &p); // vtable+0x4 + __declspec(dllexport) virtual ~LegoEntity() override; // vtable+0x0 + + virtual long Notify(MxParam &p) override; // vtable+0x4 // OFFSET: LEGO1 0x1000c2f0 - inline const char *LegoEntity::ClassName() const // vtable+0xc + inline const char *ClassName() const override // vtable+0xc { + // 0x100f0064 return "LegoEntity"; } // OFFSET: LEGO1 0x1000c300 - inline MxBool LegoEntity::IsA(const char *name) const // vtable+0x10 + inline MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, LegoEntity::ClassName()) || MxEntity::IsA(name); } - virtual undefined4 VTable0x18(undefined4 param); // vtable+0x18 - virtual void Destroy(); // vtable+0x1c - virtual void VTable0x20(char* param); // vtable+0x20 - virtual void VTable0x24(undefined4 param_1, undefined1 param_2, undefined1 param_3); // vtable+0x24 - virtual void VTable0x28(undefined4 param_1, undefined4 param2); // vtable+0x28 - virtual void VTable0x2c(undefined1 param); // vtable+0x2c - virtual void VTable0x30(undefined4 param); // vtable+0x30 - virtual void VTable0x34(undefined1 param); // vtable+0x34 - virtual void VTable0x38(); // vtable+0x38 - virtual void VTable0x3c(); // vtable+0x3c - virtual void VTable0x40(); // vtable+0x40 - virtual void VTable0x44(); // vtable+0x44 - virtual void VTable0x48(undefined4 param); // vtable+0x48 - virtual void VTable0x4c(); // vtable+0x4c + virtual void Destroy() override; // vtable+0x1c }; diff --git a/LEGO1/legoentitypresenter.cpp b/LEGO1/legoentitypresenter.cpp index 4fb1c215..e763b771 100644 --- a/LEGO1/legoentitypresenter.cpp +++ b/LEGO1/legoentitypresenter.cpp @@ -1,9 +1,9 @@ #include "legoentitypresenter.h" -// OFFSET: LEGO1 0x10053440 STUB +// OFFSET: LEGO1 0x10053440 LegoEntityPresenter::LegoEntityPresenter() { - // TODO + Init(); } // OFFSET: LEGO1 0x100535d0 STUB diff --git a/LEGO1/legoentitypresenter.h b/LEGO1/legoentitypresenter.h index f7f801df..e2e82abc 100644 --- a/LEGO1/legoentitypresenter.h +++ b/LEGO1/legoentitypresenter.h @@ -3,16 +3,29 @@ #include "mxcompositepresenter.h" +// VTABLE 0x100d8398 class LegoEntityPresenter : public MxCompositePresenter { public: LegoEntityPresenter(); - virtual ~LegoEntityPresenter(); // vtable+0x0 + virtual ~LegoEntityPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x100534b0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06b8 + return "LegoEntityPresenter"; + } + + // OFFSET: LEGO1 0x100534c0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoEntityPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } private: void Init(); - // VTABLE 0x100d8398 }; diff --git a/LEGO1/legoextraactor.h b/LEGO1/legoextraactor.h index c1528db7..5b7f216f 100644 --- a/LEGO1/legoextraactor.h +++ b/LEGO1/legoextraactor.h @@ -3,9 +3,22 @@ #include "legoanimactor.h" +// VTABLE 0x100d6c10 class LegoExtraActor : public LegoAnimActor { - // VTABLE 0x100d6c10 +public: + // OFFSET: LEGO1 0x1002b7a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f3204 + return "LegoExtraActor"; + } + + // OFFSET: LEGO1 0x1002b7c0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoExtraActor::ClassName()) || LegoAnimActor::IsA(name); + } }; #endif // LEGOEXTRAACTOR_H diff --git a/LEGO1/legoflctexturepresenter.h b/LEGO1/legoflctexturepresenter.h index 5fe920e8..e525b3ce 100644 --- a/LEGO1/legoflctexturepresenter.h +++ b/LEGO1/legoflctexturepresenter.h @@ -3,10 +3,20 @@ #include "mxflcpresenter.h" +// VTABLE 0x100d89e0 +// SIZE 0x70 class LegoFlcTexturePresenter : public MxFlcPresenter { public: LegoFlcTexturePresenter(); + + // OFFSET: LEGO1 0x1005def0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0634 + return "LegoFlcTexturePresenter"; + } + }; #endif // LEGOFLCTEXTUREPRESENTER_H diff --git a/LEGO1/legohideanimpresenter.cpp b/LEGO1/legohideanimpresenter.cpp index 282b5de7..8a9e7c9b 100644 --- a/LEGO1/legohideanimpresenter.cpp +++ b/LEGO1/legohideanimpresenter.cpp @@ -1,8 +1,9 @@ #include "legohideanimpresenter.h" -// OFFSET: LEGO1 0x1006d7e0 STUB +// OFFSET: LEGO1 0x1006d7e0 LegoHideAnimPresenter::LegoHideAnimPresenter() { + Init(); } // OFFSET: LEGO1 0x1006da50 STUB diff --git a/LEGO1/legohideanimpresenter.h b/LEGO1/legohideanimpresenter.h index 3f8f982d..0c078e9b 100644 --- a/LEGO1/legohideanimpresenter.h +++ b/LEGO1/legohideanimpresenter.h @@ -3,15 +3,29 @@ #include "legoloopinganimpresenter.h" +// VTABLE 0x100d9278 +// SIZE 0xc4 class LegoHideAnimPresenter : public LegoLoopingAnimPresenter { public: LegoHideAnimPresenter(); + + // OFFSET: LEGO1 0x1006d880 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06cc + return "LegoHideAnimPresenter"; + } + + // OFFSET: LEGO1 0x1006d890 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoHideAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(name); + } private: void Init(); - // VTABLE 0x100d9278 }; -#endif // LEGOHIDEANIMPRESENTER_H \ No newline at end of file +#endif // LEGOHIDEANIMPRESENTER_H diff --git a/LEGO1/legoinputmanager.cpp b/LEGO1/legoinputmanager.cpp index 33214fb0..d60f5fc7 100644 --- a/LEGO1/legoinputmanager.cpp +++ b/LEGO1/legoinputmanager.cpp @@ -1,5 +1,11 @@ #include "legoinputmanager.h" +// OFFSET: LEGO1 0x1005b790 STUB +LegoInputManager::LegoInputManager() +{ + // TODO +} + // OFFSET: LEGO1 0x1005b8f0 STUB LegoInputManager::~LegoInputManager() { @@ -14,8 +20,3 @@ long LegoInputManager::Tickle() return 0; } -// OFFSET: LEGO 0x1005bfe0 STUB -void LegoInputManager::VTable0x38() -{ - // TODO -} diff --git a/LEGO1/legoinputmanager.h b/LEGO1/legoinputmanager.h index 40e2227b..caafed52 100644 --- a/LEGO1/legoinputmanager.h +++ b/LEGO1/legoinputmanager.h @@ -13,18 +13,19 @@ __declspec(dllexport) enum NotificationId TIMER = 15 }; +// VTABLE 0x100d8760 +// SIZE 0x338 class LegoInputManager { public: - virtual ~LegoInputManager(); + LegoInputManager(); + virtual ~LegoInputManager() override; __declspec(dllexport) void QueueEvent(NotificationId id, unsigned char p2, long p3, long p4, unsigned char p5); __declspec(dllexport) void Register(MxCore *); __declspec(dllexport) void UnRegister(MxCore *); - virtual long Tickle(); // vtable+0x8 - - virtual void VTable0x38(); // vtable0x38 + virtual long Tickle() override; // vtable+0x8 char m_pad00[0x19C]; int m_joystickIndex; diff --git a/LEGO1/legojetski.cpp b/LEGO1/legojetski.cpp index e98778cc..d0fffd85 100644 --- a/LEGO1/legojetski.cpp +++ b/LEGO1/legojetski.cpp @@ -1,18 +1 @@ #include "legojetski.h" - -// 0x100f053c -static char* g_legoJetskiClassName = "LegoJetski"; - -// OFFSET: LEGO1 0x10013e80 STUB -const char *LegoJetski::ClassName() const -{ - return g_legoJetskiClassName; -} - -// OFFSET: LEGO1 0x10013ea0 STUB -MxBool LegoJetski::IsA(const char *name) const -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/legojetski.h b/LEGO1/legojetski.h index 6adaa089..759e83ac 100644 --- a/LEGO1/legojetski.h +++ b/LEGO1/legojetski.h @@ -3,13 +3,23 @@ #include "legojetskiraceactor.h" +// VTABLE 0x100d5a40 class LegoJetski : public LegoJetskiRaceActor { public: - virtual const char* ClassName() const; - virtual MxBool IsA(const char *name) const; + // OFFSET: LEGO1 0x10013e80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f053c + return "LegoJetski"; + } + + // OFFSET: LEGO1 0x10013ea0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(name); + } - // VTABLE 0x100d5a40 }; diff --git a/LEGO1/legojetskiraceactor.h b/LEGO1/legojetskiraceactor.h index 0dc651b2..7c31f3b2 100644 --- a/LEGO1/legojetskiraceactor.h +++ b/LEGO1/legojetskiraceactor.h @@ -3,9 +3,22 @@ #include "legocarraceactor.h" +// VTABLE 0x100da240 class LegoJetskiRaceActor : public LegoCarRaceActor { +public: + // OFFSET: LEGO1 0x10081d80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0554 + return "LegoJetskiRaceActor"; + } + // OFFSET: LEGO1 0x10081da0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(name); + } }; #endif // LEGOJETSKIRACEACTOR_H diff --git a/LEGO1/legoloadcachesoundpresenter.cpp b/LEGO1/legoloadcachesoundpresenter.cpp index af068ce2..0830d7d7 100644 --- a/LEGO1/legoloadcachesoundpresenter.cpp +++ b/LEGO1/legoloadcachesoundpresenter.cpp @@ -1,7 +1,13 @@ #include "legoloadcachesoundpresenter.h" -// OFFSET: LEGO1 0x10018340 STUB +// OFFSET: LEGO1 0x10018340 LegoLoadCacheSoundPresenter::LegoLoadCacheSoundPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x10018480 STUB +LegoLoadCacheSoundPresenter::~LegoLoadCacheSoundPresenter() { // TODO } diff --git a/LEGO1/legoloadcachesoundpresenter.h b/LEGO1/legoloadcachesoundpresenter.h index 099c42c7..0673568e 100644 --- a/LEGO1/legoloadcachesoundpresenter.h +++ b/LEGO1/legoloadcachesoundpresenter.h @@ -3,15 +3,24 @@ #include "mxwavepresenter.h" +// VTABLE 0x100d5fa8 +// SIZE 0x90 class LegoLoadCacheSoundPresenter : public MxWavePresenter { public: LegoLoadCacheSoundPresenter(); + virtual ~LegoLoadCacheSoundPresenter() override; + + // OFFSET: LEGO1 0x10018450 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f05a0 + return "LegoLoadCacheSoundPresenter"; + } private: void Init(); - // SIZE 0x90 }; -#endif // LEGOLOADCACHESOUNDPRESENTER_H \ No newline at end of file +#endif // LEGOLOADCACHESOUNDPRESENTER_H diff --git a/LEGO1/legolocomotionanimpresenter.cpp b/LEGO1/legolocomotionanimpresenter.cpp index b6d61071..f7da593f 100644 --- a/LEGO1/legolocomotionanimpresenter.cpp +++ b/LEGO1/legolocomotionanimpresenter.cpp @@ -1,9 +1,9 @@ #include "legolocomotionanimpresenter.h" -// OFFSET: LEGO1 0x1006cdd0 STUB +// OFFSET: LEGO1 0x1006cdd0 LegoLocomotionAnimPresenter::LegoLocomotionAnimPresenter() { - // TODO + Init(); } // OFFSET: LEGO1 0x1006d0b0 STUB diff --git a/LEGO1/legolocomotionanimpresenter.h b/LEGO1/legolocomotionanimpresenter.h index 87776e1c..b5906ca6 100644 --- a/LEGO1/legolocomotionanimpresenter.h +++ b/LEGO1/legolocomotionanimpresenter.h @@ -3,15 +3,28 @@ #include "legoloopinganimpresenter.h" +// VTABLE 0x100d9170 class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter { public: LegoLocomotionAnimPresenter(); + + // OFFSET: LEGO1 0x1006ce50 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f06e4 + return "LegoLocomotionAnimPresenter"; + } + + // OFFSET: LEGO1 0x1006ce60 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoLocomotionAnimPresenter::ClassName()) || LegoLoopingAnimPresenter::IsA(name); + } private: void Init(); - // VTABLE 0x100d9170 }; #endif // LEGOLOCOMOTIONANIMPRESENTER_H diff --git a/LEGO1/legoloopinganimpresenter.h b/LEGO1/legoloopinganimpresenter.h index e2599789..6e4a5eb1 100644 --- a/LEGO1/legoloopinganimpresenter.h +++ b/LEGO1/legoloopinganimpresenter.h @@ -3,8 +3,23 @@ #include "legoanimpresenter.h" +// VTABLE 0x100d4900 +// SIZE 0xc0 (discovered through inlined constructor at 0x10009ecd) class LegoLoopingAnimPresenter : public LegoAnimPresenter { +public: + // OFFSET: LEGO1 0x1000c9a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0700 + return "LegoLoopingAnimPresenter"; + } + + // OFFSET: LEGO1 0x1000c9b0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoLoopingAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(name); + } }; #endif // LEGOLOOPINGANIMPRESENTER_H diff --git a/LEGO1/legomodelpresenter.h b/LEGO1/legomodelpresenter.h index 5a0a41c1..e5f0d136 100644 --- a/LEGO1/legomodelpresenter.h +++ b/LEGO1/legomodelpresenter.h @@ -3,10 +3,25 @@ #include "mxvideopresenter.h" +// VTABLE 0x100d4e50 +// SIZE 0x6c (discovered through inline constructor at 0x10009ae6) class LegoModelPresenter : public MxVideoPresenter { public: __declspec(dllexport) static void configureLegoModelPresenter(int param_1); + + // OFFSET: LEGO1 0x1000ccb0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f067c + return "LegoModelPresenter"; + } + + // OFFSET: LEGO1 0x1000ccc0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoModelPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } }; #endif // LEGOMODELPRESENTER_H diff --git a/LEGO1/legonavcontroller.h b/LEGO1/legonavcontroller.h index 9c899465..d2bf7df7 100644 --- a/LEGO1/legonavcontroller.h +++ b/LEGO1/legonavcontroller.h @@ -5,6 +5,8 @@ #include "mxtimer.h" #include "mxtypes.h" +// VTABLE 0x100d85b8 +// SIZE 0x70 class LegoNavController : public MxCore { public: @@ -20,6 +22,19 @@ class LegoNavController : public MxCore LegoNavController(); // virtual ~LegoNavController(); // vtable+0x0 + // OFFSET: LEGO1 0x10054b80 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f66d8 + return "LegoNavController"; + } + + // OFFSET: LEGO1 0x10054b90 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoNavController::ClassName()) || MxCore::IsA(name); + } + void SetControlMax(int p_hMax, int p_vMax); void ResetToDefault(); void SetTargets(int p_hPos, int p_vPos, MxBool p_accel); diff --git a/LEGO1/legoomni.h b/LEGO1/legoomni.h index bc92840a..40804cbf 100644 --- a/LEGO1/legoomni.h +++ b/LEGO1/legoomni.h @@ -20,6 +20,8 @@ class LegoSoundManager; +// VTABLE 0x100d8638 +// SIZE: 0x140 class LegoOmni : public MxOmni { public: @@ -35,10 +37,17 @@ class LegoOmni : public MxOmni virtual long Notify(MxParam &p); // vtable+04 // OFFSET: LEGO1 0x10058aa0 - inline virtual const char *ClassName() const { return "LegoOmni"; }; // vtable+0c + inline virtual const char *ClassName() const // vtable+0c + { + // 0x100f671c + return "LegoOmni"; + } // OFFSET: LEGO1 0x10058ab0 - inline virtual MxBool IsA(const char *name) const { return !strcmp(name, LegoOmni::ClassName()) || MxOmni::IsA(name); }; // vtable+10; + inline virtual MxBool IsA(const char *name) const // vtable+10 + { + return !strcmp(name, LegoOmni::ClassName()) || MxOmni::IsA(name); + } virtual void Init(); // vtable+14 virtual MxResult Create(MxOmniCreateParam &p); // vtable+18 @@ -78,6 +87,7 @@ class LegoOmni : public MxOmni char m_unka0[0x94]; MxBackgroundAudioManager *m_bkgAudioManager; // 0x134 MxTransitionManager *m_transitionManager; // 0x138 + int m_unk13c; }; diff --git a/LEGO1/legopalettepresenter.cpp b/LEGO1/legopalettepresenter.cpp index 0c2aea51..07b9cb99 100644 --- a/LEGO1/legopalettepresenter.cpp +++ b/LEGO1/legopalettepresenter.cpp @@ -1,9 +1,9 @@ #include "legopalettepresenter.h" -// OFFSET: LEGO1 0x10079e50 STUB +// OFFSET: LEGO1 0x10079e50 LegoPalettePresenter::LegoPalettePresenter() { - // TODO + Init(); } // OFFSET: LEGO1 0x1007a070 STUB diff --git a/LEGO1/legopalettepresenter.h b/LEGO1/legopalettepresenter.h index fa81b527..bb1b116e 100644 --- a/LEGO1/legopalettepresenter.h +++ b/LEGO1/legopalettepresenter.h @@ -3,16 +3,30 @@ #include "mxvideopresenter.h" +// VTABLE 0x100d9aa0 +// SIZE 0x68 class LegoPalettePresenter : public MxVideoPresenter { public: LegoPalettePresenter(); virtual ~LegoPalettePresenter(); // vtable+0x0 + // OFFSET: LEGO1 0x10079f30 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f061c + return "LegoPalettePresenter"; + } + + // OFFSET: LEGO1 0x10079f40 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPalettePresenter::ClassName()) || MxVideoPresenter::IsA(name); + } + private: void Init(); - // VTABLE 0x100d9aa0 }; diff --git a/LEGO1/legopartpresenter.h b/LEGO1/legopartpresenter.h index 05e0df7e..6a9a91a5 100644 --- a/LEGO1/legopartpresenter.h +++ b/LEGO1/legopartpresenter.h @@ -1,9 +1,24 @@ #ifndef LEGOPARTPRESENTER_H #define LEGOPARTPRESENTER_H -class LegoPartPresenter +// VTABLE 0x100d4df0 +// SIZE 0x54 (from inlined construction at 0x10009fac) +class LegoPartPresenter : public MxMediaPresenter { public: + // OFFSET: LEGO1 0x1000cf70 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f05d8 + return "LegoPartPresenter"; + } + + // OFFSET: LEGO1 0x1000cf80 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPartPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + __declspec(dllexport) static void configureLegoPartPresenter(int param_1, int param_2); }; diff --git a/LEGO1/legopathactor.cpp b/LEGO1/legopathactor.cpp index bf6907ca..336cdc13 100644 --- a/LEGO1/legopathactor.cpp +++ b/LEGO1/legopathactor.cpp @@ -3,13 +3,11 @@ // OFFSET: LEGO1 0x1002d700 STUB LegoPathActor::LegoPathActor() { - Destroy(); - // TODO } -// OFFSET: LEGO1 0x10053900 STUB -void LegoPathActor::Destroy() +// OFFSET: LEGO1 0x1002d820 STUB +LegoPathActor::~LegoPathActor() { // TODO } diff --git a/LEGO1/legopathactor.h b/LEGO1/legopathactor.h index 62398743..e6f643c2 100644 --- a/LEGO1/legopathactor.h +++ b/LEGO1/legopathactor.h @@ -3,14 +3,28 @@ #include "legoactor.h" +// VTABLE 0x100d6e28 +// SIZE 0x154 (from inlined construction at 0x1000a346) class LegoPathActor : public LegoActor { public: LegoPathActor(); - - virtual void Destroy(); // vtable+0x1c - // SIZE 0x154 + virtual ~LegoPathActor() override; + + // OFFSET: LEGO1 0x1000c430 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0114 + return "LegoPathActor"; + } + + // OFFSET: LEGO1 0x1000c440 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name); + } + }; #endif // LEGOPATHACTOR_H diff --git a/LEGO1/legopathcontroller.cpp b/LEGO1/legopathcontroller.cpp new file mode 100644 index 00000000..46e23f5e --- /dev/null +++ b/LEGO1/legopathcontroller.cpp @@ -0,0 +1,20 @@ +#include "legopathcontroller.h" + +// OFFSET: LEGO1 0x10044f40 STUB +LegoPathController::LegoPathController() +{ + // TODO +} + +// OFFSET: LEGO1 0x10045740 STUB +LegoPathController::~LegoPathController() +{ + // TODO +} + +// OFFSET: LEGO1 0x10045c10 STUB +long LegoPathController::Tickle() +{ + // TODO + return 0; +} diff --git a/LEGO1/legopathcontroller.h b/LEGO1/legopathcontroller.h index ae082bdd..9686b2bd 100644 --- a/LEGO1/legopathcontroller.h +++ b/LEGO1/legopathcontroller.h @@ -3,8 +3,28 @@ #include "mxcore.h" +// VTABLE 0x100d7d60 +// SIZE 0x40 class LegoPathController : public MxCore { +public: + LegoPathController(); + virtual ~LegoPathController() override; + + virtual long Tickle() override; // vtable+08 + + // OFFSET: LEGO1 0x10045110 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f11b8 + return "LegoPathController"; + } + + // OFFSET: LEGO1 0x10045120 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathController::ClassName()) || MxCore::IsA(name); + } }; diff --git a/LEGO1/legopathpresenter.h b/LEGO1/legopathpresenter.h index f4a24bbd..225f4256 100644 --- a/LEGO1/legopathpresenter.h +++ b/LEGO1/legopathpresenter.h @@ -3,12 +3,26 @@ #include "mxmediapresenter.h" +// VTABLE 0x100d7c10 +// SIZE 0x54 class LegoPathPresenter : public MxMediaPresenter { public: LegoPathPresenter(); - // VTABLE 0x100d7c10 + // OFFSET: LEGO1 0x100449a0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0690 + return "LegoPathPresenter"; + } + + // OFFSET: LEGO1 0x100449b0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoPathPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } + }; diff --git a/LEGO1/legophonemepresenter.cpp b/LEGO1/legophonemepresenter.cpp index 9b7e71a5..43948fc7 100644 --- a/LEGO1/legophonemepresenter.cpp +++ b/LEGO1/legophonemepresenter.cpp @@ -1,22 +1,19 @@ #include "legophonemepresenter.h" -// 0x100f064c -static char* g_legoPhonemePresenterClassName = "LegoPhonemePresenter"; +// OFFSET: LEGO1 0x1004e180 +LegoPhonemePresenter::LegoPhonemePresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x1004e3b0 STUB +void LegoPhonemePresenter::Init() +{ + // TODO +} // OFFSET: LEGO1 0x1004e340 STUB LegoPhonemePresenter::~LegoPhonemePresenter() { // TODO } - -// OFFSET: LEGO1 0x1004e310 STUB -const char *LegoPhonemePresenter::ClassName() const -{ - return g_legoPhonemePresenterClassName; -} - -// OFFSET: LEGO1 0x1004e840 STUB -void LegoPhonemePresenter::VTable0x6c() -{ - // TODO -} diff --git a/LEGO1/legophonemepresenter.h b/LEGO1/legophonemepresenter.h index a0b25bac..c2616448 100644 --- a/LEGO1/legophonemepresenter.h +++ b/LEGO1/legophonemepresenter.h @@ -3,16 +3,24 @@ #include "mxflcpresenter.h" +// VTABLE 0x100d8040 +// SIZE 0x88 class LegoPhonemePresenter : public MxFlcPresenter { public: - virtual ~LegoPhonemePresenter(); // vtable+0x0 + LegoPhonemePresenter(); + virtual ~LegoPhonemePresenter() override; // vtable+0x0 - virtual const char* ClassName() const; // vtable+0xc + // OFFSET: LEGO1 0x1004e310 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f064c + return "LegoPhonemePresenter"; + } - virtual void VTable0x6c(); // vtable+0x6c +private: + void Init(); - // VTABLE 0x100d8040 }; #endif // LEGOPHONEMEPRESENTER_H diff --git a/LEGO1/legoplantmanager.cpp b/LEGO1/legoplantmanager.cpp index 53a4a85a..8f67b939 100644 --- a/LEGO1/legoplantmanager.cpp +++ b/LEGO1/legoplantmanager.cpp @@ -1,12 +1,9 @@ #include "legoplantmanager.h" -// 0x100f318c -static char* g_LegoPlantManagerName = "LegoPlantManager"; - -// OFFSET: LEGO1 0x10026220 STUB +// OFFSET: LEGO1 0x10026220 LegoPlantManager::LegoPlantManager() { - // TODO + Init(); } // OFFSET: LEGO1 0x100262c0 STUB @@ -23,18 +20,6 @@ long LegoPlantManager::Tickle() return 0; } -// OFFSET: LEGO1 0x10026290 STUB -const char *LegoPlantManager::ClassName() const -{ - return g_LegoPlantManagerName; -} - -// OFFSET: LEGO1 0x10026d70 STUB -void LegoPlantManager::UnknownFunction1(int param_1, int param_2) -{ - // TODO -} - // OFFSET: LEGO1 0x10026330 STUB void LegoPlantManager::Init() { diff --git a/LEGO1/legoplantmanager.h b/LEGO1/legoplantmanager.h index 1ab56265..272fb451 100644 --- a/LEGO1/legoplantmanager.h +++ b/LEGO1/legoplantmanager.h @@ -3,22 +3,26 @@ #include "mxcore.h" +// VTABLE 0x100d6758 +// SIZE 0x2c class LegoPlantManager : public MxCore { public: LegoPlantManager(); - virtual ~LegoPlantManager(); // vtable+0x0 + virtual ~LegoPlantManager() override; // vtable+0x0 - virtual long Tickle(); // vtable+0x8 - virtual const char* ClassName() const; // vtable+0xc + virtual long Tickle() override; // vtable+0x8 - void UnknownFunction1(int param_1, int param_2); + // OFFSET: LEGO1 0x10026290 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f318c + return "LegoPlantManager"; + } private: void Init(); - // VTABLE 0x100d6758 - // SIZE 0x2c }; #endif // LEGOPLANTMANAGER_H diff --git a/LEGO1/legorace.h b/LEGO1/legorace.h index d6c488d1..003e57ed 100644 --- a/LEGO1/legorace.h +++ b/LEGO1/legorace.h @@ -3,13 +3,27 @@ #include "legoworld.h" +// VTABLE 0x100d5db0 class LegoRace : public LegoWorld { public: LegoRace(); - virtual ~LegoRace(); // vtable+0x0 + virtual ~LegoRace() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 + virtual long Notify(MxParam &p) override; // vtable+0x4 + + // OFFSET: LEGO1 0x10015ba0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f07c4 + return "LegoRace"; + } + + // OFFSET: LEGO1 0x10015bb0 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoRace::ClassName()) || LegoWorld::IsA(name); + } }; -#endif // LEGORACE_H \ No newline at end of file +#endif // LEGORACE_H diff --git a/LEGO1/legoraceactor.h b/LEGO1/legoraceactor.h index abb463a6..d7908063 100644 --- a/LEGO1/legoraceactor.h +++ b/LEGO1/legoraceactor.h @@ -3,9 +3,22 @@ #include "legoanimactor.h" +// VTABLE 0x100d5b88 class LegoRaceActor : public LegoAnimActor { +public: + // OFFSET: LEGO1 0x10014af0 + inline const char *ClassName() const override // vtable+0xc + { + // 0x100f0bf4 + return "LegoRaceActor"; + } + // OFFSET: LEGO1 0x10014b10 + inline MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(name); + } }; diff --git a/LEGO1/legosoundmanager.cpp b/LEGO1/legosoundmanager.cpp index 75b0671c..518b8c55 100644 --- a/LEGO1/legosoundmanager.cpp +++ b/LEGO1/legosoundmanager.cpp @@ -11,3 +11,10 @@ LegoSoundManager::~LegoSoundManager() { // TODO } + +// OFFSET: LEGO1 0x1002a3a0 STUB +long LegoSoundManager::Tickle() +{ + // TODO + return 0; +} diff --git a/LEGO1/legosoundmanager.h b/LEGO1/legosoundmanager.h index f4719624..9b1e6450 100644 --- a/LEGO1/legosoundmanager.h +++ b/LEGO1/legosoundmanager.h @@ -3,11 +3,18 @@ #include "mxsoundmanager.h" +// VTABLE 0x100d6b10 +// SIZE 0x44 class LegoSoundManager : public MxSoundManager { public: LegoSoundManager(); - virtual ~LegoSoundManager(); + virtual ~LegoSoundManager() override; + virtual long Tickle() override; // vtable+08 + +private: + void Init(); + }; #endif // LEGOSOUNDMANAGER_H diff --git a/LEGO1/legostate.cpp b/LEGO1/legostate.cpp index 8876db07..2b49fcd7 100644 --- a/LEGO1/legostate.cpp +++ b/LEGO1/legostate.cpp @@ -1,21 +1,6 @@ #include "legostate.h" -// OFFSET: LEGO1 0x10005f90 -MxBool LegoState::VTable0x14() +// OFFSET: LEGO1 0x10005f40 +LegoState::~LegoState() { - return TRUE; -} - -// OFFSET: LEGO1 0x10005fa0 -MxBool LegoState::VTable0x18() -{ - return FALSE; -} - -// OFFSET: LEGO1 0x10005fb0 STUB -undefined4 LegoState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); } diff --git a/LEGO1/legostate.h b/LEGO1/legostate.h index cf8a2fd9..be7289bc 100644 --- a/LEGO1/legostate.h +++ b/LEGO1/legostate.h @@ -3,28 +3,25 @@ #include "mxcore.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d46c0 class LegoState : public MxCore { public: + virtual ~LegoState() override; // vtable+0x00 + // OFFSET: LEGO1 0x100060d0 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { + // 0x100f01b8 return "LegoState"; - }; + } // OFFSET: LEGO1 0x100060e0 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, LegoState::ClassName()) || MxCore::IsA(name); - }; + } - virtual MxBool VTable0x14(); // vtable+0x14 - virtual MxBool VTable0x18(); // vtable+0x18 - virtual undefined4 VTable0x1c(undefined4 param); // vtable+0x1c }; #endif // LEGOSTATE_H diff --git a/LEGO1/legotexturepresenter.cpp b/LEGO1/legotexturepresenter.cpp index c9b588ea..2336a724 100644 --- a/LEGO1/legotexturepresenter.cpp +++ b/LEGO1/legotexturepresenter.cpp @@ -1,7 +1,7 @@ #include "legotexturepresenter.h" -// OFFSET: LEGO1 0x1004fcb0 STUB -void LegoTexturePresenter::DoneTickle() +// OFFSET: LEGO1 0x1004eb40 STUB +LegoTexturePresenter::~LegoTexturePresenter() { // TODO -} \ No newline at end of file +} diff --git a/LEGO1/legotexturepresenter.h b/LEGO1/legotexturepresenter.h index b3dc186c..eabd4895 100644 --- a/LEGO1/legotexturepresenter.h +++ b/LEGO1/legotexturepresenter.h @@ -3,13 +3,26 @@ #include "mxmediapresenter.h" +// VTABLE 0x100d4d90 +// SIZE 0x54 (from inlined construction at 0x10009bb5) class LegoTexturePresenter : public MxMediaPresenter { public: - virtual void DoneTickle(); // vtable+0x2c, override MxPresenter + virtual ~LegoTexturePresenter() override; + + // OFFSET: LEGO1 0x1000ce50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0664 + return "LegoTexturePresenter"; + } + + // OFFSET: LEGO1 0x1000ce60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoTexturePresenter::ClassName()) || MxMediaPresenter::IsA(name); + } - // VTABLE 0x - // SIZE 0x54 }; #endif // LEGOTEXTUREPRESENTER_H diff --git a/LEGO1/legoutil.h b/LEGO1/legoutil.h index 440b01d0..e94a6440 100644 --- a/LEGO1/legoutil.h +++ b/LEGO1/legoutil.h @@ -4,7 +4,7 @@ template inline T Abs(T p_t) { - return p_t < 0 ? -p_t : p_t; + return p_t < 0 ? -p_t : p_t; } -#endif // LEGOUTIL_H \ No newline at end of file +#endif // LEGOUTIL_H diff --git a/LEGO1/legovideomanager.cpp b/LEGO1/legovideomanager.cpp new file mode 100644 index 00000000..060cc61f --- /dev/null +++ b/LEGO1/legovideomanager.cpp @@ -0,0 +1,39 @@ +#include "legovideomanager.h" + +// OFFSET: LEGO1 0x1007aa20 STUB +LegoVideoManager::LegoVideoManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007ab40 STUB +LegoVideoManager::~LegoVideoManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007c560 STUB +int LegoVideoManager::EnableRMDevice() +{ + // TODO + return 0; +} + +// OFFSET: LEGO1 0x1007c740 STUB +int LegoVideoManager::DisableRMDevice() +{ + // TODO + return 0; +} + +// OFFSET: LEGO1 0x1007c310 STUB +void LegoVideoManager::EnableFullScreenMovie(unsigned char a, unsigned char b) +{ + // TODO +} + +// OFFSET: LEGO1 0x1007b6a0 STUB +void LegoVideoManager::MoveCursor(int x, int y) +{ + // TODO +} diff --git a/LEGO1/legovideomanager.h b/LEGO1/legovideomanager.h index d96fac87..ec1aa6fd 100644 --- a/LEGO1/legovideomanager.h +++ b/LEGO1/legovideomanager.h @@ -4,9 +4,14 @@ #include "mxvideomanager.h" #include "lego3dmanager.h" +// VTABLE 0x100d9c88 +// SIZE 0x590 class LegoVideoManager : public MxVideoManager { public: + LegoVideoManager(); + virtual ~LegoVideoManager() override; + __declspec(dllexport) int EnableRMDevice(); __declspec(dllexport) int DisableRMDevice(); __declspec(dllexport) void EnableFullScreenMovie(unsigned char a, unsigned char b); diff --git a/LEGO1/legowavepresenter.cpp b/LEGO1/legowavepresenter.cpp deleted file mode 100644 index 2dd38d8b..00000000 --- a/LEGO1/legowavepresenter.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "legowavepresenter.h" - -// OFFSET: LEGO1 0x100b1ad0 STUB -void LegoWavePresenter::Init() -{ - // TODO -} \ No newline at end of file diff --git a/LEGO1/legowavepresenter.h b/LEGO1/legowavepresenter.h deleted file mode 100644 index 6e93df16..00000000 --- a/LEGO1/legowavepresenter.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef LEGOWAVEPRESENTER_H -#define LEGOWAVEPRESENTER_H - -#include "mxsoundpresenter.h" - -class LegoWavePresenter : public MxSoundPresenter -{ -private: - void Init(); -}; - -#endif // LEGOWAVEPRESENTER_H diff --git a/LEGO1/legoworld.cpp b/LEGO1/legoworld.cpp index 7b27588f..68009d43 100644 --- a/LEGO1/legoworld.cpp +++ b/LEGO1/legoworld.cpp @@ -11,17 +11,3 @@ LegoWorld::~LegoWorld() { // TODO } - -// OFFSET: LEGO1 0x10022080 STUB -long LegoWorld::Tickle() -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x1001e9d0 STUB -void LegoWorld::Destroy() -{ - // TODO -} diff --git a/LEGO1/legoworld.h b/LEGO1/legoworld.h index 4dd4bad7..d6170bfc 100644 --- a/LEGO1/legoworld.h +++ b/LEGO1/legoworld.h @@ -3,14 +3,26 @@ #include "legoentity.h" +// VTABLE 0x100d6280 +// SIZE 0xf8 class LegoWorld : public LegoEntity { public: __declspec(dllexport) LegoWorld(); __declspec(dllexport) virtual ~LegoWorld(); // vtable+0x0 - virtual long Tickle(); // vtable+0x8 - virtual void Destroy(); // vtable+0x1c + // OFFSET: LEGO1 0x1001d690 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0058 + return "LegoWorld"; + } + + // OFFSET: LEGO1 0x1001d6a0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoWorld::ClassName()) || LegoEntity::IsA(name); + } }; #endif // LEGOWORLD_H diff --git a/LEGO1/legoworldpresenter.cpp b/LEGO1/legoworldpresenter.cpp index c4cd1a79..280d7a24 100644 --- a/LEGO1/legoworldpresenter.cpp +++ b/LEGO1/legoworldpresenter.cpp @@ -12,14 +12,8 @@ LegoWorldPresenter::~LegoWorldPresenter() // TODO } -// OFFSET: LEGO1 0x10066ac0 STUB -void LegoWorldPresenter::VTable0x1c() -{ - // TODO -} - -// OFFSET: LEGO1 0x10067a70 STUB -void LegoWorldPresenter::VTable0x60(undefined4 param) +// OFFSET: LEGO1 0x100665b0 STUB +void LegoWorldPresenter::configureLegoWorldPresenter(int param_1) { // TODO } diff --git a/LEGO1/legoworldpresenter.h b/LEGO1/legoworldpresenter.h index 61023a64..b7f39ddb 100644 --- a/LEGO1/legoworldpresenter.h +++ b/LEGO1/legoworldpresenter.h @@ -3,22 +3,29 @@ #include "legoentitypresenter.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d8ee0 +// SIZE 0x54 class LegoWorldPresenter : public LegoEntityPresenter { public: LegoWorldPresenter(); - virtual ~LegoWorldPresenter(); // vtable+0x0 + virtual ~LegoWorldPresenter() override; // vtable+0x0 __declspec(dllexport) static void configureLegoWorldPresenter(int param_1); - virtual void VTable0x1c(); // vtable0x1c - virtual void VTable0x60(undefined4 param); // vtable+0x60 + // OFFSET: LEGO1 0x10066630 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0608 + return "LegoWorldPresenter"; + } + + // OFFSET: LEGO1 0x10066640 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, LegoWorldPresenter::ClassName()) || LegoEntityPresenter::IsA(name); + } - // VTABLE 0x100d8ee0 }; #endif // LEGOWORLDPRESENTER_H diff --git a/LEGO1/motorcycle.cpp b/LEGO1/motorcycle.cpp index 87e02f48..9b0e0e40 100644 --- a/LEGO1/motorcycle.cpp +++ b/LEGO1/motorcycle.cpp @@ -5,15 +5,3 @@ Motorcycle::Motorcycle() { // TODO } - -// OFFSET: LEGO1 0x10035c50 STUB -void Motorcycle::VTable0xcc() -{ - // TODO -} - -// OFFSET: LEGO1 0x10035bc0 STUB -void Motorcycle::VTable0xe4() -{ - // TODO -} diff --git a/LEGO1/motorcycle.h b/LEGO1/motorcycle.h index 22d27f3f..5ba746a8 100644 --- a/LEGO1/motorcycle.h +++ b/LEGO1/motorcycle.h @@ -3,16 +3,26 @@ #include "islepathactor.h" +// VTABLE 0x100d7090 +// SIZE 0x16c class Motorcycle : public IslePathActor { public: Motorcycle(); - virtual void VTable0xcc(); // vtable+0xcc - virtual void VTable0xe4(); // vtable+0xe4 + // OFFSET: LEGO1 0x10035840 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10035840 + return "Motorcycle"; + } + + // OFFSET: LEGO1 0x10035850 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, Motorcycle::ClassName()) || IslePathActor::IsA(name); + } - // VTABLE 0x100d7090 - // SIZE 0x16c }; #endif // MOTORCYCLE_H diff --git a/LEGO1/mxatomid.cpp b/LEGO1/mxatomid.cpp index f2171360..007e2de3 100644 --- a/LEGO1/mxatomid.cpp +++ b/LEGO1/mxatomid.cpp @@ -1,5 +1,11 @@ #include "mxatomid.h" +// OFFSET: LEGO1 0x100acf90 +MxAtomId::MxAtomId(const char *, LookupMode) +{ + // TODO +} + // OFFSET: LEGO1 0x100acfd0 MxAtomId::~MxAtomId() { @@ -11,4 +17,4 @@ MxAtomId &MxAtomId::operator=(const MxAtomId &id) { // TODO return *this; -} \ No newline at end of file +} diff --git a/LEGO1/mxatomid.h b/LEGO1/mxatomid.h index b28704c0..9a218a1b 100644 --- a/LEGO1/mxatomid.h +++ b/LEGO1/mxatomid.h @@ -15,7 +15,7 @@ class MxAtomId MxAtomId() { this->m_internal = 0; - }; + } private: char *m_internal; diff --git a/LEGO1/mxaudiopresenter.cpp b/LEGO1/mxaudiopresenter.cpp index 4edef72a..b15c2556 100644 --- a/LEGO1/mxaudiopresenter.cpp +++ b/LEGO1/mxaudiopresenter.cpp @@ -1,15 +1 @@ #include "mxaudiopresenter.h" - -// OFFSET: LEGO1 0x1000d260 STUB -undefined4 MxAudioPresenter::VTable0x5c() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x1000d270 STUB -void MxAudioPresenter::VTable0x60(undefined4 param) -{ - // TODO -} diff --git a/LEGO1/mxaudiopresenter.h b/LEGO1/mxaudiopresenter.h index fa62db9f..b23eefe9 100644 --- a/LEGO1/mxaudiopresenter.h +++ b/LEGO1/mxaudiopresenter.h @@ -3,24 +3,22 @@ #include "mxmediapresenter.h" +// VTABLE 0x100d4c70 class MxAudioPresenter : public MxMediaPresenter { public: // OFFSET: LEGO1 0x1000d280 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f078c return "MxAudioPresenter"; - }; + } // OFFSET: LEGO1 0x1000d290 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, MxAudioPresenter::ClassName()) || MxMediaPresenter::IsA(name); - }; - - virtual undefined4 VTable0x5c(); // vtable+0x5c - virtual void VTable0x60(undefined4 param); // vtable+0x60 + } }; #endif // MXAUDIOPRESENTER_H diff --git a/LEGO1/mxautolocker.h b/LEGO1/mxautolocker.h index a2ce6caa..35e32ff3 100644 --- a/LEGO1/mxautolocker.h +++ b/LEGO1/mxautolocker.h @@ -5,11 +5,11 @@ class MxAutoLocker { - public: - MxAutoLocker(MxCriticalSection* cs); - ~MxAutoLocker(); - private: - MxCriticalSection* m_criticalSection; +public: + MxAutoLocker(MxCriticalSection* cs); + ~MxAutoLocker(); +private: + MxCriticalSection* m_criticalSection; }; #endif // MXAUTOLOCKER_H diff --git a/LEGO1/mxbackgroundaudiomanager.cpp b/LEGO1/mxbackgroundaudiomanager.cpp new file mode 100644 index 00000000..6f001303 --- /dev/null +++ b/LEGO1/mxbackgroundaudiomanager.cpp @@ -0,0 +1,19 @@ +#include "mxbackgroundaudiomanager.h" + +// OFFSET: LEGO1 0x1007ea90 +MxBackgroundAudioManager::MxBackgroundAudioManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007ec20 +MxBackgroundAudioManager::~MxBackgroundAudioManager() +{ + // TODO +} + +// OFFSET: LEGO1 0x1007f5f0 +void MxBackgroundAudioManager::Enable(MxBool p) +{ + // TODO +} diff --git a/LEGO1/mxbackgroundaudiomanager.h b/LEGO1/mxbackgroundaudiomanager.h index 29268d0a..9a23a671 100644 --- a/LEGO1/mxbackgroundaudiomanager.h +++ b/LEGO1/mxbackgroundaudiomanager.h @@ -3,9 +3,27 @@ #include "mxcore.h" +// VTABLE 0x100d9fe8 +// SIZE 0x150 class MxBackgroundAudioManager : public MxCore { public: + MxBackgroundAudioManager(); + virtual ~MxBackgroundAudioManager() override; + + // OFFSET: LEGO1 0x1007eb70 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7ac4 + return "MxBackgroundAudioManager"; + } + + // OFFSET: LEGO1 0x1007eb80 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxBackgroundAudioManager::ClassName()) || MxCore::IsA(name); + } + __declspec(dllexport) void Enable(unsigned char p); }; diff --git a/LEGO1/mxcompositemediapresenter.h b/LEGO1/mxcompositemediapresenter.h index a3114332..1f464f4d 100644 --- a/LEGO1/mxcompositemediapresenter.h +++ b/LEGO1/mxcompositemediapresenter.h @@ -3,12 +3,26 @@ #include "mxcompositepresenter.h" +// VTABLE 0x100dc618 +// SIZE 0x50 class MxCompositeMediaPresenter : public MxCompositePresenter { public: MxCompositeMediaPresenter(); + + // OFFSET: LEGO1 0x10073f10 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f02d4 + return "MxCompositeMediaPresenter"; + } + + // OFFSET: LEGO1 0x10073f20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxCompositeMediaPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } - // SIZE 0x50 }; #endif // MXCOMPOSITEMEDIAPRESENTER_H diff --git a/LEGO1/mxcompositepresenter.cpp b/LEGO1/mxcompositepresenter.cpp index 486003c7..e42dbadb 100644 --- a/LEGO1/mxcompositepresenter.cpp +++ b/LEGO1/mxcompositepresenter.cpp @@ -11,71 +11,3 @@ MxCompositePresenter::~MxCompositePresenter() { // TODO } - -// OFFSET: LEGO1 0x100b6760 STUB -long MxCompositePresenter::Notify(MxParam &p) -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x100b6410 STUB -long MxCompositePresenter::StartAction(MxStreamController *, MxDSAction *) -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x100b65e0 STUB -void MxCompositePresenter::EndAction() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b6bc0 STUB -void MxCompositePresenter::VTable0x44(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b6c80 STUB -undefined4 MxCompositePresenter::VTable0x48(undefined4 param) -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x100b6c30 STUB -void MxCompositePresenter::Enable(unsigned char) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b67f0 STUB -void MxCompositePresenter::VTable0x58(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b69b0 STUB -void MxCompositePresenter::VTable0x5c(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b6b40 STUB -void MxCompositePresenter::VTable0x60(undefined4 param) -{ - // TODO -} - -// OFFSET: LEGO1 0x1000caf0 STUB -undefined4 MxCompositePresenter::VTable0x64(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/mxcompositepresenter.h b/LEGO1/mxcompositepresenter.h index 17dc0b16..471f3087 100644 --- a/LEGO1/mxcompositepresenter.h +++ b/LEGO1/mxcompositepresenter.h @@ -3,38 +3,27 @@ #include "mxpresenter.h" +// VTABLE 0x100dc618 +// SIZE 0x4c class MxCompositePresenter : public MxPresenter { public: MxCompositePresenter(); - virtual ~MxCompositePresenter(); // vtable+0x0 - - virtual long Notify(MxParam &p); // vtable+0x4, MxCore override + virtual ~MxCompositePresenter() override; // vtable+0x0 // OFFSET: LEGO1 0x100b6210 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0774 return "MxCompositePresenter"; - }; + } // OFFSET: LEGO1 0x100b6220 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, MxCompositePresenter::ClassName()) || MxPresenter::IsA(name); - }; + } - virtual long StartAction(MxStreamController *, MxDSAction *); // vtable+0x3c - virtual void EndAction(); // vtable+0x40 - virtual void VTable0x44(undefined4 param); // vtable+0x44 - virtual undefined4 VTable0x48(undefined4 param); // vtable+0x48 - virtual void Enable(unsigned char); // vtable+0x54 - virtual void VTable0x58(undefined4 param); // vtable+0x58 - virtual void VTable0x5c(undefined4 param); // vtable+0x5c - virtual void VTable0x60(undefined4 param); // vtable+0x60 - virtual undefined4 VTable0x64(undefined4 param); // vtable+0x64 - - // VTABLE 0x100dc618 }; #endif // MXCOMPOSITEPRESENTER_H diff --git a/LEGO1/mxcontrolpresenter.h b/LEGO1/mxcontrolpresenter.h index df8f3591..909a3502 100644 --- a/LEGO1/mxcontrolpresenter.h +++ b/LEGO1/mxcontrolpresenter.h @@ -3,13 +3,26 @@ #include "mxcompositepresenter.h" +// VTABLE 0x100d7b88 +// SIZE 0x5c class MxControlPresenter : public MxCompositePresenter { public: MxControlPresenter(); - // VTABLE 0x100d7b88 - // SIZE 0x5c + // OFFSET: LEGO1 0x10044000 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f0514 + return "MxControlPresenter"; + } + + // OFFSET: LEGO1 0x10044010 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxControlPresenter::ClassName()) || MxCompositePresenter::IsA(name); + } + }; diff --git a/LEGO1/mxcore.h b/LEGO1/mxcore.h index d870b3b3..446ee91e 100644 --- a/LEGO1/mxcore.h +++ b/LEGO1/mxcore.h @@ -7,6 +7,8 @@ class MxParam; +// VTABLE 0x100dc0f8 +// SIZE 0x8 class MxCore { public: @@ -16,10 +18,17 @@ class MxCore virtual long Tickle(); // vtable+08 // OFFSET: LEGO1 0x100144c0 - inline virtual const char *ClassName() const { return "MxCore"; }; // vtable+0c + inline virtual const char *ClassName() const // vtable+0c + { + // 0x100f007c + return "MxCore"; + } // OFFSET: LEGO1 0x100140d0 - inline virtual MxBool IsA(const char *name) const { return !strcmp(name, MxCore::ClassName()); }; // vtable+10 + inline virtual MxBool IsA(const char *name) const // vtable+10 + { + return !strcmp(name, MxCore::ClassName()); + } private: unsigned int m_id; diff --git a/LEGO1/mxdiskstreamcontroller.cpp b/LEGO1/mxdiskstreamcontroller.cpp index 1b573518..c178c0a5 100644 --- a/LEGO1/mxdiskstreamcontroller.cpp +++ b/LEGO1/mxdiskstreamcontroller.cpp @@ -1,5 +1,11 @@ #include "mxdiskstreamcontroller.h" +// OFFSET: LEGO1 0x100c7120 STUB +MxDiskStreamController::MxDiskStreamController() +{ + // TODO +} + // OFFSET: LEGO1 0x100c7530 STUB MxDiskStreamController::~MxDiskStreamController() { @@ -12,4 +18,4 @@ long MxDiskStreamController::Tickle() // TODO return 0; -} \ No newline at end of file +} diff --git a/LEGO1/mxdiskstreamcontroller.h b/LEGO1/mxdiskstreamcontroller.h index 6005cfdc..773f6b85 100644 --- a/LEGO1/mxdiskstreamcontroller.h +++ b/LEGO1/mxdiskstreamcontroller.h @@ -1,14 +1,34 @@ #ifndef MXDISKSTREAMCONTROLLER_H #define MXDISKSTREAMCONTROLLER_H -#include "mxstreamcontroller.h" +#include +#include "mxstreamcontroller.h" +#include "mxtypes.h" + +// VTABLE 0x100dccb8 +// SIZE 0xc8 class MxDiskStreamController : public MxStreamController { public: - virtual ~MxDiskStreamController(); + MxDiskStreamController(); + virtual ~MxDiskStreamController() override; + + virtual long Tickle() override; // vtable+0x8 + + // OFFSET: LEGO1 0x100c7360 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102144 + return "MxDiskStreamController"; + } + + // OFFSET: LEGO1 0x100c7370 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDiskStreamController::ClassName()) || MxStreamController::IsA(name); + } - virtual long Tickle(); // vtable+0x8 }; #endif // MXDISKSTREAMCONTROLLER_H diff --git a/LEGO1/mxdiskstreamprovider.cpp b/LEGO1/mxdiskstreamprovider.cpp new file mode 100644 index 00000000..5e59efee --- /dev/null +++ b/LEGO1/mxdiskstreamprovider.cpp @@ -0,0 +1,13 @@ +#include "mxdiskstreamprovider.h" + +// OFFSET: LEGO1 0x100d0f70 +MxDiskStreamProvider::MxDiskStreamProvider() +{ + // TODO +} + +// OFFSET: LEGO1 0x100d1240 +MxDiskStreamProvider::~MxDiskStreamProvider() +{ + // TODO +} diff --git a/LEGO1/mxdiskstreamprovider.h b/LEGO1/mxdiskstreamprovider.h index bf1fa71f..198b6062 100644 --- a/LEGO1/mxdiskstreamprovider.h +++ b/LEGO1/mxdiskstreamprovider.h @@ -3,9 +3,26 @@ #include "mxstreamprovider.h" +// VTABLE 0x100dd138 class MxDiskStreamProvider : public MxStreamProvider { +public: + MxDiskStreamProvider(); + virtual ~MxDiskStreamProvider() override; + + // OFFSET: LEGO1 0x100d1160 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x1010287c + return "MxDiskStreamProvider"; + } + + // OFFSET: LEGO1 0x100d1170 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDiskStreamProvider::ClassName()) || MxStreamProvider::IsA(name); + } }; #endif // MXDISKSTREAMPROVIDER_H diff --git a/LEGO1/mxdsaction.cpp b/LEGO1/mxdsaction.cpp new file mode 100644 index 00000000..a193ab21 --- /dev/null +++ b/LEGO1/mxdsaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsaction.h" + +// OFFSET: LEGO1 0x100ad810 +MxDSAction::MxDSAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100ada80 +MxDSAction::~MxDSAction() +{ + // TODO +} diff --git a/LEGO1/mxdsaction.h b/LEGO1/mxdsaction.h index 558cd035..e26d28a6 100644 --- a/LEGO1/mxdsaction.h +++ b/LEGO1/mxdsaction.h @@ -3,12 +3,27 @@ #include "mxdsobject.h" +// VTABLE 0x100dc098 +// SIZE 0x94 class MxDSAction : public MxDSObject { public: __declspec(dllexport) MxDSAction(); __declspec(dllexport) virtual ~MxDSAction(); + // OFFSET: LEGO1 0x100ad980 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101013f4 + return "MxDSAction"; + } + + // OFFSET: LEGO1 0x100ad990 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSAction::ClassName()) || MxDSObject::IsA(name); + } + int m_unk2c; int m_unk30; int m_unk34; diff --git a/LEGO1/mxdsanim.cpp b/LEGO1/mxdsanim.cpp new file mode 100644 index 00000000..9a56d359 --- /dev/null +++ b/LEGO1/mxdsanim.cpp @@ -0,0 +1,13 @@ +#include "mxdsanim.h" + +// OFFSET: LEGO1 0x100c8ff0 +MxDSAnim::MxDSAnim() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c91a0 +MxDSAnim::~MxDSAnim() +{ + // TODO +} diff --git a/LEGO1/mxdsanim.h b/LEGO1/mxdsanim.h index 6251801f..fdef0859 100644 --- a/LEGO1/mxdsanim.h +++ b/LEGO1/mxdsanim.h @@ -3,9 +3,27 @@ #include "mxdsmediaaction.h" +// VTABLE 0x100dcd88 +// SIZE 0xb8 class MxDSAnim : public MxDSMediaAction { +public: + MxDSAnim(); + virtual ~MxDSAnim() override; + + // OFFSET: LEGO1 0x100c9060 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025d8 + return "MxDSAnim"; + } + + // OFFSET: LEGO1 0x100c9070 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSAnim::ClassName()) || MxDSMediaAction::IsA(name); + } }; #endif // MXDSANIM_H diff --git a/LEGO1/mxdschunk.cpp b/LEGO1/mxdschunk.cpp index eec48381..7ec8531c 100644 --- a/LEGO1/mxdschunk.cpp +++ b/LEGO1/mxdschunk.cpp @@ -1,7 +1,13 @@ #include "mxdschunk.h" +// OFFSET: LEGO1 0x100be050 STUB +MxDSChunk::MxDSChunk() +{ + // TODO +} + // OFFSET: LEGO1 0x100be170 STUB MxDSChunk::~MxDSChunk() { // TODO -} \ No newline at end of file +} diff --git a/LEGO1/mxdschunk.h b/LEGO1/mxdschunk.h index f638c9b0..8758ffa3 100644 --- a/LEGO1/mxdschunk.h +++ b/LEGO1/mxdschunk.h @@ -6,7 +6,21 @@ class MxDSChunk : public MxCore { public: - virtual ~MxDSChunk(); + MxDSChunk(); + virtual ~MxDSChunk() override; + + // OFFSET: LEGO1 0x100be0c0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10101e6c + return "MxDSChunk"; + } + + // OFFSET: LEGO1 0x100be0d0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSChunk::ClassName()) || MxCore::IsA(name); + } }; #endif // MXDSCHUNK_H diff --git a/LEGO1/mxdsevent.cpp b/LEGO1/mxdsevent.cpp new file mode 100644 index 00000000..a45ec93a --- /dev/null +++ b/LEGO1/mxdsevent.cpp @@ -0,0 +1,13 @@ +#include "mxdsevent.h" + +// OFFSET: LEGO1 0x100c95f0 STUB +MxDSEvent::MxDSEvent() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c97a0 STUB +MxDSEvent::~MxDSEvent() +{ + // TODO +} diff --git a/LEGO1/mxdsevent.h b/LEGO1/mxdsevent.h index 873d3fb2..59a00bb5 100644 --- a/LEGO1/mxdsevent.h +++ b/LEGO1/mxdsevent.h @@ -5,7 +5,22 @@ class MxDSEvent : public MxDSMediaAction { +public: + MxDSEvent(); + virtual ~MxDSEvent() override; + // OFFSET: LEGO1 0x100c9660 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025f0 + return "MxDSEvent"; + } + + // OFFSET: LEGO1 0x100c9670 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSEvent::ClassName()) || MxDSMediaAction::IsA(name); + } }; #endif // MXDSEVENT_H diff --git a/LEGO1/mxdsfile.h b/LEGO1/mxdsfile.h index ec7c10ae..8e136984 100644 --- a/LEGO1/mxdsfile.h +++ b/LEGO1/mxdsfile.h @@ -5,11 +5,26 @@ #include "mxioinfo.h" #include "mxstring.h" +// VTABLE 0x100dc890 class MxDSFile : public MxDSSource { public: __declspec(dllexport) MxDSFile(const char *filename, unsigned long skipReadingChunks); __declspec(dllexport) virtual ~MxDSFile(); // vtable+0x0 + + // OFFSET: LEGO1 0x100c0120 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102594 + return "MxDSFile"; + } + + // OFFSET: LEGO1 0x100c0130 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSFile::ClassName()) || MxDSSource::IsA(name); + } + __declspec(dllexport) virtual long Open(unsigned long); // vtable+0x14 __declspec(dllexport) virtual long Close(); // vtable+0x18 __declspec(dllexport) virtual long Read(unsigned char *,unsigned long); // vtable+0x20 diff --git a/LEGO1/mxdsmediaaction.cpp b/LEGO1/mxdsmediaaction.cpp new file mode 100644 index 00000000..9587b152 --- /dev/null +++ b/LEGO1/mxdsmediaaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsmediaaction.h" + +// OFFSET: LEGO1 0x100c8b40 +MxDSMediaAction::MxDSMediaAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c8cf0 +MxDSMediaAction::~MxDSMediaAction() +{ + // TODO +} diff --git a/LEGO1/mxdsmediaaction.h b/LEGO1/mxdsmediaaction.h index 305ca4d1..5beb12f5 100644 --- a/LEGO1/mxdsmediaaction.h +++ b/LEGO1/mxdsmediaaction.h @@ -3,9 +3,27 @@ #include "mxdsaction.h" +// VTABLE 0x100dcd40 +// SIZE 0xb8 class MxDSMediaAction : public MxDSAction { - +public: + MxDSMediaAction(); + virtual ~MxDSMediaAction() override; + + // OFFSET: LEGO1 0x100c8be0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f7624 + return "MxDSMediaAction"; + } + + // OFFSET: LEGO1 0x100c8bf0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSMediaAction::ClassName()) || MxDSAction::IsA(name); + } + }; #endif // MXDSMEDIAACTION_H diff --git a/LEGO1/mxdsmultiaction.cpp b/LEGO1/mxdsmultiaction.cpp new file mode 100644 index 00000000..4b36f2ec --- /dev/null +++ b/LEGO1/mxdsmultiaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsmultiaction.h" + +// OFFSET: LEGO1 0x100c9b90 +MxDSMultiAction::MxDSMultiAction() +{ + +} + +// OFFSET: LEGO1 0x100ca060 +MxDSMultiAction::~MxDSMultiAction() +{ + +} diff --git a/LEGO1/mxdsmultiaction.h b/LEGO1/mxdsmultiaction.h index 70f3d8be..af3d69df 100644 --- a/LEGO1/mxdsmultiaction.h +++ b/LEGO1/mxdsmultiaction.h @@ -3,9 +3,26 @@ #include "mxdsaction.h" +// VTABLE 0x100dcef0 +// SIZE 0x9c class MxDSMultiAction : public MxDSAction { +public: + MxDSMultiAction(); + virtual ~MxDSMultiAction() override; + // OFFSET: LEGO1 0x100c9f50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10101dbc + return "MxDSMultiAction"; + } + + // OFFSET: LEGO1 0x100c9f60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSMultiAction::ClassName()) || MxDSAction::IsA(name); + } }; #endif // MXDSMULTIACTION_H diff --git a/LEGO1/mxdsobject.cpp b/LEGO1/mxdsobject.cpp index 7323f446..11b912a0 100644 --- a/LEGO1/mxdsobject.cpp +++ b/LEGO1/mxdsobject.cpp @@ -15,6 +15,12 @@ MxDSObject::MxDSObject() this->m_unk28 = 0; } +// OFFSET: LEGO1 0x100bf7e0 +MxDSObject::~MxDSObject() +{ + // TODO +} + // OFFSET: LEGO1 0x100bf8e0 void MxDSObject::SetObjectName(const char *p_name) { diff --git a/LEGO1/mxdsobject.h b/LEGO1/mxdsobject.h index 468076f7..4f0aced6 100644 --- a/LEGO1/mxdsobject.h +++ b/LEGO1/mxdsobject.h @@ -4,12 +4,28 @@ #include "mxcore.h" #include "mxatomid.h" +// VTABLE 0x100dc868 +// SIZE 0x2c class MxDSObject : public MxCore { public: __declspec(dllexport) void SetObjectName(const char *); MxDSObject(); + virtual ~MxDSObject() override; + + // OFFSET: LEGO1 0x100bf730 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10101400 + return "MxDSObject"; + } + + // OFFSET: LEGO1 0x100bf740 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSObject::ClassName()) || MxCore::IsA(name); + } inline const MxAtomId& GetAtomId() { return this->m_atomId; } inline int GetUnknown1c() { return this->m_unk1c; } diff --git a/LEGO1/mxdsobjectaction.cpp b/LEGO1/mxdsobjectaction.cpp new file mode 100644 index 00000000..990168da --- /dev/null +++ b/LEGO1/mxdsobjectaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsobjectaction.h" + +// OFFSET: LEGO1 0x100c8870 +MxDSObjectAction::MxDSObjectAction() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c8a20 +MxDSObjectAction::~MxDSObjectAction() +{ + // TODO +} diff --git a/LEGO1/mxdsobjectaction.h b/LEGO1/mxdsobjectaction.h index 0fe19ab2..12e147fc 100644 --- a/LEGO1/mxdsobjectaction.h +++ b/LEGO1/mxdsobjectaction.h @@ -3,9 +3,26 @@ #include "mxdsmediaaction.h" +// VTABLE 0x100dccf8 +// SIZE 0xb8 class MxDSObjectAction : public MxDSMediaAction { +public: + MxDSObjectAction(); + virtual ~MxDSObjectAction() override; + // OFFSET: LEGO1 0x100c88e0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025c4 + return "MxDSObjectAction"; + } + + // OFFSET: LEGO1 0x100c88f0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSObjectAction::ClassName()) || MxDSMediaAction::IsA(name); + } }; #endif // MXDSOBJECTACTION_H diff --git a/LEGO1/mxdsparallelaction.cpp b/LEGO1/mxdsparallelaction.cpp new file mode 100644 index 00000000..78b9623a --- /dev/null +++ b/LEGO1/mxdsparallelaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsparallelaction.h" + +// OFFSET: LEGO1 0x100cae80 +MxDSParallelAction::MxDSParallelAction() +{ + +} + +// OFFSET: LEGO1 0x100cb040 +MxDSParallelAction::~MxDSParallelAction() +{ + +} diff --git a/LEGO1/mxdsparallelaction.h b/LEGO1/mxdsparallelaction.h index 9dc222dd..067dc82c 100644 --- a/LEGO1/mxdsparallelaction.h +++ b/LEGO1/mxdsparallelaction.h @@ -3,8 +3,26 @@ #include "mxdsmultiaction.h" +// VTABLE 0x100dcf80 +// SIZE 0x9c class MxDSParallelAction : public MxDSMultiAction { +public: + MxDSParallelAction(); + virtual ~MxDSParallelAction() override; + + // OFFSET: LEGO1 0x100caf00 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102608 + return "MxDSParallelAction"; + } + + // OFFSET: LEGO1 0x100caf10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSParallelAction::ClassName()) || MxDSMultiAction::IsA(name); + } }; diff --git a/LEGO1/mxdsselectaction.cpp b/LEGO1/mxdsselectaction.cpp new file mode 100644 index 00000000..575aba29 --- /dev/null +++ b/LEGO1/mxdsselectaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsselectaction.h" + +// OFFSET: LEGO1 0x100cb2b0 +MxDSSelectAction::MxDSSelectAction() +{ + +} + +// OFFSET: LEGO1 0x100cb8d0 +MxDSSelectAction::~MxDSSelectAction() +{ + +} diff --git a/LEGO1/mxdsselectaction.h b/LEGO1/mxdsselectaction.h index 26b93134..cb5374e1 100644 --- a/LEGO1/mxdsselectaction.h +++ b/LEGO1/mxdsselectaction.h @@ -3,8 +3,26 @@ #include "mxdsparallelaction.h" +// VTABLE 0x100dcfc8 +// SIZE 0xb0 class MxDSSelectAction : public MxDSParallelAction { +public: + MxDSSelectAction(); + virtual ~MxDSSelectAction() override; + + // OFFSET: LEGO1 0x100cb6f0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x1010261c + return "MxDSSelectAction"; + } + + // OFFSET: LEGO1 0x100cb700 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSelectAction::ClassName()) || MxDSParallelAction::IsA(name); + } }; diff --git a/LEGO1/mxdsserialaction.cpp b/LEGO1/mxdsserialaction.cpp new file mode 100644 index 00000000..a5e8f623 --- /dev/null +++ b/LEGO1/mxdsserialaction.cpp @@ -0,0 +1,13 @@ +#include "mxdsserialaction.h" + +// OFFSET: LEGO1 0x100ca9d0 +MxDSSerialAction::MxDSSerialAction() +{ + +} + +// OFFSET: LEGO1 0x100cac10 +MxDSSerialAction::~MxDSSerialAction() +{ + +} diff --git a/LEGO1/mxdsserialaction.h b/LEGO1/mxdsserialaction.h index 11aa4dc7..2b260556 100644 --- a/LEGO1/mxdsserialaction.h +++ b/LEGO1/mxdsserialaction.h @@ -3,9 +3,26 @@ #include "mxdsmultiaction.h" +// VTABLE 0x100dcf38 +// SIZE 0xa8 class MxDSSerialAction : public MxDSMultiAction { +public: + MxDSSerialAction(); + virtual ~MxDSSerialAction() override; + // OFFSET: LEGO1 0x100caad0 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x100f75dc + return "MxDSSerialAction"; + } + + // OFFSET: LEGO1 0x100caae0 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSerialAction::ClassName()) || MxDSMultiAction::IsA(name); + } }; #endif // MXDSSERIALACTION_H diff --git a/LEGO1/mxdssound.cpp b/LEGO1/mxdssound.cpp new file mode 100644 index 00000000..4f2b0d61 --- /dev/null +++ b/LEGO1/mxdssound.cpp @@ -0,0 +1,13 @@ +#include "mxdssound.h" + +// OFFSET: LEGO1 0x100c92c0 +MxDSSound::MxDSSound() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c9470 +MxDSSound::~MxDSSound() +{ + // TODO +} diff --git a/LEGO1/mxdssound.h b/LEGO1/mxdssound.h index 8f87b109..45a61d63 100644 --- a/LEGO1/mxdssound.h +++ b/LEGO1/mxdssound.h @@ -1,9 +1,28 @@ #ifndef MXDSSOUND_H #define MXDSSOUND_H +#include "mxdsmediaaction.h" + +// VTABLE 0x100dcdd0 +// SIZE 0xc0 class MxDSSound : public MxDSMediaAction { - +public: + MxDSSound(); + virtual ~MxDSSound() override; + + // OFFSET: LEGO1 0x100c9330 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025e4 + return "MxDSSound"; + } + + // OFFSET: LEGO1 0x100c9340 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSound::ClassName()) || MxDSMediaAction::IsA(name); + } }; diff --git a/LEGO1/mxdssource.h b/LEGO1/mxdssource.h index ef0e8a2a..2837e7c2 100644 --- a/LEGO1/mxdssource.h +++ b/LEGO1/mxdssource.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc8c8 class MxDSSource : public MxCore { public: @@ -12,6 +13,19 @@ class MxDSSource : public MxCore , m_position(-1) {} + // OFFSET: LEGO1 0x100c0010 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x10102588 + return "MxDSSource"; + } + + // OFFSET: LEGO1 0x100c0020 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSource::ClassName()) || MxCore::IsA(name); + } + virtual long Open(unsigned long) = 0; virtual long Close() = 0; virtual void SomethingWhichCallsRead(void* pUnknownObject); diff --git a/LEGO1/mxdsstill.cpp b/LEGO1/mxdsstill.cpp new file mode 100644 index 00000000..0a5434f1 --- /dev/null +++ b/LEGO1/mxdsstill.cpp @@ -0,0 +1,13 @@ +#include "mxdsstill.h" + +// OFFSET: LEGO1 0x100c98c0 +MxDSStill::MxDSStill() +{ + // TODO +} + +// OFFSET: LEGO1 0x100c9a70 +MxDSStill::~MxDSStill() +{ + // TODO +} diff --git a/LEGO1/mxdsstill.h b/LEGO1/mxdsstill.h index 0ff42683..920f890a 100644 --- a/LEGO1/mxdsstill.h +++ b/LEGO1/mxdsstill.h @@ -3,9 +3,26 @@ #include "mxdsmediaaction.h" +// VTABLE 0x100dce60 +// SIZE 0xb8 class MxDSStill : public MxDSMediaAction { +public: + MxDSStill(); + virtual ~MxDSStill() override; + // OFFSET: LEGO1 0x100c9930 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101025fc + return "MxDSStill"; + } + + // OFFSET: LEGO1 0x100c9940 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSStill::ClassName()) || MxDSMediaAction::IsA(name); + } }; #endif // MXDSSTILL_H diff --git a/LEGO1/mxdssubscriber.cpp b/LEGO1/mxdssubscriber.cpp new file mode 100644 index 00000000..8a011fed --- /dev/null +++ b/LEGO1/mxdssubscriber.cpp @@ -0,0 +1,13 @@ +#include "mxdssubscriber.h" + +// OFFSET: LEGO1 0x100b7bb0 +MxDSSubscriber::MxDSSubscriber() +{ + // TODO +} + +// OFFSET: LEGO1 0x100b7e00 +MxDSSubscriber::~MxDSSubscriber() +{ + // TODO +} diff --git a/LEGO1/mxdssubscriber.h b/LEGO1/mxdssubscriber.h index b583f763..fb3b0d04 100644 --- a/LEGO1/mxdssubscriber.h +++ b/LEGO1/mxdssubscriber.h @@ -3,9 +3,26 @@ #include "mxcore.h" +// VTABLE 0x100dc698 +// SIZE 0x4c class MxDSSubscriber : public MxCore { - +public: + MxDSSubscriber(); + virtual ~MxDSSubscriber() override; + + // OFFSET: LEGO1 0x100b7d50 + inline virtual const char *ClassName() const override // vtable+0x0c + { + // 0x101020f8 + return "MxDSSubscriber"; + } + + // OFFSET: LEGO1 0x100b7d60 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxDSSubscriber::ClassName()) || MxCore::IsA(name); + } }; #endif // MXDSSUBSCRIBER_H diff --git a/LEGO1/mxentity.cpp b/LEGO1/mxentity.cpp index ccd3b8e2..526a03e2 100644 --- a/LEGO1/mxentity.cpp +++ b/LEGO1/mxentity.cpp @@ -1,11 +1,13 @@ #include "mxentity.h" -#include "mxatomid.h" - -// OFFSET: LEGO1 0x10001070 STUB -undefined4 MxEntity::VTable0x14(undefined4 param_1, MxAtomId *param_2) +// OFFSET: LEGO1 0x1001d190 STUB +MxEntity::MxEntity() +{ + // TODO +} + +// OFFSET: LEGO1 0x1000c110 STUB +MxEntity::~MxEntity() { // TODO - - return undefined4(); } diff --git a/LEGO1/mxentity.h b/LEGO1/mxentity.h index bbbedf45..dda04646 100644 --- a/LEGO1/mxentity.h +++ b/LEGO1/mxentity.h @@ -3,31 +3,26 @@ #include "mxcore.h" -#ifndef undefined4 -#define undefined4 int -#endif - -class MxAtomId; - +// VTABLE 0x100d5390 class MxEntity : public MxCore { public: + MxEntity(); + virtual ~MxEntity() override; + // OFFSET: LEGO1 0x1000c180 - inline virtual const char* ClassName() const // vtable+0xc + inline virtual const char* ClassName() const override // vtable+0xc { // 0x100f0070 return "MxEntity"; - }; + } // OFFSET: LEGO1 0x1000c190 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, MxEntity::ClassName()) || MxCore::IsA(name); - }; + } - virtual undefined4 VTable0x14(undefined4 param_1, MxAtomId* param_2); // vtable+0x14 - - // VTABLE 0x100d53a4 // 0x8: MxResult // 0xc MxAtomId }; diff --git a/LEGO1/mxeventmanager.cpp b/LEGO1/mxeventmanager.cpp index 096a4b77..786420bc 100644 --- a/LEGO1/mxeventmanager.cpp +++ b/LEGO1/mxeventmanager.cpp @@ -1,7 +1,13 @@ #include "mxeventmanager.h" +// OFFSET: LEGO1 0x100c0360 STUB +MxEventManager::MxEventManager() +{ + // TODO +} + // OFFSET: LEGO1 0x100c03f0 STUB MxEventManager::~MxEventManager() { // TODO -} \ No newline at end of file +} diff --git a/LEGO1/mxeventmanager.h b/LEGO1/mxeventmanager.h index 19ff0cbd..be5a796c 100644 --- a/LEGO1/mxeventmanager.h +++ b/LEGO1/mxeventmanager.h @@ -1,14 +1,16 @@ #ifndef MXEVENTMANAGER_H #define MXEVENTMANAGER_H -#include "mxcore.h" +#include "mxunknown100dc6b0.h" -class MxEventManager : public MxCore +// VTABLE 0x100dc900 +// SIZE 0x2c +class MxEventManager : public MxUnknown100dc6b0 { public: - virtual ~MxEventManager(); + MxEventManager(); + virtual ~MxEventManager() override; - // VTABLE 0x100c0360 }; #endif // MXEVENTMANAGER_H diff --git a/LEGO1/mxeventpresenter.cpp b/LEGO1/mxeventpresenter.cpp index 93037268..ba78203f 100644 --- a/LEGO1/mxeventpresenter.cpp +++ b/LEGO1/mxeventpresenter.cpp @@ -1,7 +1,13 @@ #include "mxeventpresenter.h" -// OFFSET: LEGO1 0x100c2b70 STUB +// OFFSET: LEGO1 0x100c2b70 MxEventPresenter::MxEventPresenter() +{ + Init(); +} + +// OFFSET: LEGO1 0x100c2d40 STUB +MxEventPresenter::~MxEventPresenter() { // TODO } diff --git a/LEGO1/mxeventpresenter.h b/LEGO1/mxeventpresenter.h index 4aee9b81..2adb8cfa 100644 --- a/LEGO1/mxeventpresenter.h +++ b/LEGO1/mxeventpresenter.h @@ -3,15 +3,30 @@ #include "mxmediapresenter.h" +// VTABLE 0x100dca88 +// SIZE 0x54 class MxEventPresenter : public MxMediaPresenter { public: MxEventPresenter(); + virtual ~MxEventPresenter() override; + + // OFFSET: LEGO1 0x100c2c30 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101dcc + return "MxEventPresenter"; + } + + // OFFSET: LEGO1 0x100c2c40 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxEventPresenter::ClassName()) || MxMediaPresenter::IsA(name); + } private: void Init(); - // VTABLE 0x100dca88 }; #endif // MXEVENTPRESENTER_H diff --git a/LEGO1/mxflcpresenter.cpp b/LEGO1/mxflcpresenter.cpp index 1ddd7986..1e6ee289 100644 --- a/LEGO1/mxflcpresenter.cpp +++ b/LEGO1/mxflcpresenter.cpp @@ -4,4 +4,10 @@ MxFlcPresenter::MxFlcPresenter() { // TODO -} \ No newline at end of file +} + +// OFFSET: LEGO1 0x100b3420 STUB +MxFlcPresenter::~MxFlcPresenter() +{ + // TODO +} diff --git a/LEGO1/mxflcpresenter.h b/LEGO1/mxflcpresenter.h index 0b1f3919..5d63c41c 100644 --- a/LEGO1/mxflcpresenter.h +++ b/LEGO1/mxflcpresenter.h @@ -3,10 +3,26 @@ #include "mxvideopresenter.h" +// VTABLE 0x100dc2c0 +// SIZE 0x68 class MxFlcPresenter : public MxVideoPresenter { public: MxFlcPresenter(); + virtual ~MxFlcPresenter() override; + + // OFFSET: LEGO1 0x100b33f0 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x100f43c8 + return "MxFlcPresenter"; + } + + // OFFSET: LEGO1 0x1004e200 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxFlcPresenter::ClassName()) || MxVideoPresenter::IsA(name); + } }; #endif // MXFLCPRESENTER_H diff --git a/LEGO1/mxloopingflxpresenter.cpp b/LEGO1/mxloopingflcpresenter.cpp similarity index 57% rename from LEGO1/mxloopingflxpresenter.cpp rename to LEGO1/mxloopingflcpresenter.cpp index d7d4ec79..f4602f3c 100644 --- a/LEGO1/mxloopingflxpresenter.cpp +++ b/LEGO1/mxloopingflcpresenter.cpp @@ -1,4 +1,4 @@ -#include "mxloopingflxpresenter.h" +#include "mxloopingflcpresenter.h" // OFFSET: LEGO1 0x100b4310 STUB MxLoopingFlcPresenter::MxLoopingFlcPresenter() @@ -6,6 +6,12 @@ MxLoopingFlcPresenter::MxLoopingFlcPresenter() // TODO } +// OFFSET: LEGO1 0x100b43b0 STUB +MxLoopingFlcPresenter::~MxLoopingFlcPresenter() +{ + // TODO +} + // OFFSET: LEGO1 0x100b4410 STUB void MxLoopingFlcPresenter::Init() { diff --git a/LEGO1/mxloopingflcpresenter.h b/LEGO1/mxloopingflcpresenter.h new file mode 100644 index 00000000..5152e4d9 --- /dev/null +++ b/LEGO1/mxloopingflcpresenter.h @@ -0,0 +1,25 @@ +#ifndef MXLOOPINGFLCPRESENTER_H +#define MXLOOPINGFLCPRESENTER_H + +#include "mxflcpresenter.h" + +// VTABLE 0x100dc480 +// SIZE 0x6c +class MxLoopingFlcPresenter : public MxFlcPresenter +{ +public: + MxLoopingFlcPresenter(); + virtual ~MxLoopingFlcPresenter() override; + + // OFFSET: LEGO1 0x100b4380 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101e20 + return "MxLoopingFlcPresenter"; + } + +private: + void Init(); +}; + +#endif // MXLOOPINGFLCPRESENTER_H diff --git a/LEGO1/mxloopingflxpresenter.h b/LEGO1/mxloopingflxpresenter.h deleted file mode 100644 index bad57a67..00000000 --- a/LEGO1/mxloopingflxpresenter.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef MXLOOPINGFLXPRESENTER_H -#define MXLOOPINGFLXPRESENTER_H - -#include "mxflcpresenter.h" - -class MxLoopingFlcPresenter : public MxFlcPresenter -{ -public: - MxLoopingFlcPresenter(); - -private: - void Init(); -}; - -#endif // MXLOOPINGFLXPRESENTER_H diff --git a/LEGO1/mxloopingmidipresenter.h b/LEGO1/mxloopingmidipresenter.h index b1620e73..e41be651 100644 --- a/LEGO1/mxloopingmidipresenter.h +++ b/LEGO1/mxloopingmidipresenter.h @@ -3,9 +3,23 @@ #include "mxmidipresenter.h" +// VTABLE 0x100dc240 +// SIZE 0x58 class MxLoopingMIDIPresenter : public MxMIDIPresenter { - // SIZE 0x58 +public: + // OFFSET: LEGO1 0x100b1830 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101de0 + return "MxLoopingMIDIPresenter"; + } + + // OFFSET: LEGO1 0x100b1840 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxLoopingMIDIPresenter::ClassName()) || MxMIDIPresenter::IsA(name); + } }; #endif // MXLOOPINGMIDIPRESENTER_H diff --git a/LEGO1/mxloopingsmkpresenter.cpp b/LEGO1/mxloopingsmkpresenter.cpp index 742648ee..cb038462 100644 --- a/LEGO1/mxloopingsmkpresenter.cpp +++ b/LEGO1/mxloopingsmkpresenter.cpp @@ -1,9 +1,9 @@ #include "mxloopingsmkpresenter.h" -// OFFSET: LEGO1 0x100b48b0 STUB +// OFFSET: LEGO1 0x100b48b0 MxLoopingSmkPresenter::MxLoopingSmkPresenter() { - // TODO + Init(); } // OFFSET: LEGO1 0x100b4950 STUB diff --git a/LEGO1/mxloopingsmkpresenter.h b/LEGO1/mxloopingsmkpresenter.h index 817d5f6b..129d98b9 100644 --- a/LEGO1/mxloopingsmkpresenter.h +++ b/LEGO1/mxloopingsmkpresenter.h @@ -3,11 +3,20 @@ #include "mxsmkpresenter.h" +// VTABLE 0x100dc540 +// SIZE 0x724 class MxLoopingSmkPresenter : public MxSmkPresenter { public: MxLoopingSmkPresenter(); - virtual ~MxLoopingSmkPresenter(); // vtable+0x0 + virtual ~MxLoopingSmkPresenter() override; // vtable+0x0 + + // OFFSET: LEGO1 0x100b4920 + inline virtual const char* ClassName() const override // vtable+0xc + { + // 0x10101e08 + return "MxLoopingSmkPresenter"; + } private: void Init(); diff --git a/LEGO1/mxmediapresenter.cpp b/LEGO1/mxmediapresenter.cpp index 2c6f8fb2..793b3ea8 100644 --- a/LEGO1/mxmediapresenter.cpp +++ b/LEGO1/mxmediapresenter.cpp @@ -1,59 +1,14 @@ #include "mxmediapresenter.h" -// OFFSET: LEGO1 0x100d4ce0 STUB +// OFFSET: LEGO1 0x100b5d10 STUB long MxMediaPresenter::Tickle() { // TODO - return 0; } -// OFFSET: LEGO1 0x100b5d90 STUB -void MxMediaPresenter::VTable0x20() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b5e10 STUB -void MxMediaPresenter::VTable0x24() -{ - // TODO -} - -// OFFSET: LEGO1 0x1000c5b0 STUB -void MxMediaPresenter::InitVirtual() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b5ef0 STUB -void MxMediaPresenter::DoneTickle() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b5700 STUB -long MxMediaPresenter::StartAction(MxStreamController *, MxDSAction *) -{ - // TODO - - return 0; -} - -// OFFSET: LEGO1 0x100b5bc0 STUB -void MxMediaPresenter::EndAction() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b6030 STUB -void MxMediaPresenter::Enable(unsigned char param) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b5f10 STUB -void MxMediaPresenter::VTable0x58(undefined4 param) +// OFFSET: LEGO1 0x100b54e0 STUB +void MxMediaPresenter::Init() { // TODO } diff --git a/LEGO1/mxmediapresenter.h b/LEGO1/mxmediapresenter.h index 68bc650e..3fb70d31 100644 --- a/LEGO1/mxmediapresenter.h +++ b/LEGO1/mxmediapresenter.h @@ -3,34 +3,33 @@ #include "mxpresenter.h" +// VTABLE 0x100d4cd8 class MxMediaPresenter : public MxPresenter { public: - virtual long Tickle(); // vtable+0x8, override MxCore + inline MxMediaPresenter() + { + Init(); + } - // OFFSET: LEGO1 0x100d4ce4 - inline virtual const char *MxMediaPresenter::ClassName() const // vtable+0xc + virtual long Tickle() override; // vtable+0x8, override MxCore + + // OFFSET: LEGO1 0x1000c5c0 + inline virtual const char *MxMediaPresenter::ClassName() const override // vtable+0xc { // 0x100f074c return "MxMediaPresenter"; } // OFFSET: LEGO1 0x1000c5d0 - inline virtual MxBool MxMediaPresenter::IsA(const char *name) const // vtable+0x10 + inline virtual MxBool MxMediaPresenter::IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, MxMediaPresenter::ClassName()) || MxPresenter::IsA(name); } - virtual void VTable0x20(); // vtable+0x20, override MxPresenter - virtual void VTable0x24(); // vtable+0x24, override MxPresenter - virtual void InitVirtual(); // vtable+0x38 - virtual void DoneTickle(); // vtable+0x2c, override MxPresenter - virtual long StartAction(MxStreamController*, MxDSAction*); // vtable+0x3c, override - virtual void EndAction(); // vtable+0x40, override MxPresenter - virtual void Enable(unsigned char param); // vtable+0x54, override MxPresenter - virtual void VTable0x58(undefined4 param); // vtable+0x58 +private: + void Init(); - // VTABLE 0x100d4cd8 }; #endif // MXMEDIAPRESENTER_H diff --git a/LEGO1/mxmidipresenter.h b/LEGO1/mxmidipresenter.h index 74e9d32b..8a46d12a 100644 --- a/LEGO1/mxmidipresenter.h +++ b/LEGO1/mxmidipresenter.h @@ -3,6 +3,7 @@ #include "mxmusicpresenter.h" +// VTABLE 0x100dca20 class MxMIDIPresenter : public MxMusicPresenter { }; diff --git a/LEGO1/mxmusicmanager.h b/LEGO1/mxmusicmanager.h index 9166e173..4288ed1e 100644 --- a/LEGO1/mxmusicmanager.h +++ b/LEGO1/mxmusicmanager.h @@ -3,9 +3,9 @@ #include "mxcore.h" +// VTABLE 0x100dc930 class MxMusicManager : public MxCore { - // VTABLE 0x100dc930 }; #endif // MXMUSICMANAGER_H diff --git a/LEGO1/mxmusicpresenter.h b/LEGO1/mxmusicpresenter.h index dd057e46..e244b036 100644 --- a/LEGO1/mxmusicpresenter.h +++ b/LEGO1/mxmusicpresenter.h @@ -3,6 +3,7 @@ #include "mxaudiopresenter.h" +// VTABLE 0x100dc9b8 class MxMusicPresenter : public MxAudioPresenter { public: diff --git a/LEGO1/mxnextactiondatastart.h b/LEGO1/mxnextactiondatastart.h index 7f915c73..df2a2748 100644 --- a/LEGO1/mxnextactiondatastart.h +++ b/LEGO1/mxnextactiondatastart.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc9a0 class MxNextActionDataStart : public MxCore { diff --git a/LEGO1/mxnotificationmanager.h b/LEGO1/mxnotificationmanager.h index af52c005..e350ba56 100644 --- a/LEGO1/mxnotificationmanager.h +++ b/LEGO1/mxnotificationmanager.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc078 class MxNotificationManager : public MxCore { public: @@ -11,7 +12,6 @@ class MxNotificationManager : public MxCore virtual long Tickle(); // vtable+0x8 // 0x10: MxCriticalSection - // VTABLE 0x100dc078 }; #endif // MXNOTIFICATIONMANAGER_H diff --git a/LEGO1/mxobjectfactory.h b/LEGO1/mxobjectfactory.h index aa6605ba..57809be9 100644 --- a/LEGO1/mxobjectfactory.h +++ b/LEGO1/mxobjectfactory.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc220 class MxObjectFactory : public MxCore { diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index 4c7d29e8..e9f61b7a 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -8,7 +8,6 @@ #include "mxobjectfactory.h" #include "mxomnicreateflags.h" #include "mxomnicreateparam.h" -#include "mxresult.h" #include "mxsoundmanager.h" #include "mxstreamer.h" #include "mxticklemanager.h" @@ -16,6 +15,8 @@ #include "mxvariabletable.h" #include "mxvideomanager.h" +// VTABLE 0x100dc168 +// SIZE 0x68 class MxOmni : public MxCore { public: diff --git a/LEGO1/mxpalette.h b/LEGO1/mxpalette.h index ab52b412..b78efd7d 100644 --- a/LEGO1/mxpalette.h +++ b/LEGO1/mxpalette.h @@ -4,8 +4,10 @@ #include #include "mxcore.h" -#include "mxresult.h" +#include "mxtypes.h" +// VTABLE 0x100dc848 +// SIZE 0x414 class MxPalette : public MxCore { public: diff --git a/LEGO1/mxpresenter.h b/LEGO1/mxpresenter.h index d411a186..6ea022da 100644 --- a/LEGO1/mxpresenter.h +++ b/LEGO1/mxpresenter.h @@ -22,14 +22,14 @@ class MxPresenter : public MxCore __declspec(dllexport) virtual ~MxPresenter(); // vtable+0x0 // OFFSET: LEGO1 0x1000bfe0 - inline virtual const char *MxPresenter::ClassName() const // vtable+0xc + inline virtual const char *ClassName() const // vtable+0xc { // 0x100f0740 return "MxPresenter"; } // OFFSET: LEGO1 0x1000bff0 - inline virtual MxBool MxPresenter::IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const // vtable+0x10 { return !strcmp(name, MxPresenter::ClassName()) || MxCore::IsA(name); } diff --git a/LEGO1/mxramstreamcontroller.h b/LEGO1/mxramstreamcontroller.h index 77900339..09915cbf 100644 --- a/LEGO1/mxramstreamcontroller.h +++ b/LEGO1/mxramstreamcontroller.h @@ -3,10 +3,10 @@ #include "mxstreamcontroller.h" +// VTABLE 0x100dc728 class MxRAMStreamController : public MxStreamController { }; - #endif // MXRAMSTREAMCONTROLLER_H diff --git a/LEGO1/mxramstreamprovider.h b/LEGO1/mxramstreamprovider.h index 7888a204..5422d3b3 100644 --- a/LEGO1/mxramstreamprovider.h +++ b/LEGO1/mxramstreamprovider.h @@ -3,6 +3,7 @@ #include "mxstreamprovider.h" +// VTABLE 0x100dd0d0 class MxRAMStreamProvider : public MxStreamProvider { diff --git a/LEGO1/mxresult.h b/LEGO1/mxresult.h deleted file mode 100644 index 7a56f493..00000000 --- a/LEGO1/mxresult.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef MXRESULT_H -#define MXRESULT_H - -typedef unsigned long MxResult; -const MxResult SUCCESS = 0; -const MxResult FAILURE = 0xFFFFFFFFL; - -#endif // MXRESULT_H diff --git a/LEGO1/mxsmkpresenter.h b/LEGO1/mxsmkpresenter.h index 49a8c1f3..b439bc2a 100644 --- a/LEGO1/mxsmkpresenter.h +++ b/LEGO1/mxsmkpresenter.h @@ -3,6 +3,8 @@ #include "mxvideopresenter.h" +// VTABLE 0x100dc348 +// SIZE 0x720 class MxSmkPresenter : public MxVideoPresenter { public: @@ -11,8 +13,6 @@ class MxSmkPresenter : public MxVideoPresenter private: void Init(); - // VTABLE 0x100dc348 - // SIZE 0x720 }; #endif // MXSMKPRESENTER_H diff --git a/LEGO1/mxsoundmanager.cpp b/LEGO1/mxsoundmanager.cpp index 12296a63..d12ecee1 100644 --- a/LEGO1/mxsoundmanager.cpp +++ b/LEGO1/mxsoundmanager.cpp @@ -1,7 +1,13 @@ #include "mxsoundmanager.h" +// OFFSET: LEGO1 0x100ae740 STUB +MxSoundManager::MxSoundManager() +{ + // TODO +} + // OFFSET: LEGO1 0x100ae7d0 STUB MxSoundManager::~MxSoundManager() { // TODO -} \ No newline at end of file +} diff --git a/LEGO1/mxsoundmanager.h b/LEGO1/mxsoundmanager.h index 3d5b2686..3421a5d6 100644 --- a/LEGO1/mxsoundmanager.h +++ b/LEGO1/mxsoundmanager.h @@ -3,12 +3,15 @@ #include "mxcore.h" -class MxSoundManager : public MxCore +// VTABLE 0x100dc128 +// SIZE 0x3c +// Base vtables are: MxCore -> 0x100dc6b0 -> 0x100dc6e0 -> MxSoundManager +class MxSoundManager { public: - virtual ~MxSoundManager(); // vtable+0x0 + MxSoundManager(); + virtual ~MxSoundManager() override; // vtable+0x0 - // VTABLE 0x100dc128 }; #endif // MXSOUNDMANAGER_H diff --git a/LEGO1/mxsoundpresenter.cpp b/LEGO1/mxsoundpresenter.cpp index 258117b8..50e04ce4 100644 --- a/LEGO1/mxsoundpresenter.cpp +++ b/LEGO1/mxsoundpresenter.cpp @@ -1,15 +1 @@ #include "mxsoundpresenter.h" - -// OFFSET: LEGO1 0x100b1aa0 STUB -undefined4 MxSoundPresenter::VTable0x34() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x1000d490 STUB -void MxSoundPresenter::InitVirtual() -{ - // TODO -} diff --git a/LEGO1/mxsoundpresenter.h b/LEGO1/mxsoundpresenter.h index 491b974d..53d7000d 100644 --- a/LEGO1/mxsoundpresenter.h +++ b/LEGO1/mxsoundpresenter.h @@ -3,6 +3,7 @@ #include "mxaudiopresenter.h" +// VTABLE 0x100d4b08 class MxSoundPresenter : public MxAudioPresenter { public: @@ -19,8 +20,6 @@ class MxSoundPresenter : public MxAudioPresenter return !strcmp(name, MxSoundPresenter::ClassName()) || MxAudioPresenter::IsA(name); }; - virtual undefined4 VTable0x34(); // vtable+0x34 - virtual void InitVirtual(); // vtable+0x38 }; #endif // MXSOUNDPRESENTER_H diff --git a/LEGO1/mxstillpresenter.cpp b/LEGO1/mxstillpresenter.cpp index 9baa30c5..bc2b03b5 100644 --- a/LEGO1/mxstillpresenter.cpp +++ b/LEGO1/mxstillpresenter.cpp @@ -1,7 +1 @@ #include "mxstillpresenter.h" - -// OFFSET: LEGO1 0x10043430 STUB -MxStillPresenter::MxStillPresenter() -{ - // TODO -} \ No newline at end of file diff --git a/LEGO1/mxstillpresenter.h b/LEGO1/mxstillpresenter.h index c377dd66..d9376b8e 100644 --- a/LEGO1/mxstillpresenter.h +++ b/LEGO1/mxstillpresenter.h @@ -3,13 +3,11 @@ #include "mxvideopresenter.h" +// VTABLE 0x100d7a38 +// SIZE 0x6c class MxStillPresenter : public MxVideoPresenter { public: - MxStillPresenter(); - - // VTABLE 0x100d7a38 - // SIZE 0x6c }; #endif // MXSTILLPRESENTER_H diff --git a/LEGO1/mxstreamchunk.h b/LEGO1/mxstreamchunk.h index fba3ae94..51f1a34d 100644 --- a/LEGO1/mxstreamchunk.h +++ b/LEGO1/mxstreamchunk.h @@ -3,6 +3,7 @@ #include "mxdschunk.h" +// VTABLE 0x100dc2a8 class MxStreamChunk : public MxDSChunk { diff --git a/LEGO1/mxstreamcontroller.h b/LEGO1/mxstreamcontroller.h index dba24176..8884b49f 100644 --- a/LEGO1/mxstreamcontroller.h +++ b/LEGO1/mxstreamcontroller.h @@ -2,10 +2,26 @@ #define MXSTREAMCONTROLLER_H #include "mxatomid.h" +#include "mxcore.h" -class MxStreamController +// VTABLE 0x100dc968 +class MxStreamController : public MxCore { public: + + // OFFSET: LEGO1 0x100c0f10 + inline virtual const char *ClassName() const override // vtable+0xc + { + // 0x10102130 + return "MxStreamController"; + } + + // OFFSET: LEGO1 0x100c0f20 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 + { + return !strcmp(name, MxStreamController::ClassName()) || MxCore::IsA(name); + } + int m_unk00; int m_unk04; int m_unk08; diff --git a/LEGO1/mxstreamer.cpp b/LEGO1/mxstreamer.cpp index b448d420..b6da4b1d 100644 --- a/LEGO1/mxstreamer.cpp +++ b/LEGO1/mxstreamer.cpp @@ -1,7 +1,5 @@ #include "mxstreamer.h" -#include "mxresult.h" - // OFFSET: LEGO1 0x100b91d0 STUB MxStreamer::~MxStreamer() { diff --git a/LEGO1/mxstreamer.h b/LEGO1/mxstreamer.h index ee1a1d53..f8eeb43b 100644 --- a/LEGO1/mxstreamer.h +++ b/LEGO1/mxstreamer.h @@ -3,18 +3,19 @@ #include "mxcore.h" #include "mxstreamcontroller.h" -#include "mxresult.h" +#include "mxtypes.h" +// VTABLE 0x100dc710 class MxStreamer : public MxCore { public: - virtual ~MxStreamer(); + virtual ~MxStreamer() override; __declspec(dllexport) MxStreamController *Open(const char *name, unsigned short p); __declspec(dllexport) long Close(const char *p); - virtual long Notify(MxParam &p); // vtable+0x4 - virtual MxResult VTable0x14(); // vtable+0x14 + virtual long Notify(MxParam &p) override; // vtable+0x4 + virtual MxResult VTable0x14() override; // vtable+0x14 }; #endif // MXSTREAMER_H diff --git a/LEGO1/mxstreamprovider.h b/LEGO1/mxstreamprovider.h index 19a293ab..fda71bb1 100644 --- a/LEGO1/mxstreamprovider.h +++ b/LEGO1/mxstreamprovider.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dd100 class MxStreamProvider : public MxCore { diff --git a/LEGO1/mxstring.h b/LEGO1/mxstring.h index a9a25ba1..3de8d2ae 100644 --- a/LEGO1/mxstring.h +++ b/LEGO1/mxstring.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100dc110 class MxString : public MxCore { public: diff --git a/LEGO1/mxticklemanager.h b/LEGO1/mxticklemanager.h index 24600dca..7ef50622 100644 --- a/LEGO1/mxticklemanager.h +++ b/LEGO1/mxticklemanager.h @@ -3,6 +3,7 @@ #include "mxcore.h" +// VTABLE 0x100d86d8 class MxTickleManager : public MxCore { public: diff --git a/LEGO1/mxtimer.h b/LEGO1/mxtimer.h index 8f35d205..d79023d8 100644 --- a/LEGO1/mxtimer.h +++ b/LEGO1/mxtimer.h @@ -3,6 +3,8 @@ #include "mxcore.h" +// VTABLE 0x100dc0e0 +// SIZE 0x10 class MxTimer : public MxCore { public: diff --git a/LEGO1/mxtransitionmanager.cpp b/LEGO1/mxtransitionmanager.cpp index b2c5afa9..275335e5 100644 --- a/LEGO1/mxtransitionmanager.cpp +++ b/LEGO1/mxtransitionmanager.cpp @@ -1,6 +1,6 @@ #include "mxtransitionmanager.h" -// OFFSET: LEGO1 0x1004ba00 STUB +// OFFSET: LEGO1 0x1004b8d0 STUB MxTransitionManager::MxTransitionManager() { // TODO @@ -19,11 +19,3 @@ long MxTransitionManager::Tickle() return 0; } - -// OFFSET: LEGO1 0x1004baa0 STUB -undefined4 MxTransitionManager::VTable0x14() -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/mxtransitionmanager.h b/LEGO1/mxtransitionmanager.h index 410b189d..3fdb1ebf 100644 --- a/LEGO1/mxtransitionmanager.h +++ b/LEGO1/mxtransitionmanager.h @@ -5,10 +5,7 @@ class MxVideoPresenter; -#ifndef undefined4 -#define undefined4 int -#endif - +// 0x100d7ea0 class MxTransitionManager : public MxCore { public: @@ -17,9 +14,6 @@ class MxTransitionManager : public MxCore __declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *videoPresenter); virtual long Tickle(); // vtable+0x8 - virtual undefined4 VTable0x14(); // vtable+0x14 - - // VTABLE 0x100d7ea0 }; #endif // MXTRANSITIONMANAGER_H diff --git a/LEGO1/mxtypes.h b/LEGO1/mxtypes.h index f6e23970..71421d91 100644 --- a/LEGO1/mxtypes.h +++ b/LEGO1/mxtypes.h @@ -8,6 +8,10 @@ typedef short MxS16; typedef unsigned int MxU32; typedef int MxS32; +typedef unsigned long MxResult; +const MxResult SUCCESS = 0; +const MxResult FAILURE = 0xFFFFFFFFL; + typedef unsigned char MxBool; #ifndef TRUE @@ -18,4 +22,8 @@ typedef unsigned char MxBool; #define FALSE 0 #endif -#endif MXTYPE_H +#if defined(_MSC_VER) && _MSC_VER <= 1200 // 1200 corresponds to VC6.0 but "override" was probably added even later +#define override +#endif + +#endif // MXTYPE_H diff --git a/LEGO1/mxunknown100dc6b0.cpp b/LEGO1/mxunknown100dc6b0.cpp index e3125cef..029be1f7 100644 --- a/LEGO1/mxunknown100dc6b0.cpp +++ b/LEGO1/mxunknown100dc6b0.cpp @@ -12,4 +12,4 @@ MxResult MxUnknown100dc6b0::Init() this->m_unk08 = 0; this->m_unk0c = 0; return SUCCESS; -} \ No newline at end of file +} diff --git a/LEGO1/mxunknown100dc6b0.h b/LEGO1/mxunknown100dc6b0.h index 87779eaf..ca2ee600 100644 --- a/LEGO1/mxunknown100dc6b0.h +++ b/LEGO1/mxunknown100dc6b0.h @@ -2,9 +2,10 @@ #define MXUNKNOWN100DC6B0_H #include "mxcore.h" -#include "mxresult.h" #include "mxcriticalsection.h" +#include "mxtypes.h" +// VTABLE 0x100dc6b0 class MxUnknown100dc6b0 : public MxCore { public: diff --git a/LEGO1/mxvariabletable.h b/LEGO1/mxvariabletable.h index a82b25c4..13c70658 100644 --- a/LEGO1/mxvariabletable.h +++ b/LEGO1/mxvariabletable.h @@ -3,6 +3,8 @@ class MxVariable; +// VTABLE 0x100dc1c8 +// SIZE 0x28 class MxVariableTable { public: diff --git a/LEGO1/mxvideomanager.h b/LEGO1/mxvideomanager.h index e8d9798e..d8e0c7bd 100644 --- a/LEGO1/mxvideomanager.h +++ b/LEGO1/mxvideomanager.h @@ -4,6 +4,8 @@ #include "mxunknown100dc6b0.h" #include "mxvideoparam.h" +// VTABLE 0x100dc810 +// SIZE 0x64 class MxVideoManager : public MxUnknown100dc6b0 { public: diff --git a/LEGO1/mxvideopresenter.cpp b/LEGO1/mxvideopresenter.cpp index 1c090425..894b1e9c 100644 --- a/LEGO1/mxvideopresenter.cpp +++ b/LEGO1/mxvideopresenter.cpp @@ -1,51 +1 @@ #include "mxvideopresenter.h" - -// OFFSET: LEGO1 0x100b31d0 STUB -void MxVideoPresenter::EndAction() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b2f60 STUB -void MxVideoPresenter::VTable0x18() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b2fa0 STUB -void MxVideoPresenter::VTable0x1c() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b2fe0 STUB -void MxVideoPresenter::VTable0x20() -{ - // TODO -} - -// OFFSET: LEGO1 0x1000bea0 STUB -void MxVideoPresenter::VTable0x24() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b3130 STUB -void MxVideoPresenter::VTable0x28() -{ - // TODO -} - -// OFFSET: LEGO1 0x100b31a0 STUB -undefined4 MxVideoPresenter::VTable0x34() -{ - // TODO - - return undefined4(); -} - -// OFFSET: LEGO1 0x1000c7a0 STUB -void MxVideoPresenter::InitVirtual() -{ - // TODO -} diff --git a/LEGO1/mxvideopresenter.h b/LEGO1/mxvideopresenter.h index 00597252..eba5040c 100644 --- a/LEGO1/mxvideopresenter.h +++ b/LEGO1/mxvideopresenter.h @@ -7,27 +7,17 @@ class MxVideoPresenter : public MxMediaPresenter { public: // OFFSET: LEGO1 0x1000c820 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0760 return "MxVideoPresenter"; - }; + } // OFFSET: LEGO1 0x1000c830 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, MxVideoPresenter::ClassName()) || MxMediaPresenter::IsA(name); - }; - - virtual void EndAction(); // vtable+0x40, override MxPresenter - - virtual void VTable0x18(); // vtable+0x18 - virtual void VTable0x1c(); // vtable+0x1c - virtual void VTable0x20(); // vtable+0x20 - virtual void VTable0x24(); // vtable+0x24 - virtual void VTable0x28(); // vtable+0x28 - virtual undefined4 VTable0x34(); // vtable+0x34 - virtual void InitVirtual(); // vtable+0x38 + } }; #endif // MXVIDEOPRESENTER_H diff --git a/LEGO1/mxwavepresenter.cpp b/LEGO1/mxwavepresenter.cpp index c4ed7625..bfd69c5f 100644 --- a/LEGO1/mxwavepresenter.cpp +++ b/LEGO1/mxwavepresenter.cpp @@ -5,21 +5,3 @@ void MxWavePresenter::Init() { // TODO } - -// OFFSET: LEGO1 0x100b2300 STUB -void MxWavePresenter::VTable0x60(int param_1) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b2440 STUB -void MxWavePresenter::VTable0x64(int param_1) -{ - // TODO -} - -// OFFSET: LEGO1 0x100b2470 STUB -void MxWavePresenter::VTable0x68(int param_1) -{ - // TODO -} diff --git a/LEGO1/mxwavepresenter.h b/LEGO1/mxwavepresenter.h index f6237a25..c00d978d 100644 --- a/LEGO1/mxwavepresenter.h +++ b/LEGO1/mxwavepresenter.h @@ -3,18 +3,14 @@ #include "mxsoundpresenter.h" +// VTABLE 0x100d49a8 +// SIZE 0x6c class MxWavePresenter : public MxSoundPresenter { private: void Init(); public: - virtual void VTable0x60(int param_1); // vtable+0x60 - virtual void VTable0x64(int param_1); // vtable+0x64 - virtual void VTable0x68(int param_1); // vtable+0x68 - - // VTABLE 0x100d49a8 - // SIZE 0x6c }; #endif // MXWAVEPRESENTER_H diff --git a/LEGO1/pizza.h b/LEGO1/pizza.h index fb839a75..c47ef40e 100644 --- a/LEGO1/pizza.h +++ b/LEGO1/pizza.h @@ -3,14 +3,14 @@ #include "isleactor.h" +// VTABLE 0x100d7380 +// SIZE 0x9c class Pizza : public IsleActor { public: Pizza(); - ~Pizza(); - - // VTABLE 100d7380 - // SIZE 0x9c + virtual ~Pizza() override; + }; -#endif // PIZZA_H \ No newline at end of file +#endif // PIZZA_H diff --git a/LEGO1/pizzamissionstate.cpp b/LEGO1/pizzamissionstate.cpp index 8fdd182d..5dc85dcc 100644 --- a/LEGO1/pizzamissionstate.cpp +++ b/LEGO1/pizzamissionstate.cpp @@ -1,9 +1 @@ #include "pizzamissionstate.h" - -// OFFSET: LEGO1 0x100393c0 STUB -undefined4 PizzaMissionState::VTable0x1c(undefinedPtr param) -{ - // TODO - - return undefined4(); -} \ No newline at end of file diff --git a/LEGO1/pizzamissionstate.h b/LEGO1/pizzamissionstate.h index 94f5d073..575c4972 100644 --- a/LEGO1/pizzamissionstate.h +++ b/LEGO1/pizzamissionstate.h @@ -3,23 +3,23 @@ #include "legostate.h" +// VTABLE 0x100d7408 class PizzaMissionState : public LegoState { public: // OFFSET: LEGO1 0x10039290 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f00d4 return "PizzaMissionState"; - }; + } // OFFSET: LEGO1 0x100392a0 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, PizzaMissionState::ClassName()) || LegoState::IsA(name); - }; + } - virtual undefined4 VTable0x1c(undefinedPtr param); }; #endif // PIZZAMISSIONSTATE_H diff --git a/LEGO1/pizzeria.cpp b/LEGO1/pizzeria.cpp index 897d78be..3b6e8d41 100644 --- a/LEGO1/pizzeria.cpp +++ b/LEGO1/pizzeria.cpp @@ -1,15 +1 @@ #include "pizzeria.h" - -// OFFSET: LEGO1 0x100334b0 STUB -Pizzeria::Pizzeria() -{ - // TODO -} - -// OFFSET: LEGO1 0x10017a50 STUB -undefined4 Pizzeria::VTable0x68() -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/pizzeria.h b/LEGO1/pizzeria.h index 8cd19ac5..54f1a200 100644 --- a/LEGO1/pizzeria.h +++ b/LEGO1/pizzeria.h @@ -3,19 +3,11 @@ #include "isleactor.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d5520 +// SIZE 0x84 class Pizzeria : public IsleActor { public: - Pizzeria(); - - virtual undefined4 VTable0x68(); // vtable+0x68 - - // VTABLE 0x100d5520 - // SIZE 0x84 }; -#endif // PIZZERIASTATE_H \ No newline at end of file +#endif // PIZZERIASTATE_H diff --git a/LEGO1/pizzeriastate.cpp b/LEGO1/pizzeriastate.cpp index 286aa70e..85f8aef0 100644 --- a/LEGO1/pizzeriastate.cpp +++ b/LEGO1/pizzeriastate.cpp @@ -1,15 +1,7 @@ #include "pizzeriastate.h" -// OFFSET: LEGO1 0x10015aa0 STUB +// OFFSET: LEGO1 0x10017af0 STUB PizzeriaState::PizzeriaState() { // TODO } - -// OFFSET: LEGO1 0x10017da0 STUB -undefined4 PizzeriaState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/pizzeriastate.h b/LEGO1/pizzeriastate.h index 46bc3bb5..70b1f127 100644 --- a/LEGO1/pizzeriastate.h +++ b/LEGO1/pizzeriastate.h @@ -3,14 +3,13 @@ #include "legostate.h" +// VTABLE 0x100d5ee8 +// SIZE 0xb4 class PizzeriaState : public LegoState { public: PizzeriaState(); - - virtual undefined4 VTable0x1c(undefined4 param); - // SIZE 0xb4 }; #endif // PIZZERIASTATE_H diff --git a/LEGO1/police.h b/LEGO1/police.h index 5ad18cce..c4bea1cf 100644 --- a/LEGO1/police.h +++ b/LEGO1/police.h @@ -3,18 +3,17 @@ #include "legoworld.h" +// VTABLE 0x100d8a80 +// SIZE 0x110 +// Radio at 0xf8 class Police : public LegoWorld { public: Police(); - virtual ~Police(); // vtable+0x0 + virtual ~Police() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 + virtual long Notify(MxParam &p) override; // vtable+0x4 - - // VTABLE 0x100d8a80 - // SIZE 0x110 - // Radio at 0xf8 }; -#endif // POLICE_H \ No newline at end of file +#endif // POLICE_H diff --git a/LEGO1/policeentity.cpp b/LEGO1/policeentity.cpp index 01bf366e..b4492be5 100644 --- a/LEGO1/policeentity.cpp +++ b/LEGO1/policeentity.cpp @@ -1,9 +1 @@ #include "policeentity.h" - -// OFFSET: LEGO1 0x10015310 STUB -undefined4 PoliceEntity::VTable0x50() -{ - // TODO - - return undefined4(); -} \ No newline at end of file diff --git a/LEGO1/policeentity.h b/LEGO1/policeentity.h index 2da31e6c..a23cced4 100644 --- a/LEGO1/policeentity.h +++ b/LEGO1/policeentity.h @@ -3,16 +3,11 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d4ab0 +// SIZE 0x68 class PoliceEntity : public BuildingEntity { - virtual undefined4 VTable0x50(); // vtable+0x50 - // VTABLE 0x100d4ab0 - // SIZE 0x68 }; #endif // POLICEENTITY_H diff --git a/LEGO1/policestate.cpp b/LEGO1/policestate.cpp index 5295ecba..e0995f35 100644 --- a/LEGO1/policestate.cpp +++ b/LEGO1/policestate.cpp @@ -5,11 +5,3 @@ PoliceState::PoliceState() { // TODO } - -// OFFSET: LEGO1 0x1005e990 STUB -undefined4 PoliceState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/policestate.h b/LEGO1/policestate.h index f6c82e6e..e43b5c5a 100644 --- a/LEGO1/policestate.h +++ b/LEGO1/policestate.h @@ -3,28 +3,25 @@ #include "legostate.h" +// VTABLE 0x100d8af0 +// SIZE 0x10 class PoliceState : public LegoState { public: PoliceState(); // OFFSET: LEGO1 0x1005e860 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0444 return "PoliceState"; - }; + } // OFFSET: LEGO1 0x1005e870 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, PoliceState::ClassName()) || LegoState::IsA(name); - }; - - virtual undefined4 VTable0x1c(undefined4 param); - - // VTABLE 0x100d8af0 - // SIZE 0x10 + } }; -#endif // POLICESTATE_H \ No newline at end of file +#endif // POLICESTATE_H diff --git a/LEGO1/racecar.h b/LEGO1/racecar.h index 9761307d..f8bd6ccf 100644 --- a/LEGO1/racecar.h +++ b/LEGO1/racecar.h @@ -3,14 +3,13 @@ #include "islepathactor.h" +// VTABLE 0x100d6918 +// SIZE 0x164 class RaceCar : public IslePathActor { public: RaceCar(); - virtual ~RaceCar(); // vtable+0x0 - - // VTABLE 0x100d6918 - // SIZE 0x164 + virtual ~RaceCar() override; // vtable+0x0 }; #endif // RACECAR_H diff --git a/LEGO1/racestandsentity.cpp b/LEGO1/racestandsentity.cpp index b4adaac1..13e65bb4 100644 --- a/LEGO1/racestandsentity.cpp +++ b/LEGO1/racestandsentity.cpp @@ -1,9 +1 @@ #include "racestandsentity.h" - -// OFFSET: LEGO1 0x10015450 STUB -undefined4 RaceStandsEntity::VTable0x50() -{ - // TODO - - return undefined4(); -} \ No newline at end of file diff --git a/LEGO1/racestandsentity.h b/LEGO1/racestandsentity.h index cbe08f5a..cbf0946c 100644 --- a/LEGO1/racestandsentity.h +++ b/LEGO1/racestandsentity.h @@ -3,17 +3,10 @@ #include "buildingentity.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d48a8 +// SIZE 0x68 class RaceStandsEntity : public BuildingEntity { - // NOTE(Cydra): Starts transition - undefined4 VTable0x50(); // vtable+0x50 - - // VTABLE 0x100d48a8 - // SIZE 0x68 }; -#endif // RACESTANDSENTITY_H \ No newline at end of file +#endif // RACESTANDSENTITY_H diff --git a/LEGO1/racestandsentity2.h b/LEGO1/racestandsentity2.h deleted file mode 100644 index 5df09d85..00000000 --- a/LEGO1/racestandsentity2.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef RACESTANDS2ENTITY_H -#define RACESTANDS2ENTITY_H - -#include "buildingentity.h" - -class RaceStandsEntity2 : public BuildingEntity -{ - // SIZE 0x68 -}; - -#endif // RACESTANDS2ENTITY_H \ No newline at end of file diff --git a/LEGO1/racestate.cpp b/LEGO1/racestate.cpp index 081c36b9..4eeb21b7 100644 --- a/LEGO1/racestate.cpp +++ b/LEGO1/racestate.cpp @@ -5,11 +5,3 @@ RaceState::RaceState() { // TODO } - -// OFFSET: LEGO1 0x10016140 STUB -undefined4 RaceState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/racestate.h b/LEGO1/racestate.h index 431f4962..b9415051 100644 --- a/LEGO1/racestate.h +++ b/LEGO1/racestate.h @@ -3,25 +3,26 @@ #include "legostate.h" +// VTABLE 0x100d5e30 +// SIZE probably 0x2c class RaceState : public LegoState { public: RaceState(); // OFFSET: LEGO1 0x10016010 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f07d0 return "RaceState"; - }; + } // OFFSET: LEGO1 0x10016020 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, RaceState::ClassName()) || LegoState::IsA(name); - }; + } - virtual undefined4 VTable0x1c(undefined4 param); }; #endif // RACESTATE_H diff --git a/LEGO1/radio.h b/LEGO1/radio.h index 4011bc9d..83b3a445 100644 --- a/LEGO1/radio.h +++ b/LEGO1/radio.h @@ -3,12 +3,12 @@ #include "mxcore.h" +// VTABLE 0x100d6d10 class Radio : public MxCore { public: - virtual ~Radio(); + virtual ~Radio() override; - // VTABLE 0x100d6d10 }; -#endif // RADIO_H \ No newline at end of file +#endif // RADIO_H diff --git a/LEGO1/radiostate.cpp b/LEGO1/radiostate.cpp index c429d2c8..e6ce8782 100644 --- a/LEGO1/radiostate.cpp +++ b/LEGO1/radiostate.cpp @@ -5,9 +5,3 @@ RadioState::RadioState() { // TODO } - -// OFFSET: LEGO1 0x1002cf50 -MxBool RadioState::VTable0x14() -{ - return FALSE; -} diff --git a/LEGO1/radiostate.h b/LEGO1/radiostate.h index accad489..99c1c925 100644 --- a/LEGO1/radiostate.h +++ b/LEGO1/radiostate.h @@ -3,28 +3,26 @@ #include "legostate.h" +// VTABLE 0x100d6d28 +// SIZE 0x30 class RadioState : public LegoState { public: RadioState(); // OFFSET: LEGO1 0x1002cf60 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f04f8 return "RadioState"; - }; + } // OFFSET: LEGO1 0x1002cf70 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, RadioState::ClassName()) || LegoState::IsA(name); - }; + } - virtual MxBool VTable0x14(); // vtable+0x14 - - // VTABLE 0x100d6d28 - // SIZE 0x30 }; #endif // RADIOSTATE_H diff --git a/LEGO1/registrationbook.cpp b/LEGO1/registrationbook.cpp index d291be47..5668d31c 100644 --- a/LEGO1/registrationbook.cpp +++ b/LEGO1/registrationbook.cpp @@ -19,9 +19,3 @@ long RegistrationBook::Notify(MxParam &p) return 0; } - -// OFFSET: LEGO1 0x10078180 STUB -void RegistrationBook::VTable0x68(char param_1) -{ - // TODO -} diff --git a/LEGO1/registrationbook.h b/LEGO1/registrationbook.h index 37a3bc34..4dba2173 100644 --- a/LEGO1/registrationbook.h +++ b/LEGO1/registrationbook.h @@ -3,16 +3,16 @@ #include "legoworld.h" +// VTABLE 0x100d9928 +// SIZE 0x2d0 class RegistrationBook : public LegoWorld { public: RegistrationBook(); - virtual ~RegistrationBook(); // vtable+0x0 + virtual ~RegistrationBook() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 - virtual void VTable0x68(char param_1); // vtable+0x68 + virtual long Notify(MxParam &p) override; // vtable+0x4 - // VTABLE 0x100d9928 }; #endif // REGISTRATIONBOOK_H diff --git a/LEGO1/score.h b/LEGO1/score.h index abf7c5a6..d2a7a7f6 100644 --- a/LEGO1/score.h +++ b/LEGO1/score.h @@ -3,15 +3,16 @@ #include "legoworld.h" +// VTABLE 0x100d4018 +// SIZE 0x104 class Score : public LegoWorld { public: Score(); - virtual ~Score(); // vtable+0x0 + virtual ~Score() override; // vtable+0x0 - virtual long Notify(MxParam &p); // vtable+0x4 + virtual long Notify(MxParam &p) override; // vtable+0x4 - // SIZE 0x104 }; #endif // SCORE_H diff --git a/LEGO1/scorestate.cpp b/LEGO1/scorestate.cpp index cd4b3451..826ab482 100644 --- a/LEGO1/scorestate.cpp +++ b/LEGO1/scorestate.cpp @@ -1,15 +1 @@ #include "scorestate.h" - -// OFFSET: LEGO1 0x1000de20 -MxBool ScoreState::VTable0x14() -{ - return FALSE; -} - -// OFFSET: LEGO1 0x1000de30 STUB -MxBool ScoreState::VTable0x18() -{ - // TODO - - return MxBool(); -} diff --git a/LEGO1/scorestate.h b/LEGO1/scorestate.h index 6857f8fa..4f5a8dc2 100644 --- a/LEGO1/scorestate.h +++ b/LEGO1/scorestate.h @@ -3,26 +3,24 @@ #include "legostate.h" +// VTABLE 0x100d53f8 +// SIZE 0xc class ScoreState : public LegoState { public: // OFFSET: LEGO1 0x1000de40 - inline virtual const char *ClassName() const // vtable+0x0c + inline virtual const char *ClassName() const override // vtable+0x0c { // 0x100f0084 return "ScoreState"; }; // OFFSET: LEGO1 0x1000de50 - inline virtual MxBool IsA(const char *name) const // vtable+0x10 + inline virtual MxBool IsA(const char *name) const override // vtable+0x10 { return !strcmp(name, ScoreState::ClassName()) || LegoState::IsA(name); }; - virtual MxBool VTable0x14(); - virtual MxBool VTable0x18(); - - // SIZE 0xc }; #endif // SCORESTATE_H diff --git a/LEGO1/skateboard.cpp b/LEGO1/skateboard.cpp index e70d48f8..42466206 100644 --- a/LEGO1/skateboard.cpp +++ b/LEGO1/skateboard.cpp @@ -5,11 +5,3 @@ SkateBoard::SkateBoard() { // TODO } - -// OFFSET: LEGO1 0x100100e0 STUB -undefined4 SkateBoard::VTable0xcc() -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/skateboard.h b/LEGO1/skateboard.h index 729bbb37..f290dc7b 100644 --- a/LEGO1/skateboard.h +++ b/LEGO1/skateboard.h @@ -3,18 +3,13 @@ #include "islepathactor.h" -#ifndef undefined4 -#define undefined4 int -#endif - +// VTABLE 0x100d55f0 +// SIZE 0x168 class SkateBoard : public IslePathActor { public: SkateBoard(); - virtual undefined4 VTable0xcc(); // vtable+0xcc - - // VTABLE 0x100d55f0 }; #endif // SKATEBOARD_H diff --git a/LEGO1/towtrack.cpp b/LEGO1/towtrack.cpp index 272d3e35..90d3d018 100644 --- a/LEGO1/towtrack.cpp +++ b/LEGO1/towtrack.cpp @@ -5,9 +5,3 @@ TowTrack::TowTrack() { // TODO } - -// OFFSET: LEGO1 0x1004d8f0 STUB -void TowTrack::VTable0xe4() -{ - // TODO -} diff --git a/LEGO1/towtrack.h b/LEGO1/towtrack.h index c29ebbc2..95e6885a 100644 --- a/LEGO1/towtrack.h +++ b/LEGO1/towtrack.h @@ -3,15 +3,13 @@ #include "islepathactor.h" +// VTABLE 0x100d7ee0 +// SIZE 0x180 class TowTrack : public IslePathActor { public: TowTrack(); - virtual void VTable0xe4(); // vtable+0xe4 - - // VTABLE 0x100d7ee0 - // SIZE 0x180 }; diff --git a/LEGO1/towtrackmissionstate.cpp b/LEGO1/towtrackmissionstate.cpp index ee2ee7a1..b85c40cc 100644 --- a/LEGO1/towtrackmissionstate.cpp +++ b/LEGO1/towtrackmissionstate.cpp @@ -5,11 +5,3 @@ TowTrackMissionState::TowTrackMissionState() { // TODO } - -// OFFSET: LEGO1 0x1004dde0 STUB -undefined4 TowTrackMissionState::VTable0x1c(undefined4 param) -{ - // TODO - - return undefined4(); -} diff --git a/LEGO1/towtrackmissionstate.h b/LEGO1/towtrackmissionstate.h index 403318e8..a335584f 100644 --- a/LEGO1/towtrackmissionstate.h +++ b/LEGO1/towtrackmissionstate.h @@ -3,6 +3,8 @@ #include "legostate.h" +// VTABLE 0x100d7fd8 +// SIZE 0x28 class TowTrackMissionState : LegoState { public: @@ -21,10 +23,6 @@ class TowTrackMissionState : LegoState return !strcmp(name, TowTrackMissionState::ClassName()) || LegoState::IsA(name); }; - virtual undefined4 VTable0x1c(undefined4 param); // vtable+0x1c - - // VTABLE 0x100d7fd8 - // SIZE 0x28 }; #endif // TOWTRACKMISSIONSTATE_H