Fixed code and decided on a way to handle virtual table stubs

This commit is contained in:
Cydra 2023-06-23 17:09:04 +02:00
parent 7950a29e8b
commit fc239c4a08
84 changed files with 748 additions and 147 deletions

View File

@ -638,3 +638,23 @@ void Isle::Tick(BOOL sleepIfNotNextFrame)
Sleep(0); Sleep(0);
} }
// OFFSET: LEGO1 0x10030fc0
void Isle::VTable0x50()
{
// TODO
}
// OFFSET: LEGO1 0x10033180
undefined4 Isle::VTable0x64()
{
// TODO
return undefined4();
}
// OFFSET: LEGO1 0x1003305
void Isle::VTable0x6c(int *param)
{
// TODO
}

View File

@ -10,6 +10,7 @@ class Act2Brick : public LegoPathActor
virtual ~Act2Brick(); // vtable+0x0 virtual ~Act2Brick(); // vtable+0x0
virtual long Tickle(); // vtable+08 virtual long Tickle(); // vtable+08
// VTABLE 0x100d9b60 // VTABLE 0x100d9b60
// SIZE 0x194 // SIZE 0x194
}; };

4
LEGO1/act3shark.cpp Normal file
View File

@ -0,0 +1,4 @@
#include "act3shark.h"
// 0x100f03a0
static char* g_act3SharkString = "Act3Shark";

View File

@ -1,12 +1,11 @@
#ifndef ACT3SHARK_H #ifndef ACT3SHARK_H
#define ACT3SHARK_H #define ACT3SHARK_H
class Act3Shark #include "legoanimactor.h"
class Act3Shark : public LegoAnimActor
{ {
// VTABLE 0x100d7920 // VTABLE 0x100d7920
}; };
// OFFSET: LEGO1 0x100f03a0
static char* g_act3SharkString = "Act3Shark";
#endif // ACT3SHARK_H #endif // ACT3SHARK_H

View File

@ -0,0 +1,9 @@
#include "beachhouseentity.h"
// OFFSET: LEGO1 0x100153b
undefined4 BeachHouseEntity::VTable0x50()
{
// TODO
return 0;
}

View File

@ -3,9 +3,13 @@
#include "buildingentity.h" #include "buildingentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class BeachHouseEntity : public BuildingEntity class BeachHouseEntity : public BuildingEntity
{ {
virtual int FUN_100153b(); // Return is undefined 4-byte value virtual undefined4 VTable0x50(); // vtable+0x50
// VTABLE 0x100d4a18 // VTABLE 0x100d4a18
// SIZE 0x68 // SIZE 0x68

View File

@ -5,3 +5,23 @@ Bike::Bike()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x100769a0
undefined4 Bike::VTable0xcc()
{
// TODO
return 0;
}
// OFFSET: LEGO1 0x10076aa0
undefined4 Bike::VTable0xd4(undefined4 param)
{
return undefined4();
}
// OFFSET: LEGO1 0x10076920
void Bike::VTable0xe4()
{
// TODO
}

View File

@ -3,14 +3,18 @@
#include "islepathactor.h" #include "islepathactor.h"
#ifndef undefined4
#define undefined4 int
#endif
class Bike : public IslePathActor class Bike : public IslePathActor
{ {
public: public:
Bike(); Bike();
virtual int __fastcall FUN_100769a0(int*); // vtable+0xcc , return is undefined 4-byte value virtual undefined4 VTable0xcc(); // vtable+0xcc
virtual int FUN_10076aa0(int param_1); // vtable+0xd4 , return is undefined 4-byte value virtual undefined4 VTable0xd4(undefined4 param); // vtable+0xd4
virtual void __fastcall FUN_10076920(int* param_1); // vtable+0xe4 virtual void VTable0xe4(); // vtable+0xe4
// VTABLE 0x100d9808 // VTABLE 0x100d9808
// SIZE 0x74 // SIZE 0x74

View File

@ -5,8 +5,9 @@
class BumpBouy class BumpBouy
{ {
virtual const char* GetClassName() const; public:
virtual MxBool IsClass(const char *name) const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; // vtable+0x10
}; };
#endif // BUMPBOUY_H #endif // BUMPBOUY_H

View File

@ -28,3 +28,17 @@ MxBool ElevatorBottom::IsClass(const char *name) const
return MxBool(); return MxBool();
} }
// OFFSET: LEGO1 0x10017f10
undefined4 ElevatorBottom::VTable0x5c()
{
// TODO
return 1;
}
// OFFSET: LEGO1 0x100182c0
void ElevatorBottom::VTable0x68(undefined1 param_1)
{
// TODO
}

View File

@ -3,17 +3,27 @@
#include "legoworld.h" #include "legoworld.h"
#ifndef undefined4
#define undefined4 int
#endif
#ifndef undefined1
#define undefined1 char
#endif
class ElevatorBottom : public LegoWorld class ElevatorBottom : public LegoWorld
{ {
public: public:
ElevatorBottom(); ElevatorBottom();
virtual ~ElevatorBottom(); virtual ~ElevatorBottom(); // vtable+0x0
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; virtual MxBool IsClass(const char *name) const; // vtable+0x10
virtual int FUN_10017f10() { return 1; } // Return is undefined virtual undefined4 VTable0x5c(); // vtable+0x5c
virtual void FUN_100182c0(char param_1); virtual void VTable0x68(undefined1 param_1); // vtable+0x68
// VTABLE 0x100d5f20
}; };
#endif // ELEVATORBOTTOM_H #endif // ELEVATORBOTTOM_H

View File

@ -5,3 +5,11 @@ GasStation::GasStation()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10005e70
undefined GasStation::VTable0x64(undefined4 param)
{
// TODO
return undefined();
}

View File

@ -3,13 +3,22 @@
#include "legoworld.h" #include "legoworld.h"
#ifndef undefined
#define undefined int
#endif
#ifndef undefined4
#define undefined4 int
#endif
class GasStation : public LegoWorld class GasStation : public LegoWorld
{ {
public: public:
GasStation(); GasStation();
int FUN_10005e70(int param_1); // Return is undefined 4-byte value undefined VTable0x64(undefined4 param); // vtable+0x64
// VTABLE 0x100d4650
// SIZE 0x128 // SIZE 0x128
// Radio variable at 0x46, in constructor // Radio variable at 0x46, in constructor
}; };

View File

@ -0,0 +1,9 @@
#include "gasstationentity.h"
// OFFSET: LEGO1 0x100151d0
undefined4 GasStationEntity::VTable0x50()
{
// TODO
return 0;
}

View File

@ -3,10 +3,15 @@
#include "buildingentity.h" #include "buildingentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class GasStationEntity : public BuildingEntity class GasStationEntity : public BuildingEntity
{ {
virtual int FUN_100151d0(); // Return unknown 4-byte value virtual undefined4 VTable0x50(); // vtable+0x50
// VTABLE 0x100d5258
// SIZE 0x68 // SIZE 0x68
}; };

View File

@ -1,6 +1,6 @@
#include "helicopter.h" #include "helicopter.h"
// OFFSET: LEGO1 0x100f0130 // 0x100f0130
static char* g_helicopterClassName = "Helicopter"; static char* g_helicopterClassName = "Helicopter";
// OFFSET: LEGO1 0x10001e60 // OFFSET: LEGO1 0x10001e60
@ -28,3 +28,15 @@ MxBool Helicopter::IsClass(const char *name) const
return MxBool(); return MxBool();
} }
// OFFSET: LEGO1 0x10003ee0
void Helicopter::VTable0x70(float param_1)
{
// TODO
}
// OFFSET:LEGO1 0x10003360
void Helicopter::VTable0xe4()
{
// TODO
}

View File

@ -9,11 +9,11 @@ class Helicopter : public IslePathActor
Helicopter(); Helicopter();
virtual ~Helicopter(); // vtable+0x0 virtual ~Helicopter(); // vtable+0x0
virtual const char* GetClassName() const; // vtable+0x virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; // vtable+0x virtual MxBool IsClass(const char *name) const; // vtable+0x10
virtual void FUN_10003ee0(float param_1); // 0x70 virtual void VTable0x70(float param_1); // vtable+0x70
virtual void __fastcall FUN_10003360(int* param); // vtable+0xe4 virtual void VTable0xe4(); // vtable+0xe4
// VTABLE 0x100d40f8 // VTABLE 0x100d40f8
}; };

View File

@ -19,3 +19,9 @@ long Hospital::Notify(MxParam &p)
return 0; return 0;
} }
// OFFSET: LEGO1 0x10076220
void Hospital::VTable0x68(char param_1)
{
// TODO
}

View File

@ -10,7 +10,7 @@ class Hospital : public LegoWorld
virtual ~Hospital(); // vtable+0x0 virtual ~Hospital(); // vtable+0x0
virtual long Notify(MxParam &p); // vtable+0x04 virtual long Notify(MxParam &p); // vtable+0x04
virtual void FUN_10076220(char param_1); // vtable+0x68 virtual void VTable0x68(char param_1); // vtable+0x68
// SIZE 0x300 // SIZE 0x300
}; };

9
LEGO1/hospitalentity.cpp Normal file
View File

@ -0,0 +1,9 @@
#include "hospitalentity.h"
// OFFSET: LEGO1 0x10015270
undefined4 HospitalEntity::VTable0x50()
{
// TODO
return undefined4();
}

View File

@ -3,10 +3,15 @@
#include "buildingentity.h" #include "buildingentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class HospitalEntity : public BuildingEntity class HospitalEntity : public BuildingEntity
{ {
virtual int FUN_10015270(); // Return is unknown 4-byte value virtual undefined4 VTable0x50(); // vtable+0x50
// VTABLE 0x100d5068
// SIZE 0x68 // SIZE 0x68
}; };

View File

@ -8,6 +8,7 @@ class InfoCenterDoor : public LegoWorld
public: public:
InfoCenterDoor(); InfoCenterDoor();
// VTABLE 0x100d72d8
// SIZE 0xfc // SIZE 0xfc
}; };

View File

@ -0,0 +1,9 @@
#include "infocenterentity.h"
// OFFSET: LEGO1 0x100150c0
undefined4 InfoCenterEntity::VTable0x50()
{
// TODO
return undefined4();
}

View File

@ -3,9 +3,13 @@
#include "legoentity.h" #include "legoentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class InfoCenterEntity : public LegoEntity class InfoCenterEntity : public LegoEntity
{ {
virtual int FUN_100150c0(); // Return is unknown 4-byte value virtual undefined4 VTable0x50(); // vtable+0x50
}; };
#endif // INFOCENTERENTITY_H #endif // INFOCENTERENTITY_H

View File

@ -3,24 +3,20 @@
#include "legoworld.h" #include "legoworld.h"
#include "legoomni.h" #ifndef undefined4
#define undefined4 int
#endif
class Isle : public LegoWorld class Isle : public LegoWorld
{ {
public: public:
Isle(); Isle();
// OFFSET: LEGO1 0x10015790 virtual void VTable0x50(); // vtable+0x50
static Isle* GetIsle() virtual undefined4 VTable0x64(); // vtable+0x64
{ virtual void VTable0x6c(int* param); // vtable+0x6c
LegoOmni* legoOmni = LegoOmni::GetInstance();
return legoOmni->isle;
}
virtual void __fastcall FUN_10030fc0(int param_1);
virtual int __fastcall FUN_10033180(int param_1); // Return is undefined 4-byte value
virtual void FUN_1003305(int* param_1);
// VTABLE 0x100d6fb8
// SIZE 0x140 // SIZE 0x140
// Radio at 0x12c // Radio at 0x12c
}; };

18
LEGO1/isleactor.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "isleactor.h"
// 0x100f07dc
static char* g_isleActorClassName = "IsleActor";
// OFFSET: LEGO1 0x1000e660
const char *IsleActor::GetClassName() const
{
return g_isleActorClassName;
}
// OFFSET: LEGO1 0x1000e670
MxBool IsleActor::IsClass(const char *name) const
{
// TODO
return MxBool();
}

View File

@ -5,8 +5,10 @@
class IsleActor : public LegoEntity class IsleActor : public LegoEntity
{ {
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; virtual MxBool IsClass(const char *name) const; // vtable+0x10
// VTABLE 0x100d5178
}; };
#endif // ISLEACTOR_H #endif // ISLEACTOR_H

View File

@ -5,3 +5,9 @@ IslePathActor::IslePathActor()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x1001b5b0
void IslePathActor::VTable0xec(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, void *, char)
{
// TODO
}

View File

@ -3,14 +3,16 @@
#include "legopathactor.h" #include "legopathactor.h"
#define undefined char #ifndef undefined
#define undefined int
#endif
class IslePathActor : public LegoPathActor class IslePathActor : public LegoPathActor
{ {
public: public:
IslePathActor(); IslePathActor();
virtual void FUN_1001b5b0(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, void*, char); // vtable+0xec virtual void VTable0xec(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, void*, char); // vtable+0xec
// VTABLE 0x100d4398 // VTABLE 0x100d4398
// SIZE >= 0x230 // SIZE >= 0x230

View File

@ -5,3 +5,11 @@ JetskiRace::JetskiRace()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x100166a0
undefined4 JetskiRace::VTable0x70(int param_1)
{
// TODO
return undefined4();
}

View File

@ -3,12 +3,18 @@
#include "legorace.h" #include "legorace.h"
#ifndef undefined4
#define undefined4 int
#endif
class JetskiRace : public LegoRace class JetskiRace : public LegoRace
{ {
public: public:
JetskiRace(); JetskiRace();
int FUN_100166a0(int param_1); // Return is undefined 4-byte value undefined4 VTable0x70(int param_1); // vtable+0x70
// VTABLE 0x100d4fe8
}; };
#endif // JETSKIRACE_H #endif // JETSKIRACE_H

View File

@ -5,3 +5,9 @@ JukeBoxEntity::JukeBoxEntity()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10085dd0
JukeBoxEntity::~JukeBoxEntity()
{
// TODO
}

View File

@ -7,6 +7,7 @@ class JukeBoxEntity : public LegoEntity
{ {
public: public:
JukeBoxEntity(); JukeBoxEntity();
virtual ~JukeBoxEntity(); // vtable+0x0
// VTABLE 0x100da8a0 // VTABLE 0x100da8a0
}; };

View File

@ -0,0 +1,7 @@
#include "legoactioncontrolpresenter.h"
// OFFSET: LEGO1 0x10043e20
void LegoActionControlPresenter::VTable0x5c(char param)
{
// TODO
}

View File

@ -5,9 +5,10 @@
class LegoActionControlPresenter : public MxMediaPresenter class LegoActionControlPresenter : public MxMediaPresenter
{ {
void FUN_10043e20(char param_1); public:
void FUN_100b54f0(char param_1); void VTable0x5c(char param); // vtable+0x5c
// VTABLE 0x100d5118
// SIZE 0x68 // SIZE 0x68
}; };

View File

@ -1,6 +1,6 @@
#include "legoanimactor.h" #include "legoanimactor.h"
// OFFSET: LEGO1 0x100f057c // 0x100f057c
static char* g_legoAnimActorClassName = "LegoAnimActor"; static char* g_legoAnimActorClassName = "LegoAnimActor";
// OFFSET: LEGO1 0x1000fb90 // OFFSET: LEGO1 0x1000fb90
@ -18,5 +18,7 @@ const char *LegoAnimActor::GetClassName() const
// OFFSET: LEGO1 0x1000fbb0 // OFFSET: LEGO1 0x1000fbb0
MxBool LegoAnimActor::IsClass(const char *name) const MxBool LegoAnimActor::IsClass(const char *name) const
{ {
// TODO
return MxBool(); return MxBool();
} }

View File

@ -5,6 +5,12 @@ LegoBuildingManager::LegoBuildingManager()
{ {
} }
// OFFSET: LEGO1 0x10030150
void LegoBuildingManager::UnknownFunction(int param_1, int param_2, char param_3, LegoBuildingManager *param_4)
{
// TODO
}
// OFFSET: LEGO1 0x1002f9d0 // OFFSET: LEGO1 0x1002f9d0
void LegoBuildingManager::Init() void LegoBuildingManager::Init()
{ {

View File

@ -8,14 +8,7 @@ class LegoBuildingManager
__declspec(dllexport) static void configureLegoBuildingManager(int param_1); __declspec(dllexport) static void configureLegoBuildingManager(int param_1);
// OFFSET: LEGO1 0x100157f0 void UnknownFunction(int param_1, int param_2, char param_3, LegoBuildingManager* param_4);
LegoBuildingManager* GetInstance()
{
LegoOmni legoOmni = GetInstance();
return logoOmni->m_legoBuildingManager;
}
void FUN_10030150(int param_1, int param_2, char param_3, LegoBuildingManager* param_4);
private: private:
void Init(); void Init();

25
LEGO1/legocachesound.cpp Normal file
View File

@ -0,0 +1,25 @@
#include "legocachesound.h"
// OFFSET: LEGO1 0x100064d0
LegoCacheSound::LegoCacheSound()
{
// TODO
}
// OFFSET: LEGO1 0x10006630
LegoCacheSound::~LegoCacheSound()
{
// TODO
}
// OFFSET: LEGO1 0x10006920
void LegoCacheSound::VTable0x18()
{
// TODO
}
// OFFSET: LEGO1 0x100066d0
void LegoCacheSound::Init()
{
// TODO
}

View File

@ -6,16 +6,12 @@
class LegoCacheSound : public MxCore class LegoCacheSound : public MxCore
{ {
public: public:
// OFFSET: LEGO1 0x100064d0
LegoCacheSound(); LegoCacheSound();
virtual ~LegoCacheSound(); // vtable+0x0
// OFFSET: LEGO1 0x10006630 virtual void VTable0x18(); // vtable+0x18
~LegoCacheSound();
void FUN_10006920(int param_1);
private: private:
// OFFSET: LEGO1 0x100066d0
void Init(); void Init();
// VTABLE 0x100d4718 // VTABLE 0x100d4718

View File

@ -5,3 +5,9 @@ LegoCameraController::~LegoCameraController()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10011ff0
void LegoCameraController::VTable0x44()
{
// TODO
}

View File

@ -1,12 +1,14 @@
#ifndef LEGOCAMERACONTROLLER_H #ifndef LEGOCAMERACONTROLLER_H
#define LEGOCAMERACONTROLLER_H #define LEGOCAMERACONTROLLER_H
class LegoCameraController #include "mxcore.h"
class LegoCameraController : public MxCore
{ {
public: public:
virtual ~LegoCameraController(); virtual ~LegoCameraController(); // vtable+0x0
virtual void FUN_10011ff0(void* param); virtual void VTable0x44(); // vtable+0x44
// VTABLE 0x100d57b0 // VTABLE 0x100d57b0
}; };

View File

@ -5,3 +5,41 @@ LegoCarBuild::LegoCarBuild()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10025e70
undefined4 LegoCarBuild::VTable0x64()
{
// TODO
return undefined4();
}
// OFFSET: LEGO1 0x100256c0
void LegoCarBuild::VTable0x68(char param_1)
{
// TODO
}
// OFFSET: LEGO1 0x10022fc0
void LegoCarBuild::VTable0x6c()
{
// TODO
}
// OFFSET: LEGO1 0x10023500
void LegoCarBuild::VTable0x74(float *param_1, float *param_2)
{
// TODO
}
// OFFSET: LEGO1 0x10023570
void LegoCarBuild::VTable0x78(float *param_1, float *param_2)
{
// TODO
}
// OFFSET: LEGO1 0x10023620
void LegoCarBuild::VTable0x7c(float *param_1, float *param_2)
{
// TODO
}

View File

@ -3,17 +3,21 @@
#include "legoworld.h" #include "legoworld.h"
#ifndef undefined4
#define undefined4 int
#endif
class LegoCarBuild : public LegoWorld class LegoCarBuild : public LegoWorld
{ {
public: public:
LegoCarBuild(); LegoCarBuild();
virtual void FUN_10025e70(int param_1); virtual undefined4 VTable0x64(); // vtable+0x64
virtual void FUN_100256c0(char param_1); virtual void VTable0x68(char param_1); // vtable+0x68
virtual void __fastcall FUN_10022fc0(int* param_1); virtual void VTable0x6c(); // vtable+0x6c
virtual void FUN_10023500(float* param_1, float* param_2); virtual void VTable0x74(float* param_1, float* param_2); // vtable+0x74
virtual void FUN_10023570(float* param_1, float* param_2); virtual void VTable0x78(float* param_1, float* param_2); // vtable+0x78
virtual void FUN_10023620(float* param_1, float* param_2); virtual void VTable0x7c(float* param_1, float* param_2); // vtable+0x7c
}; };
#endif // LEGOCARBUILD_H #endif // LEGOCARBUILD_H

View File

@ -1,6 +1,6 @@
#include "legocontrolmanager.h" #include "legocontrolmanager.h"
// OFFSET: LEGO1 0x100f31b8 // 0x100f31b8
static char* g_legoControlManagerClassName = "LegoControlManager"; static char* g_legoControlManagerClassName = "LegoControlManager";
// OFFSET: LEGO1 0x10028d60 // OFFSET: LEGO1 0x10028d60

View File

@ -6,10 +6,12 @@
class LegoControlManager : public MxCore class LegoControlManager : public MxCore
{ {
public: public:
virtual ~LegoControlManager(); virtual ~LegoControlManager(); // vtable+0x0
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; virtual MxBool IsClass(const char *name) const; // vtable+0x10
// VTABLE 0x100d6a80
}; };
#endif // LEGOCONTROLMANAGER_H #endif // LEGOCONTROLMANAGER_H

View File

@ -1,6 +1,6 @@
#include "legoentity.h" #include "legoentity.h"
// OFFSET: LEG01 0x100f0064 // 0x100f0064
static char* g_legoEntityClassName = "LegoEntity"; static char* g_legoEntityClassName = "LegoEntity";
// OFFSET: LEGO1 0x100105f0 // OFFSET: LEGO1 0x100105f0
@ -22,3 +22,35 @@ MxBool LegoEntity::IsClass(const char *name) const
return MxBool(); return MxBool();
} }
// OFFSET: LEGO1 0x100107e0
undefined4 LegoEntity::VTable0x18(undefined4 param)
{
// TODO
return undefined4();
}
// OFFSET: LEGO1 0x10010810
void LegoEntity::VTable0x1c()
{
// TODO
}
// OFFSET: LEGO1 0x100108a0
void LegoEntity::VTable0x24(undefined4 param_1, undefined1 param_2, undefined1 param_3)
{
// TODO
}
// OFFSET: LEGO1 0x10010790
void LegoEntity::VTable0x28(undefined4 param_1, undefined4 param2)
{
// TODO
}
// OFFSET: LEGO1 0x10010650
void LegoEntity::VTable0x2c(undefined1 param)
{
// TODO
}

View File

@ -3,14 +3,29 @@
#include "mxentity.h" #include "mxentity.h"
#ifndef undefined4
#define undefined4 int
#endif
#ifndef undefined1
#define undefined1 char
#endif
class LegoEntity : public MxEntity class LegoEntity : public MxEntity
{ {
public: public:
LegoEntity(); LegoEntity();
__declspec(dllexport) virtual ~LegoEntity(); __declspec(dllexport) virtual ~LegoEntity(); // vtable+0x0
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; virtual MxBool IsClass(const char *name) const; // vtable+0x10
virtual undefined4 VTable0x18(undefined4 param); // vtable+0x18
virtual void VTable0x1c(); // 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
}; };
#endif // LEGOENTITY_H #endif // LEGOENTITY_H

View File

@ -1,6 +1,6 @@
#include "legojetski.h" #include "legojetski.h"
// OFFSET: LEGO1 0x100f053c // 0x100f053c
static char* g_legoJetskiClassName = "LegoJetski"; static char* g_legoJetskiClassName = "LegoJetski";
// OFFSET: LEGO1 0x10013e80 // OFFSET: LEGO1 0x10013e80

View File

@ -30,6 +30,24 @@ LegoVideoManager *VideoManager()
return LegoOmni::GetInstance()->GetVideoManager(); return LegoOmni::GetInstance()->GetVideoManager();
} }
// OFFSET: LEGO1 0x100157f0
LegoBuildingManager *BuildingManager()
{
return LegoOmni::GetInstance()->GetLegoBuildingManager();
}
// OFFSET: LEGO1 0x10015790
Isle *GetIsle()
{
return LegoOmni::GetInstance()->GetIsle();
}
// OFFSET: LEGO1 0x100157e0
LegoPlantManager *PlantManager()
{
return LegoOmni::GetInstance()->GetLegoPlantManager();
}
// OFFSET: LEGO1 0x1005b5f0 // OFFSET: LEGO1 0x1005b5f0
long LegoOmni::Notify(MxParam &p) long LegoOmni::Notify(MxParam &p)
{ {

View File

@ -15,6 +15,8 @@
#include "mxomni.h" #include "mxomni.h"
#include "mxtransitionmanager.h" #include "mxtransitionmanager.h"
#include "isle.h" #include "isle.h"
#include "legobuildingmanager.h"
#include "legoplantmanager.h"
class LegoSoundManager; class LegoSoundManager;
@ -48,6 +50,9 @@ class LegoOmni : public MxOmni
LegoVideoManager *GetVideoManager() { return (LegoVideoManager *) m_videoManager; } LegoVideoManager *GetVideoManager() { return (LegoVideoManager *) m_videoManager; }
LegoInputManager *GetInputManager() { return m_inputMgr; } LegoInputManager *GetInputManager() { return m_inputMgr; }
Isle *GetIsle() { return m_isle; }
LegoBuildingManager *GetLegoBuildingManager() { return m_buildingManager; }
LegoPlantManager *GetLegoPlantManager() { return m_plantManager; }
private: private:
int m_unk68; int m_unk68;
@ -56,9 +61,10 @@ class LegoOmni : public MxOmni
char m_unk74[0x10]; char m_unk74[0x10];
LegoNavController *m_navController; // 0x84 LegoNavController *m_navController; // 0x84
Isle* m_isle; // 0x88 Isle* m_isle; // 0x88
// LegoPlantManager* m_plantManager // 0x90 char m_unk8c[0x4];
// LegoBuildingManager* m_legoBuildingManager // 0x98 LegoPlantManager* m_plantManager; // 0x90
char m_unk88[0x10]; char m_unk94[0x4];
LegoBuildingManager* m_buildingManager; // 0x98
LegoGameState *m_gameState; // 0x9c LegoGameState *m_gameState; // 0x9c
char m_unka0[0x94]; char m_unka0[0x94];
MxBackgroundAudioManager *m_bkgAudioManager; // 0x134 MxBackgroundAudioManager *m_bkgAudioManager; // 0x134
@ -90,4 +96,8 @@ __declspec(dllexport) LegoVideoManager * VideoManager();
__declspec(dllexport) long Start(MxDSAction *a); __declspec(dllexport) long Start(MxDSAction *a);
LegoBuildingManager* BuildingManager();
Isle* GetIsle();
LegoPlantManager* PlantManager();
#endif // LEGOOMNI_H #endif // LEGOOMNI_H

View File

@ -1,6 +1,6 @@
#include "legophonemepresenter.h" #include "legophonemepresenter.h"
// OFFSET: LEGO1 0x100f064c // 0x100f064c
static char* g_legoPhonemePresenterClassName = "LegoPhonemePresenter"; static char* g_legoPhonemePresenterClassName = "LegoPhonemePresenter";
// OFFSET: LEGO1 0x1004e340 // OFFSET: LEGO1 0x1004e340
@ -14,3 +14,9 @@ const char *LegoPhonemePresenter::GetClassName() const
{ {
return g_legoPhonemePresenterClassName; return g_legoPhonemePresenterClassName;
} }
// OFFSET: LEGO1 0x1004e840
void LegoPhonemePresenter::VTable0x6c()
{
// TODO
}

View File

@ -6,11 +6,13 @@
class LegoPhonemePresenter : public MxFlcPresenter class LegoPhonemePresenter : public MxFlcPresenter
{ {
public: public:
virtual ~LegoPhonemePresenter(); virtual ~LegoPhonemePresenter(); // vtable+0x0
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual void FUN_1004e840(int param_1); virtual void VTable0x6c(); // vtable+0x6c
// VTABLE 0x100d8040
}; };
#endif // LEGOPHONEMEPRESENTER_H #endif // LEGOPHONEMEPRESENTER_H

View File

@ -1,6 +1,6 @@
#include "legoplantmanager.h" #include "legoplantmanager.h"
// OFFSET: LEGO1 0x100f318c // 0x100f318c
static char* g_LegoPlantManagerName = "LegoPlantManager"; static char* g_LegoPlantManagerName = "LegoPlantManager";
// OFFSET: LEGO1 0x10026220 // OFFSET: LEGO1 0x10026220
@ -21,6 +21,12 @@ const char *LegoPlantManager::GetClassName() const
return g_LegoPlantManagerName; return g_LegoPlantManagerName;
} }
// OFFSET: LEGO1 0x10026d70
void LegoPlantManager::UnknownFunction1(int param_1, int param_2)
{
// TODO
}
// OFFSET: LEGO1 0x10026330 // OFFSET: LEGO1 0x10026330
void LegoPlantManager::Init() void LegoPlantManager::Init()
{ {

View File

@ -7,21 +7,11 @@ class LegoPlantManager : public MxCore
{ {
public: public:
LegoPlantManager(); LegoPlantManager();
virtual ~LegoPlantManager(); virtual ~LegoPlantManager(); // vtable+0x0
// OFFSET: LEGO1 0x100157e0 virtual const char* GetClassName() const; // vtable+0xc
LegoPlantManager* GetInstance()
{
LegoOmni* legoOmni = LegoOmni::GetInstance();
return legoOmni->m_plantManager; void UnknownFunction1(int param_1, int param_2);
}
// Virtual Functions
virtual const char* GetClassName() const;
// Member Functions
void FUN_10026d70(int param_1, int param_2);
private: private:
void Init(); void Init();

View File

@ -5,3 +5,21 @@ LegoWorldPresenter::LegoWorldPresenter()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10066770
LegoWorldPresenter::~LegoWorldPresenter()
{
// TODO
}
// OFFSET: LEGO1 0x10066ac0
void LegoWorldPresenter::VTable0x1c()
{
// TODO
}
// OFFSET: LEGO1 0x10067a70
void LegoWorldPresenter::VTable0x60(undefined4 param)
{
// TODO
}

View File

@ -3,12 +3,21 @@
#include "legoentitypresenter.h" #include "legoentitypresenter.h"
#ifndef undefined4
#define undefined4 int
#endif
class LegoWorldPresenter : public LegoEntityPresenter class LegoWorldPresenter : public LegoEntityPresenter
{ {
public: public:
LegoWorldPresenter(); LegoWorldPresenter();
virtual ~LegoWorldPresenter(); // vtable+0x0
__declspec(dllexport) static void configureLegoWorldPresenter(int param_1); __declspec(dllexport) static void configureLegoWorldPresenter(int param_1);
virtual void VTable0x1c(); // vtable0x1c
virtual void VTable0x60(undefined4 param); // vtable+0x60
// VTABLE 0x100d8ee0 // VTABLE 0x100d8ee0
}; };

View File

@ -5,3 +5,15 @@ Motorcycle::Motorcycle()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x10035c50
void Motorcycle::VTable0xcc()
{
// TODO
}
// OFFSET: LEGO1 0x10035bc0
void Motorcycle::VTable0xe4()
{
// TODO
}

View File

@ -8,8 +8,8 @@ class Motorcycle : public IslePathActor
public: public:
Motorcycle(); Motorcycle();
virtual void __fastcall FUN_10035c50(int* param_1); virtual void VTable0xcc(); // vtable+0xcc
virtual void __fastcall FUN_10035bc0(int* param_1); virtual void VTable0xe4(); // vtable+0xe4
// VTABLE 0x100d7090 // VTABLE 0x100d7090
// SIZE 0x16c // SIZE 0x16c

View File

@ -1,6 +1,8 @@
#include "mxentity.h" #include "mxentity.h"
// OFFSET: LEGO1 0x100f0070 #include "mxatomid.h"
// 0x100f0070
static char* g_mxEntityClassName = "MxEntity"; static char* g_mxEntityClassName = "MxEntity";
// OFFSET: LEGO1 0x1000c180 // OFFSET: LEGO1 0x1000c180
@ -16,3 +18,11 @@ MxBool MxEntity::IsClass(const char *name) const
return MxBool(); return MxBool();
} }
// OFFSET: LEGO1 0x10001070
undefined4 MxEntity::VTable0x14(undefined4 param_1, MxAtomId *param_2)
{
// TODO
return undefined4();
}

View File

@ -3,11 +3,21 @@
#include "mxcore.h" #include "mxcore.h"
#ifndef undefined4
#define undefined4 int
#endif
class MxAtomId;
class MxEntity : public MxCore class MxEntity : public MxCore
{ {
public: public:
virtual const char* GetClassName() const; virtual const char* GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; virtual MxBool IsClass(const char *name) const; // vtable+0x10
virtual undefined4 VTable0x14(undefined4 param_1, MxAtomId* param_2); // vtable+0x14
// VTABLE 0x100d53a4
}; };
#endif // MXENTITY_H #endif // MXENTITY_H

View File

@ -10,6 +10,8 @@ class MxEventPresenter : public MxMediaPresenter
private: private:
void Init(); void Init();
// VTABLE 0x100dca88
}; };
#endif // MXEVENTPRESENTER_H #endif // MXEVENTPRESENTER_H

View File

@ -1,6 +1,6 @@
#include "mxmediapresenter.h" #include "mxmediapresenter.h"
// OFFSET: LEGO1 0x100f074c // 0x100f074c
static char* g_mxMediaPresenterClassName = "MxMediaPresenter"; static char* g_mxMediaPresenterClassName = "MxMediaPresenter";
// OFFSET: LEGO1 0x100d4ce0 // OFFSET: LEGO1 0x100d4ce0
@ -25,6 +25,20 @@ MxBool MxMediaPresenter::IsClass(const char *name) const
return MxBool(); return MxBool();
} }
// OFFSET: LEGO1 0x100b5d90
void MxMediaPresenter::VTable0x20()
{
// TODO
}
// OFFSET: LEGO1 0x100b5e10
unsigned int MxMediaPresenter::VTable0x24()
{
// TODO
return 0;
}
// OFFSET: LEGO1 0x100b5ef0 // OFFSET: LEGO1 0x100b5ef0
void MxMediaPresenter::DoneTickle() void MxMediaPresenter::DoneTickle()
{ {

View File

@ -10,8 +10,8 @@ class MxMediaPresenter : public MxPresenter
virtual const char *GetClassName() const; // vtable+0xc, override MxCore virtual const char *GetClassName() const; // vtable+0xc, override MxCore
virtual MxBool IsClass(const char *name) const; // vtable+0x10, override MxCore virtual MxBool IsClass(const char *name) const; // vtable+0x10, override MxCore
virtual void __fastcall FUN_100b5d90(int* param); // vtable+0x20, override MxPresenter virtual void VTable0x20(); // vtable+0x20, override MxPresenter
virtual int __fastcall FUN_100b5e10(int param); // vtable+0x24, override MxPresenter virtual unsigned int VTable0x24(); // vtable+0x24, override MxPresenter
virtual void DoneTickle(); // vtable+0x2c, override MxPresenter virtual void DoneTickle(); // vtable+0x2c, override MxPresenter
virtual long StartAction(MxStreamController*, MxDSAction*); // vtable+0x3c, override virtual long StartAction(MxStreamController*, MxDSAction*); // vtable+0x3c, override
virtual void EndAction(); // vtable+0x40, override MxPresenter virtual void EndAction(); // vtable+0x40, override MxPresenter

View File

@ -1,5 +1,8 @@
#include "mxpresenter.h" #include "mxpresenter.h"
// 0x100f0740
static char* g_mxPresenterClassName = "MxPresenter";
// OFFSET: LEGO1 0x1000bee0 // OFFSET: LEGO1 0x1000bee0
void MxPresenter::DoneTickle() void MxPresenter::DoneTickle()
{ {
@ -26,6 +29,20 @@ long MxPresenter::Tickle()
return 0; return 0;
} }
// OFFSET: LEGO1 0x1000bfe0
const char *MxPresenter::GetClassName() const
{
return g_mxPresenterClassName;
}
// OFFSET: LEGO1 0x1000bff0
MxBool MxPresenter::IsClass(const char *name) const
{
// TODO
return MxBool();
}
// OFFSET: LEGO1 0x100b4d80 // OFFSET: LEGO1 0x100b4d80
long MxPresenter::StartAction(MxStreamController *, MxDSAction *) long MxPresenter::StartAction(MxStreamController *, MxDSAction *)
{ {
@ -45,3 +62,39 @@ void MxPresenter::Enable(unsigned char)
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x1000be30
void MxPresenter::VTable0x14()
{
// TODO
}
// OFFSET: LEGO1 0x1000be40
void MxPresenter::VTable0x18()
{
// TODO
}
// OFFSET: LEGO1 0x1000be60
void MxPresenter::VTable0x1c()
{
// TODO
}
// OFFSET: LEGO1 0x1000be80
void MxPresenter::VTable0x20()
{
// TODO
}
// OFFSET: LEGO1 0x1000bea0
void MxPresenter::VTable0x24()
{
// TODO
}
// OFFSET: LEGO1 0x1000bec0
void MxPresenter::VTable0x28()
{
// TODO
}

View File

@ -8,27 +8,26 @@ class MxDSAction;
class MxPresenter : public MxCore class MxPresenter : public MxCore
{ {
public:
__declspec(dllexport) virtual ~MxPresenter(); // vtable+0x0
__declspec(dllexport) virtual long Tickle(); // vtable+0x8
virtual const char *GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; // vtable+0x10
virtual void VTable0x14(); // vtable+0x14
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
protected: protected:
__declspec(dllexport) virtual void DoneTickle(); // vtable+0x2c __declspec(dllexport) virtual void DoneTickle(); // vtable+0x2c
__declspec(dllexport) void Init(); __declspec(dllexport) void Init();
__declspec(dllexport) virtual void ParseExtra(); // vtable+0x30 __declspec(dllexport) virtual void ParseExtra(); // vtable+0x30
public: public:
__declspec(dllexport) virtual ~MxPresenter(); // vtable+0x0
__declspec(dllexport) virtual long Tickle(); // vtable+0x8
virtual const char *GetClassName() const; // vtable+0xc
virtual MxBool IsClass(const char *name) const; // vtable+0x10
__declspec(dllexport) virtual long StartAction(MxStreamController *, MxDSAction *); // vtable+0x3c __declspec(dllexport) virtual long StartAction(MxStreamController *, MxDSAction *); // vtable+0x3c
__declspec(dllexport) virtual void EndAction(); // vtable+0x40 __declspec(dllexport) virtual void EndAction(); // vtable+0x40
__declspec(dllexport) virtual void Enable(unsigned char); // vtable+0x54 __declspec(dllexport) virtual void Enable(unsigned char); // vtable+0x54
virtual void FUN_1000be30(); // vtable+0x14
virtual void __fastcall FUN_1000be40(int param); // vtable+0x18
virtual void __fastcall FUN_1000be60(int param); // vtable+0x1c
virtual void __fastcall FUN_1000be80(int param); // vtable+0x20
virtual void __fastcall FUN_1000bea0(int param); // vtable+0x24
virtual void __fastcall FUN_1000bec0(int param); // vtable+0x28
// VTABLE 0x100d4d38 // VTABLE 0x100d4d38
}; };

View File

@ -7,7 +7,7 @@ MxSmkPresenter::MxSmkPresenter()
} }
// OFFSET: LEGO1 0x100b38d0 // OFFSET: LEGO1 0x100b38d0
void __fastcall MxSmkPresenter::Init() void MxSmkPresenter::Init()
{ {
// TODO // TODO
} }

View File

@ -9,8 +9,9 @@ class MxSmkPresenter : public MxVideoPresenter
MxSmkPresenter(); MxSmkPresenter();
private: private:
void __fastcall Init(); void Init();
// VTABLE 0x100dc348
// SIZE 0x720 // SIZE 0x720
}; };

View File

@ -1,7 +1,17 @@
#include "mxtransitionmanager.h" #include "mxtransitionmanager.h"
// OFFSET: LEGO1 0x1004bac0 // OFFSET: LEGO1 0x1004bac0
int MxTransitionManager::DispatchTransition() long MxTransitionManager::Tickle()
{ {
// TODO
return 0; return 0;
} }
// OFFSET: LEGO1 0x1004baa0
undefined4 MxTransitionManager::VTable0x14()
{
// TODO
return undefined4();
}

View File

@ -1,15 +1,23 @@
#ifndef MXTRANSITIONMANAGER_H #ifndef MXTRANSITIONMANAGER_H
#define MXTRANSITIONMANAGER_H #define MXTRANSITIONMANAGER_H
#include "mxcore.h"
class MxVideoPresenter; class MxVideoPresenter;
class MxTransitionManager #ifndef undefined4
#define undefined4 int
#endif
class MxTransitionManager : public MxCore
{ {
public: public:
__declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *videoPresenter); __declspec(dllexport) void SetWaitIndicator(MxVideoPresenter *videoPresenter);
virtual int DispatchTransition(); virtual long Tickle(); // vtable+0x8
virtual int FUN_1004baa0(); // Return is unknown 4-byte value virtual undefined4 VTable0x14(); // vtable+0x14
// VTABLE 0x100d7ea0
}; };
#endif // MXTRANSITIONMANAGER_H #endif // MXTRANSITIONMANAGER_H

View File

@ -5,3 +5,21 @@ void MxWavePresenter::Init()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x100b2300
void MxWavePresenter::VTable0x60(int param_1)
{
// TODO
}
// OFFSET: LEGO1 0x100b2440
void MxWavePresenter::VTable0x64(int param_1)
{
// TODO
}
// OFFSET: LEGO1 0x100b2470
void MxWavePresenter::VTable0x68(int param_1)
{
// TODO
}

View File

@ -8,9 +8,12 @@ class MxWavePresenter : public MxSoundPresenter
private: private:
void Init(); void Init();
virtual void FUN_100b2300(int param_1); public:
virtual void FUN_100b2440(int param_1); virtual void VTable0x60(int param_1); // vtable+0x60
virtual void FUN_100b2470(int param_1); virtual void VTable0x64(int param_1); // vtable+0x64
virtual void VTable0x68(int param_1); // vtable+0x68
// VTABLE 0x100d49a8
// SIZE 0x6c // SIZE 0x6c
}; };

View File

@ -3,4 +3,13 @@
// OFFSET: LEGO1 0x100334b0 // OFFSET: LEGO1 0x100334b0
Pizzeria::Pizzeria() Pizzeria::Pizzeria()
{ {
// TODO
}
// OFFSET: LEGO1 0x10017a50
undefined4 Pizzeria::VTable0x68()
{
// TODO
return undefined4();
} }

View File

@ -3,13 +3,18 @@
#include "isleactor.h" #include "isleactor.h"
#ifndef undefined4
#define undefined4 int
#endif
class Pizzeria : public IsleActor class Pizzeria : public IsleActor
{ {
public: public:
Pizzeria(); Pizzeria();
virtual int FUN_10017a50(int param_1); // Return is unknown 4-byte value virtual undefined4 VTable0x68(); // vtable+0x68
// VTABLE 0x100d5520
// SIZE 0x84 // SIZE 0x84
}; };

9
LEGO1/policeentity.cpp Normal file
View File

@ -0,0 +1,9 @@
#include "policeentity.h"
// OFFSET: LEGO1 0x10015310
undefined4 PoliceEntity::VTable0x50()
{
// TODO
return undefined4();
}

View File

@ -3,9 +3,13 @@
#include "buildingentity.h" #include "buildingentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class PoliceEntity : public BuildingEntity class PoliceEntity : public BuildingEntity
{ {
virtual int FUN_10015310(); // Return is undefined 4-byte value virtual undefined4 VTable0x50(); // vtable+0x50
// VTABLE 0x100d4ab0 // VTABLE 0x100d4ab0
// SIZE 0x68 // SIZE 0x68

View File

@ -0,0 +1,9 @@
#include "racestandsentity.h"
// OFFSET: LEGO1 0x10015450
undefined4 RaceStandsEntity::VTable0x50()
{
// TODO
return undefined4();
}

View File

@ -3,11 +3,16 @@
#include "buildingentity.h" #include "buildingentity.h"
#ifndef undefined4
#define undefined4 int
#endif
class RaceStandsEntity : public BuildingEntity class RaceStandsEntity : public BuildingEntity
{ {
// NOTE(Cydra): Starts transition // NOTE(Cydra): Starts transition
int FUN_10015450(); // Return is unknown 4-byte value undefined4 VTable0x50(); // vtable+0x50
// VTABLE 0x100d48a8
// SIZE 0x68 // SIZE 0x68
}; };

View File

@ -19,3 +19,9 @@ long RegistrationBook::Notify(MxParam &p)
return 0; return 0;
} }
// OFFSET: LEGO1 0x10078180
void RegistrationBook::VTable0x68(char param_1)
{
// TODO
}

View File

@ -10,7 +10,7 @@ class RegistrationBook : public LegoWorld
virtual ~RegistrationBook(); // vtable+0x0 virtual ~RegistrationBook(); // vtable+0x0
virtual long Notify(MxParam &p); // vtable+0x4 virtual long Notify(MxParam &p); // vtable+0x4
virtual void FUN_10078180(char param_1); // vtable+0x68 virtual void VTable0x68(char param_1); // vtable+0x68
// VTABLE 0x100d9928 // VTABLE 0x100d9928
}; };

View File

@ -5,3 +5,11 @@ SkateBoard::SkateBoard()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x100100e0
undefined4 SkateBoard::VTable0xcc()
{
// TODO
return undefined4();
}

View File

@ -3,12 +3,16 @@
#include "islepathactor.h" #include "islepathactor.h"
#ifndef undefined4
#define undefined4 int
#endif
class SkateBoard : public IslePathActor class SkateBoard : public IslePathActor
{ {
public: public:
SkateBoard(); SkateBoard();
virtual int __fastcall FUN_100100e0(int* param_1); // Return is undefined 4-byte value virtual undefined4 VTable0xcc(); // vtable+0xcc
// VTABLE 0x100d55f0 // VTABLE 0x100d55f0
}; };

View File

@ -5,3 +5,9 @@ TowTrack::TowTrack()
{ {
// TODO // TODO
} }
// OFFSET: LEGO1 0x1004d8f0
void TowTrack::VTable0xe4()
{
// TODO
}

View File

@ -8,7 +8,7 @@ class TowTrack : public IslePathActor
public: public:
TowTrack(); TowTrack();
virtual void FUN_1004d8f0(int* param_1); // vtable+0xe4 virtual void VTable0xe4(); // vtable+0xe4
// VTABLE 0x100d7ee0 // VTABLE 0x100d7ee0
// SIZE 0x180 // SIZE 0x180