summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2024-07-02 10:32:48 +0200
committerAetias <aetias@outlook.com>2024-07-02 10:32:48 +0200
commit77e7c6d8d40a122da860b0be4366fac43b233938 (patch)
treeb88bfac92c465d18699d7efcbeefa0fed4292a70
parent2a55eb0a48f93d64b13c15a077ecc1fb6e00187b (diff)
Decomp `Actor`
-rw-r--r--asm/ov00/Actor/Actor.s240
-rw-r--r--include/Actor/Actor.hpp4
-rw-r--r--src/00_Core/Actor/Actor.cpp26
3 files changed, 22 insertions, 248 deletions
diff --git a/asm/ov00/Actor/Actor.s b/asm/ov00/Actor/Actor.s
index 1db81ec6..aaa4a694 100644
--- a/asm/ov00/Actor/Actor.s
+++ b/asm/ov00/Actor/Actor.s
@@ -1971,7 +1971,7 @@ _ZN5Actor20IncreaseActiveFramesEv: ; 0x020c2bf4
_ZN5Actor18func_ov00_020c2c0cEv: ; 0x020c2c0c
stmdb sp!, {r3, lr}
sub sp, sp, #8
- ldr r1, _020c2c68 ; =data_ov00_020dd370
+ ldr r1, _020c2c68 ; =sUnkTable
ldr r2, [r1, #0x7c]
ldr r1, [r1, #0x78]
str r2, [sp, #4]
@@ -1994,7 +1994,7 @@ _020c2c5c:
add sp, sp, #8
ldmia sp!, {r3, pc}
.align 2, 0
-_020c2c68: .word data_ov00_020dd370
+_020c2c68: .word sUnkTable
_020c2c6c: .word gActorManager
arm_func_end _ZN5Actor18func_ov00_020c2c0cEv
@@ -2075,7 +2075,7 @@ _020c2d50: .word _ZN11ItemManager21GetEquipItemUncheckedEi
_ZN5Actor18func_ov00_020c2d54Ev: ; 0x020c2d54
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #8
- ldr r1, _020c2ddc ; =data_ov00_020dd370
+ ldr r1, _020c2ddc ; =sUnkTable
mov r4, r0
ldr r0, [r1, #0x84]
ldr r1, [r1, #0x80]
@@ -2109,7 +2109,7 @@ _020c2dd0:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
-_020c2ddc: .word data_ov00_020dd370
+_020c2ddc: .word sUnkTable
_020c2de0: .word gActorManager
arm_func_end _ZN5Actor18func_ov00_020c2d54Ev
@@ -2480,7 +2480,7 @@ _ZN5Actor8vfunc_acEv: ; 0x020c31fc
.global _ZN5Actor18func_ov00_020c3200Ei
arm_func_start _ZN5Actor18func_ov00_020c3200Ei
_ZN5Actor18func_ov00_020c3200Ei: ; 0x020c3200
- ldr ip, _020c3228 ; =data_ov00_020dd370
+ ldr ip, _020c3228 ; =sUnkTable
mov r2, r1, lsl #0x2
ldrsh r3, [ip, r2]
add r2, r0, #0x100
@@ -2491,7 +2491,7 @@ _ZN5Actor18func_ov00_020c3200Ei: ; 0x020c3200
strb r1, [r0, #0x124]
bx lr
.align 2, 0
-_020c3228: .word data_ov00_020dd370
+_020c3228: .word sUnkTable
arm_func_end _ZN5Actor18func_ov00_020c3200Ei
.global _ZN5Actor8vfunc_b0Ev
@@ -2590,185 +2590,67 @@ _ZN19Actor_UnkStruct_09cC2Ev: ; 0x020c3328
arm_func_end _ZN19Actor_UnkStruct_09cC2Ev
.rodata
- .global data_ov00_020dd370
-data_ov00_020dd370: ; 0x020dd370
+ .global sUnkTable
+sUnkTable: ; 0x020dd370
.byte 0xff, 0x00
- .global data_ov00_020dd372
-data_ov00_020dd372: ; 0x020dd372
.byte 0x02, 0x00
- .global data_ov00_020dd374
-data_ov00_020dd374: ; 0x020dd374
.byte 0xff, 0x00
- .global data_ov00_020dd376
-data_ov00_020dd376: ; 0x020dd376
.byte 0x02, 0x00
- .global data_ov00_020dd378
-data_ov00_020dd378: ; 0x020dd378
.byte 0xff, 0x00
- .global data_ov00_020dd37a
-data_ov00_020dd37a: ; 0x020dd37a
.byte 0x02, 0x00
- .global data_ov00_020dd37c
-data_ov00_020dd37c: ; 0x020dd37c
.byte 0xff, 0x00
- .global data_ov00_020dd37e
-data_ov00_020dd37e: ; 0x020dd37e
.byte 0x02, 0x00
- .global data_ov00_020dd380
-data_ov00_020dd380: ; 0x020dd380
.byte 0xff, 0x00
- .global data_ov00_020dd382
-data_ov00_020dd382: ; 0x020dd382
.byte 0x02, 0x00
- .global data_ov00_020dd384
-data_ov00_020dd384: ; 0x020dd384
.byte 0x06, 0x00
- .global data_ov00_020dd386
-data_ov00_020dd386: ; 0x020dd386
.byte 0x02, 0x00
- .global data_ov00_020dd388
-data_ov00_020dd388: ; 0x020dd388
.byte 0x04, 0x00
- .global data_ov00_020dd38a
-data_ov00_020dd38a: ; 0x020dd38a
.byte 0x02, 0x00
- .global data_ov00_020dd38c
-data_ov00_020dd38c: ; 0x020dd38c
.byte 0x04, 0x00
- .global data_ov00_020dd38e
-data_ov00_020dd38e: ; 0x020dd38e
.byte 0x02, 0x00
- .global data_ov00_020dd390
-data_ov00_020dd390: ; 0x020dd390
.byte 0x04, 0x00
- .global data_ov00_020dd392
-data_ov00_020dd392: ; 0x020dd392
.byte 0x02, 0x00
- .global data_ov00_020dd394
-data_ov00_020dd394: ; 0x020dd394
.byte 0x01, 0x00
- .global data_ov00_020dd396
-data_ov00_020dd396: ; 0x020dd396
.byte 0x02, 0x00
- .global data_ov00_020dd398
-data_ov00_020dd398: ; 0x020dd398
.byte 0x0c, 0x00
- .global data_ov00_020dd39a
-data_ov00_020dd39a: ; 0x020dd39a
.byte 0x02, 0x00
- .global data_ov00_020dd39c
-data_ov00_020dd39c: ; 0x020dd39c
.byte 0x04, 0x00
- .global data_ov00_020dd39e
-data_ov00_020dd39e: ; 0x020dd39e
.byte 0x02, 0x00
- .global data_ov00_020dd3a0
-data_ov00_020dd3a0: ; 0x020dd3a0
.byte 0x04, 0x00
- .global data_ov00_020dd3a2
-data_ov00_020dd3a2: ; 0x020dd3a2
.byte 0x02, 0x00
- .global data_ov00_020dd3a4
-data_ov00_020dd3a4: ; 0x020dd3a4
.byte 0x08, 0x00
- .global data_ov00_020dd3a6
-data_ov00_020dd3a6: ; 0x020dd3a6
.byte 0x02, 0x00
- .global data_ov00_020dd3a8
-data_ov00_020dd3a8: ; 0x020dd3a8
.byte 0x0c, 0x00
- .global data_ov00_020dd3aa
-data_ov00_020dd3aa: ; 0x020dd3aa
.byte 0x02, 0x00
- .global data_ov00_020dd3ac
-data_ov00_020dd3ac: ; 0x020dd3ac
.byte 0x02, 0x00
- .global data_ov00_020dd3ae
-data_ov00_020dd3ae: ; 0x020dd3ae
.byte 0x02, 0x00
- .global data_ov00_020dd3b0
-data_ov00_020dd3b0: ; 0x020dd3b0
.byte 0x02, 0x00
- .global data_ov00_020dd3b2
-data_ov00_020dd3b2: ; 0x020dd3b2
.byte 0x02, 0x00
- .global data_ov00_020dd3b4
-data_ov00_020dd3b4: ; 0x020dd3b4
.byte 0x14, 0x00
- .global data_ov00_020dd3b6
-data_ov00_020dd3b6: ; 0x020dd3b6
.byte 0x02, 0x00
- .global data_ov00_020dd3b8
-data_ov00_020dd3b8: ; 0x020dd3b8
.byte 0x14, 0x00
- .global data_ov00_020dd3ba
-data_ov00_020dd3ba: ; 0x020dd3ba
.byte 0x02, 0x00
- .global data_ov00_020dd3bc
-data_ov00_020dd3bc: ; 0x020dd3bc
.byte 0x01, 0x00
- .global data_ov00_020dd3be
-data_ov00_020dd3be: ; 0x020dd3be
.byte 0x02, 0x00
- .global data_ov00_020dd3c0
-data_ov00_020dd3c0: ; 0x020dd3c0
.byte 0x04, 0x00
- .global data_ov00_020dd3c2
-data_ov00_020dd3c2: ; 0x020dd3c2
.byte 0x02, 0x00
- .global data_ov00_020dd3c4
-data_ov00_020dd3c4: ; 0x020dd3c4
.byte 0x04, 0x00
- .global data_ov00_020dd3c6
-data_ov00_020dd3c6: ; 0x020dd3c6
.byte 0x02, 0x00
- .global data_ov00_020dd3c8
-data_ov00_020dd3c8: ; 0x020dd3c8
.byte 0x04, 0x00
- .global data_ov00_020dd3ca
-data_ov00_020dd3ca: ; 0x020dd3ca
.byte 0x02, 0x00
- .global data_ov00_020dd3cc
-data_ov00_020dd3cc: ; 0x020dd3cc
.byte 0x08, 0x00
- .global data_ov00_020dd3ce
-data_ov00_020dd3ce: ; 0x020dd3ce
.byte 0x02, 0x00
- .global data_ov00_020dd3d0
-data_ov00_020dd3d0: ; 0x020dd3d0
.byte 0x04, 0x00
- .global data_ov00_020dd3d2
-data_ov00_020dd3d2: ; 0x020dd3d2
.byte 0x02, 0x00
- .global data_ov00_020dd3d4
-data_ov00_020dd3d4: ; 0x020dd3d4
.byte 0xff, 0x00
- .global data_ov00_020dd3d6
-data_ov00_020dd3d6: ; 0x020dd3d6
.byte 0x02, 0x00
- .global data_ov00_020dd3d8
-data_ov00_020dd3d8: ; 0x020dd3d8
.byte 0x14, 0x00
- .global data_ov00_020dd3da
-data_ov00_020dd3da: ; 0x020dd3da
.byte 0x02, 0x00
- .global data_ov00_020dd3dc
-data_ov00_020dd3dc: ; 0x020dd3dc
.byte 0x06, 0x00
- .global data_ov00_020dd3de
-data_ov00_020dd3de: ; 0x020dd3de
.byte 0x02, 0x00
- .global data_ov00_020dd3e0
-data_ov00_020dd3e0: ; 0x020dd3e0
.byte 0x06, 0x00
- .global data_ov00_020dd3e2
-data_ov00_020dd3e2: ; 0x020dd3e2
.byte 0x02, 0x00
- .global data_ov00_020dd3e4
-data_ov00_020dd3e4: ; 0x020dd3e4
.byte 0x02, 0x00
- .global data_ov00_020dd3e6
-data_ov00_020dd3e6: ; 0x020dd3e6
.byte 0x02, 0x00
.global data_ov00_020dd3e8
data_ov00_020dd3e8: ; 0x020dd3e8
@@ -2816,29 +2698,15 @@ data_ov00_020e71b8: ; 0x020e71b8
data_ov00_020e71bc: ; 0x020e71bc
.ascii "anc"
.byte 0x00
- .global data_ov00_020e71c0
-data_ov00_020e71c0: ; 0x020e71c0
+ .global sShipTypes
+sShipTypes: ; 0x020e71c0
.word data_ov00_020e71bc
- .global data_ov00_020e71c4
-data_ov00_020e71c4: ; 0x020e71c4
.word data_ov00_020e71b8
- .global data_ov00_020e71c8
-data_ov00_020e71c8: ; 0x020e71c8
.word data_ov00_020e71b4
- .global data_ov00_020e71cc
-data_ov00_020e71cc: ; 0x020e71cc
.word data_ov00_020e71b0
- .global data_ov00_020e71d0
-data_ov00_020e71d0: ; 0x020e71d0
.word data_ov00_020e71ac
- .global data_ov00_020e71d4
-data_ov00_020e71d4: ; 0x020e71d4
.word data_ov00_020e71a8
- .global data_ov00_020e71d8
-data_ov00_020e71d8: ; 0x020e71d8
.word data_ov00_020e71a4
- .global data_ov00_020e71dc
-data_ov00_020e71dc: ; 0x020e71dc
.word data_ov00_020e71a0
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
@@ -2850,135 +2718,47 @@ _ZTV17KillPickupsFilter: ; 0x020e71e8
.global _ZTV5Actor
_ZTV5Actor: ; 0x020e71f4
.word _ZN5ActorD1Ev
- .global data_ov00_020e71f8
-data_ov00_020e71f8: ; 0x020e71f8
.word _ZN5ActorD0Ev
- .global data_ov00_020e71fc
-data_ov00_020e71fc: ; 0x020e71fc
.word _ZN5Actor8vfunc_08Ev
- .global data_ov00_020e7200
-data_ov00_020e7200: ; 0x020e7200
.word _ZN5Actor8vfunc_0cEv
- .global data_ov00_020e7204
-data_ov00_020e7204: ; 0x020e7204
.word _ZN5Actor8vfunc_10Ej
- .global data_ov00_020e7208
-data_ov00_020e7208: ; 0x020e7208
.word _ZN5Actor8vfunc_14Ej
- .global data_ov00_020e720c
-data_ov00_020e720c: ; 0x020e720c
.word _ZN5Actor8vfunc_18Ej
- .global data_ov00_020e7210
-data_ov00_020e7210: ; 0x020e7210
.word _ZN5Actor8vfunc_1cEPt
- .global data_ov00_020e7214
-data_ov00_020e7214: ; 0x020e7214
.word _ZN5Actor8vfunc_20Ei
- .global data_ov00_020e7218
-data_ov00_020e7218: ; 0x020e7218
.word _ZN5Actor8vfunc_24Ev
- .global data_ov00_020e721c
-data_ov00_020e721c: ; 0x020e721c
.word _ZN5Actor8vfunc_28Ev
- .global data_ov00_020e7220
-data_ov00_020e7220: ; 0x020e7220
.word _ZN5Actor8vfunc_2cEv
- .global data_ov00_020e7224
-data_ov00_020e7224: ; 0x020e7224
.word _ZN5Actor8vfunc_30Ev
- .global data_ov00_020e7228
-data_ov00_020e7228: ; 0x020e7228
.word _ZN5Actor12GetOffsetPosEP5Vec3p
- .global data_ov00_020e722c
-data_ov00_020e722c: ; 0x020e722c
.word _ZN5Actor8vfunc_38Ev
- .global data_ov00_020e7230
-data_ov00_020e7230: ; 0x020e7230
.word _ZN5Actor16CollidesWithLinkEv
- .global data_ov00_020e7234
-data_ov00_020e7234: ; 0x020e7234
.word _ZN5Actor15IsHitboxTouchedEb
- .global data_ov00_020e7238
-data_ov00_020e7238: ; 0x020e7238
.word _ZN5Actor12CollidesWithEPS_
- .global data_ov00_020e723c
-data_ov00_020e723c: ; 0x020e723c
.word _ZN5Actor8vfunc_48EP9Knockback
- .global data_ov00_020e7240
-data_ov00_020e7240: ; 0x020e7240
.word _ZN5Actor8vfunc_4cEPi
- .global data_ov00_020e7244
-data_ov00_020e7244: ; 0x020e7244
.word _ZN5Actor6GetPosEv
- .global data_ov00_020e7248
-data_ov00_020e7248: ; 0x020e7248
.word _ZN5Actor8vfunc_54Ev
- .global data_ov00_020e724c
-data_ov00_020e724c: ; 0x020e724c
.word _ZN5Actor10SetUnk_11bEv
- .global data_ov00_020e7250
-data_ov00_020e7250: ; 0x020e7250
.word _ZN5Actor11SetVelocityEP5Vec3p
- .global data_ov00_020e7254
-data_ov00_020e7254: ; 0x020e7254
.word _ZN5Actor8vfunc_60Ev
- .global data_ov00_020e7258
-data_ov00_020e7258: ; 0x020e7258
.word _ZN5Actor8vfunc_64Ev
- .global data_ov00_020e725c
-data_ov00_020e725c: ; 0x020e725c
.word _ZN5Actor8vfunc_68Ev
- .global data_ov00_020e7260
-data_ov00_020e7260: ; 0x020e7260
.word _ZN5Actor8vfunc_6cEv
- .global data_ov00_020e7264
-data_ov00_020e7264: ; 0x020e7264
.word _ZN5Actor8vfunc_70Ev
- .global data_ov00_020e7268
-data_ov00_020e7268: ; 0x020e7268
.word _ZN5Actor8vfunc_74Ev
- .global data_ov00_020e726c
-data_ov00_020e726c: ; 0x020e726c
.word _ZN5Actor8vfunc_78Ev
- .global data_ov00_020e7270
-data_ov00_020e7270: ; 0x020e7270
.word _ZN5Actor8vfunc_7cEv
- .global data_ov00_020e7274
-data_ov00_020e7274: ; 0x020e7274
.word _ZN5Actor8vfunc_80Ev
- .global data_ov00_020e7278
-data_ov00_020e7278: ; 0x020e7278
.word _ZN5Actor8vfunc_84Ev
- .global data_ov00_020e727c
-data_ov00_020e727c: ; 0x020e727c
.word _ZN5Actor8vfunc_88Ev
- .global data_ov00_020e7280
-data_ov00_020e7280: ; 0x020e7280
.word _ZN5Actor8vfunc_8cEv
- .global data_ov00_020e7284
-data_ov00_020e7284: ; 0x020e7284
.word _ZN5Actor8vfunc_90Ev
- .global data_ov00_020e7288
-data_ov00_020e7288: ; 0x020e7288
.word _ZN5Actor8vfunc_94Ev
- .global data_ov00_020e728c
-data_ov00_020e728c: ; 0x020e728c
.word _ZN5Actor8vfunc_98Ev
- .global data_ov00_020e7290
-data_ov00_020e7290: ; 0x020e7290
.word _ZN5Actor8vfunc_9cEv
- .global data_ov00_020e7294
-data_ov00_020e7294: ; 0x020e7294
.word _ZN5Actor15TrySetTransformEP9Transform
- .global data_ov00_020e7298
-data_ov00_020e7298: ; 0x020e7298
.word _ZN5Actor12SetTransformEP9Transform
- .global data_ov00_020e729c
-data_ov00_020e729c: ; 0x020e729c
.word _ZN5Actor8vfunc_a8Ev
- .global data_ov00_020e72a0
-data_ov00_020e72a0: ; 0x020e72a0
.word _ZN5Actor8vfunc_acEv
- .global data_ov00_020e72a4
-data_ov00_020e72a4: ; 0x020e72a4
.word _ZN5Actor8vfunc_b0Ev
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index 0776e0da..29d4da2a 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -88,9 +88,7 @@ public:
/* 010 */ u8 mUnk_010;
/* 011 */ u8 mUnk_011;
/* 012 */ unk16 mUnk_012;
- /* 014 */ unk32 mUnk_014;
- /* 018 */ unk32 mUnk_018;
- /* 01c */ unk32 mUnk_01c;
+ /* 014 */ Vec3p mUnk_014;
/* 020 */ Actor_UnkStruct_020 mUnk_020;
/* 034 */ unk32 mUnk_034;
/* 038 */ unk32 mUnk_038;
diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp
index 8c72d316..b15fee13 100644
--- a/src/00_Core/Actor/Actor.cpp
+++ b/src/00_Core/Actor/Actor.cpp
@@ -126,9 +126,9 @@ ARM Actor::Actor():
mUnk_140(0),
mUnk_144(0)
{
- mUnk_014 = 0;
- mUnk_018 = 0;
- mUnk_01c = 0;
+ mUnk_014.x = 0;
+ mUnk_014.y = 0;
+ mUnk_014.z = 0;
mPos.x = 0;
mPos.y = 0;
mPos.z = 0;
@@ -720,31 +720,27 @@ ARM bool Actor::func_ov00_020c29ec(q20 param1) {
ARM void Actor::GetHitbox(Cylinder *hitbox) {
hitbox->size = mHitbox.size;
- u16 angle = mAngle;
+ u32 angle = 2 * (mAngle >> 4);
hitbox->pos.x = mPos.x;
hitbox->pos.y = mPos.y;
hitbox->pos.z = mPos.z;
hitbox->pos.y += mHitbox.pos.y;
- q20 sin = SIN(angle);
- q20 cos = COS(angle);
- // Vec3p_Rotate(&mHitbox.pos, sin, cos, &hitbox->pos);
- hitbox->pos.x += MUL_Q20(mHitbox.pos.z, sin);
- hitbox->pos.z += MUL_Q20(mHitbox.pos.z, cos);
- hitbox->pos.x += MUL_Q20(mHitbox.pos.x, cos);
- hitbox->pos.z += MUL_Q20(mHitbox.pos.x, -sin);
+ q20 sin = gSinCosTable[angle];
+ q20 cos = gSinCosTable[angle + 1];
+ Vec3p_Rotate(&mHitbox.pos, sin, cos, &hitbox->pos);
}
ARM void Actor::GetUnk_08c(Cylinder *param1) {
param1->size = mUnk_08c.size;
- u16 angle = mAngle;
+ u32 angle = 2 * (mAngle >> 4);
param1->pos.x = mPos.x;
param1->pos.y = mPos.y;
param1->pos.z = mPos.z;
param1->pos.y += mUnk_08c.pos.y;
- q20 sin = SIN(angle);
- q20 cos = COS(angle);
+ q20 sin = gSinCosTable[angle];
+ q20 cos = gSinCosTable[angle + 1];
Vec3p_Rotate(&mUnk_08c.pos, sin, cos, &param1->pos);
}
@@ -897,7 +893,7 @@ ARM bool Actor::func_ov00_020c3094() {
Vec3p pos, prevPos;
Vec3p_Copy(&mPos, &pos);
Vec3p_Copy(&mPrevPos, &prevPos);
- s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos);
+ s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos, 0);
if (mPos.y <= unk1) {
result = true;
mPos.y = unk1;