Add ActorRope

This commit is contained in:
Aetias
2025-02-02 11:38:39 +01:00
parent 1d2d2e4a2a
commit d5376fc903
8 changed files with 121 additions and 52 deletions
+20 -20
View File
@@ -84,22 +84,22 @@ func_ov014_0212357c kind:function(arm,size=0x40) addr:0x212357c
func_ov014_021235bc kind:function(arm,size=0x180) addr:0x21235bc
func_ov014_0212373c kind:function(arm,size=0xb0) addr:0x212373c
func_ov014_021237ec kind:function(arm,size=0x10) addr:0x21237ec
func_ov014_021237fc kind:function(arm,size=0x30) addr:0x21237fc
func_ov014_0212382c kind:function(arm,size=0x20) addr:0x212382c
func_ov014_0212384c kind:function(arm,size=0xc) addr:0x212384c
func_ov014_02123858 kind:function(arm,size=0x50) addr:0x2123858
func_ov014_021238a8 kind:function(arm,size=0x48) addr:0x21238a8
func_ov014_021238f0 kind:function(arm,size=0x14) addr:0x21238f0
func_ov014_02123904 kind:function(arm,size=0x5c) addr:0x2123904
func_ov014_02123960 kind:function(arm,size=0x34) addr:0x2123960
func_ov014_02123994 kind:function(arm,size=0x214) addr:0x2123994
func_ov014_02123ba8 kind:function(arm,size=0xac) addr:0x2123ba8
func_ov014_02123c54 kind:function(arm,size=0x7c) addr:0x2123c54
func_ov014_02123cd0 kind:function(arm,size=0x14c) addr:0x2123cd0
func_ov014_02123e1c kind:function(arm,size=0x2c) addr:0x2123e1c
func_ov014_02123e48 kind:function(arm,size=0xbc) addr:0x2123e48
func_ov014_02123f04 kind:function(arm,size=0xec) addr:0x2123f04
func_ov014_02123ff0 kind:function(thumb,size=0x14) addr:0x2123ff0
_ZN9ActorRope6CreateEv kind:function(arm,size=0x30) addr:0x21237fc
_ZN9ActorRope19func_ov014_0212382cEP5Vec4p kind:function(arm,size=0x20) addr:0x212382c
_ZN9ActorRope19func_ov014_0212384cEv kind:function(arm,size=0xc) addr:0x212384c
_ZN9ActorRopeD1Ev kind:function(arm,size=0x50) addr:0x2123858
_ZN9ActorRopeD0Ev kind:function(arm,size=0x48) addr:0x21238a8
_ZN9ActorRope19func_ov014_021238f0Ev kind:function(arm,size=0x14) addr:0x21238f0
_ZN9ActorRope19func_ov014_02123904Ev kind:function(arm,size=0x5c) addr:0x2123904
_ZN9ActorRope19func_ov014_02123960Ev kind:function(arm,size=0x34) addr:0x2123960
_ZN9ActorRope8vfunc_14Ej kind:function(arm,size=0x214) addr:0x2123994
_ZN9ActorRope8vfunc_18Ej kind:function(arm,size=0xac) addr:0x2123ba8
_ZN9ActorRope19func_ov014_02123c54Ei kind:function(arm,size=0x7c) addr:0x2123c54
_ZN9ActorRope19func_ov014_02123cd0EP5Vec3pi kind:function(arm,size=0x14c) addr:0x2123cd0
_ZN9ActorRope19func_ov014_02123e1cEv kind:function(arm,size=0x2c) addr:0x2123e1c
_ZN9ActorRope19func_ov014_02123e48Ei kind:function(arm,size=0xbc) addr:0x2123e48
_ZN9ActorRope8vfunc_20Eb kind:function(arm,size=0xec) addr:0x2123f04
_ZN9ActorRope8vfunc_10Ej kind:function(thumb,size=0x14) addr:0x2123ff0
func_ov014_02124004 kind:function(arm,size=0x30) addr:0x2124004
func_ov014_02124034 kind:function(arm,size=0xc) addr:0x2124034
func_ov014_02124040 kind:function(arm,size=0xdc) addr:0x2124040
@@ -1636,7 +1636,7 @@ __sinit_ActorArrow.cpp kind:function(arm,size=0x68) addr:0x21541ec
__sinit_ActorBlast.cpp kind:function(arm,size=0x40) addr:0x2154254
__sinit_ActorBomb.cpp kind:function(arm,size=0x60) addr:0x2154294
__sinit_ov014_021542f4 kind:function(arm,size=0x40) addr:0x21542f4
__sinit_ov014_02154334 kind:function(arm,size=0x40) addr:0x2154334
__sinit_ActorRope.cpp kind:function(arm,size=0x40) addr:0x2154334
__sinit_ov014_02154374 kind:function(arm,size=0x84) addr:0x2154374
__sinit_ov014_021543f8 kind:function(arm,size=0x38) addr:0x21543f8
__sinit_ov014_02154430 kind:function(arm,size=0x38) addr:0x2154430
@@ -1751,7 +1751,7 @@ data_ov014_02155dc0 kind:data(any) addr:0x2155dc0
data_ov014_02155dc4 kind:data(any) addr:0x2155dc4
data_ov014_02155dc8 kind:data(any) addr:0x2155dc8
data_ov014_02155dcc kind:data(any) addr:0x2155dcc
data_ov014_02155df8 kind:data(any) addr:0x2155df8
_ZTV9ActorRope kind:data(any) addr:0x2155df8
data_ov014_02155eac kind:data(any) addr:0x2155eac
data_ov014_02155eb0 kind:data(any) addr:0x2155eb0
data_ov014_02155eb4 kind:data(any) addr:0x2155eb4
@@ -2120,8 +2120,8 @@ data_ov014_0215ac40 kind:bss addr:0x215ac40
data_ov014_0215ac4c kind:bss addr:0x215ac4c
data_ov014_0215ac5c kind:bss addr:0x215ac5c
data_ov014_0215ac68 kind:bss addr:0x215ac68
data_ov014_0215ac7c kind:bss addr:0x215ac7c
data_ov014_0215ac88 kind:bss addr:0x215ac88
@366 kind:bss addr:0x215ac7c
_ZN9ActorRope5gTypeE kind:bss addr:0x215ac88
data_ov014_0215ac9c kind:bss addr:0x215ac9c
data_ov014_0215aca8 kind:bss addr:0x215aca8
data_ov014_0215acbc kind:bss addr:0x215acbc
+20 -20
View File
@@ -84,22 +84,22 @@ func_ov014_0212357c kind:function(arm,size=0x40) addr:0x21234fc
func_ov014_021235bc kind:function(arm,size=0x180) addr:0x212353c
func_ov014_0212373c kind:function(arm,size=0xb0) addr:0x21236bc
func_ov014_021237ec kind:function(arm,size=0x10) addr:0x212376c
func_ov014_021237fc kind:function(arm,size=0x30) addr:0x212377c
func_ov014_0212382c kind:function(arm,size=0x20) addr:0x21237ac
func_ov014_0212384c kind:function(arm,size=0xc) addr:0x21237cc
func_ov014_02123858 kind:function(arm,size=0x50) addr:0x21237d8
func_ov014_021238a8 kind:function(arm,size=0x48) addr:0x2123828
func_ov014_021238f0 kind:function(arm,size=0x14) addr:0x2123870
func_ov014_02123904 kind:function(arm,size=0x5c) addr:0x2123884
func_ov014_02123960 kind:function(arm,size=0x34) addr:0x21238e0
func_ov014_02123994 kind:function(arm,size=0x214) addr:0x2123914
func_ov014_02123ba8 kind:function(arm,size=0xac) addr:0x2123b28
func_ov014_02123c54 kind:function(arm,size=0x7c) addr:0x2123bd4
func_ov014_02123cd0 kind:function(arm,size=0x14c) addr:0x2123c50
func_ov014_02123e1c kind:function(arm,size=0x2c) addr:0x2123d9c
func_ov014_02123e48 kind:function(arm,size=0xbc) addr:0x2123dc8
func_ov014_02123f04 kind:function(arm,size=0xec) addr:0x2123e84
func_ov014_02123ff0 kind:function(thumb,size=0x14) addr:0x2123f70
_ZN9ActorRope6CreateEv kind:function(arm,size=0x30) addr:0x212377c
_ZN9ActorRope19func_ov014_0212382cEP5Vec4p kind:function(arm,size=0x20) addr:0x21237ac
_ZN9ActorRope19func_ov014_0212384cEv kind:function(arm,size=0xc) addr:0x21237cc
_ZN9ActorRopeD1Ev kind:function(arm,size=0x50) addr:0x21237d8
_ZN9ActorRopeD0Ev kind:function(arm,size=0x48) addr:0x2123828
_ZN9ActorRope19func_ov014_021238f0Ev kind:function(arm,size=0x14) addr:0x2123870
_ZN9ActorRope19func_ov014_02123904Ev kind:function(arm,size=0x5c) addr:0x2123884
_ZN9ActorRope19func_ov014_02123960Ev kind:function(arm,size=0x34) addr:0x21238e0
_ZN9ActorRope8vfunc_14Ej kind:function(arm,size=0x214) addr:0x2123914
_ZN9ActorRope8vfunc_18Ej kind:function(arm,size=0xac) addr:0x2123b28
_ZN9ActorRope19func_ov014_02123c54Ei kind:function(arm,size=0x7c) addr:0x2123bd4
_ZN9ActorRope19func_ov014_02123cd0EP5Vec3pi kind:function(arm,size=0x14c) addr:0x2123c50
_ZN9ActorRope19func_ov014_02123e1cEv kind:function(arm,size=0x2c) addr:0x2123d9c
_ZN9ActorRope19func_ov014_02123e48Ei kind:function(arm,size=0xbc) addr:0x2123dc8
_ZN9ActorRope8vfunc_20Eb kind:function(arm,size=0xec) addr:0x2123e84
_ZN9ActorRope8vfunc_10Ej kind:function(thumb,size=0x14) addr:0x2123f70
func_ov014_02124004 kind:function(arm,size=0x30) addr:0x2123f84
func_ov014_02124034 kind:function(arm,size=0xc) addr:0x2123fb4
func_ov014_02124040 kind:function(arm,size=0xdc) addr:0x2123fc0
@@ -1636,7 +1636,7 @@ __sinit_ActorArrow.cpp kind:function(arm,size=0x68) addr:0x2154148
__sinit_ActorBlast.cpp kind:function(arm,size=0x40) addr:0x21541b0
__sinit_ActorBomb.cpp kind:function(arm,size=0x60) addr:0x21541f0
__sinit_ov014_021542f4 kind:function(arm,size=0x40) addr:0x2154250
__sinit_ov014_02154334 kind:function(arm,size=0x40) addr:0x2154290
__sinit_ActorRope.cpp kind:function(arm,size=0x40) addr:0x2154290
__sinit_ov014_02154374 kind:function(arm,size=0x84) addr:0x21542d0
__sinit_ov014_021543f8 kind:function(arm,size=0x38) addr:0x2154354
__sinit_ov014_02154430 kind:function(arm,size=0x38) addr:0x215438c
@@ -1751,7 +1751,7 @@ data_ov014_02155dc0 kind:data(any) addr:0x2155d20
data_ov014_02155dc4 kind:data(any) addr:0x2155d24
data_ov014_02155dc8 kind:data(any) addr:0x2155d28
data_ov014_02155dcc kind:data(any) addr:0x2155d2c
data_ov014_02155df8 kind:data(any) addr:0x2155d58
_ZTV9ActorRope kind:data(any) addr:0x2155d58
data_ov014_02155eac kind:data(any) addr:0x2155e0c
data_ov014_02155eb0 kind:data(any) addr:0x2155e10
data_ov014_02155eb4 kind:data(any) addr:0x2155e14
@@ -2120,8 +2120,8 @@ data_ov014_0215ac40 kind:bss addr:0x215aba0
data_ov014_0215ac4c kind:bss addr:0x215abac
data_ov014_0215ac5c kind:bss addr:0x215abbc
data_ov014_0215ac68 kind:bss addr:0x215abc8
data_ov014_0215ac7c kind:bss addr:0x215abdc
data_ov014_0215ac88 kind:bss addr:0x215abe8
@366 kind:bss addr:0x215abdc
_ZN9ActorRope5gTypeE kind:bss addr:0x215abe8
data_ov014_0215ac9c kind:bss addr:0x215abfc
data_ov014_0215aca8 kind:bss addr:0x215ac08
data_ov014_0215acbc kind:bss addr:0x215ac1c
+4 -4
View File
@@ -28,9 +28,10 @@ enum ActorTypeId_ {
ActorTypeId_Heart = 'HART',
ActorTypeId_Rupee = 'RUPY',
ActorTypeId_Arrow = 'ARRW',
ActorTypeId_Blast = 'BLST',
ActorTypeId_Bomb = 'BOMB',
ActorTypeId_Arrow = 'ARRW',
ActorTypeId_Blast = 'BLST',
ActorTypeId_Bomb = 'BOMB',
ActorTypeId_GrapplingHook = 'ROPE',
ActorTypeId_PlayerDummy = 'PLDM',
ActorTypeId_PushBlock = 'PSBL',
@@ -77,7 +78,6 @@ enum ActorTypeId_ {
ActorTypeId_FLTB = 'FLTB',
ActorTypeId_FLTM = 'FLTM',
ActorTypeId_FORC = 'FORC',
ActorTypeId_ROPE = 'ROPE',
ActorTypeId_SBEM = 'SBEM',
ActorTypeId_STNE = 'STNE',
ActorTypeId_TARU = 'TARU',
+49
View File
@@ -0,0 +1,49 @@
#pragma once
#include "global.h"
#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
#include "Actor/ActorType.hpp"
class ActorRope : public Actor {
public:
static ActorType gType;
/* 000 (base) */
/* 158 */ unk8 mUnk_158[0xc];
/* 164 */ unk16 mUnk_164;
/* 166 */ unk16 mUnk_166;
/* 168 */ unk8 mUnk_168[0x3];
/* 16b */ unk8 mUnk_16b;
/* 16c */ unk8 mUnk_16c;
/* 16d */ unk8 mUnk_16d;
/* 16e */ unk16 mUnk_16e;
/* 170 */ unk8 mUnk_170[0x4];
/* 174 */ Vec3p mUnk_174;
/* 180 */ Vec3p mUnk_180;
/* 18c */ unk8 mUnk_18c[0x4];
/* 190 */ Vec3p mUnk_190;
/* 19c */ u32 mUnk_19c;
/* 1a0 */
/* 00 */ virtual ~ActorRope() override;
/* 08 */ virtual bool vfunc_08() override;
/* 10 */ virtual void vfunc_10(u32 param1) override;
/* 14 */ virtual void vfunc_14(u32 param1) override;
/* 18 */ virtual void vfunc_18(u32 param1) override;
/* 20 */ virtual void vfunc_20(bool param1) override;
/* b4 */
static ActorRope *Create();
static void func_ov014_0212382c(Vec4p *vec);
static q20 func_ov014_0212384c();
s32 func_ov014_021238f0();
void func_ov014_02123904();
bool func_ov014_02123960();
void func_ov014_02123c54(s32 param1);
bool func_ov014_02123cd0(Vec3p *param1, s32 param2);
bool func_ov014_02123e1c();
bool func_ov014_02123e48(unk32 param1);
};
+3 -2
View File
@@ -5,6 +5,7 @@
#include "types.h"
#include "Actor/ActorRef.hpp"
#include "Actor/Player/ActorRope.hpp"
#include "Physics/Cylinder.hpp"
#include "Player/EquipItem.hpp"
@@ -23,7 +24,7 @@ public:
/* 09 */ unk8 mUnk_09;
/* 0a */ unk16 mUnk_0a;
/* 0c */ unk8 mUnk_0c[4];
/* 10 */ ActorRef mRef;
/* 10 */ ActorRef mRopeRef;
/* 18 */ EquipRope_Unk_18 mUnk_18[2];
/* 50 */ unk8 mUnk_50[0x1a];
/* 6a */ bool mUnk_6a;
@@ -52,7 +53,7 @@ public:
EquipRope();
bool func_ov014_0213d3d4(Vec3p *vec);
void func_ov014_0213d404(unk32 *param1);
Actor *func_ov14_0213d420();
ActorRope *GetRopeActor();
s32 func_ov14_0213d440(s32 actorId);
s32 func_ov14_0213d480(s32 actorId);
bool func_ov014_0213d4c8();
+5 -5
View File
@@ -551,7 +551,7 @@ ARM bool Actor::func_ov00_020c243c(ActorTypeId *actorTypes, Actor **out) {
knockback.mUnk_10 = 5;
} break;
case ActorTypeId_ROPE: {
case ActorTypeId_GrapplingHook: {
knockback.mUnk_10 = 8;
} break;
@@ -759,7 +759,7 @@ ARM EquipBoomerang *Actor::GetEquipBoomerang() {
ARM bool Actor::func_ov00_020c2d54() {
const ActorTypeId types[] = {
ActorTypeId_ROPE,
ActorTypeId_GrapplingHook,
ActorTypeId_Null,
};
if (mHitbox.size >= 0) {
@@ -780,7 +780,7 @@ ARM bool Actor::func_ov00_020c2de4() {
EquipRope *rope = EquipSword::GetEquipRope();
Actor *actor = rope->func_ov14_0213d420();
ActorRope *actor = rope->GetRopeActor();
if (actor) {
Vec3p_Sub(&actor->mPos, &mPos, &vel);
if (Vec3p_Length(&vel) > FLOAT_TO_Q20(1.0)) {
@@ -819,8 +819,8 @@ ARM bool Actor::func_ov00_020c2ed4() {
s32 index = rope->func_ov14_0213d440(mRef.id);
if (index >= 0) {
bool unk1 = rope->func_ov14_0213d420();
if (unk1) {
ActorRope *actor = rope->GetRopeActor();
if (actor) {
Vec3p vel;
if (rope->func_ov14_0213d81c(index, &vel)) {
mVel = vel;
+19
View File
@@ -0,0 +1,19 @@
#include "Actor/Player/ActorRope.hpp"
ActorType ActorRope::gType(ActorTypeId_GrapplingHook, (ActorCreateFunc) ActorRope::Create, NULL);
ActorRope *ActorRope::Create() {}
void ActorRope::func_ov014_0212382c(Vec4p *vec) {}
q20 ActorRope::func_ov014_0212384c() {}
ActorRope::~ActorRope() {}
s32 ActorRope::func_ov014_021238f0() {}
void ActorRope::func_ov014_02123904() {}
bool ActorRope::func_ov014_02123960() {}
void ActorRope::vfunc_14(u32 param1) {}
void ActorRope::vfunc_18(u32 param1) {}
void ActorRope::func_ov014_02123c54(s32 param1) {}
bool ActorRope::func_ov014_02123cd0(Vec3p *param1, s32 param2) {}
bool ActorRope::func_ov014_02123e1c() {}
bool ActorRope::func_ov014_02123e48(unk32 param1) {}
void ActorRope::vfunc_20(bool param1) {}
void ActorRope::vfunc_10(u32 param1) {}
+1 -1
View File
@@ -10,7 +10,7 @@ void EquipRope::vfunc_10() {}
ItemFlag EquipRope::GetId() const {}
bool EquipRope::func_ov014_0213d3d4(Vec3p *vec) {}
void EquipRope::func_ov014_0213d404(unk32 *param1) {}
Actor *EquipRope::func_ov14_0213d420() {}
ActorRope *EquipRope::GetRopeActor() {}
s32 EquipRope::func_ov14_0213d440(s32 actorId) {}
s32 EquipRope::func_ov14_0213d480(s32 actorId) {}
bool EquipRope::func_ov014_0213d4c8() {}