Decompile overlay 0 map objects (#49)

* add missing scratch link

* ActorUnk_ov000_020a8bb0_a4_00 -> UnkSystem4

* match mapobj switch step

* SWST -> SwitchStep

* dsd format

* fix playerget regression

* fix fake match

* BLCM -> MiniBlocks

* match mapobj miniblocks

* minor improvement

* fix regressions
This commit is contained in:
Yanis
2026-04-14 21:39:26 +02:00
committed by GitHub
parent 59a312e30a
commit 24d9e00c80
114 changed files with 1225 additions and 710 deletions
+35 -13
View File
@@ -9,7 +9,7 @@
#include "nitro/math.h"
#include "types.h"
typedef u32 MapObjFlags;
typedef u16 MapObjFlags;
enum MapObjFlag_ {
MapObjFlag_Alive = FLAG(0, 0),
MapObjFlag_1 = FLAG(0, 1),
@@ -57,28 +57,33 @@ public:
/* 1A */ unk8 mUnk_1A;
/* 1B */ unk8 mUnk_1B;
/* 1C */ MapObjFlags mFlags[1];
/* 20 */ unk32 mUnk_20;
/* 20 */ unk32 mUnk_24;
/* 20 */ unk32 mUnk_28;
/* 20 */ unk32 mUnk_2C;
/* 20 */ unk32 mUnk_30;
/* 20 */ unk32 mUnk_34;
/* 38 */ unk32 mUnk_38;
/* 1E */ unk16 mUnk_1E;
/* 20 */ u16 mUnk_20;
/* 22 */ u16 mUnk_22;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */ unk32 mUnk_30;
/* 34 */ unk32 mUnk_34;
/* 38 */ unk8 mUnk_38;
/* 38 */ unk8 mUnk_39;
/* 3A */ Vec2b mUnk_3A;
/* 3C */ MapObjectProfile *mpProfile;
/* 40 */
/* 00 */ virtual void vfunc_00();
// data_ov000_020b3590
/* 00 */ virtual bool vfunc_00();
/* 04 */ virtual bool vfunc_04();
/* 08 */ virtual unk16 vfunc_08();
/* 0c */ virtual unk8 vfunc_0c();
/* 0C */ virtual unk8 vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual bool vfunc_18();
/* 1c */ virtual void vfunc_1c();
/* 18 */ virtual void vfunc_18();
/* 1C */ virtual void vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2c */ virtual void vfunc_2c();
/* 2C */ virtual void vfunc_2C();
/* 30 */ virtual ~MapObject();
/* 38 */
@@ -86,6 +91,23 @@ public:
MapObjectId GetMapObjectId();
void func_ov000_0209d0bc();
void func_ov000_0209d114();
void func_ov000_0209d12c();
void func_ov000_0209d144();
void func_ov000_0209d22c();
void func_ov000_0209d274();
unk32 func_ov000_0209d29c(unk32 param1);
void func_ov000_0209d2c4(unk32 param1, unk32 param2);
void func_ov000_0209d2f0();
void func_ov000_0209d3b4();
void func_ov000_0209d434();
void func_ov000_0209d518();
void func_ov000_0209d54c();
void func_ov000_0209d5c8();
void func_ov000_0209d614();
void func_ov000_0209d668();
void func_ov000_0209d6ac(Vec3p *param1);
void func_ov031_02103878();
};
+36
View File
@@ -0,0 +1,36 @@
#pragma once
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "Unknown/Common.hpp"
#include "global.h"
#include "types.h"
class MapObjectMiniBlocks : public MapObject {
public:
/* 00 (base) */
/* 40 */ UnkSystem6 mUnk_40;
/* 44 */ unk32 mUnk_44;
/* 48 */ unk8 mUnk_48;
/* 49 */ unk8 mUnk_49; // pad?
/* 4A */ unk16 mUnk_4A; // pad?
/* 4C */
MapObjectMiniBlocks();
/* 00 */ virtual bool vfunc_00() override;
/* 14 */ virtual void vfunc_14() override;
/* 30 */ virtual ~MapObjectMiniBlocks() override;
};
class MapObjectProfileMiniBlocks : public MapObjectProfile_Derived1 {
public:
/* 00 (base) */
MapObjectProfileMiniBlocks();
/* 00 */ virtual MapObject *Create();
/* 1C */ virtual ~MapObjectProfileMiniBlocks() override;
static MapObjectProfileMiniBlocks *GetProfile();
};
+50 -23
View File
@@ -40,6 +40,7 @@ public:
/* 0C */
MapObjectProfile_D4() {}
~MapObjectProfile_D4() {}
/* 00 */ virtual void vfunc_00(void);
/* 04 */ virtual void vfunc_04(void);
@@ -55,7 +56,7 @@ class MapObjectProfile : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ unk8 mUnk_04[2];
/* 06 */ u8 mUnk_06;
/* 06 */ s8 mUnk_06;
/* 07 */ unk8 mUnk_07;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk16 mUnk_0C;
@@ -66,10 +67,11 @@ public:
/* 18 */ unk32 mUnk_18;
/* 1C */ unk8 mUnk_1C;
/* 1D */ unk8 mUnk_1D;
/* 1E */ unk16 mUnk_1E;
/* 1E */ u16 mUnk_1E;
/* 20 */
MapObjectProfile(MapObjectId mapObjId); // func_ov000_0209c828
~MapObjectProfile();
// data_ov000_020b3524
/* 00 */ virtual MapObject *Create() = 0;
@@ -80,12 +82,14 @@ public:
/* 14 */
};
class MapObjectProfile_Derived2_20;
class MapObjectProfile_Derived1_20 {
public:
/* 00 */ unk32 mUnk_00;
/* 00 */ MapObjectProfile_Derived2_20 *mUnk_00;
MapObjectProfile_Derived1_20() {
this->mUnk_00 = 0;
this->mUnk_00 = NULL;
}
};
@@ -96,15 +100,19 @@ public:
/* 60 */ unk32 mUnk_60;
/* 64 */ unk16 mUnk_64;
/* 66 */ unk16 mUnk_66;
/* 68 */ MapObjectProfile_D4 mUnk_68;
/* 74 */ unk32 mUnk_74;
/* 78 */ unk32 mUnk_78;
/* 7C */ unk32 mUnk_7C;
/* 80 */ unk32 mUnk_80;
/* 84 */ unk32 mUnk_84;
/* 88 */
/* 68 */
MapObjectProfile_Derived1(MapObjectId mapObjId); // func_ov000_0209cb4c
MapObjectProfile_Derived1(MapObjectId mapObjId, unk32 param2, unk32 param3); // func_ov000_0209cb4c
// data_ov000_020b3540
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual ~MapObjectProfile_Derived1();
/* 1C */ virtual MapObjectProfile_Derived2_20 *vfunc_1C(unk32 param1);
void func_ov000_0209ccd8(unk32 param1, u32 param2);
};
class MapObjectProfile_Derived2_20_Base_18 {
@@ -118,8 +126,8 @@ public:
class MapObjectProfile_Derived2_20_Base_20 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 00 */ void *mUnk_00;
/* 04 */ void *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */
@@ -127,6 +135,23 @@ public:
unk32 param5); // func_020153fc
};
class MapObjectProfile_Derived2_20_Base_50 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ u8 mUnk_08;
/* 08 */ u8 mUnk_09;
/* 08 */ u8 mUnk_0A;
/* 08 */ u8 mUnk_0B;
/* 0C */ unk8 mUnk_0C;
/* 0C */ unk8 mUnk_0D;
/* 0C */ u16 mUnk_0E;
/* 10 */
MapObjectProfile_Derived2_20_Base_50();
~MapObjectProfile_Derived2_20_Base_50();
};
class MapObjectProfile_Derived2_20_Base_54 {
public:
/* 00 */ unk32 mUnk_00;
@@ -142,10 +167,10 @@ public:
class MapObjectProfile_Derived2_20_Base {
public:
/* 00 (vtable) */
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 04 */ const char *mUnk_04;
/* 08 */ void *mUnk_08;
/* 0C */ void *mUnk_0C;
/* 10 */ void *mUnk_10;
/* 14 */ unk8 mUnk_14; // bool?
/* 15 */ unk8 mUnk_15; // bool?
/* 16 */ unk8 mUnk_16; // bool?
@@ -154,7 +179,7 @@ public:
/* 20 */ MapObjectProfile_Derived2_20_Base_20 mUnk_20;
/* 2C */ UnkFileSystem3 mUnk_2C;
/* 3C */ UnkFileSystem5 mUnk_3C;
/* 50 */ unk32 mUnk_50;
/* 50 */ MapObjectProfile_Derived2_20_Base_50 *mUnk_50;
/* 54 */ MapObjectProfile_Derived2_20_Base_54 mUnk_54[4];
/* 94 */
@@ -184,23 +209,25 @@ public:
// data_ov000_020b3568
/* 00 */ virtual ~MapObjectProfile_Derived2_20() override;
unk32 func_ov000_02058a24();
unk32 func_ov000_02058a84(unk32 param1, const char *param2);
};
class MapObjectProfile_Derived2 : public MapObjectProfile {
public:
/* 00 (base) */
/* 20 */ MapObjectProfile_Derived2_20 mUnk_20;
/* D4 */ MapObjectProfile_D4 mUnk_D4;
/* E0 */ Vec3p mUnk_E0;
/* EC */ Vec3p mUnk_EC;
/* F8 */
/* D4 */
MapObjectProfile_Derived2(MapObjectId mapObjId1, MapObjectId mapObjId2); // func_ov000_0209c9a8
~MapObjectProfile_Derived2();
// data_ov000_020b3508
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
/* 10 */ virtual void vfunc_10() override;
};
typedef MapObjectProfile *(*GetMapObjectProfile)();
+79
View File
@@ -0,0 +1,79 @@
#pragma once
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "Unknown/Common.hpp"
#include "global.h"
#include "types.h"
class MapObjectSwitchStep_40 : public UnkSystem4 {
public:
/* 00 (base) */
/* 60 */ unk16 mUnk_60;
/* 62 */ bool mUnk_62;
/* 63 */ unk8 mUnk_63;
/* 64 */
MapObjectSwitchStep_40();
// data_ov000_020b36e0
/* 00 */ virtual ~MapObjectSwitchStep_40() override {}
/* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1) override;
void func_ov000_0209dde0(void);
};
class MapObjectSwitchStep : public MapObject {
public:
/* 00 (base) */
/* 40 */ MapObjectSwitchStep_40 mUnk_40;
/* A4 */ UnkSystem5 mUnk_A4;
/* C4 */ unk32 mUnk_C4;
/* C8 */ STRUCT_PAD(0xC8, 0xE4);
/* E4 */ u16 mUnk_E4;
/* E6 */ u16 mUnk_E6;
/* E8 */ unk16 mUnk_E8;
/* EA */ unk8 mUnk_EA;
/* EB */ unk8 mUnk_EB;
/* EC */
MapObjectSwitchStep();
/* 00 */ virtual bool vfunc_00() override;
/* 08 */ virtual unk16 vfunc_08() override;
/* 14 */ virtual void vfunc_14() override;
/* 18 */ virtual void vfunc_18() override;
/* 20 */ virtual void vfunc_20() override;
/* 30 */ virtual ~MapObjectSwitchStep() override;
void func_ov000_0209dda4(void);
void func_ov000_0209e11c(unk32 param1, unk32 param2);
void func_ov000_0209e38c(void);
};
class MapObjectProfileSwitchStep_Base : public MapObjectProfile_Derived2 {
public:
/* 00 (base) */
/* D4 */ MapObjectProfile_D4 mUnk_D4;
MapObjectProfileSwitchStep_Base(MapObjectId mapObjId) :
MapObjectProfile_Derived2(mapObjId, mapObjId) {}
// data_ov000_020b369c (vtable)
};
class MapObjectProfileSwitchStep : public MapObjectProfileSwitchStep_Base {
public:
/* 00 (base) */
/* E0 */ Vec3p mUnk_E0;
/* EC */ Vec3p mUnk_EC;
/* F8 */
MapObjectProfileSwitchStep();
~MapObjectProfileSwitchStep() {}
/* 00 */ virtual MapObject *Create();
static MapObjectProfileSwitchStep *GetProfile();
};
-33
View File
@@ -1,33 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "global.h"
#include "types.h"
class MapObjectUnkBLCM : public MapObject {
public:
/* 00 (base) */
/* 40 */
MapObjectUnkBLCM();
/* 30 */ virtual ~MapObjectUnkBLCM() override;
void func_ov000_0209e4b0(void);
void func_ov000_0209e6ac(void);
};
class MapObjectProfileUnkBLCM : public MapObjectProfile {
public:
/* 00 (base) */
MapObjectProfileUnkBLCM();
~MapObjectProfileUnkBLCM();
/* 0C */ virtual MapObject *Create();
static MapObjectProfileUnkBLCM *GetProfile();
};
-41
View File
@@ -1,41 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "global.h"
#include "types.h"
class MapObjectUnkSWST : public MapObject {
public:
/* 00 (base) */
/* 40 */
MapObjectUnkSWST();
/* 30 */ virtual ~MapObjectUnkSWST() override;
void func_ov000_0209dda4(void);
void func_ov000_0209dde0(void);
void func_ov000_0209de10(void);
void func_ov000_0209df9c(void);
void func_ov000_0209e068(void);
void func_ov000_0209e11c(void);
void func_ov000_0209e280(void);
void func_ov000_0209e2b4(void);
void func_ov000_0209e38c(void);
void func_ov000_0209e3c8(void);
};
class MapObjectProfileUnkSWST : public MapObjectProfile {
public:
/* 00 (base) */
MapObjectProfileUnkSWST();
~MapObjectProfileUnkSWST();
/* 0C */ virtual MapObject *Create();
static MapObjectProfileUnkSWST *GetProfile();
};