d_jnt_col first pass (#222)

* dJntCol_c::dJntCol_c

* dJntCol_c::init

* dJntCol_c::setArrowPosAndAngle

* remove asm
This commit is contained in:
Pheenoh 2022-12-26 19:23:22 -07:00 committed by GitHub
parent 8b0ee4d50b
commit 38ac3b420c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 93 deletions

View File

@ -1,6 +0,0 @@
lbl_80035C8C:
/* 80035C8C 38 00 00 00 */ li r0, 0
/* 80035C90 90 03 00 04 */ stw r0, 4(r3)
/* 80035C94 90 03 00 00 */ stw r0, 0(r3)
/* 80035C98 90 03 00 08 */ stw r0, 8(r3)
/* 80035C9C 4E 80 00 20 */ blr

View File

@ -1,12 +0,0 @@
lbl_80035CA0:
/* 80035CA0 90 A3 00 00 */ stw r5, 0(r3)
/* 80035CA4 90 C3 00 04 */ stw r6, 4(r3)
/* 80035CA8 90 E3 00 08 */ stw r7, 8(r3)
/* 80035CAC 38 00 00 00 */ li r0, 0
/* 80035CB0 90 03 00 0C */ stw r0, 0xc(r3)
/* 80035CB4 28 04 00 00 */ cmplwi r4, 0
/* 80035CB8 41 82 00 08 */ beq lbl_80035CC0
/* 80035CBC 90 64 05 28 */ stw r3, 0x528(r4)
lbl_80035CC0:
/* 80035CC0 38 60 00 01 */ li r3, 1
/* 80035CC4 4E 80 00 20 */ blr

View File

@ -1,37 +0,0 @@
lbl_80036FA8:
/* 80036FA8 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 80036FAC 7C 08 02 A6 */ mflr r0
/* 80036FB0 90 01 00 34 */ stw r0, 0x34(r1)
/* 80036FB4 39 61 00 30 */ addi r11, r1, 0x30
/* 80036FB8 48 32 B2 1D */ bl _savegpr_27
/* 80036FBC 7C 7B 1B 78 */ mr r27, r3
/* 80036FC0 7C 9C 23 78 */ mr r28, r4
/* 80036FC4 7C FD 3B 78 */ mr r29, r7
/* 80036FC8 7D 1E 43 78 */ mr r30, r8
/* 80036FCC 80 63 00 04 */ lwz r3, 4(r3)
/* 80036FD0 80 63 00 84 */ lwz r3, 0x84(r3)
/* 80036FD4 80 03 00 0C */ lwz r0, 0xc(r3)
/* 80036FD8 1F E6 00 30 */ mulli r31, r6, 0x30
/* 80036FDC 7C 60 FA 14 */ add r3, r0, r31
/* 80036FE0 7C A4 2B 78 */ mr r4, r5
/* 80036FE4 38 A1 00 08 */ addi r5, r1, 8
/* 80036FE8 48 30 FE 65 */ bl PSMTXMultVecSR
/* 80036FEC 38 61 00 08 */ addi r3, r1, 8
/* 80036FF0 48 23 01 61 */ bl atan2sY_XZ__4cXyzCFv
/* 80036FF4 B0 7E 00 00 */ sth r3, 0(r30)
/* 80036FF8 38 61 00 08 */ addi r3, r1, 8
/* 80036FFC 48 23 01 2D */ bl atan2sX_Z__4cXyzCFv
/* 80037000 B0 7E 00 02 */ sth r3, 2(r30)
/* 80037004 80 7B 00 04 */ lwz r3, 4(r27)
/* 80037008 80 63 00 84 */ lwz r3, 0x84(r3)
/* 8003700C 80 03 00 0C */ lwz r0, 0xc(r3)
/* 80037010 7C 60 FA 14 */ add r3, r0, r31
/* 80037014 7F 84 E3 78 */ mr r4, r28
/* 80037018 7F A5 EB 78 */ mr r5, r29
/* 8003701C 48 30 FD 51 */ bl PSMTXMultVec
/* 80037020 39 61 00 30 */ addi r11, r1, 0x30
/* 80037024 48 32 B1 FD */ bl _restgpr_27
/* 80037028 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8003702C 7C 08 03 A6 */ mtlr r0
/* 80037030 38 21 00 30 */ addi r1, r1, 0x30
/* 80037034 4E 80 00 20 */ blr

View File

@ -8,12 +8,10 @@
class dJntColData_c {};
class fopAc_ac_c;
class dJntCol_c {
public:
/* 80035C8C */ dJntCol_c();
/* 80035CA0 */ void init(fopAc_ac_c*, dJntColData_c const*, J3DModel*, int);
/* 80035CA0 */ int init(fopAc_ac_c*, dJntColData_c const*, J3DModel*, int);
/* 80035CC8 */ void setNowLine(cM3dGLin*, cXyz const*, csXyz const*, cXyz*);
/* 80035DC8 */ void searchNearPos(cM3dGLin const*, cXyz const*, cXyz*, int) const;
/* 80036AEC */ void getArrowOffsetPosAndAngle(cXyz const*, csXyz const*, cXyz*, cXyz*) const;

View File

@ -154,6 +154,10 @@ inline void fopAcM_SetParam(void* p_actor, u32 param) {
fpcM_SetParam(p_actor, param);
}
inline void fopAcM_SetJntCol(fopAc_ac_c* i_actorP, dJntCol_c* i_jntColP) {
i_actorP->mJntCol = i_jntColP;
}
inline s16 fopAcM_GetProfName(const void* pActor) {
return fpcM_GetProfName(pActor);
}

View File

@ -6,29 +6,18 @@
#include "d/d_jnt_col.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_mtx.h"
//
// Types:
//
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CD9C */ void transM(f32, f32, f32);
/* 8000CF0C */ void ZXYrotS(csXyz const&);
static u8 now[48];
};
struct cM3dGSph {
/* 80036AA4 */ ~cM3dGSph();
/* 8026F664 */ void Set(cXyz const&, f32);
};
struct cM3dGPla {
/* 8026F408 */ void crossInfLin(cXyz const&, cXyz const&, cXyz&) const;
/* 8026F4C4 */ void SetupNP0(Vec const&, Vec const&);
};
struct cM3dGCyl {
/* 8026F180 */ void Set(cXyz const&, f32, f32);
};
@ -94,26 +83,25 @@ extern "C" u8 BaseZ__4cXyz[12];
//
/* 80035C8C-80035CA0 0305CC 0014+00 0/0 1/1 8/8 .text __ct__9dJntCol_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dJntCol_c::dJntCol_c() {
nofralloc
#include "asm/d/d_jnt_col/__ct__9dJntCol_cFv.s"
dJntCol_c::dJntCol_c() {
mModel = 0;
mData = 0;
field_0x8 = 0;
}
#pragma pop
/* 80035CA0-80035CC8 0305E0 0028+00 0/0 2/2 8/8 .text
* init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dJntCol_c::init(fopAc_ac_c* param_0, dJntColData_c const* param_1, J3DModel* param_2,
int dJntCol_c::init(fopAc_ac_c* i_actorP, dJntColData_c const* i_jntColP, J3DModel* i_modelP,
int param_3) {
nofralloc
#include "asm/d/d_jnt_col/init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli.s"
mData = (dJntColData_c*)i_jntColP;
mModel = i_modelP;
field_0x8 = param_3;
field_0xc = 0;
if (i_actorP) {
fopAcM_SetJntCol(i_actorP,this);
}
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80451D60-80451D64 000360 0004+00 1/1 0/0 0/0 .sdata2 @3655 */
@ -121,6 +109,23 @@ SECTION_SDATA2 static f32 lit_3655 = 500.0f;
/* 80035CC8-80035DC8 030608 0100+00 2/2 0/0 0/0 .text
* setNowLine__9dJntCol_cFP8cM3dGLinPC4cXyzPC5csXyzP4cXyz */
#ifdef NONMATCHING
// regalloc, parameters are loading in wrong?
void dJntCol_c::setNowLine(cM3dGLin* param_0, cXyz const* param_1, csXyz const* param_2,
cXyz* param_3) {
if (param_2) {
mDoMtx_stack_c::ZXYrotS(*param_2);
mDoMtx_stack_c::multVec(&cXyz::BaseZ,param_3);
} else {
*param_3 = cXyz::BaseZ;
}
cXyz start_pos = *param_1 - *param_3 * FLOAT_LABEL(lit_3655);
cXyz end_pos = *param_1 + *param_3 * FLOAT_LABEL(lit_3655);
param_0->SetStartEnd(start_pos,end_pos);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -130,6 +135,7 @@ asm void dJntCol_c::setNowLine(cM3dGLin* param_0, cXyz const* param_1, csXyz con
#include "asm/d/d_jnt_col/setNowLine__9dJntCol_cFP8cM3dGLinPC4cXyzPC5csXyzP4cXyz.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803A78F8-803A7904 004A18 000C+00 4/4 21/21 0/0 .data __vt__8cM3dGLin */
@ -237,12 +243,11 @@ asm void dJntCol_c::getHitmarkPosAndAngle(cXyz const* param_0, csXyz const* para
/* 80036FA8-80037038 0318E8 0090+00 0/0 0/0 1/1 .text
* setArrowPosAndAngle__9dJntCol_cFPC4cXyzPC4cXyziP4cXyzP5csXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dJntCol_c::setArrowPosAndAngle(cXyz const* param_0, cXyz const* param_1, int param_2,
cXyz* param_3, csXyz* param_4) {
nofralloc
#include "asm/d/d_jnt_col/setArrowPosAndAngle__9dJntCol_cFPC4cXyzPC4cXyziP4cXyzP5csXyz.s"
void dJntCol_c::setArrowPosAndAngle(cXyz const* param_0, cXyz const* i_srcPos, int i_anmMtxIdx,
cXyz* param_3, csXyz* i_arrowPosP) {
cXyz dst_pos;
mDoMtx_multVecSR(mModel->i_getAnmMtx(i_anmMtxIdx),i_srcPos,&dst_pos);
i_arrowPosP->x = dst_pos.atan2sY_XZ();
i_arrowPosP->y = dst_pos.atan2sX_Z();
mDoMtx_multVec(mModel->i_getAnmMtx(i_anmMtxIdx),param_0,param_3);
}
#pragma pop