Decompiling MapObject UnkTSUB (aka Pot) (#101)

* feat: begin decompilation of UnkTsub

* refactor: rename mapobject

* feat: delink

* feat: introduce virtual functions

* fix: rename map object in jp delink

* feat: match 91% of the mapobject

* feat: increate .data match

* refactor: rename ModelRender2 with its vtable address

* style: remove empty lines

* refactor: change magic value
This commit is contained in:
Alessevan
2026-07-05 13:35:40 +02:00
committed by GitHub
parent 33299ac188
commit 9987fee73a
20 changed files with 362 additions and 151 deletions
+2 -2
View File
@@ -141,7 +141,7 @@ public:
/* 18 */ virtual void vfunc_18(s8 *param1, s8 param2);
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3);
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2);
/* 28 */ virtual unk32 vfunc_28();
/* 2C */ virtual bool vfunc_2C(VecFx32 *param1);
/* 30 */ virtual ~MapObject();
@@ -176,7 +176,7 @@ public:
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3);
void func_ov000_0209d3b4(unk32 param1, fx32 size);
void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3);
void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4);
void func_ov000_0209d518(VecFx32 *param1, unk32 param2, unk32 param3, u8 param4);
void func_ov000_0209d5c8(ActorRef ref);
void func_ov000_0209d614(unk32 param1);
bool func_ov000_0209d668();
+40
View File
@@ -0,0 +1,40 @@
#pragma once
#include "Actor/ActorId.hpp"
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "MapObject_ov031.hpp"
#include "global.h"
#include "types.h"
class MapObjectPot : public MapObjectPot_Base {
public:
/* 00 (base) */
/* 40 */ ActorId mUnk_40;
/* 44 */ STRUCT_PAD(0x44, 0x48);
/* 48 */ ModelRender_ov000_020b198c mUnk_48;
MapObjectPot();
/* 04 */ virtual void vfunc_04() override; // func_ov031_02105088
/* 14 */ virtual void vfunc_14() override; // func_ov031_021052cc
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3); // func_ov031_021050b4
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov031_02105348
/* 30 */ virtual ~MapObjectPot() override;
/* 3C */ virtual bool vfunc_3C() override; // func_ov031_021053b4
/* 40 */ virtual bool vfunc_40() override; // func_ov031_021053fc
/* 48 */ virtual void vfunc_48() override; // func_ov031_021051d4
/* 54 */ virtual unk32 vfunc_54() override; // func_ov031_02105310
};
class MapObjectProfilePot : public MapObjectProfilePot_Base {
public:
/* 00 (base) */
MapObjectProfilePot();
~MapObjectProfilePot();
/* 0C */ virtual MapObject *Create();
static MapObjectProfilePot *GetProfile();
};
-39
View File
@@ -1,39 +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 MapObjectUnkTSUB : public MapObject {
public:
/* 00 (base) */
/* 40 */
MapObjectUnkTSUB();
/* 30 */ virtual ~MapObjectUnkTSUB() override;
void func_ov031_02105088(void);
void func_ov031_021050b4(void);
void func_ov031_021051d4(void);
void func_ov031_021052cc(void);
void func_ov031_02105310(void);
void func_ov031_02105348(void);
void func_ov031_021053b4(void);
void func_ov031_021053fc(void);
};
class MapObjectProfileUnkTSUB : public MapObjectProfile {
public:
/* 00 (base) */
MapObjectProfileUnkTSUB();
~MapObjectProfileUnkTSUB();
/* 0C */ virtual MapObject *Create();
static MapObjectProfileUnkTSUB *GetProfile();
};
+45
View File
@@ -0,0 +1,45 @@
#pragma once
class MapObjectPot_Base : public MapObject {
public:
/* 00 (base) */
/* 40 */
MapObjectPot_Base();
// data_ov000_020b35d0
/* 00 */ virtual bool vfunc_00(); // func_ov000_0209d780
/* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov000_0209d8e8
/* 28 */ virtual unk32 vfunc_28() override; // func_ov000_0209d9f8
/* 30 */ virtual ~MapObjectPot_Base() = 0 override;
/* 38 */ virtual void vfunc_38() override; // func_ov000_0209d9ac
/* 3C */ virtual bool vfunc_3C() override; // func_ov000_0209db74
/* 40 */ virtual bool vfunc_40() override; // func_ov000_0209db7c
/* 44 */ virtual void vfunc_44(unk32, unk32) override; // func_ov000_0209d7a4
/* 48 */ virtual void vfunc_48() override; // func_ov000_0209da60
/* 4C */ virtual void vfunc_4C() override; // func_ov000_0209da70
/* 50 */ virtual void vfunc_50() override; // func_ov000_0209dac0
/* 54 */ virtual unk32 vfunc_54() override; // func_ov000_0209da64
// overlay 0
void func_ov000_0209d8e8(MapObjectPot_Base *param1, fx32 param2);
unk32 func_ov000_0209da64();
};
class MapObject_10_Pot : public MapObject_10 {
public:
/* 00 (base) */
/* 24 */
MapObject_10_Pot() {}
};
class MapObjectProfilePot_Base : public MapObjectProfile_Derived2 {
public:
/* 00 (base) */
/* D4 */ MapObject_10_Pot mUnk_D4;
MapObjectProfilePot_Base(MapObjectId param1, MapObjectId param2) :
MapObjectProfile_Derived2(param1, param2) {}
};
+24
View File
@@ -101,6 +101,30 @@ public:
void func_01ffc6d4(u16 angle, VecFx32 *pos);
};
class ModelRender_ov000_020b198c : public ModelRenderBase {
public:
/* 00 (base) */
/* 08 */ unk8 mUnk_08;
/* 09 */ STRUCT_PAD(0x09, 0x0A);
/* 0A */ unk16 mUnk_0A;
/* 0C */ unk16 mUnk_0C;
/* 0E */
// func_ov000_020578e8
ModelRender_ov000_020b198c(G3d_Model *pModel, unk8 param2);
// data_ov000_020b198c
/* 00 */ virtual ~ModelRender_ov000_020b198c() override {}
/* 08 */ virtual void vfunc_08(G3d_Model *pModel) override; // func_ov000_02057908
/* 0C */ virtual void vfunc_0C() override; // func_ov000_0205793c
/* 10 */ virtual void vfunc_10(VecFx32 *param1, Mat3p *param2, VecFx32 *param3) override;
/* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) override;
/* 18 */ virtual void vfunc_18(VecFx32 *param1) override;
void func_ov000_02057ed8(G3d_Model *pModel);
unk32 func_ov000_02057ef4();
};
class UnkSystem5 {
public:
/* 00 */ G3d_Model *mpModel;
+1 -1
View File
@@ -10,7 +10,7 @@ public:
UnkStruct_027e09b4();
~UnkStruct_027e09b4();
void func_01fff60c(unk32 param1, unk32 param2, unk32 param3, u8 param4, unk32 param5, unk32 param6);
void func_01fff60c(VecFx32 *param1, unk32 param2, unk32 param3, u8 param4, unk32 param5, unk32 param6);
void func_ov017_020c08c4(VecFx32 *param1, unk32 param2, unk32 param3, s32 param4, s32 param5, s32 param6);
};
+1
View File
@@ -10,6 +10,7 @@ public:
UnkStruct_027e0d38();
~UnkStruct_027e0d38();
bool func_ov031_020d9c04(unk32 param1, unk32 param2, unk32 param3);
void func_ov031_020d9c44(unk32 param1);
};