SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
Mario.cpp
1#include "Game/Player/Mario.hpp"
2#include "Game/Map/HitInfo.hpp"
3#include "Game/Player/MarioAbyssDamage.hpp"
4#include "Game/Player/MarioBlown.hpp"
5#include "Game/Player/MarioBump.hpp"
6#include "Game/Player/MarioBury.hpp"
7#include "Game/Player/MarioClimb.hpp"
8#include "Game/Player/MarioCrush.hpp"
9#include "Game/Player/MarioDamage.hpp"
10#include "Game/Player/MarioDarkDamage.hpp"
11#include "Game/Player/MarioFaint.hpp"
12#include "Game/Player/MarioFireDamage.hpp"
13#include "Game/Player/MarioFireDance.hpp"
14#include "Game/Player/MarioFireRun.hpp"
15#include "Game/Player/MarioFlip.hpp"
16#include "Game/Player/MarioFlow.hpp"
17#include "Game/Player/MarioFoo.hpp"
18#include "Game/Player/MarioFpView.hpp"
19#include "Game/Player/MarioFreeze.hpp"
20#include "Game/Player/MarioFrontStep.hpp"
21#include "Game/Player/MarioHang.hpp"
22#include "Game/Player/MarioMagic.hpp"
23#include "Game/Player/MarioMapCode.hpp"
24#include "Game/Player/MarioMove.hpp"
25#include "Game/Player/MarioParalyze.hpp"
26#include "Game/Player/MarioRabbit.hpp"
27#include "Game/Player/MarioRecovery.hpp"
28#include "Game/Player/MarioSideStep.hpp"
29#include "Game/Player/MarioSkate.hpp"
30#include "Game/Player/MarioSlider.hpp"
31#include "Game/Player/MarioStep.hpp"
32#include "Game/Player/MarioStick.hpp"
33#include "Game/Player/MarioStun.hpp"
34#include "Game/Player/MarioSukekiyo.hpp"
35#include "Game/Player/MarioSwim.hpp"
36#include "Game/Player/MarioTalk.hpp"
37#include "Game/Player/MarioTeresa.hpp"
38#include "Game/Player/MarioWait.hpp"
39#include "Game/Player/MarioWall.hpp"
40#include "Game/Player/MarioWarp.hpp"
41
42Mario::Mario(MarioActor *actor) : MarioModule(actor)
43{
44 initMember();
45 _160.zero();
46 _13C.zero();
47 _148.zero();
48 _154.zero();
49 _208.setInline(1.0f, 0.0f, 0.0f);
50 _220 = _208;
51 _43C = _208;
52 _214.setInline(1.0f, 0.0f, 0.0f);
53 _22C.setInline(1.0f, 0.0f, 0.0f);
54 _3E4.setInline(1.0f, 0.0f, 0.0f);
55 _2B4 = 0.0f;
56 _310.setInline(0.0f, 0.0f, 1.0f);
57 _290 = _310;
58 _1D8.setInline(0.0f, -1.0f, 0.0f);
59 _1E4.zero();
60 bool nearZero = MR::isNearZero(_1D8, 0.0010000000475f);
61 _1F0 = -_1D8;
62 _1FC = _1F0;
63 _938 = _1F0;
64 _944 = _208;
65 _950 = _310;
66 _60D = 0;
67 _71C = 0;
68 _278 = 0.0f;
69 _2D0 = 0.0f;
70 _2D4.zero();
71 _2E0.zero();
72 _2EC.zero();
73 _42C = 0;
74 _2F8.zero();
75 _328.zero();
76 _334.zero();
77 _488 = 0.0f;
78 _430 = 0;
79 _3BC = 0;
80 _3BE = 0;
81 _3C0 = 0;
82 _3CE = 0;
83 _3CC = 0;
84 _3CA = 0;
85 _3D0 = 0;
86 _3D4 = 0;
87 _424 = 0;
88 _434 = 0;
89 _436 = 0;
90 _428 = 0;
91 _3D2 = 0;
92 _404 = 0;
93 _406 = 0;
94 _408 = 0;
95 _40A = 0;
96 _426 = 0;
97 _418 = 0;
98 _41A = 0;
99 _774 = 0;
100 _3C2 = 0;
101 _3C4 = 0;
102 _3C6 = 0;
103 _3C8 = 0;
104 _7D0 = 0x78;
105 _524 = 0.0f;
106 _528 = 0.0f;
107 _52C = 0.0f;
108 _530 = 0.0f;
109 _534 = 0;
110 _538 = 0.0f;
111 _53C = 0.0f;
112 _544 = 0;
113 _540 = 0.0f;
114 _3F8 = 0;
115 _3FA = 0;
116 _3FC = 0;
117 _3FE = 0;
118 _400 = 0;
119 _402 = 0;
120 _27C = 0.0f;
121 _734 = 0;
122 _735 = 0;
123 _748 = 0;
124 _71E = 0;
125 _414 = 0;
126 _416 = 0;
127 _41C = 0;
128 _41E = 0;
129 _410 = 0;
130 _420 = 0;
131 _43A = 0;
132 _3F4 = 0.0f;
133 _3F0 = 1.0f;
134 _58.zero();
135 _12C = 0;
136 _76C = 0;
137 _770 = 0.0f;
138 _738 = 0.0f;
139 _73C = 0.0f;
140 _740 = 1.0f;
141 _744 = 0.0f;
142 _368.setInline(0.0f, 1.0f, 0.0f);
143 _374 = -_368;
144 _380 = _368;
145 _38C = -_368;
146 _398.setInline(0.0f, 1.0f, 0.0f);
147 _344.setInline(1.0f, 0.0f, 0.0f);
148 _74C = 0f;
149 _750 = 0;
150 _754 = 0;
151 _40C = 0;
152 _40E = 0;
153 _412 = 0;
154 _558 = 0;
155 _2A8 = -_368;
156 _29C = _368;
157 _548 = _128 = _124 = 0.0f;
158 _54C = _1F0;
159 _C4.identity();
160 _64.identity();
161 _94.identity();
162 clearSlope();
163 _910.zero();
164 _91C.zero();
165 _928.zero();
166 _934 = 0.8f;
167 _3C = 0.001f;
168 mMovementStates_LOW_WORD = 0;
169 mMovementStates_HIGH_WORD = 0;
170 _10_LOW_WORD = 0;
171 _10_HIGH_WORD = 0;
172 mDrawStates_WORD = 0;
173 _1C_WORD = 0;
174 _20 = 0;
175 _24 = 0;
176 _28 = 0;
177
178 _458 = TriangleFilterDelegator<Mario>::allocateDelegator(this, &Mario::isIgnoreTriangle);
179
180 _45C = new Triangle();
181 _460 = new Triangle();
182 _464 = new Triangle();
183 _468 = new Triangle();
184 _46C = new Triangle();
185
186 _4C8 = new Triangle();
187 _4CC = new Triangle();
188 _4D0 = new Triangle();
189 _4D4 = new Triangle();
190 _4D8 = new Triangle();
191 _4DC = new Triangle();
192
193 _470 = new Triangle();
194 _474 = new Triangle();
195 _478 = new Triangle();
196
197 _7E0 = new Triangle();
198
199 _820 = new Triangle();
200
201 _47C = new Triangle();
202 _480 = new Triangle();
203 _484 = new Triangle();
204
205 for (unsigned int i = 0; i < 0x20; i++) {
206 _57C[i] = new Triangle();
207 }
208
209 _578 = 0;
210
211 _4E8.zero();
212 _4F4.zero();
213
214 _7D4.zero();
215 _8A4.zero();
216
217 _8C8 = new Triangle();
218
219 _8E8 = new Triangle();
220
221 _8CC = new Triangle();
222 _8D0 = new Triangle();
223
224 _564 = -1;
225 _568 = 0;
226 _56C = 0;
227 _570 = 0;
228
229 for (unsigned int i = 0; i < 9; i++) {
230 _A8C[i].zero();
231 }
232
233 _4A4.zero();
234 _4B0.zero();
235
236 _25C.zero();
237 _268.zero();
238
239 _350.zero();
240 _35C.zero();
241
242 _184.zero();
243
244 _1A8.zero();
245
246 _190.zero();
247 _19C.zero();
248
249 _4E4 = 0.0f;
250 _4E0 = 0.0f;
251
252 _72C = 200.0f;
253
254 _730 = 0;
255
256 _8D8 = 0;
257 _8D4 = 0;
258
259 _A38 = 0;
260 _A68 = 0;
261
262 _5FC = 0;
263
264 _1CC.zero();
265
266 _38 = 0.0f;
267 _1C0.z = 0.0f;
268 _1C0.y = 0.0f;
269 _1C0.x = 0.0f;
270
271 _3D8.zero();
272
273 _244.zero();
274 _238.zero();
275 _250.zero();
276
277 clear2DStick();
278
279 _6AC = 0;
280 _6AD = 0;
281 _6B0.zero();
282 _6BC.zero();
283
284 _63C.setInline(1.0f, 0.0f, 0.0f);
285 _648.setInline(0.0f, 1.0f, 0.0f);
286 _654.setInline(0.0f, 0.0f, 1.0f);
287 _6A0 = _654;
288
289 initSound();
290
291 _97C = 0;
292
293 mFlow = new MarioFlow(mActor);
294 mWall = new MarioWall(mActor);
295 mDamage = new MarioDamage(mActor);
296 mFaint = new MarioFaint(mActor);
297 mBlown = new MarioBlown(mActor);
298 mHang = new MarioHang(mActor);
299 mSwim = new MarioSwim(mActor);
300 mSlider = new MarioSlider(mActor);
301 mFireDamage = new MarioFireDamage(mActor);
302 mFireRun = new MarioFireRun(mActor);
303 mFireDance = new MarioFireDance(mActor);
304 mAbyssDamage = new MarioAbyssDamage(mActor);
305 mDarkDamage = new MarioDarkDamage(mActor);
306 mStep = new MarioStep(mActor);
307 mBump = new MarioBump(mActor);
308 mParalyze = new MarioParalyze(mActor);
309 mStun = new MarioStun(mActor);
310 mCrush = new MarioCrush(mActor);
311 mFreeze = new MarioFreeze(mActor);
312 mMagic = new MarioMagic(mActor);
313 mFpView = new MarioFpView(mActor);
314 mRecovery = new MarioRecovery(mActor);
315 mFlip = new MarioFlip(mActor);
316 mSideStep = new MarioSideStep(mActor);
317 mFrontStep = new MarioFrontStep(mActor);
318 mStick = new MarioStick(mActor);
319 mRabbit = new MarioRabbit(mActor);
320 mSukekiyo = new MarioSukekiyo(mActor);
321 mBury = new MarioBury(mActor);
322 mWait = new MarioWait(mActor);
323 mClimb = new MarioClimb(mActor);
324 mSkate = new MarioSkate(mActor);
325 mFoo = new MarioFoo(mActor);
326 mWarp = new MarioWarp(mActor);
327 mTeresa = new MarioTeresa(mActor);
328 mTalk = new MarioTalk(mActor);
329 mMove = new MarioMove(mActor);
330
331 initTask();
332 _95C = new FloorCode();
333 _960 = 0;
334 _962 = 0;
335 for (int i = 0; i < 3; i++) {
336 _964[i] = _960;
337 }
338 _96A = 0;
339 _574 = 0;
340 _898 = 0;
341}
342
343void Mario::setFrontVecKeepUp(const TVec3f &v)
344{
345 TVec3f stack_38(_208);
346 if (!MR::isNearZero(v, 0.001f)) {
347 setFrontVec(v);
348 }
349 TVec3f stack_2C;
350 PSVECCrossProduct(_1F0.toCVec(), _208.toCVec(), stack_2C.toVec());
351
352 if (MR::isNearZero(stack_2C, 0.001f)) {
353 TVec3f stack_20;
354 MR::vecBlendSphere(stack_38, v, &stack_20, 0.5f);
355 PSVECCrossProduct(_1F0.toCVec(), stack_20.toCVec(), stack_2C.toVec());
356 setFrontVec(stack_20);
357 if (MR::isNearZero(stack_2C, 0.001f)) {
358 setFrontVecKeepSide(v);
359 return;
360 }
361 }
362 MR::normalize(&stack_2C);
363 _310 = stack_2C;
364 MR::normalize(&_310);
365 TVec3f stack_14;
366 PSVECCrossProduct(_310.toCVec(), _1F0.toCVec(), stack_14.toVec());
367 setFrontVec(stack_14);
368 _22C = _208;
369 _328 = _208 % PSVECMag(_328.toCVec());
370 _344 = _310;
371}