summaryrefslogtreecommitdiff
path: root/src/d/d_npc_lib.cpp
blob: 89f7891dd3a6f77ee93c329fe266204bdacfec5c (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
//
// Generated By: dol2asm
// Translation Unit: d/d_npc_lib
//

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

//
// Types:
//

struct csXyz {
    /* 80018BD0 */ ~csXyz();
    /* 80112C80 */ csXyz();
    /* 8026745C */ void operator+=(csXyz&);

    static u8 Zero[4];
};

struct Vec {};

struct cXyz {
    /* 80009184 */ ~cXyz();
    /* 800125DC */ cXyz();
    /* 80266B34 */ void operator-(Vec const&) const;
    /* 80266EF4 */ void normalize();
    /* 802670AC */ void isZero() const;
};

struct mDoMtx_stack_c {
    /* 8000CD64 */ void transS(cXyz const&);
    /* 8000CE9C */ void XYZrotS(csXyz const&);
    /* 8000CF44 */ void ZXYrotM(csXyz const&);

    static u8 now[48];
};

struct fopAc_ac_c {};

struct J3DModel {};

struct dNpcLib_lookat_c {
    /* 80251314 */ dNpcLib_lookat_c();
    /* 8025140C */ void init(J3DModel*, int*, csXyz*, csXyz*);
    /* 80251534 */ void action(cXyz, cXyz, fopAc_ac_c*, f32 (*)[4], int);
    /* 80251B60 */ void dbView();
    /* 80251B64 */ void setPrm();
    /* 80251EF8 */ void update();
    /* 80252018 */ void limitter(s16*, s16, s16, s16);
    /* 80252094 */ ~dNpcLib_lookat_c();
};

//
// Forward References:
//

extern "C" void __ct__16dNpcLib_lookat_cFv();
extern "C" void init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz();
extern "C" void action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi();
extern "C" void dbView__16dNpcLib_lookat_cFv();
extern "C" void setPrm__16dNpcLib_lookat_cFv();
extern "C" void update__16dNpcLib_lookat_cFv();
extern "C" void limitter__16dNpcLib_lookat_cFPssss();
extern "C" void __dt__16dNpcLib_lookat_cFv();

//
// External References:
//

extern "C" void __dt__4cXyzFv();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void XYZrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void __ct__4cXyzFv();
extern "C" void __dt__5csXyzFv();
extern "C" void __ct__5csXyzFv();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void normalize__4cXyzFv();
extern "C" void isZero__4cXyzCFv();
extern "C" void __apl__5csXyzFR5csXyz();
extern "C" void cM_atan2s__Fff();
extern "C" void __dl__FPv();
extern "C" void PSMTXCopy();
extern "C" void PSMTXConcat();
extern "C" void PSMTXInverse();
extern "C" void PSMTXMultVec();
extern "C" void PSVECSquareMag();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_22();
extern "C" void _savegpr_23();
extern "C" void _savegpr_25();
extern "C" void _restgpr_22();
extern "C" void _restgpr_23();
extern "C" void _restgpr_25();
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u32 __float_nan;
extern "C" u8 Zero__5csXyz[4];
extern "C" extern u8 data_80451164[4];

//
// Declarations:
//

/* ############################################################################################## */
/* 803C2B88-803C2B98 01FCA8 000C+04 2/2 0/0 0/0 .data            __vt__16dNpcLib_lookat_c */
SECTION_DATA extern void* __vt__16dNpcLib_lookat_c[3 + 1 /* padding */] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)__dt__16dNpcLib_lookat_cFv,
    /* padding */
    NULL,
};

/* 80251314-8025140C 24BC54 00F8+00 0/0 0/0 4/4 .text            __ct__16dNpcLib_lookat_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dNpcLib_lookat_c::dNpcLib_lookat_c() {
    nofralloc
#include "asm/d/d_npc_lib/__ct__16dNpcLib_lookat_cFv.s"
}
#pragma pop

/* 8025140C-80251534 24BD4C 0128+00 0/0 0/0 2/2 .text
 * init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz          */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dNpcLib_lookat_c::init(J3DModel* param_0, int* param_1, csXyz* param_2, csXyz* param_3) {
    nofralloc
#include "asm/d/d_npc_lib/init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz.s"
}
#pragma pop

/* ############################################################################################## */
/* 80454DE8-80454DEC 0033E8 0004+00 3/3 0/0 0/0 .sdata2          @3864 */
SECTION_SDATA2 static u8 lit_3864[4] = {
    0x00,
    0x00,
    0x00,
    0x00,
};

/* 80454DEC-80454DF0 0033EC 0004+00 1/1 0/0 0/0 .sdata2          @3865 */
SECTION_SDATA2 static f32 lit_3865 = 1.0f;

/* 80454DF0-80454DF8 0033F0 0008+00 2/2 0/0 0/0 .sdata2          @3866 */
SECTION_SDATA2 static f64 lit_3866 = 0.5;

/* 80454DF8-80454E00 0033F8 0008+00 2/2 0/0 0/0 .sdata2          @3867 */
SECTION_SDATA2 static f64 lit_3867 = 3.0;

/* 80454E00-80454E08 003400 0008+00 2/2 0/0 0/0 .sdata2          @3868 */
SECTION_SDATA2 static u8 lit_3868[8] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* 80454E08-80454E10 003408 0004+04 1/1 0/0 0/0 .sdata2          @3869 */
SECTION_SDATA2 static f32 lit_3869[1 + 1 /* padding */] = {
    0.5f,
    /* padding */
    0.0f,
};

/* 80454E10-80454E18 003410 0008+00 2/2 0/0 0/0 .sdata2          @3873 */
SECTION_SDATA2 static f64 lit_3873 = 4503601774854144.0 /* cast s32 to float */;

/* 80251534-80251B60 24BE74 062C+00 0/0 0/0 2/2 .text
 * action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi     */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2,
                                  f32 (*param_3)[4], int param_4) {
    nofralloc
#include "asm/d/d_npc_lib/action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi.s"
}
#pragma pop

/* 80251B60-80251B64 24C4A0 0004+00 0/0 0/0 2/2 .text            dbView__16dNpcLib_lookat_cFv */
void dNpcLib_lookat_c::dbView() {
    /* empty function */
}

/* ############################################################################################## */
/* 80454E18-80454E20 003418 0004+04 1/1 0/0 0/0 .sdata2          @3970 */
SECTION_SDATA2 static f32 lit_3970[1 + 1 /* padding */] = {
    2.0f / 5.0f,
    /* padding */
    0.0f,
};

/* 80251B64-80251EF8 24C4A4 0394+00 1/1 0/0 0/0 .text            setPrm__16dNpcLib_lookat_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dNpcLib_lookat_c::setPrm() {
    nofralloc
#include "asm/d/d_npc_lib/setPrm__16dNpcLib_lookat_cFv.s"
}
#pragma pop

/* 80251EF8-80252018 24C838 0120+00 1/1 0/0 0/0 .text            update__16dNpcLib_lookat_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dNpcLib_lookat_c::update() {
    nofralloc
#include "asm/d/d_npc_lib/update__16dNpcLib_lookat_cFv.s"
}
#pragma pop

/* 80252018-80252094 24C958 007C+00 1/1 0/0 0/0 .text            limitter__16dNpcLib_lookat_cFPssss
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dNpcLib_lookat_c::limitter(s16* param_0, s16 param_1, s16 param_2, s16 param_3) {
    nofralloc
#include "asm/d/d_npc_lib/limitter__16dNpcLib_lookat_cFPssss.s"
}
#pragma pop

/* 80252094-8025217C 24C9D4 00E8+00 1/0 0/0 0/0 .text            __dt__16dNpcLib_lookat_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dNpcLib_lookat_c::~dNpcLib_lookat_c() {
    nofralloc
#include "asm/d/d_npc_lib/__dt__16dNpcLib_lookat_cFv.s"
}
#pragma pop