mirror of https://github.com/zeldaret/tp.git
d_a_obj_flag 95% (#2341)
* Started work on d_a_obj_stick * Lots of green * Fixed mAcch vtable * Only missing switch/if problem in create * All green * Set stick matching * Cleanup * Addressed PR comments * Reset vscode config * Started d_a_obj_flag * More work on flag * More work on flag * Flag 60% * Flag progress * 80% done * 87% done * 95% * Some more work * Addressed PR comments * Switched c for 99
This commit is contained in:
parent
acad3dba2a
commit
e876797c3d
|
|
@ -2,11 +2,21 @@
|
|||
#define D_A_OBJ_FLAG_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/actor/d_a_set_bgobj.h"
|
||||
|
||||
static int createSolidHeap(fopAc_ac_c*);
|
||||
static int nodeCallBack(J3DJoint*, int);
|
||||
|
||||
class FlagJoint_c {
|
||||
public:
|
||||
/* 80BEC3BC */ ~FlagJoint_c();
|
||||
/* 80BEC4E0 */ FlagJoint_c();
|
||||
|
||||
csXyz mJoint1;
|
||||
csXyz mJoint2;
|
||||
csXyz mJoint3;
|
||||
s16 mRv;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -18,6 +28,21 @@ public:
|
|||
*
|
||||
*/
|
||||
class daObjFlag_c : public fopAc_ac_c {
|
||||
private:
|
||||
/* 0x568 */ J3DModel* mpModel1;
|
||||
/* 0x56c */ J3DModel* mpModel2;
|
||||
/* 0x570 */ request_of_phase_process_class mPhase;
|
||||
/* 0x578 */ request_of_phase_process_class mPhase2;
|
||||
/* 0x580 */ FlagJoint_c mFlagJoints[4];
|
||||
/* 0x5d0 */ cXyz mPos;
|
||||
/* 0x5dc */ f32 field_0x5dc;
|
||||
/* 0x5e0 */ s16 field_0x5e0;
|
||||
/* 0x5e2 */ s16 field_0x5e2;
|
||||
/* 0x5e4 */ s16 field_0x5e4;
|
||||
/* 0x5e6 */ s16 field_0x5e6;
|
||||
/* 0x5e8 */ s16 field_0x5e8;
|
||||
/* 0x5ea */ u8 field_0x568[0x5ec - 0x5ea];
|
||||
|
||||
public:
|
||||
/* 80BEB778 */ void create_init();
|
||||
/* 80BEB8F0 */ void initBaseMtx();
|
||||
|
|
@ -25,12 +50,119 @@ public:
|
|||
/* 80BEB9AC */ void calcJointAngle();
|
||||
/* 80BEBC58 */ void calcAngleSwingZ(FlagJoint_c*, f32);
|
||||
/* 80BEBDAC */ void calcAngleSwingX(FlagJoint_c*, f32);
|
||||
/* 80BEBE64 */ void getSwingY(f32);
|
||||
/* 80BEBE64 */ f32 getSwingY(f32);
|
||||
|
||||
static u8 const M_attr[52];
|
||||
~daObjFlag_c() {
|
||||
dComIfG_resDelete(&this->mPhase, "FlagObj");
|
||||
dComIfG_resDelete(&this->mPhase2, daSetBgObj_c::getArcName(this));
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x5ec - 0x568];
|
||||
int create() {
|
||||
fopAcM_SetupActor(this, daObjFlag_c);
|
||||
|
||||
int phase_state = dComIfG_resLoad(&mPhase, "FlagObj");
|
||||
if (phase_state != cPhs_COMPLEATE_e) {
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
phase_state = dComIfG_resLoad(&mPhase2, daSetBgObj_c::getArcName(this));
|
||||
if(phase_state == cPhs_COMPLEATE_e) {
|
||||
if(!fopAcM_entrySolidHeap(this, createSolidHeap, 0x4000)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
create_init();
|
||||
}
|
||||
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
int execute() {
|
||||
if (mpModel1 == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
calcJointAngle();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr);
|
||||
dComIfGd_setListBG();
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel2, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel2);
|
||||
|
||||
if(mpModel1 != NULL) {
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel1, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel1);
|
||||
}
|
||||
|
||||
dComIfGd_setList();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int createHeap() {
|
||||
bool tmp = 0;
|
||||
s8 angle = (u8)shape_angle.x;
|
||||
if(angle <= -1 || angle > 99) {
|
||||
tmp = false;
|
||||
}
|
||||
else {
|
||||
tmp = true;
|
||||
|
||||
char resName[12];
|
||||
sprintf(resName, "flag%02d.bmd");
|
||||
|
||||
shape_angle.setall(0);
|
||||
current.angle.setall(0);
|
||||
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("FlagObj", resName);
|
||||
mpModel1 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
|
||||
for(u8 i = 0; i < 5; i += 1) {
|
||||
J3DJoint* nodePtr = (J3DJoint*)((u64)mpModel1->getModelData()->getJointNodePointer(i));
|
||||
if(nodePtr != NULL) {
|
||||
nodePtr->setCallBack(nodeCallBack);
|
||||
mpModel1->setUserArea((u64)this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mpModel2 = mDoExt_J3DModel__create((J3DModelData *)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), "model0.bmd"), 0x80000, 0x11000084);
|
||||
if(mpModel2 == NULL && tmp && mpModel1 == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct M_attrs {
|
||||
/* 0x00 */ f32 field_0x00;
|
||||
/* 0x04 */ f32 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0c */ s16 field_0x0c;
|
||||
/* 0x0e */ s16 field_0x0e;
|
||||
/* 0x10 */ s16 fielx_0x10;
|
||||
/* 0x12 */ s16 fielx_0x12;
|
||||
/* 0x14 */ s16 field_0x14;
|
||||
/* 0x16 */ s16 field_0x16;
|
||||
/* 0x18 */ s16 field_0x18;
|
||||
/* 0x1a */ s16 field_0x1a;
|
||||
/* 0x1c */ s16 field_0x1c;
|
||||
/* 0x1e */ s16 field_0x1e;
|
||||
/* 0x20 */ s16 field_0x20;
|
||||
/* 0x22 */ s16 field_0x22;
|
||||
/* 0x24 */ u8 field_0x24;
|
||||
/* 0x25 */ u8 field_0x25;
|
||||
/* 0x26 */ u8 field_0x26;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2c */ f32 field_0x2c;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
};
|
||||
|
||||
static M_attrs const M_attr;
|
||||
static M_attrs const& attr() { return M_attr; }
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjFlag_c) == 0x5ec);
|
||||
|
|
|
|||
|
|
@ -6,235 +6,214 @@
|
|||
#include "d/actor/d_a_obj_flag.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void create_init__11daObjFlag_cFv();
|
||||
extern "C" void initBaseMtx__11daObjFlag_cFv();
|
||||
extern "C" void getJointAngle__11daObjFlag_cFP5csXyzi();
|
||||
extern "C" void calcJointAngle__11daObjFlag_cFv();
|
||||
extern "C" void calcAngleSwingZ__11daObjFlag_cFP11FlagJoint_cf();
|
||||
extern "C" void calcAngleSwingX__11daObjFlag_cFP11FlagJoint_cf();
|
||||
extern "C" void getSwingY__11daObjFlag_cFf();
|
||||
extern "C" static void nodeCallBack__FP8J3DJointi();
|
||||
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
|
||||
extern "C" static void daObjFlag_Draw__FP11daObjFlag_c();
|
||||
extern "C" static void daObjFlag_Execute__FP11daObjFlag_c();
|
||||
extern "C" static bool daObjFlag_IsDelete__FP11daObjFlag_c();
|
||||
extern "C" static void daObjFlag_Delete__FP11daObjFlag_c();
|
||||
extern "C" void __dt__11FlagJoint_cFv();
|
||||
extern "C" static void daObjFlag_Create__FP10fopAc_ac_c();
|
||||
extern "C" void __ct__11FlagJoint_cFv();
|
||||
extern "C" u8 const M_attr__11daObjFlag_c[52];
|
||||
extern "C" extern char const* const d_a_obj_flag__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_XrotM__FPA4_fs();
|
||||
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
||||
extern "C" void mDoMtx_ZrotM__FPA4_fs();
|
||||
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
|
||||
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
|
||||
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void __dt__10fopAc_ac_cFv();
|
||||
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void getArcName__12daSetBgObj_cFP10fopAc_ac_c();
|
||||
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
|
||||
extern "C" void dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf();
|
||||
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
|
||||
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
|
||||
extern "C" void __apl__5csXyzFR5csXyz();
|
||||
extern "C" void __mi__5csXyzFR5csXyz();
|
||||
extern "C" void __ml__5csXyzFf();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void cM_rnd__Fv();
|
||||
extern "C" void cLib_addCalcAngleS__FPsssss();
|
||||
extern "C" void cLib_chaseS__FPsss();
|
||||
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __destroy_arr();
|
||||
extern "C" void __construct_array();
|
||||
extern "C" void __cvt_fp2unsigned();
|
||||
extern "C" void _savegpr_26();
|
||||
extern "C" void _restgpr_26();
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" u8 mCurrentMtx__6J3DSys[48];
|
||||
extern "C" u8 sincosTable___5JMath[65536];
|
||||
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC4EC-80BEC520 000000 0034+00 4/4 0/0 0/0 .rodata M_attr__11daObjFlag_c */
|
||||
SECTION_RODATA u8 const daObjFlag_c::M_attr[52] = {
|
||||
0x45, 0x7A, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3E, 0x99, 0x99, 0x9A, 0x00,
|
||||
0x0F, 0x07, 0xD0, 0x05, 0xDC, 0x0F, 0xA0, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0xE8, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2C, 0x01, 0x01, 0x00,
|
||||
0x00, 0x46, 0x3B, 0x80, 0x00, 0x45, 0x3B, 0x80, 0x00, 0x46, 0x3B, 0x80, 0x00,
|
||||
daObjFlag_c::M_attrs const daObjFlag_c::M_attr = {
|
||||
4000.0f, 1.0f, 0.3f,
|
||||
15, 2000, 1500, 4000,
|
||||
1800, 0, 0, 1000, 400,
|
||||
0, 0, 300, 1, 1, 0,
|
||||
12000.0f, 3000.0f, 12000.0f
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BEC4EC, &daObjFlag_c::M_attr);
|
||||
|
||||
/* 80BEC520-80BEC524 000034 0004+00 1/1 0/0 0/0 .rodata @3637 */
|
||||
SECTION_RODATA static f32 const lit_3637 = 65535.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC520, &lit_3637);
|
||||
// /* 80BEC524-80BEC52C 000038 0008+00 1/1 0/0 0/0 .rodata @3639 */
|
||||
// SECTION_RODATA static u8 const lit_3639[8] = {
|
||||
// 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
// };
|
||||
// COMPILER_STRIP_GATE(0x80BEC524, &lit_3639);
|
||||
|
||||
/* 80BEC524-80BEC52C 000038 0008+00 1/1 0/0 0/0 .rodata @3639 */
|
||||
SECTION_RODATA static u8 const lit_3639[8] = {
|
||||
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BEC524, &lit_3639);
|
||||
|
||||
/* 80BEC554-80BEC554 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80BEC554 = "spec.dat";
|
||||
#pragma pop
|
||||
|
||||
/* 80BEB778-80BEB8F0 000078 0178+00 1/1 0/0 0/0 .text create_init__11daObjFlag_cFv */
|
||||
void daObjFlag_c::create_init() {
|
||||
// NONMATCHING
|
||||
field_0x5dc = (*(u32*)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), "spec.dat")) & 0xffff;
|
||||
mPos = cXyz(current.pos.x, current.pos.y + field_0x5dc, current.pos.z);
|
||||
mFlagJoints[0].mRv = (short)(cM_rnd() * 65535.0f);
|
||||
mFlagJoints[1].mRv = (short)(cM_rnd() * 65535.0f);
|
||||
mFlagJoints[2].mRv = mFlagJoints[1].mRv;
|
||||
mFlagJoints[3].mRv = mFlagJoints[2].mRv;
|
||||
|
||||
field_0x5e2 = (short)(cM_rnd() * 65535.0f);
|
||||
field_0x5e4 = (short)(cM_rnd() * 65535.0f);
|
||||
field_0x5e6 = (short)(cM_rnd() * 65535.0f);
|
||||
field_0x5e8 = (short)(cM_rnd() * 65535.0f);
|
||||
|
||||
initBaseMtx();
|
||||
}
|
||||
|
||||
/* 80BEB8F0-80BEB984 0001F0 0094+00 1/1 0/0 0/0 .text initBaseMtx__11daObjFlag_cFv */
|
||||
void daObjFlag_c::initBaseMtx() {
|
||||
// NONMATCHING
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
fopAcM_SetMtx(this, mpModel2->mBaseTransformMtx);
|
||||
if (mpModel1 != NULL) {
|
||||
mDoMtx_stack_c::transS(mPos);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel1->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
fopAcM_SetMtx(this, mpModel1->mBaseTransformMtx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80BEB984-80BEB9AC 000284 0028+00 1/1 0/0 0/0 .text getJointAngle__11daObjFlag_cFP5csXyzi */
|
||||
void daObjFlag_c::getJointAngle(csXyz* param_0, int param_1) {
|
||||
// NONMATCHING
|
||||
void daObjFlag_c::getJointAngle(csXyz* i_angle, int i_index) {
|
||||
csXyz* joint = &mFlagJoints[i_index].mJoint1;
|
||||
*i_angle = *joint;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC52C-80BEC530 000040 0004+00 0/3 0/0 0/0 .rodata @3759 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3759[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BEC52C, &lit_3759);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC530-80BEC534 000044 0004+00 0/1 0/0 0/0 .rodata @3760 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3760 = 127.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC530, &lit_3760);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC534-80BEC538 000048 0004+00 0/1 0/0 0/0 .rodata @3761 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3761 = 1.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC534, &lit_3761);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC538-80BEC53C 00004C 0004+00 0/1 0/0 0/0 .rodata @3762 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3762 = -1.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC538, &lit_3762);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC53C-80BEC544 000050 0008+00 1/4 0/0 0/0 .rodata @3764 */
|
||||
SECTION_RODATA static u8 const lit_3764[8] = {
|
||||
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BEC53C, &lit_3764);
|
||||
|
||||
/* 80BEB9AC-80BEBC58 0002AC 02AC+00 1/1 0/0 0/0 .text calcJointAngle__11daObjFlag_cFv */
|
||||
void daObjFlag_c::calcJointAngle() {
|
||||
// NONMATCHING
|
||||
}
|
||||
cXyz* direction;
|
||||
float power;
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC544-80BEC548 000058 0004+00 1/1 0/0 0/0 .rodata @3791 */
|
||||
SECTION_RODATA static f32 const lit_3791 = 7.0f / 10.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC544, &lit_3791);
|
||||
dKyw_get_AllWind_vec(&mPos, direction, &power);
|
||||
if(power > 0.0f) {
|
||||
Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_FLAG_TRAILING, &mPos, power * 127.0f, 0, 1.0, 1.0, -1.0, -1.0, 0);
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS(&field_0x5e0, cM_atan2s(direction->x, direction->z), 4, 0x7fff, 0);
|
||||
FlagJoint_c* joint = &mFlagJoints[0];
|
||||
for(int i = 0; i < 4; i++) {
|
||||
if(power != 0.0f && i != 0) {
|
||||
calcAngleSwingZ(joint, power);
|
||||
}
|
||||
if(i == 0) {
|
||||
joint->mJoint2 = joint->mJoint1;
|
||||
joint->mJoint1.y = (field_0x5e0 + getSwingY(power) * cM_ssin(mFlagJoints[i].mRv));
|
||||
joint->mRv += (short)(power * attr().field_0x28);
|
||||
joint->mJoint3 = csXyz() - joint->mJoint2;
|
||||
}
|
||||
else {
|
||||
joint->mJoint2 = joint->mJoint1;
|
||||
joint->mJoint3 = joint->mJoint3 * attr().field_0x04;
|
||||
joint->mJoint1 += joint->mJoint3;
|
||||
cLib_addCalcAngleS(&joint->mJoint1.y, 0, attr().field_0x0c, 0x7fff, 0);
|
||||
joint->mJoint3 = joint->mJoint1 - joint->mJoint2;
|
||||
}
|
||||
|
||||
if((u8)attr().field_0x25 != NULL) {
|
||||
joint->mJoint1.x = 0;
|
||||
}
|
||||
else if(i == 1) {
|
||||
calcAngleSwingX(joint, power);
|
||||
}
|
||||
|
||||
joint += 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80BEBC58-80BEBDAC 000558 0154+00 1/1 0/0 0/0 .text
|
||||
* calcAngleSwingZ__11daObjFlag_cFP11FlagJoint_cf */
|
||||
void daObjFlag_c::calcAngleSwingZ(FlagJoint_c* param_0, f32 param_1) {
|
||||
// NONMATCHING
|
||||
}
|
||||
void daObjFlag_c::calcAngleSwingZ(FlagJoint_c* param_0, f32 param_1) {
|
||||
f32 swing = param_1 * -(attr().field_0x0e / 0.7f) + attr().field_0x0e / 0.7f;
|
||||
f32 tmp = attr().field_0x1a * cM_ssin(field_0x5e8);
|
||||
field_0x5e8 = field_0x5e8 + attr().field_0x22;
|
||||
swing += tmp;
|
||||
|
||||
if(swing > attr().field_0x2c) {
|
||||
swing = attr().field_0x2c;
|
||||
}
|
||||
|
||||
if(attr().field_0x24 != 0) {
|
||||
param_0->mJoint1.z = (swing * cM_ssin(param_0->mRv));
|
||||
} else {
|
||||
param_0->mJoint1.z = (attr().field_0x0e * cM_ssin(param_0->mRv));
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC548-80BEC54C 00005C 0004+00 0/1 0/0 0/0 .rodata @3803 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3803 = 16384.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC548, &lit_3803);
|
||||
#pragma pop
|
||||
param_0->mRv += (s16)(param_1 * attr().field_0x30);
|
||||
}
|
||||
|
||||
/* 80BEBDAC-80BEBE64 0006AC 00B8+00 1/1 0/0 0/0 .text
|
||||
* calcAngleSwingX__11daObjFlag_cFP11FlagJoint_cf */
|
||||
void daObjFlag_c::calcAngleSwingX(FlagJoint_c* param_0, f32 param_1) {
|
||||
// NONMATCHING
|
||||
float tmp = 16384.0f / attr().field_0x08;
|
||||
float swing = tmp * param_1 - 16384.0f;
|
||||
if(swing > 0.0f) {
|
||||
swing = 0.0f;
|
||||
}
|
||||
|
||||
if(param_0->mJoint1.x > swing) {
|
||||
cLib_addCalcAngleS(¶m_0->mJoint1.x, -swing, 0x1e, 0x7fff, -0x7fff);
|
||||
} else {
|
||||
cLib_chaseS(¶m_0->mJoint1.x, -swing, 500);
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC54C-80BEC550 000060 0004+00 0/1 0/0 0/0 .rodata @3832 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u32 const lit_3832 = 0x45D05555;
|
||||
COMPILER_STRIP_GATE(0x80BEC54C, &lit_3832);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC550-80BEC554 000064 0004+00 0/1 0/0 0/0 .rodata @3833 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3833 = 4000.0f;
|
||||
COMPILER_STRIP_GATE(0x80BEC550, &lit_3833);
|
||||
#pragma pop
|
||||
|
||||
/* 80BEBE64-80BEBFC8 000764 0164+00 1/1 0/0 0/0 .text getSwingY__11daObjFlag_cFf */
|
||||
void daObjFlag_c::getSwingY(f32 param_0) {
|
||||
// NONMATCHING
|
||||
f32 daObjFlag_c::getSwingY(f32 param_0) {
|
||||
f32 swing = param_0 * 6666.6665f;
|
||||
if(swing > 4000.0f) {
|
||||
swing = 4000.0f;
|
||||
}
|
||||
if(param_0 == 0) {
|
||||
return swing;
|
||||
}
|
||||
|
||||
float var3 = (float)attr().field_0x14 * cM_ssin(field_0x5e2);
|
||||
float var4 = (float)attr().field_0x16 * cM_ssin(field_0x5e4);
|
||||
float var5 = (float)attr().field_0x18 * cM_ssin(field_0x5e6);
|
||||
|
||||
if(attr().field_0x1c == 0) {
|
||||
var3 = 0.0;
|
||||
}
|
||||
if(attr().field_0x1e == 0) {
|
||||
var4 = 0.0;
|
||||
}
|
||||
if(attr().field_0x20 == 0) {
|
||||
var5 = 0.0;
|
||||
}
|
||||
|
||||
field_0x5e2 = field_0x5e2 + attr().field_0x1c;
|
||||
field_0x5e4 += attr().field_0x1e;
|
||||
field_0x5e6 += attr().field_0x20;
|
||||
|
||||
return (int)(short)((swing + var3) + var4 + var5);
|
||||
}
|
||||
|
||||
/* 80BEBFC8-80BEC0B8 0008C8 00F0+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
|
||||
static void nodeCallBack(J3DJoint* param_0, int param_1) {
|
||||
// NONMATCHING
|
||||
static int nodeCallBack(J3DJoint* joint, int param_1) {
|
||||
switch(param_1) {
|
||||
default:
|
||||
return 1;
|
||||
case 0:
|
||||
csXyz rotation;
|
||||
u32 jointNo = joint->getJntNo();
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
|
||||
((daObjFlag_c*)model->getUserArea())->getJointAngle(&rotation, jointNo);
|
||||
mDoMtx_stack_c::copy(model->getAnmMtx(jointNo));
|
||||
|
||||
if(rotation.x != 0) {
|
||||
mDoMtx_stack_c::XrotM(rotation.x);
|
||||
}
|
||||
if(rotation.z != 0) {
|
||||
mDoMtx_stack_c::ZrotM(rotation.z);
|
||||
}
|
||||
if(rotation.y != 0) {
|
||||
mDoMtx_stack_c::YrotM(rotation.y);
|
||||
}
|
||||
|
||||
MtxP now = mDoMtx_stack_c::get();
|
||||
model->setAnmMtx(jointNo, now);
|
||||
cMtx_copy(now, j3dSys.mCurrentMtx);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BEC554-80BEC554 000068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80BEC55D = "flag%02d.bmd";
|
||||
SECTION_DEAD static char const* const stringBase_80BEC56A = "FlagObj";
|
||||
SECTION_DEAD static char const* const stringBase_80BEC572 = "model0.bmd";
|
||||
#pragma pop
|
||||
|
||||
/* 80BEC0B8-80BEC234 0009B8 017C+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
|
||||
static void createSolidHeap(fopAc_ac_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int createSolidHeap(fopAc_ac_c* param_0) {
|
||||
return static_cast<daObjFlag_c*>(param_0)->createHeap();
|
||||
}
|
||||
|
||||
/* 80BEC234-80BEC300 000B34 00CC+00 1/0 0/0 0/0 .text daObjFlag_Draw__FP11daObjFlag_c */
|
||||
static void daObjFlag_Draw(daObjFlag_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daObjFlag_Draw(daObjFlag_c* param_0) {
|
||||
return param_0->draw();
|
||||
}
|
||||
|
||||
/* 80BEC300-80BEC338 000C00 0038+00 1/0 0/0 0/0 .text daObjFlag_Execute__FP11daObjFlag_c
|
||||
*/
|
||||
static void daObjFlag_Execute(daObjFlag_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daObjFlag_Execute(daObjFlag_c* param_0) {
|
||||
return param_0->execute();
|
||||
}
|
||||
|
||||
/* 80BEC338-80BEC340 000C38 0008+00 1/0 0/0 0/0 .text daObjFlag_IsDelete__FP11daObjFlag_c
|
||||
|
|
@ -245,18 +224,18 @@ static bool daObjFlag_IsDelete(daObjFlag_c* param_0) {
|
|||
|
||||
/* 80BEC340-80BEC3BC 000C40 007C+00 1/0 0/0 0/0 .text daObjFlag_Delete__FP11daObjFlag_c
|
||||
*/
|
||||
static void daObjFlag_Delete(daObjFlag_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daObjFlag_Delete(daObjFlag_c* param_0) {
|
||||
param_0->~daObjFlag_c();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80BEC3BC-80BEC3F8 000CBC 003C+00 2/2 0/0 0/0 .text __dt__11FlagJoint_cFv */
|
||||
FlagJoint_c::~FlagJoint_c() {
|
||||
// NONMATCHING
|
||||
}
|
||||
FlagJoint_c::~FlagJoint_c() {}
|
||||
|
||||
/* 80BEC3F8-80BEC4E0 000CF8 00E8+00 1/0 0/0 0/0 .text daObjFlag_Create__FP10fopAc_ac_c */
|
||||
static void daObjFlag_Create(fopAc_ac_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daObjFlag_Create(fopAc_ac_c* param_0) {
|
||||
return static_cast<daObjFlag_c*>(param_0)->create();
|
||||
}
|
||||
|
||||
/* 80BEC4E0-80BEC4E4 000DE0 0004+00 1/1 0/0 0/0 .text __ct__11FlagJoint_cFv */
|
||||
|
|
@ -267,11 +246,11 @@ FlagJoint_c::FlagJoint_c() {
|
|||
/* ############################################################################################## */
|
||||
/* 80BEC580-80BEC5A0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjFlag_Method */
|
||||
static actor_method_class l_daObjFlag_Method = {
|
||||
(process_method_func)daObjFlag_Create__FP10fopAc_ac_c,
|
||||
(process_method_func)daObjFlag_Delete__FP11daObjFlag_c,
|
||||
(process_method_func)daObjFlag_Execute__FP11daObjFlag_c,
|
||||
(process_method_func)daObjFlag_IsDelete__FP11daObjFlag_c,
|
||||
(process_method_func)daObjFlag_Draw__FP11daObjFlag_c,
|
||||
(process_method_func)daObjFlag_Create,
|
||||
(process_method_func)daObjFlag_Delete,
|
||||
(process_method_func)daObjFlag_Execute,
|
||||
(process_method_func)daObjFlag_IsDelete,
|
||||
(process_method_func)daObjFlag_Draw,
|
||||
};
|
||||
|
||||
/* 80BEC5A0-80BEC5D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Flag */
|
||||
|
|
|
|||
Loading…
Reference in New Issue