tp/src/m_Do/m_Do_mtx.cpp

546 lines
15 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: m_Do/m_Do_mtx
//
#include "m_Do/m_Do_mtx.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct JMath {
static u8 sincosTable_[65536];
};
//
// Forward References:
//
extern "C" static void mDoMtx_XYZrotS__FPA4_fsss();
extern "C" void mDoMtx_XYZrotM__FPA4_fsss();
extern "C" void mDoMtx_ZXYrotS__FPA4_fsss();
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
extern "C" void mDoMtx_XrotS__FPA4_fs();
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotS__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotS__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs();
extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs();
extern "C" void mDoMtx_concatProjView__FPA4_CfPA4_CfPA4_f();
extern "C" void mDoMtx_inverseTranspose__FPA4_CfPA4_f();
extern "C" void mDoMtx_QuatConcat__FPC10QuaternionPC10QuaternionP10Quaternion();
extern "C" void mDoMtx_MtxToRot__FPA4_CfP5csXyz();
extern "C" void push__14mDoMtx_stack_cFv();
extern "C" void pop__14mDoMtx_stack_cFv();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void transM__14mDoMtx_stack_cFfff();
extern "C" void transM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void scaleS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void XYZrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void XYZrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion();
extern "C" void __sinit_m_Do_mtx_cpp();
extern "C" void __dt__18mDoMtx_quatStack_cFv();
extern "C" void __dt__14mDoMtx_stack_cFv();
extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 buffer__14mDoMtx_stack_c[768];
extern "C" void* next__14mDoMtx_stack_c;
extern "C" void* end__14mDoMtx_stack_c;
//
// External References:
//
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void outprod__4cXyzCFRC3Vec();
extern "C" void normalize__4cXyzFv();
extern "C" void normalizeRS__4cXyzFv();
extern "C" void cM_atan2s__Fff();
extern "C" void __dl__FPv();
extern "C" void __register_global_object();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
//
// Declarations:
//
/* 8000C0CC-8000C164 006A0C 0098+00 1/1 0/0 0/0 .text mDoMtx_XYZrotS__FPA4_fsss */
void mDoMtx_XYZrotS(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (z != 0) {
mDoMtx_ZrotS(mtx, z);
} else {
PSMTXIdentity(mtx);
}
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
}
/* 8000C164-8000C208 006AA4 00A4+00 1/1 8/8 13/13 .text mDoMtx_XYZrotM__FPA4_fsss */
void mDoMtx_XYZrotM(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
}
/* 8000C208-8000C2A0 006B48 0098+00 1/1 10/10 37/37 .text mDoMtx_ZXYrotS__FPA4_fsss */
void mDoMtx_ZXYrotS(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (y != 0) {
mDoMtx_YrotS(mtx, y);
} else {
PSMTXIdentity(mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
}
/* 8000C2A0-8000C344 006BE0 00A4+00 1/1 19/19 149/149 .text mDoMtx_ZXYrotM__FPA4_fsss */
void mDoMtx_ZXYrotM(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
}
/* ############################################################################################## */
/* 80451B08-80451B0C 000108 0004+00 6/6 0/0 0/0 .sdata2 @3676 */
SECTION_SDATA2 static f32 lit_3676 = 1.0f;
/* 80451B0C-80451B10 00010C 0004+00 7/7 0/0 0/0 .sdata2 @3677 */
SECTION_SDATA2 static u8 lit_3677[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 8000C344-8000C39C 006C84 0058+00 5/5 7/7 38/38 .text mDoMtx_XrotS__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_XrotS(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_XrotS__FPA4_fs.s"
}
#pragma pop
/* 8000C39C-8000C3DC 006CDC 0040+00 0/0 11/11 425/425 .text mDoMtx_XrotM__FPA4_fs */
void mDoMtx_XrotM(Mtx mtx, s16 x) {
Mtx tmp;
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
/* 8000C3DC-8000C434 006D1C 0058+00 5/5 24/24 809/809 .text mDoMtx_YrotS__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_YrotS(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_YrotS__FPA4_fs.s"
}
#pragma pop
/* 8000C434-8000C474 006D74 0040+00 0/0 44/44 775/775 .text mDoMtx_YrotM__FPA4_fs */
void mDoMtx_YrotM(Mtx mtx, s16 y) {
Mtx tmp;
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
/* 8000C474-8000C4CC 006DB4 0058+00 7/7 1/1 6/6 .text mDoMtx_ZrotS__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_ZrotS(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZrotS__FPA4_fs.s"
}
#pragma pop
/* 8000C4CC-8000C50C 006E0C 0040+00 0/0 9/9 302/302 .text mDoMtx_ZrotM__FPA4_fs */
void mDoMtx_ZrotM(Mtx mtx, s16 z) {
Mtx tmp;
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
/* 8000C50C-8000C710 006E4C 0204+00 0/0 3/3 0/0 .text mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_lookAt(f32 (*param_0)[4], Vec const* param_1, Vec const* param_2, s16 param_3) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs.s"
}
#pragma pop
/* ############################################################################################## */
/* 80451B10-80451B18 000110 0004+04 1/1 0/0 0/0 .sdata2 @3840 */
SECTION_SDATA2 static f32 lit_3840[1 + 1 /* padding */] = {
32.0f,
/* padding */
0.0f,
};
/* 8000C710-8000C8D0 007050 01C0+00 0/0 10/10 1/1 .text mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_lookAt(f32 (*param_0)[4], Vec const* param_1, Vec const* param_2,
Vec const* param_3, s16 param_4) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs.s"
}
#pragma pop
/* 8000C8D0-8000C9B0 007210 00E0+00 0/0 2/2 0/0 .text mDoMtx_concatProjView__FPA4_CfPA4_CfPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_concatProjView(f32 const (*param_0)[4], f32 const (*param_1)[4],
f32 (*param_2)[4]) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_concatProjView__FPA4_CfPA4_CfPA4_f.s"
}
#pragma pop
/* 8000C9B0-8000CB5C 0072F0 01AC+00 0/0 1/1 1/1 .text mDoMtx_inverseTranspose__FPA4_CfPA4_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_inverseTranspose(f32 const (*param_0)[4], f32 (*param_1)[4]) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_inverseTranspose__FPA4_CfPA4_f.s"
}
#pragma pop
/* 8000CB5C-8000CC00 00749C 00A4+00 0/0 2/2 2/2 .text
* mDoMtx_QuatConcat__FPC10QuaternionPC10QuaternionP10Quaternion */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_QuatConcat(Quaternion const* param_0, Quaternion const* param_1,
Quaternion* param_2) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_QuatConcat__FPC10QuaternionPC10QuaternionP10Quaternion.s"
}
#pragma pop
/* 8000CC00-8000CCC8 007540 00C8+00 0/0 11/11 26/26 .text mDoMtx_MtxToRot__FPA4_CfP5csXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_MtxToRot(CMtxP param_0, csXyz* param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_MtxToRot__FPA4_CfP5csXyz.s"
}
#pragma pop
/* ############################################################################################## */
/* 803DD470-803DD4A0 00A190 0030+00 12/12 142/142 1820/1820 .bss now__14mDoMtx_stack_c
*/
Mtx mDoMtx_stack_c::now;
/* 803DD4A0-803DD7A0 00A1C0 0300+00 2/2 0/0 0/0 .bss buffer__14mDoMtx_stack_c */
Mtx mDoMtx_stack_c::buffer[16];
/* 803DD7A0-803DD7AC 00A4C0 000C+00 1/1 0/0 0/0 .bss @4048 */
static u8 lit_4048[12];
/* 804505A8-804505AC -00001 0004+00 3/3 0/0 0/0 .sdata next__14mDoMtx_stack_c */
SECTION_SDATA Mtx* mDoMtx_stack_c::next = (Mtx*)&mDoMtx_stack_c::buffer;
/* 804505AC-804505B0 -00001 0004+00 2/2 0/0 0/0 .sdata end__14mDoMtx_stack_c */
SECTION_SDATA Mtx* mDoMtx_stack_c::end = (Mtx*)&lit_4048;
/* 8000CCC8-8000CD14 007608 004C+00 0/0 0/0 24/24 .text push__14mDoMtx_stack_cFv */
// regalloc
#ifdef NONMATCHING
bool mDoMtx_stack_c::push() {
if (next >= end) {
return false;
}
next++;
PSMTXCopy(now, *next);
return true;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool mDoMtx_stack_c::push() {
nofralloc
#include "asm/m_Do/m_Do_mtx/push__14mDoMtx_stack_cFv.s"
}
#pragma pop
#endif
/* 8000CD14-8000CD64 007654 0050+00 0/0 0/0 24/24 .text pop__14mDoMtx_stack_cFv */
bool mDoMtx_stack_c::pop() {
if (next <= buffer) {
return false;
}
next--;
PSMTXCopy(*next, now);
return true;
}
/* 8000CD64-8000CD9C 0076A4 0038+00 0/0 50/50 484/484 .text transS__14mDoMtx_stack_cFRC4cXyz */
void mDoMtx_stack_c::transS(cXyz const& param_0) {
transS(param_0.x, param_0.y, param_0.z);
}
/* 8000CD9C-8000CDD4 0076DC 0038+00 1/1 29/29 285/285 .text transM__14mDoMtx_stack_cFfff
*/
void mDoMtx_stack_c::transM(f32 x, f32 y, f32 z) {
Mtx tmp;
PSMTXTrans(tmp, x, y, z);
PSMTXConcat(now, tmp, now);
}
/* 8000CDD4-8000CE00 007714 002C+00 0/0 3/3 40/40 .text transM__14mDoMtx_stack_cFRC4cXyz
*/
void mDoMtx_stack_c::transM(cXyz const& param_0) {
transM(param_0.x, param_0.y, param_0.z);
}
/* 8000CE00-8000CE38 007740 0038+00 0/0 0/0 2/2 .text scaleS__14mDoMtx_stack_cFRC4cXyz */
void mDoMtx_stack_c::scaleS(cXyz const& param_0) {
scaleS(param_0.x, param_0.y, param_0.z);
}
/* 8000CE38-8000CE70 007778 0038+00 1/1 13/13 219/219 .text scaleM__14mDoMtx_stack_cFfff
*/
void mDoMtx_stack_c::scaleM(f32 x, f32 y, f32 z) {
Mtx tmp;
PSMTXScale(tmp, x, y, z);
PSMTXConcat(now, tmp, now);
}
/* 8000CE70-8000CE9C 0077B0 002C+00 0/0 7/7 79/79 .text scaleM__14mDoMtx_stack_cFRC4cXyz
*/
void mDoMtx_stack_c::scaleM(cXyz const& param_0) {
scaleM(param_0.x, param_0.y, param_0.z);
}
/* 8000CE9C-8000CED4 0077DC 0038+00 0/0 3/3 0/0 .text XYZrotS__14mDoMtx_stack_cFRC5csXyz
*/
void mDoMtx_stack_c::XYZrotS(csXyz const& param_0) {
XYZrotS(param_0.x, param_0.y, param_0.z);
}
/* 8000CED4-8000CF0C 007814 0038+00 0/0 1/1 4/4 .text XYZrotM__14mDoMtx_stack_cFRC5csXyz
*/
void mDoMtx_stack_c::XYZrotM(csXyz const& param_0) {
XYZrotM(param_0.x, param_0.y, param_0.z);
}
/* 8000CF0C-8000CF44 00784C 0038+00 0/0 5/5 43/43 .text ZXYrotS__14mDoMtx_stack_cFRC5csXyz */
void mDoMtx_stack_c::ZXYrotS(csXyz const& param_0) {
ZXYrotS(param_0.x, param_0.y, param_0.z);
}
/* 8000CF44-8000CF7C 007884 0038+00 0/0 24/24 250/250 .text ZXYrotM__14mDoMtx_stack_cFRC5csXyz */
void mDoMtx_stack_c::ZXYrotM(csXyz const& param_0) {
ZXYrotM(param_0.x, param_0.y, param_0.z);
}
/* 8000CF7C-8000CFB8 0078BC 003C+00 0/0 1/1 6/6 .text quatM__14mDoMtx_stack_cFPC10Quaternion */
void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
Mtx tmp;
PSMTXQuat(tmp, param_0);
PSMTXConcat(now, tmp, now);
}
/* ############################################################################################## */
/* 803DD7AC-803DD7B8 00A4CC 000C+00 0/1 0/0 0/0 .bss @4078 */
#pragma push
#pragma force_active on
static u8 lit_4078[12];
#pragma pop
/* 803DD7B8-803DD8D8 00A4D8 011C+04 0/1 0/0 0/0 .bss mDoMtx_quatStack */
#pragma push
#pragma force_active on
static u8 mDoMtx_quatStack[284 + 4 /* padding */];
#pragma pop
/* 80450C18-80450C20 000118 0001+07 1/1 0/0 0/0 .sbss mDoMtx_stack */
static u8 mDoMtx_stack[1 + 7 /* padding */];
/* 8000CFB8-8000D034 0078F8 007C+00 0/0 1/0 0/0 .text __sinit_m_Do_mtx_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_m_Do_mtx_cpp() {
nofralloc
#include "asm/m_Do/m_Do_mtx/__sinit_m_Do_mtx_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x8000CFB8, __sinit_m_Do_mtx_cpp);
#pragma pop
/* 8000D034-8000D070 007974 003C+00 1/1 0/0 0/0 .text __dt__18mDoMtx_quatStack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm mDoMtx_quatStack_c::~mDoMtx_quatStack_c() {
nofralloc
#include "asm/m_Do/m_Do_mtx/__dt__18mDoMtx_quatStack_cFv.s"
}
#pragma pop
/* 8000D070-8000D0AC 0079B0 003C+00 1/1 0/0 0/0 .text __dt__14mDoMtx_stack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm mDoMtx_stack_c::~mDoMtx_stack_c() {
nofralloc
#include "asm/m_Do/m_Do_mtx/__dt__14mDoMtx_stack_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 803A2FD8-803A3020 0000F8 0030+18 0/0 23/23 4/4 .data g_mDoMtx_identity */
SECTION_DATA extern u8 g_mDoMtx_identity[48 + 24 /* padding */] = {
0x3F,
0x80,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3F,
0x80,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3F,
0x80,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
};
/* SECTION_DATA extern Mtx g_mDoMtx_identity = {
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 0.0f},
}; */