Skip to content

Commit

Permalink
Order functions in binary up to end of Act2Actor (#1312)
Browse files Browse the repository at this point in the history
* Order more functions

* Order LegoRaceActor

* Further ordering

* Order `Act2Actor`

* Fix
  • Loading branch information
foxtacles authored Jan 5, 2025
1 parent 72aa7e3 commit 7c452e9
Show file tree
Hide file tree
Showing 31 changed files with 406 additions and 424 deletions.
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -292,25 +292,25 @@ function(add_lego_libraries NAME)
LEGO1/lego/legoomni/src/actors/helicopter.cpp
LEGO1/lego/legoomni/src/worlds/gasstation.cpp
LEGO1/lego/legoomni/src/audio/legocachsound.cpp
LEGO1/lego/legoomni/src/actors/act2actor.cpp
LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
LEGO1/lego/legoomni/src/actors/buildingentity.cpp
LEGO1/lego/legoomni/src/actors/skateboard.cpp
LEGO1/lego/legoomni/src/entity/legoentity.cpp
LEGO1/lego/legoomni/src/audio/lego3dsound.cpp
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
LEGO1/lego/legoomni/src/race/legoracers.cpp
LEGO1/lego/legoomni/src/race/legoraceactor.cpp
LEGO1/lego/legoomni/src/common/legostate.cpp
LEGO1/lego/legoomni/src/actors/buildingentity.cpp
LEGO1/lego/legoomni/src/actors/buildings.cpp
LEGO1/lego/legoomni/src/common/misc.cpp
LEGO1/lego/legoomni/src/race/legorace.cpp
LEGO1/lego/legoomni/src/race/jetskirace.cpp
LEGO1/lego/legoomni/src/race/carrace.cpp
LEGO1/lego/legoomni/src/actors/pizzeria.cpp
LEGO1/lego/legoomni/src/worlds/elevatorbottom.cpp
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
LEGO1/lego/legoomni/src/actors/act2genactor.cpp
LEGO1/lego/legoomni/src/actors/act2actor.cpp
LEGO1/lego/legoomni/src/actors/islepathactor.cpp
LEGO1/lego/legoomni/src/paths/legopathstruct.cpp
LEGO1/lego/legoomni/src/paths/legoanimactor.cpp
Expand Down
24 changes: 17 additions & 7 deletions LEGO1/lego/legoomni/include/act2actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,23 @@ class Act2Actor : public LegoAnimActor {

Act2Actor();

void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) override; // vtable+0x68
void Animate(float p_time) override; // vtable+0x70
MxResult HitActor(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
MxS32 VTable0xa0() override; // vtable+0xa0
void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30

// FUNCTION: LEGO1 0x1001a180
MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) override
{
if (m_unk0x1f) {
return 0;
}

return LegoAnimActor::VTable0x68(p_v1, p_v2, p_v3);
} // vtable+0x68

void Animate(float p_time) override; // vtable+0x70
MxResult HitActor(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
MxS32 VTable0xa0() override; // vtable+0xa0

void FUN_10018980();
void FUN_10019250(MxFloat p_speed, MxFloat p_param2);
Expand Down
6 changes: 3 additions & 3 deletions LEGO1/lego/legoomni/include/act3.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ class Act3State : public LegoState {
public:
Act3State() { m_unk0x08 = 0; }

// FUNCTION: LEGO1 0x1000e2f0
MxBool IsSerializable() override { return FALSE; }

// FUNCTION: LEGO1 0x1000e300
// FUNCTION: BETA10 0x10017e10
const char* ClassName() const override // vtable+0x0c
Expand All @@ -68,9 +71,6 @@ class Act3State : public LegoState {
return !strcmp(p_name, Act3State::ClassName()) || LegoState::IsA(p_name);
}

// FUNCTION: LEGO1 0x1000e2f0
MxBool IsSerializable() override { return FALSE; }

// SYNTHETIC: LEGO1 0x1000e3c0
// Act3State::`scalar deleting destructor'

Expand Down
156 changes: 78 additions & 78 deletions LEGO1/lego/legoomni/include/buildings.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,152 +5,153 @@

class LegoEventNotificationParam;

// VTABLE: LEGO1 0x100d48a8
// VTABLE: BETA10 0x101bd818
// VTABLE: LEGO1 0x100d4b90
// VTABLE: BETA10 0x101bd610
// SIZE 0x68
class RaceStandsEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000efa0
// FUNCTION: BETA10 0x100a9820
class InfoCenterEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000ea00
// FUNCTION: BETA10 0x100a9230
const char* ClassName() const override // vtable+0x0c
{
// at LEGO1 0x100f0300, needs no annotation
return "RaceStandsEntity";
// STRING: LEGO1 0x100f035c
return "InfoCenterEntity";
}

// FUNCTION: LEGO1 0x1000efb0
// FUNCTION: LEGO1 0x1000ea10
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override;
MxLong HandleClick(LegoEventNotificationParam& p_param) override; // vtable+0x50

// SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f7b0
// InfoCenterEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d4a18
// VTABLE: BETA10 0x101bd7b0
// VTABLE: LEGO1 0x100d5258
// VTABLE: BETA10 0x101bd6e0
// SIZE 0x68
class BeachHouseEntity : public BuildingEntity {
class GasStationEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000ee80
// FUNCTION: BETA10 0x100a96f0
// FUNCTION: LEGO1 0x1000eb20
// FUNCTION: BETA10 0x100a9490
const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0314
return "BeachHouseEntity";
// STRING: LEGO1 0x100f0348
return "GasStationEntity";
}

// FUNCTION: LEGO1 0x1000ee90
// FUNCTION: LEGO1 0x1000eb30
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override;

// SYNTHETIC: LEGO1 0x1000f970
// BeachHouseEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f890
// GasStationEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d4ab0
// VTABLE: BETA10 0x101bd748
// VTABLE: LEGO1 0x100d5068
// VTABLE: BETA10 0x101bd678
// SIZE 0x68
class PoliceEntity : public BuildingEntity {
class HospitalEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000ed60
// FUNCTION: BETA10 0x100a95c0
// FUNCTION: LEGO1 0x1000ec40
// FUNCTION: BETA10 0x100a9360
const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0328
return "PoliceEntity";
// STRING: LEGO1 0x100f0338
return "HospitalEntity";
}

// FUNCTION: LEGO1 0x1000ed70
// FUNCTION: LEGO1 0x1000ec50
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, PoliceEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override; // vtable+0x50

// SYNTHETIC: LEGO1 0x1000f900
// PoliceEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f820
// HospitalEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d4b90
// VTABLE: BETA10 0x101bd610
// VTABLE: LEGO1 0x100d4ab0
// VTABLE: BETA10 0x101bd748
// SIZE 0x68
class InfoCenterEntity : public BuildingEntity {
class PoliceEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000ea00
// FUNCTION: BETA10 0x100a9230
// FUNCTION: LEGO1 0x1000ed60
// FUNCTION: BETA10 0x100a95c0
const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f035c
return "InfoCenterEntity";
// STRING: LEGO1 0x100f0328
return "PoliceEntity";
}

// FUNCTION: LEGO1 0x1000ea10
// FUNCTION: LEGO1 0x1000ed70
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, InfoCenterEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, PoliceEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override; // vtable+0x50

// SYNTHETIC: LEGO1 0x1000f7b0
// InfoCenterEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f900
// PoliceEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d5068
// VTABLE: BETA10 0x101bd678
// VTABLE: LEGO1 0x100d4a18
// VTABLE: BETA10 0x101bd7b0
// SIZE 0x68
class HospitalEntity : public BuildingEntity {
class BeachHouseEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000ec40
// FUNCTION: BETA10 0x100a9360
// FUNCTION: LEGO1 0x1000ee80
// FUNCTION: BETA10 0x100a96f0
const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0338
return "HospitalEntity";
// STRING: LEGO1 0x100f0314
return "BeachHouseEntity";
}

// FUNCTION: LEGO1 0x1000ec50
// FUNCTION: LEGO1 0x1000ee90
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, HospitalEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, BeachHouseEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override; // vtable+0x50
MxLong HandleClick(LegoEventNotificationParam& p_param) override;

// SYNTHETIC: LEGO1 0x1000f820
// HospitalEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f970
// BeachHouseEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d50c0
// VTABLE: BETA10 0x101bd880
// VTABLE: LEGO1 0x100d48a8
// VTABLE: BETA10 0x101bd818
// SIZE 0x68
class CaveEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000f1e0
// FUNCTION: BETA10 0x100a9950
class RaceStandsEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000efa0
// FUNCTION: BETA10 0x100a9820
const char* ClassName() const override // vtable+0x0c
{
// at LEGO1 0x100f0300, needs no annotation
return "RaceStandsEntity";
}

// FUNCTION: LEGO1 0x1000f1f0
// FUNCTION: LEGO1 0x1000efb0
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, CaveEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, RaceStandsEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override;

// SYNTHETIC: LEGO1 0x1000fa50
// CaveEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000f9e0
// RaceStandsEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d5200
Expand All @@ -177,29 +178,28 @@ class JailEntity : public BuildingEntity {
// JailEntity::`scalar deleting destructor'
};

// VTABLE: LEGO1 0x100d5258
// VTABLE: BETA10 0x101bd6e0
// VTABLE: LEGO1 0x100d50c0
// VTABLE: BETA10 0x101bd880
// SIZE 0x68
class GasStationEntity : public BuildingEntity {
public:
// FUNCTION: LEGO1 0x1000eb20
// FUNCTION: BETA10 0x100a9490
class CaveEntity : public BuildingEntity {
// FUNCTION: LEGO1 0x1000f1e0
// FUNCTION: BETA10 0x100a9950
const char* ClassName() const override // vtable+0x0c
{
// STRING: LEGO1 0x100f0348
return "GasStationEntity";
// at LEGO1 0x100f0300, needs no annotation
return "RaceStandsEntity";
}

// FUNCTION: LEGO1 0x1000eb30
// FUNCTION: LEGO1 0x1000f1f0
MxBool IsA(const char* p_name) const override // vtable+0x10
{
return !strcmp(p_name, GasStationEntity::ClassName()) || BuildingEntity::IsA(p_name);
return !strcmp(p_name, CaveEntity::ClassName()) || BuildingEntity::IsA(p_name);
}

MxLong HandleClick(LegoEventNotificationParam& p_param) override;

// SYNTHETIC: LEGO1 0x1000f890
// GasStationEntity::`scalar deleting destructor'
// SYNTHETIC: LEGO1 0x1000fa50
// CaveEntity::`scalar deleting destructor'
};

#endif // BUILDINGS_H
11 changes: 5 additions & 6 deletions LEGO1/lego/legoomni/include/elevatorbottom.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ class ElevatorBottom : public LegoWorld {

MxLong Notify(MxParam& p_param) override; // vtable+0x04

// FUNCTION: LEGO1 0x10017f10
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c

// FUNCTION: LEGO1 0x10017f20
// FUNCTION: BETA10 0x10028130
const char* ClassName() const override // vtable+0x0c
Expand All @@ -33,12 +36,8 @@ class ElevatorBottom : public LegoWorld {

MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void ReadyWorld() override; // vtable+0x50

// FUNCTION: LEGO1 0x10017f10
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c

MxBool Escape() override; // vtable+0x64
void Enable(MxBool p_enable) override; // vtable+0x68
MxBool Escape() override; // vtable+0x64
void Enable(MxBool p_enable) override; // vtable+0x68

// SYNTHETIC: LEGO1 0x10018040
// ElevatorBottom::`scalar deleting destructor'
Expand Down
20 changes: 10 additions & 10 deletions LEGO1/lego/legoomni/include/helicopter.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ class HelicopterState : public LegoState {
public:
HelicopterState() : m_unk0x08(0) {}

// FUNCTION: LEGO1 0x1000e0b0
MxBool IsSerializable() override { return FALSE; } // vtable+0x14

// FUNCTION: LEGO1 0x1000e0c0
MxBool Reset() override
{
m_unk0x08 = 0;
return TRUE;
} // vtable+0x18

// FUNCTION: LEGO1 0x1000e0d0
// FUNCTION: BETA10 0x100a7cc0
const char* ClassName() const override // vtable+0x0c
Expand All @@ -28,16 +38,6 @@ class HelicopterState : public LegoState {
return !strcmp(p_name, HelicopterState::ClassName()) || LegoState::IsA(p_name);
}

// FUNCTION: LEGO1 0x1000e0b0
MxBool IsSerializable() override { return FALSE; } // vtable+0x14

// FUNCTION: LEGO1 0x1000e0c0
MxBool Reset() override
{
m_unk0x08 = 0;
return TRUE;
} // vtable+0x18

// SYNTHETIC: LEGO1 0x1000e190
// HelicopterState::`scalar deleting destructor'

Expand Down
Loading

0 comments on commit 7c452e9

Please sign in to comment.