Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_obj_bemos.h
Go to the documentation of this file.
1#ifndef D_A_OBJ_BEMOS_H
2#define D_A_OBJ_BEMOS_H
3
4#include "d/d_bg_s_acch.h"
6#include "d/d_bg_w.h"
7#include "d/d_cc_d.h"
9#include "m_Do/m_Do_ext.h"
11
21public:
22 typedef void (daObjBm_c::*procFunc)();
23 typedef void (daObjBm_c::*modeFunc)();
24 typedef void (daObjBm_c::*effectFunc)();
25
26 class BgcSrc_c {
27 public:
28 /* 0x0 */ f32 field_0x0;
29 /* 0x4 */ f32 field_0x4;
30 /* 0x8 */ f32 field_0x8;
31 /* 0xC */ f32 field_0xc;
32 };
33
34 class Bgc_c {
35 public:
36 enum State_e {
37 STATE_0_e = 0x0,
38 STATE_1_e = 0x1,
39 STATE_2_e = 0x2,
40 STATE_4_e = 0x4,
41 STATE_8_e = 0x8,
42 STATE_10_e = 0x10,
43 STATE_20_e = 0x20,
44 STATE_40_e = 0x40,
45 };
46
47 Bgc_c();
48 void wall_pos(fopAc_ac_c const*, daObjBm_c::BgcSrc_c const*, int, s16, f32);
49 bool chk_wall_pre(fopAc_ac_c const*, daObjBm_c::BgcSrc_c const*, int, s16);
50
52 static const daObjBm_c::BgcSrc_c M_lin20[];
53
57
58 /* 0x000 */ f32 field_0x0[23];
59 /* 0x05C */ int field_0x5c;
60 /* 0x060 */ f32 field_0x60;
61 /* 0x064 */ cXyz field_0x64[23];
62 /* 0x178 */ int field_0x178;
63 /* 0x17C */ f32 field_0x17c;
64 /* 0x180 */ State_e mState;
65 };
66
67 u8 getMoveType() { return fopAcM_GetParamBit(this, 24, 4); }
68 s16 getHeadJoint() { return mJoints[0]; }
69 s16 getBigGearJoint() { return mJoints[1]; }
73 u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
74 u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); }
75 u8 getSwNo3() { return fopAcM_GetParamBit(this, 16, 8); }
76 u8 getSearchDist() { return fopAcM_GetParamBit(this, 28, 4); }
78 u8 checkLockOnCamera() { return (field_0x100a & 0x8000) >> 15; }
79
82 void initBaseMtx();
83 void setBaseMtx();
84 int Create();
85 int CreateHeap();
86 int create1st();
87 int Execute(Mtx**);
88 void main_proc_call();
89 void initActionEnBemos();
90 void initActionObjBemos();
91 void actionEnBemos();
92 void actionObjBemos();
93 void setCrawCO();
94 void calcBeamPos();
95 void calcBeamLenAndAt();
100 void effect_proc();
101 void effectWait();
102 void initEffectSet0();
103 void effectSet0();
104 void effectSet1();
105 void effectEnd();
106 int check_to_walk();
107 void mode_wait_init();
108 void mode_wait();
109 void mode_walk_init();
110 void mode_walk();
111 void mode_afl();
112 void mode_dead_init();
113 void mode_dead();
114 void clr_moment_cnt();
115 void initActionSwWait();
116 void actionSwWait();
117 void initActionWarning();
118 void actionWarning();
120 void actionFindPlayer();
121 void initActionAttack();
122 void actionAttack();
123 void initActionDead();
124 void actionDead();
125 int Draw();
126#if DEBUG
127 /* 0x000000 */ void debugDraw();
128#endif
129 int Delete();
130
131 static s16 const M_dir_base[4];
132 // private:
134 /* 0x05A8 */ J3DModel* mpModel;
135 /* 0x05AC */ mDoExt_brkAnm* mpBrkAnm;
136 /* 0x05B0 */ mDoExt_bckAnm* mpBckAnm;
137 /* 0x05B4 */ J3DModel* mpModel2;
138 /* 0x05B8 */ mDoExt_btkAnm* mpBtkAnm;
141 /* 0x05C4 */ J3DModel* mpModel3;
143 /* 0x05CC */ dBgS_ObjAcch mAcch;
144 /* 0x07A4 */ dBgS_AcchCir mAcchCir;
145 /* 0x07E4 */ dCcD_Stts mStts;
146 /* 0x0820 */ dCcD_Sph mSph;
147 /* 0x0958 */ dCcD_Cps mCps;
148 /* 0x0A9C */ dCcD_Cyl mCyl[4];
149 /* 0x0F8C */ s16 mJoints[5];
150 /* 0x0F96 */ s16 field_0xf96;
151 /* 0x0F98 */ s16 field_0xf98;
152 /* 0x0F9A */ s16 field_0xf9a;
153 /* 0x0F9C */ s16 field_0xf9c;
154 /* 0x0F9E */ s16 field_0xf9e;
155 /* 0x0FA0 */ s16 field_0xfa0;
156 /* 0x0FA2 */ s16 field_0xfa2;
157 /* 0x0FA4 */ s16 field_0xfa4;
158 /* 0x0FA6 */ s16 field_0xfa6;
159 /* 0x0FA8 */ s16 field_0xfa8;
160 /* 0x0FAA */ s16 field_0xfaa;
161 /* 0x0FAC */ s16 field_0xfac;
162 /* 0x0FAE */ s16 field_0xfae;
163 /* 0x0FB0 */ s16 field_0xfb0;
164 /* 0x0FB2 */ s16 field_0xfb2;
165 /* 0x0FB4 */ J3DMaterial* mpMaterial;
166 /* 0x0FB8 */ cXyz field_0xfb8;
167 /* 0x0FC4 */ csXyz field_0xfc4;
168 /* 0x0FCA */ u8 field_0xfca[2];
169 /* 0x0FCC */ cXyz field_0xfcc;
170 /* 0x0FD8 */ cXyz field_0xfd8;
171 /* 0x0FE4 */ u8 field_0xfe4;
172 /* 0x0FE5 */ u8 field_0xfe5;
173 /* 0x0FE6 */ u8 field_0xfe6;
174 /* 0x0FE7 */ s8 field_0xfe7;
175 /* 0x0FE8 */ u8 field_0xfe8;
176 /* 0x0FE9 */ u8 field_0xfe9;
177 /* 0x0FEA */ u8 field_0xfea;
178 /* 0x0FEB */ u8 field_0xfeb;
179 /* 0x0FEC */ u8 field_0xfec;
180 /* 0x0FED */ u8 field_0xfed;
181 /* 0x0FF0 */ u32 field_0xff0;
182 /* 0x0FF4 */ u8 field_0xff4;
183 /* 0x0FF5 */ u8 field_0xff5;
184 /* 0x0FF6 */ u8 field_0xff6;
185 /* 0x0FF7 */ u8 field_0xff7;
186 /* 0x0FF8 */ JPABaseEmitter* field_0xff8[2];
187 /* 0x1000 */ f32 field_0x1000;
188 /* 0x1004 */ f32 field_0x1004;
189 /* 0x1008 */ u16 field_0x1008;
190 /* 0x100A */ u16 field_0x100a;
191 /* 0x100C */ u16 field_0x100c;
192 /* 0x100E */ u8 field_0x100e;
193 /* 0x100F */ u8 field_0x100f;
194 /* 0x1010 */ JPABaseEmitter* field_0x1010[2];
195 /* 0x1018 */ JPABaseEmitter* field_0x1018[2];
196 /* 0x1010 */ JPABaseEmitter* field_0x1020[3];
200 /* 0x1038 */ s8 field_0x1038;
201 /* 0x1039 */ s8 field_0x1039;
202 /* 0x103C */ cXyz field_0x103c;
203 /* 0x1048 */ cXyz field_0x1048;
204 /* 0x1054 */ cXyz field_0x1054;
207 /* 0x10A0 */ cXyz field_0x10a0;
208 /* 0x10AC */ int field_0x10ac;
209 /* 0x10B0 */ int field_0x10b0;
210 /* 0x10B4 */ int field_0x10b4;
211 /* 0x10B8 */ f32 field_0x10b8;
212 /* 0x10BC */ int field_0x10bc;
214 /* 0x10C4 */ s16 mMomentCnt[4];
215 /* 0x10CC */ s16 field_0x10cc;
216 /* 0x10CE */ s16 field_0x10ce;
217 /* 0x10D0 */ s16 field_0x10d0;
218 /* 0x10D2 */ u8 field_0x10d2;
219 /* 0x10D3 */ u8 field_0x10d3;
220 /* 0x10D4 */ Bgc_c mBgc;
221};
222
223STATIC_ASSERT(sizeof(daObjBm_c) == 0x1258);
224
225#endif /* D_A_OBJ_BEMOS_H */
Definition J3DMaterial.h:16
Definition J3DModel.h:43
Definition JPAEmitter.h:101
Definition Z2SoundObject.h:38
Definition c_sxyz.h:10
Definition d_bg_s_acch.h:15
Definition d_bg_s_movebg_actor.h:11
Definition d_bg_s_acch.h:247
Definition d_bg_s_gnd_chk.h:19
Definition d_bg_s_lin_chk.h:48
Definition d_bg_s_wtr_chk.h:6
PushPullLabel
Definition d_bg_w_base.h:28
Definition d_cc_d.h:441
Definition d_cc_d.h:461
Definition d_cc_d.h:473
Definition d_cc_d.h:269
Definition d_a_obj_bemos.h:26
f32 field_0x0
Definition d_a_obj_bemos.h:28
f32 field_0x8
Definition d_a_obj_bemos.h:30
f32 field_0x4
Definition d_a_obj_bemos.h:29
f32 field_0xc
Definition d_a_obj_bemos.h:31
Definition d_a_obj_bemos.h:34
State_e mState
Definition d_a_obj_bemos.h:64
static const daObjBm_c::BgcSrc_c M_lin20[]
Definition d_a_obj_bemos.h:1073
f32 field_0x17c
Definition d_a_obj_bemos.h:63
cXyz field_0x64[23]
Definition d_a_obj_bemos.h:61
Bgc_c()
Definition d_a_obj_bemos.cpp:1060
State_e
Definition d_a_obj_bemos.h:36
@ STATE_20_e
Definition d_a_obj_bemos.h:43
@ STATE_0_e
Definition d_a_obj_bemos.h:37
@ STATE_8_e
Definition d_a_obj_bemos.h:41
@ STATE_40_e
Definition d_a_obj_bemos.h:44
@ STATE_10_e
Definition d_a_obj_bemos.h:42
@ STATE_1_e
Definition d_a_obj_bemos.h:38
@ STATE_4_e
Definition d_a_obj_bemos.h:40
@ STATE_2_e
Definition d_a_obj_bemos.h:39
static dBgS_ObjGndChk M_gnd_work[23]
Definition d_a_obj_bemos.h:54
int field_0x178
Definition d_a_obj_bemos.h:62
static daObjBm_c::BgcSrc_c M_lin5[]
Definition d_a_obj_bemos.h:851
int field_0x5c
Definition d_a_obj_bemos.h:59
bool chk_wall_pre(fopAc_ac_c const *, daObjBm_c::BgcSrc_c const *, int, s16)
Definition d_a_obj_bemos.cpp:1150
f32 field_0x60
Definition d_a_obj_bemos.h:60
static dBgS_WtrChk M_wrt_work
Definition d_a_obj_bemos.h:55
void wall_pos(fopAc_ac_c const *, daObjBm_c::BgcSrc_c const *, int, s16, f32)
Definition d_a_obj_bemos.cpp:1099
static dBgS_ObjLinChk M_wall_work[23]
Definition d_a_obj_bemos.h:56
f32 field_0x0[23]
Definition d_a_obj_bemos.h:58
Beamos (Movable Object)
Definition d_a_obj_bemos.h:20
int create1st()
Definition d_a_obj_bemos.cpp:431
void mode_dead()
Definition d_a_obj_bemos.cpp:1052
void actionWarning()
Definition d_a_obj_bemos.cpp:1227
void initActionSwWait()
Definition d_a_obj_bemos.cpp:1156
request_of_phase_process_class mPhase
Definition d_a_obj_bemos.h:133
Z2SoundObjSimple mSound
Definition d_a_obj_bemos.h:205
u8 field_0xff4
Definition d_a_obj_bemos.h:182
void debugDraw()
Definition d_a_obj_bemos.cpp:1731
void initActionAttack()
Definition d_a_obj_bemos.cpp:1320
u8 field_0xfeb
Definition d_a_obj_bemos.h:178
void setCrawCO()
Definition d_a_obj_bemos.cpp:609
JPABaseEmitter * field_0x1020[3]
Definition d_a_obj_bemos.h:196
int field_0x10ac
Definition d_a_obj_bemos.h:208
void actionFindPlayer()
Definition d_a_obj_bemos.cpp:1282
void actionEnBemos()
Definition d_a_obj_bemos.cpp:548
u8 field_0xfca[2]
Definition d_a_obj_bemos.h:168
s8 checkSearchPlayer()
Definition d_a_obj_bemos.cpp:741
s16 field_0xf98
Definition d_a_obj_bemos.h:151
int CreateHeap()
Definition d_a_obj_bemos.cpp:350
s16 field_0xf96
Definition d_a_obj_bemos.h:150
JPABaseEmitter * field_0x1010[2]
Definition d_a_obj_bemos.h:194
mDoExt_btkAnm * mpBtkAnm
Definition d_a_obj_bemos.h:138
s8 field_0xfe7
Definition d_a_obj_bemos.h:174
JPABaseEmitter * field_0x1034
Definition d_a_obj_bemos.h:199
s8 checkFindPlayer()
Definition d_a_obj_bemos.cpp:698
s16 field_0x10ce
Definition d_a_obj_bemos.h:216
u8 field_0x10d2
Definition d_a_obj_bemos.h:218
u16 field_0x1008
Definition d_a_obj_bemos.h:189
s8 field_0x1039
Definition d_a_obj_bemos.h:201
u8 field_0xfe9
Definition d_a_obj_bemos.h:176
f32 field_0x1000
Definition d_a_obj_bemos.h:187
dBgS_ObjAcch mAcch
Definition d_a_obj_bemos.h:143
void effectSet1()
Definition d_a_obj_bemos.cpp:896
void(daObjBm_c::*) procFunc()
Definition d_a_obj_bemos.h:22
s16 field_0xfa4
Definition d_a_obj_bemos.h:157
void calcBeamLenAndAt()
Definition d_a_obj_bemos.cpp:660
cXyz field_0xfb8
Definition d_a_obj_bemos.h:166
s16 field_0xfa0
Definition d_a_obj_bemos.h:155
u8 field_0xfea
Definition d_a_obj_bemos.h:177
cXyz field_0x10a0
Definition d_a_obj_bemos.h:207
s16 field_0xfa6
Definition d_a_obj_bemos.h:158
Z2SoundObjSimple mSound2
Definition d_a_obj_bemos.h:206
u8 field_0xfe6
Definition d_a_obj_bemos.h:173
s16 field_0xfae
Definition d_a_obj_bemos.h:162
void initActionDead()
Definition d_a_obj_bemos.cpp:1555
s16 getSmallGear0Joint()
Definition d_a_obj_bemos.h:70
cXyz field_0x103c
Definition d_a_obj_bemos.h:202
void(daObjBm_c::*) modeFunc()
Definition d_a_obj_bemos.h:23
s16 field_0xf9e
Definition d_a_obj_bemos.h:154
void calcBeamPos()
Definition d_a_obj_bemos.cpp:621
u8 field_0x100e
Definition d_a_obj_bemos.h:192
s16 field_0x10cc
Definition d_a_obj_bemos.h:215
s16 field_0xfa2
Definition d_a_obj_bemos.h:156
void actionDead()
Definition d_a_obj_bemos.cpp:1610
s16 getHeadJoint()
Definition d_a_obj_bemos.h:68
s16 field_0xfb2
Definition d_a_obj_bemos.h:164
s16 getSmallGear1Joint()
Definition d_a_obj_bemos.h:71
u8 field_0x100f
Definition d_a_obj_bemos.h:193
f32 field_0x1004
Definition d_a_obj_bemos.h:188
void mode_wait()
Definition d_a_obj_bemos.cpp:950
s16 field_0xf9c
Definition d_a_obj_bemos.h:153
s16 getBigGearJoint()
Definition d_a_obj_bemos.h:69
u8 field_0xfe4
Definition d_a_obj_bemos.h:171
int field_0x10bc
Definition d_a_obj_bemos.h:212
void initActionWarning()
Definition d_a_obj_bemos.cpp:1210
u16 field_0x100c
Definition d_a_obj_bemos.h:191
JPABaseEmitter * field_0x102c
Definition d_a_obj_bemos.h:197
cXyz field_0x1054
Definition d_a_obj_bemos.h:204
Bgc_c mBgc
Definition d_a_obj_bemos.h:220
static s16 const M_dir_base[4]
Definition d_a_obj_bemos.h:34
void initBaseMtx()
Definition d_a_obj_bemos.cpp:187
void initEffectSet0()
Definition d_a_obj_bemos.cpp:858
u8 field_0xfe8
Definition d_a_obj_bemos.h:175
int field_0x10b0
Definition d_a_obj_bemos.h:209
void mode_walk_init()
Definition d_a_obj_bemos.cpp:982
J3DMaterial * mpMaterial
Definition d_a_obj_bemos.h:165
int Draw()
Definition d_a_obj_bemos.cpp:1693
void mode_dead_init()
Definition d_a_obj_bemos.cpp:1046
void(daObjBm_c::*) effectFunc()
Definition d_a_obj_bemos.h:24
void mode_wait_init()
Definition d_a_obj_bemos.cpp:941
f32 field_0x10b8
Definition d_a_obj_bemos.h:211
u8 getSwNo3()
Definition d_a_obj_bemos.h:75
dCcD_Stts mStts
Definition d_a_obj_bemos.h:145
void effectSet0()
Definition d_a_obj_bemos.cpp:894
cXyz field_0x1048
Definition d_a_obj_bemos.h:203
s16 mJoints[5]
Definition d_a_obj_bemos.h:149
s8 field_0x1038
Definition d_a_obj_bemos.h:200
u8 checkLockOnCamera()
Definition d_a_obj_bemos.h:78
dBgS_AcchCir mAcchCir
Definition d_a_obj_bemos.h:144
dCcD_Sph mSph
Definition d_a_obj_bemos.h:146
mDoExt_bckAnm * mpBckAnm2
Definition d_a_obj_bemos.h:140
u8 field_0xfec
Definition d_a_obj_bemos.h:179
void effect_proc()
Definition d_a_obj_bemos.cpp:812
int Execute(Mtx **)
Definition d_a_obj_bemos.cpp:459
s16 field_0xfa8
Definition d_a_obj_bemos.h:159
u8 field_0xff5
Definition d_a_obj_bemos.h:183
u8 field_0xfed
Definition d_a_obj_bemos.h:180
void initActionFindPlayer()
Definition d_a_obj_bemos.cpp:1262
int field_0x10b4
Definition d_a_obj_bemos.h:210
mDoExt_btkAnm * mpBtkAnm2
Definition d_a_obj_bemos.h:139
u8 getSwNo()
Definition d_a_obj_bemos.h:73
u8 getBeamSearchDist()
Definition d_a_obj_bemos.h:77
u8 field_0xff6
Definition d_a_obj_bemos.h:184
void initActionObjBemos()
Definition d_a_obj_bemos.cpp:521
u32 field_0xff0
Definition d_a_obj_bemos.h:181
mDoExt_bckAnm * mpBckAnm3
Definition d_a_obj_bemos.h:142
void effectEnd()
Definition d_a_obj_bemos.cpp:898
csXyz field_0xfc4
Definition d_a_obj_bemos.h:167
s16 field_0x10d0
Definition d_a_obj_bemos.h:217
dCcD_Cps mCps
Definition d_a_obj_bemos.h:147
s16 getSmallGear2Joint()
Definition d_a_obj_bemos.h:72
u8 field_0x10d3
Definition d_a_obj_bemos.h:219
u8 getMoveType()
Definition d_a_obj_bemos.h:67
f32 getSearchDistance()
Definition d_a_obj_bemos.cpp:784
u8 field_0xff7
Definition d_a_obj_bemos.h:185
s16 field_0xfb0
Definition d_a_obj_bemos.h:163
void effectWait()
Definition d_a_obj_bemos.cpp:856
u8 getSearchDist()
Definition d_a_obj_bemos.h:76
int Create()
Definition d_a_obj_bemos.cpp:277
JPABaseEmitter * field_0xff8[2]
Definition d_a_obj_bemos.h:186
int Delete()
Definition d_a_obj_bemos.cpp:1826
u8 getSwNo2()
Definition d_a_obj_bemos.h:74
void actionObjBemos()
Definition d_a_obj_bemos.cpp:598
int check_to_walk()
Definition d_a_obj_bemos.cpp:900
void actionSwWait()
Definition d_a_obj_bemos.cpp:1167
void mode_afl()
Definition d_a_obj_bemos.cpp:1041
JPABaseEmitter * field_0x1018[2]
Definition d_a_obj_bemos.h:195
u8 field_0xfe5
Definition d_a_obj_bemos.h:172
J3DModel * mpModel2
Definition d_a_obj_bemos.h:137
void setBaseMtx()
Definition d_a_obj_bemos.cpp:195
s16 field_0xfac
Definition d_a_obj_bemos.h:161
cXyz field_0xfcc
Definition d_a_obj_bemos.h:169
void clr_moment_cnt()
Definition d_a_obj_bemos.cpp:1054
void mode_walk()
Definition d_a_obj_bemos.cpp:989
mDoExt_bckAnm * mpBckAnm
Definition d_a_obj_bemos.h:136
s16 mMomentCnt[4]
Definition d_a_obj_bemos.h:214
f32 getBeamSearchDistance()
Definition d_a_obj_bemos.cpp:798
JPABaseEmitter * field_0x1030
Definition d_a_obj_bemos.h:198
u16 field_0x100a
Definition d_a_obj_bemos.h:190
void actionAttack()
Definition d_a_obj_bemos.cpp:1368
void main_proc_call()
Definition d_a_obj_bemos.cpp:504
dBgW::PushPullLabel mPPLabel
Definition d_a_obj_bemos.h:213
static fopAc_ac_c * PPCallBack(fopAc_ac_c *, fopAc_ac_c *, s16, dBgW_Base::PushPullLabel)
Definition d_a_obj_bemos.cpp:118
cXyz field_0xfd8
Definition d_a_obj_bemos.h:170
J3DModel * mpModel3
Definition d_a_obj_bemos.h:141
s16 field_0xfaa
Definition d_a_obj_bemos.h:160
dCcD_Cyl mCyl[4]
Definition d_a_obj_bemos.h:148
void initActionEnBemos()
Definition d_a_obj_bemos.cpp:513
mDoExt_brkAnm * mpBrkAnm
Definition d_a_obj_bemos.h:135
s16 field_0xf9a
Definition d_a_obj_bemos.h:152
J3DModel * mpModel
Definition d_a_obj_bemos.h:134
Definition f_op_actor.h:230
Definition m_Do_ext.h:151
Definition m_Do_ext.h:94
Definition m_Do_ext.h:65
STATIC_ASSERT(sizeof(daObjBm_c)==0x1258)
f32 Mtx[3][4]
Definition mtx.h:25
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
u32 fopAcM_GetParamBit(void *ac, u8 shift, u8 bit)
Definition f_op_actor_mng.h:196
Definition c_xyz.h:7
Definition c_phase.h:17