Decompiling part of ROCK (#129)

* feat: decompiling part of ROCK

* style: add non-matching comments above non-matching functions

* typo: use PascalCase Max for State

Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com>

---------

Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
Alessevan
2026-08-12 16:38:27 -04:00
committed by GitHub
parent b2a553262f
commit 42407bafe4
12 changed files with 178 additions and 59 deletions
+2 -2
View File
@@ -1467,7 +1467,7 @@ func_ov000_0207e184 kind:function(arm,size=0x58) addr:0x0207e184
func_ov000_0207e1dc kind:function(arm,size=0x30) addr:0x0207e1dc
func_ov000_0207e20c kind:function(arm,size=0x34) addr:0x0207e20c
_ZN18UnkStruct_027e09c019func_ov000_0207e240EP15ActorUnkSCCN_B8 kind:function(arm,size=0x14) addr:0x0207e240
func_ov000_0207e254 kind:function(arm,size=0x14) addr:0x0207e254
_ZN18UnkStruct_027e09c019func_ov000_0207e254EP15ActorUnkSCCN_B8 kind:function(arm,size=0x14) addr:0x0207e254
func_ov000_0207e268 kind:function(arm,size=0x2c) addr:0x0207e268
_ZN5Actor19func_ov000_0207e294EP8Cylinder kind:function(arm,size=0x118) addr:0x0207e294
func_ov000_0207e3ac kind:function(arm,size=0xac) addr:0x0207e3ac
@@ -1914,7 +1914,7 @@ func_ov000_0208ba60 kind:function(arm,size=0x20) addr:0x0208ba60
func_ov000_0208ba80 kind:function(arm,size=0x14) addr:0x0208ba80
func_ov000_0208ba94 kind:function(arm,size=0x1c) addr:0x0208ba94
func_ov000_0208bab0 kind:function(arm,size=0x1c) addr:0x0208bab0
func_ov000_0208bacc kind:function(arm,size=0x10) addr:0x0208bacc
_ZN18UnkStruct_027e0ce019func_ov000_0208baccEiP7VecFx32 kind:function(arm,size=0x10) addr:0x0208bacc
func_ov000_0208badc kind:function(arm,size=0x10) addr:0x0208badc
func_ov000_0208baec kind:function(arm,size=0x10) addr:0x0208baec
func_ov000_0208bafc kind:function(arm,size=0x10) addr:0x0208bafc
@@ -53,6 +53,7 @@ src/031_Land/Actor/ActorUnkROCK.cpp:
.text start:0x020e8824 end:0x020e8cb8
.init start:0x02111220 end:0x02111270
.ctor start:0x021127b4 end:0x021127b8
.data start:0x021133c4 end:0x02113468
.bss start:0x021165d0 end:0x021166e8
src/031_Land/Actor/ActorRupee.cpp:
+1 -1
View File
@@ -1723,7 +1723,7 @@ from:0x020e8840 kind:arm_call to:0x02011f3c module:main
from:0x020e884c kind:arm_call to:0x020e88e0 module:overlay(31)
from:0x020e8860 kind:arm_call to:0x02097898 module:overlay(0)
from:0x020e8870 kind:arm_call to:0x0207c018 module:overlay(0)
from:0x020e88c8 kind:load to:0x021133cc module:overlay(31)
from:0x020e88c8 kind:load to:0x021133c4 module:overlay(31) add:0x8
from:0x020e88cc kind:load to:0x02112a70 add:0x8 module:overlay(31)
from:0x020e88d0 kind:load to:0x021133e8 add:0x8 module:overlay(31)
from:0x020e88e8 kind:arm_call to:0x02098388 module:overlay(0)
+9 -9
View File
@@ -546,13 +546,13 @@ _ZN19ActorProfileUnkROCK10GetProfileEv kind:function(arm,size=0xc) addr:0x020e88
_ZN19ActorProfileUnkROCK6CreateEv kind:function(arm,size=0x24) addr:0x020e8830
_ZN19ActorProfileUnkROCKC1Ev kind:function(arm,size=0x8c) addr:0x020e8854
_ZN12ActorUnkROCKC1Ev kind:function(arm,size=0x9c) addr:0x020e88e0
_ZN12ActorUnkROCK19func_ov031_020e897cEv kind:function(arm,size=0x30) addr:0x020e897c
_ZN12ActorUnkROCK19func_ov031_020e89acEv kind:function(arm,size=0x9c) addr:0x020e89ac
_ZN12ActorUnkROCK19func_ov031_020e8a48Ev kind:function(arm,size=0x84) addr:0x020e8a48
_ZN12ActorUnkROCK8vfunc_18Ei kind:function(arm,size=0x30) addr:0x020e897c
_ZN12ActorUnkROCK8vfunc_20Ev kind:function(arm,size=0x9c) addr:0x020e89ac
_ZN12ActorUnkROCK19func_ov031_020e8a48Es kind:function(arm,size=0x84) addr:0x020e8a48
_ZN12ActorUnkROCK19func_ov031_020e8accEv kind:function(arm,size=0x30) addr:0x020e8acc
_ZN12ActorUnkROCK19func_ov031_020e8afcEv kind:function(arm,size=0xa4) addr:0x020e8afc
_ZN12ActorUnkROCK19func_ov031_020e8ba0Ev kind:function(arm,size=0x68) addr:0x020e8ba0
_ZN12ActorUnkROCK19func_ov031_020e8c08Ev kind:function(arm,size=0x44) addr:0x020e8c08
_ZN12ActorUnkROCK8vfunc_2CEi kind:function(arm,size=0xa4) addr:0x020e8afc
_ZN12ActorUnkROCK4GrabE15ActorGrabParams kind:function(arm,size=0x68) addr:0x020e8ba0
_ZN12ActorUnkROCK4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x44) addr:0x020e8c08
_ZN12ActorUnkROCKD1Ev kind:function(arm,size=0x28) addr:0x020e8c4c
_ZN12ActorUnkROCKD0Ev kind:function(arm,size=0x30) addr:0x020e8c74
_ZN19ActorProfileUnkROCKD1Ev kind:function(arm,size=0x14) addr:0x020e8ca4
@@ -2284,9 +2284,9 @@ data_ov031_02113204 kind:data(any) addr:0x02113204
data_ov031_02113218 kind:data(any) addr:0x02113218
data_ov031_02113260 kind:data(any) addr:0x02113260
_ZTV19data_ov031_021132a8 kind:data(any) addr:0x021132a8
data_ov031_021133cc kind:data(any) addr:0x021133cc
_ZTV19data_ov031_021133e8 kind:data(any) addr:0x021133e8
_ZTV19data_ov031_0211340c kind:data(any) addr:0x0211340c
_ZTV24ActorProfileUnkROCK_Base kind:data(any) addr:0x021133c4
_ZTV19ActorProfileUnkROCK kind:data(any) addr:0x021133e8
_ZTV12ActorUnkROCK kind:data(any) addr:0x0211340c
data_ov031_02113468 kind:data(any) addr:0x02113468
data_ov031_02113478 kind:data(any) addr:0x02113478
_ZTV13ActorRupee_C4 kind:data(any) addr:0x02113488
+2 -2
View File
@@ -1465,7 +1465,7 @@ func_ov000_0207f83c kind:function(arm,size=0x58) addr:0x0207f83c
func_ov000_0207f894 kind:function(arm,size=0x30) addr:0x0207f894
func_ov000_0207f8c4 kind:function(arm,size=0x34) addr:0x0207f8c4
_ZN18UnkStruct_027e09c019func_ov000_0207e240EP15ActorUnkSCCN_B8 kind:function(arm,size=0x14) addr:0x0207f8f8
func_ov000_0207f90c kind:function(arm,size=0x14) addr:0x0207f90c
_ZN18UnkStruct_027e09c019func_ov000_0207e254EP15ActorUnkSCCN_B8 kind:function(arm,size=0x14) addr:0x0207f90c
func_ov000_0207f920 kind:function(arm,size=0x2c) addr:0x0207f920
_ZN5Actor19func_ov000_0207e294EP8Cylinder kind:function(arm,size=0x118) addr:0x0207f94c
func_ov000_0207fa64 kind:function(arm,size=0xac) addr:0x0207fa64
@@ -1912,7 +1912,7 @@ func_ov000_0208d134 kind:function(arm,size=0x20) addr:0x0208d134
func_ov000_0208d154 kind:function(arm,size=0x14) addr:0x0208d154
func_ov000_0208d168 kind:function(arm,size=0x1c) addr:0x0208d168
func_ov000_0208d184 kind:function(arm,size=0x1c) addr:0x0208d184
func_ov000_0208d1a0 kind:function(arm,size=0x10) addr:0x0208d1a0
_ZN18UnkStruct_027e0ce019func_ov000_0208baccEiP7VecFx32 kind:function(arm,size=0x10) addr:0x0208d1a0
func_ov000_0208d1b0 kind:function(arm,size=0x10) addr:0x0208d1b0
func_ov000_0208d1c0 kind:function(arm,size=0x10) addr:0x0208d1c0
func_ov000_0208d1d0 kind:function(arm,size=0x10) addr:0x0208d1d0
@@ -52,6 +52,7 @@ src/031_Land/Actor/ActorUnkROCK.cpp:
.text start:0x020ea210 end:0x020ea6a4
.init start:0x02112f90 end:0x02112fe0
.ctor start:0x02114540 end:0x02114544
.data start:0x02115164 end:0x02115208
.bss start:0x02118370 end:0x02118458
src/031_Land/Actor/ActorRupee.cpp:
+1 -1
View File
@@ -1724,7 +1724,7 @@ from:0x020ea22c kind:arm_call to:0x02011f3c module:main
from:0x020ea238 kind:arm_call to:0x020ea2cc module:overlay(31)
from:0x020ea24c kind:arm_call to:0x02099040 module:overlay(0)
from:0x020ea25c kind:arm_call to:0x0207d6d0 module:overlay(0)
from:0x020ea2b4 kind:load to:0x0211516c module:overlay(31)
from:0x020ea2b4 kind:load to:0x02115164 module:overlay(31) add:0x8
from:0x020ea2b8 kind:load to:0x02114818 module:overlay(31)
from:0x020ea2bc kind:load to:0x02115188 add:0x8 module:overlay(31)
from:0x020ea2d4 kind:arm_call to:0x02099b30 module:overlay(0)
+10 -10
View File
@@ -546,13 +546,13 @@ _ZN19ActorProfileUnkROCK10GetProfileEv kind:function(arm,size=0xc) addr:0x020ea2
_ZN19ActorProfileUnkROCK6CreateEv kind:function(arm,size=0x24) addr:0x020ea21c
_ZN19ActorProfileUnkROCKC1Ev kind:function(arm,size=0x8c) addr:0x020ea240
_ZN12ActorUnkROCKC1Ev kind:function(arm,size=0x9c) addr:0x020ea2cc
_ZN12ActorUnkROCK19func_ov031_020e897cEv kind:function(arm,size=0x30) addr:0x020ea368
_ZN12ActorUnkROCK19func_ov031_020e89acEv kind:function(arm,size=0x9c) addr:0x020ea398
_ZN12ActorUnkROCK19func_ov031_020e8a48Ev kind:function(arm,size=0x84) addr:0x020ea434
_ZN12ActorUnkROCK8vfunc_18Ei kind:function(arm,size=0x30) addr:0x020ea368
_ZN12ActorUnkROCK8vfunc_20Ev kind:function(arm,size=0x9c) addr:0x020ea398
_ZN12ActorUnkROCK19func_ov031_020e8a48Es kind:function(arm,size=0x84) addr:0x020ea434
_ZN12ActorUnkROCK19func_ov031_020e8accEv kind:function(arm,size=0x30) addr:0x020ea4b8
_ZN12ActorUnkROCK19func_ov031_020e8afcEv kind:function(arm,size=0xa4) addr:0x020ea4e8
_ZN12ActorUnkROCK19func_ov031_020e8ba0Ev kind:function(arm,size=0x68) addr:0x020ea58c
_ZN12ActorUnkROCK19func_ov031_020e8c08Ev kind:function(arm,size=0x44) addr:0x020ea5f4
_ZN12ActorUnkROCK8vfunc_2CEi kind:function(arm,size=0xa4) addr:0x020ea4e8
_ZN12ActorUnkROCK4GrabE15ActorGrabParams kind:function(arm,size=0x68) addr:0x020ea58c
_ZN12ActorUnkROCK4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x44) addr:0x020ea5f4
_ZN12ActorUnkROCKD1Ev kind:function(arm,size=0x28) addr:0x020ea638
_ZN12ActorUnkROCKD0Ev kind:function(arm,size=0x30) addr:0x020ea660
_ZN19ActorProfileUnkROCKD1Ev kind:function(arm,size=0x14) addr:0x020ea690
@@ -2281,9 +2281,9 @@ data_ov031_02114fa4 kind:data(any) addr:0x02114fa4
data_ov031_02114fb8 kind:data(any) addr:0x02114fb8
data_ov031_02115000 kind:data(any) addr:0x02115000
_ZTV19data_ov031_02115048 kind:data(any) addr:0x02115048
data_ov031_0211516c kind:data(any) addr:0x0211516c
_ZTV19data_ov031_02115188 kind:data(any) addr:0x02115188
_ZTV19data_ov031_021151ac kind:data(any) addr:0x021151ac
_ZTV24ActorProfileUnkROCK_Base kind:data(any) addr:0x02115164
_ZTV19ActorProfileUnkROCK kind:data(any) addr:0x02115188
_ZTV12ActorUnkROCK kind:data(any) addr:0x021151ac
data_ov031_02115208 kind:data(any) addr:0x02115208
data_ov031_02115218 kind:data(any) addr:0x02115218
_ZTV13ActorRupee_C4 kind:data(any) addr:0x02115228
@@ -2538,7 +2538,7 @@ data_ov031_0211836c kind:bss addr:0x0211836c
_ZGVN15ProfileInstanceI19ActorProfileUnkROCKE8sProfileE kind:bss addr:0x02118370
@30811 kind:bss addr:0x02118374
_ZN15ProfileInstanceI19ActorProfileUnkROCKE8sProfileE kind:bss addr:0x02118380
data_ov031_02118458 kind:bss addr:0x02118458
data_ov031_021166b8 kind:bss addr:0x02118458
data_ov031_02118478 kind:bss addr:0x02118478
data_ov031_0211847c kind:bss addr:0x0211847c
_ZN15ProfileInstanceI17ActorProfileRupeeE8sProfileE kind:bss addr:0x02118488
+34 -21
View File
@@ -1,46 +1,59 @@
//! TODO: This file was generated automatically and might contain errors
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "ActorUnkSCCN.hpp"
#include "MapObject/MapObject_ov031.hpp"
#include "global.h"
#include "types.h"
class ActorUnkROCK_C4 : public Actor_C4 {
public:
ActorUnkROCK_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;
enum ActorUnkROCKState_ {
ActorUnkROCKState_0 = 0,
ActorUnkROCKState_1 = 1,
ActorUnkROCKState_2 = 2,
ActorUnkROCKState_3 = 3,
ActorUnkROCKState_4 = 4,
ActorUnkROCKState_Max,
};
class ActorUnkROCK : public Actor {
public:
/* 00 (base) */
/* 94 */
/* 94 */ UnkSystem6_Derived2 mUnk_94;
/* 9C */ bool mUnk_9C;
/* A0 */ ActorUnkSCCN_B8 mUnk_A0;
/* B0 */
ActorUnkROCK();
/* 4C */ virtual ~ActorUnkROCK() override;
/* 18 */ virtual bool vfunc_18(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 2C */ virtual void vfunc_2C(unk32 param1) override;
/* 38 */ virtual bool Grab(ActorGrabParams param1) override;
/* 38 */ virtual bool Drop(ActorGrabParams param1, const VecFx32 *param2) override;
void func_ov031_020e897c(void);
void func_ov031_020e89ac(void);
void func_ov031_020e8a48(void);
void func_ov031_020e8acc(void);
void func_ov031_020e8afc(void);
void func_ov031_020e8ba0(void);
void func_ov031_020e8c08(void);
void func_ov031_020e8a48(ActorState state);
void func_ov031_020e8acc();
};
class ActorProfileUnkROCK : public ActorProfile_Derived1 {
class ActorProfileUnkROCK_Base : public ActorProfile_Derived1 {
public:
/* 00 (base) */
/* D8 */ MapObject_10_Pot mUnk_D8;
/* FC */
ActorProfileUnkROCK_Base(ActorId actorId) :
ActorProfile_Derived1(actorId) {}
// data_ov031_021133cc
};
class ActorProfileUnkROCK : public ActorProfileUnkROCK_Base {
public:
/* 00 (base) */
/* FC */
ActorProfileUnkROCK();
~ActorProfileUnkROCK();
/* 0C */ virtual Actor *Create();
+1
View File
@@ -71,6 +71,7 @@ public:
s16 func_ov000_0207dc88(Actor **, Actor_38 *);
void func_ov000_0207de98(ActorRef param1, UnkStruct_ov000_0207de98 *param2, Actor_38 *param3);
void func_ov000_0207e240(ActorUnkSCCN_B8 *param1);
void func_ov000_0207e254(ActorUnkSCCN_B8 *param1);
void func_ov000_0207e58c(ActorRef param1, unk32 param2, u8 param3, UnkStruct_ov031_Items_01 *param4);
bool func_ov000_0207e458(unk32 param1, unk32 param2, VecFx32 *param3, unk32 param4, VecFx32 *param5, ActorRef param6);
+1
View File
@@ -771,6 +771,7 @@ public:
void func_ov000_0208a2c4(unk32 param1, unk32 param2);
void func_ov000_0208a318(unk32 param1, unk32 param2, unk32 param3);
void func_ov000_0208ba94(unk32 param1, VecFx32 *param2);
void func_ov000_0208bacc(unk32 param1, VecFx32 *param2);
void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, u16 param3);
bool func_ov000_0208bc1c(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
void func_ov000_0208bc9c(unk32 param1, unk32 param2);
+115 -13
View File
@@ -1,7 +1,12 @@
//! TODO: This file was generated automatically and might contain errors
#include "Actor/ActorUnkROCK.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_027e09a8.hpp"
#include "Unknown/UnkStruct_027e09b4.hpp"
#include "Unknown/UnkStruct_027e09c0.hpp"
extern "C" Mat3p data_027e0130;
static MapObject_10 data_ov031_021166b8;
DECL_PROFILE(ActorProfileUnkROCK);
@@ -9,18 +14,115 @@ Actor *ActorProfileUnkROCK::Create() {
return new(HeapIndex_2) ActorUnkROCK();
}
// non-matching
ActorProfileUnkROCK::ActorProfileUnkROCK() :
ActorProfile_Derived1(ActorId_ROCK) {}
ActorProfileUnkROCK_Base(ActorId_ROCK) {
this->mUnk_04.Init(FLOAT_TO_FX32(0.5f));
VecFx32_Init(FLOAT_TO_FX32(7.0017f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D8.mUnk_0C);
VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.6f), FLOAT_TO_FX32(1.2f), &this->mUnk_D8.mUnk_18);
}
ActorUnkROCK::ActorUnkROCK() {}
ActorUnkROCK::ActorUnkROCK() :
mUnk_94(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkROCK)->mUnk_3C.mUnk_50)),
mUnk_9C(true) {
this->mUnk_44 = 0x1F;
this->mUnk_4A[1] = 0x02;
}
void ActorUnkROCK::func_ov031_020e897c(void) {}
void ActorUnkROCK::func_ov031_020e89ac(void) {}
void ActorUnkROCK::func_ov031_020e8a48(void) {}
void ActorUnkROCK::func_ov031_020e8acc(void) {}
void ActorUnkROCK::func_ov031_020e8afc(void) {}
void ActorUnkROCK::func_ov031_020e8ba0(void) {}
void ActorUnkROCK::func_ov031_020e8c08(void) {}
bool ActorUnkROCK::vfunc_18(unk32 param1) {
this->mUnk_A0.mUnk_04 = this->mRef;
this->mUnk_A0.mUnk_08 = &this->mPos;
this->mUnk_A0.mUnk_0C = &data_ov031_021166b8;
ActorUnkROCK::~ActorUnkROCK() {}
ActorProfileUnkROCK::~ActorProfileUnkROCK() {}
this->func_ov031_020e8a48(ActorUnkROCKState_0);
return true;
}
void ActorUnkROCK::vfunc_20() {
VecFx32_Copy(&this->mPos, &this->mPrevPos);
switch (this->mState) {
case ActorUnkROCKState_1:
data_027e0ce0->func_ov000_0208bacc(0x1, &this->mPos);
break;
case ActorUnkROCKState_3:
this->func_ov000_02098838();
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
if (this->func_ov000_02098910(NULL, 0x10) == 0x0) {
break;
}
this->func_ov031_020e8a48(ActorUnkROCKState_4);
break;
case ActorUnkROCKState_0:
case ActorUnkROCKState_2:
case ActorUnkROCKState_4:
default:
break;
}
}
void ActorUnkROCK::func_ov031_020e8a48(ActorState state) {
this->mUnk_52 = 0xFFFF;
this->mUnk_50 = 0x0000;
if (this->mState == ActorUnkROCKState_0) {
data_027e09c0->func_ov000_0207e254(&this->mUnk_A0);
}
this->mState = state;
switch (state) {
case ActorUnkROCKState_0:
data_027e09c0->func_ov000_0207e240(&this->mUnk_A0);
break;
case ActorUnkROCKState_4:
this->func_ov031_020e8acc();
break;
case ActorUnkROCKState_1:
case ActorUnkROCKState_2:
case ActorUnkROCKState_3:
default:
break;
}
}
void ActorUnkROCK::func_ov031_020e8acc() {
data_027e09a8->func_ov000_02071b30(0x0, &this->mPos, 0x0);
this->func_ov000_020984d0();
}
void ActorUnkROCK::vfunc_2C(unk32 param1) {
if (!this->func_01fff5d0(param1, 0x0)) {
return;
}
VecFx32 vecSp18;
VecFx32_Init(FLOAT_TO_FX32(1.2f), FLOAT_TO_FX32(1.2f), FLOAT_TO_FX32(1.2f), &vecSp18);
VecFx32 vecSp0C = this->mPos;
vecSp0C.y += FLOAT_TO_FX32(0.8f);
this->mUnk_94.vfunc_10(&vecSp18, &data_027e0130, &vecSp0C);
data_027e09b4->func_01fff60c(&this->mPos, 0xC00, 0xC00, 0x1F, 0x0, 0x0);
}
// non-matching
bool ActorUnkROCK::Grab(ActorGrabParams param1) {
if (param1.unk_00 != 0x100 || param1.unk_02 != 1) {
return false;
}
if (!this->Actor::Grab(param1)) {
return false;
}
this->func_ov031_020e8a48(ActorUnkROCKState_1);
return true;
}
// non-matching
bool ActorUnkROCK::Drop(ActorGrabParams param1, const VecFx32 *param2) {
if (!this->Actor::Drop(param1, param2)) {
return false;
}
this->func_ov031_020e8a48(ActorUnkROCKState_3);
return true;
}