// // Generated By: dol2asm // Translation Unit: mtx // #include "dolphin/mtx/mtx.h" #include "MSL_C/math.h" #include "dol2asm.h" #include "dolphin/mtx/mtxvec.h" // // Declarations: // /* ############################################################################################## */ /* 80456508-8045650C 004B08 0004+00 6/6 0/0 0/0 .sdata2 @96 */ SECTION_SDATA2 static f32 lit_96 = 1.0f; /* 8045650C-80456510 004B0C 0004+00 6/6 0/0 0/0 .sdata2 @97 */ SECTION_SDATA2 static u8 lit_97[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 80346484-803464B0 340DC4 002C+00 0/0 27/27 13/13 .text PSMTXIdentity */ asm void PSMTXIdentity(register Mtx m) { // clang-format off nofralloc lfs f0, lit_97(r2) lfs f1, lit_96(r2) psq_st f0, 8(m), 0, 0 ps_merge01 f2, f0, f1 psq_st f0, 24(m), 0, 0 ps_merge10 f1, f1, f0 psq_st f0, 32(m), 0, 0 psq_st f2, 16(m), 0, 0 psq_st f1, 0(m), 0, 0 psq_st f1, 40(m), 0, 0 blr // clang-format on } /* 803464B0-803464E4 340DF0 0034+00 0/0 119/119 1436/1436 .text PSMTXCopy */ asm void PSMTXCopy(register const Mtx src, register Mtx dst) { // clang-format off nofralloc psq_l f0, 0(src), 0, 0 psq_st f0, 0(dst), 0, 0 psq_l f1, 8(src), 0, 0 psq_st f1, 8(dst), 0, 0 psq_l f2, 16(src), 0, 0 psq_st f2, 16(dst), 0, 0 psq_l f3, 24(src), 0, 0 psq_st f3, 24(dst), 0, 0 psq_l f4, 32(src), 0, 0 psq_st f4, 32(dst), 0, 0 psq_l f5, 40(src), 0, 0 psq_st f5, 40(dst), 0, 0 blr // clang-format on } /* ############################################################################################## */ /* 804509D0-804509D8 000450 0008+00 1/1 0/0 0/0 .sdata Unit01 */ static f32 Unit01[2] = { 0.0f, 1.0f, }; /* 803464E4-803465B0 340E24 00CC+00 0/0 109/109 30/30 .text PSMTXConcat */ asm void PSMTXConcat(register const Mtx a, register const Mtx b, register Mtx ab) { // clang-format off nofralloc stwu r1, -0x40(r1) psq_l f0, 0(a), 0, 0 stfd f14, 8(r1) psq_l f6, 0(b), 0, 0 lis r6, Unit01@ha psq_l f7, 8(b), 0, 0 stfd f15, 0x10(r1) addi r6, r6, Unit01@l stfd f31, 0x28(r1) psq_l f8, 16(b), 0, 0 ps_muls0 f12, f6, f0 psq_l f2, 16(a), 0, 0 ps_muls0 f13, f7, f0 psq_l f31, 0(r6), 0, 0 ps_muls0 f14, f6, f2 psq_l f9, 24(b), 0, 0 ps_muls0 f15, f7, f2 psq_l f1, 8(a), 0, 0 ps_madds1 f12, f8, f0, f12 psq_l f3, 24(a), 0, 0 ps_madds1 f14, f8, f2, f14 psq_l f10, 32(b), 0, 0 ps_madds1 f13, f9, f0, f13 psq_l f11, 40(b), 0, 0 ps_madds1 f15, f9, f2, f15 psq_l f4, 32(a), 0, 0 psq_l f5, 40(a), 0, 0 ps_madds0 f12, f10, f1, f12 ps_madds0 f13, f11, f1, f13 ps_madds0 f14, f10, f3, f14 ps_madds0 f15, f11, f3, f15 psq_st f12, 0(ab), 0, 0 ps_muls0 f2, f6, f4 ps_madds1 f13, f31, f1, f13 ps_muls0 f0, f7, f4 psq_st f14, 16(ab), 0, 0 ps_madds1 f15, f31, f3, f15 psq_st f13, 8(ab), 0, 0 ps_madds1 f2, f8, f4, f2 ps_madds1 f0, f9, f4, f0 ps_madds0 f2, f10, f5, f2 lfd f14, 8(r1) psq_st f15, 24(ab), 0, 0 ps_madds0 f0, f11, f5, f0 psq_st f2, 32(ab), 0, 0 ps_madds1 f0, f31, f5, f0 lfd f15, 0x10(r1) psq_st f0, 40(ab), 0, 0 lfd f31, 0x28(r1) addi r1, r1, 0x40 blr // clang-format on } /* 803465B0-803466A8 340EF0 00F8+00 0/0 43/43 39/39 .text PSMTXInverse */ asm u32 PSMTXInverse(register const Mtx src, register Mtx inv) { // clang-format off nofralloc psq_l f0, 0(src), 1, 0 psq_l f1, 4(src), 0, 0 psq_l f2, 16(src), 1, 0 ps_merge10 f6, f1, f0 psq_l f3, 20(src), 0, 0 psq_l f4, 32(src), 1, 0 ps_merge10 f7, f3, f2 psq_l f5, 36(src), 0, 0 ps_mul f11, f3, f6 ps_mul f13, f5, f7 ps_merge10 f8, f5, f4 ps_msub f11, f1, f7, f11 ps_mul f12, f1, f8 ps_msub f13, f3, f8, f13 ps_mul f10, f3, f4 ps_msub f12, f5, f6, f12 ps_mul f9, f0, f5 ps_mul f8, f1, f2 ps_sub f6, f6, f6 ps_msub f10, f2, f5, f10 ps_mul f7, f0, f13 ps_msub f9, f1, f4, f9 ps_madd f7, f2, f12, f7 ps_msub f8, f0, f3, f8 ps_madd f7, f4, f11, f7 ps_cmpo0 cr0, f7, f6 bne lbl_80346624 li r3, 0 blr lbl_80346624: fres f0, f7 ps_add f6, f0, f0 ps_mul f5, f0, f0 ps_nmsub f0, f7, f5, f6 lfs f1, 0xc(src) ps_muls0 f13, f13, f0 lfs f2, 0x1c(src) ps_muls0 f12, f12, f0 lfs f3, 0x2c(src) ps_muls0 f11, f11, f0 ps_merge00 f5, f13, f12 ps_muls0 f10, f10, f0 ps_merge11 f4, f13, f12 ps_muls0 f9, f9, f0 psq_st f5, 0(inv), 0, 0 ps_mul f6, f13, f1 psq_st f4, 16(inv), 0, 0 ps_muls0 f8, f8, f0 ps_madd f6, f12, f2, f6 psq_st f10, 32(inv), 1, 0 ps_nmadd f6, f11, f3, f6 psq_st f9, 36(inv), 1, 0 ps_mul f7, f10, f1 ps_merge00 f5, f11, f6 psq_st f8, 40(inv), 1, 0 ps_merge11 f4, f11, f6 psq_st f5, 8(inv), 0, 0 ps_madd f7, f9, f2, f7 psq_st f4, 24(inv), 0, 0 ps_nmadd f7, f8, f3, f7 li r3, 1 psq_st f7, 44(inv), 1, 0 blr // clang-format on } /* 803466A8-80346718 340FE8 0070+00 0/0 17/17 0/0 .text PSMTXRotRad */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void PSMTXRotRad(Mtx m, u8 axis, f32 rad) { nofralloc #include "asm/dolphin/mtx/mtx/PSMTXRotRad.s" } #pragma pop /* 80346718-803467C8 341058 00B0+00 1/1 0/0 0/0 .text PSMTXRotTrig */ asm void PSMTXRotTrig(register Mtx m, u8 axis, f32 sin, f32 cos) { // clang-format off nofralloc frsp f5, f1 frsp f4, f2 lfs f0, lit_97(r2) lfs f1, lit_96(r2) ori r0, r4, 0x20 ps_neg f2, f5 cmplwi r0, 0x78 beq lbl_8034674C cmplwi r0, 0x79 beq lbl_80346774 cmplwi r0, 0x7a beq lbl_803467A0 b lbl_803467C4 lbl_8034674C: psq_st f1, 0(m), 1, 0 psq_st f0, 4(m), 0, 0 ps_merge00 f3, f5, f4 psq_st f0, 12(m), 0, 0 ps_merge00 f1, f4, f2 psq_st f0, 28(m), 0, 0 psq_st f0, 44(m), 1, 0 psq_st f3, 36(m), 0, 0 psq_st f1, 20(m), 0, 0 b lbl_803467C4 lbl_80346774: ps_merge00 f3, f4, f0 ps_merge00 f1, f0, f1 psq_st f0, 24(m), 0, 0 psq_st f3, 0(m), 0, 0 ps_merge00 f2, f2, f0 ps_merge00 f0, f5, f0 psq_st f3, 40(m), 0, 0 psq_st f1, 16(m), 0, 0 psq_st f0, 8(m), 0, 0 psq_st f2, 32(m), 0, 0 b lbl_803467C4 lbl_803467A0: psq_st f0, 8(m), 0, 0 ps_merge00 f3, f5, f4 ps_merge00 f2, f4, f2 psq_st f0, 24(m), 0, 0 psq_st f0, 32(m), 0, 0 ps_merge00 f1, f1, f0 psq_st f3, 16(m), 0, 0 psq_st f2, 0(m), 0, 0 psq_st f1, 40(m), 0, 0 lbl_803467C4: blr // clang-format on } /* ############################################################################################## */ /* 80456510-80456514 004B10 0004+00 2/2 0/0 0/0 .sdata2 @190 */ SECTION_SDATA2 static f32 lit_190 = 0.5f; /* 80456514-80456518 004B14 0004+00 1/1 0/0 0/0 .sdata2 @191 */ SECTION_SDATA2 static f32 lit_191 = 3.0f; /* 803467C8-80346878 341108 00B0+00 1/1 0/0 0/0 .text __PSMTXRotAxisRadInternal */ asm f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4) { // clang-format off nofralloc lfs f10, lit_190(r2) lfs f9, lit_191(r2) frsp f11, f2 psq_l f2, 0(r4), 0, 0 frsp f12, f1 lfs f3, 8(r4) ps_mul f4, f2, f2 fadds f8, f10, f10 ps_madd f5, f3, f3, f4 fsubs f1, f10, f10 ps_sum0 f6, f5, f3, f4 fsubs f0, f8, f11 frsqrte f7, f6 fmuls f4, f7, f7 fmuls f5, f7, f10 fnmsubs f4, f4, f6, f9 fmuls f7, f4, f5 ps_merge00 f11, f11, f11 ps_muls0 f2, f2, f7 ps_muls0 f3, f3, f7 ps_muls0 f6, f2, f0 ps_muls0 f10, f2, f12 ps_muls0 f7, f3, f0 ps_muls1 f5, f6, f2 ps_muls0 f4, f6, f2 ps_muls0 f6, f6, f3 fnmsubs f0, f3, f12, f5 fmadds f8, f3, f12, f5 ps_neg f2, f10 ps_sum0 f9, f6, f1, f10 ps_sum0 f4, f4, f0, f11 ps_sum1 f5, f11, f8, f5 ps_sum0 f0, f2, f1, f6 psq_st f9, 8(r3), 0, 0 ps_sum0 f2, f6, f6, f2 psq_st f4, 0(r3), 0, 0 ps_muls0 f7, f7, f3 psq_st f5, 16(r3), 0, 0 ps_sum1 f6, f10, f2, f6 psq_st f0, 24(r3), 0, 0 ps_sum0 f7, f7, f1, f11 psq_st f6, 32(r3), 0, 0 psq_st f7, 40(r3), 0, 0 blr // clang-format on } /* 80346878-803468E8 3411B8 0070+00 0/0 6/6 8/8 .text PSMTXRotAxisRad */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { nofralloc #include "asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s" } #pragma pop /* 803468E8-8034691C 341228 0034+00 0/0 38/38 471/471 .text PSMTXTrans */ asm void PSMTXTrans(register Mtx m, f32 x, f32 y, f32 z) { // clang-format off nofralloc lfs f0, lit_97(r2) lfs f4, lit_96(r2) stfs f1, 0xc(m) stfs f2, 0x1c(m) psq_st f0, 4(m), 0, 0 psq_st f0, 32(m), 0, 0 stfs f0, 0x10(m) stfs f4, 0x14(m) stfs f0, 0x18(m) stfs f4, 0x28(m) stfs f3, 0x2c(m) stfs f4, 0(m) blr // clang-format on } /* 8034691C-80346968 34125C 004C+00 0/0 3/3 0/0 .text PSMTXTransApply */ asm void PSMTXTransApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { // clang-format off nofralloc psq_l f4, 0(src), 0, 0 frsp f1, f1 psq_l f5, 8(src), 0, 0 frsp f2, f2 psq_l f7, 24(src), 0, 0 frsp f3, f3 psq_l f8, 40(src), 0, 0 psq_st f4, 0(dst), 0, 0 ps_sum1 f5, f1, f5, f5 psq_l f6, 16(src), 0, 0 psq_st f5, 8(dst), 0, 0 ps_sum1 f7, f2, f7, f7 psq_l f9, 32(src), 0, 0 psq_st f6, 16(dst), 0, 0 ps_sum1 f8, f3, f8, f8 psq_st f7, 24(dst), 0, 0 psq_st f9, 32(dst), 0, 0 psq_st f8, 40(dst), 0, 0 blr // clang-format on } /* 80346968-80346990 3412A8 0028+00 0/0 14/14 8/8 .text PSMTXScale */ asm void PSMTXScale(register Mtx m, f32 x, f32 y, f32 z) { // clang-format off nofralloc lfs f0, lit_97(r2) stfs f1, 0(m) psq_st f0, 4(m), 0, 0 psq_st f0, 12(m), 0, 0 stfs f2, 0x14(m) psq_st f0, 24(m), 0, 0 psq_st f0, 32(m), 0, 0 stfs f3, 0x28(m) stfs f0, 0x2c(m) blr // clang-format on } /* 80346990-803469E8 3412D0 0058+00 0/0 1/1 0/0 .text PSMTXScaleApply */ asm void PSMTXScaleApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { // clang-format off nofralloc frsp f1, f1 psq_l f4, 0(src), 0, 0 frsp f2, f2 psq_l f5, 8(src), 0, 0 frsp f3, f3 ps_muls0 f4, f4, f1 psq_l f6, 16(src), 0, 0 ps_muls0 f5, f5, f1 psq_l f7, 24(src), 0, 0 ps_muls0 f6, f6, f2 psq_l f8, 32(src), 0, 0 psq_st f4, 0(dst), 0, 0 ps_muls0 f7, f7, f2 psq_l f2, 40(src), 0, 0 psq_st f5, 8(dst), 0, 0 ps_muls0 f8, f8, f3 psq_st f6, 16(dst), 0, 0 ps_muls0 f2, f2, f3 psq_st f7, 24(dst), 0, 0 psq_st f8, 32(dst), 0, 0 psq_st f2, 40(dst), 0, 0 blr // clang-format on } /* 803469E8-80346A8C 341328 00A4+00 0/0 8/8 2/2 .text PSMTXQuat */ asm void PSMTXQuat(register Mtx m, register const Quaternion* q) { // clang-format off nofralloc lfs f1, lit_96(r2) psq_l f4, 0(q), 0, 0 psq_l f5, 8(q), 0, 0 fsubs f0, f1, f1 fadds f2, f1, f1 ps_mul f6, f4, f4 ps_merge10 f9, f4, f4 ps_madd f8, f5, f5, f6 ps_mul f7, f5, f5 ps_sum0 f3, f8, f8, f8 ps_muls1 f10, f9, f5 fres f11, f3 ps_sum1 f8, f7, f8, f6 ps_nmsub f3, f3, f11, f2 ps_muls1 f7, f5, f5 ps_mul f3, f11, f3 ps_sum0 f6, f6, f6, f6 fmuls f3, f3, f2 ps_madd f11, f4, f9, f7 ps_msub f7, f4, f9, f7 psq_st f0, 12(m), 1, 0 ps_nmsub f6, f6, f3, f1 ps_nmsub f8, f8, f3, f1 psq_st f0, 44(m), 1, 0 ps_mul f11, f11, f3 ps_mul f7, f7, f3 psq_st f6, 40(m), 1, 0 ps_madds0 f9, f4, f5, f10 ps_merge00 f5, f11, f8 ps_nmsub f10, f10, f2, f9 ps_merge10 f4, f8, f7 psq_st f5, 16(m), 0, 0 ps_mul f9, f9, f3 ps_mul f10, f10, f3 psq_st f4, 0(m), 0, 0 psq_st f9, 8(m), 1, 0 ps_merge10 f7, f10, f0 ps_merge01 f11, f10, f9 psq_st f7, 24(m), 0, 0 psq_st f11, 32(m), 0, 0 blr // clang-format on } /* 80346A8C-80346C18 3413CC 018C+00 0/0 2/2 0/0 .text C_MTXLookAt */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target) { nofralloc #include "asm/dolphin/mtx/mtx/C_MTXLookAt.s" } #pragma pop /* ############################################################################################## */ /* 80456518-8045651C 004B18 0004+00 1/1 0/0 0/0 .sdata2 @206 */ SECTION_SDATA2 static f32 lit_206 = 2.0f; /* 8045651C-80456520 004B1C 0004+00 1/1 0/0 0/0 .sdata2 @227 */ SECTION_SDATA2 static f32 lit_227 = -1.0f; /* 80456520-80456528 004B20 0004+04 1/1 0/0 0/0 .sdata2 @230 */ SECTION_SDATA2 static f32 lit_230[1 + 1 /* padding */] = { 0.01745329238474369f, /* padding */ 0.0f, }; /* 80346C18-80346CE4 341558 00CC+00 0/0 4/4 7/7 .text C_MTXLightPerspective */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s, f32 trans_t) { nofralloc #include "asm/dolphin/mtx/mtx/C_MTXLightPerspective.s" } #pragma pop /* 80346CE4-80346D6C 341624 0088+00 0/0 2/2 5/5 .text C_MTXLightOrtho */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right, f32 scale_s, f32 scale_t, f32 trans_s, f32 trans_t) { nofralloc #include "asm/dolphin/mtx/mtx/C_MTXLightOrtho.s" } #pragma pop