diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index fe8a810f..c992f1dc 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2273,9 +2273,9 @@ _ZN12ActorProfile8vfunc_10Ev kind:function(arm,size=0x4) addr:0x02097810 _ZN12ActorProfile8vfunc_14Ev kind:function(arm,size=0x4) addr:0x02097814 _ZN12ActorProfile8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02097818 func_ov000_0209781c kind:function(arm,size=0x7c) addr:0x0209781c -_ZN21ActorProfile_Derived1C2E7ActorId kind:function(arm,size=0x30) addr:0x02097898 +_ZN21ActorProfile_Derived1C2Ej kind:function(arm,size=0x30) addr:0x02097898 func_ov000_020978c8 kind:function(arm,size=0x14) addr:0x020978c8 -_ZN21ActorProfile_Derived1C2E7ActorIdS0_ kind:function(arm,size=0x30) addr:0x020978dc +_ZN21ActorProfile_Derived1C2EjS0_ kind:function(arm,size=0x30) addr:0x020978dc _ZN21ActorProfile_Derived1D2Ev kind:function(arm,size=0x38) addr:0x0209790c func_ov000_02097944 kind:function(arm,size=0x8) addr:0x02097944 func_ov000_0209794c kind:function(arm,size=0x20) addr:0x0209794c diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 222d4301..89eba712 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -551,7 +551,7 @@ func_0200ef5c kind:function(arm,size=0x40) addr:0x0200ef5c func_0200ef9c kind:function(arm,size=0x40) addr:0x0200ef9c func_0200efdc kind:function(arm,size=0x40) addr:0x0200efdc func_0200f01c kind:function(arm,size=0x40) addr:0x0200f01c -func_0200f05c kind:function(arm,size=0x1bc) addr:0x0200f05c +G3d_0200f05c kind:function(arm,size=0x1bc) addr:0x0200f05c func_0200f218 kind:function(arm,size=0x164) addr:0x0200f218 func_0200f37c kind:function(arm,size=0x10) addr:0x0200f37c func_0200f38c kind:function(arm,size=0x40) addr:0x0200f38c diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index c7ac6ca8..51c4908b 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -2270,9 +2270,9 @@ _ZN12ActorProfile8vfunc_10Ev kind:function(arm,size=0x4) addr:0x02098fb8 _ZN12ActorProfile8vfunc_14Ev kind:function(arm,size=0x4) addr:0x02098fbc _ZN12ActorProfile8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02098fc0 func_ov000_02098fc4 kind:function(arm,size=0x7c) addr:0x02098fc4 -_ZN21ActorProfile_Derived1C2E7ActorId kind:function(arm,size=0x30) addr:0x02099040 +_ZN21ActorProfile_Derived1C2Ej kind:function(arm,size=0x30) addr:0x02099040 func_ov000_02099070 kind:function(arm,size=0x14) addr:0x02099070 -_ZN21ActorProfile_Derived1C2E7ActorIdS0_ kind:function(arm,size=0x30) addr:0x02099084 +_ZN21ActorProfile_Derived1C2EjS0_ kind:function(arm,size=0x30) addr:0x02099084 _ZN21ActorProfile_Derived1D2Ev kind:function(arm,size=0x38) addr:0x020990b4 func_ov000_020990ec kind:function(arm,size=0x8) addr:0x020990ec func_ov000_020990f4 kind:function(arm,size=0x20) addr:0x020990f4 diff --git a/config/jp/arm9/overlays/ov063/symbols.txt b/config/jp/arm9/overlays/ov063/symbols.txt index 8706d456..bca22435 100644 --- a/config/jp/arm9/overlays/ov063/symbols.txt +++ b/config/jp/arm9/overlays/ov063/symbols.txt @@ -155,11 +155,11 @@ _ZN19ActorProfileUnkRMSD10GetProfileEv kind:function(arm,size=0xc) addr:0x0215e0 _ZN19ActorProfileUnkRMSD6CreateEv kind:function(arm,size=0x24) addr:0x0215e0dc _ZN19ActorProfileUnkRMSDC1Ev kind:function(arm,size=0x28) addr:0x0215e100 _ZN12ActorUnkRMSDC1Ev kind:function(arm,size=0x74) addr:0x0215e128 -_ZN12ActorUnkRMSD19func_ov063_0215e19cEv kind:function(arm,size=0x54) addr:0x0215e19c -_ZN12ActorUnkRMSD19func_ov063_0215e1f0Ev kind:function(arm,size=0x18) addr:0x0215e1f0 -_ZN12ActorUnkRMSD19func_ov063_0215e208Ev kind:function(arm,size=0x14) addr:0x0215e208 -_ZN12ActorUnkRMSD19func_ov063_0215e21cEv kind:function(arm,size=0x40) addr:0x0215e21c -_ZN12ActorUnkRMSD19func_ov063_0215e25cEv kind:function(arm,size=0x40) addr:0x0215e25c +_ZN12ActorUnkRMSD19func_ov063_0215c408Ev kind:function(arm,size=0x54) addr:0x0215e19c +_ZN12ActorUnkRMSD19func_ov063_0215c45cEv kind:function(arm,size=0x18) addr:0x0215e1f0 +_ZN12ActorUnkRMSD19func_ov063_0215c474Ev kind:function(arm,size=0x14) addr:0x0215e208 +_ZN12ActorUnkRMSD19func_ov063_0215c488Ev kind:function(arm,size=0x40) addr:0x0215e21c +_ZN12ActorUnkRMSD19func_ov063_0215c4c8Ev kind:function(arm,size=0x40) addr:0x0215e25c _ZN12ActorUnkRMSDD1Ev kind:function(arm,size=0x30) addr:0x0215e29c _ZN12ActorUnkRMSDD0Ev kind:function(arm,size=0x38) addr:0x0215e2cc _ZN19ActorProfileUnkRMSDD1Ev kind:function(arm,size=0x14) addr:0x0215e304 @@ -372,8 +372,8 @@ data_ov063_021643b0 kind:data(any) addr:0x021643b0 data_ov063_021643c0 kind:data(any) addr:0x021643c0 data_ov063_021643d0 kind:data(any) addr:0x021643d0 data_ov063_021643e0 kind:data(any) addr:0x021643e0 -data_ov063_021643f0 kind:data(any) addr:0x021643f0 -data_ov063_02164400 kind:data(any) addr:0x02164400 +data_ov063_021625d8 kind:data(any) addr:0x021643f0 +data_ov063_021625e8 kind:data(any) addr:0x02164400 data_ov063_02164410 kind:data(any) addr:0x02164410 data_ov063_02164420 kind:data(any) addr:0x02164420 data_ov063_0216443c kind:data(any) addr:0x0216443c diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 56d39211..678eb833 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -551,7 +551,7 @@ func_0200ef5c kind:function(arm,size=0x40) addr:0x0200ef5c func_0200ef9c kind:function(arm,size=0x40) addr:0x0200ef9c func_0200efdc kind:function(arm,size=0x40) addr:0x0200efdc func_0200f01c kind:function(arm,size=0x40) addr:0x0200f01c -func_0200f05c kind:function(arm,size=0x1bc) addr:0x0200f05c +G3d_0200f05c kind:function(arm,size=0x1bc) addr:0x0200f05c func_0200f218 kind:function(arm,size=0x164) addr:0x0200f218 func_0200f37c kind:function(arm,size=0x10) addr:0x0200f37c func_0200f38c kind:function(arm,size=0x40) addr:0x0200f38c diff --git a/include/Actor/ActorProfile.hpp b/include/Actor/ActorProfile.hpp index 3027707e..5377a2eb 100644 --- a/include/Actor/ActorProfile.hpp +++ b/include/Actor/ActorProfile.hpp @@ -3,6 +3,7 @@ #include "Actor/ActorId.hpp" #include "Physics/Cylinder.hpp" #include "System/SysNew.hpp" +#include "Unknown/Common.hpp" #include "profile.hpp" #include "types.h" @@ -47,6 +48,9 @@ public: class ActorProfile_Derived1 : public ActorProfile { public: /* 00 (base) */ + /* 3C */ UnkActorFileSystem2 mUnk_3C; + /* D4 */ unk32 mUnk_D4; + /* D8 */ ActorProfile_Derived1(ActorId actorId); ActorProfile_Derived1(ActorId actorId1, ActorId actorId2); diff --git a/include/Actor/ActorUnkRMSD.hpp b/include/Actor/ActorUnkRMSD.hpp index 521242cf..b497e59a 100644 --- a/include/Actor/ActorUnkRMSD.hpp +++ b/include/Actor/ActorUnkRMSD.hpp @@ -4,6 +4,9 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "MainGame/AdventureMode.hpp" +#include "Render/ModelRender.hpp" +#include "Unknown/Common.hpp" #include "global.h" #include "types.h" @@ -20,7 +23,9 @@ public: class ActorUnkRMSD : public Actor { public: /* 00 (base) */ - /* 94 */ + /* 94 */ unk8 mUnk_94; + /* 95 */ STRUCT_PAD(0x95, 0x158); + /* 158 */ Actor mUnk_158; ActorUnkRMSD(); @@ -29,13 +34,14 @@ public: void func_ov063_0215c408(void); void func_ov063_0215c45c(void); void func_ov063_0215c474(void); - void func_ov063_0215c488(void); - void func_ov063_0215c4c8(void); + void *func_ov063_0215c488(void); //! TODO: G3d_Model? + void *func_ov063_0215c4c8(void); //! TODO: G3d_Model? }; class ActorProfileUnkRMSD : public ActorProfile_Derived1 { public: /* 00 (base) */ + /* D8 */ ActorProfileUnkRMSD(); ~ActorProfileUnkRMSD(); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index e39e3538..ce1defab 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -1230,6 +1230,19 @@ public: /* 08 */ }; +class UnkActorFileSystem2 : public MapObjectProfile_Derived2_20_Base { +public: + /* 00 (base) */ + /* 94 */ unk16 mUnk_94; + /* 96 */ unk16 mUnk_96; + /* 98 */ + + UnkActorFileSystem2(u32 actorId2); // func_ov000_02097af8 + + // data_ov000_020b3084 + /* 00 */ virtual ~UnkActorFileSystem2() override; +}; + //! TODO: move to a better place enum TrainPresetType_ { TrainPresetType_Default = 0, // normal overworld settings diff --git a/libs/nns/include/nns/g3d/g3d.h b/libs/nns/include/nns/g3d/g3d.h index 695838bc..61437d2a 100644 --- a/libs/nns/include/nns/g3d/g3d.h +++ b/libs/nns/include/nns/g3d/g3d.h @@ -192,6 +192,8 @@ typedef struct BMDSectionModel { /* 08 */ G3d_NameList modelList; } BMDSectionModel; +u32 *G3d_0200f05c(const G3d_NameList *pNameList, const char *pName); + static inline u32 *G3d_GetModelOffsetPtr(const BMDSectionModel *pSection, u8 modelIndex) { const G3d_NameList *pList = &pSection->modelList; @@ -219,6 +221,19 @@ static inline G3d_Model *G3d_GetModelPtr(const BMDSectionModel *pSection) { return G3d_GetModelVariantPtr(pSection, 0); } +//! TODO: returns `G3d_Model*`? +static inline void *G3d_GetUnkPtr(const BMDSectionModel *pSection, const char *name) { + if (pSection != NULL) { + u32 *pOffset = G3d_0200f05c(&pSection->modelList, name); + + if (pOffset != NULL) { + return (void *) ((u8 *) pSection + *pOffset); + } + } + + return NULL; +} + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/063_Shrine/Actor/ActorUnkRMSD.cpp b/src/063_Shrine/Actor/ActorUnkRMSD.cpp index 33ca5929..5f1bb3b1 100644 --- a/src/063_Shrine/Actor/ActorUnkRMSD.cpp +++ b/src/063_Shrine/Actor/ActorUnkRMSD.cpp @@ -1,10 +1,17 @@ //! TODO: This file was generated automatically and might contain errors #include "Actor/ActorUnkRMSD.hpp" + +#include "Render/ModelRender.hpp" #include "System/SysNew.hpp" +extern "C" void func_ov073_0215bb34(ActorUnkRMSD *); + ARM DECL_PROFILE(ActorProfileUnkRMSD); +char data_ov063_021625d8[0x10] = "RMSD_wall"; +char data_ov063_021625e8[0x10] = "RMSD"; + ARM Actor *ActorProfileUnkRMSD::Create() { return new(HeapIndex_2) ActorUnkRMSD(); } @@ -12,13 +19,27 @@ ARM Actor *ActorProfileUnkRMSD::Create() { ARM ActorProfileUnkRMSD::ActorProfileUnkRMSD() : ActorProfile_Derived1(ActorId_RMSD) {} -ARM ActorUnkRMSD::ActorUnkRMSD() {} +ARM ActorUnkRMSD::ActorUnkRMSD() { + ActorProfileUnkRMSD *r0 = GET_PROFILE(ActorProfileUnkRMSD); + r0->vfunc_04(); +} ARM void ActorUnkRMSD::func_ov063_0215c408(void) {} -ARM void ActorUnkRMSD::func_ov063_0215c45c(void) {} -ARM void ActorUnkRMSD::func_ov063_0215c474(void) {} -ARM void ActorUnkRMSD::func_ov063_0215c488(void) {} -ARM void ActorUnkRMSD::func_ov063_0215c4c8(void) {} + +ARM void ActorUnkRMSD::func_ov063_0215c45c(void) { + this->mUnk_158.vfunc_34(); +} +ARM void ActorUnkRMSD::func_ov063_0215c474(void) { + this->vfunc_20(); +} + +ARM void *ActorUnkRMSD::func_ov063_0215c488(void) { + return G3d_GetUnkPtr(GET_PROFILE(ActorProfileUnkRMSD)->mUnk_3C.mUnk_50, data_ov063_021625e8); +} + +ARM void *ActorUnkRMSD::func_ov063_0215c4c8(void) { + return G3d_GetUnkPtr(GET_PROFILE(ActorProfileUnkRMSD)->mUnk_3C.mUnk_50, data_ov063_021625d8); +} ARM ActorUnkRMSD::~ActorUnkRMSD() {} ARM ActorProfileUnkRMSD::~ActorProfileUnkRMSD() {}