reccmp: vtable comparison (#452)

* Add vtable comparison to reccmp

* Add missing scalar deleting destructors

* Fix some vtables

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
MS 2024-01-18 08:34:14 -05:00 committed by GitHub
parent 99917ca765
commit 909c44b679
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
161 changed files with 679 additions and 34 deletions

View file

@ -29,6 +29,9 @@ class Act1State : public LegoState {
void FUN_10034d00();
// SYNTHETIC: LEGO1 0x10033960
// Act1State::`scalar deleting destructor'
protected:
undefined m_unk0x8[0x10]; // 0x8
MxU32 m_unk0x18; // 0x18

View file

@ -25,6 +25,9 @@ class Act2Brick : public LegoPathActor {
{
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor'
};
#endif // ACT2BRICK_H

View file

@ -21,6 +21,9 @@ class Act2PoliceStation : public LegoEntity {
{
return !strcmp(p_name, Act2PoliceStation::ClassName()) || LegoEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f610
// Act2PoliceStation::`scalar deleting destructor'
};
#endif // ACT2POLICESTATION_H

View file

@ -27,6 +27,9 @@ class Act3 : public LegoWorld {
inline void SetUnkown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
inline void SetUnkown4270(MxU32 p_unk0x4270) { m_unk0x4270 = p_unk0x4270; }
// SYNTHETIC: LEGO1 0x10072630
// Act3::`scalar deleting destructor'
protected:
undefined m_unk0xf8[0x4114]; // 0xf8
MxEntity* m_unk0x420c; // 0x420c

View file

@ -12,6 +12,9 @@ class Act3Shark : public LegoAnimActor {
// STRING: LEGO1 0x100f03a0
return "Act3Shark";
}
// SYNTHETIC: LEGO1 0x10043020
// Act3Shark::`scalar deleting destructor'
};
#endif // ACT3SHARK_H

View file

@ -24,6 +24,9 @@ class Act3State : public LegoState {
virtual MxBool VTable0x14() override;
// SYNTHETIC: LEGO1 0x1000e3c0
// Act3State::`scalar deleting destructor'
private:
// FIXME: May be part of LegoState? Uncertain...
MxU32 m_unk0x08;

View file

@ -22,6 +22,9 @@ class Ambulance : public IslePathActor {
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10036130
// Ambulance::`scalar deleting destructor'
private:
// TODO: Ambulance fields
undefined m_unk0x160[4];

View file

@ -40,6 +40,9 @@ class AmbulanceMissionState : public LegoState {
}
}
// SYNTHETIC: LEGO1 0x100376c0
// AmbulanceMissionState::`scalar deleting destructor'
protected:
undefined4 m_unk0x8; // 0x08
undefined4 m_unk0xc; // 0x0c

View file

@ -26,6 +26,9 @@ class AnimState : public LegoState {
virtual MxBool SetFlag() override; // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream) override; // vtable+0x1C
// SYNTHETIC: LEGO1 0x10065130
// AnimState::`scalar deleting destructor'
private:
undefined4 m_unk0x8;
undefined4 m_unk0xc;

View file

@ -21,6 +21,9 @@ class BeachHouseEntity : public BuildingEntity {
{
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f970
// BeachHouseEntity::`scalar deleting destructor'
};
#endif // BEACHHOUSEENTITY_H

View file

@ -23,6 +23,9 @@ class Bike : public IslePathActor {
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10076880
// Bike::`scalar deleting destructor'
private:
// TODO: Bike fields
undefined m_unk0x160[4];

View file

@ -22,6 +22,9 @@ class BuildingEntity : public LegoEntity {
{
return !strcmp(p_name, BuildingEntity::ClassName()) || LegoEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10015010
// BuildingEntity::`scalar deleting destructor'
};
#endif // BUILDINGENTITY_H

View file

@ -19,6 +19,9 @@ class BumpBouy : public LegoAnimActor {
{
return !strcmp(p_name, BumpBouy::ClassName()) || LegoAnimActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10027490
// BumpBouy::`scalar deleting destructor'
};
#endif // BUMPBOUY_H

View file

@ -23,6 +23,9 @@ class CarRace : public LegoRace {
return !strcmp(p_name, CarRace::ClassName()) || LegoRace::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10016c70
// CarRace::`scalar deleting destructor'
private:
undefined m_unk0x144[12]; // 0x144
undefined4 m_unk0x150; // 0x150

View file

@ -19,6 +19,9 @@ class CarRaceState : public RaceState {
{
return !strcmp(p_name, CarRaceState::ClassName()) || RaceState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f740
// CarRaceState::`scalar deleting destructor'
};
#endif // CARRACESTATE_H

View file

@ -19,6 +19,9 @@ class Doors : public LegoPathActor {
{
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor'
};
#endif // DOORS_H

View file

@ -23,6 +23,9 @@ class DuneBuggy : public IslePathActor {
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10067dc0
// DuneBuggy::`scalar deleting destructor'
private:
// TODO: Double check DuneBuggy field types
undefined4 m_unk0x160;

View file

@ -26,6 +26,9 @@ class ElevatorBottom : public LegoWorld {
return !strcmp(p_name, ElevatorBottom::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10018040
// ElevatorBottom::`scalar deleting destructor'
private:
undefined4 m_unk0xf8; // 0xf8
};

View file

@ -29,6 +29,9 @@ class GasStation : public LegoWorld {
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100048a0
// GasStation::`scalar deleting destructor'
private:
undefined2 m_unk0xf8; // 0xf8
undefined2 m_unk0xfa; // 0xfa

View file

@ -19,6 +19,9 @@ class GasStationEntity : public BuildingEntity {
{
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f890
// GasStationEntity::`scalar deleting destructor'
};
#endif // GASSTATIONENTITY_H

View file

@ -22,6 +22,9 @@ class GasStationState : public LegoState {
return !strcmp(p_name, GasStationState::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10006290
// GasStationState::`scalar deleting destructor'
private:
undefined4 m_unk0x08[3];
undefined4 m_unk0x14;

View file

@ -1,6 +1,7 @@
#ifndef GIFMANAGER_H
#define GIFMANAGER_H
#include "compat.h"
#include "decomp.h"
#include "mxtypes.h"
@ -45,8 +46,11 @@ class GifMap {
// VTABLE: LEGO1 0x100d86d4
class GifManagerBase {
public:
// STUB: LEGO1 0x1005a310
virtual ~GifManagerBase() {} // vtable+00
// STUB: LEGO1 0x1005b660
virtual ~GifManagerBase() {}
// SYNTHETIC: LEGO1 0x1005a310
// GifManagerBase::`scalar deleting destructor'
inline GifData* Get(const char* p_name) { return m_unk0x8.Get(p_name); }
@ -59,8 +63,10 @@ class GifManagerBase {
// VTABLE: LEGO1 0x100d86fc
class GifManager : public GifManagerBase {
public:
// STUB: LEGO1 0x1005a580
virtual ~GifManager() {} // vtable+00
virtual ~GifManager() override;
// SYNTHETIC: LEGO1 0x1005a580
// GifManager::`scalar deleting destructor'
protected:
undefined m_unk0x14[0x1c];

View file

@ -24,6 +24,9 @@ class HelicopterState : public LegoState {
inline void SetUnknown8(MxU32 p_unk0x8) { m_unk0x8 = p_unk0x8; }
inline MxU32 GetUnkown8() { return m_unk0x8; }
// SYNTHETIC: LEGO1 0x1000e190
// HelicopterState::`scalar deleting destructor'
protected:
MxU32 m_unk0x8; // 0x8
};

View file

@ -24,6 +24,9 @@ class HistoryBook : public LegoWorld {
{
return !strcmp(p_name, HistoryBook::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100824b0
// HistoryBook::`scalar deleting destructor'
};
#endif // HISTORYBOOK_H

View file

@ -26,6 +26,9 @@ class Hospital : public LegoWorld {
return !strcmp(p_name, Hospital::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100747d0
// Hospital::`scalar deleting destructor'
private:
undefined2 m_unk0xf8; // 0xf8
undefined4 m_unk0xfc; // 0xfc

View file

@ -19,6 +19,9 @@ class HospitalEntity : public BuildingEntity {
{
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f820
// HospitalEntity::`scalar deleting destructor'
};
#endif // HOSPITALENTITY_H

View file

@ -23,6 +23,9 @@ class HospitalState : public LegoState {
return !strcmp(p_name, HospitalState::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100764c0
// HospitalState::`scalar deleting destructor'
private:
undefined m_unk0x8[4]; // 0x8
undefined2 m_unk0xc; // 0xc

View file

@ -132,6 +132,9 @@ class Infocenter : public LegoWorld {
virtual MxBool VTable0x64() override; // vtable+0x64
virtual void VTable0x68(MxBool p_add) override; // vtable+0x68
// SYNTHETIC: LEGO1 0x1006ec60
// Infocenter::`scalar deleting destructor'
private:
void InitializeBitmaps();

View file

@ -24,6 +24,9 @@ class InfocenterDoor : public LegoWorld {
{
return !strcmp(p_name, InfocenterDoor::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100378d0
// InfocenterDoor::`scalar deleting destructor'
};
#endif // INFOCENTERDOOR_H

View file

@ -19,6 +19,9 @@ class InfoCenterEntity : public BuildingEntity {
{
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f7b0
// InfoCenterEntity::`scalar deleting destructor'
};
#endif // INFOCENTERENTITY_H

View file

@ -29,6 +29,9 @@ class InfocenterState : public LegoState {
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
// SYNTHETIC: LEGO1 0x10071900
// InfocenterState::`scalar deleting destructor'
private:
// Members should be renamed with their offsets before use
/*

View file

@ -59,6 +59,9 @@ class Isle : public LegoWorld {
MxLong HandleTransitionEnd();
void FUN_10032620();
// SYNTHETIC: LEGO1 0x10030a30
// Isle::`scalar deleting destructor'
protected:
Act1State* m_act1state; // 0xf8
Pizza* m_pizza; // 0xfc

View file

@ -23,6 +23,9 @@ class Jetski : public IslePathActor {
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1007e5c0
// Jetski::`scalar deleting destructor'
private:
// TODO: Jetski fields
undefined m_unk0x160[4];

View file

@ -19,6 +19,9 @@ class JetskiRaceState : public RaceState {
{
return !strcmp(p_name, JetskiRaceState::ClassName()) || RaceState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f680
// JetskiRaceState::`scalar deleting destructor'
};
#endif // JETSKIRACESTATE_H

View file

@ -23,6 +23,9 @@ class JukeBox : public LegoWorld {
return !strcmp(p_name, JukeBox::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1005d810
// JukeBox::`scalar deleting destructor'
private:
undefined m_unk0xf8[4]; // 0xf8
undefined4 m_unk0xfc; // 0xfc

View file

@ -22,6 +22,9 @@ class JukeBoxEntity : public LegoEntity {
{
return !strcmp(p_name, JukeBoxEntity::ClassName()) || LegoEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10085db0
// JukeBoxEntity::`scalar deleting destructor'
};
#endif // JUKEBOXENTITY_H

View file

@ -21,6 +21,9 @@ class JukeBoxState : public LegoState {
}
virtual MxBool VTable0x14() override; // vtable+0x14
// SYNTHETIC: LEGO1 0x1000f3d0
// JukeBoxState::`scalar deleting destructor'
};
#endif // JUKEBOXSTATE_H

View file

@ -19,6 +19,9 @@ class Lego3DWavePresenter : public MxWavePresenter {
{
return !strcmp(p_name, Lego3DWavePresenter::ClassName()) || MxWavePresenter::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f4b0
// Lego3DWavePresenter::`scalar deleting destructor'
};
#endif // LEGO3DWAVEPRESENTER_H

View file

@ -6,6 +6,9 @@
// VTABLE: LEGO1 0x100d82e0
// SIZE 0x1154
class LegoAct2 : public LegoWorld {};
class LegoAct2 : public LegoWorld {
// SYNTHETIC: LEGO1 0x1004fe20
// LegoAct2::`scalar deleting destructor'
};
#endif // LEGOACT2_H

View file

@ -19,6 +19,9 @@ class LegoAct2State : public LegoState {
{
return !strcmp(p_name, LegoAct2State::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000e040
// LegoAct2State::`scalar deleting destructor'
};
#endif // LEGOACT2STATE_H

View file

@ -34,6 +34,9 @@ class LegoAnimationManager : public MxCore {
__declspec(dllexport) static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
// SYNTHETIC: LEGO1 0x1005ed10
// LegoAnimationManager::`scalar deleting destructor'
private:
void Init();
};

View file

@ -21,6 +21,9 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
{
return !strcmp(p_name, LegoAnimMMPresenter::ClassName()) || MxCompositePresenter::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1004aa40
// LegoAnimMMPresenter::`scalar deleting destructor'
};
#endif // LEGOANIMMMPRESENTER_H

View file

@ -21,6 +21,9 @@ class LegoBuildingManager : public MxCore {
void FUN_1002fa00();
// SYNTHETIC: LEGO1 0x1002f940
// LegoBuildingManager::`scalar deleting destructor'
private:
void Init();
};

View file

@ -23,6 +23,9 @@ class LegoCacheSound : public MxCore {
return !strcmp(p_name, LegoCacheSound::ClassName()) || MxCore::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10006610
// LegoCacheSound::`scalar deleting destructor'
private:
void Init();
};

View file

@ -25,6 +25,9 @@ class LegoCarBuild : public LegoWorld {
{
return !strcmp(p_name, LegoCarBuild::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10022a60
// LegoCarBuild::`scalar deleting destructor'
};
#endif // LEGOCARBUILD_H

View file

@ -22,6 +22,9 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
{
return !strcmp(p_name, LegoCarBuildAnimPresenter::ClassName()) || LegoAnimPresenter::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10078660
// LegoCarBuildAnimPresenter::`scalar deleting destructor'
};
#endif // LEGOCARBUILDANIMPRESENTER_H

View file

@ -18,6 +18,9 @@ class LegoCarRaceActor : public LegoRaceActor {
{
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoRaceActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10081610
// LegoCarRaceActor::`scalar deleting destructor'
};
#endif // LEGOCARRACEACTOR_H

View file

@ -29,6 +29,9 @@ class LegoControlManager : public MxCore {
void Register(MxCore* p_listener);
void Unregister(MxCore* p_listener);
void FUN_100293c0(undefined4, const MxAtomId&, undefined2);
// SYNTHETIC: LEGO1 0x10028d40
// LegoControlManager::`scalar deleting destructor'
};
#endif // LEGOCONTROLMANAGER_H

View file

@ -35,6 +35,9 @@ class LegoEntityPresenter : public MxCompositePresenter {
void SetEntityLocation(Mx3DPointFloat& p_location, Mx3DPointFloat& p_direction, Mx3DPointFloat& p_up);
// SYNTHETIC: LEGO1 0x100535a0
// LegoEntityPresenter::`scalar deleting destructor'
private:
void Destroy(MxBool p_fromDestructor);

View file

@ -17,6 +17,9 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
return "LegoFlcTexturePresenter";
}
// SYNTHETIC: LEGO1 0x1005df00
// LegoFlcTexturePresenter::`scalar deleting destructor'
private:
void Init();

View file

@ -71,6 +71,9 @@ class LegoInputManager : public MxPresenter {
void ProcessEvents();
MxBool ProcessOneEvent(LegoEventNotificationParam& p_param);
// SYNTHETIC: LEGO1 0x1005b8d0
// LegoInputManager::`scalar deleting destructor'
private:
MxCriticalSection m_criticalSection;
MxList<undefined4>* m_unk0x5c; // list or hash table

View file

@ -18,6 +18,9 @@ class LegoJetski : public LegoJetskiRaceActor {
{
return !strcmp(p_name, LegoJetski::ClassName()) || LegoJetskiRaceActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10013e20
// LegoJetski::`scalar deleting destructor'
};
#endif // LEGOJETSKI_H

View file

@ -18,6 +18,9 @@ class LegoJetskiRaceActor : public LegoCarRaceActor {
{
return !strcmp(p_name, LegoJetskiRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10081d40
// LegoJetskiRaceActor::`scalar deleting destructor'
};
#endif // LEGOJETSKIRACEACTOR_H

View file

@ -21,6 +21,9 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
return !strcmp(p_name, ClassName()) || LegoLoopingAnimPresenter::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1006cfe0
// LegoLocomotionAnimPresenter::`scalar deleting destructor'
private:
void Init();
};

View file

@ -26,6 +26,9 @@ class LegoModelPresenter : public MxVideoPresenter {
virtual void ParseExtra() override; // vtable+0x30
virtual void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x1000cdd0
// LegoModelPresenter::`scalar deleting destructor'
protected:
void Destroy(MxBool p_fromDestructor);

View file

@ -61,6 +61,9 @@ class LegoNavController : public MxCore {
inline void SetTrackDefaultParams(MxBool p_trackDefault) { m_trackDefault = p_trackDefault; }
// SYNTHETIC: LEGO1 0x10054c10
// LegoNavController::`scalar deleting destructor'
private:
int m_hMax;
int m_vMax;

View file

@ -108,6 +108,9 @@ class LegoObjectFactory : public MxObjectFactory {
virtual MxCore* Create(const char* p_name) override; // vtable 0x14
virtual void Destroy(MxCore* p_object) override; // vtable 0x18
// SYNTHETIC: LEGO1 0x10009000
// LegoObjectFactory::`scalar deleting destructor'
private:
#define X(V) MxAtomId m_id##V;
FOR_LEGOOBJECTFACTORY_OBJECTS(X)

View file

@ -129,6 +129,9 @@ class LegoOmni : public MxOmni {
inline void CloseMainWindow() { PostMessageA(m_windowHandle, WM_CLOSE, 0, 0); }
// SYNTHETIC: LEGO1 0x10058b30
// LegoOmni::`scalar deleting destructor'
private:
undefined4* m_unk0x68; // 0x68
ViewLODListManager* m_viewLODListManager; // 0x6c

View file

@ -30,6 +30,9 @@ class LegoPalettePresenter : public MxVideoPresenter {
MxResult ParsePalette(MxStreamChunk* p_chunk);
// SYNTHETIC: LEGO1 0x1007a050
// LegoPalettePresenter::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View file

@ -21,6 +21,9 @@ class LegoPartPresenter : public MxMediaPresenter {
}
__declspec(dllexport) static void configureLegoPartPresenter(MxS32, MxS32);
// SYNTHETIC: LEGO1 0x1000d060
// LegoPartPresenter::`scalar deleting destructor'
};
#endif // LEGOPARTPRESENTER_H

View file

@ -66,6 +66,9 @@ class LegoPathActor : public LegoActor {
inline void SetUnknownDC(MxU32 p_unk0xdc) { m_unk0xdc = p_unk0xdc; }
// SYNTHETIC: LEGO1 0x1002d800
// LegoPathActor::`scalar deleting destructor'
protected:
undefined m_unk0x78[0x64]; // 0x78
MxU32 m_unk0xdc; // 0xdc

View file

@ -8,7 +8,7 @@
class LegoPathController : public MxCore {
public:
LegoPathController();
virtual ~LegoPathController() override;
virtual ~LegoPathController() override { Destroy(); };
virtual MxResult Tickle() override; // vtable+08
@ -24,6 +24,12 @@ class LegoPathController : public MxCore {
{
return !strcmp(p_name, LegoPathController::ClassName()) || MxCore::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10045740
// LegoPathController::`scalar deleting destructor'
virtual void VTable0x14(); // vtable+0x14
virtual void Destroy(); // vtable+0x18
};
#endif // LEGOPATHCONTROLLER_H

View file

@ -19,6 +19,9 @@ class LegoPathControllerList : public MxPtrList<LegoPathController> {
{
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
} // vtable+0x14
// SYNTHETIC: LEGO1 0x1001d3d0
// LegoPathControllerList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100d6380

View file

@ -30,6 +30,9 @@ class LegoPathPresenter : public MxMediaPresenter {
virtual MxResult AddToManager() override; // vtable+0x34
virtual void Destroy() override; // vtable+0x38
// SYNTHETIC: LEGO1 0x10044a90
// LegoPathPresenter::`scalar deleting destructor'
private:
void Init();

View file

@ -20,6 +20,9 @@ class LegoPhonemePresenter : public MxFlcPresenter {
return "LegoPhonemePresenter";
}
// SYNTHETIC: LEGO1 0x1004e320
// LegoPhonemePresenter::`scalar deleting destructor'
private:
void Init();
int m_unk0x68;

View file

@ -22,6 +22,9 @@ class LegoPlantManager : public MxCore {
void FUN_10026360(undefined4 p_world);
// SYNTHETIC: LEGO1 0x100262a0
// LegoPlantManager::`scalar deleting destructor'
private:
void Init();
};

View file

@ -38,6 +38,9 @@ class LegoRace : public LegoWorld {
virtual undefined4 VTable0x78(undefined4); // vtable+0x78
virtual void VTable0x7c(undefined4, undefined4); // vtable+0x7c
// SYNTHETIC: LEGO1 0x10015cc0
// LegoRace::`scalar deleting destructor'
private:
undefined4 m_unk0xf8; // 0xf8
undefined4 m_unk0xfc; // 0xfc

View file

@ -18,6 +18,9 @@ class LegoRaceActor : public LegoAnimActor {
{
return !strcmp(p_name, LegoRaceActor::ClassName()) || LegoAnimActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10014ab0
// LegoRaceActor::`scalar deleting destructor'
};
#endif // LEGORACEACTOR_H

View file

@ -20,6 +20,9 @@ class LegoRaceCar : public LegoCarRaceActor {
{
return !strcmp(p_name, LegoCarRaceActor::ClassName()) || LegoCarRaceActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10014230
// LegoRaceCar::`scalar deleting destructor'
};
#endif // LEGOCARRACE_H

View file

@ -14,6 +14,9 @@ class LegoSoundManager : public MxSoundManager {
virtual void Destroy() override; // vtable+18
virtual MxResult Create(MxU32 p_frequencyMS, MxBool p_createThread) override; // vtable+0x30
// SYNTHETIC: LEGO1 0x10029920
// LegoSoundManager::`scalar deleting destructor'
private:
void Init();
void Destroy(MxBool p_fromDestructor);

View file

@ -27,6 +27,9 @@ class LegoState : public MxCore {
virtual MxBool VTable0x14(); // vtable+0x14
virtual MxBool SetFlag(); // vtable+0x18
virtual MxResult VTable0x1c(LegoFileStream* p_legoFileStream); // vtable+0x1C
// SYNTHETIC: LEGO1 0x10006160
// LegoState::`scalar deleting destructor'
};
#endif // LEGOSTATE_H

View file

@ -25,6 +25,9 @@ class LegoTexturePresenter : public MxMediaPresenter {
virtual void DoneTickle() override; // vtable+0x2c
virtual MxResult AddToManager() override; // vtable+0x34
virtual MxResult PutData() override; // vtable+0x4c
// SYNTHETIC: LEGO1 0x1000cf40
// LegoTexturePresenter::`scalar deleting destructor'
};
#endif // LEGOTEXTUREPRESENTER_H

View file

@ -23,6 +23,9 @@ class LegoVehicleBuildState : public LegoState {
return !strcmp(p_name, this->m_className.GetData()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100260a0
// LegoVehicleBuildState::`scalar deleting destructor'
public:
struct UnkStruct {
undefined4 m_unk0x00;

View file

@ -60,6 +60,9 @@ class LegoWorld : public LegoEntity {
MxS32 GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
MxPresenter* FindPresenter(const char* p_presenter, const char* p_name);
// SYNTHETIC: LEGO1 0x1001dee0
// LegoWorld::`scalar deleting destructor'
protected:
LegoPathControllerList m_list0x68; // 0x68
MxPresenterList m_list0x80; // 0x80

View file

@ -26,6 +26,9 @@ class LegoWorldList : public MxPtrList<LegoWorld> {
{
return p_a == p_b ? 0 : p_a < p_b ? -1 : 1;
}; // vtable+0x14
// SYNTHETIC: LEGO1 0x10059a00
// LegoWorldList::`scalar deleting destructor'
};
// VTABLE: LEGO1 0x100d75b8
@ -47,6 +50,12 @@ class LegoWorldListCursor : public MxPtrListCursor<LegoWorld> {
// FUNCTION: LEGO1 0x1003e8e0
// MxPtrListCursor<LegoWorld>::~MxPtrListCursor<LegoWorld>
// SYNTHETIC: LEGO1 0x1003e930
// MxListCursor<LegoWorld *>::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1003e9a0
// MxPtrListCursor<LegoWorld>::`scalar deleting destructor'
// FUNCTION: LEGO1 0x1003ea10
// MxListCursor<LegoWorld *>::~MxListCursor<LegoWorld *>

View file

@ -31,6 +31,9 @@ class LegoWorldPresenter : public LegoEntityPresenter {
virtual MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
virtual void VTable0x60(MxPresenter* p_presenter) override; // vtable+0x60
// SYNTHETIC: LEGO1 0x10066750
// LegoWorldPresenter::`scalar deleting destructor'
private:
undefined4 m_unk0x50;
};

View file

@ -23,6 +23,9 @@ class Motocycle : public IslePathActor {
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100359d0
// Motocycle::`scalar deleting destructor'
private:
undefined m_unk0x160[4];
MxFloat m_unk0x164;

View file

@ -46,6 +46,9 @@ class MxBackgroundAudioManager : public MxCore {
void LowerVolume();
void RaiseVolume();
// SYNTHETIC: LEGO1 0x1007ec00
// MxBackgroundAudioManager::`scalar deleting destructor'
private:
void Init();
MxResult OpenMusic(MxAtomId& p_script);

View file

@ -45,6 +45,9 @@ class MxTransitionManager : public MxCore {
inline TransitionType GetTransitionType() { return m_transitionType; }
// SYNTHETIC: LEGO1 0x1004b9e0
// MxTransitionManager::`scalar deleting destructor'
private:
void EndTransition(MxBool p_notifyWorld);
void TransitionNone();

View file

@ -30,6 +30,9 @@ class Pizza : public IsleActor {
return !strcmp(p_name, Pizza::ClassName()) || IsleActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x100380e0
// Pizza::`scalar deleting destructor'
private:
undefined4 m_unk0x78;
undefined4 m_unk0x7c;

View file

@ -30,6 +30,9 @@ class PizzaMissionState : public LegoState {
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x10039350
// PizzaMissionState::`scalar deleting destructor'
private:
PizzaMissionStateEntry* GetState(MxU8 p_id);

View file

@ -19,6 +19,9 @@ class Pizzeria : public IsleActor {
{
return !strcmp(p_name, Pizzeria::ClassName()) || IsleActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000e8d0
// Pizzeria::`scalar deleting destructor'
};
#endif // PIZZERIA_H

View file

@ -21,6 +21,9 @@ class PizzeriaState : public LegoState {
{
return !strcmp(p_name, PizzeriaState::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10017ce0
// PizzeriaState::`scalar deleting destructor'
};
#endif // PIZZERIASTATE_H

View file

@ -25,6 +25,9 @@ class Police : public LegoWorld {
{
return !strcmp(p_name, Police::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1005e300
// Police::`scalar deleting destructor'
};
#endif // POLICE_H

View file

@ -19,6 +19,9 @@ class PoliceEntity : public BuildingEntity {
{
return !strcmp(p_name, PoliceEntity::ClassName()) || BuildingEntity::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000f900
// PoliceEntity::`scalar deleting destructor'
};
#endif // POLICEENTITY_H

View file

@ -21,6 +21,9 @@ class PoliceState : public LegoState {
{
return !strcmp(p_name, PoliceState::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1005e920
// PoliceState::`scalar deleting destructor'
};
#endif // POLICESTATE_H

View file

@ -24,6 +24,9 @@ class RaceCar : public IslePathActor {
return !strcmp(p_name, RaceCar::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10028400
// RaceCar::`scalar deleting destructor'
private:
// TODO: RaceCar fields
undefined m_unk0x160[4];

View file

@ -5,6 +5,9 @@
// VTABLE: LEGO1 0x100d48a8
// SIZE 0x68
class RaceStandsEntity : public BuildingEntity {};
class RaceStandsEntity : public BuildingEntity {
// SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor'
};
#endif // RACESTANDSENTITY_H

View file

@ -32,6 +32,9 @@ class RaceState : public LegoState {
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
// SYNTHETIC: LEGO1 0x100160d0
// RaceState::`scalar deleting destructor'
private:
RaceStateEntry* GetState(MxU8 p_id);

View file

@ -23,6 +23,9 @@ class Radio : public MxCore {
return !strcmp(p_name, Radio::ClassName()) || MxCore::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1002c970
// Radio::`scalar deleting destructor'
private:
RadioState* m_state; // 0x08
MxBool m_unk0xc; // 0x0c

View file

@ -21,6 +21,9 @@ class RadioState : public LegoState {
{
return !strcmp(p_name, RadioState::ClassName()) || LegoState::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1002d020
// RadioState::`scalar deleting destructor'
};
#endif // RADIOSTATE_H

View file

@ -24,6 +24,9 @@ class RegistrationBook : public LegoWorld {
{
return !strcmp(p_name, RegistrationBook::ClassName()) || LegoWorld::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x10076f30
// RegistrationBook::`scalar deleting destructor'
};
#endif // REGISTRATIONBOOK_H

View file

@ -26,6 +26,9 @@ class ScoreState : public LegoState {
inline MxBool GetTutorialFlag() { return m_playCubeTutorial; }
inline void SetTutorialFlag(MxBool p_playCubeTutorial) { m_playCubeTutorial = p_playCubeTutorial; }
// SYNTHETIC: LEGO1 0x1000df00
// ScoreState::`scalar deleting destructor'
private:
MxBool m_playCubeTutorial;
};

View file

@ -23,6 +23,9 @@ class SkateBoard : public IslePathActor {
return !strcmp(p_name, SkateBoard::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1000ff60
// SkateBoard::`scalar deleting destructor'
private:
// TODO: SkateBoard types
undefined m_unk0x160;

View file

@ -23,6 +23,9 @@ class TowTrack : public IslePathActor {
return !strcmp(p_name, TowTrack::ClassName()) || IslePathActor::IsA(p_name);
}
// SYNTHETIC: LEGO1 0x1004c950
// TowTrack::`scalar deleting destructor'
private:
// TODO: TowTrack field types
undefined m_unk0x154[4];

View file

@ -41,6 +41,9 @@ class TowTrackMissionState : public LegoState {
}
}
// SYNTHETIC: LEGO1 0x1004e060
// TowTrackMissionState::`scalar deleting destructor'
protected:
undefined4 m_unk0x08; // 0x08
undefined4 m_unk0x0c; // 0x0c

View file

@ -24,3 +24,9 @@ GifMapEntry* GifMap::FindNode(const char*& p_string)
}
return ret;
}
// STUB: LEGO1 0x10099870
GifManager::~GifManager()
{
// TODO
}

View file

@ -6,8 +6,14 @@ LegoPathController::LegoPathController()
// TODO
}
// STUB: LEGO1 0x10045740
LegoPathController::~LegoPathController()
// STUB: LEGO1 0x10045880
void LegoPathController::VTable0x14()
{
// TODO
}
// STUB: LEGO1 0x10045b20
void LegoPathController::Destroy()
{
// TODO
}

View file

@ -57,6 +57,9 @@ class Lego3DManager {
// ??? for now
ViewLODListManager* GetViewLODListManager();
// SYNTHETIC: LEGO1 0x100ab340
// Lego3DManager::`scalar deleting destructor'
private:
Tgl::Renderer* m_pRenderer; // 0x04

View file

@ -40,6 +40,9 @@ class LegoROI : public ViewROI {
inline LegoEntity* GetUnknown0x104() { return m_unk0x104; }
inline void SetUnknown0x104(LegoEntity* p_unk0x104) { m_unk0x104 = p_unk0x104; }
// SYNTHETIC: LEGO1 0x100a9ad0
// LegoROI::`scalar deleting destructor'
private:
undefined m_pad[0x24]; // 0xe0
LegoEntity* m_unk0x104; // 0x104

Some files were not shown because too many files have changed in this diff Show more