mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-30 16:35:26 -04:00
f9380b3e05
* d_a_obj_carry work, SETUP_ACTOR macro * rm headers, add script * progress * macro rename, consistent spacing
1715 lines
53 KiB
C++
1715 lines
53 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: a/obj/d_a_obj_item
|
|
//
|
|
|
|
#include "d/a/d_a_obj_item.h"
|
|
#include "d/a/d_a_player.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/d_item.h"
|
|
#include "d/d_item_data.h"
|
|
#include "dol2asm.h"
|
|
#include "global.h"
|
|
#include "m_Do/m_Do_mtx.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof();
|
|
extern "C" void getData__12daItemBase_cFv();
|
|
extern "C" void initBaseMtx__8daItem_cFv();
|
|
extern "C" void setBaseMtx__8daItem_cFv();
|
|
extern "C" void setBaseMtx_0__8daItem_cFv();
|
|
extern "C" void setBaseMtx_1__8daItem_cFv();
|
|
extern "C" static void
|
|
itemGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
|
|
extern "C" static void
|
|
itemGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
|
|
extern "C" void CreateInit__8daItem_cFv();
|
|
extern "C" void setCullInfo__8daItem_cFv();
|
|
extern "C" void _daItem_create__8daItem_cFv();
|
|
extern "C" void __dt__16Z2SoundObjSimpleFv();
|
|
extern "C" void _daItem_execute__8daItem_cFv();
|
|
extern "C" void _daItem_draw__8daItem_cFv();
|
|
extern "C" void _daItem_delete__8daItem_cFv();
|
|
extern "C" void procInitNormal__8daItem_cFv();
|
|
extern "C" void procMainNormal__8daItem_cFv();
|
|
extern "C" void procMainEnemyCarry__8daItem_cFv();
|
|
extern "C" void procInitForceGet__8daItem_cFv();
|
|
extern "C" void procMainForceGet__8daItem_cFv();
|
|
extern "C" void procInitSimpleGetDemo__8daItem_cFv();
|
|
extern "C" void procMainSimpleGetDemo__8daItem_cFv();
|
|
extern "C" void procInitGetDemoEvent__8daItem_cFv();
|
|
extern "C" void procWaitGetDemoEvent__8daItem_cFv();
|
|
extern "C" void procMainGetDemoEvent__8daItem_cFv();
|
|
extern "C" void procInitBoomerangCarry__8daItem_cFv();
|
|
extern "C" void procMainBoomerangCarry__8daItem_cFv();
|
|
extern "C" void procInitSwOnWait__8daItem_cFv();
|
|
extern "C" void procMainSwOnWait__8daItem_cFv();
|
|
extern "C" void procInitBoomHitWait__8daItem_cFv();
|
|
extern "C" void procMainBoomHitWait__8daItem_cFv();
|
|
extern "C" void move_proc_call__8daItem_cFv();
|
|
extern "C" void mode_wait_init__8daItem_cFv();
|
|
extern "C" void mode_water_init__8daItem_cFv();
|
|
extern "C" void mode_wait__8daItem_cFv();
|
|
extern "C" void mode_water__8daItem_cFv();
|
|
extern "C" void setTevStr__8daItem_cFv();
|
|
extern "C" void itemGetNextExecute__8daItem_cFv();
|
|
extern "C" void itemGet__8daItem_cFv();
|
|
extern "C" void checkCountTimer__8daItem_cFv();
|
|
extern "C" void checkPlayerGet__8daItem_cFv();
|
|
extern "C" void checkYogan__8daItem_cFv();
|
|
extern "C" void deleteItem__8daItem_cFv();
|
|
extern "C" void itemActionForRupee__8daItem_cFv();
|
|
extern "C" void itemActionForHeart__8daItem_cFv();
|
|
extern "C" void itemActionForArrow__8daItem_cFv();
|
|
extern "C" void itemActionForBoomerang__8daItem_cFv();
|
|
extern "C" void bg_check__8daItem_cFv();
|
|
extern "C" void set_bound_se__8daItem_cFv();
|
|
extern "C" void CountTimer__8daItem_cFv();
|
|
extern "C" void initAction__8daItem_cFv();
|
|
extern "C" void initFlag__8daItem_cFv();
|
|
extern "C" void initScale__8daItem_cFv();
|
|
extern "C" void initSpeed__8daItem_cFi();
|
|
extern "C" void initAngle__8daItem_cFv();
|
|
extern "C" static void daItem_Draw__FP8daItem_c();
|
|
extern "C" static void daItem_Execute__FP8daItem_c();
|
|
extern "C" static void daItem_Delete__FP8daItem_c();
|
|
extern "C" static void daItem_Create__FP10fopAc_ac_c();
|
|
extern "C" void __sinit_d_a_obj_item_cpp();
|
|
extern "C" void getItemPos__9daPy_py_cCFv();
|
|
extern "C" void getLeftHandPos__9daPy_py_cCFv();
|
|
extern "C" extern char const* const a_obj_d_a_obj_item__stringBase0;
|
|
extern "C" u8 mFuncPtr__8daItem_c[120];
|
|
extern "C" u8 m_cyl_src__8daItem_c[68];
|
|
extern "C" u32 m_timer_max__8daItem_c[1 + 1 /* padding */];
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void mDoMtx_YrotS__FPA4_fs();
|
|
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
|
|
extern "C" void transM__14mDoMtx_stack_cFfff();
|
|
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
|
|
extern "C" void __ct__10fopAc_ac_cFv();
|
|
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
|
|
extern "C" void fopAcM_delete__FUi();
|
|
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
|
|
extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
|
|
extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
|
|
extern "C" void fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs();
|
|
extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz();
|
|
extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff();
|
|
extern "C" void lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c();
|
|
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
|
extern "C" void dComIfGp_getReverb__Fi();
|
|
extern "C" void offFirstBit__21dSv_player_get_item_cFUc();
|
|
extern "C" void isSwitch__10dSv_info_cCFii();
|
|
extern "C" void onItem__10dSv_info_cFii();
|
|
extern "C" void isItem__10dSv_info_cCFii();
|
|
extern "C" void hide__12daItemBase_cFv();
|
|
extern "C" void show__12daItemBase_cFv();
|
|
extern "C" void changeDraw__12daItemBase_cFv();
|
|
extern "C" void chkDraw__12daItemBase_cFv();
|
|
extern "C" void CheckFieldItemCreateHeap__FP10fopAc_ac_c();
|
|
extern "C" void reset__14dEvt_control_cFv();
|
|
extern "C" void setPtI_Id__14dEvt_control_cFUi();
|
|
extern "C" void endCheckOld__16dEvent_manager_cFPCc();
|
|
extern "C" void __ct__19dPa_followEcallBackFUcUc();
|
|
extern "C" void
|
|
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
|
|
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
|
|
extern "C" void ChkMoveBG_NoDABg__4dBgSFRC13cBgS_PolyInfo();
|
|
extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
|
|
extern "C" void __ct__12dBgS_AcchCirFv();
|
|
extern "C" void SetWall__12dBgS_AcchCirFff();
|
|
extern "C" void __ct__9dBgS_AcchFv();
|
|
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
|
|
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
|
|
extern "C" void SetMoveBGOnly__9dBgS_AcchFv();
|
|
extern "C" void ClrMoveBGOnly__9dBgS_AcchFv();
|
|
extern "C" void SetObj__16dBgS_PolyPassChkFv();
|
|
extern "C" void __ct__10dCcD_GSttsFv();
|
|
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
|
|
extern "C" void __ct__12dCcD_GObjInfFv();
|
|
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
|
|
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
|
|
extern "C" void ChkCoHit__12dCcD_GObjInfFv();
|
|
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
|
|
extern "C" void execItemGet__FUc();
|
|
extern "C" void checkItemGet__FUci();
|
|
extern "C" void isHeart__FUc();
|
|
extern "C" u8 func_80141AE8(u8*);
|
|
extern "C" void DeleteBase__12daItemBase_cFPCc();
|
|
extern "C" bool clothCreate__12daItemBase_cFv();
|
|
extern "C" bool __CreateHeap__12daItemBase_cFv();
|
|
extern "C" void DrawBase__12daItemBase_cFv();
|
|
extern "C" void RotateYBase__12daItemBase_cFv();
|
|
extern "C" void setListStart__12daItemBase_cFv();
|
|
extern "C" void settingBeforeDraw__12daItemBase_cFv();
|
|
extern "C" void setShadow__12daItemBase_cFv();
|
|
extern "C" void animEntry__12daItemBase_cFv();
|
|
extern "C" void animPlay__12daItemBase_cFffffff();
|
|
extern "C" void chkFlag__12daItemBase_cFi();
|
|
extern "C" void getTevFrm__12daItemBase_cFv();
|
|
extern "C" void getBtpFrm__12daItemBase_cFv();
|
|
extern "C" void getShadowSize__12daItemBase_cFv();
|
|
extern "C" void getCollisionH__12daItemBase_cFv();
|
|
extern "C" void getCollisionR__12daItemBase_cFv();
|
|
extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz();
|
|
extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs();
|
|
extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz();
|
|
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
|
|
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
|
|
extern "C" void Set__4cCcSFP8cCcD_Obj();
|
|
extern "C" void __pl__4cXyzCFRC3Vec();
|
|
extern "C" void __mi__4cXyzCFRC3Vec();
|
|
extern "C" void __ml__4cXyzCFf();
|
|
extern "C" bool __eq__4cXyzCFRC3Vec();
|
|
extern "C" bool __ne__4cXyzCFRC3Vec();
|
|
extern "C" void cM_atan2s__Fff();
|
|
extern "C" void cM_rndF__Ff();
|
|
extern "C" void cM_rndFX__Ff();
|
|
extern "C" void SetC__8cM3dGCylFRC4cXyz();
|
|
extern "C" void SetH__8cM3dGCylFf();
|
|
extern "C" void SetR__8cM3dGCylFf();
|
|
extern "C" void cLib_chaseF__FPfff();
|
|
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
|
extern "C" void __dt__14Z2SoundObjBaseFv();
|
|
extern "C" void deleteObject__14Z2SoundObjBaseFv();
|
|
extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase();
|
|
extern "C" void __ct__16Z2SoundObjSimpleFv();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void __ptmf_test();
|
|
extern "C" void __ptmf_scall();
|
|
extern "C" void __cvt_fp2unsigned();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" u8 const m_data__12daItemBase_c[56];
|
|
extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
|
|
extern "C" extern void* __vt__8cM3dGPla[3];
|
|
extern "C" extern void* __vt__8cM3dGCyl[3];
|
|
extern "C" extern void* __vt__8cM3dGAab[3];
|
|
extern "C" extern void* __vt__8dCcD_Cyl[36];
|
|
extern "C" extern void* __vt__9dCcD_Stts[11];
|
|
extern "C" void* field_item_res__10dItem_data[1020];
|
|
extern "C" u8 item_info__10dItem_data[1020 + 4 /* padding */];
|
|
extern "C" extern void* __vt__12dBgS_ObjAcch[9];
|
|
extern "C" extern void* __vt__12daItemBase_c[17 + 1 /* padding */];
|
|
extern "C" extern void* __vt__12cCcD_CylAttr[25];
|
|
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
|
|
extern "C" extern void* __vt__9cCcD_Stts[8];
|
|
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
|
|
extern "C" u8 now__14mDoMtx_stack_c[48];
|
|
extern "C" u8 sincosTable___5JMath[65536];
|
|
extern "C" extern u8 data_80451010[8];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453550-80453558 001B50 0004+04 11/11 0/0 0/0 .sdata2 @3857 */
|
|
SECTION_SDATA2 static f32 lit_3857[1 + 1 /* padding */] = {
|
|
0.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 80453558-80453560 001B58 0008+00 2/2 0/0 0/0 .sdata2 @3858 */
|
|
SECTION_SDATA2 static f64 lit_3858 = 0.5;
|
|
|
|
/* 80453560-80453568 001B60 0008+00 2/2 0/0 0/0 .sdata2 @3859 */
|
|
SECTION_SDATA2 static f64 lit_3859 = 3.0;
|
|
|
|
/* 80453568-80453570 001B68 0008+00 2/2 0/0 0/0 .sdata2 @3860 */
|
|
SECTION_SDATA2 static u8 lit_3860[8] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 8015ADCC-8015B0B8 15570C 02EC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void Reflect(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/Reflect__FP4cXyzRC13cBgS_PolyInfof.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015B0B8-8015B0C4 1559F8 000C+00 10/10 1/1 1/1 .text getData__12daItemBase_cFv */
|
|
const daItemBase_data& daItemBase_c::getData() {
|
|
return m_data;
|
|
}
|
|
|
|
/* 8015B0C4-8015B108 155A04 0044+00 1/1 0/0 0/0 .text initBaseMtx__8daItem_cFv */
|
|
void daItem_c::initBaseMtx() {
|
|
if (mpModel != NULL) {
|
|
mpModel->setBaseScale(mScale);
|
|
setBaseMtx();
|
|
}
|
|
}
|
|
|
|
/* 8015B108-8015B190 155A48 0088+00 2/2 0/0 0/0 .text setBaseMtx__8daItem_cFv */
|
|
void daItem_c::setBaseMtx() {
|
|
if (mpModel != NULL) {
|
|
mpModel->setBaseScale(mScale);
|
|
|
|
switch (m_itemNo) {
|
|
case GREEN_RUPEE:
|
|
case BLUE_RUPEE:
|
|
case YELLOW_RUPEE:
|
|
case RED_RUPEE:
|
|
case PURPLE_RUPEE:
|
|
case ORANGE_RUPEE:
|
|
case SILVER_RUPEE:
|
|
setBaseMtx_1();
|
|
break;
|
|
default:
|
|
setBaseMtx_0();
|
|
break;
|
|
}
|
|
|
|
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
}
|
|
|
|
/* 8015B190-8015B1C8 155AD0 0038+00 1/1 0/0 0/0 .text setBaseMtx_0__8daItem_cFv */
|
|
void daItem_c::setBaseMtx_0() {
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453570-80453574 001B70 0004+00 3/3 0/0 0/0 .sdata2 @3923 */
|
|
SECTION_SDATA2 static f32 lit_3923 = 0.5f;
|
|
|
|
/* 8015B1C8-8015B254 155B08 008C+00 1/1 0/0 0/0 .text setBaseMtx_1__8daItem_cFv */
|
|
// literals / load instructions flipped
|
|
#ifdef NONMATCHING
|
|
void daItem_c::setBaseMtx_1() {
|
|
f32 max_y = mpModel->getModelData()->getJointNodePointer(0)->getMax()->y;
|
|
f32 y = max_y * 0.5f * mScale.y;
|
|
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::transM(0.0f, y, 0.0f);
|
|
|
|
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
|
mDoMtx_stack_c::transM(0.0f, -y, 0.0f);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::setBaseMtx_1() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/setBaseMtx_1__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015B254-8015B320 155B94 00CC+00 2/2 0/0 0/0 .text
|
|
* itemGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void itemGetCoCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2,
|
|
dCcD_GObjInf* param_3) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015B320-8015B3D8 155C60 00B8+00 2/2 0/0 0/0 .text
|
|
* itemGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void itemGetTgCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2,
|
|
dCcD_GObjInf* param_3) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 803B9DA0-803B9DAC 016EC0 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
|
|
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 803B9DAC-803B9DB8 -00001 000C+00 0/1 0/0 0/0 .data @4679 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_4679[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)mode_wait__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9DB8-803B9DC4 -00001 000C+00 0/1 0/0 0/0 .data @4680 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_4680[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)mode_water__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9DC4-803B9DDC 016EE4 0018+00 0/1 0/0 0/0 .data mode_proc$4678 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static u8 mode_proc[24] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9DDC-803B9E04 -00001 0028+00 1/1 0/0 0/0 .data @5171 */
|
|
SECTION_DATA static void* lit_5171[10] = {
|
|
(void*)(((char*)initFlag__8daItem_cFv) + 0x28), (void*)(((char*)initFlag__8daItem_cFv) + 0x50),
|
|
(void*)(((char*)initFlag__8daItem_cFv) + 0x28), (void*)(((char*)initFlag__8daItem_cFv) + 0x78),
|
|
(void*)(((char*)initFlag__8daItem_cFv) + 0x114), (void*)(((char*)initFlag__8daItem_cFv) + 0xA0),
|
|
(void*)(((char*)initFlag__8daItem_cFv) + 0xC8), (void*)(((char*)initFlag__8daItem_cFv) + 0xF0),
|
|
(void*)(((char*)initFlag__8daItem_cFv) + 0x28), (void*)(((char*)initFlag__8daItem_cFv) + 0x28),
|
|
};
|
|
|
|
/* 803B9E04-803B9E2C -00001 0028+00 1/1 0/0 0/0 .data @5193 */
|
|
SECTION_DATA static void* lit_5193[10] = {
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x28),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x28),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x28),
|
|
(void*)(((char*)initScale__8daItem_cFv) + 0x3C),
|
|
};
|
|
|
|
/* 803B9E2C-803B9E38 -00001 000C+00 0/1 0/0 0/0 .data @5240 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5240[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainNormal__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E38-803B9E44 -00001 000C+00 0/1 0/0 0/0 .data @5241 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5241[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainEnemyCarry__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E44-803B9E50 -00001 000C+00 0/1 0/0 0/0 .data @5242 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5242[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainSimpleGetDemo__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E50-803B9E5C -00001 000C+00 0/1 0/0 0/0 .data @5243 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5243[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procWaitGetDemoEvent__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E5C-803B9E68 -00001 000C+00 0/1 0/0 0/0 .data @5244 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5244[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainGetDemoEvent__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E68-803B9E74 -00001 000C+00 0/1 0/0 0/0 .data @5245 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5245[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainBoomerangCarry__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E74-803B9E80 -00001 000C+00 0/1 0/0 0/0 .data @5246 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5246[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainSwOnWait__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E80-803B9E8C -00001 000C+00 0/1 0/0 0/0 .data @5247 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5247[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainBoomHitWait__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E8C-803B9E98 -00001 000C+00 0/1 0/0 0/0 .data @5248 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DATA static void* lit_5248[3] = {
|
|
(void*)NULL,
|
|
(void*)0xFFFFFFFF,
|
|
(void*)procMainForceGet__8daItem_cFv,
|
|
};
|
|
#pragma pop
|
|
|
|
/* 803B9E98-803B9F10 016FB8 0078+00 1/2 0/0 0/0 .data mFuncPtr__8daItem_c */
|
|
SECTION_DATA u8 daItem_c::mFuncPtr[120] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 procFunc daItem_c::mFuncPtr[9] = {
|
|
&daItem_c::procMainNormal, &daItem_c::procMainEnemyCarry, &daItem_c::procMainSimpleGetDemo,
|
|
&daItem_c::procWaitGetDemoEvent, &daItem_c::procMainGetDemoEvent,
|
|
&daItem_c::procMainBoomerangCarry, &daItem_c::procMainSwOnWait, &daItem_c::procMainBoomHitWait,
|
|
&daItem_c::procMainForceGet,
|
|
}; */
|
|
|
|
/* 803B9F10-803B9F54 017030 0044+00 1/1 0/0 0/0 .data m_cyl_src__8daItem_c */
|
|
dCcD_SrcCyl daItem_c::m_cyl_src = {
|
|
{
|
|
{0, {{0, 0, 0}, {0xFFFFFFFF, 17}, 0x59}},
|
|
{dCcD_SE_NONE, 0, 0, 0, {0}},
|
|
{dCcD_SE_NONE, 0, 0, 0, {4}},
|
|
{0},
|
|
},
|
|
{
|
|
{0.0f, 0.0f, 0.0f},
|
|
10.0f,
|
|
50.0f,
|
|
},
|
|
};
|
|
|
|
/* 80453574-80453578 001B74 0004+00 1/1 0/0 0/0 .sdata2 @4067 */
|
|
SECTION_SDATA2 static f32 lit_4067 = 30.0f;
|
|
|
|
/* 80453578-8045357C 001B78 0004+00 1/1 0/0 0/0 .sdata2 @4068 */
|
|
SECTION_SDATA2 static f32 lit_4068 = 10000.0f;
|
|
|
|
/* 8045357C-80453580 001B7C 0004+00 7/7 0/0 0/0 .sdata2 @4069 */
|
|
SECTION_SDATA2 static f32 lit_4069 = 1.0f;
|
|
|
|
/* 80453580-80453588 001B80 0004+04 2/2 0/0 0/0 .sdata2 @4070 */
|
|
SECTION_SDATA2 static f32 lit_4070[1 + 1 /* padding */] = {
|
|
150.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 80453588-80453590 001B88 0008+00 3/3 0/0 0/0 .sdata2 @4072 */
|
|
SECTION_SDATA2 static f64 lit_4072 = 4503599627370496.0 /* cast u32 to float */;
|
|
|
|
/* 8015B3D8-8015B7BC 155D18 03E4+00 1/1 0/0 0/0 .text CreateInit__8daItem_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void daItem_c::CreateInit() {
|
|
mAcchCir.SetWall(30.0f, 30.0f);
|
|
mAcch.Set(¤t.pos, &next.pos, this, 1, &mAcchCir, &speed, NULL, NULL);
|
|
mAcch.ClrWaterNone();
|
|
mAcch.ClrRoofNone();
|
|
mAcch.SetWtrChkMode(2);
|
|
mAcch.SetWaterCheckOffset(10000.0f);
|
|
|
|
mColStatus.Init(0, 0xFF, this);
|
|
mCollider.Set(m_cyl_src);
|
|
mCollider.SetStts(&mColStatus);
|
|
mCollider.SetCoHitCallback(itemGetCoCallBack);
|
|
mCollider.SetTgHitCallback(itemGetTgCallBack);
|
|
|
|
f32 cylHeight = dItem_data::getH(m_itemNo);
|
|
f32 cylRadius = dItem_data::getR(m_itemNo);
|
|
|
|
if (mScale.x > 1.0f) {
|
|
cylHeight *= mScale.x;
|
|
cylRadius *= mScale.x;
|
|
}
|
|
|
|
mCollider.SetR(cylRadius);
|
|
mCollider.SetH(cylHeight);
|
|
|
|
setCullInfo();
|
|
|
|
field_0x942 = getData().field_0x16;
|
|
field_0x944 = getData().field_0x18;
|
|
|
|
procInitNormal();
|
|
show();
|
|
|
|
field_0x930.setAll(1.0f);
|
|
|
|
switch (daItem_prm::getType(this)) {
|
|
case 5:
|
|
hide();
|
|
procInitBoomHitWait();
|
|
break;
|
|
case 7:
|
|
procInitForceGet();
|
|
break;
|
|
case 4:
|
|
procInitSimpleGetDemo();
|
|
procMainSimpleGetDemo();
|
|
break;
|
|
default:
|
|
case 6:
|
|
field_0x93c = daItem_prm::getSwitchNo(this);
|
|
if (field_0x93c != 0xFF && !i_fopAcM_isSwitch(this, field_0x93c)) {
|
|
hide();
|
|
setFlag(8);
|
|
procInitSwOnWait();
|
|
}
|
|
break;
|
|
}
|
|
|
|
initAction();
|
|
initBaseMtx();
|
|
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
|
|
|
if (m_itemNo == BOOMERANG) {
|
|
itemGetNextExecute();
|
|
} else if ((m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) &&
|
|
field_0x998.getEmitter() == NULL) {
|
|
dComIfGp_particle_set(0x0C14, &field_0x9ac, NULL, NULL, -1, &field_0x998, -1, NULL, NULL,
|
|
NULL);
|
|
}
|
|
|
|
field_0x978.init(¤t.pos, 1);
|
|
|
|
f32 old_speedF = speedF;
|
|
cXyz old_speed = speed;
|
|
|
|
mAcch.CrrPos(dComIfG_Bgsp());
|
|
|
|
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > orig.pos.y + 150.0f) {
|
|
field_0x9c0 = 1;
|
|
}
|
|
|
|
if (daItem_prm::checkInWater(this) == true) {
|
|
field_0x9c0 = 1;
|
|
}
|
|
|
|
speedF = old_speedF;
|
|
speed = old_speed;
|
|
|
|
mAcch.ClrGroundLanding();
|
|
mAcch.i_ClrGroundHit();
|
|
mAcch.ClrWaterHit();
|
|
mAcch.ClrWaterIn();
|
|
mAcch.ClrWallHit();
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::CreateInit() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/CreateInit__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015B7BC-8015B7D4 1560FC 0018+00 1/1 0/0 0/0 .text setCullInfo__8daItem_cFv */
|
|
void daItem_c::setCullInfo() {
|
|
if (mpModel != NULL) {
|
|
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 803B9F54-803B9F74 -00001 0020+00 1/0 0/0 0/0 .data l_daItem_Method */
|
|
SECTION_DATA static void* l_daItem_Method[8] = {
|
|
(void*)daItem_Create__FP10fopAc_ac_c,
|
|
(void*)daItem_Delete__FP8daItem_c,
|
|
(void*)daItem_Execute__FP8daItem_c,
|
|
(void*)NULL,
|
|
(void*)daItem_Draw__FP8daItem_c,
|
|
(void*)NULL,
|
|
(void*)NULL,
|
|
(void*)NULL,
|
|
};
|
|
|
|
/* 803B9F74-803B9FA4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_ITEM */
|
|
SECTION_DATA extern void* g_profile_ITEM[12] = {
|
|
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
|
(void*)0x02180000, (void*)&g_fpcLf_Method,
|
|
(void*)0x000009C4, (void*)NULL,
|
|
(void*)NULL, (void*)&g_fopAc_Method,
|
|
(void*)0x00EC0000, (void*)&l_daItem_Method,
|
|
(void*)0x000C0100, (void*)0x000F0000,
|
|
};
|
|
|
|
/* 803B9FA4-803BA078 0170C4 0044+90 1/1 0/0 0/0 .data __vt__8daItem_c */
|
|
SECTION_DATA extern void* __vt__8daItem_c[17 + 36 /* padding */] = {
|
|
(void*)NULL /* RTTI */,
|
|
(void*)NULL,
|
|
(void*)DrawBase__12daItemBase_cFv,
|
|
(void*)setListStart__12daItemBase_cFv,
|
|
(void*)settingBeforeDraw__12daItemBase_cFv,
|
|
(void*)setTevStr__8daItem_cFv,
|
|
(void*)setShadow__12daItemBase_cFv,
|
|
(void*)animEntry__12daItemBase_cFv,
|
|
(void*)RotateYBase__12daItemBase_cFv,
|
|
(void*)clothCreate__12daItemBase_cFv,
|
|
(void*)__CreateHeap__12daItemBase_cFv,
|
|
(void*)chkFlag__12daItemBase_cFi,
|
|
(void*)getTevFrm__12daItemBase_cFv,
|
|
(void*)getBtpFrm__12daItemBase_cFv,
|
|
(void*)getShadowSize__12daItemBase_cFv,
|
|
(void*)getCollisionH__12daItemBase_cFv,
|
|
(void*)getCollisionR__12daItemBase_cFv,
|
|
/* padding */
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
/* 8015B7D4-8015BA3C 156114 0268+00 1/1 0/0 0/0 .text _daItem_create__8daItem_cFv */
|
|
// matches, but issues with vtable
|
|
#ifdef NONMATCHING
|
|
int daItem_c::_daItem_create() {
|
|
fopAcM_SetupActor(this, daItem_c);
|
|
|
|
if (!field_0x95d) {
|
|
field_0x92c = orig.angle.x;
|
|
field_0x92e = orig.angle.z;
|
|
orig.angle.z = 0;
|
|
orig.angle.x = 0;
|
|
current.angle.z = 0;
|
|
current.angle.x = 0;
|
|
shape_angle.z = 0;
|
|
shape_angle.x = 0;
|
|
|
|
field_0x95d = true;
|
|
}
|
|
|
|
m_itemNo = daItem_prm::getItemNo(this);
|
|
BOOL flag = dItem_data::chkFlag(m_itemNo, 2);
|
|
field_0x920 = daItem_prm::getItemBitNo(this);
|
|
|
|
if (fopAcM_isItem(this, field_0x920)) {
|
|
return cPhs_ERROR_e;
|
|
} else {
|
|
int phase_state = cPhs_COMPLEATE_e;
|
|
|
|
if (flag) {
|
|
CreateInit();
|
|
} else {
|
|
phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo));
|
|
|
|
if (phase_state == cPhs_COMPLEATE_e) {
|
|
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)CheckFieldItemCreateHeap,
|
|
dItem_data::getFieldHeapSize(m_itemNo))) {
|
|
return cPhs_ERROR_e;
|
|
} else {
|
|
CreateInit();
|
|
}
|
|
}
|
|
}
|
|
|
|
return phase_state;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int daItem_c::_daItem_create() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/_daItem_create__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015BA3C-8015BA9C 15637C 0060+00 0/0 1/1 0/0 .text __dt__16Z2SoundObjSimpleFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm Z2SoundObjSimple::~Z2SoundObjSimple() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/__dt__16Z2SoundObjSimpleFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453590-80453594 001B90 0004+00 1/1 0/0 0/0 .sdata2 @4320 */
|
|
SECTION_SDATA2 static f32 lit_4320 = 300.0f;
|
|
|
|
/* 80453594-80453598 001B94 0004+00 1/1 0/0 0/0 .sdata2 @4321 */
|
|
SECTION_SDATA2 static f32 lit_4321 = 18.0f;
|
|
|
|
/* 8015BA9C-8015BD84 1563DC 02E8+00 1/1 0/0 0/0 .text _daItem_execute__8daItem_cFv */
|
|
// eyepos.y issue / need sinit for mFuncPtr
|
|
#ifdef NONMATCHING
|
|
int daItem_c::_daItem_execute() {
|
|
field_0x950 = speed;
|
|
CountTimer();
|
|
|
|
mEyePos = current.pos;
|
|
mEyePos.y += (f32)dItem_data::getH(m_itemNo) * 0.5f;
|
|
|
|
mAttentionInfo.mPosition = current.pos;
|
|
|
|
if (mCollider.ChkTgHit()) {
|
|
cCcD_Obj* hitObj = mCollider.GetTgHitObj();
|
|
if (hitObj != NULL && hitObj->ChkAtType(AT_TYPE_HOOKSHOT)) {
|
|
field_0x978.startCollisionSE(Z2SE_HIT_HOOKSHOT_STICK, 0, NULL);
|
|
}
|
|
}
|
|
|
|
if (mFuncPtr[getStatus()] != NULL) {
|
|
(this->*mFuncPtr[getStatus()])();
|
|
}
|
|
|
|
if (field_0x95f != 0 && !fopAcM_checkHookCarryNow(this)) {
|
|
if (fopAcM_searchPlayerDistance(this) < 300.0f) {
|
|
itemGetNextExecute();
|
|
}
|
|
}
|
|
|
|
if (fopAcM_checkHookCarryNow(this)) {
|
|
cXyz carry_pos = current.pos;
|
|
|
|
if (mpModel != NULL) {
|
|
carry_pos.y += 0.5f * mpModel->getModelData()->getJointNodePointer(0)->getMax()->y;
|
|
}
|
|
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::ZXYrotM(shape_angle);
|
|
mDoMtx_stack_c::inverse();
|
|
mDoMtx_stack_c::multVec(&carry_pos, &carry_pos);
|
|
daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), &carry_pos);
|
|
}
|
|
|
|
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
|
setBaseMtx();
|
|
field_0x978.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
|
|
|
field_0x96c = current.pos;
|
|
field_0x95f = (fopAcM_checkHookCarryNow(this) >> 0x14) & 1;
|
|
|
|
if (m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) {
|
|
field_0x9ac = current.pos;
|
|
field_0x9ac.y += 18.0f;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::_daItem_execute() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/_daItem_execute__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015BD84-8015BDE8 1566C4 0064+00 1/1 0/0 0/0 .text _daItem_draw__8daItem_cFv */
|
|
int daItem_c::_daItem_draw() {
|
|
if (mpModel == NULL) {
|
|
return 1;
|
|
}
|
|
|
|
if (chkDraw()) {
|
|
return DrawBase();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8015BDE8-8015BE60 156728 0078+00 1/1 0/0 0/0 .text _daItem_delete__8daItem_cFv */
|
|
int daItem_c::_daItem_delete() {
|
|
field_0x978.deleteObject();
|
|
|
|
if (m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) {
|
|
field_0x998.remove();
|
|
}
|
|
|
|
DeleteBase(dItem_data::getFieldArc(m_itemNo));
|
|
return 1;
|
|
}
|
|
|
|
/* 8015BE60-8015BEA4 1567A0 0044+00 4/4 0/0 0/0 .text procInitNormal__8daItem_cFv */
|
|
void daItem_c::procInitNormal() {
|
|
mAcch.ClrGrndNone();
|
|
mAcch.ClrMoveBGOnly();
|
|
setStatus(0);
|
|
}
|
|
|
|
/* 8015BEA4-8015BFE8 1567E4 0144+00 1/0 0/0 0/0 .text procMainNormal__8daItem_cFv */
|
|
void daItem_c::procMainNormal() {
|
|
move_proc_call();
|
|
|
|
if (mScale != field_0x930) {
|
|
f32 chase_x = field_0x930.x / getData().field_0xc;
|
|
f32 chase_y = field_0x930.y / getData().field_0xc;
|
|
f32 chase_z = field_0x930.z / getData().field_0xc;
|
|
|
|
cLib_chaseF(&mScale.x, field_0x930.x, chase_x);
|
|
cLib_chaseF(&mScale.y, field_0x930.y, chase_y);
|
|
cLib_chaseF(&mScale.z, field_0x930.z, chase_z);
|
|
}
|
|
|
|
if (field_0x942 == 0) {
|
|
if (field_0x944 == 0) {
|
|
deleteItem();
|
|
}
|
|
|
|
if (field_0x924 % getData().field_0x14 == 0) {
|
|
changeDraw();
|
|
}
|
|
}
|
|
|
|
mCollider.SetC(current.pos);
|
|
dComIfG_Ccsp()->Set(&mCollider);
|
|
}
|
|
|
|
/* 8015BFE8-8015BFEC 156928 0004+00 1/0 0/0 0/0 .text procMainEnemyCarry__8daItem_cFv */
|
|
void daItem_c::procMainEnemyCarry() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 8015BFEC-8015C038 15692C 004C+00 1/1 0/0 0/0 .text procInitForceGet__8daItem_cFv */
|
|
void daItem_c::procInitForceGet() {
|
|
mAcch.ClrGrndNone();
|
|
mAcch.ClrMoveBGOnly();
|
|
setStatus(8);
|
|
itemGetNextExecute();
|
|
}
|
|
|
|
/* 8015C038-8015C058 156978 0020+00 1/0 0/0 0/0 .text procMainForceGet__8daItem_cFv */
|
|
void daItem_c::procMainForceGet() {
|
|
procInitSimpleGetDemo();
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453598-8045359C 001B98 0004+00 3/3 0/0 0/0 .sdata2 @4404 */
|
|
SECTION_SDATA2 static f32 lit_4404 = 15.0f;
|
|
|
|
/* 8015C058-8015C134 156998 00DC+00 4/4 0/0 0/0 .text procInitSimpleGetDemo__8daItem_cFv
|
|
*/
|
|
// literals / addi in wrong place
|
|
#ifdef NONMATCHING
|
|
void daItem_c::procInitSimpleGetDemo() {
|
|
current.pos = daPy_getPlayerActorClass()->getItemPos();
|
|
current.pos.y += 15.0f;
|
|
shape_angle.z = 0;
|
|
shape_angle.x = 0;
|
|
mScale = field_0x930;
|
|
fopAcM_SetSpeed(this, 0, getData().field_0x2c, 0);
|
|
fopAcM_SetGravity(this, getData().field_0x30);
|
|
show();
|
|
field_0x946 = getData().field_0x34;
|
|
fopAcM_SetStatus(this, 0x20000);
|
|
setStatus(2);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::procInitSimpleGetDemo() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/procInitSimpleGetDemo__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015C134-8015C200 156A74 00CC+00 2/1 0/0 0/0 .text procMainSimpleGetDemo__8daItem_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::procMainSimpleGetDemo() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/procMainSimpleGetDemo__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015C200-8015C2A4 156B40 00A4+00 1/1 0/0 0/0 .text procInitGetDemoEvent__8daItem_cFv
|
|
*/
|
|
void daItem_c::procInitGetDemoEvent() {
|
|
hide();
|
|
|
|
if (m_itemNo == ORANGE_RUPEE || m_itemNo == SILVER_RUPEE) {
|
|
field_0x998.remove();
|
|
}
|
|
|
|
field_0x9c1 = 10;
|
|
fopAcM_orderItemEvent(this, 0, 0);
|
|
mEvtInfo.i_onCondition(8);
|
|
|
|
m_item_id = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this),
|
|
NULL, NULL);
|
|
setStatus(3);
|
|
}
|
|
|
|
/* 8015C2A4-8015C3BC 156BE4 0118+00 1/0 0/0 0/0 .text procWaitGetDemoEvent__8daItem_cFv
|
|
*/
|
|
void daItem_c::procWaitGetDemoEvent() {
|
|
if (mEvtInfo.checkCommandItem()) {
|
|
setStatus(4);
|
|
if (m_item_id != -1) {
|
|
dComIfGp_event_setItemPartnerId(m_item_id);
|
|
}
|
|
} else {
|
|
if (m_itemNo == BOOMERANG) {
|
|
fopAcM_orderItemEvent(this, 0, 0);
|
|
mEvtInfo.i_onCondition(8);
|
|
return;
|
|
}
|
|
|
|
if (func_80141AE8(&field_0x9c1) == 0 || checkItemGet(m_itemNo, 1)) {
|
|
fopAcM_delete(m_item_id);
|
|
BOOL haveItem = checkItemGet(m_itemNo, 1);
|
|
|
|
procInitSimpleGetDemo();
|
|
itemGet();
|
|
if (!haveItem) {
|
|
dComIfGs_offItemFirstBit(m_itemNo);
|
|
}
|
|
} else {
|
|
fopAcM_orderItemEvent(this, 0, 0);
|
|
mEvtInfo.i_onCondition(8);
|
|
}
|
|
}
|
|
}
|
|
|
|
inline void dComIfGp_event_reset() {
|
|
g_dComIfG_gameInfo.play.getEvent().reset();
|
|
}
|
|
|
|
/* 8015C3BC-8015C41C 156CFC 0060+00 1/0 0/0 0/0 .text procMainGetDemoEvent__8daItem_cFv
|
|
*/
|
|
void daItem_c::procMainGetDemoEvent() {
|
|
if (dComIfGp_evmng_endCheck("DEFAULT_GETITEM")) {
|
|
dComIfGp_event_reset();
|
|
fopAcM_delete(this);
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 8045359C-804535A0 001B9C 0004+00 2/2 0/0 0/0 .sdata2 @4506 */
|
|
SECTION_SDATA2 static f32 lit_4506 = 2.0f;
|
|
|
|
/* 8015C41C-8015C514 156D5C 00F8+00 1/1 0/0 0/0 .text procInitBoomerangCarry__8daItem_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::procInitBoomerangCarry() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/procInitBoomerangCarry__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535A0-804535A4 001BA0 0004+00 2/2 0/0 0/0 .sdata2 @4524 */
|
|
SECTION_SDATA2 static f32 lit_4524 = 200.0f;
|
|
|
|
/* 8015C514-8015C5F4 156E54 00E0+00 1/0 0/0 0/0 .text procMainBoomerangCarry__8daItem_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::procMainBoomerangCarry() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/procMainBoomerangCarry__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015C5F4-8015C648 156F34 0054+00 1/1 0/0 0/0 .text procInitSwOnWait__8daItem_cFv */
|
|
void daItem_c::procInitSwOnWait() {
|
|
hide();
|
|
|
|
if (daItem_prm::getSwOnWaitTimer(this) == 63) {
|
|
field_0x95c = 15;
|
|
} else {
|
|
field_0x95c = daItem_prm::getSwOnWaitTimer(this);
|
|
}
|
|
|
|
setStatus(6);
|
|
}
|
|
|
|
/* 8015C648-8015C708 156F88 00C0+00 1/0 0/0 0/0 .text procMainSwOnWait__8daItem_cFv */
|
|
void daItem_c::procMainSwOnWait() {
|
|
if (i_fopAcM_isSwitch(this, field_0x93c)) {
|
|
mAcch.CrrPos(dComIfG_Bgsp());
|
|
|
|
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > lit_4070[0] + orig.pos.y) {
|
|
field_0x9c0 = 1;
|
|
}
|
|
|
|
if (daItem_prm::checkInWater(this) == 1) {
|
|
field_0x9c0 = 1;
|
|
}
|
|
|
|
if (func_80141AE8(&field_0x95c) == 0) {
|
|
show();
|
|
procInitNormal();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8015C708-8015C738 157048 0030+00 1/1 0/0 0/0 .text procInitBoomHitWait__8daItem_cFv */
|
|
void daItem_c::procInitBoomHitWait() {
|
|
mCollider.SetCoHitCallback(NULL);
|
|
mCollider.SetTgHitCallback(NULL);
|
|
mCollider.OffCoSPrmBit(1);
|
|
mCollider.SetTgType(0x10020);
|
|
setStatus(7);
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535A4-804535A8 001BA4 0004+00 2/2 0/0 0/0 .sdata2 @4665 */
|
|
SECTION_SDATA2 static f32 lit_4665 = 100.0f;
|
|
|
|
/* 804535A8-804535B0 001BA8 0004+04 2/2 0/0 0/0 .sdata2 @4666 */
|
|
SECTION_SDATA2 static f32 lit_4666[1 + 1 /* padding */] = {
|
|
16383.0f,
|
|
/* padding */
|
|
0.0f,
|
|
};
|
|
|
|
/* 804535B0-804535B8 001BB0 0008+00 3/3 0/0 0/0 .sdata2 @4668 */
|
|
SECTION_SDATA2 static f64 lit_4668 = 4503601774854144.0 /* cast s32 to float */;
|
|
|
|
/* 8015C738-8015CAB8 157078 0380+00 1/0 0/0 0/0 .text procMainBoomHitWait__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::procMainBoomHitWait() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/procMainBoomHitWait__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015CAB8-8015CC4C 1573F8 0194+00 1/1 0/0 0/0 .text move_proc_call__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::move_proc_call() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/move_proc_call__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015CC4C-8015CC88 15758C 003C+00 1/1 0/0 0/0 .text mode_wait_init__8daItem_cFv */
|
|
void daItem_c::mode_wait_init() {
|
|
field_0x949 = 0;
|
|
fopAcM_SetGravity(this, getData().mGravity);
|
|
}
|
|
|
|
/* 8015CC88-8015CCD0 1575C8 0048+00 1/1 0/0 0/0 .text mode_water_init__8daItem_cFv */
|
|
void daItem_c::mode_water_init() {
|
|
field_0x949 = 1;
|
|
f32 tmp_0 = FLOAT_LABEL(lit_3857);
|
|
fopAcM_SetSpeed(this, tmp_0, tmp_0, tmp_0);
|
|
fopAcM_SetSpeedF(this, tmp_0);
|
|
shape_angle.z = 0;
|
|
shape_angle.x = 0;
|
|
field_0x940 = 0;
|
|
mScale = field_0x930;
|
|
}
|
|
|
|
/* 8015CCD0-8015CDCC 157610 00FC+00 1/0 0/0 0/0 .text mode_wait__8daItem_cFv */
|
|
void daItem_c::mode_wait() {
|
|
if (field_0x924 < 5 && speed.y > FLOAT_LABEL(lit_3857)) {
|
|
mAcch.SetGrndNone();
|
|
}
|
|
|
|
switch (m_itemNo) {
|
|
case HEART:
|
|
itemActionForHeart();
|
|
break;
|
|
case ARROW_10:
|
|
case ARROW_20:
|
|
case ARROW_30:
|
|
case ARROW_1:
|
|
case PACHINKO_SHOT:
|
|
case LIGHT_ARROW:
|
|
itemActionForArrow();
|
|
break;
|
|
case BOOMERANG:
|
|
itemActionForBoomerang();
|
|
break;
|
|
case GREEN_RUPEE:
|
|
case BLUE_RUPEE:
|
|
case YELLOW_RUPEE:
|
|
case RED_RUPEE:
|
|
case PURPLE_RUPEE:
|
|
case ORANGE_RUPEE:
|
|
case SILVER_RUPEE:
|
|
default:
|
|
itemActionForRupee();
|
|
break;
|
|
}
|
|
|
|
if (field_0x9c0 == 0 && mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y) {
|
|
mode_water_init();
|
|
}
|
|
|
|
mAcch.ClrGrndNone();
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535B8-804535BC 001BB8 0004+00 1/1 0/0 0/0 .sdata2 @4781 */
|
|
SECTION_SDATA2 static f32 lit_4781 = 1.0f / 10.0f;
|
|
|
|
/* 8015CDCC-8015CE94 15770C 00C8+00 1/0 0/0 0/0 .text mode_water__8daItem_cFv */
|
|
// switch issues
|
|
#ifdef NONMATCHING
|
|
void daItem_c::mode_water() {
|
|
mAcch.CrrPos(dComIfG_Bgsp());
|
|
|
|
if (!mAcch.ChkWaterHit() || mAcch.m_wtr.GetHeight() < current.pos.y) {
|
|
mode_wait_init();
|
|
} else {
|
|
current.pos.y = mAcch.m_wtr.GetHeight();
|
|
}
|
|
|
|
f32 var_f1 = 1.0f;
|
|
switch (m_itemNo) {
|
|
case HEART:
|
|
var_f1 = 0.5f;
|
|
break;
|
|
case ARROW_10:
|
|
case ARROW_20:
|
|
case ARROW_30:
|
|
case ARROW_1:
|
|
case PACHINKO_SHOT:
|
|
break;
|
|
case GREEN_RUPEE:
|
|
case BLUE_RUPEE:
|
|
case YELLOW_RUPEE:
|
|
case RED_RUPEE:
|
|
case PURPLE_RUPEE:
|
|
case ORANGE_RUPEE:
|
|
case SILVER_RUPEE:
|
|
default:
|
|
break;
|
|
}
|
|
|
|
fopAcM_effHamonSet(&field_0x9b8, ¤t.pos, var_f1, 0.1f);
|
|
RotateYBase();
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::mode_water() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/mode_water__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015CE94-8015CEEC 1577D4 0058+00 1/0 0/0 0/0 .text setTevStr__8daItem_cFv */
|
|
void daItem_c::setTevStr() {
|
|
g_env_light.settingTevStruct(0, ¤t.pos, &mTevStr);
|
|
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
|
|
}
|
|
|
|
/* 8015CEEC-8015D0A8 15782C 01BC+00 6/6 0/0 0/0 .text itemGetNextExecute__8daItem_cFv */
|
|
void daItem_c::itemGetNextExecute() {
|
|
if (!checkFlag(0x20) && !checkFlag(0x10)) {
|
|
setFlag(0x10);
|
|
s32 haveItem = false;
|
|
|
|
switch (m_itemNo) {
|
|
case HEART:
|
|
case GREEN_RUPEE:
|
|
case ARROW_10:
|
|
case ARROW_20:
|
|
case ARROW_30:
|
|
case ARROW_1:
|
|
procInitSimpleGetDemo();
|
|
itemGet();
|
|
break;
|
|
case BLUE_RUPEE:
|
|
case YELLOW_RUPEE:
|
|
case RED_RUPEE:
|
|
case PURPLE_RUPEE:
|
|
case ORANGE_RUPEE:
|
|
case SILVER_RUPEE:
|
|
case PACHINKO_SHOT:
|
|
if (daPy_getPlayerActorClass()->checkCanoeRide() ||
|
|
daPy_getPlayerActorClass()->checkHorseRide()) {
|
|
if (checkItemGet(m_itemNo, 1)) {
|
|
haveItem = true;
|
|
}
|
|
procInitSimpleGetDemo();
|
|
itemGet();
|
|
|
|
if (!haveItem) {
|
|
dComIfGs_offItemFirstBit(m_itemNo);
|
|
}
|
|
} else if (!checkItemGet(m_itemNo, 1)) {
|
|
procInitGetDemoEvent();
|
|
} else {
|
|
procInitSimpleGetDemo();
|
|
itemGet();
|
|
}
|
|
break;
|
|
case BOOMERANG:
|
|
procInitGetDemoEvent();
|
|
break;
|
|
}
|
|
|
|
fopAcM_onItem(this, field_0x920);
|
|
mCollider.SetTgType(0);
|
|
mCollider.OffCoSPrmBit(1);
|
|
mCollider.ClrTgHit();
|
|
mCollider.ClrCoHit();
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535BC-804535C0 001BBC 0004+00 3/3 0/0 0/0 .sdata2 @4923 */
|
|
SECTION_SDATA2 static f32 lit_4923 = -1.0f;
|
|
|
|
/* 8015D0A8-8015D370 1579E8 02C8+00 2/2 0/0 0/0 .text itemGet__8daItem_cFv */
|
|
// should be correct but it turns the switch into data?
|
|
#ifdef NONMATCHING
|
|
void daItem_c::itemGet() {
|
|
switch (m_itemNo) {
|
|
case HEART:
|
|
mDoAud_seStart(Z2SE_HEART_PIECE_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case GREEN_RUPEE:
|
|
mDoAud_seStart(Z2SE_GREEN_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case BLUE_RUPEE:
|
|
mDoAud_seStart(Z2SE_BLUE_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case YELLOW_RUPEE:
|
|
mDoAud_seStart(Z2SE_BLUE_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case RED_RUPEE:
|
|
mDoAud_seStart(Z2SE_RED_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case PURPLE_RUPEE:
|
|
mDoAud_seStart(Z2SE_RED_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case ORANGE_RUPEE:
|
|
mDoAud_seStart(Z2SE_RED_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
case SILVER_RUPEE:
|
|
mDoAud_seStart(Z2SE_RED_LUPY_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
default:
|
|
mDoAud_seStart(Z2SE_CONSUMP_ITEM_GET, NULL, 0, 0);
|
|
execItemGet(m_itemNo);
|
|
return;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::itemGet() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemGet__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015D370-8015D3CC 157CB0 005C+00 1/1 0/0 0/0 .text checkCountTimer__8daItem_cFv */
|
|
BOOL daItem_c::checkCountTimer() {
|
|
BOOL count = true;
|
|
|
|
if (mStatus == 1) {
|
|
count = false;
|
|
}
|
|
|
|
if (checkFlag(8)) {
|
|
count = false;
|
|
}
|
|
|
|
if (i_dComIfGp_event_runCheck()) {
|
|
count = false;
|
|
}
|
|
|
|
if (mStatus == 5 || fopAcM_checkHookCarryNow(this)) {
|
|
count = false;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
/* 8015D3CC-8015D410 157D0C 0044+00 2/2 0/0 0/0 .text checkPlayerGet__8daItem_cFv */
|
|
bool daItem_c::checkPlayerGet() {
|
|
return getData().field_0x36 <= field_0x928;
|
|
}
|
|
|
|
/* 8015D410-8015D480 157D50 0070+00 1/1 0/0 0/0 .text checkYogan__8daItem_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void daItem_c::checkYogan() {
|
|
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y + 100.0f) {
|
|
if (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr) == 6) {
|
|
deleteItem();
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::checkYogan() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/checkYogan__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015D480-8015D4AC 157DC0 002C+00 2/2 0/0 0/0 .text deleteItem__8daItem_cFv */
|
|
void daItem_c::deleteItem() {
|
|
setFlag(0x20);
|
|
fopAcM_delete(this);
|
|
}
|
|
|
|
/* 8015D4AC-8015D56C 157DEC 00C0+00 1/1 0/0 0/0 .text itemActionForRupee__8daItem_cFv */
|
|
int daItem_c::itemActionForRupee() {
|
|
mAcch.CrrPos(dComIfG_Bgsp());
|
|
bg_check();
|
|
|
|
if (mAcch.ChkGroundHit()) {
|
|
RotateYBase();
|
|
speedF *= 0.95f;
|
|
}
|
|
|
|
if (field_0x94b >= 2) {
|
|
clrFlag(2);
|
|
}
|
|
|
|
if (field_0x94b == 0) {
|
|
shape_angle.x += getData().field_0x1a;
|
|
} else {
|
|
shape_angle.x = 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8015D56C-8015D688 157EAC 011C+00 1/1 0/0 0/0 .text itemActionForHeart__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::itemActionForHeart() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemActionForHeart__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015D688-8015D700 157FC8 0078+00 1/1 0/0 0/0 .text itemActionForArrow__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::itemActionForArrow() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemActionForArrow__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015D700-8015D734 158040 0034+00 1/1 0/0 0/0 .text itemActionForBoomerang__8daItem_cFv
|
|
*/
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::itemActionForBoomerang() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/itemActionForBoomerang__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535C4-804535C8 001BC4 0004+00 3/3 0/0 0/0 .sdata2 @5050 */
|
|
SECTION_SDATA2 static f32 lit_5050 = 5.0f;
|
|
|
|
/* 804535C8-804535CC 001BC8 0004+00 1/1 0/0 0/0 .sdata2 @5051 */
|
|
SECTION_SDATA2 static f32 lit_5051 = 3.0f;
|
|
|
|
/* 8015D734-8015D834 158074 0100+00 2/2 0/0 0/0 .text bg_check__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::bg_check() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/bg_check__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015D834-8015D95C 158174 0128+00 1/1 0/0 0/0 .text set_bound_se__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::set_bound_se() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/set_bound_se__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 804506A8-804506B0 000128 0004+04 1/1 0/0 0/0 .sdata m_timer_max__8daItem_c */
|
|
SECTION_SDATA s32 daItem_c::m_timer_max = 10000;
|
|
|
|
/* 8015D95C-8015D9F0 15829C 0094+00 1/1 0/0 0/0 .text CountTimer__8daItem_cFv */
|
|
int daItem_c::CountTimer() {
|
|
field_0x924++;
|
|
|
|
if (field_0x928 < m_timer_max) {
|
|
field_0x928++;
|
|
}
|
|
|
|
if (checkCountTimer()) {
|
|
if (field_0x942 > 0) {
|
|
field_0x942--;
|
|
} else if (field_0x944 > 0) {
|
|
field_0x944--;
|
|
}
|
|
}
|
|
|
|
func_80141AE8(&mBoomWindTgTimer);
|
|
return 1;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535CC-804535D0 001BCC 0004+00 1/1 0/0 0/0 .sdata2 @5110 */
|
|
SECTION_SDATA2 static f32 lit_5110 = 20.0f;
|
|
|
|
/* 8015D9F0-8015DAAC 158330 00BC+00 1/1 0/0 0/0 .text initAction__8daItem_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
int daItem_c::initAction() {
|
|
initFlag();
|
|
initScale();
|
|
initSpeed(0);
|
|
initAngle();
|
|
|
|
if (isHeart(m_itemNo)) {
|
|
speedF = (cM_rndF(5.0f) + 20.0f) - 15.0f;
|
|
shape_angle.z = cM_rndFX(getData().field_0x2a);
|
|
}
|
|
|
|
field_0x949 = 0;
|
|
return 1;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int daItem_c::initAction() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/initAction__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8015DAAC-8015DBF0 1583EC 0144+00 2/1 0/0 0/0 .text initFlag__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::initFlag() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/initFlag__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DBF0-8015DC40 158530 0050+00 2/1 0/0 0/0 .text initScale__8daItem_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::initScale() {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/initScale__8daItem_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* ############################################################################################## */
|
|
/* 804535D0-804535D4 001BD0 0004+00 1/1 0/0 0/0 .sdata2 @5230 */
|
|
SECTION_SDATA2 static f32 lit_5230 = 7.0f / 10.0f;
|
|
|
|
/* 804535D4-804535D8 001BD4 0004+00 1/1 0/0 0/0 .sdata2 @5231 */
|
|
SECTION_SDATA2 static f32 lit_5231 = 6.0f / 5.0f;
|
|
|
|
/* 804535D8-804535DC 001BD8 0004+00 1/1 0/0 0/0 .sdata2 @5232 */
|
|
SECTION_SDATA2 static f32 lit_5232 = 11.0f / 20.0f;
|
|
|
|
/* 804535DC-804535E0 001BDC 0004+00 1/1 0/0 0/0 .sdata2 @5233 */
|
|
SECTION_SDATA2 static f32 lit_5233 = 50.0f;
|
|
|
|
/* 8015DC40-8015DE38 158580 01F8+00 2/2 0/0 0/0 .text initSpeed__8daItem_cFi */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void daItem_c::initSpeed(int param_0) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/initSpeed__8daItem_cFi.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DE38-8015DE50 158778 0018+00 1/1 0/0 0/0 .text initAngle__8daItem_cFv */
|
|
void daItem_c::initAngle() {
|
|
current.angle.z = 0;
|
|
current.angle.x = 0;
|
|
shape_angle.z = 0;
|
|
shape_angle.x = 0;
|
|
}
|
|
|
|
/* 8015DE50-8015DE70 158790 0020+00 1/0 0/0 0/0 .text daItem_Draw__FP8daItem_c */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void daItem_Draw(daItem_c* param_0) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/daItem_Draw__FP8daItem_c.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DE70-8015DE90 1587B0 0020+00 1/0 0/0 0/0 .text daItem_Execute__FP8daItem_c */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void daItem_Execute(daItem_c* param_0) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/daItem_Execute__FP8daItem_c.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DE90-8015DEB0 1587D0 0020+00 1/0 0/0 0/0 .text daItem_Delete__FP8daItem_c */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void daItem_Delete(daItem_c* param_0) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/daItem_Delete__FP8daItem_c.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DEB0-8015DED0 1587F0 0020+00 1/0 0/0 0/0 .text daItem_Create__FP10fopAc_ac_c */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
static asm void daItem_Create(fopAc_ac_c* param_0) {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/daItem_Create__FP10fopAc_ac_c.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DED0-8015DFD8 158810 0108+00 0/0 1/0 0/0 .text __sinit_d_a_obj_item_cpp */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void __sinit_d_a_obj_item_cpp(){nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/__sinit_d_a_obj_item_cpp.s"
|
|
}
|
|
#pragma pop
|
|
|
|
#pragma push
|
|
#pragma force_active on
|
|
REGISTER_CTORS(0x8015DED0, __sinit_d_a_obj_item_cpp);
|
|
#pragma pop
|
|
|
|
/* 8015DFD8-8015DFF4 158918 001C+00 2/2 0/0 0/0 .text getItemPos__9daPy_py_cCFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm const cXyz daPy_py_c::getItemPos() const {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/getItemPos__9daPy_py_cCFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8015DFF4-8015E010 158934 001C+00 1/1 1/1 0/0 .text getLeftHandPos__9daPy_py_cCFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm const cXyz& daPy_py_c::getLeftHandPos() const {
|
|
nofralloc
|
|
#include "asm/a/obj/d_a_obj_item/getLeftHandPos__9daPy_py_cCFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 80393D88-80393D88 0203E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|