PlayerBase OK (#126)

* Map symbol in Game

* PlayerBase OK

* Fix ActorRefill

* Fix MapManager

* Mark PlayerBase as complete

* Fix MapManager
This commit is contained in:
Aetias
2025-07-22 17:54:33 +02:00
committed by GitHub
parent cf8f5a80b1
commit d45ea18bf4
18 changed files with 264 additions and 102 deletions
@@ -132,6 +132,7 @@ src/00_Core/Player/LinkStateRoll.cpp:
.data start:0x020e6078 end:0x020e6104
src/00_Core/Player/PlayerBase.cpp:
complete
.text start:0x020a7af0 end:0x020a7fa4
.data start:0x020e5590 end:0x020e5630
+15 -15
View File
@@ -244,7 +244,7 @@ _ZN18UnkStruct_020ec7dc19func_ov000_0207c0f0Ei kind:function(thumb,size=0x28) ad
func_ov000_0207c118 kind:function(thumb,size=0x58) addr:0x0207c118
_ZN18UnkStruct_020ec7dc19func_ov000_0207c170Ev kind:function(thumb,size=0x1e) addr:0x0207c170
func_ov000_0207c190 kind:function(thumb,size=0x1e) addr:0x0207c190
func_ov000_0207c1b0 kind:function(arm,size=0x48) addr:0x0207c1b0
_ZN18UnkStruct_027e0e5819func_ov000_0207c1b0EiP5Vec3piii kind:function(arm,size=0x48) addr:0x0207c1b0
func_ov000_0207c1f8 kind:function(arm,size=0x68) addr:0x0207c1f8
func_ov000_0207c260 kind:function(arm,size=0x88) addr:0x0207c260
func_ov000_0207c2e8 kind:function(arm,size=0x34) addr:0x0207c2e8
@@ -256,7 +256,7 @@ func_ov000_0207c444 kind:function(arm,size=0x30) addr:0x0207c444
func_ov000_0207c474 kind:function(arm,size=0xa4) addr:0x0207c474
func_ov000_0207c518 kind:function(arm,size=0x98) addr:0x0207c518
func_ov000_0207c5b0 kind:function(thumb,size=0x22) addr:0x0207c5b0
func_ov000_0207c5d4 kind:function(arm,size=0x48) addr:0x0207c5d4
_ZN18UnkStruct_027e0e5819func_ov000_0207c5d4Eib kind:function(arm,size=0x48) addr:0x0207c5d4
func_ov000_0207c61c kind:function(arm,size=0x58) addr:0x0207c61c
func_ov000_0207c674 kind:function(arm,size=0x20) addr:0x0207c674
func_ov000_0207c694 kind:function(arm,size=0x58) addr:0x0207c694
@@ -774,7 +774,7 @@ func_ov000_0208add4 kind:function(arm,size=0x54) addr:0x0208add4
func_ov000_0208ae28 kind:function(arm,size=0x28) addr:0x0208ae28
func_ov000_0208ae50 kind:function(arm,size=0x8) addr:0x0208ae50
func_ov000_0208ae58 kind:function(arm,size=0x3c) addr:0x0208ae58
func_ov000_0208ae94 kind:function(arm,size=0x44) addr:0x0208ae94
_ZN18UnkStruct_027e0f6419func_ov000_0208ae94Ev kind:function(arm,size=0x44) addr:0x0208ae94
func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x0208aed8
func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x0208b11c
func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x0208b13c
@@ -924,7 +924,7 @@ _ZN4AABB4GrowEP5Vec3p kind:function(arm,size=0x28) addr:0x0208edd8
_ZN4AABB10GrowScalarEi kind:function(arm,size=0x4c) addr:0x0208ee00
func_ov000_0208ee4c kind:function(arm,size=0x44) addr:0x0208ee4c
func_ov000_0208ee90 kind:function(arm,size=0x1a0) addr:0x0208ee90
func_ov000_0208f030 kind:function(arm,size=0x170) addr:0x0208f030
_ZN8Cylinder19func_ov000_0208f030EP5Vec3pS1_i kind:function(arm,size=0x170) addr:0x0208f030
func_ov000_0208f1a0 kind:function(arm,size=0xf4) addr:0x0208f1a0
func_ov000_0208f294 kind:function(arm,size=0x84) addr:0x0208f294
_ZN6Sphere12ContainsInXZEP5Vec3p kind:function(arm,size=0x5c) addr:0x0208f318
@@ -1874,8 +1874,8 @@ _ZN10PlayerBase17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x18) addr
_ZN10PlayerBase18EquipItem_vfunc_2cEv kind:function(arm,size=0x38) addr:0x020a7cfc
_ZN10PlayerBase9SetHealthEs kind:function(arm,size=0x58) addr:0x020a7d34
_ZN10PlayerBase9AddHealthEs kind:function(arm,size=0x68) addr:0x020a7d8c
_ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x7c) addr:0x020a7df4
_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x118) addr:0x020a7e70
_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x7c) addr:0x020a7df4
_ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x118) addr:0x020a7e70
_ZN10PlayerBase22TeleportToLastEntranceEb kind:function(arm,size=0x1c) addr:0x020a7f88
_ZN13LinkStateBase8vfunc_00Ev kind:function(thumb,size=0x2) addr:0x020a7fa4
_ZN13LinkStateBase12OnStateEnterEv kind:function(arm,size=0x4) addr:0x020a7fa8
@@ -4760,15 +4760,15 @@ data_ov000_020e5454 kind:data(any) addr:0x020e5454
data_ov000_020e54a4 kind:data(any) addr:0x020e54a4
data_ov000_020e54f4 kind:data(any) addr:0x020e54f4
data_ov000_020e5548 kind:data(any) addr:0x020e5548
data_ov000_020e5590 kind:data(any) addr:0x020e5590
data_ov000_020e5594 kind:data(any) addr:0x020e5594
data_ov000_020e5598 kind:data(any) addr:0x020e5598
data_ov000_020e559c kind:data(any) addr:0x020e559c
data_ov000_020e55a0 kind:data(any) addr:0x020e55a0
data_ov000_020e55a4 kind:data(any) addr:0x020e55a4
data_ov000_020e55a8 kind:data(any) addr:0x020e55a8
data_ov000_020e55ac kind:data(any) addr:0x020e55ac
_ZTV10PlayerBase kind:data(any) addr:0x020e55d8
@1464 kind:data(any) addr:0x020e5590 local
@1463 kind:data(any) addr:0x020e5594 local
@1462 kind:data(any) addr:0x020e5598 local
@1461 kind:data(any) addr:0x020e559c local
@1460 kind:data(any) addr:0x020e55a0 local
@1459 kind:data(any) addr:0x020e55a4 local
@1458 kind:data(any) addr:0x020e55a8 local
@1457 kind:data(any) addr:0x020e55ac local
_ZTV10PlayerBase kind:data(any) addr:0x020e55d0
data_ov000_020e5630 kind:data(any) addr:0x020e5630
data_ov000_020e5634 kind:data(any) addr:0x020e5634
data_ov000_020e5638 kind:data(any) addr:0x020e5638
+4 -4
View File
@@ -2279,18 +2279,18 @@ from:0x0210b20c kind:load to:0x027e0f90 module:dtcm
from:0x0210b230 kind:thumb_call_arm to:0x0202e9dc module:main
from:0x0210b238 kind:thumb_call to:0x0202ab78 module:main
from:0x0210b240 kind:thumb_call to:0x0202ab54 module:main
from:0x0210b250 kind:load to:0x020e55d8 module:overlay(0)
from:0x0210b250 kind:load to:0x020e55d0 add:8 module:overlay(0)
from:0x0210b254 kind:load to:0x027e0ce0 module:dtcm
from:0x0210b26a kind:thumb_call to:0x0202ab64 module:main
from:0x0210b270 kind:thumb_call_arm to:0x0202ea0c module:main
from:0x0210b27c kind:load to:0x020e55d8 module:overlay(0)
from:0x0210b27c kind:load to:0x020e55d0 add:8 module:overlay(0)
from:0x0210b292 kind:thumb_call to:0x0202ab64 module:main
from:0x0210b298 kind:thumb_call_arm to:0x0202ea0c module:main
from:0x0210b2a2 kind:thumb_call_arm to:0x0202ea0c module:main
from:0x0210b2ac kind:load to:0x020e55d8 module:overlay(0)
from:0x0210b2ac kind:load to:0x020e55d0 add:8 module:overlay(0)
from:0x0210b2c2 kind:thumb_call to:0x0202ab64 module:main
from:0x0210b2c8 kind:thumb_call_arm to:0x0202ea0c module:main
from:0x0210b2d4 kind:load to:0x020e55d8 module:overlay(0)
from:0x0210b2d4 kind:load to:0x020e55d0 add:8 module:overlay(0)
from:0x0210b2de kind:thumb_call to:0x020a956c module:overlay(0)
from:0x0210b2fc kind:thumb_call_arm to:0x020a98e8 module:overlay(0)
from:0x0210b318 kind:thumb_call_arm to:0x020a990c module:overlay(0)
+1 -1
View File
@@ -1384,7 +1384,7 @@ _ZN4Game13StartGameModeEv kind:function(thumb,size=0x238) addr:0x0202c73c
_ZN4Game13func_0202c974EPS_ kind:function(thumb,size=0x8) addr:0x0202c974
_ZN4Game13func_0202c97cEv kind:function(thumb,size=0x24) addr:0x0202c97c
_ZN4Game3RunEv kind:function(arm,size=0x528) addr:0x0202c9a0
_ZN4Game13func_0202cec8Eii kind:function(thumb,size=0x6c) addr:0x0202cec8
_ZN4Game13func_0202cec8Eib kind:function(thumb,size=0x6c) addr:0x0202cec8
_ZN4Game13func_0202cf34Ev kind:function(thumb,size=0x10) addr:0x0202cf34
_ZN4Game13func_0202cf44Ev kind:function(arm,size=0x170) addr:0x0202cf44
_ZN4GameD1Ev kind:function(arm,size=0x18) addr:0x0202d0b4
@@ -132,6 +132,7 @@ src/00_Core/Player/LinkStateRoll.cpp:
.data start:0x020e6018 end:0x020e60a4
src/00_Core/Player/PlayerBase.cpp:
complete
.text start:0x020a7a90 end:0x020a7f44
.data start:0x020e5530 end:0x020e55d0
+15 -15
View File
@@ -244,7 +244,7 @@ _ZN18UnkStruct_020ec7dc19func_ov000_0207c0f0Ei kind:function(thumb,size=0x28) ad
func_ov000_0207c118 kind:function(thumb,size=0x58) addr:0x0207c0b8
_ZN18UnkStruct_020ec7dc19func_ov000_0207c170Ev kind:function(thumb,size=0x1e) addr:0x0207c110
func_ov000_0207c190 kind:function(thumb,size=0x1e) addr:0x0207c130
func_ov000_0207c1b0 kind:function(arm,size=0x48) addr:0x0207c150
_ZN18UnkStruct_027e0e5819func_ov000_0207c1b0EiP5Vec3piii kind:function(arm,size=0x48) addr:0x0207c150
func_ov000_0207c1f8 kind:function(arm,size=0x68) addr:0x0207c198
func_ov000_0207c260 kind:function(arm,size=0x88) addr:0x0207c200
func_ov000_0207c2e8 kind:function(arm,size=0x34) addr:0x0207c288
@@ -256,7 +256,7 @@ func_ov000_0207c444 kind:function(arm,size=0x30) addr:0x0207c3e4
func_ov000_0207c474 kind:function(arm,size=0xa4) addr:0x0207c414
func_ov000_0207c518 kind:function(arm,size=0x98) addr:0x0207c4b8
func_ov000_0207c5b0 kind:function(thumb,size=0x22) addr:0x0207c550
func_ov000_0207c5d4 kind:function(arm,size=0x48) addr:0x0207c574
_ZN18UnkStruct_027e0e5819func_ov000_0207c5d4Eib kind:function(arm,size=0x48) addr:0x0207c574
func_ov000_0207c61c kind:function(arm,size=0x58) addr:0x0207c5bc
func_ov000_0207c674 kind:function(arm,size=0x20) addr:0x0207c614
func_ov000_0207c694 kind:function(arm,size=0x58) addr:0x0207c634
@@ -774,7 +774,7 @@ func_ov000_0208add4 kind:function(arm,size=0x54) addr:0x0208ad74
func_ov000_0208ae28 kind:function(arm,size=0x28) addr:0x0208adc8
func_ov000_0208ae50 kind:function(arm,size=0x8) addr:0x0208adf0
func_ov000_0208ae58 kind:function(arm,size=0x3c) addr:0x0208adf8
func_ov000_0208ae94 kind:function(arm,size=0x44) addr:0x0208ae34
_ZN18UnkStruct_027e0f6419func_ov000_0208ae94Ev kind:function(arm,size=0x44) addr:0x0208ae34
func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x0208ae78
func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x0208b0bc
func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x0208b0dc
@@ -924,7 +924,7 @@ _ZN4AABB4GrowEP5Vec3p kind:function(arm,size=0x28) addr:0x0208ed78
_ZN4AABB10GrowScalarEi kind:function(arm,size=0x4c) addr:0x0208eda0
func_ov000_0208ee4c kind:function(arm,size=0x44) addr:0x0208edec
func_ov000_0208ee90 kind:function(arm,size=0x1a0) addr:0x0208ee30
func_ov000_0208f030 kind:function(arm,size=0x170) addr:0x0208efd0
_ZN8Cylinder19func_ov000_0208f030EP5Vec3pS1_i kind:function(arm,size=0x170) addr:0x0208efd0
func_ov000_0208f1a0 kind:function(arm,size=0xf4) addr:0x0208f140
func_ov000_0208f294 kind:function(arm,size=0x84) addr:0x0208f234
_ZN6Sphere12ContainsInXZEP5Vec3p kind:function(arm,size=0x5c) addr:0x0208f2b8
@@ -1874,8 +1874,8 @@ _ZN10PlayerBase17EquipCollidesWithEP8Cylinderi kind:function(arm,size=0x18) addr
_ZN10PlayerBase18EquipItem_vfunc_2cEv kind:function(arm,size=0x38) addr:0x020a7c9c
_ZN10PlayerBase9SetHealthEs kind:function(arm,size=0x58) addr:0x020a7cd4
_ZN10PlayerBase9AddHealthEs kind:function(arm,size=0x68) addr:0x020a7d2c
_ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x7c) addr:0x020a7d94
_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x118) addr:0x020a7e10
_ZN10PlayerBase18TeleportToEntranceEib kind:function(arm,size=0x7c) addr:0x020a7d94
_ZN10PlayerBase8TeleportEP5Vec3psibb kind:function(arm,size=0x118) addr:0x020a7e10
_ZN10PlayerBase22TeleportToLastEntranceEb kind:function(arm,size=0x1c) addr:0x020a7f28
_ZN13LinkStateBase8vfunc_00Ev kind:function(thumb,size=0x2) addr:0x020a7f44
_ZN13LinkStateBase12OnStateEnterEv kind:function(arm,size=0x4) addr:0x020a7f48
@@ -4760,15 +4760,15 @@ data_ov000_020e5454 kind:data(any) addr:0x020e53f4
data_ov000_020e54a4 kind:data(any) addr:0x020e5444
data_ov000_020e54f4 kind:data(any) addr:0x020e5494
data_ov000_020e5548 kind:data(any) addr:0x020e54e8
data_ov000_020e5590 kind:data(any) addr:0x020e5530
data_ov000_020e5594 kind:data(any) addr:0x020e5534
data_ov000_020e5598 kind:data(any) addr:0x020e5538
data_ov000_020e559c kind:data(any) addr:0x020e553c
data_ov000_020e55a0 kind:data(any) addr:0x020e5540
data_ov000_020e55a4 kind:data(any) addr:0x020e5544
data_ov000_020e55a8 kind:data(any) addr:0x020e5548
data_ov000_020e55ac kind:data(any) addr:0x020e554c
_ZTV10PlayerBase kind:data(any) addr:0x020e5578
@1464 kind:data(any) addr:0x020e5530 local
@1463 kind:data(any) addr:0x020e5534 local
@1462 kind:data(any) addr:0x020e5538 local
@1461 kind:data(any) addr:0x020e553c local
@1460 kind:data(any) addr:0x020e5540 local
@1459 kind:data(any) addr:0x020e5544 local
@1458 kind:data(any) addr:0x020e5548 local
@1457 kind:data(any) addr:0x020e554c local
_ZTV10PlayerBase kind:data(any) addr:0x020e5570
data_ov000_020e5630 kind:data(any) addr:0x020e55d0
data_ov000_020e5634 kind:data(any) addr:0x020e55d4
data_ov000_020e5638 kind:data(any) addr:0x020e55d8
+4 -4
View File
@@ -2279,18 +2279,18 @@ from:0x0210b18c kind:load to:0x027e0f90 module:dtcm
from:0x0210b1b0 kind:thumb_call_arm to:0x0202e9d8 module:main
from:0x0210b1b8 kind:thumb_call to:0x0202ab60 module:main
from:0x0210b1c0 kind:thumb_call to:0x0202ab3c module:main
from:0x0210b1d0 kind:load to:0x020e5578 module:overlay(0)
from:0x0210b1d0 kind:load to:0x020e5570 add:8 module:overlay(0)
from:0x0210b1d4 kind:load to:0x027e0ce0 module:dtcm
from:0x0210b1ea kind:thumb_call to:0x0202ab4c module:main
from:0x0210b1f0 kind:thumb_call_arm to:0x0202ea08 module:main
from:0x0210b1fc kind:load to:0x020e5578 module:overlay(0)
from:0x0210b1fc kind:load to:0x020e5570 add:8 module:overlay(0)
from:0x0210b212 kind:thumb_call to:0x0202ab4c module:main
from:0x0210b218 kind:thumb_call_arm to:0x0202ea08 module:main
from:0x0210b222 kind:thumb_call_arm to:0x0202ea08 module:main
from:0x0210b22c kind:load to:0x020e5578 module:overlay(0)
from:0x0210b22c kind:load to:0x020e5570 add:8 module:overlay(0)
from:0x0210b242 kind:thumb_call to:0x0202ab4c module:main
from:0x0210b248 kind:thumb_call_arm to:0x0202ea08 module:main
from:0x0210b254 kind:load to:0x020e5578 module:overlay(0)
from:0x0210b254 kind:load to:0x020e5570 add:8 module:overlay(0)
from:0x0210b25e kind:thumb_call to:0x020a950c module:overlay(0)
from:0x0210b27c kind:thumb_call_arm to:0x020a9888 module:overlay(0)
from:0x0210b298 kind:thumb_call_arm to:0x020a98ac module:overlay(0)
+1 -1
View File
@@ -1384,7 +1384,7 @@ _ZN4Game13StartGameModeEv kind:function(thumb,size=0x238) addr:0x0202c724
_ZN4Game13func_0202c974EPS_ kind:function(thumb,size=0x8) addr:0x0202c95c
_ZN4Game13func_0202c97cEv kind:function(thumb,size=0x24) addr:0x0202c964
_ZN4Game3RunEv kind:function(arm,size=0x528) addr:0x0202c988
_ZN4Game13func_0202cec8Eii kind:function(thumb,size=0x6c) addr:0x0202ceb0
_ZN4Game13func_0202cec8Eib kind:function(thumb,size=0x6c) addr:0x0202ceb0
_ZN4Game13func_0202cf34Ev kind:function(thumb,size=0x10) addr:0x0202cf1c
_ZN4Game13func_0202cf44Ev kind:function(arm,size=0x170) addr:0x0202cf2c
_ZN4GameD1Ev kind:function(arm,size=0x18) addr:0x0202d09c
+11
View File
@@ -0,0 +1,11 @@
#pragma once
#include "global.h"
#include "types.h"
struct UnkStruct_027e0e58 {
void func_ov000_0207c5d4(unk32 param1, bool param2);
void func_ov000_0207c1b0(unk32 param1, Vec3p *param2, unk32 param3, unk32 param4, unk32 param5);
};
extern UnkStruct_027e0e58 *data_027e0e58;
+2
View File
@@ -12,6 +12,8 @@ public:
/* 8 */ void *mUnk_8;
/* c */
void func_ov000_0208ae94();
void func_ov000_0208b13c();
unk32 func_ov000_0208b180();
};
+10
View File
@@ -15,4 +15,14 @@ public:
/* 0f */ // unk8 mUnk_0f;
/* 10 */ s32 mUnk_10;
/* 14 */
inline Entrance() :
mId(0xff),
mUnk_10(0) {}
inline Entrance(const Entrance &other) :
mPos(other.mPos),
mAngle(other.mAngle),
mId(other.mId),
mUnk_10(other.mUnk_10) {}
};
+1
View File
@@ -19,4 +19,5 @@ struct Cylinder {
}
bool Overlaps(Cylinder *other);
bool func_ov000_0208f030(Vec3p *param1, Vec3p *param2, s32 param3);
};
+4 -3
View File
@@ -4,10 +4,11 @@
#include "Player/EquipItem.hpp"
class EquipShield {
private:
class EquipShield : public EquipItem {
public:
/* 00 (base) */
/* 09 */ unk8 mUnk_09[7];
/* 09 */ unk8 mUnk_09[5];
/* 0e */ unk16 mUnk_0e;
/* 10 */ void *mUnk_10;
/* 14 */ void *mUnk_14;
/* 18 */ unk8 mUnk_18[4];
+1 -1
View File
@@ -6,7 +6,7 @@
#include "Player/EquipRope.hpp"
class EquipSword : public EquipItem {
private:
public:
/* 00 (base) */
/* 09 */ unk8 mUnk_09[3]; // padding?
/* 0c */ void *mUnk_0c;
+1 -1
View File
@@ -17,7 +17,7 @@ public:
/* 08 */ s16 mInvincibleFrames;
/* 0a */ s16 mHealth;
/* 0c */ unk8 mUnk_0c[2];
/* 0e */ s16 mEntranceId;
/* 0e */ u16 mEntranceId;
/* 10 */ bool mUpdatePos;
/* 11 */ bool mVisible;
/* 12 */ bool mInvincible;
+24 -35
View File
@@ -8,6 +8,7 @@
#include "Actor/ActorSpawner.hpp"
#include "DTCM/UnkStruct_027e077c.hpp"
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "DTCM/UnkStruct_027e0f64.hpp"
#include "DTCM/UnkStruct_027e0fd4.hpp"
#include "DTCM/UnkStruct_027e103c.hpp"
#include "Player/PlayerBase.hpp"
@@ -28,7 +29,6 @@ extern void func_ov000_020798bc(s32 *param_1, s32 param_2);
extern void func_ov000_02088000(unk32 param_1, s32 param_2);
extern void func_ov000_02088130(u8 *param_1, unk32 param_2);
extern void func_ov000_02088144(u8 *param_1, unk32 param_2);
extern void func_ov000_0208b13c(s32 *param_1);
extern unk32 func_ov000_0208b180(s32 *param_1);
extern s32 func_ov000_0208b73c(s32 param_1, unk32 param_2);
extern s32 func_ov000_0208b7d0(s32 param_1, Vec3p *param_2);
@@ -110,7 +110,6 @@ extern unk32 *data_027e0c68;
extern u32 *data_027e0ce0[];
extern UnkStruct_0202e894 *data_027e0ce4;
extern unk32 *data_027e0d3c;
extern unk32 data_027e0f64[];
extern unk32 *data_027e0f68;
extern unk32 *data_027e0f6c;
extern unk32 *data_027e0f70;
@@ -475,19 +474,12 @@ ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
int iVar4;
int iVar5;
Vec3p pVar1;
Entrance local_44;
Entrance local_30;
switch (param_2) {
case 0xfa:
pvVar1 = data_027e0d38->mUnk_28;
local_30.mPos.x = *(int *) ((int) pvVar1 + 0x5c);
local_30.mPos.y = *(int *) ((int) pvVar1 + 0x60);
local_30.mPos.z = *(int *) ((int) pvVar1 + 100);
local_30.mAngle = *(unk16 *) ((int) pvVar1 + 0x68);
local_30.mId = *(unk8 *) ((int) pvVar1 + 0x6a);
local_30.mUnk_10 = *(int *) ((int) pvVar1 + 0x6c);
iVar3 = this->mMap->AddEntrance(&local_30);
pvVar1 = data_027e0d38->mUnk_28;
Entrance local_30(*(Entrance *) ((s32) pvVar1 + 0x5c));
iVar3 = this->mMap->AddEntrance(&local_30);
return iVar3;
case 0xfb:
case 0xfc:
@@ -497,13 +489,12 @@ ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
default:
return (int) this;
}
local_44.mId = -1;
local_44.mUnk_10 = 0;
pvVar1 = data_027e0d38->mUnk_28;
pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38);
iVar3 = 0x2000;
iVar4 = 0x2000;
iVar5 = 0xfd;
Entrance local_44;
pvVar1 = data_027e0d38->mUnk_28;
pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38);
iVar3 = 0x2000;
iVar4 = 0x2000;
iVar5 = 0xfd;
if (this->mCourse->mType == CourseType_Sea) {
iVar3 = this->mMap->vfunc_88();
iVar3 = iVar3 + 0xa000;
@@ -577,7 +568,7 @@ void MapManager::func_ov00_02082b3c(unk32 *param_2, Vec2b *param_3) {
this->mMap->vfunc_18();
} else {
gAdventureFlags->func_ov00_020976c8();
func_ov000_0208b13c(data_027e0f64);
data_027e0f64->func_ov000_0208b13c();
uVar5 = this->func_ov00_02082d08();
gActorManager->func_ov004_02105608(param_3->x, param_3->y, uVar5);
this->mMap->vfunc_2c();
@@ -961,8 +952,6 @@ ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) {
ARM bool MapManager::func_ov00_02083664(Entrance *param_2, unk32 entranceId) {
Entrance entrance;
entrance.mId = (u8) 0xff;
entrance.mUnk_10 = 0;
if (this->GetEntrancePos(&entrance, entranceId)) {
param_2->mPos.x = entrance.mPos.x;
param_2->mPos.y = entrance.mPos.y;
@@ -1022,9 +1011,9 @@ ARM bool MapManager::func_ov00_02083790(s32 param_2) {
if (param_2 == 0) {
return true;
}
*(int *) (*(int *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = param_2;
*(int *) (*(int *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = param_2;
iVar2 = data_027e0d38->func_ov000_02078b40();
*(int *) (*(int *) ((unk32 *) data_027e0f64 + 2) + 0x1b4) = param_2;
*(int *) (*(int *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = param_2;
iVar2 = data_027e0d38->func_ov000_02078b40();
if ((iVar2 != 0) && (bVar1 = this->func_ov00_02082e1c(&aiStack_14, &iStack_18), !bVar1)) {
func_ov000_02079898(data_027e0d3c, param_2, 0x10);
gActorManager->func_ov00_020c3ce8(param_2, true);
@@ -1040,9 +1029,9 @@ ARM bool MapManager::func_ov00_02083840(s32 param_2) {
if (param_2 == 0) {
return true;
}
*(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = -1;
*(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = -1;
iVar4 = func_ov000_02078fe8(data_027e0d3c);
*(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 2) + 0x1b4) = -1;
*(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = -1;
iVar4 = func_ov000_02078fe8(data_027e0d3c);
if (0 <= iVar4) {
func_ov000_020798bc(data_027e0d3c, 0x10);
gActorManager->func_ov00_020c3ce8(param_2, false);
@@ -1959,7 +1948,7 @@ s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4)
int iStack_18;
Vec3p VStack_14;
iVar1 = func_ov000_0208df78(data_027e0f64 + 4, param_2, param_3, &VStack_14, &iStack_20);
iVar1 = func_ov000_0208df78((s32 *) data_027e0f64 + 1, param_2, param_3, &VStack_14, &iStack_20);
// object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8;
if (iVar1 == -1) {
return -1;
@@ -2109,10 +2098,10 @@ s32 MapManager::func_ov00_02085108(Vec3p *param_2) {
int local_2c;
unk32 local_28;
uVar2 = func_ov000_0208b180(data_027e0f64);
uVar2 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088130(&local_38, uVar2);
local_44 = (u32) local_38;
uVar2 = func_ov000_0208b180(data_027e0f64);
uVar2 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088144(&local_3a, uVar2);
if (local_44 <= local_37) {
do {
@@ -2165,10 +2154,10 @@ s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *pa
unk32 local_30;
unk32 local_2c;
uVar3 = func_ov000_0208b180(data_027e0f64);
uVar3 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088130(&local_3c, uVar3);
uVar7 = (u32) local_3c;
uVar3 = func_ov000_0208b180(data_027e0f64);
uVar3 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088144(&local_3e, uVar3);
local_4c = (u32) local_3e;
uVar6 = (u32) local_3d;
@@ -2229,10 +2218,10 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par
unk32 local_30;
unk32 local_2c;
uVar2 = func_ov000_0208b180(data_027e0f64);
uVar2 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088130(&local_3c, uVar2);
local_48 = (u32) local_3c;
uVar2 = func_ov000_0208b180(data_027e0f64);
uVar2 = data_027e0f64->func_ov000_0208b180();
func_ov000_02088144(&local_3e, uVar2);
local_50 = local_3e;
uVar6 = local_3d;
+165 -18
View File
@@ -1,20 +1,167 @@
#include "Player/PlayerBase.hpp"
#include "Actor/Navi/ActorNaviBase.hpp"
#include "DTCM/UnkStruct_027e0c54.hpp"
#include "DTCM/UnkStruct_027e0e58.hpp"
#include "DTCM/UnkStruct_027e0f64.hpp"
#include "Item/ItemManager.hpp"
#include "Map/MapManager.hpp"
#include "Player/PlayerControl.hpp"
bool PlayerBase::vfunc_04() {}
ItemFlag PlayerBase::GetEquipId() {}
bool PlayerBase::CanMove() {}
void PlayerBase::SetUpdatePos(bool updatePos) {}
void PlayerBase::SetVisible(bool visible) {}
EquipSword *PlayerBase::GetEquipSword() {}
EquipShield *PlayerBase::GetEquipShield() {}
void PlayerBase::LookAt(Vec3p *target) {}
bool PlayerBase::func_ov00_020a7c00(s32 param1) {}
bool PlayerBase::CollidesWith(Cylinder *cylinder) {}
bool PlayerBase::func_ov00_020a7c60(Vec3p *param1, Vec3p *param2, s32 param3) {}
bool PlayerBase::EquipCollidesWith(Cylinder *cylinder, ItemFlag equipId) {}
s32 PlayerBase::EquipItem_vfunc_2c() {}
void PlayerBase::SetHealth(s16 health) {}
void PlayerBase::AddHealth(s16 amount) {}
bool PlayerBase::Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) {}
bool PlayerBase::TeleportToEntrance(unk32 entranceId, bool param2) {}
bool PlayerBase::TeleportToLastEntrance(bool param1) {}
static const char *sShipParts[] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
ARM bool PlayerBase::vfunc_04() {
return true;
}
ARM ItemFlag PlayerBase::GetEquipId() {
return ItemFlag_None;
}
ARM bool PlayerBase::CanMove() {
return true;
}
ARM void PlayerBase::SetUpdatePos(bool updatePos) {
mUpdatePos = updatePos;
}
ARM void PlayerBase::SetVisible(bool visible) {
mVisible = visible;
ItemManager *pItemManager = gItemManager;
ActorNaviBase *fairy = pItemManager->GetFairy(pItemManager->GetEquippedFairy());
if (fairy != NULL) {
fairy->mVisible = mVisible;
}
s16 var_r0 = visible ? 0x1f : 0;
this->GetEquipSword()->mUnk_5c = var_r0;
this->GetEquipShield()->mUnk_0e = var_r0;
data_027e0e58->func_ov000_0207c5d4(1, visible);
}
ARM EquipSword *PlayerBase::GetEquipSword() {
return (EquipSword *) gItemManager->GetEquipItemUnchecked(ItemFlag_OshusSword);
}
ARM EquipShield *PlayerBase::GetEquipShield() {
return (EquipShield *) gItemManager->GetEquipItemUnchecked(ItemFlag_WoodenShield);
}
ARM void PlayerBase::LookAt(Vec3p *target) {
Vec3p vec;
Vec3p_Sub(target, &gPlayerPos, &vec);
if (vec.x == 0 && vec.z == 0) {
return;
}
gPlayerAngle = Atan2(*(vs32 *) &vec.x, vec.z);
}
ARM bool PlayerBase::func_ov00_020a7c00(s32 param1) {
return param1 == data_027e0c54.mUnk_0;
}
ARM bool PlayerBase::CollidesWith(Cylinder *cylinder) {
Cylinder hitbox;
this->vfunc_10(&hitbox);
if (hitbox.size < 0) {
return false;
}
return cylinder->Overlaps(&hitbox);
}
ARM bool PlayerBase::func_ov00_020a7c60(Vec3p *param1, Vec3p *param2, s32 param3) {
Cylinder hitbox;
this->vfunc_10(&hitbox);
if (hitbox.size < 0) {
return false;
}
Vec3p vec1 = {param1->x, param1->y, param1->z};
Vec3p vec2 = {param2->x, param2->y, param2->z};
return hitbox.func_ov000_0208f030(&vec1, &vec2, param3);
}
ARM bool PlayerBase::EquipCollidesWith(Cylinder *cylinder, ItemFlag equipId) {
return gItemManager->EquipCollidesWith(cylinder, equipId);
}
ARM s32 PlayerBase::EquipItem_vfunc_2c() {
ItemFlag equippedItem = this->GetEquipId();
if (equippedItem == ItemFlag_None) {
return 0;
}
return gItemManager->EquipItem_vfunc_2c(equippedItem);
}
ARM void PlayerBase::SetHealth(s16 health) {
if (mInvincible) {
return;
}
mHealth = health;
if (mHealth > this->GetMaxHealth()) {
mHealth = this->GetMaxHealth();
} else if (mHealth < 0) {
mHealth = 0;
}
}
ARM void PlayerBase::AddHealth(s16 amount) {
if (mInvincible) {
return;
}
if (mHealth <= 0) {
return;
}
mHealth += amount;
if (mHealth > this->GetMaxHealth()) {
mHealth = this->GetMaxHealth();
} else if (mHealth < 0) {
mHealth = 0;
}
}
ARM bool PlayerBase::TeleportToEntrance(unk32 entranceId, bool param2) {
Entrance entrance;
gMapManager->GetEntrancePos(&entrance, entranceId);
if (this->Teleport(&entrance.mPos, entrance.mAngle, entrance.mUnk_10, param2, false)) {
mEntranceId = entranceId;
return true;
}
return false;
}
extern unk16 data_027e0fb0;
ARM bool PlayerBase::Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) {
gPlayerPos = *pos;
Vec3p subroutine_arg0 = {pos->x, pos->y, pos->z};
q20 maxY = gMapManager->MapData_vfunc_68(&subroutine_arg0, 1);
q20 y = pos->y;
if (y <= maxY) {
y = maxY;
}
gPlayerPos.y = y;
gPlayerAngle = angle;
gPlayerVel.x = 0;
data_027e0fb0 = 0;
gPlayerVel.y = 0;
gPlayerVel.z = 0;
gPlayerControl->UpdateAim();
gActorManager->Actor_vfunc_10(param4);
if (param4) {
gMapManager->func_ov00_02082af4();
gAdventureFlags->func_ov00_02097700();
}
if (!param5) {
data_027e0f64->func_ov000_0208ae94();
}
return true;
}
ARM bool PlayerBase::TeleportToLastEntrance(bool param1) {
this->TeleportToEntrance(mEntranceId, param1);
}
+3 -4
View File
@@ -1,5 +1,6 @@
#include "Actor/Player/ActorRefill.hpp"
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "DTCM/UnkStruct_027e0e58.hpp"
#include "DTCM/UnkStruct_027e103c.hpp"
#include "Item/ItemManager.hpp"
#include "System/Random.hpp"
@@ -212,13 +213,11 @@ ARM void ActorRefill::vfunc_20(bool param1) {
}
}
extern unk32 *data_027e0e58;
extern "C" void func_ov000_0207c1b0(unk32 *param1, unk32 param2, Vec3p *param3, unk32 param4, unk32 param5, unk32 param6);
ARM void ActorRefill::func_ov014_02135474() {
s32 iVar1 = mUnk_130;
if (iVar1 != 4 && iVar1 != 5) {
func_ov000_0207c1b0(data_027e0e58, 0x241, &mPos, 2, 0, 0);
func_ov000_0207c1b0(data_027e0e58, 0x242, &mPos, 2, 0, 0);
data_027e0e58->func_ov000_0207c1b0(0x241, &mPos, 2, 0, 0);
data_027e0e58->func_ov000_0207c1b0(0x242, &mPos, 2, 0, 0);
mAlive = false;
}
}