Skip to content

Commit da2314f

Browse files
committed
d_a_obj_mie equivalent
1 parent 0abe859 commit da2314f

File tree

6 files changed

+584
-808
lines changed

6 files changed

+584
-808
lines changed

config/GZ2E01/rels/d_a_obj_mie/symbols.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ l_bmdData = .data:0x00000000; // type:object size:0x8 scope:global
7777
l_resNameList = .data:0x00000008; // type:object size:0x8 scope:global
7878
l_ccDCyl = .data:0x00000010; // type:object size:0x44 scope:global
7979
emttrId$4602 = .data:0x00000054; // type:object size:0x8 scope:local
80-
daObj_Mie_MethodTable = .data:0x0000005C; // type:object size:0x20 scope:global
80+
daObj_Mie_MethodTable = .data:0x0000005C; // type:object size:0x20 scope:local
8181
g_profile_OBJ_MIE = .data:0x0000007C; // type:object size:0x30 scope:global
8282
__vt__8cM3dGPla = .data:0x000000AC; // type:object size:0xC scope:global
8383
__vt__12dBgS_ObjAcch = .data:0x000000B8; // type:object size:0x24 scope:global
@@ -108,8 +108,9 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
108108
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
109109
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
110110
@3822 = .bss:0x00000048; // type:object size:0xC scope:local
111-
l_HIO = .bss:0x00000054; // type:object size:0x4 scope:global data:4byte
111+
l_HIO = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte
112112
@4599 = .bss:0x00000058; // type:object size:0xC scope:local
113+
init$2448 = .bss:0x00000064; // type:object size:0x1 scope:local
113114
scl$4598 = .bss:0x00000068; // type:object size:0xC scope:local
114115
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000074; // type:object size:0x4 scope:global
115116
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000078; // type:object size:0x4 scope:global

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2068,7 +2068,7 @@ def MatchingFor(*versions) -> bool:
20682068
ActorRel(Equivalent, "d_a_obj_master_sword"), #weak function and vtable order
20692069
ActorRel(NonMatching, "d_a_obj_mato"),
20702070
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mhole"),
2071-
ActorRel(NonMatching, "d_a_obj_mie"),
2071+
ActorRel(Equivalent, "d_a_obj_mie"), #pch extra data
20722072
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_6pole"),
20732073
ActorRel(NonMatching, "d_a_obj_mirror_chain"),
20742074
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_mirror_sand"),

include/d/actor/d_a_npc_pouya.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class daNpc_Pouya_c : public fopAc_ac_c {
2121
/* 80AAE7DC */ void Draw();
2222
/* 80AAE870 */ void createHeapCallBack(fopAc_ac_c*);
2323
/* 80AAE890 */ void ctrlJointCallBack(J3DJoint*, int);
24-
/* 80AAE8E8 */ void getType();
24+
/* 80AAE8E8 */ u8 getType();
2525
/* 80AAE94C */ void isDelete();
2626
/* 80AAE9D8 */ void reset();
2727
/* 80AAEBCC */ void ctrlSubFaceMotion(int);
@@ -57,11 +57,15 @@ class daNpc_Pouya_c : public fopAc_ac_c {
5757
/* 80AB1F74 */ void checkChangeJoint(int);
5858
/* 80AB1F84 */ void checkRemoveJoint(int);
5959

60+
MtxP getHeadMtx() { return mpMorf->getModel()->getAnmMtx(4); }
61+
6062
static void* mCutNameList[3];
6163
static u8 mCutList[36];
6264

6365
private:
64-
/* 0x568 */ u8 field_0x568[0xfd4 - 0x568];
66+
/* 0x568 */ u8 field_0x568[0x578 - 0x568];
67+
/* 0x578 */ mDoExt_McaMorfSO* mpMorf;
68+
/* 0x57C */ u8 field_0x57c[0xfd4 - 0x57c];
6569
};
6670

6771
STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4);

include/d/actor/d_a_obj_mie.h

Lines changed: 108 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,46 @@
11
#ifndef D_A_OBJ_MIE_H
22
#define D_A_OBJ_MIE_H
33

4+
#include "SSystem/SComponent/c_math.h"
5+
#include "d/d_bg_s_acch.h"
6+
#include "d/d_cc_d.h"
47
#include "f_op/f_op_actor_mng.h"
58

9+
struct daObj_Mie_HIOParam {
10+
/* 0x00 */ f32 focus_offset;
11+
/* 0x04 */ f32 gravity;
12+
/* 0x08 */ f32 scale;
13+
/* 0x0C */ f32 real_shadow_size;
14+
/* 0x10 */ f32 weight;
15+
/* 0x14 */ f32 height;
16+
/* 0x18 */ f32 knee_length;
17+
/* 0x1C */ f32 width;
18+
/* 0x20 */ f32 firing_rate;
19+
/* 0x24 */ f32 launch_angle;
20+
/* 0x28 */ f32 floating_offset;
21+
};
22+
23+
struct daObj_Mie_Param_c {
24+
virtual ~daObj_Mie_Param_c() {}
25+
static const daObj_Mie_HIOParam m;
26+
};
27+
28+
class daObj_Mie_HIO_c
29+
#ifdef DEBUG
30+
: public mDoHIO_entry_c
31+
#endif
32+
{
33+
public:
34+
daObj_Mie_HIO_c() {
35+
mParams = daObj_Mie_Param_c::m;
36+
}
37+
38+
void genMessage(JORMContext*);
39+
/* 80C95A40 */ virtual ~daObj_Mie_HIO_c() {}
40+
41+
daObj_Mie_HIOParam mParams;
42+
};
43+
644
/**
745
* @ingroup actors-objects
846
* @class daObj_Mie_c
@@ -12,35 +50,85 @@
1250
*
1351
*/
1452
class daObj_Mie_c : public fopAc_ac_c {
53+
private:
54+
/* 0x568 */ daObj_Mie_HIO_c* mHIO;
55+
/* 0x56C */ request_of_phase_process_class mPhase;
56+
/* 0x574 */ J3DModel* mModel;
57+
/* 0x578 */ dBgS_ObjAcch mAcch;
58+
/* 0x750 */ dCcD_Stts mStts;
59+
/* 0x78C */ dBgS_AcchCir mAcchCir;
60+
/* 0x7CC */ cBgS_GndChk mGndChk;
61+
/* 0x808 */ dCcD_Cyl mCyl;
62+
/* 0x944 */ cM3dGLin mLine;
63+
/* 0x960 */ dBgS_LinChk mLinChk;
64+
/* 0x9D0 */ u8 mType;
65+
/* 0x9D4 */ cXyz field_0x9d4;
66+
/* 0x9E0 */ cXyz field_0x9e0;
67+
/* 0x9EC */ csXyz field_0x9ec;
68+
/* 0x9F4 */ int field_0x9f4;
69+
/* 0x9F8 */ int field_0x9f8;
70+
/* 0x9FC */ f32 field_0x9fc;
71+
/* 0xA00 */ f32 field_0xa00;
72+
/* 0xA04 */ f32 field_0xa04;
73+
/* 0xA08 */ f32 field_0xa08;
74+
/* 0xA0C */ f32 field_0xa0c;
75+
/* 0xA10 */ s16 field_0xa10;
76+
/* 0xA12 */ s16 field_0xa12;
77+
/* 0xA14 */ s16 field_0xa14;
78+
/* 0xA16 */ s16 field_0xa16;
79+
/* 0xA18 */ s16 field_0xa18;
80+
/* 0xA18 */ int field_0xa1c;
81+
/* 0xA18 */ u32 field_0xa20[4];
82+
/* 0xA38 */ u32 field_0xa30;
83+
/* 0xA38 */ u32 field_0xa34;
84+
/* 0xA38 */ u32 field_0xa38;
85+
/* 0xA3C */ u32 field_0xa3c;
86+
/* 0xA40 */ u8 field_0xa40;
87+
/* 0xA41 */ u8 field_0xa41;
88+
/* 0xA42 */ u8 field_0xa42;
89+
/* 0xA43 */ u8 field_0xa43;
90+
/* 0xA44 */ u8 field_0xa44;
91+
/* 0xA45 */ u8 field_0xa45;
92+
/* 0xA46 */ u8 field_0xa46;
93+
/* 0xA47 */ u8 field_0xa47;
94+
/* 0xA48 */ int field_0xa48;
1595
public:
16-
/* 80C93FCC */ ~daObj_Mie_c();
17-
/* 80C941C8 */ void create();
18-
/* 80C945E8 */ void CreateHeap();
19-
/* 80C94674 */ void Delete();
20-
/* 80C946A8 */ void Execute();
21-
/* 80C95140 */ void Draw();
22-
/* 80C952D8 */ void createHeapCallBack(fopAc_ac_c*);
23-
/* 80C952F8 */ void srchPouyaa(void*, void*);
96+
enum Type {
97+
TYPE_0,
98+
};
99+
100+
/* 80C93FCC */ virtual ~daObj_Mie_c();
101+
/* 80C941C8 */ int create();
102+
/* 80C945E8 */ int CreateHeap();
103+
/* 80C94674 */ int Delete();
104+
/* 80C946A8 */ int Execute();
105+
/* 80C95140 */ int Draw();
106+
/* 80C952D8 */ static int createHeapCallBack(fopAc_ac_c*);
107+
/* 80C952F8 */ static void* srchPouyaa(void*, void*);
24108
/* 80C9536C */ void setEnvTevColor();
25109
/* 80C953C8 */ void setRoomNo();
26110
/* 80C9540C */ void setMtx();
27-
/* 80C954BC */ void calcRollAngle(s16, int);
28-
/* 80C9555C */ void getWallAngle(s16, s16*);
111+
/* 80C954BC */ s16 calcRollAngle(s16, int);
112+
/* 80C9555C */ int getWallAngle(s16, s16*);
29113
/* 80C956EC */ void setSmokePrtcl();
30114
/* 80C95768 */ void setWaterPrtcl();
31115
/* 80C95890 */ void setHamonPrtcl();
32-
private:
33-
/* 0x568 */ u8 field_0x568[0xa50 - 0x568];
34-
};
35116

36-
STATIC_ASSERT(sizeof(daObj_Mie_c) == 0xa50);
37-
38-
class daObj_Mie_Param_c {
39-
public:
40-
/* 80C95A40 */ ~daObj_Mie_Param_c();
41-
42-
static u8 const m[44];
117+
u8 getType() { return TYPE_0; }
118+
void popup(f32 param_1, f32 param_2, cXyz* param_3) {
119+
if (param_3 != NULL) {
120+
current.pos = *param_3;
121+
home.pos = current.pos;
122+
}
123+
s16 sVar3 = cM_deg2s(param_2);
124+
speed.setall(0.0f);
125+
speed.y = param_1 * cM_ssin(sVar3);
126+
speedF = param_1 * cM_scos(sVar3);
127+
field_0xa14 = 0x4000;
128+
field_0xa44 = 1;
129+
}
43130
};
44131

132+
STATIC_ASSERT(sizeof(daObj_Mie_c) == 0xa50);
45133

46134
#endif /* D_A_OBJ_MIE_H */

src/d/actor/d_a_npc_pouya.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ void daNpc_Pouya_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) {
10461046
}
10471047

10481048
/* 80AAE8E8-80AAE94C 000C28 0064+00 1/1 0/0 1/1 .text getType__13daNpc_Pouya_cFv */
1049-
void daNpc_Pouya_c::getType() {
1049+
u8 daNpc_Pouya_c::getType() {
10501050
// NONMATCHING
10511051
}
10521052

0 commit comments

Comments
 (0)