mirror of
https://github.com/zeldaret/tp
synced 2026-08-21 22:41:04 -04:00
d_a_e_yd_leaf and d_a_e_ph done (#2070)
* d_a_e_yd_leaf done * d_a_e_ph OK * remove asm * some e_ph doc * match dBgS_Acch, fix f_op_actor_mng weak funcs * dBgS_Acch done * cleanup dBgS Chk TUs * d_a_obj done
This commit is contained in:
+162
-267
@@ -1,330 +1,227 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d/a/d_a_obj
|
||||
//
|
||||
/**
|
||||
* d_a_obj.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_obj.h"
|
||||
#include "dol2asm.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi();
|
||||
extern "C" void make_eff_break_kotubo__5daObjFP10fopAc_ac_c();
|
||||
extern "C" void make_eff_break_kotubo2__5daObjFP10fopAc_ac_c();
|
||||
extern "C" void make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c();
|
||||
extern "C" void make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c();
|
||||
extern "C" void posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff();
|
||||
extern "C" static void func_800373F0();
|
||||
extern "C" static void func_800374EC();
|
||||
extern "C" void posMoveF_grade__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzffPC4cXyzffPC4cXyz();
|
||||
extern "C" void quat_rotBaseY__5daObjFP10QuaternionRC4cXyz();
|
||||
extern "C" void HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl();
|
||||
extern "C" void GetCoCP__12cCcD_CylAttrFv();
|
||||
extern "C" void GetCoCP__12cCcD_SphAttrFv();
|
||||
extern "C" extern char const* const d_a_d_a_obj__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void __dt__4cXyzFv();
|
||||
extern "C" void fopAcM_posMove__FP10fopAc_ac_cPC4cXyz();
|
||||
extern "C" void dComIfGp_getReverb__Fi();
|
||||
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
||||
extern "C" void
|
||||
setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc();
|
||||
extern "C" void
|
||||
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
|
||||
extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv();
|
||||
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
|
||||
extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv();
|
||||
extern "C" void checkMasterSwordEquip__9daPy_py_cFv();
|
||||
extern "C" void __mi__4cXyzCFRC3Vec();
|
||||
extern "C" void __ml__4cXyzCFf();
|
||||
extern "C" void __dv__4cXyzCFf();
|
||||
extern "C" void outprod__4cXyzCFRC3Vec();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void cM3d_CrawVec__FRC3VecRC3VecP3Vec();
|
||||
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void __register_global_object();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _savegpr_26();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" void _restgpr_26();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" u8 mTsubo__13dPa_control_c[64];
|
||||
extern "C" f32 Zero__4cXyz[3];
|
||||
extern "C" u8 BaseY__4cXyz[12];
|
||||
extern "C" u8 sincosTable___5JMath[65536];
|
||||
extern "C" extern u8 struct_80450DF0[8];
|
||||
extern "C" u8 mEcallback__18dPa_modelEcallBack[4];
|
||||
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803792A8-803792A8 005908 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_803792A8 = "Always";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_803792AF = "";
|
||||
#pragma pop
|
||||
|
||||
/* 80451D98-80451D9C 000398 0004+00 6/6 0/0 0/0 .sdata2 @3671 */
|
||||
SECTION_SDATA2 static f32 lit_3671 = 1.0f;
|
||||
namespace daObj {
|
||||
|
||||
/* 80037038-80037180 031978 0148+00 4/4 0/0 0/0 .text eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
// Matches with literals
|
||||
void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2) {
|
||||
void eff_break_tsubo(fopAc_ac_c* i_actor, cXyz i_scale, int i_type) {
|
||||
J3DModelData* tubo_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 0x20);
|
||||
J3DAnmTexPattern* tubo_btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", 0x42);
|
||||
|
||||
s32 roomNo = fopAcM_GetRoomNo(param_0);
|
||||
s32 roomNo = fopAcM_GetRoomNo(i_actor);
|
||||
|
||||
// not sure what's up with mEcallback. Probably the argument type for dComIfGp_particle_set is wrong.
|
||||
JPABaseEmitter* emitter = (JPABaseEmitter*)dComIfGp_particle_set(
|
||||
0x15C, ¶m_0->current.pos, NULL, NULL, 0xFF, (dPa_modelEcallBack*)&dPa_modelEcallBack::mEcallback,
|
||||
roomNo, NULL, NULL, ¶m_1);
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_set(
|
||||
dPa_name::ZI_J_M_tuboHahen_e, &i_actor->current.pos, NULL, NULL, 0xFF,
|
||||
(dPa_modelEcallBack*)&dPa_modelEcallBack::mEcallback, roomNo, NULL, NULL, &i_scale);
|
||||
|
||||
dPa_modelEcallBack::setModel(emitter, tubo_bmd, param_0->mTevStr, 3, tubo_btp, 0, param_2);
|
||||
dPa_modelEcallBack::setModel(emitter, tubo_bmd, i_actor->mTevStr, 3, tubo_btp, 0, i_type);
|
||||
|
||||
s32 roomNo2 = fopAcM_GetRoomNo(param_0);
|
||||
dComIfGp_particle_set(0x15D, ¶m_0->current.pos, NULL, NULL, 0xFF,
|
||||
dPa_control_c::getTsuboSelectTexEcallBack(param_2),
|
||||
roomNo2, NULL, NULL, ¶m_1);
|
||||
s32 roomNo2 = fopAcM_GetRoomNo(i_actor);
|
||||
dComIfGp_particle_set(dPa_name::ZI_J_tuboHahen_e, &i_actor->current.pos, NULL, NULL, 0xFF,
|
||||
dPa_control_c::getTsuboSelectTexEcallBack(i_type), roomNo2, NULL, NULL,
|
||||
&i_scale);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804245E8-804245F4 051308 000C+00 1/1 0/0 0/0 .bss @3677 */
|
||||
static u8 lit_3677[12];
|
||||
|
||||
/* 804245F4-80424600 051314 000C+00 1/1 0/0 0/0 .bss scale$3676 */
|
||||
static f32 scale_3676[3];
|
||||
|
||||
/* 80037180-80037210 031AC0 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo__5daObjFP10fopAc_ac_c
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) {
|
||||
void make_eff_break_kotubo(fopAc_ac_c* i_actor) {
|
||||
static cXyz scale(1.0f, 1.0f, 1.0f);
|
||||
|
||||
eff_break_tsubo(param_0, scale, 0);
|
||||
eff_break_tsubo(i_actor, scale, 0);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/make_eff_break_kotubo__5daObjFP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80424600-8042460C 051320 000C+00 1/1 0/0 0/0 .bss @3692 */
|
||||
static u8 lit_3692[12];
|
||||
|
||||
/* 8042460C-80424618 05132C 000C+00 1/1 0/0 0/0 .bss scale$3691 */
|
||||
static f32 scale_3691[3];
|
||||
|
||||
/* 80037210-800372A0 031B50 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo2__5daObjFP10fopAc_ac_c
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) {
|
||||
void make_eff_break_kotubo2(fopAc_ac_c* i_actor) {
|
||||
static cXyz scale(1.0f, 1.0f, 1.0f);
|
||||
|
||||
eff_break_tsubo(param_0, scale, 1);
|
||||
eff_break_tsubo(i_actor, scale, 1);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/make_eff_break_kotubo2__5daObjFP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80424618-80424624 051338 000C+00 1/1 0/0 0/0 .bss @3719 */
|
||||
static u8 lit_3719[12];
|
||||
|
||||
/* 80424624-80424630 051344 000C+00 1/1 0/0 0/0 .bss scale$3718 */
|
||||
static f32 scale_3718[3];
|
||||
|
||||
/* 800372A0-80037330 031BE0 0090+00 0/0 0/0 1/1 .text
|
||||
* make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) {
|
||||
void make_eff_break_gm_kotubo(fopAc_ac_c* i_actor) {
|
||||
static cXyz scale(1.0f, 1.0f, 1.0f);
|
||||
|
||||
eff_break_tsubo(param_0, scale, 3);
|
||||
eff_break_tsubo(i_actor, scale, 3);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80424630-8042463C 051350 000C+00 1/1 0/0 0/0 .bss @3732 */
|
||||
static u8 lit_3732[12];
|
||||
|
||||
/* 8042463C-80424648 05135C 000C+00 1/1 0/0 0/0 .bss scale$3731 */
|
||||
static f32 scale_3731[3];
|
||||
|
||||
/* 80451D9C-80451DA0 00039C 0004+00 1/1 0/0 0/0 .sdata2 @3714 */
|
||||
SECTION_SDATA2 static f32 lit_3714 = 2.0f;
|
||||
|
||||
/* 80037330-800373C0 031C70 0090+00 0/0 0/0 1/1 .text
|
||||
* make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) {
|
||||
void make_eff_break_gm_ootubo(fopAc_ac_c* i_actor) {
|
||||
static cXyz scale(2.0f, 2.0f, 2.0f);
|
||||
|
||||
eff_break_tsubo(param_0, scale, 4);
|
||||
eff_break_tsubo(i_actor, scale, 4);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451DA0-80451DA4 0003A0 0004+00 4/4 0/0 0/0 .sdata2 @3801 */
|
||||
SECTION_SDATA2 static u8 lit_3801[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
|
||||
/* 800373C0-800373F0 031D00 0030+00 0/0 0/0 4/4 .text
|
||||
* posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::posMoveF_stream(fopAc_ac_c* param_0, cXyz const* param_1, cXyz const* param_2,
|
||||
f32 param_3, f32 param_4) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/posMoveF_stream__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzff.s"
|
||||
void posMoveF_stream(fopAc_ac_c* i_actor, cXyz const* param_1, cXyz const* param_2, f32 param_3,
|
||||
f32 param_4) {
|
||||
posMoveF_grade(i_actor, param_1, param_2, param_3, param_4, NULL, 0.0f, 0.0f, NULL);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451DA4-80451DA8 0003A4 0004+00 2/2 0/0 0/0 .sdata2 @3836 */
|
||||
SECTION_SDATA2 static f32 lit_3836 = -1.0f;
|
||||
|
||||
/* 800373F0-800374EC 031D30 00FC+00 1/1 0/0 0/0 .text
|
||||
* posMoveF_resist_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzff */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void func_800373F0() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/func_800373F0.s"
|
||||
|
||||
namespace {
|
||||
void posMoveF_resist_acc(cXyz* pos, const fopAc_ac_c* i_actor, cXyz const* stream_spd, f32 param_3,
|
||||
f32 param_4) {
|
||||
const cXyz sp20 = i_actor->speed - *stream_spd;
|
||||
cXyz sp14(sp20.x * param_3, sp20.y * param_3, sp20.z * param_3);
|
||||
|
||||
sp14.x += param_4 * (sp20.x * fabsf(sp20.x));
|
||||
sp14.y += param_4 * (sp20.y * fabsf(sp20.y));
|
||||
sp14.z += param_4 * (sp20.z * fabsf(sp20.z));
|
||||
|
||||
sp14 *= -1.0f;
|
||||
pos->set(sp14);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800374EC-80037620 031E2C 0134+00 1/1 0/0 0/0 .text
|
||||
* posMoveF_grade_acc__Q25daObj21@unnamed@d_a_obj_cpp@FP4cXyzPC10fopAc_ac_cPC4cXyzffPC4cXyzPC4cXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void func_800374EC() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/func_800374EC.s"
|
||||
void posMoveF_grade_acc(cXyz* pos, const fopAc_ac_c* i_actor, cXyz const* param_2, f32 friction,
|
||||
f32 no_grade_cos, const cXyz* param_5, const cXyz* param_6) {
|
||||
pos->set(cXyz::Zero);
|
||||
|
||||
if (param_2 != NULL) {
|
||||
cXyz sp28(*param_5);
|
||||
sp28.y += i_actor->mGravity;
|
||||
|
||||
if (param_6 != NULL) {
|
||||
sp28 += *param_6;
|
||||
}
|
||||
|
||||
if (sp28.inprod(*param_2) < 0.0f) {
|
||||
if (param_2->y <= no_grade_cos) {
|
||||
cXyz sp34;
|
||||
cM3d_CrawVec(*param_2, sp28, &sp34);
|
||||
*pos += sp34;
|
||||
}
|
||||
|
||||
cXyz sp40;
|
||||
cM3d_CrawVec(*param_2, i_actor->speed, &sp40);
|
||||
*pos -= sp40 * friction;
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
} // namespace
|
||||
|
||||
/* 80037620-80037788 031F60 0168+00 1/1 0/0 0/0 .text
|
||||
* posMoveF_grade__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzffPC4cXyzffPC4cXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::posMoveF_grade(fopAc_ac_c* param_0, cXyz const* param_1, cXyz const* param_2,
|
||||
f32 param_3, f32 param_4, cXyz const* param_5, f32 param_6,
|
||||
f32 param_7, cXyz const* param_8) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/posMoveF_grade__5daObjFP10fopAc_ac_cPC4cXyzPC4cXyzffPC4cXyzffPC4cXyz.s"
|
||||
void posMoveF_grade(fopAc_ac_c* i_actor, cXyz const* param_1, cXyz const* stream_spd, f32 param_3,
|
||||
f32 param_4, cXyz const* param_5, f32 friction, f32 no_grade_cos,
|
||||
cXyz const* param_8) {
|
||||
JUT_ASSERT(stream_spd != 0);
|
||||
|
||||
cXyz spAC;
|
||||
posMoveF_resist_acc(&spAC, i_actor, stream_spd, param_3, param_4);
|
||||
|
||||
JUT_ASSERT((friction >= 0.0f) && (friction < 1.0f) && (no_grade_cos >= 0.0f) &&
|
||||
(no_grade_cos <= 1.0f));
|
||||
|
||||
cXyz spB8;
|
||||
posMoveF_grade_acc(&spB8, i_actor, param_5, friction, no_grade_cos, &spAC, param_8);
|
||||
|
||||
f32 speedF = fopAcM_GetSpeedF(i_actor);
|
||||
f32 gravity = fopAcM_GetGravity(i_actor);
|
||||
cXyz& speed_p = fopAcM_GetSpeed_p(i_actor);
|
||||
|
||||
f32 speed_x = spB8.x + (spAC.x + (speedF * cM_ssin(i_actor->current.angle.y)));
|
||||
f32 speed_y = spB8.y + (spAC.y + (speed_p.y + gravity));
|
||||
f32 speed_z = spB8.z + (spAC.z + (speedF * cM_scos(i_actor->current.angle.y)));
|
||||
|
||||
if (param_8 != NULL) {
|
||||
speed_x += param_8->x;
|
||||
speed_y += param_8->y;
|
||||
speed_z += param_8->z;
|
||||
}
|
||||
|
||||
if (speed_y < fopAcM_GetMaxFallSpeed(i_actor)) {
|
||||
speed_y = fopAcM_GetMaxFallSpeed(i_actor);
|
||||
}
|
||||
|
||||
fopAcM_SetSpeed(i_actor, speed_x, speed_y, speed_z);
|
||||
fopAcM_SetSpeedF(i_actor, JMAFastSqrt((speed_x * speed_x) + (speed_z * speed_z)));
|
||||
i_actor->current.angle.y = cM_atan2s(speed_x, speed_z);
|
||||
fopAcM_posMove(i_actor, param_1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80379298-803792A8 0058F8 0010+00 1/1 0/0 0/0 .rodata zero_quat$3920 */
|
||||
SECTION_RODATA static f32 const zero_quat[4] = {
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
1.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80379298, &zero_quat);
|
||||
|
||||
/* 80451DA8-80451DB0 0003A8 0004+04 1/1 0/0 0/0 .sdata2 @3956 */
|
||||
SECTION_SDATA2 static f32 lit_3956[1 + 1 /* padding */] = {
|
||||
9.99999905104687e-09f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80037788-80037900 0320C8 0178+00 0/0 0/0 1/1 .text quat_rotBaseY__5daObjFP10QuaternionRC4cXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::quat_rotBaseY(Quaternion* param_0, cXyz const& param_1) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/quat_rotBaseY__5daObjFP10QuaternionRC4cXyz.s"
|
||||
void quat_rotBaseY(Quaternion* quat, cXyz const& param_1) {
|
||||
static const Quaternion zero_quat = {0.0f, 0.0f, 0.0f, 1.0f};
|
||||
|
||||
f32 var_f31 = param_1.abs2();
|
||||
if (var_f31 > 9.999999E-9f) {
|
||||
cXyz sp4C = cXyz::BaseY.outprod(param_1);
|
||||
|
||||
f32 var_f30 = sp4C.abs2();
|
||||
if (var_f30 > 9.999999E-9f) {
|
||||
cXyz sp58 = param_1 / var_f31;
|
||||
f32 var_f1 = acos(cXyz::BaseY.inprod(sp58));
|
||||
sp4C /= JMAFastSqrt(var_f30);
|
||||
mDoMtx_quatRotAxisRad(quat, &sp4C, var_f1);
|
||||
} else {
|
||||
*quat = zero_quat;
|
||||
}
|
||||
} else {
|
||||
*quat = zero_quat;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80037900-80037A4C 032240 014C+00 0/0 0/0 3/3 .text
|
||||
* HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObj::HitSeStart(cXyz const* param_0, int param_1, dCcD_GObjInf const* param_2,
|
||||
u32 param_3) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_obj/HitSeStart__5daObjFPC4cXyziPC12dCcD_GObjInfUl.s"
|
||||
void HitSeStart(cXyz const* i_sePos, int i_roomNo, dCcD_GObjInf const* i_CcObj, u32 param_3) {
|
||||
int hit_se = const_cast<dCcD_GObjInf*>(i_CcObj)->GetTgHitObjSe();
|
||||
fopAc_ac_c* hit_actor = const_cast<dCcD_GObjInf*>(i_CcObj)->GetTgHitAc();
|
||||
cCcD_Obj* hit_obj = const_cast<dCcD_GObjInf*>(i_CcObj)->GetTgHitObj();
|
||||
bool master_sword_hit = false;
|
||||
u32 sfx;
|
||||
|
||||
if (hit_se != dCcD_SE_NONE) {
|
||||
if (hit_actor != NULL && hit_obj != NULL) {
|
||||
if (hit_obj->ChkAtType(AT_TYPE_8000)) {
|
||||
sfx = Z2SE_HIT_HAMMER;
|
||||
} else if (hit_obj->ChkAtType(AT_TYPE_ARROW)) {
|
||||
sfx = Z2SE_HIT_ARROW_REBOUND;
|
||||
} else if (hit_obj->ChkAtType(AT_TYPE_HOOKSHOT)) {
|
||||
sfx = Z2SE_HIT_HOOKSHOT_REBOUND;
|
||||
} else {
|
||||
if (fopAcM_GetProfName(hit_actor) == PROC_ALINK &&
|
||||
daPy_py_c::checkMasterSwordEquip())
|
||||
{
|
||||
master_sword_hit = true;
|
||||
}
|
||||
|
||||
if (hit_se == dCcD_SE_WOOD) {
|
||||
sfx = Z2SE_HIT_WOOD_WEAPON;
|
||||
} else if (hit_se == dCcD_SE_METAL) {
|
||||
sfx = Z2SE_HIT_HOOKSHOT_REBOUND;
|
||||
} else if (master_sword_hit) {
|
||||
sfx = Z2SE_HIT_SWORD;
|
||||
} else {
|
||||
sfx = Z2SE_HIT_SWORD;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s8 reverb = dComIfGp_getReverb(i_roomNo);
|
||||
mDoAud_seStart(sfx, i_sePos, param_3 & 0xFF, (s8)reverb);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
} // namespace daObj
|
||||
|
||||
/* 80037A4C-80037A54 03238C 0008+00 0/0 2/0 0/0 .text GetCoCP__12cCcD_CylAttrFv */
|
||||
#pragma push
|
||||
@@ -347,5 +244,3 @@ extern "C" asm void GetCoCP__12cCcD_SphAttrFv() {
|
||||
#include "asm/d/a/d_a_obj/GetCoCP__12cCcD_SphAttrFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803792A8-803792A8 005908 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
Reference in New Issue
Block a user