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
@@ -92,6 +92,7 @@ src/063_Shrine/MapObject/MapObjectUnkMTJR.cpp:
.text start:0x02160e98 end:0x02161430
.init start:0x02162da0 end:0x02162df0
.ctor start:0x02162e70 end:0x02162e74
.data start:0x02163a94 end:0x02163af0
.bss start:0x02164800 end:0x02164904
src/063_Shrine/MapObject/MapObjectUnkSWCR.cpp:
+3 -3
View File
@@ -1215,12 +1215,12 @@ from:0x02160f4c kind:load to:0x02163858 add:0x8 module:overlay(63)
from:0x02160f50 kind:load to:0x02163a94 add:0x8 module:overlay(63)
from:0x02160f6c kind:arm_call to:0x0209cfe0 module:overlay(0)
from:0x02160fc4 kind:arm_call_thumb to:0x02057b70 module:overlay(0)
from:0x02160ff4 kind:load to:0x02163ab8 module:overlay(63)
from:0x02160ff4 kind:load to:0x02163ab0 module:overlay(63) add:0x8
from:0x02160ff8 kind:load to:0x02164810 module:overlay(63)
from:0x0216100c kind:arm_call to:0x0209d29c module:overlay(0)
from:0x02161050 kind:arm_call to:0x020a0334 module:overlay(0)
from:0x0216105c kind:arm_call to:0x02161254 module:overlay(63)
from:0x02161068 kind:load to:0x021648e4 module:overlay(63)
from:0x02161068 kind:load to:0x02164810 add:0xd4 module:overlay(63)
from:0x0216117c kind:arm_call to:0x020a0220 module:overlay(0)
from:0x021611a0 kind:load to:0x02049be4 module:main
from:0x021611a8 kind:load to:0x027e0cec module:dtcm
@@ -1255,7 +1255,7 @@ from:0x02161480 kind:arm_call to:0x0207c018 module:overlay(0)
from:0x021614e0 kind:load to:0x02163820 add:0x8 module:overlay(63)
from:0x021614e4 kind:load to:0x02163858 add:0x8 module:overlay(63)
from:0x021614e8 kind:load to:0x02163b0c module:overlay(63)
from:0x02161508 kind:load to:0x02163af8 module:overlay(63)
from:0x02161508 kind:load to:0x02163af0 module:overlay(63) add:0x8
from:0x02161518 kind:load to:0x0216153c module:overlay(63)
from:0x02161528 kind:load to:0x021615c4 module:overlay(63)
from:0x02161538 kind:load to:0x02161638 module:overlay(63)
+9 -10
View File
@@ -322,13 +322,13 @@ _ZN23MapObjectProfileUnkMTJR10GetProfileEv kind:function(arm,size=0xc) addr:0x02
_ZN23MapObjectProfileUnkMTJR6CreateEv kind:function(arm,size=0x24) addr:0x02160ea4
_ZN23MapObjectProfileUnkMTJRC1Ev kind:function(arm,size=0x9c) addr:0x02160ec8
_ZN16MapObjectUnkMTJRC1Ev kind:function(arm,size=0x98) addr:0x02160f64
_ZN16MapObjectUnkMTJR19func_ov063_02160ffcEv kind:function(arm,size=0x74) addr:0x02160ffc
_ZN16MapObjectUnkMTJR19func_ov063_02161070Ev kind:function(arm,size=0x13c) addr:0x02161070
_ZN16MapObjectUnkMTJR19func_ov063_021611acEv kind:function(arm,size=0x14) addr:0x021611ac
_ZN16MapObjectUnkMTJR19func_ov063_021611c0Ev kind:function(arm,size=0x94) addr:0x021611c0
_ZN16MapObjectUnkMTJR19func_ov063_02161254Ev kind:function(arm,size=0x34) addr:0x02161254
_ZN16MapObjectUnkMTJR8vfunc_00Ev kind:function(arm,size=0x74) addr:0x02160ffc
_ZN16MapObjectUnkMTJR8vfunc_08Ev kind:function(arm,size=0x13c) addr:0x02161070
_ZN16MapObjectUnkMTJR8vfunc_0CEv kind:function(arm,size=0x14) addr:0x021611ac
_ZN16MapObjectUnkMTJR8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x94) addr:0x021611c0
_ZN16MapObjectUnkMTJR19func_ov063_02161254Ei kind:function(arm,size=0x34) addr:0x02161254
_ZN16MapObjectUnkMTJR19func_ov063_02161288Ev kind:function(arm,size=0xf8) addr:0x02161288
_ZN16MapObjectUnkMTJR19func_ov063_02161380Ev kind:function(arm,size=0x44) addr:0x02161380
_ZN16MapObjectUnkMTJR8vfunc_14Ev kind:function(arm,size=0x44) addr:0x02161380
_ZN16MapObjectUnkMTJRD1Ev kind:function(arm,size=0x28) addr:0x021613c4
_ZN16MapObjectUnkMTJRD0Ev kind:function(arm,size=0x30) addr:0x021613ec
_ZN23MapObjectProfileUnkMTJRD1Ev kind:function(arm,size=0x14) addr:0x0216141c
@@ -490,9 +490,9 @@ _ZTV28MapObjectProfileUnkLTRW_Base kind:data(any) addr:0x021639f4
_ZTV23MapObjectProfileUnkLTRW kind:data(any) addr:0x02163a10
_ZTV31MapObjectProfileUnkLTRW_Base_D4 kind:data(any) addr:0x02163a2c
_ZTV16MapObjectUnkLTRW kind:data(any) addr:0x02163a54
data_ov063_02163a9c kind:data(any) addr:0x02163a94
data_ov063_02163ab8 kind:data(any) addr:0x02163ab8
data_ov063_02163af8 kind:data(any) addr:0x02163af8
_ZTV23MapObjectProfileUnkMTJR kind:data(any) addr:0x02163a94
_ZTV16MapObjectUnkMTJR kind:data(any) addr:0x02163ab0
data_ov063_02163af8 kind:data(any) addr:0x02163af0
data_ov063_02163b0c kind:data(any) addr:0x02163b0c
data_ov063_02163b28 kind:data(any) addr:0x02163b28
_ZGVN15ProfileInstanceI19ActorProfileUnkCANSE8sProfileE kind:bss addr:0x02163b60
@@ -539,7 +539,6 @@ _ZN15ProfileInstanceI23MapObjectProfileUnkLTRWE8sProfileE kind:bss addr:0x021647
_ZGVN15ProfileInstanceI23MapObjectProfileUnkMTJRE8sProfileE kind:bss addr:0x02164800
@12263 kind:bss addr:0x02164804
_ZN15ProfileInstanceI23MapObjectProfileUnkMTJRE8sProfileE kind:bss addr:0x02164810
data_ov063_021648e4 kind:bss addr:0x021648e4
_ZGVN15ProfileInstanceI23MapObjectProfileUnkSWCRE8sProfileE kind:bss addr:0x02164904
@12269 kind:bss addr:0x02164908
_ZN15ProfileInstanceI23MapObjectProfileUnkSWCRE8sProfileE kind:bss addr:0x02164914
@@ -92,6 +92,7 @@ src/063_Shrine/MapObject/MapObjectUnkMTJR.cpp:
.text start:0x02162cb0 end:0x02163248
.init start:0x02164bb8 end:0x02164c08
.ctor start:0x02164c88 end:0x02164c8c
.data start:0x021658b4 end:0x02165910
.bss start:0x02166620 end:0x02166724
src/063_Shrine/MapObject/MapObjectUnkSWCR.cpp:
+3 -3
View File
@@ -1223,12 +1223,12 @@ from:0x02162d64 kind:load to:0x02165678 add:0x8 module:overlay(63)
from:0x02162d68 kind:load to:0x021658b4 add:0x8 module:overlay(63)
from:0x02162d84 kind:arm_call to:0x0209e7a4 module:overlay(0)
from:0x02162ddc kind:arm_call_thumb to:0x020590f0 module:overlay(0)
from:0x02162e0c kind:load to:0x021658d8 module:overlay(63)
from:0x02162e0c kind:load to:0x021658d0 module:overlay(63) add:0x8
from:0x02162e10 kind:load to:0x02166630 module:overlay(63)
from:0x02162e24 kind:arm_call to:0x0209ea60 module:overlay(0)
from:0x02162e68 kind:arm_call to:0x020a1b0c module:overlay(0)
from:0x02162e74 kind:arm_call to:0x0216306c module:overlay(63)
from:0x02162e80 kind:load to:0x02166704 module:overlay(63)
from:0x02162e80 kind:load to:0x02166630 add:0xd4 module:overlay(63)
from:0x02162f94 kind:arm_call to:0x020a19f8 module:overlay(0)
from:0x02162fb8 kind:load to:0x0204b164 module:main
from:0x02162fc0 kind:load to:0x027e0cec module:dtcm
@@ -1263,7 +1263,7 @@ from:0x02163298 kind:arm_call to:0x0207d6d0 module:overlay(0)
from:0x021632f8 kind:load to:0x02165640 add:0x8 module:overlay(63)
from:0x021632fc kind:load to:0x02165678 add:0x8 module:overlay(63)
from:0x02163300 kind:load to:0x0216592c module:overlay(63)
from:0x02163320 kind:load to:0x02165918 module:overlay(63)
from:0x02163320 kind:load to:0x02165910 module:overlay(63) add:0x8
from:0x02163330 kind:load to:0x02163354 module:overlay(63)
from:0x02163340 kind:load to:0x021633dc module:overlay(63)
from:0x02163350 kind:load to:0x02163450 module:overlay(63)
+9 -10
View File
@@ -324,13 +324,13 @@ _ZN23MapObjectProfileUnkMTJR10GetProfileEv kind:function(arm,size=0xc) addr:0x02
_ZN23MapObjectProfileUnkMTJR6CreateEv kind:function(arm,size=0x24) addr:0x02162cbc
_ZN23MapObjectProfileUnkMTJRC1Ev kind:function(arm,size=0x9c) addr:0x02162ce0
_ZN16MapObjectUnkMTJRC1Ev kind:function(arm,size=0x98) addr:0x02162d7c
_ZN16MapObjectUnkMTJR19func_ov063_02160ffcEv kind:function(arm,size=0x74) addr:0x02162e14
_ZN16MapObjectUnkMTJR19func_ov063_02161070Ev kind:function(arm,size=0x13c) addr:0x02162e88
_ZN16MapObjectUnkMTJR19func_ov063_021611acEv kind:function(arm,size=0x14) addr:0x02162fc4
_ZN16MapObjectUnkMTJR19func_ov063_021611c0Ev kind:function(arm,size=0x94) addr:0x02162fd8
_ZN16MapObjectUnkMTJR19func_ov063_02161254Ev kind:function(arm,size=0x34) addr:0x0216306c
_ZN16MapObjectUnkMTJR8vfunc_00Ev kind:function(arm,size=0x74) addr:0x02162e14
_ZN16MapObjectUnkMTJR8vfunc_08Ev kind:function(arm,size=0x13c) addr:0x02162e88
_ZN16MapObjectUnkMTJR8vfunc_0CEv kind:function(arm,size=0x14) addr:0x02162fc4
_ZN16MapObjectUnkMTJR8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x94) addr:0x02162fd8
_ZN16MapObjectUnkMTJR19func_ov063_02161254Ei kind:function(arm,size=0x34) addr:0x0216306c
_ZN16MapObjectUnkMTJR19func_ov063_02161288Ev kind:function(arm,size=0xf8) addr:0x021630a0
_ZN16MapObjectUnkMTJR19func_ov063_02161380Ev kind:function(arm,size=0x44) addr:0x02163198
_ZN16MapObjectUnkMTJR8vfunc_14Ev kind:function(arm,size=0x44) addr:0x02163198
_ZN16MapObjectUnkMTJRD1Ev kind:function(arm,size=0x28) addr:0x021631dc
_ZN16MapObjectUnkMTJRD0Ev kind:function(arm,size=0x30) addr:0x02163204
_ZN23MapObjectProfileUnkMTJRD1Ev kind:function(arm,size=0x14) addr:0x02163234
@@ -493,9 +493,9 @@ _ZTV28MapObjectProfileUnkLTRW_Base kind:data(any) addr:0x02165814
_ZTV23MapObjectProfileUnkLTRW kind:data(any) addr:0x02165830
_ZTV31MapObjectProfileUnkLTRW_Base_D4 kind:data(any) addr:0x0216584c
_ZTV16MapObjectUnkLTRW kind:data(any) addr:0x02165874
data_ov063_021658bc kind:data(any) addr:0x021658b4
data_ov063_021658d8 kind:data(any) addr:0x021658d8
data_ov063_02165918 kind:data(any) addr:0x02165918
_ZTV23MapObjectProfileUnkMTJR kind:data(any) addr:0x021658b4
_ZTV16MapObjectUnkMTJR kind:data(any) addr:0x021658d0
data_ov063_02165918 kind:data(any) addr:0x02165910
data_ov063_0216592c kind:data(any) addr:0x0216592c
data_ov063_02165948 kind:data(any) addr:0x02165948
_ZGVN15ProfileInstanceI19ActorProfileUnkCANSE8sProfileE kind:bss addr:0x02165980
@@ -544,7 +544,6 @@ _ZN15ProfileInstanceI23MapObjectProfileUnkLTRWE8sProfileE kind:bss addr:0x021665
_ZGVN15ProfileInstanceI23MapObjectProfileUnkMTJRE8sProfileE kind:bss addr:0x02166620
@32269 kind:bss addr:0x02166624
_ZN15ProfileInstanceI23MapObjectProfileUnkMTJRE8sProfileE kind:bss addr:0x02166630
data_ov063_02166704 kind:bss addr:0x02166704
_ZGVN15ProfileInstanceI23MapObjectProfileUnkSWCRE8sProfileE kind:bss addr:0x02166724
@32275 kind:bss addr:0x02166728
_ZN15ProfileInstanceI23MapObjectProfileUnkSWCRE8sProfileE kind:bss addr:0x02166734
+18 -13
View File
@@ -1,36 +1,41 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectProfile.hpp"
#include "global.h"
#include "MapObject/MapObjectUnkSTAT.hpp"
#include "Render/ModelRender.hpp"
#include "Unknown/Common.hpp"
#include "types.h"
class MapObjectUnkMTJR : public MapObject {
public:
/* 00 (base) */
/* 40 */
/* 40 */ ModelRender mUnk_40;
/* A0 */ unk32 mUnk_A0;
/* A4 */ volatile u16 mUnk_A4; // Probably a counter
/* A6 */ u16 mUnk_A6; // Counter (mUnk_A4) bound
/* A8 */ UnkSystem7 mUnk_A8;
/* AC */ unk32 mUnk_AC;
/* B0 */ unk32 mUnk_B0;
MapObjectUnkMTJR();
/* 30 */ virtual ~MapObjectUnkMTJR() override;
/* 00 */ virtual bool vfunc_00() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
/* 14 */ virtual void vfunc_14() override;
/* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) override;
void func_ov063_02160ffc(void);
void func_ov063_02161070(void);
void func_ov063_021611ac(void);
void func_ov063_021611c0(void);
void func_ov063_02161254(void);
void func_ov063_02161254(unk32 param1);
void func_ov063_02161288(void);
void func_ov063_02161380(void);
};
class MapObjectProfileUnkMTJR : public MapObjectProfile {
class MapObjectProfileUnkMTJR : public MapObjectProfileUnkSTAT_Base {
public:
/* 00 (base) */
/* F8 */
MapObjectProfileUnkMTJR();
~MapObjectProfileUnkMTJR();
/* 0C */ virtual MapObject *Create();
+4
View File
@@ -40,6 +40,10 @@ public:
class MapObjectProfileUnkSTAT_Base_D4 : public MapObject_10 {
public:
/* 00 (vtable) */
/* 24 */
MapObjectProfileUnkSTAT_Base_D4() {}
};
class MapObjectProfileUnkSTAT_Base : public MapObjectProfile_Derived2 {
@@ -5,6 +5,7 @@
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e0d38.hpp"
#include "profile.hpp"
extern "C" fx32 func_01ffb464(fx32);
extern "C" void func_01ff9218(fx32 *, fx32, fx32);
@@ -30,7 +31,7 @@ MapObjectProfileBombFlower::MapObjectProfileBombFlower() :
// non-matching
MapObjectBombFlower::MapObjectBombFlower() :
mUnk_48(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileBombFlower)->mUnk_20.mUnk_50), 0x0, 0x0),
mUnk_48(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileBombFlower)), 0x0, 0x0),
mUnk_B4(0x1000),
mUnk_B8(0x0),
mUnk_BA(0x0),
+2 -1
View File
@@ -8,6 +8,7 @@
#include "Unknown/UnkStruct_027e0d38.hpp"
#include "limits.h"
#include "profile.hpp"
extern "C" MapObject_10_Pot data_ov031_02118010;
@@ -43,7 +44,7 @@ ModelRender_ov000_020b198c::ModelRender_ov000_020b198c(G3d_Model *pModel, unk8 p
// non-matching
MapObjectPot::MapObjectPot() :
mUnk_48(G3d_GetModelPtr(GET_PROFILE(MapObjectProfilePot)->mUnk_20.mUnk_50), 0x1) {
mUnk_48(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfilePot)), 0x1) {
this->mUnk_40 = ActorId_NTUB;
this->mUnk_10 = &data_ov031_02118010;
SET_FLAG(this->mFlags, MapObjFlag_8);
+2 -1
View File
@@ -7,6 +7,7 @@
#include "Unknown/UnkStruct_027e09b8.hpp"
#include "Unknown/UnkStruct_027e0cec.hpp"
#include "Unknown/UnkStruct_ov000_020b5214.hpp"
#include "profile.hpp"
extern const char data_ov031_02110ce0;
@@ -40,7 +41,7 @@ MapObjectUnkSWHT::MapObjectUnkSWHT() :
mUnk_0F4(NULL),
mUnk_0F8(-0x1),
mUnk_0FC(0x0) {
this->mUnk_054.vfunc_08(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileUnkSWHT)->mUnk_20.mUnk_50));
this->mUnk_054.vfunc_08(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileUnkSWHT)));
this->mUnk_0B4.mpModel = this->mUnk_054.mpModel;
unk32 param2 = data_ov031_021179e8.func_ov000_02058a24();
+2 -1
View File
@@ -1,6 +1,7 @@
#define VECFX32_CTORS
#include "MapObject/MapObjectUnkSWSW.hpp"
#include "profile.hpp"
#include "Actor/Actor.hpp"
#include "Actor/ActorManager.hpp"
@@ -97,7 +98,7 @@ void MapObjectUnkSWSW_40::func_ov032_021210a0(fx32 param1) {
}
MapObjectUnkSWSW::MapObjectUnkSWSW() :
mUnk_040(G3d_GetUnkPtr(GET_PROFILE(MapObjectProfileUnkSWSW)->mUnk_20.mUnk_50, &data_ov032_02121ef4)),
mUnk_040(G3d_GetUnkPtr(GET_PROFILE_20_50(MapObjectProfileUnkSWSW), &data_ov032_02121ef4)),
mUnk_0AC(&this->mUnk_0CC, NULL),
mUnk_0EC(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(-0.4202f)),
mUnk_0F8(NULL),
+33 -24
View File
@@ -10,7 +10,6 @@
#include "MapObject/MapObject.hpp"
#include "MapObject/MapObjectManager.hpp"
#include "Physics/Cylinder.hpp"
#include "Player/PlayerGet.hpp"
#include "Render/ModelRender.hpp"
#include "Save/AdventureFlags.hpp"
#include "System/Random.hpp"
@@ -156,8 +155,9 @@ unk32 UnkStruct_ov063_02162e88::vfunc_04(ActorRef param1, unk32 param2, unk32 pa
return ret1;
}
// non-matching
ActorUnkCANS::ActorUnkCANS() :
mUnk_0B0(G3d_GetModelPtr(((MapObjectProfile_Derived2_20 *) GET_PROFILE(ActorProfileUnkCANS)->vfunc_04())->mUnk_50)),
mUnk_0B0(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkCANS)->vfunc_04()->mUnk_50)),
mUnk_128(&mUnk_0B0, GET_PROFILE(ActorProfileUnkCANS)->vfunc_04()),
mUnk_1F4(),
mUnk_200(this),
@@ -244,6 +244,7 @@ void ActorUnkCANS::vfunc_24(void) {
}
}
// non-matching
void ActorUnkCANS::vfunc_20(void) {
if (mUnk_238 < mUnk_23A) {
mUnk_238++;
@@ -252,7 +253,7 @@ void ActorUnkCANS::vfunc_20(void) {
if (!this->func_ov017_020bef4c(0x4000) && mUnk_48 != 0 && mState != 4) {
return;
}
mUnk_3C = (Actor_9C *) &mUnk_200;
mUnk_3C = &mUnk_200;
CALL_PTMF(PTMF<ActorUnkCANS>, data_ov063_02162fb0[mState]);
@@ -295,9 +296,7 @@ void ActorUnkCANS::vfunc_20(void) {
if (var == 0) {
if (mUnk_268 != NULL) {
//! INFO: mUnk_268 is NOT an ActorUnkCANS*, this is a placeholder as mUnk_1F4 is not yet defined in
//! ActorUnkCASE (current type of *mUnk_268)
*(char *) &((ActorUnkCANS *) mUnk_268)->mUnk_1F4 = 0;
mUnk_268->mUnk_1F4 = 0;
}
} else {
@@ -384,7 +383,7 @@ void ActorUnkCANS::vfunc_20(void) {
case 11:
default:
if (iVar5 != 0) {
this->func_ov017_020bfb18((Actor_9C *) &mUnk_200);
this->func_ov017_020bfb18(&mUnk_200);
if (mState != 4) {
this->func_ov063_02158448(5);
}
@@ -395,9 +394,7 @@ void ActorUnkCANS::vfunc_20(void) {
}
}
if (mUnk_268 != NULL) {
//! INFO: mUnk_268 is NOT an ActorUnkCANS*, this is a placeholder as mUnk_1F4 is not yet defined in
//! ActorUnkCASE (current type of *mUnk_268)
*(char *) &((ActorUnkCANS *) mUnk_268)->mUnk_1F4 = (char) iVar5;
mUnk_268->mUnk_1F4 = iVar5;
}
}
}
@@ -468,16 +465,17 @@ void ActorUnkCANS::vfunc_2C(unk32 param1) {
}
void ActorUnkCANS::func_ov063_02158b0c(void) {
mUnk_268 = NULL;
((u16 *) mUnk_38)[4] = 1;
mUnk_34 = (Cylinder *) &data_ov063_02162e90;
mUnk_30 = (Cylinder *) &data_ov063_02162e90;
mUnk_268 = NULL;
mUnk_38->mUnk_08 = 1;
mUnk_34 = (Cylinder *) &data_ov063_02162e90;
mUnk_30 = (Cylinder *) &data_ov063_02162e90;
}
void ActorUnkCANS::func_ov063_02158b34(void) {
mUnk_128.vfunc_1C(data_ov063_02163068, 0x1000, 0x19A, 0);
}
// non-matching
void ActorUnkCANS::func_ov063_02158b98(void) {
if (mUnk_128.vfunc_28()->func_02015080(0x1000) || mUnk_128.vfunc_28()->func_02015080(0x11000) ||
mUnk_128.vfunc_28()->func_02015080(0x21000)) {
@@ -514,6 +512,7 @@ void ActorUnkCANS::func_ov063_02158d40(void) {
mUnk_238 = 0;
}
// non-matching
void ActorUnkCANS::func_ov063_02158db0(void) {
if (mUnk_128.vfunc_28()->func_02015080(0x1000) || mUnk_128.vfunc_28()->func_02015080(0xD000) ||
mUnk_128.vfunc_28()->func_02015080(0x19000) || mUnk_128.vfunc_28()->func_02015080(0x25000)) {
@@ -572,13 +571,13 @@ void ActorUnkCANS::func_ov063_02158db0(void) {
void ActorUnkCANS::func_ov063_021590c8(void) {
func_ov017_020bf634(this, (unk16 *) &mUnk_200.mUnk_10, this->func_ov063_0215a5bc(), this->func_ov063_0215a5d8());
((Actor_9C *) &mUnk_200)->func_ov000_02097bec();
mUnk_200.func_ov000_02097bec();
}
void ActorUnkCANS::func_ov063_02159100(void) {
func_ov017_020bf688(this);
if (!GET_FLAG(this->mFlags, 5)) {
if (!GET_FLAG(this->mFlags, ActorFlag_5)) {
return;
}
@@ -590,7 +589,7 @@ void ActorUnkCANS::func_ov063_02159100(void) {
return;
}
u16 *tmpArr = (u16 *) &mUnk_224.mUnk_08;
u16 *tmpArr = &mUnk_224.mUnk_08;
if (tmpArr[0] < tmpArr[1]) {
this->func_ov063_02158448(4);
return;
@@ -653,7 +652,7 @@ void ActorUnkCANS::func_ov063_02159258(void) {
void ActorUnkCANS::func_ov063_02159408(void) {
this->func_ov000_02099450(&mUnk_224, &data_027e07d4, 0, data_ov000_020aecf0[0]);
mUnk_128.vfunc_1C(data_ov063_02163068, 0, 0x19A, 0);
((Actor_9C *) &mUnk_200)->func_ov000_02097bec();
mUnk_200.func_ov000_02097bec();
}
void ActorUnkCANS::func_ov063_02159494(void) {
@@ -691,7 +690,7 @@ void ActorUnkCANS::func_ov063_021595a4(void) {
mVel.z = 0;
mUnk_270 = 0;
mUnk_128.vfunc_1C(data_ov063_021630b0, 0x1000, 0x400, 0);
((Actor_9C *) &mUnk_200)->func_ov000_02097bec();
mUnk_200.func_ov000_02097bec();
}
void ActorUnkCANS::func_ov063_02159618(void) {
@@ -767,6 +766,7 @@ void ActorUnkCANS::func_ov063_021598fc(void) {
mUnk_276 = gRandom.Next32(0) & 0x80000000 ? 1 : -1;
}
// non-matching
void ActorUnkCANS::func_ov063_021599e4(void) {
if (mUnk_128.vfunc_28()->func_02015080(0x1000) || mUnk_128.vfunc_28()->func_02015080(0xA000) ||
mUnk_128.vfunc_28()->func_02015080(0x13000) || mUnk_128.vfunc_28()->func_02015080(0x1C000)) {
@@ -878,6 +878,7 @@ void ActorUnkCANS::func_ov063_02159e20(void) {
mUnk_38->mUnk_08 = 3;
}
// non-matching
void ActorUnkCANS::func_ov063_02159ec0(void) {
this->vfunc_44();
@@ -898,6 +899,7 @@ void ActorUnkCANS::func_ov063_02159ec0(void) {
*(s16 *) &mUnk_44 |= 0x20;
}
// non-matching
// return bool ?
unk32 ActorUnkCANS::func_ov063_02159f3c(unk32 param1) {
s16 var;
@@ -940,6 +942,7 @@ unk32 ActorUnkCANS::func_ov063_02159f3c(unk32 param1) {
return func_01ff9a5c(data_027e0ce0->func_01fff148(0), &vec1, &vec2) < param1;
}
// non-matching
// return bool ?
unk32 ActorUnkCANS::func_ov063_0215a0f0(void) {
s16 var1;
@@ -987,6 +990,7 @@ unk32 ActorUnkCANS::func_ov063_0215a0f0(void) {
return func_01ff9a5c(data_027e0ce0->func_01fff148(0), &mPos, &vec) < 0x4CD;
}
// non-matching
unk32 ActorUnkCANS::func_ov063_0215a2c0(void) {
s16 var1;
func_ov000_020986b4((s16 *) &var1, this, 0);
@@ -1035,7 +1039,7 @@ unk32 ActorUnkCANS::func_ov063_0215a2c0(void) {
void ActorUnkCANS::func_ov063_0215a428(void) {
// A not very clean code to access 22C and 22E matching the asm
u16 *values = (u16 *) &mUnk_224.mUnk_08;
u16 *values = &mUnk_224.mUnk_08;
if (values[0] < values[1]) {
this->func_ov063_02158448(4);
} else if (mUnk_268 == NULL) {
@@ -1081,7 +1085,7 @@ unk32 ActorUnkCANS::func_ov063_0215a514(void) {
func_ov000_020986b4((s16 *) &var, this, 0);
var = (volatile s16) var - mUnk_26C;
return 0x4AAB < ABS(var);
return DEG_TO_ANG(105) + 1 < ABS(var);
}
// return bool ?
@@ -1093,12 +1097,13 @@ unk32 ActorUnkCANS::func_ov063_0215a56c(unk32 param1) {
return DEG_TO_ANG(90) <= ABS((s16) (param1 - mAngle));
}
// non-matching
void ActorUnkCANS::func_ov063_0215a5a0(VecFx32 *param1) {
// Does not match instruction order
VecFx32 vec;
vec.x = ((VecFx32 *) &mUnk_250)->x;
vec.y = ((VecFx32 *) &mUnk_250)->y;
vec.z = ((VecFx32 *) &mUnk_250)->z;
vec.x = mUnk_250.x;
vec.y = mUnk_250.y;
vec.z = mUnk_250.z;
param1->z = vec.z;
param1->x = vec.x;
param1->y = vec.y;
@@ -1118,6 +1123,7 @@ unk32 ActorUnkCANS::func_ov063_0215a5d8(void) {
return data_ov000_020aecfc[0];
}
// non-matching
void ActorUnkCANS::vfunc_10(Cylinder *param1) {
Cylinder *cylinder = this->mUnk_34;
*param1 = *cylinder;
@@ -1132,6 +1138,7 @@ void ActorUnkCANS::vfunc_10(Cylinder *param1) {
}
}
// non-matching
void ActorUnkCANS::func_ov063_0215a678(ActorUnkCANS *actor, UnkStruct_func_ov063_0215a678 *param2) {
ModelRender *modelRender = param2->mUnk_04;
u8 var1;
@@ -1209,6 +1216,7 @@ UnkStruct_ov063_02162ea8::UnkStruct_ov063_02162ea8() {
UnkStruct_ov063_02162ea8::~UnkStruct_ov063_02162ea8() {}
// non-matching
bool UnkStruct_ov063_02162ea8::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
bool retVal = UnkStruct_ov031_Items_00::vfunc_08(param1);
if (retVal && func_01ff9258(param1->mUnk_08.x, param1->mUnk_08.z) > 0) {
@@ -1224,6 +1232,7 @@ bool UnkStruct_ov063_02162ea8::vfunc_08(const UnkStruct_ov031_020f3310 *param1)
return retVal;
}
// non-matching
bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
UnkStruct_02162ea8_vfunc_0C *param2Struct = (UnkStruct_02162ea8_vfunc_0C *) param2;
if ((*(u16 *) &param2Struct->mUnk_04 & 0x1000) != 0) {
+7 -2
View File
@@ -8,7 +8,6 @@
#include "Actor/ActorShotArrow.hpp"
#include "Actor/ActorUnkCANS.hpp"
#include "Actor/ActorUnkITWP.hpp"
#include "MapObject/MapObjectProfile_Derived2_20.hpp"
#include "Physics/Cylinder.hpp"
#include "Render/ModelRender.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
@@ -69,6 +68,7 @@ static PTMF<ActorUnkCASE> data_ov063_02163110[0x6] = {ActorUnkCASE::func_ov063_0
DECL_PROFILE(ActorProfileUnkCASE);
// non-matching (profile is smaller than target)
Actor *ActorProfileUnkCASE::Create() {
return new(HeapIndex_2) ActorUnkCASE();
}
@@ -139,7 +139,7 @@ void ActorUnkCASE::func_ov063_0215acec(ActorRef *ref1, ActorRef ref2) {
}
ActorUnkCASE::ActorUnkCASE() :
mUnk_0B0(G3d_GetModelPtr(((MapObjectProfile_Derived2_20 *) GET_PROFILE(ActorProfileUnkCASE)->vfunc_04())->mUnk_50)),
mUnk_0B0(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkCASE)->vfunc_04()->mUnk_50)),
mUnk_120(0),
mUnk_124(this),
mUnk_14C(NULL),
@@ -312,6 +312,7 @@ void ActorUnkCASE::vfunc_24() {
this->vfunc_20();
}
// non-matching
void ActorUnkCASE::vfunc_20() {
mUnk_150.mUnk_1C = 1;
@@ -445,6 +446,7 @@ void ActorUnkCASE::vfunc_2C(unk32 param1) {
}
}
// non-matching
void ActorUnkCASE::func_ov063_0215b6c8(VecFx32 *param1, UnkAngleStruct angle) {
VecFx32 vec = *param1;
VecFx32_Copy(&vec, &mPos);
@@ -460,6 +462,7 @@ void ActorUnkCASE::func_ov063_0215b724(void) {
data_027e09a8->func_ov000_02071b30(0x9865, &mPos, 0);
}
// non-matching
void ActorUnkCASE::vfunc_10(Cylinder *param1) {
if (mUnk_14C != NULL) {
((ActorUnkCASE *) mUnk_14C)->vfunc_10(param1);
@@ -479,6 +482,7 @@ void ActorUnkCASE::func_ov063_0215b814(ActorRef ref) {
this->func_ov063_0215aefc(1);
}
// non-matching
void ActorUnkCASE::func_ov063_0215b854(void) {
if (mUnk_14C != NULL) {
ActorUnkCANS *actorCans = (ActorUnkCANS *) mUnk_14C;
@@ -506,6 +510,7 @@ static inline bool VecFx32_IsZero(VecFx32 *vec) {
return vec->x == 0 && vec->y == 0 && vec->z == 0;
}
// non-matching
void ActorUnkCASE::func_ov063_0215b8e8(VecFx32 *param1) {
if (mUnk_14C != NULL) {
+1 -1
View File
@@ -1,5 +1,4 @@
#include "Actor/ActorUnkRBLS.hpp"
#include "Actor/Actor_Derived1.hpp"
#include "Render/ModelRender.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "nitro/fx.h"
@@ -18,6 +17,7 @@ Actor *ActorProfileUnkRBLS::Create() {
ActorProfileUnkRBLS::ActorProfileUnkRBLS() :
ActorProfile_Derived1(ActorId_RBLS) {}
// non-matching
ActorUnkRBLS::ActorUnkRBLS() :
mUnk_94(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkRBLS)->mUnk_3C.mUnk_50)),
mUnk_F4(&mUnk_94, GET_PROFILE(ActorProfileUnkRBLS)->vfunc_04()) {}
+1 -2
View File
@@ -1,6 +1,5 @@
#include "Actor/ActorUnkRMSD.hpp"
#include "Actor/ActorUnkRMSV.hpp"
#include "Actor/Actor_Derived1.hpp"
#include "nns/g3d/g3d.h"
#include "profile.hpp"
#include "types.h"
@@ -29,7 +28,7 @@ bool ActorUnkRMSD::vfunc_18(unk32 param1) {
}
void ActorUnkRMSD::vfunc_20(void) {
(*(Actor *) &this->mUnk_158).vfunc_34(); // Not an Actor
this->mUnk_158.vfunc_34();
}
void ActorUnkRMSD::vfunc_24(void) {
this->vfunc_20();
-1
View File
@@ -2,7 +2,6 @@
#include "Actor/Actor.hpp"
#include "Actor/ActorId.hpp"
#include "Actor/ActorUnkRMSBase.hpp"
#include "Actor/Actor_Derived1.hpp"
#include "nns/g3d/g3d.h"
#include "profile.hpp"
+1 -2
View File
@@ -1,6 +1,5 @@
#include "Actor/ActorUnkRMSW.hpp"
#include "Actor/ActorId.hpp"
#include "Actor/Actor_Derived1.hpp"
#include "nns/g3d/g3d.h"
#include "profile.hpp"
#include "types.h"
@@ -29,7 +28,7 @@ bool ActorUnkRMSW::vfunc_18(unk32 param1) {
}
void ActorUnkRMSW::vfunc_20(void) {
(*(Actor *) &this->mUnk_158).vfunc_34(); // Not an Actor
this->mUnk_158.vfunc_34();
}
void ActorUnkRMSW::vfunc_24(void) {
@@ -48,7 +48,7 @@ MapObjectProfileUnkLTRW::MapObjectProfileUnkLTRW() :
}
MapObjectUnkLTRW::MapObjectUnkLTRW() :
mUnk_40(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileUnkLTRW)->mUnk_20.mUnk_50)),
mUnk_40(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileUnkLTRW))),
mUnk_A0(1),
mUnk_A4(0),
mUnk_A6(0),
@@ -57,7 +57,7 @@ MapObjectUnkLTRW::MapObjectUnkLTRW() :
bool MapObjectUnkLTRW::vfunc_00() {
mPos.x -= FLOAT_TO_FX32(.5f);
mPos.z -= FLOAT_TO_FX32(.5f);
mUnk_10 = &GET_PROFILE(MapObjectProfileUnkLTRW)->mUnk_D4;
mUnk_10 = GET_PROFILE_D4(MapObjectProfileUnkLTRW);
SET_FLAG(mFlags, MapObjFlag_9);
mUnk_18[0] = 0x10;
mUnk_A8.mUnk_04h = mUnk_20.mUnk_08[0];
+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);
}
@@ -42,6 +42,7 @@ MapObject *MapObjectProfileUnkSTAT::Create() {
return new(HeapIndex_ITCM) MapObjectUnkSTAT();
}
// non-matching
MapObjectProfileUnkSTAT::MapObjectProfileUnkSTAT() :
MapObjectProfileUnkSTAT_Base(MapObjectId_STAT, MapObjectId_STAT) {
mUnk_D4.mUnk_08 = 0x7007;
@@ -54,7 +55,7 @@ MapObjectProfileUnkSTAT::MapObjectProfileUnkSTAT() :
}
MapObjectUnkSTAT::MapObjectUnkSTAT() :
mUnk_40(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileUnkSTAT)->mUnk_20.mUnk_50), true),
mUnk_40(G3d_GetModelPtr(GET_PROFILE_20_50(MapObjectProfileUnkSTAT)), true),
mUnk_4C(4),
mUnk_50(-1),
mUnk_54(0x8000),
@@ -67,6 +68,7 @@ MapObjectUnkSTAT::MapObjectUnkSTAT() :
mUnk_10 = GET_PROFILE_D4(MapObjectProfileUnkSTAT);
}
// non-matching
bool MapObjectUnkSTAT::vfunc_00(void) {
unk32 val;
switch (mUnk_20.mParams[0]) {
@@ -121,6 +123,7 @@ void MapObjectUnkSTAT::vfunc_14(void) {
mUnk_40.func_01ffc6d4(mAngleStruct, &vec);
}
// non-matching
void MapObjectUnkSTAT::func_ov063_0215f7ac(void) {
if (!this->func_ov000_0209d29c(0) || this->func_ov000_0209d29c(1)) {
return;