Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
J3DTransform.h
Go to the documentation of this file.
1#ifndef J3DTRANSFORM_H
2#define J3DTRANSFORM_H
3
4#include <dolphin/mtx.h>
5
7
14 /* 0x00 */ Vec mScale;
15 /* 0x0C */ S16Vec mRotation;
16 /* 0x14 */ Vec mTranslate;
17
18 /* inline J3DTransformInfo& operator=(const J3DTransformInfo& b) {
19 mScale = b.mScale;
20 mRotation = b.mRotation;
21 mTranslate = b.mTranslate;
22 return *this;
23 } */
24
25#ifdef __MWERKS__
26 inline J3DTransformInfo& operator=(const __REGISTER J3DTransformInfo& b) {
27 __REGISTER const J3DTransformInfo& var_r31 = b;
28 __REGISTER J3DTransformInfo& var_r30 = *this;
29 __REGISTER f32 var_f31;
30 asm {
31 psq_l var_f31, J3DTransformInfo.mScale(var_r31), 0, 0
32 psq_st var_f31, J3DTransformInfo.mScale(var_r30), 0, 0
33 }
34 mScale.z = b.mScale.z;
35 *(u32*)&mRotation = *(u32*)&b.mRotation;
36 mRotation.z = b.mRotation.z;
37 asm {
38 psq_l var_f31, J3DTransformInfo.mTranslate(var_r31), 0, 0
39 psq_st var_f31, J3DTransformInfo.mTranslate(var_r30), 0, 0
40 }
41 mTranslate.z = b.mTranslate.z;
42 return *this;
43 }
44#endif
45}; // Size: 0x20
46
48extern Vec const j3dDefaultScale;
49extern Mtx const j3dDefaultMtx;
50extern f32 PSMulUnit01[];
51
52void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3);
53void J3DCalcBBoardMtx(f32 (*)[4]);
55void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]);
58void J3DGetTextureMtx(const J3DTextureSRTInfo&, const Vec&, f32 (*)[4]);
59void J3DGetTextureMtxOld(const J3DTextureSRTInfo&, const Vec&, f32 (*)[4]);
61void J3DGetTextureMtxMayaOld(const J3DTextureSRTInfo& param_0, f32 (*)[4]);
62void J3DScaleNrmMtx(f32 (*)[4], const Vec&);
63void J3DScaleNrmMtx33(f32 (*)[3], const Vec&);
64void J3DMtxProjConcat(f32 (*)[4], f32 (*)[4], f32 (*)[4]);
65void J3DPSMtxArrayConcat(f32 (*)[4], f32 (*)[4], f32 (*)[4], u32);
66
67inline void J3DPSMtx33Copy(__REGISTER Mtx3P src, __REGISTER Mtx3P dst) {
68#ifdef __MWERKS__
69 __REGISTER f32 fr4;
70 __REGISTER f32 fr3;
71 __REGISTER f32 fr2;
72 __REGISTER f32 fr1;
73 __REGISTER f32 fr0;
74
75 asm {
76 psq_l fr4, 0(src), 0, 0
77 psq_l fr3, 8(src), 0, 0
78 psq_l fr2, 0x10(src), 0, 0
79 psq_l fr1, 0x18(src), 0, 0
80 lfs fr0, 0x20(src)
81 psq_st fr4, 0(dst), 0, 0
82 psq_st fr3, 8(dst), 0, 0
83 psq_st fr2, 0x10(dst), 0, 0
84 psq_st fr1, 0x18(dst), 0, 0
85 stfs fr0, 0x20(dst)
86 }
87#endif
88}
89
90inline void J3DPSMtx33CopyFrom34(__REGISTER MtxP src, __REGISTER Mtx3P dst) {
91#ifdef __MWERKS__
92 __REGISTER f32 x_y1;
93 __REGISTER f32 z1;
94 __REGISTER f32 x_y2;
95 __REGISTER f32 z2;
96 __REGISTER f32 x_y3;
97 __REGISTER f32 z3;
98 asm {
99 psq_l x_y1, 0(src), 0, 0
100 lfs z1, 8(src)
101 psq_l x_y2, 16(src), 0, 0
102 lfs z2, 0x18(src)
103 psq_l x_y3, 32(src), 0, 0
104 lfs z3, 0x28(src)
105 psq_st x_y1, 0(dst), 0, 0
106 stfs z1, 8(dst)
107 psq_st x_y2, 12(dst), 0, 0
108 stfs z2, 0x14(dst)
109 psq_st x_y3, 24(dst), 0, 0
110 stfs z3, 0x20(dst)
111 }
112#endif
113}
114
115inline void J3DPSMulMtxVec(__REGISTER MtxP mtx, __REGISTER Vec* vec, __REGISTER Vec* dst) {
116#ifdef __MWERKS__
117 asm {
118 psq_l f0, 0(vec), 0, 0
119 psq_l f2, 0(mtx), 0, 0
120 psq_l f1, 8(vec), 1, 0
121 ps_mul f4, f2, f0
122 psq_l f3, 8(mtx), 0, 0
123 ps_madd f5, f3, f1, f4
124 psq_l f8, 16(mtx), 0, 0
125 ps_sum0 f6, f5, f6, f5
126 psq_l f9, 24(mtx), 0, 0
127 ps_mul f10, f8, f0
128 psq_st f6, 0(dst), 1, 0
129 ps_madd f11, f9, f1, f10
130 psq_l f2, 32(mtx), 0, 0
131 ps_sum0 f12, f11, f12, f11
132 psq_l f3, 40(mtx), 0, 0
133 ps_mul f4, f2, f0
134 psq_st f12, 4(dst), 1, 0
135 ps_madd f5, f3, f1, f4
136 ps_sum0 f6, f5, f6, f5
137 psq_st f6, 8(dst), 1, 0
138 }
139#endif
140}
141
142inline void J3DPSMulMtxVec(__REGISTER MtxP mtx, __REGISTER S16Vec* vec, __REGISTER S16Vec* dst) {
143#ifdef __MWERKS__
144 asm {
145 psq_l f0, 0(vec), 0, 7
146 psq_l f2, 0(mtx), 0, 0
147 psq_l f1, 4(vec), 1, 7
148 ps_mul f4, f2, f0
149 psq_l f3, 8(mtx), 0, 0
150 ps_madd f5, f3, f1, f4
151 psq_l f8, 16(mtx), 0, 0
152 ps_sum0 f6, f5, f6, f5
153 psq_l f9, 24(mtx), 0, 0
154 ps_mul f10, f8, f0
155 psq_st f6, 0(dst), 1, 7
156 ps_madd f11, f9, f1, f10
157 psq_l f2, 32(mtx), 0, 0
158 ps_sum0 f12, f11, f12, f11
159 psq_l f3, 40(mtx), 0, 0
160 ps_mul f4, f2, f0
161 psq_st f12, 2(dst), 1, 7
162 ps_madd f5, f3, f1, f4
163 ps_sum0 f6, f5, f6, f5
164 psq_st f6, 4(dst), 1, 7
165 }
166#endif
167}
168
169inline void J3DPSMulMtxVec(__REGISTER Mtx3P mtx, __REGISTER Vec* vec, __REGISTER Vec* dst) {
170#ifdef __MWERKS__
171 asm {
172 lis r6, PSMulUnit01@ha
173 psq_l f0, 0(vec), 0, 0
174 addi r6, r6, PSMulUnit01@l
175 psq_l f2, 0(mtx), 0, 0
176 psq_l f13, 0(r6), 0, 0
177 psq_l f1, 8(vec), 1, 0
178 ps_add f1, f13, f1
179 psq_l f3, 8(mtx), 1, 0
180 ps_mul f4, f2, f0
181 psq_l f8, 12(mtx), 0, 0
182 ps_madd f5, f3, f1, f4
183 ps_sum0 f6, f5, f6, f5
184 psq_l f9, 20(mtx), 1, 0
185 ps_mul f10, f8, f0
186 psq_st f6, 0(dst), 1, 0
187 ps_madd f11, f9, f1, f10
188 psq_l f2, 24(mtx), 0, 0
189 ps_sum0 f12, f11, f12, f11
190 psq_l f3, 32(mtx), 1, 0
191 ps_mul f4, f2, f0
192 psq_st f12, 4(dst), 1, 0
193 ps_madd f5, f3, f1, f4
194 ps_sum0 f6, f5, f6, f5
195 psq_st f6, 8(dst), 1, 0
196 }
197#endif
198}
199
200inline void J3DPSMulMtxVec(__REGISTER Mtx3P mtx, __REGISTER S16Vec* vec, __REGISTER S16Vec* dst) {
201#ifdef __MWERKS__
202 asm {
203 lis r6, PSMulUnit01@ha
204 psq_l f0, 0(vec), 0, 7
205 addi r6, r6, PSMulUnit01@l
206 psq_l f2, 0(mtx), 0, 0
207 psq_l f13, 0(r6), 0, 0
208 psq_l f1, 4(vec), 1, 7
209 ps_add f1, f13, f1
210 psq_l f3, 8(mtx), 1, 0
211 ps_mul f4, f2, f0
212 psq_l f8, 12(mtx), 0, 0
213 ps_madd f5, f3, f1, f4
214 ps_sum0 f6, f5, f6, f5
215 psq_l f9, 20(mtx), 1, 0
216 ps_mul f10, f8, f0
217 psq_st f6, 0(dst), 1, 7
218 ps_madd f11, f9, f1, f10
219 psq_l f2, 24(mtx), 0, 0
220 ps_sum0 f12, f11, f12, f11
221 psq_l f3, 32(mtx), 1, 0
222 ps_mul f4, f2, f0
223 psq_st f12, 2(dst), 1, 7
224 ps_madd f5, f3, f1, f4
225 ps_sum0 f6, f5, f6, f5
226 psq_st f6, 4(dst), 1, 7
227 }
228#endif
229}
230
231#endif /* J3DTRANSFORM_H */
void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3)
Definition J3DTransform.cpp:18
void J3DGetTextureMtxMayaOld(const J3DTextureSRTInfo &param_0, f32(*)[4])
void J3DGetTextureMtxMaya(const J3DTextureSRTInfo &, f32(*)[4])
void J3DGetTranslateRotateMtx(const J3DTransformInfo &, Mtx)
Definition J3DTransform.cpp:161
void J3DPSMtx33CopyFrom34(__REGISTER MtxP src, __REGISTER Mtx3P dst)
Definition J3DTransform.h:90
void J3DCalcYBBoardMtx(f32(*)[4])
void J3DMtxProjConcat(f32(*)[4], f32(*)[4], f32(*)[4])
void J3DGetTextureMtx(const J3DTextureSRTInfo &, const Vec &, f32(*)[4])
void J3DGetTextureMtxOld(const J3DTextureSRTInfo &, const Vec &, f32(*)[4])
Mtx const j3dDefaultMtx
f32 PSMulUnit01[]
void J3DPSMtx33Copy(__REGISTER Mtx3P src, __REGISTER Mtx3P dst)
Definition J3DTransform.h:67
void J3DPSMulMtxVec(__REGISTER MtxP mtx, __REGISTER Vec *vec, __REGISTER Vec *dst)
Definition J3DTransform.h:115
Vec const j3dDefaultScale
void J3DPSCalcInverseTranspose(f32(*param_0)[4], f32(*param_1)[3])
void J3DPSMtxArrayConcat(f32(*)[4], f32(*)[4], f32(*)[4], u32)
void J3DScaleNrmMtx33(f32(*)[3], const Vec &)
void J3DCalcBBoardMtx(f32(*)[4])
J3DTransformInfo const j3dDefaultTransformInfo
void J3DScaleNrmMtx(f32(*)[4], const Vec &)
static Mtx mtx[10]
Definition c_lib.cpp:486
f32 Mtx[3][4]
Definition mtx.h:25
f32(* Mtx3P)[3]
Definition mtx.h:37
f32(* MtxP)[4]
Definition mtx.h:38
const void * src
Definition __os.h:116
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
Definition J3DStruct.h:48
Definition J3DTransform.h:13
Vec mScale
Definition J3DTransform.h:14
Vec mTranslate
Definition J3DTransform.h:16
J3DTransformInfo & operator=(const __REGISTER J3DTransformInfo &b)
Definition J3DTransform.h:26
S16Vec mRotation
Definition J3DTransform.h:15
Definition mtx.h:17
s16 z
Definition mtx.h:18
Definition mtx.h:13
f32 z
Definition mtx.h:14