Decompiling Fleeing Spinut (#148)

* feat: decompiling green spinut

* feat: some progress

* refactor: rename MKUR to GreenSpinut and ActorId_KURI to ActorId_Spinut

* feat: better symbols

* feat: update matching

* fix: change MKUR for eur1 & usa

* feat: up eur1

* feat: up usa

* fix: usa

* feat: up jp data

* feat: improve matching

* feat: improve overall matching

* feat: add comments on KURI's states

* refactor: rename to FleeingSpinut

* feat: relocate function to ModelRenderBase

* refactor: rename last GreenSpinut

* refactor: rename field

* fix: forgot to rename symbol :clown:
This commit is contained in:
Alessevan
2026-08-31 16:22:42 -04:00
committed by GitHub
parent a8fdb9c656
commit 44499db695
35 changed files with 1298 additions and 473 deletions
+119
View File
@@ -0,0 +1,119 @@
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "ActorProfile_ov000_020b3018.hpp"
#include "ActorSpinut.hpp"
#include "global.h"
#include "types.h"
enum ActorFleeingSpinutState_ {
ActorFleeingSpinutState_0 = 0,
ActorFleeingSpinutState_1 = 1,
ActorFleeingSpinutState_2 = 2,
ActorFleeingSpinutState_3 = 3,
ActorFleeingSpinutState_4 = 4,
ActorFleeingSpinutState_5 = 5,
ActorFleeingSpinutState_6 = 6,
ActorFleeingSpinutState_Max
};
class ActorFleeingSpinut_1EC {
public:
/* 00 */ u8 mUnk_00;
/* 04 */ UnkStruct_027e0960_TableEntry_04 *mUnk_04;
/* 08 */ UnkStruct_027e0960_TableEntry_04 *mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ VecFx32 mUnk_1C;
/* 28 */ u16 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */
ActorFleeingSpinut_1EC();
void func_ov032_0211cc48(VecFx32 *param1);
UnkStruct_027e0960_TableEntry_04 *func_ov032_0211cd20(VecFx32 *param1);
u16 *func_ov032_0211cd60(VecFx32 *param1, s16 *param2, VecFx32 *param3, unk32 param4, unk32 param5, unk32 param6);
void func_ov032_0211cf74();
void func_ov032_0211cfac(unk32 param1);
void func_ov032_0211d028();
bool func_ov032_0211d040(VecFx32 *param1);
void func_ov032_0211d08c(VecFx32 *param1);
bool func_ov032_0211d2e4(UnkStruct_027e0960_TableEntry_04_Base *param1);
UnkStruct_027e0960_TableEntry_04 *func_ov032_0211d384(VecFx32 *param1);
unk32 func_ov032_0211d568(VecFx32 *param1, UnkStruct_027e0960_TableEntry_04_Base *param2,
UnkStruct_027e0960_TableEntry_04_Base *param3);
bool func_ov032_0211d674(VecFx32 *param1, UnkStruct_027e0960_TableEntry_04_Base *param2);
bool func_ov032_0211d6d8(VecFx32 *param1, UnkStruct_027e0960_TableEntry_04_Base *param2, unk32 param3);
void func_ov032_0211d7e8(VecFx32 *param1);
void func_ov032_0211d80c();
void func_ov032_0211d830(UnkStruct_027e0960_TableEntry_04 *param1);
void func_ov032_0211d910();
bool func_ov032_0211d920(VecFx32 *param1);
bool func_ov032_0211d864(VecFx32 *param1);
bool func_ov032_0211da0c(unk32 param1, VecFx32 *param2);
};
class ActorFleeingSpinut : public Actor_Derived2 {
public:
/* 000 (base) */
/* 0AE */ STRUCT_PAD(0x0AE, 0x0B0);
/* 0B0 */ ModelRender_ov000_020b1a1c mUnk_0B0;
/* 110 */ ActorSpinut_110 mUnk_110;
/* 1A0 */ STRUCT_PAD(0x1A0, 0x1BC);
/* 1BC */ ActorState mPrevState;
/* 1BE */ unk16 mUnk_1BE;
/* 1C0 */ Actor_9C mUnk_1C0;
/* 1E0 */ Actor_Derived1_94 mUnk_1E0;
/* 1EC */ ActorFleeingSpinut_1EC mUnk_1EC;
/* 21C */ fx32 mUnk_21C;
/* 220 */ unk32 mUnk_220;
/* 224 */ bool mUnk_224;
ActorFleeingSpinut();
/* 18 */ virtual bool vfunc_18(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 2C */ virtual void vfunc_2C(unk32 param1) override;
/* 30 */ virtual void vfunc_30(Actor_vfunc_30 *param1) override;
/* 4C */ virtual ~ActorFleeingSpinut() override;
void SetState(ActorState state);
bool func_ov032_0211be04();
void func_ov032_0211be30();
void func_ov032_0211bea8();
void func_ov032_0211bf84();
void func_ov032_0211bffc();
void func_ov032_0211c07c();
void func_ov032_0211c108();
void func_ov032_0211c2c4();
void func_ov032_0211c340();
void func_ov032_0211c444();
void func_ov032_0211c4d4();
void func_ov032_0211c53c();
void func_ov032_0211c5cc();
void func_ov032_0211c73c();
void func_ov032_0211c7bc();
bool func_ov032_0211c938();
bool func_ov032_0211c9d8();
bool func_ov032_0211ca20();
bool func_ov032_0211ca6c();
bool func_ov032_0211cab8(unk32 param1, unk32 param2);
void func_ov032_0211cb2c();
};
class ActorProfileFleeingSpinut : public ActorProfile_ov000_020b3018 {
public:
/* 00 (base) */
/* 3C */ STRUCT_PAD(0x3C, 0x44);
/* 44 */
ActorProfileFleeingSpinut();
/* 0C */ virtual Actor *Create();
static ActorProfileFleeingSpinut *GetProfile();
};
@@ -0,0 +1,16 @@
#pragma once
#include "Actor/ActorProfile.hpp"
class ActorProfile_ov000_020b3018 : public ActorProfile {
public:
/* 00 (base) */
/* 3C */
ActorProfile_ov000_020b3018(ActorId param1, ActorId param2); // func_ov000_020979b4
// data_ov000_020b3018
/* 04 */ virtual UnkActorFileSystem2 *vfunc_04() override; // func_ov000_020979e4
/* 08 */ virtual void vfunc_08() override; // func_ov000_02097a18
/* 10 */ virtual void vfunc_10() override; // func_ov000_020979ec
};
+5 -5
View File
@@ -16,16 +16,16 @@ public:
};
enum ActorSpinutState_ {
ActorSpinutState_0 = 0,
ActorSpinutState_1 = 1,
ActorSpinutState_0 = 0, // Idle
ActorSpinutState_1 = 1, // Triggered by Link
ActorSpinutState_2 = 2,
ActorSpinutState_3 = 3,
ActorSpinutState_3 = 3, // Walking to target aka Link
ActorSpinutState_4 = 4,
ActorSpinutState_5 = 5,
ActorSpinutState_6 = 6,
ActorSpinutState_6 = 6, // Damaged or killed ?
ActorSpinutState_7 = 7,
ActorSpinutState_8 = 8,
ActorSpinutState_9 = 9,
ActorSpinutState_9 = 9, // Target lost
ActorSpinutState_10 = 10,
ActorSpinutState_11 = 11,
ActorSpinutState_Max
+2 -2
View File
@@ -204,7 +204,7 @@ DEFINE_ACTOR_TYPE('KOAT', KOAT)
DEFINE_ACTOR_TYPE('KOCH', KOCH)
DEFINE_ACTOR_TYPE('KOKO', Cucco)
DEFINE_ACTOR_TYPE('KOTA', KOTA)
DEFINE_ACTOR_TYPE('KURI', KURI)
DEFINE_ACTOR_TYPE('KURI', Spinut)
DEFINE_ACTOR_TYPE('L2MT', L2MT)
DEFINE_ACTOR_TYPE('L2V1', L2V1)
DEFINE_ACTOR_TYPE('L2V2', L2V2)
@@ -227,7 +227,7 @@ DEFINE_ACTOR_TYPE('MBCC', MBCC)
DEFINE_ACTOR_TYPE('MDYG', MDYG)
DEFINE_ACTOR_TYPE('MGAJ', MGAJ)
DEFINE_ACTOR_TYPE('MIFR', MIFR)
DEFINE_ACTOR_TYPE('MKUR', MKUR)
DEFINE_ACTOR_TYPE('MKUR', FleeingSpinut)
DEFINE_ACTOR_TYPE('MLCK', MLCK)
DEFINE_ACTOR_TYPE('MNCB', MNCB)
DEFINE_ACTOR_TYPE('MOCT', MOCT)
+1 -1
View File
@@ -28,7 +28,7 @@ public:
/* 4C */ virtual ~ActorUnkKEYN() override;
void func_ov070_0214143c(void);
static void func_ov070_0214143c(ActorRef *param1, VecFx32 *param2, ActorRef param3, s16 param4, u8 param5, u16 param6);
void func_ov070_02141618(void);
void func_ov070_0214162c(void);
void func_ov070_02141750(void);
-88
View File
@@ -1,88 +0,0 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "global.h"
#include "types.h"
class ActorUnkMKUR_C4 : public Actor_C4 {
public:
ActorUnkMKUR_C4(Actor *param1);
/* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override;
/* 04 */ virtual bool vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
};
class ActorUnkMKUR : public Actor {
public:
/* 00 (base) */
/* 94 */
ActorUnkMKUR();
/* 4C */ virtual ~ActorUnkMKUR() override;
void func_ov032_0211b988(void);
void func_ov032_0211b9a4(void);
void func_ov032_0211ba0c(void);
void func_ov032_0211bc74(void);
void func_ov032_0211bd78(void);
void func_ov032_0211be04(void);
void func_ov032_0211be30(void);
void func_ov032_0211bea8(void);
void func_ov032_0211bf84(void);
void func_ov032_0211bffc(void);
void func_ov032_0211c07c(void);
void func_ov032_0211c108(void);
void func_ov032_0211c2c4(void);
void func_ov032_0211c340(void);
void func_ov032_0211c444(void);
void func_ov032_0211c4d4(void);
void func_ov032_0211c53c(void);
void func_ov032_0211c5cc(void);
void func_ov032_0211c73c(void);
void func_ov032_0211c7bc(void);
void func_ov032_0211c938(void);
void func_ov032_0211c9d8(void);
void func_ov032_0211ca20(void);
void func_ov032_0211ca6c(void);
void func_ov032_0211cab8(void);
void func_ov032_0211cb2c(void);
void func_ov032_0211cc10(void);
void func_ov032_0211cc48(void);
void func_ov032_0211cd20(void);
void func_ov032_0211cd60(void);
void func_ov032_0211cf74(void);
void func_ov032_0211cfac(void);
void func_ov032_0211d028(void);
void func_ov032_0211d040(void);
void func_ov032_0211d08c(void);
void func_ov032_0211d2e4(void);
void func_ov032_0211d384(void);
void func_ov032_0211d568(void);
void func_ov032_0211d674(void);
void func_ov032_0211d6d8(void);
void func_ov032_0211d7e8(void);
void func_ov032_0211d80c(void);
void func_ov032_0211d830(void);
void func_ov032_0211d864(void);
void func_ov032_0211d910(void);
void func_ov032_0211d920(void);
void func_ov032_0211da0c(void);
};
class ActorProfileUnkMKUR : public ActorProfile {
public:
/* 00 (base) */
ActorProfileUnkMKUR();
~ActorProfileUnkMKUR();
/* 0C */ virtual Actor *Create();
static ActorProfileUnkMKUR *GetProfile();
};
+1
View File
@@ -57,6 +57,7 @@ public:
/* 18 */ virtual void vfunc_18(VecFx32 *param1) = 0;
/* 1C */
void func_01ffc634(VecFx32 *param1, UnkAngleStruct param2, VecFx32 *param3);
void func_01ffc6d4(UnkAngleStruct angleStruct, VecFx32 *pos);
void func_ov000_02057cb0();
+10 -9
View File
@@ -10,7 +10,7 @@ public:
/* 00 (vtable) */
/* 04 */ unk8 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 0C */ UnkStruct_027e0960_TableEntry_04_Base *mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */
@@ -19,18 +19,18 @@ public:
// data_02043ff0
/* 00 */ virtual ~UnkStruct_027e0960_TableEntry_04_Base();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C(VecFx32 *param1) = 0;
/* 10 */ virtual void vfunc_10() = 0;
/* 14 */ virtual void vfunc_14() = 0;
/* 18 */ virtual void vfunc_18() = 0;
/* 1C */ virtual void vfunc_1C() = 0;
/* 0C */ virtual void vfunc_0C(VecFx32 *param1) = 0;
/* 10 */ virtual void vfunc_10() = 0;
/* 14 */ virtual void vfunc_14() = 0;
/* 18 */ virtual UnkStruct_027e0960_TableEntry_04_Base *vfunc_18(unk32 param1) = 0;
/* 1C */ virtual u32 vfunc_1C() = 0;
/* 20 */
};
class UnkStruct_027e0960_TableEntry_04 : public UnkStruct_027e0960_TableEntry_04_Base {
public:
/* 00 (base) */
/* 14 */ unk32 mUnk_14;
/* 14 */ UnkStruct_027e0960_TableEntry_04_Base *mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 20 */ unk16 mUnk_20;
@@ -43,8 +43,8 @@ public:
/* 0C */ virtual void vfunc_0C(VecFx32 *param1) override;
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
/* 18 */ virtual void vfunc_18() override;
/* 1C */ virtual void vfunc_1C() override;
/* 18 */ virtual UnkStruct_027e0960_TableEntry_04 *vfunc_18(unk32 param1) override;
/* 1C */ virtual u32 vfunc_1C() override;
};
class UnkStruct_027e0960_TableEntry {
@@ -57,6 +57,7 @@ public:
~UnkStruct_027e0960_TableEntry();
bool func_ov000_02059ccc(u8 param1, u8 param2);
void func_ov000_02059da4(VecFx32 *param1);
};
class UnkStruct_027e0960 : public AutoInstance<UnkStruct_027e0960> {