Decompiling MapObjectUnkMTJR (#151)

* feat: Decompile ctors, vfuncs and funcs

* feat: Decompile funcs

* feat: Add data and deal with bss etc

* feat: Sync jp

* feat: Add content to empty class

* feat: Match vfunc_00

* fix: Actor/MapObject Profile macro access cleanup

* feat: Overlay 63 cleanup

* fix: Add "non-matching" comments on functions

* fix: Remove comment
This commit is contained in:
Mityno
2026-09-28 17:23:47 +02:00
committed by GitHub
parent b40c9e9c50
commit 9712128579
21 changed files with 224 additions and 93 deletions
+119 -15
View File
@@ -1,26 +1,130 @@
//! TODO: This file was generated automatically and might contain errors
#include "MapObject/MapObjectUnkMTJR.hpp"
#include "System/SysNew.hpp"
#include "System/Random.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e0cec.hpp"
#include "flags.h"
#include "nitro/fx.h"
#include "nitro/math.h"
#include "profile.hpp"
// Overlay 31
extern "C" void func_ov031_020e0f30(ActorRef);
DECL_PROFILE(MapObjectProfileUnkMTJR);
MapObject *MapObjectProfileUnkMTJR::Create() {
return new(HeapIndex_2) MapObjectUnkMTJR();
return new(HeapIndex_ITCM) MapObjectUnkMTJR();
}
// non-matching
MapObjectProfileUnkMTJR::MapObjectProfileUnkMTJR() :
MapObjectProfile(MapObjectId_MTJR) {}
MapObjectProfileUnkSTAT_Base(MapObjectId_MTJR, MapObjectId_MTJR) {
mUnk_D4.mUnk_08 = 0x7009;
MapObjectUnkMTJR::MapObjectUnkMTJR() {}
VecFx32_Init(0, 0, 0, &mUnk_D4.mUnk_0C);
mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.7f);
mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(2.4f);
void MapObjectUnkMTJR::func_ov063_02160ffc(void) {}
void MapObjectUnkMTJR::func_ov063_02161070(void) {}
void MapObjectUnkMTJR::func_ov063_021611ac(void) {}
void MapObjectUnkMTJR::func_ov063_021611c0(void) {}
void MapObjectUnkMTJR::func_ov063_02161254(void) {}
void MapObjectUnkMTJR::func_ov063_02161288(void) {}
void MapObjectUnkMTJR::func_ov063_02161380(void) {}
mUnk_06 = -1;
UNSET_FLAG2(mUnk_1E, 0x0);
}
MapObjectUnkMTJR::~MapObjectUnkMTJR() {}
MapObjectProfileUnkMTJR::~MapObjectProfileUnkMTJR() {}
MapObjectUnkMTJR::MapObjectUnkMTJR() :
mUnk_40(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileUnkMTJR))),
mUnk_A0(2),
mUnk_A4(0),
mUnk_A6(0),
mUnk_A8(NULL),
mUnk_AC(-1),
mUnk_B0(0) {}
bool MapObjectUnkMTJR::vfunc_00() {
if (!this->func_ov000_0209d29c(0)) {
return false;
}
mPos.x += FLOAT_TO_FX32(.5f);
mPos.z += FLOAT_TO_FX32(.5f);
mUnk_10 = GET_PROFILE_D4(MapObjectProfileUnkMTJR);
mUnk_AC = 0x86F;
mUnk_B0 = 4;
mUnk_A8.func_ov000_020a0334();
this->func_ov063_02161254(0);
return true;
}
// non-matching
void MapObjectUnkMTJR::vfunc_08() {
if (mUnk_A0 == 0) {
fx32 tmp_x = mPos.x - FLOAT_TO_FX32(1.f) + (fx32) gRandom.Next32(0);
fx32 tmp_y = mPos.y + (fx32) gRandom.Next32(0x1801);
fx32 tmp_z = mPos.z - FLOAT_TO_FX32(1.f) + (fx32) gRandom.Next32(0);
VecFx32 stack_vec = {tmp_x, tmp_y, tmp_z};
data_027e0cec->func_ov000_020a0220(&mUnk_A8, &stack_vec);
}
if (mUnk_A4 < mUnk_A6) {
mUnk_A4++;
}
}
void MapObjectUnkMTJR::vfunc_0C() {
this->vfunc_08();
}
bool MapObjectUnkMTJR::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
switch (param2) {
case 13:
this->func_ov063_02161254(1);
func_ov031_020e0f30(param1);
break;
case 0:
case 1:
case 7:
case 8:
this->func_ov063_02161254(1);
break;
case 3:
case 12:
this->func_ov063_02161254(1);
return false;
break;
case 10:
case 11:
this->func_ov063_02161254(1);
break;
case 2:
case 4:
case 5:
case 6:
case 9:
default:
break;
}
return true;
}
void MapObjectUnkMTJR::func_ov063_02161254(unk32 param1) {
mUnk_A0 = param1;
mUnk_A6 = -1;
mUnk_A4 = 0;
if (param1 != 0 && param1 == 1) {
this->func_ov063_02161288();
}
}
void MapObjectUnkMTJR::func_ov063_02161288(void) {
data_027e09a8->func_ov000_02071b30(0xFC, &mPos, 0);
data_027e09a8->func_ov000_02071eac(&mPos);
VecFx32 vec = mPos;
data_027e0cec->func_ov000_0209feac(0xCC17, &vec, 4, 0, 0);
data_027e0cec->func_ov000_0209feac(0xCC18, &vec, 4, 0, 0);
data_027e0cec->func_ov000_0209feac(0xCC19, &vec, 4, 0, 0);
data_027e0cec->func_ov000_0209feac(0xCC1A, &vec, 4, 0, 0);
this->func_ov000_0209d2c4(1, true);
UNSET_FLAG(mFlags, 0);
}
void MapObjectUnkMTJR::vfunc_14() {
this->func_ov000_0209d518(&mPos, 0xD9A, 0xD9A, 0x1F);
mUnk_40.vfunc_18(&mPos);
}