Skip to content

Commit cd78f5b

Browse files
Merge pull request #266 from elijah-thomas774/d_a_obj_barrel
d_a_obj_barrel
2 parents 8868b49 + 8a9d164 commit cd78f5b

35 files changed

Lines changed: 1881 additions & 186 deletions

config/SOUE01/rels/d_a_npc_ce_friendNP/symbols.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ fn_11_27D0 = .text:0x000027D0; // type:function size:0xCC
8787
fn_11_28A0 = .text:0x000028A0; // type:function size:0x8
8888
fn_11_28B0 = .text:0x000028B0; // type:function size:0xD4
8989
fn_11_2990 = .text:0x00002990; // type:function size:0xB0
90-
fn_11_2A40 = .text:0x00002A40; // type:function size:0x4C
90+
fn_11_2A40__16dAcNpcCeFriend_cFv = .text:0x00002A40; // type:function size:0x4C
9191
fn_11_2A90 = .text:0x00002A90; // type:function size:0x4B8
9292
fn_11_2F50 = .text:0x00002F50; // type:function size:0x1C
9393
fn_11_2F70 = .text:0x00002F70; // type:function size:0x184

config/SOUE01/rels/d_a_npc_ce_ladyNP/symbols.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fn_12_1A20 = .text:0x00001A20; // type:function size:0x1FC
7777
fn_12_1C20__14dAcNpcCeLady_cFP12dAcObjBase_c = .text:0x00001C20; // type:function size:0x68
7878
fn_12_1C90 = .text:0x00001C90; // type:function size:0x164
7979
fn_12_1E00__14dAcNpcCeLady_cFP12dAcObjBase_cPb = .text:0x00001E00; // type:function size:0x80
80-
fn_12_1E80 = .text:0x00001E80; // type:function size:0x9C
80+
fn_12_1E80__14dAcNpcCeLady_cFP12dAcObjBase_cPb = .text:0x00001E80; // type:function size:0x9C
8181
fn_12_1F20 = .text:0x00001F20; // type:function size:0xF0
8282
fn_12_2010 = .text:0x00002010; // type:function size:0x3C
8383
fn_12_2050 = .text:0x00002050; // type:function size:0xD4

config/SOUE01/rels/d_a_obj_barrelNP/symbols.txt

Lines changed: 118 additions & 59 deletions
Large diffs are not rendered by default.

config/SOUE01/symbols.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ drawShadow__12dAcObjBase_cFRQ23m3d15mShadowCircle_cPvRC6mMtx_cPC7mQuat_clllllf =
11411141
actorSpawnAtActor2 = .text:0x8002EF40; // type:function size:0x24
11421142
fn_8002EF70 = .text:0x8002EF70; // type:function size:0x28
11431143
fn_8002EFA0 = .text:0x8002EFA0; // type:function size:0x50
1144-
fn_8002EFF0 = .text:0x8002EFF0; // type:function size:0x194
1144+
fn_8002eff0__12dAcObjBase_cFRCfRCsP8cCcD_ObjRCfRCf = .text:0x8002EFF0; // type:function size:0x194
11451145
fn_8002F190 = .text:0x8002F190; // type:function size:0x24
11461146
createActorUnkGroup3__12dAcObjBase_cFQ28fProfile14PROFILE_NAME_eUlUlP7mVec3_cP7mAng3_cP7mVec3_cUl = .text:0x8002F1C0; // type:function size:0x98
11471147
createActorUnkGroup3__12dAcObjBase_cFPCcUlUlPC7mVec3_cPC7mAng3_cPC7mVec3_cUlUsSc = .text:0x8002F260; // type:function size:0xA0
@@ -3370,7 +3370,7 @@ fn_80096A60 = .text:0x80096A60; // type:function size:0x50
33703370
targetScore__16AttentionManagerFP12dAcObjBase_cP12dAcObjBase_c = .text:0x80096AB0; // type:function size:0x88
33713371
fn_80096B40__16AttentionManagerFP12dAcObjBase_c = .text:0x80096B40; // type:function size:0x80
33723372
addPickUpTarget__16AttentionManagerFR12dAcObjBase_cf = .text:0x80096BC0; // type:function size:0x18
3373-
addSitTarget__16AttentionManagerFR12dAcObjBase_cUlf = .text:0x80096BE0; // type:function size:0x20
3373+
addSitTarget__16AttentionManagerFR12dAcObjBase_cfQ216AttentionManager7Flags_e = .text:0x80096BE0; // type:function size:0x20
33743374
addExamineTalkTarget__16AttentionManagerFR12dAcObjBase_cUlffff = .text:0x80096C00; // type:function size:0x28
33753375
addExamineTalkTarget__16AttentionManagerFR12dAcObjBase_cUlfff = .text:0x80096C30; // type:function size:0x28
33763376
addCatchTarget__16AttentionManagerFR12dAcObjBase_cUlfff = .text:0x80096C60; // type:function size:0x30
@@ -3579,7 +3579,7 @@ fn_800A0290 = .text:0x800A0290; // type:function size:0x38
35793579
fn_800A02D0 = .text:0x800A02D0; // type:function size:0x4
35803580
processEventFlags = .text:0x800A02E0; // type:function size:0x268
35813581
fn_800A0550 = .text:0x800A0550; // type:function size:0x14
3582-
fn_800A0570 = .text:0x800A0570; // type:function size:0x78
3582+
FUN_800a0570__12EventManagerFPC9dAcBase_c = .text:0x800A0570; // type:function size:0x78
35833583
fn_800A05F0 = .text:0x800A05F0; // type:function size:0x50
35843584
fn_800A0640 = .text:0x800A0640; // type:function size:0x18
35853585
fn_800A0660 = .text:0x800A0660; // type:function size:0x18

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2371,7 +2371,7 @@ def MatchingFor(*versions):
23712371
),
23722372
Rel(NonMatching, "d_a_obj_bamboo", "REL/d/a/obj/d_a_obj_bamboo.cpp"),
23732373
Rel(Matching, "d_a_obj_bamboo_island", "REL/d/a/obj/d_a_obj_bamboo_island.cpp"),
2374-
Rel(NonMatching, "d_a_obj_barrel", "REL/d/a/obj/d_a_obj_barrel.cpp"),
2374+
Rel(Matching, "d_a_obj_barrel", "REL/d/a/obj/d_a_obj_barrel.cpp"),
23752375
Rel(NonMatching, "d_a_obj_bblargebomb", "REL/d/a/obj/d_a_obj_bblargebomb.cpp"),
23762376
Rel(NonMatching, "d_a_obj_bbstone", "REL/d/a/obj/d_a_obj_bbstone.cpp"),
23772377
Rel(NonMatching, "d_a_obj_bb_bridge", "REL/d/a/obj/d_a_obj_bb_bridge.cpp"),

include/d/a/d_a_base.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class dAcBase_c : public dBase_c {
120120
/* vt 0x64 */ virtual bool restorePosRotFromCopy();
121121
/* vt 0x68 */ virtual void registerInEvent();
122122
/* vt 0x6C */ virtual void unkVirtFunc_0x6C();
123-
/* vt 0x70 */ virtual void doInteraction(s32);
123+
/* vt 0x70 */ virtual void doInteraction(s32 /* InteractionType */);
124124

125125
public:
126126
dAcBase_c();
@@ -149,10 +149,14 @@ class dAcBase_c : public dBase_c {
149149
return mRotation;
150150
}
151151

152-
mVec3_c getPostionDifference(const dAcBase_c &other) {
152+
mVec3_c getPostionDifference(const dAcBase_c &other) const {
153153
return mPosition - other.mPosition;
154154
}
155155

156+
f32 getHeightDifference(const dAcBase_c &b) const {
157+
return mPosition.y - b.mPosition.y;
158+
}
159+
156160
f32 getSquareDistanceTo(const mVec3_c &point) const {
157161
mVec3_c diff = mPosition - point;
158162
return diff.x * diff.x + diff.z * diff.z;

include/d/a/d_a_player.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define D_A_PLAYER_H
33

44
#include "common.h"
5+
#include "d/a/d_a_base.h"
56
#include "d/a/d_a_item.h"
67
#include "d/col/c/c_bg_s_poly_info.h"
78
#include "d/d_player_mdl.h"
@@ -93,6 +94,12 @@ class dAcPy_c : public daPlayerModelBase_c {
9394
return LINK;
9495
}
9596

97+
static dAcPy_c &GetLinkRM() {
98+
return *LINK;
99+
}
100+
static const dAcPy_c &GetLinkR() {
101+
return *LINK;
102+
}
96103
static dAcPy_c *GetLinkM() {
97104
return LINK;
98105
}

include/d/a/npc/d_a_npc_ce_friend.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class dAcNpcCeFriend_c : public dAcNpc_c {
1212
virtual ~dAcNpcCeFriend_c() {}
1313

1414
bool fn_11_17C0(dAcObjBase_c *);
15+
bool fn_11_2A40();
1516

1617
private:
1718
/* 0x??? */ STATE_MGR_DECLARE(dAcNpcCeFriend_c);

include/d/a/npc/d_a_npc_ce_lady.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class dAcNpcCeLady_c : public dAcNpc_c {
1313

1414
bool fn_12_1C20(dAcObjBase_c *);
1515
void fn_12_1E00(dAcObjBase_c *, bool *);
16+
void fn_12_1E80(dAcObjBase_c *, bool *);
1617

1718
private:
1819
/* 0x??? */ STATE_MGR_DECLARE(dAcNpcCeLady_c);

include/d/a/obj/d_a_obj_barrel.h

Lines changed: 195 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,121 @@
11
#ifndef D_A_OBJ_BARREL_H
22
#define D_A_OBJ_BARREL_H
33

4+
#include "d/a/d_a_base.h"
45
#include "d/a/obj/d_a_obj_base.h"
6+
#include "d/col/bg/d_bg_s_acch.h"
7+
#include "d/col/bg/d_bg_w.h"
8+
#include "d/col/c/c_bg_s_poly_info.h"
9+
#include "d/col/cc/d_cc_d.h"
10+
#include "d/d_shadow.h"
11+
#include "d/flag/sceneflag_manager.h"
12+
#include "m/m3d/m_smdl.h"
13+
#include "m/m_angle.h"
14+
#include "m/m_quat.h"
15+
#include "m/m_vec.h"
16+
#include "nw4r/g3d/res/g3d_resfile.h"
517
#include "s/s_State.hpp"
6-
#include "s/s_StateMgr.hpp"
18+
#include "toBeSorted/d_emitter.h"
19+
#include "toBeSorted/time_area_mgr.h"
20+
21+
class dAcNpcCeLady_c;
22+
class dAcNpcCeFriend_c;
723

824
class dAcOBarrel_c : public dAcObjBase_c {
925
public:
26+
enum Type {
27+
Normal,
28+
Bomb,
29+
Type2,
30+
Kraken,
31+
};
32+
1033
dAcOBarrel_c() : mStateMgr(*this, sStateID::null) {}
1134
virtual ~dAcOBarrel_c() {}
1235

36+
virtual int doDelete() override;
37+
virtual int draw() override;
38+
virtual bool createHeap() override;
39+
virtual int actorCreate() override;
40+
virtual int actorPostCreate() override;
41+
virtual int actorExecute() override;
42+
43+
virtual void registerInEvent() override;
44+
virtual void unkVirtFunc_0x6C() override;
45+
virtual void doInteraction(s32) override;
46+
47+
/** fn_293_30D0 */
48+
void fn_293_30D0();
49+
50+
/** fn_293_31B0 */
51+
void fn_293_31B0();
52+
53+
/** fn_293_3560 */
54+
void fn_293_3560();
55+
56+
/** fn_293_37B0 */
57+
void fn_293_37B0();
58+
59+
/** fn_293_3A20 */
60+
void updateMtx();
61+
62+
/** fn_293_3DB0 */
63+
void fn_293_3DB0();
64+
65+
/** Break Barrel */
66+
void fn_293_4200();
67+
68+
/** Check to see if the Barrel should break */
69+
bool fn_293_45A0();
70+
71+
/** fn_293_4A90 */
72+
bool fn_293_4A90(const mAng &);
73+
74+
/** Checks if On Lava or Sink Sand */
75+
bool fn_293_4BC0();
76+
77+
/** Checks if On Lava */
78+
bool fn_293_4C20() const;
79+
80+
/** fn_293_4C60 */
81+
bool fn_293_4C60();
82+
83+
/** Check to see if its below some range */
84+
bool fn_293_4CE0() const;
85+
86+
/** Check to see if its being moved. (like Conveyor) */
87+
bool fn_293_4D00();
88+
89+
/** Check to see if it is being moved upwards? */
90+
bool fn_293_4ED0() const;
91+
92+
/** fn_293_4F80 */
93+
bool fn_293_4F80();
94+
95+
/** fn_293_50B0 */
96+
bool fn_293_50B0();
97+
98+
/** Perform Timeslip */
99+
void fn_293_5150();
100+
101+
/** fn_293_5360 */
102+
void fn_293_5360();
103+
104+
/** fn_293_5440 */
105+
void fn_293_5440();
106+
107+
/** fn_293_54D0 */
108+
void fn_293_54D0();
109+
110+
/** fn_293_5850 */
111+
void fn_293_5850(f32 *, bool);
112+
113+
/** Set Ground Normal */
114+
void fn_293_58C0();
115+
116+
/** fn_293_5910 */
117+
void fn_293_5910();
118+
13119
STATE_FUNC_DECLARE(dAcOBarrel_c, Wait);
14120
STATE_FUNC_DECLARE(dAcOBarrel_c, Grab);
15121
STATE_FUNC_DECLARE(dAcOBarrel_c, GrabUp);
@@ -21,8 +127,95 @@ class dAcOBarrel_c : public dAcObjBase_c {
21127
STATE_FUNC_DECLARE(dAcOBarrel_c, KrakenBorn);
22128
STATE_FUNC_DECLARE(dAcOBarrel_c, Rebirth);
23129

130+
public:
131+
bool isType_0() const {
132+
return mType == Type2 || mType == Kraken;
133+
}
134+
135+
bool isTimeshiftableType() const {
136+
return mType & 1;
137+
}
138+
139+
bool field0x17Check() const {
140+
return field_0xE17 == 0 || field_0xE17 == 1;
141+
}
142+
bool isType_1() const {
143+
return mType & 2;
144+
}
145+
146+
bool checkFlag_0xE18() {
147+
return field_0xE18 < 0xFF && !SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0xE18);
148+
}
149+
24150
private:
25-
/* 0x??? */ STATE_MGR_DECLARE(dAcOBarrel_c);
151+
/* 0x330 */ nw4r::g3d::ResFile mResFile;
152+
/* 0x334 */ m3d::smdl_c mMdl;
153+
/* 0x350 */ dShadowCircle_c mShadow;
154+
/* 0x358 */ dBgS_AcchCir mAcchCir;
155+
/* 0x3B4 */ dBgS_ObjAcch mObjAcch;
156+
/* 0x764 */ cBgS_PolyInfo mPolyInfo;
157+
/* 0x790 */ dBgW mBgW;
158+
/* 0x9A0 */ dCcD_Cyl mCyl;
159+
/* 0xAF0 */ dCcD_Sph mSph;
160+
/* 0xC40 */ STATE_MGR_DECLARE(dAcOBarrel_c);
161+
/* 0xC7C */ TimeAreaStruct mTimeArea;
162+
/* 0xC88 */ dAcRef_c<dAcNpcCeLady_c> mCeLady;
163+
/* 0xC94 */ dAcRef_c<dAcNpcCeFriend_c> mCeFriend;
164+
/* 0xCA0 */ dEmitter_c mEmitter0;
165+
/* 0xCD4 */ dEmitter_c mEmitter1;
166+
/* 0xD08 */ dWaterEffect_c mWaterEffect;
167+
/* 0xD50 */ mQuat_c quat_0xD50;
168+
/* 0xD60 */ mQuat_c quat_0xD60;
169+
/* 0xD70 */ mQuat_c quat_0xD70;
170+
/* 0xD80 */ mQuat_c quat_0xD80;
171+
/* 0xD90 */ mQuat_c quat_0xD90;
172+
/* 0xDA0 */ mQuat_c quat_0xDA0;
173+
/* 0xDB0 */ mVec3_c field_0xDB0; //< player direction vector
174+
/* 0xDBC */ mVec3_c field_0xDBC;
175+
/* 0xDC8 */ mVec3_c field_0xDC8;
176+
/* 0xDD4 */ f32 field_0xDD4;
177+
/* 0xDD8 */ f32 field_0xDD8;
178+
/* 0xDDC */ f32 field_0xDDC;
179+
/* 0xDE0 */ f32 field_0xDE0;
180+
/* 0xDE4 */ mAng3_c field_0xDE4;
181+
/* 0xDEA */ mAng field_0xDEA;
182+
/* 0xDEC */ mAng field_0xDEC;
183+
/* 0xDEE */ mAng field_0xDEE;
184+
/* 0xDF0 */ mAng field_0xDF0;
185+
/* 0xDF2 */ mAng field_0xDF2;
186+
/* 0xDF4 */ mAng field_0xDF4;
187+
/* 0xDF6 */ mAng field_0xDF6;
188+
/* 0xDF8 */ mAng field_0xDF8;
189+
/* 0xDFA */ mAng field_0xDFA;
190+
/* 0xDFC */ u16 field_0xDFC;
191+
/* 0xDFE */ u16 field_0xDFE;
192+
/* 0xE00 */ bool field_0xE00; //< Can Damage ?
193+
/* 0xE01 */ bool field_0xE01;
194+
/* 0xE02 */ bool field_0xE02;
195+
/* 0xE03 */ bool field_0xE03;
196+
/* 0xE04 */ bool field_0xE04;
197+
/* 0xE05 */ bool field_0xE05;
198+
/* 0xE06 */ bool field_0xE06;
199+
/* 0xE07 */ bool field_0xE07;
200+
/* 0xE08 */ bool field_0xE08;
201+
/* 0xE09 */ bool field_0xE09; //< for OBJ_VSD Present
202+
/* 0xE0A */ bool field_0xE0A;
203+
/* 0xE0B */ bool field_0xE0B;
204+
/* 0xE0C */ bool field_0xE0C; //< Timeslip Active
205+
/* 0xE0D */ bool field_0xE0D; //< Timeslip_rev Active
206+
/* 0xE0E */ bool field_0xE0E;
207+
/* 0xE0F */ u8 mType;
208+
/* 0xE10 */ u8 field_0xE10;
209+
/* 0xE11 */ u8 field_0xE11;
210+
/* 0xE12 */ u8 field_0xE12;
211+
/* 0xE13 */ u8 field_0xE13;
212+
/* 0xE14 */ u8 field_0xE14;
213+
/* 0xE15 */ u8 field_0xE15;
214+
/* 0xE16 */ u8 field_0xE16;
215+
/* 0xE17 */ u8 field_0xE17;
216+
/* 0xE18 */ u8 field_0xE18;
217+
/* 0xE19 */ u8 mBrokenFlag;
218+
/* 0xE1C */ s32 mDropItem;
26219
};
27220

28221
#endif

0 commit comments

Comments
 (0)