summaryrefslogtreecommitdiff
path: root/src/d/d_ky_thunder.cpp
blob: 2bfaf8446edef800a36b90d1ac13c290289dc5d2 (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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
//
// Generated By: dol2asm
// Translation Unit: d/d_ky_thunder
//

#include "d/d_ky_thunder.h"
#include "dol2asm.h"
#include "dolphin/types.h"

//
// Types:
//

struct mDoMtx_stack_c {
    static u8 now[48];
};

struct J3DAnmTevRegKey {};

struct J3DMaterialTable {
    /* 8032F880 */ void removeTevRegAnimator(J3DAnmTevRegKey*);
};

struct mDoExt_brkAnm {
    /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
    /* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
};

struct mDoExt_baseAnm {
    /* 8000D428 */ void play();
};

struct kankyo_class {};

struct dThunder_c {
    /* 801ADF58 */ void createHeap();
    /* 801ADFB4 */ void adjustHeap();
    /* 801AE458 */ void create();
};

struct dRes_info_c {};

struct dRes_control_c {
    /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};

struct cXyz {
    /* 80009184 */ ~cXyz();
};

struct Vec {};

struct Z2EnvSeMgr {
    /* 802C7E68 */ void startFarThunderSe(Vec*, s8);
};

struct JMath {
    static u8 sincosTable_[65536];
};

struct JKRSolidHeap {};

struct J3DModelData {};

struct J3DModel {};

struct J3DFrameCtrl {
    /* 803283FC */ void init(s16);
};

//
// Forward References:
//

extern "C" void createHeap__10dThunder_cFv();
extern "C" void adjustHeap__10dThunder_cFv();
extern "C" static void dThunder_Draw__FP10dThunder_c();
extern "C" static void dThunder_Execute__FP10dThunder_c();
extern "C" static bool dThunder_IsDelete__FP10dThunder_c();
extern "C" static void dThunder_Delete__FP10dThunder_c();
extern "C" static void dThunder_Create__FP12kankyo_class();
extern "C" void create__10dThunder_cFv();
extern "C" extern char const* const d_d_ky_thunder__stringBase0;
extern "C" extern void* g_profile_KY_THUNDER[10 + 1 /* padding */];

//
// External References:
//

extern "C" void __dt__4cXyzFv();
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_createSolidHeapFromGameToCurrent__FUlUl();
extern "C" void mDoExt_adjustSolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_destroySolidHeap__FP12JKRSolidHeap();
extern "C" void mDoExt_restoreCurrentHeap__Fv();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void fopKyM_Delete__FPv();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rndF__Ff();
extern "C" void cM_rndFX__Ff();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
extern "C" void startFarThunderSe__10Z2EnvSeMgrFP3VecSc();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
extern "C" void DCStoreRangeNoSync();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void __register_global_object();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
extern "C" void strcmp();
extern "C" extern void* __vt__12J3DFrameCtrl[3];
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u8 g_mEnvSeMgr[780];
extern "C" extern u8 g_Counter[12 + 4 /* padding */];
extern "C" extern u8 j3dSys[284];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" extern u8 struct_80451070[8];

//
// Declarations:
//

/* 801ADF58-801ADFB4 1A8898 005C+00 1/1 0/0 0/0 .text            createHeap__10dThunder_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dThunder_c::createHeap() {
    nofralloc
#include "asm/d/d_ky_thunder/createHeap__10dThunder_cFv.s"
}
#pragma pop

/* 801ADFB4-801AE000 1A88F4 004C+00 1/1 0/0 0/0 .text            adjustHeap__10dThunder_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dThunder_c::adjustHeap() {
    nofralloc
#include "asm/d/d_ky_thunder/adjustHeap__10dThunder_cFv.s"
}
#pragma pop

/* ############################################################################################## */
/* 8042E7F0-8042E7FC 05B510 000C+00 1/1 0/0 0/0 .bss             @3816 */
static u8 lit_3816[12];

/* 8042E7FC-8042E808 05B51C 000C+00 1/1 0/0 0/0 .bss             @3818 */
static u8 lit_3818[12];

/* 8042E808-8042E814 05B528 000C+00 1/1 0/0 0/0 .bss l_offsetPos$localstatic3$draw__10dThunder_cFv
 */
static f32 data_8042E808[3];

/* 8042E814-8042E820 05B534 000C+00 1/1 0/0 0/0 .bss l_scale$localstatic5$draw__10dThunder_cFv */
static f32 data_8042E814[3];

/* 80453E70-80453E74 002470 0004+00 2/2 0/0 0/0 .sdata2          @3882 */
SECTION_SDATA2 static u8 lit_3882[4] = {
    0x00,
    0x00,
    0x00,
    0x00,
};

/* 80453E74-80453E78 002474 0004+00 1/1 0/0 0/0 .sdata2          @3883 */
SECTION_SDATA2 static f32 lit_3883 = 40.0f;

/* 80453E78-80453E7C 002478 0004+00 1/1 0/0 0/0 .sdata2          @3884 */
SECTION_SDATA2 static f32 lit_3884 = -250.0f;

/* 80453E7C-80453E80 00247C 0004+00 3/3 0/0 0/0 .sdata2          @3885 */
SECTION_SDATA2 static f32 lit_3885 = 1.0f;

/* 801AE000-801AE19C 1A8940 019C+00 1/0 0/0 0/0 .text            dThunder_Draw__FP10dThunder_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dThunder_Draw(dThunder_c* param_0) {
    nofralloc
#include "asm/d/d_ky_thunder/dThunder_Draw__FP10dThunder_c.s"
}
#pragma pop

/* ############################################################################################## */
/* 80453E80-80453E84 002480 0004+00 2/2 0/0 0/0 .sdata2          @3923 */
SECTION_SDATA2 static f32 lit_3923 = 1.0f / 10.0f;

/* 80453E84-80453E88 002484 0004+00 1/1 0/0 0/0 .sdata2          @3924 */
SECTION_SDATA2 static f32 lit_3924 = 1.0f / 20.0f;

/* 80453E88-80453E8C 002488 0004+00 1/1 0/0 0/0 .sdata2          @3925 */
SECTION_SDATA2 static f32 lit_3925 = 0.017000000923871994f;

/* 80453E8C-80453E90 00248C 0004+00 1/1 0/0 0/0 .sdata2          @3926 */
SECTION_SDATA2 static f32 lit_3926 = 9.999999747378752e-06f;

/* 80453E90-80453E94 002490 0004+00 1/1 0/0 0/0 .sdata2          @3927 */
SECTION_SDATA2 static f32 lit_3927 = 60.0f;

/* 80453E94-80453E98 002494 0004+00 1/1 0/0 0/0 .sdata2          @3928 */
SECTION_SDATA2 static f32 lit_3928 = 1.0f / 100.0f;

/* 80453E98-80453E9C 002498 0004+00 1/1 0/0 0/0 .sdata2          @3929 */
SECTION_SDATA2 static f32 lit_3929 = 1.0f / 50.0f;

/* 801AE19C-801AE374 1A8ADC 01D8+00 1/0 0/0 0/0 .text            dThunder_Execute__FP10dThunder_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dThunder_Execute(dThunder_c* param_0) {
    nofralloc
#include "asm/d/d_ky_thunder/dThunder_Execute__FP10dThunder_c.s"
}
#pragma pop

/* 801AE374-801AE37C 1A8CB4 0008+00 1/0 0/0 0/0 .text            dThunder_IsDelete__FP10dThunder_c
 */
static bool dThunder_IsDelete(dThunder_c* param_0) {
    return true;
}

/* 801AE37C-801AE3FC 1A8CBC 0080+00 1/0 0/0 0/0 .text            dThunder_Delete__FP10dThunder_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dThunder_Delete(dThunder_c* param_0) {
    nofralloc
#include "asm/d/d_ky_thunder/dThunder_Delete__FP10dThunder_c.s"
}
#pragma pop

/* 801AE3FC-801AE458 1A8D3C 005C+00 1/0 0/0 0/0 .text            dThunder_Create__FP12kankyo_class
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dThunder_Create(kankyo_class* param_0) {
    nofralloc
#include "asm/d/d_ky_thunder/dThunder_Create__FP12kankyo_class.s"
}
#pragma pop

/* ############################################################################################## */
/* 80394F40-80394F40 0215A0 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394F40 = "Always";
SECTION_DEAD static char const* const stringBase_80394F47 = "R_SP30";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80394F4E = "\0";
#pragma pop

/* 80453E9C-80453EA0 00249C 0004+00 1/1 0/0 0/0 .sdata2          @4079 */
SECTION_SDATA2 static f32 lit_4079 = 0.5f;

/* 80453EA0-80453EA4 0024A0 0004+00 1/1 0/0 0/0 .sdata2          @4080 */
SECTION_SDATA2 static f32 lit_4080 = 0.25f;

/* 80453EA4-80453EA8 0024A4 0004+00 1/1 0/0 0/0 .sdata2          @4081 */
SECTION_SDATA2 static f32 lit_4081 = 14.0f;

/* 80453EA8-80453EAC 0024A8 0004+00 1/1 0/0 0/0 .sdata2          @4082 */
SECTION_SDATA2 static f32 lit_4082 = 20.0f;

/* 80453EAC-80453EB0 0024AC 0004+00 1/1 0/0 0/0 .sdata2          @4083 */
SECTION_SDATA2 static f32 lit_4083 = 60000.0f;

/* 80453EB0-80453EB4 0024B0 0004+00 1/1 0/0 0/0 .sdata2          @4084 */
SECTION_SDATA2 static f32 lit_4084 = -5000.0f;

/* 80453EB4-80453EB8 0024B4 0004+00 1/1 0/0 0/0 .sdata2          @4085 */
SECTION_SDATA2 static f32 lit_4085 = 2000.0f;

/* 80453EB8-80453EBC 0024B8 0004+00 1/1 0/0 0/0 .sdata2          @4086 */
SECTION_SDATA2 static f32 lit_4086 = 24.0f;

/* 80453EBC-80453EC0 0024BC 0004+00 1/1 0/0 0/0 .sdata2          @4087 */
SECTION_SDATA2 static f32 lit_4087 = 2500.0f;

/* 80453EC0-80453EC4 0024C0 0004+00 1/1 0/0 0/0 .sdata2          @4088 */
SECTION_SDATA2 static f32 lit_4088 = 6000.0f;

/* 80453EC4-80453EC8 0024C4 0004+00 1/1 0/0 0/0 .sdata2          @4089 */
SECTION_SDATA2 static f32 lit_4089 = 3.0f / 20.0f;

/* 80453EC8-80453ED0 0024C8 0004+04 1/1 0/0 0/0 .sdata2          @4090 */
SECTION_SDATA2 static f32 lit_4090[1 + 1 /* padding */] = {
    1.0f / 5.0f,
    /* padding */
    0.0f,
};

/* 80453ED0-80453ED8 0024D0 0008+00 1/1 0/0 0/0 .sdata2          @4091 */
SECTION_SDATA2 static f64 lit_4091 = 0.5;

/* 80453ED8-80453EDC 0024D8 0004+00 1/1 0/0 0/0 .sdata2          @4092 */
SECTION_SDATA2 static f32 lit_4092 = -1.0f;

/* 80453EDC-80453EE0 0024DC 0004+00 1/1 0/0 0/0 .sdata2          @4093 */
SECTION_SDATA2 static f32 lit_4093 = 100000.0f;

/* 80453EE0-80453EE4 0024E0 0004+00 1/1 0/0 0/0 .sdata2          @4094 */
SECTION_SDATA2 static f32 lit_4094 = 19635.0f;

/* 80453EE4-80453EE8 0024E4 0004+00 1/1 0/0 0/0 .sdata2          @4095 */
SECTION_SDATA2 static f32 lit_4095 = 260.0f;

/* 80453EE8-80453EEC 0024E8 0004+00 1/1 0/0 0/0 .sdata2          @4096 */
SECTION_SDATA2 static f32 lit_4096 = 4592.0f;

/* 80453EEC-80453EF0 0024EC 0004+00 1/1 0/0 0/0 .sdata2          @4097 */
SECTION_SDATA2 static f32 lit_4097 = 1507.0f;

/* 80453EF0-80453EF4 0024F0 0004+00 1/1 0/0 0/0 .sdata2          @4098 */
SECTION_SDATA2 static f32 lit_4098 = 100.0f;

/* 80453EF4-80453EF8 0024F4 0004+00 1/1 0/0 0/0 .sdata2          @4099 */
SECTION_SDATA2 static f32 lit_4099 = 3.0f / 10.0f;

/* 801AE458-801AE938 1A8D98 04E0+00 1/1 0/0 0/0 .text            create__10dThunder_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dThunder_c::create() {
    nofralloc
#include "asm/d/d_ky_thunder/create__10dThunder_cFv.s"
}
#pragma pop

/* ############################################################################################## */
/* 803BC1D8-803BC1EC -00001 0014+00 1/0 0/0 0/0 .data            l_dThunder_Method */
SECTION_DATA static void* l_dThunder_Method[5] = {
    (void*)dThunder_Create__FP12kankyo_class, (void*)dThunder_Delete__FP10dThunder_c,
    (void*)dThunder_Execute__FP10dThunder_c,  (void*)dThunder_IsDelete__FP10dThunder_c,
    (void*)dThunder_Draw__FP10dThunder_c,
};

/* 803BC1EC-803BC218 -00001 0028+04 0/0 0/0 1/0 .data            g_profile_KY_THUNDER */
SECTION_DATA extern void* g_profile_KY_THUNDER[10 + 1 /* padding */] = {
    (void*)0xFFFFFFFD,
    (void*)0x0007FFFD,
    (void*)0x02D90000,
    (void*)&g_fpcLf_Method,
    (void*)0x00000170,
    (void*)NULL,
    (void*)NULL,
    (void*)&g_fopKy_Method,
    (void*)0x00060000,
    (void*)&l_dThunder_Method,
    /* padding */
    NULL,
};

/* 80394F40-80394F40 0215A0 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */