summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_bgn.h
blob: dd66518986c459e9445687432ddca9a728b0bd7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#ifndef D_A_BGN_H
#define D_A_BGN_H

#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_cc_d.h"
#include "d/d_particle.h"

extern J3DDrawBuffer* dComIfGd_getOpaListSky();

// This class seems like it would be defined in m_Do_ext.h, but the weak function ordering indicates it's from a different header.
// Strangely, mDoExt_J3DModelPacketS::setMaterial is defined inside of the d_a_bgn.cpp REL, indicating the class may be from this header.
// It's unclear why the developers would do it this way.
class mDoExt_J3DModelPacketS : public J3DPacket {
public:
    mDoExt_J3DModelPacketS() {}
    ~mDoExt_J3DModelPacketS() {}

    void setModel(J3DModel* model) { mpModel = model; }
    void update() { dComIfGd_getOpaListSky()->entryImm(this, 0); }
    
    void draw();
    void setMaterial();

public:
    /* 0x10 */ J3DModel* mpModel;
}; // Size: 0x14

struct part_s {
    /* 0x000 */ J3DModel* mpPartModel;
    /* 0x004 */ mDoExt_J3DModelPacketS m004;
    /* 0x018 */ dKy_tevstr_c mPartTevStr;
    /* 0x0C8 */ s16 m0C8;
    /* 0x0C8 */ u8 m0CA[0x0CC - 0x0CA];
    /* 0x0CC */ f32 m0CC;
    /* 0x0D0 */ s16 mPartArrowHitFlashTimer;
    /* 0x0D2 */ s8 m0D2;
    /* 0x0D3 */ u8 m0D3[0x0D4 - 0x0D3];
    /* 0x0D4 */ cXyz m0D4;
    /* 0x0E0 */ csXyz m0E0;
    /* 0x0E6 */ u8 m0E6[0x0F4 - 0x0E6];
    /* 0x0F4 */ f32 m0F4;
    /* 0x0F8 */ dCcD_Sph mPartSph;
    /* 0x224 */ cXyz m224;
#if VERSION > VERSION_DEMO
    /* 0x230 */ JPABaseEmitter* mpPartArrowHitEmitter1;
    /* 0x234 */ JPABaseEmitter* mpPartArrowHitEmitter2;
    /* 0x238 */ s16 mPartArrowHitEffectTimer;
    /* 0x23A */ u8 m23A[0x23C - 0x23A];
#endif
}; // Size: 0x23C

struct bgn_himo_s {
    /* 0x000 */ cXyz m000[60];
};

struct move_s {
    /* 0x000 */ bgn_himo_s mHimo;
    /* 0x2D0 */ u8 m2D0;
    /* 0x2D1 */ u8 m2D1[0x2D4 - 0x2D1];
    /* 0x2D4 */ cXyz m2D4;
    /* 0x2E0 */ csXyz m2E0;
    /* 0x2E6 */ u8 m2E6[0x2E8 - 0x2E6];
    /* 0x2E8 */ f32 m2E8;
    /* 0x2EC */ f32 m2EC;
    /* 0x2F0 */ u8 m2F0[0x2F4 - 0x2F0];
    /* 0x2F4 */ f32 m2F4;
    /* 0x2F8 */ s16 m2F8;
    /* 0x2FA */ s16 m2FA;
    /* 0x2FC */ s16 m2FC;
    /* 0x2FE */ s16 m2FE;
    /* 0x300 */ s16 m300;
    /* 0x302 */ u8 m302[0x304 - 0x302];
    /* 0x304 */ f32 m304;
    /* 0x308 */ s8 m308;
    /* 0x309 */ u8 m309[0x30C - 0x309];
}; // Size: 0x30C

struct bgn_class {
    /* 0x0000 */ fopEn_enemy_c actor;
    /* 0x02AC */ request_of_phase_process_class mPhase;
    /* 0x02B4 */ u8 m02B4;
    /* 0x02B5 */ s8 m02B5;
    /* 0x02B6 */ u8 m02B6[0x02B8 - 0x02B6];
    /* 0x02B8 */ mDoExt_McaMorf* mpMorf;
    /* 0x02BC */ J3DModel* mpChestModel;
    /* 0x02C0 */ mDoExt_J3DModelPacketS m02C0;
#if VERSION > VERSION_DEMO
    /* 0x02D4 */ JPABaseEmitter* mpArrowHitEmitter1;
    /* 0x02D8 */ JPABaseEmitter* mpArrowHitEmitter2;
    /* 0x02DC */ s16 mArrowHitEffectTimer;
    /* 0x02DE */ u8 m02DE[0x02E0 - 0x02DE];
#endif
    /* 0x02E0 */ J3DModel* mpJyakutenCModel; // Weak point (1 hit left)
    /* 0x02E4 */ J3DModel* mpJyakutenBModel; // Weak point (2 hits left)
    /* 0x02E8 */ J3DModel* mpJyakutenAModel; // Weak point (3 hits left)
    /* 0x02EC */ mDoExt_brkAnm* mJyakutenCBrkAnm;
    /* 0x02F0 */ mDoExt_brkAnm* mJyakutenBBrkAnm;
    /* 0x02F4 */ u8 m02F4[0x02F8 - 0x02F4];
    /* 0x02F8 */ s16 m02F8;
    /* 0x02FA */ u8 m02FA[0x02FC - 0x02FA];
    /* 0x02FC */ f32 m02FC;
    /* 0x0300 */ s16 mArrowHitFlashTimer;
    /* 0x0302 */ s16 m0302;
    /* 0x0304 */ s16 m0304;
    /* 0x0306 */ u8 m0306[0x0308 - 0x0306];
    /* 0x0308 */ cXyz m0308;
    /* 0x0314 */ part_s mHeadParts[2];
    /* 0x078C */ part_s mPelvisParts[2];
    /* 0x0C04 */ part_s mLeftArmParts[21];
    /* 0x3AF0 */ part_s mRightArmParts[21];
    /* 0x69DC */ part_s mLeftLegParts[4];
    /* 0x72CC */ part_s mRightLegParts[4];
    /* 0x7BBC */ part_s mTailParts[21];
    /* 0xAAA8 */ move_s mAAA8[8];
    /* 0xC308 */ cXyz mC308;
    /* 0xC314 */ csXyz mC314;
    /* 0xC31A */ s16 mC31A;
    /* 0xC31C */ u8 mC31C[0xC324 - 0xC31C];
    /* 0xC324 */ f32 mC324[2];
    /* 0xC32C */ f32 mC32C[2];
    /* 0xC334 */ f32 mC334;
    /* 0xC338 */ f32 mC338;
    /* 0xC33C */ cXyz mC33C[8];
    /* 0xC39C */ mDoExt_3DlineMat1_c mBlueRopeMat;
    /* 0xC3D8 */ mDoExt_3DlineMat1_c mRedRopeMat;
#if VERSION > VERSION_DEMO
    /* 0xC414 */ mDoExt_3DlineMat1_c mDefeatCSRopeMat; // Only used when Puppet Ganon disappears
    /* 0xC450 */ cXyz mC450[60];
    /* 0xC720 */ s8 mC720;
    /* 0xC721 */ u8 mC721[0xC724 - 0xC721];
    /* 0xC724 */ f32 mC724;
#endif
    /* 0xC728 */ cXyz mC728;
    /* 0xC734 */ cXyz mC734;
    /* 0xC740 */ u8 mC740[0xC744 - 0xC740];
    /* 0xC744 */ s16 mC744;
    /* 0xC746 */ s16 mC746;
    /* 0xC748 */ s16 mC748;
    /* 0xC74A */ s16 mC74A;
    /* 0xC74C */ s16 mC74C;
    /* 0xC74E */ s16 mC74E;
    /* 0xC750 */ s16 mC750;
    /* 0xC752 */ s16 mC752;
    /* 0xC754 */ s16 mC754;
    /* 0xC756 */ u8 mC756[0xC758 - 0xC756];
    /* 0xC758 */ cXyz mC758;
    /* 0xC764 */ s16 mC764;
    /* 0xC766 */ u8 mC766[0xC76C - 0xC766];
    /* 0xC76C */ f32 mC76C;
    /* 0xC770 */ s16 mC770;
    /* 0xC772 */ u8 mC772[0xC774 - 0xC772];
    /* 0xC774 */ f32 mC774;
    /* 0xC778 */ s8 mC778;
    /* 0xC779 */ s8 mC779;
    /* 0xC772 */ u8 mC77A[0xC77C - 0xC77A];
    /* 0xC77C */ cXyz mC77C;
    /* 0xC788 */ cXyz mC788;
    /* 0xC794 */ cXyz mC794;
    /* 0xC7A0 */ cXyz mC7A0;
    /* 0xC7AC */ s16 mC7AC[5];
    /* 0xC7B6 */ s16 mC7B6;
    /* 0xC7B8 */ s16 mC7B8;
    /* 0xC7BA */ u8 mC7BA[0xC7BC - 0xC7BA];
    /* 0xC7BC */ f32 mC7BC;
    /* 0xC7C0 */ dCcD_Stts mStts;
    /* 0xC7FC */ dCcD_Sph mC7FC;
    /* 0xC928 */ dCcD_Sph mCoreSph;
    /* 0xCA54 */ cXyz mCA54;
#if VERSION > VERSION_DEMO
    /* 0xCA60 */ s16 mCA60;
#endif
    /* 0xCA62 */ s8 mCSMode;
    /* 0xCA63 */ u8 mCA63[0xCA64 - 0xCA63];
    /* 0xCA64 */ s16 mKSubCount;
    /* 0xCA66 */ u8 mCA66[0xCA68 - 0xCA66];
    /* 0xCA68 */ cXyz mCSCamEye;
    /* 0xCA74 */ cXyz mCA74;
    /* 0xCA80 */ cXyz mCSCamCenter;
    /* 0xCA8C */ u8 mCA8C[0xCA98 - 0xCA8C];
    /* 0xCA98 */ f32 mCA98;
    /* 0xCA9C */ f32 mCA9C;
    /* 0xCAA0 */ f32 mCSFovY;
    /* 0xCAA4 */ J3DModel* mpWater0Model;
    /* 0xCAA8 */ J3DModel* mpWater1Model;
    /* 0xCAAC */ dKy_tevstr_c mWaterTevStr;
    /* 0xCB5C */ J3DModel* mpRoomReflectionModel;
    /* 0xCB60 */ mDoExt_J3DModelPacketS mCB60;
    /* 0xCB74 */ dKy_tevstr_c mRoomTevStr;
    /* 0xCC24 */ mDoExt_J3DModelPacketS mCC24;
    /* 0xCC38 */ s8 mCC38;
    /* 0xCC39 */ u8 mCC39[0xCC3C - 0xCC39];
    /* 0xCC3C */ dPa_smokeEcallBack mPunchSmokeCb[2];
    /* 0xCC7C */ s8 mKeeseSpawnNum;
    /* 0xCC7D */ u8 mCC7D[0xCC80 - 0xCC7D];
    /* 0xCC80 */ f32 mCC80;
    /* 0xCC84 */ f32 mCC84;
    /* 0xCC88 */ f32 mCC88;
    /* 0xCC8C */ JPABaseEmitter* mCC8C;
    /* 0xCC90 */ s8 mCC90;
    /* 0xCC91 */ u8 mCC91;
    /* 0xCC92 */ u8 mCC92[0xCC94 - 0xCC92];
}; // Size: 0xCC94

#endif /* D_A_BGN_H */