Decompiling Actor NSSW (#153)

* feat: begin decompiling

* feat: decompiling enhanced

* fix: symbols sheningans

* fix: make jp build

* merge: update NSSW

* feat: improve overall matching

* feat: update

* feat: improve matching of ActorItemTornado's vfunc_2C

* fix: first attempt to make usa build

* style: move external functions

* fix: building NSSW

* fix: build for jp

* feat: improve matching

* feat: comply to suggestions
This commit is contained in:
Alessevan
2026-10-11 19:18:57 -04:00
committed by GitHub
parent f96b3a6e31
commit 6c8f5c72bc
23 changed files with 929 additions and 192 deletions
+4
View File
@@ -353,12 +353,16 @@ class Actor_C4 : public Actor_C4_Base {
public:
/* 00 (vtable) */
/* 04 */ unk32 mUnk_04;
// might be a VecFx16
/* 08 */ unk16 mUnk_08;
/* 08 */ unk16 mUnk_0A;
/* 0C */ unk16 mUnk_0C;
// might be a VecFx16
/* 0C */ unk16 mUnk_0E;
/* 10 */ unk16 mUnk_10;
/* 10 */ unk16 mUnk_12;
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
+79 -43
View File
@@ -1,5 +1,3 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "Actor/Actor.hpp"
@@ -8,60 +6,99 @@
#include "global.h"
#include "types.h"
class ActorUnkNSSW_C4 : public Actor_C4 {
class ActorUnkNSSW;
class ActorUnkNSSW_0E0 : public Actor_C4 {
public:
ActorUnkNSSW_C4(Actor *param1);
/* 00 (base) */
/* 24 */
ActorUnkNSSW_0E0(ActorUnkNSSW *param1);
/* 00 */ virtual bool vfunc_00(RefStruct ref, unk32 param2) override;
/* 04 */ virtual bool vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
/* 0C */ virtual void vfunc_0C(VecFx32 *param1) override;
};
class ActorUnkNSSW : public Actor {
class ActorUnkNSSW_104 : public UnkStruct_ov031_Items_01 {
public:
/* 000 (base) */
/* 094 */ PAD(0x094, 0x0BC);
/* 0BC */ unk32 mUnk_0BC;
/* 0C0 */ PAD(0x0C0, 0x184);
/* 00 (base) */
/* 2C */ ActorUnkNSSW *mUnk_2C;
/* 30 */
ActorUnkNSSW_104(ActorUnkNSSW *actor);
/* 10 */ virtual void vfunc_10(Actor *actor) override;
};
#if IS_JP
/* 184 */ PAD(0x184, 0x190);
/* 190 */ MapObjectUnkSWSW *mUnk_184_eur;
/* 194 */ MapObjectUnkSWSW *mUnk_188_eur;
#else
/* 184 */ MapObjectUnkSWSW *mUnk_184_eur;
/* 188 */ MapObjectUnkSWSW *mUnk_188_eur;
class ActorUnkNSSW_138 : public UnkStruct_ov031_Items_00 {
public:
/* 00 (base) */
/* 04 */ unk32 mUnk_04;
/* 08 */ ActorUnkNSSW *mUnk_08;
ActorUnkNSSW_138(ActorUnkNSSW *actor) :
UnkStruct_ov031_Items_00(),
mUnk_08(actor) {}
/* 0C */ virtual bool vfunc_0C(RefStruct ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3,
const VecFx32 *param4) override;
};
#endif
/* 18C */
class ActorUnkNSSW : public Actor_Derived2 {
public:
/* EUR - JPN */
/* 000 - 000 (base) */
/* 0AE - 0AE */ PAD(0x0AE, 0x0B0);
/* 0B0 - 0B0 */ UnkSystem6_Derived2 mUnk_0B0;
/* 0BC - 0BC */ unk32 mUnk_0BC;
/* 0C0 - 0C0 */ Actor_9C mUnk_0C0;
/* 0E0 - 0E0 */ ActorUnkNSSW_0E0 mUnk_0E0;
/* 104 - 104 */ ActorUnkNSSW_104 mUnk_104;
/* 134 - 134 */ RefStruct mUnk_134;
#if IS_JP
/* 138 - 138 */ ActorUnkNSSW_138 mUnk_138_jp;
#endif
/* 138 - 144 */ VecFx32Cpp mUnk_138;
/* 144 - 150 */ VecFx32Cpp mUnk_144;
/* 150 - 15C */ MtxFx33 mUnk_150;
/* 174 - 180 */ unk32 mUnk_174;
/* 178 - 184 */ unk32 mUnk_178;
/* 17C - 188 */ unk32 mUnk_17C;
/* 180 - 18C */ unk32 mUnk_180;
/* 184 - 190 */ MapObjectUnkSWSW *mUnk_184;
/* 188 - 194 */ MapObjectUnkSWSW *mUnk_188;
/* 18C - 198 */ unk16 mUnk_18C;
/* 190 - 19C */ VecFx32Cpp mUnk_190;
/* 19C - 1A8 */ bool mUnk_19C;
/* 19D - 1A9 */ bool mUnk_19D;
/* 1A0 - 1AC */ unk32 mUnk_1A0;
/* 1A4 - 1B0 */
ActorUnkNSSW();
/* 4C */ virtual ~ActorUnkNSSW() override;
/* 1C */ virtual bool Init(unk32 param1) override;
/* 20 */ virtual void Update() override;
/* 2C */ virtual void vfunc_2C(Actor_vfunc_30 *param1) override;
void func_ov032_0211fefc(void);
void func_ov032_0211ff10(void);
void func_ov032_0211ff38(void);
void func_ov032_02120118(void);
void func_ov032_02120190(void);
void func_ov032_0212025c(void);
void func_ov032_021202d8(void);
void func_ov032_021203fc(void);
void func_ov032_0212074c(void);
void func_ov032_02120880(void);
void func_ov032_02120894(void);
void func_ov032_02120b34(void);
void func_ov032_02120b6c(void);
void func_ov032_02120b7c(void);
void func_ov032_02120bc0(void);
void func_ov032_02120bfc(void);
void func_ov032_02120118();
void func_ov032_02120190();
void func_ov032_0212025c();
void func_ov032_021202d8();
void func_ov032_021203fc();
void func_ov032_02120880();
void func_ov032_02120894(unk32 param1);
void func_ov032_02120b34(RefStruct ref);
void func_ov032_02120b6c();
void func_ov032_02120b7c(VecFx32 *param1);
void func_ov032_02120bc0();
void func_ov032_02120bfc(Actor *actor);
#if IS_JP
void func_ov032_02122b0c(MapObject *mapObject);
#endif
void func_ov032_02120c64(MapObjectUnkSWSW *param1);
void func_ov032_02120cf0(void);
void func_ov032_02120d24(void);
void func_ov032_02120d60(void);
void func_ov032_02120d7c(void);
void func_ov032_02120dbc(void);
void func_ov032_02120df8(void);
void func_ov032_02120e4c(void);
};
class ActorProfileUnkNSSW : public ActorProfile {
@@ -69,7 +106,6 @@ public:
/* 00 (base) */
ActorProfileUnkNSSW();
~ActorProfileUnkNSSW();
/* 0C */ virtual Actor *Create();
+3 -2
View File
@@ -19,8 +19,9 @@ public:
class ActorUnkRCHU : public Actor {
public:
/* 00 (base) */
/* 94 */
/* 000 (base) */
/* 094 */ PAD(0x094, 0x268);
/* 268 */ unk32 mUnk_268;
ActorUnkRCHU();
+7 -1
View File
@@ -131,7 +131,8 @@ void func_0200b58c(G3d_RenderObject *);
void G3d_GetCurrentMtx(MtxFx43 *mtx1, MtxFx33 *mtx2);
void func_0200ea38(G3d_Model *, unk32, unk32);
void func_0200eab0(G3d_Model *, unk32, u8);
void func_0200ef9c(G3d_Model *);
void func_0200ef5c(G3d_Model *, unk32);
void func_0200ef9c(G3d_Model *, unk32);
UnkResourceStruct2 *func_0200f05c(G3d_NameList *, char *);
unk32 func_0200f218(G3d_NameList *, const char name[16]);
void *func_02012ec8(unk32, unk16, const char *, size_t *, unk32, u8);
@@ -279,6 +280,11 @@ VecFx32 *func_ov000_0205d524(unk32, unk32);
void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, UnkAngleStruct);
void func_ov000_0205db44(void *, void *, unk32);
void func_ov000_0205dbe4(u16);
void func_ov000_0205f298(unk32 *, VecFx32 *, unk32);
void func_ov000_0205f4fc(unk32 *, MtxFx33 *);
void func_ov000_0205f6e4(VecFx32 *, VecFx32 *);
bool func_ov000_0205f7d4(VecFx32 *, VecFx32 *, VecFx32 *);
void func_ov000_0205f8e8(unk32 *, MtxFx33 *);
void func_ov000_02062e44(Vec2s *param1, void *param2);
void *func_ov000_02066294();
unk32 func_ov000_02068504(int);
+22
View File
@@ -1,5 +1,7 @@
#pragma once
#include "global.h"
#include <nitro/math.h>
// some kind of angle conversion? only used for angle values so far
@@ -45,6 +47,26 @@ struct VecFx32Cpp {
vec.y = Y;
vec.z = Z;
}
void Set(fx32 X, fx32 Y, fx32 Z) {
VecFx32_Init(X, Y, Z, &this->vec);
}
void Reset() {
VecFx32_Reset(&this->vec);
}
void CopyIn(VecFx32Cpp *vec) {
VecFx32_Copy(&this->vec, &vec->vec);
}
void CopyIn(VecFx32 *vec) {
VecFx32_Copy(&this->vec, vec);
}
bool TryNormalize() {
return VecFx32_TryNormalize(&this->vec);
}
};
// C++ wrapper for VecFx16