diff options
Diffstat (limited to 'src/d/actor/d_a_obj_smallkey.cpp')
| -rw-r--r-- | src/d/actor/d_a_obj_smallkey.cpp | 1185 |
1 files changed, 471 insertions, 714 deletions
diff --git a/src/d/actor/d_a_obj_smallkey.cpp b/src/d/actor/d_a_obj_smallkey.cpp index 8d2d484111..c78ee9a3ea 100644 --- a/src/d/actor/d_a_obj_smallkey.cpp +++ b/src/d/actor/d_a_obj_smallkey.cpp @@ -4,176 +4,13 @@ */ #include "d/actor/d_a_obj_smallkey.h" -#include "d/d_cc_d.h" -#include "dol2asm.h" -#include "JSystem/JParticle/JPAEmitter.h" - - -// -// Forward References: -// - -extern "C" static void searchParentSub__FPvPv(); -extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" static void -keyGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -keyGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" void initBaseMtx__7daKey_cFv(); -extern "C" void setBaseMtx__7daKey_cFv(); -extern "C" void Create__7daKey_cFv(); -extern "C" bool __CreateHeap__7daKey_cFv(); -extern "C" void create__7daKey_cFv(); -extern "C" void __dt__19dPa_followEcallBackFv(); -extern "C" void cleanup__18dPa_levelEcallBackFv(); -extern "C" void __defctor__19dPa_followEcallBackFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void bg_check__7daKey_cFv(); -extern "C" void actionInitInit__7daKey_cFv(); -extern "C" void actionInit__7daKey_cFv(); -extern "C" void actionParentWaitInit__7daKey_cFv(); -extern "C" void actionParentWait__7daKey_cFv(); -extern "C" void actionWaitInit__7daKey_cFv(); -extern "C" void actionWait__7daKey_cFv(); -extern "C" void initActionOrderGetDemo__7daKey_cFv(); -extern "C" void actionOrderGetDemo__7daKey_cFv(); -extern "C" void actionGetDemo__7daKey_cFv(); -extern "C" void actionInitSwOnWait__7daKey_cFv(); -extern "C" void actionSwOnWait__7daKey_cFv(); -extern "C" void actionInitBoomerangCarry__7daKey_cFv(); -extern "C" void actionBoomerangCarry__7daKey_cFv(); -extern "C" void effectSet__7daKey_cFv(); -extern "C" void effectStop__7daKey_cFv(); -extern "C" void effectCtrl__7daKey_cFv(); -extern "C" void seStartTwinkle_private__7daKey_cFUl(); -extern "C" void actionInitE_GB__7daKey_cFv(); -extern "C" void actionE_GB__7daKey_cFv(); -extern "C" void execute__7daKey_cFv(); -extern "C" void draw__7daKey_cFv(); -extern "C" void _delete__7daKey_cFv(); -extern "C" static void daKey_Draw__FP7daKey_c(); -extern "C" static void daKey_Execute__FP7daKey_c(); -extern "C" static void daKey_Delete__FP7daKey_c(); -extern "C" static void daKey_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__18dPa_levelEcallBackFv(); -extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter(); -extern "C" void func_80CDB7C0(void* _this, u8*); -extern "C" static void func_80CDB7DC(); -extern "C" static void func_80CDB7E4(); -extern "C" extern char const* const d_a_obj_smallkey__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__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 fopAc_IsActor__FPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_orderItemEvent__FP10fopAc_ac_cUsUs(); -extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz(); -extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void fpcSch_JudgeByID__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onTbox__12dSv_memBit_cFi(); -extern "C" void offTbox__12dSv_memBit_cFi(); -extern "C" void isTbox__12dSv_memBit_cCFi(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void hide__12daItemBase_cFv(); -extern "C" void show__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 __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -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 Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void offStatus__7dTres_cFUcii(); -extern "C" void setPosition__7dTres_cFiUcPC3Veci(); -extern "C" void DeleteBase__12daItemBase_cFPCc(); -extern "C" bool clothCreate__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 setTevStr__12daItemBase_cFv(); -extern "C" void setShadow__12daItemBase_cFv(); -extern "C" void animEntry__12daItemBase_cFv(); -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 Set__4cCcSFP8cCcD_Obj(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void __dt__18JPAEmitterCallBackFv(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void __construct_array(); -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" extern void* __vt__19dPa_followEcallBack[10]; -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__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" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 data_80CDBAB0[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" +#include "d/d_item_data.h" +#include "d/d_tresure.h" + +UNK_REL_DATA + /* 80CDB7F4-80CDB838 000000 0044+00 6/6 0/0 0/0 .rodata l_cyl_src */ const static dCcD_SrcCyl l_cyl_src = { { @@ -189,670 +26,590 @@ const static dCcD_SrcCyl l_cyl_src = { } // mCyl }; -/* 80CDB838-80CDB83C 000044 0004+00 2/7 0/0 0/0 .rodata @3875 */ -SECTION_RODATA static u8 const lit_3875[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80CDB838, &lit_3875); - -/* 80CDB83C-80CDB844 000048 0008+00 0/3 0/0 0/0 .rodata @3876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3876[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CDB83C, &lit_3876); -#pragma pop - -/* 80CDB844-80CDB84C 000050 0008+00 0/3 0/0 0/0 .rodata @3877 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3877[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CDB844, &lit_3877); -#pragma pop - -/* 80CDB84C-80CDB854 000058 0008+00 0/3 0/0 0/0 .rodata @3878 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3878[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CDB84C, &lit_3878); -#pragma pop - -/* 80CDB854-80CDB858 000060 0004+00 2/6 0/0 0/0 .rodata @3879 */ -SECTION_RODATA static f32 const lit_3879 = 1.0f; -COMPILER_STRIP_GATE(0x80CDB854, &lit_3879); - -/* 80CDB858-80CDB85C 000064 0004+00 0/1 0/0 0/0 .rodata @3880 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3880 = 50.0f; -COMPILER_STRIP_GATE(0x80CDB858, &lit_3880); -#pragma pop - -/* 80CDB85C-80CDB860 000068 0004+00 0/1 0/0 0/0 .rodata @3881 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3881 = 10.0f; -COMPILER_STRIP_GATE(0x80CDB85C, &lit_3881); -#pragma pop - /* 80CD97B8-80CD9B40 000078 0388+00 1/1 0/0 0/0 .text searchParentSub__FPvPv */ -static void searchParentSub(void* param_0, void* param_1) { - // NONMATCHING +static void* searchParentSub(void* i_actor, void* i_data) { + fopAc_ac_c* a_actor = (fopAc_ac_c*)i_actor; + fopAc_ac_c* a_other = (fopAc_ac_c*)i_data; + + if (a_actor != NULL && fopAcM_IsActor(a_actor)) { + if (fopAcM_GetProfName(a_actor) == PROC_OBJ_GM) { + if (a_other->home.pos.abs(a_actor->home.pos) < 1.0f) { + return a_actor; + } + } else if (fopAcM_GetProfName(a_actor) == PROC_E_GB) { + if (a_other->home.pos.abs(a_actor->home.pos) < 50.0f) { + return a_actor; + } + + // “Small Key: position isn't synced with Big Baba!\n” + OS_REPORT("\x1b[43;30m小さい鍵:デカババと位置がずれています!\n\x1b[m"); + } else if (fopAcM_GetProfName(a_actor) == PROC_E_ZM) { + f32 other_dist = a_other->home.pos.abs(a_actor->home.pos); + u8 temp_r27 = fopAcM_GetParamBit(a_actor, 0, 8); + if (other_dist < 10.0f && temp_r27 < 10) { + return a_actor; + } + } + } + + return NULL; } -/* ############################################################################################## */ -/* 80CDB8A8-80CDB8B4 000000 000C+00 1/1 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, -}; - -/* 80CDB8B4-80CDB8C8 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop - -/* 80CDB8C8-80CDB8D4 -00001 000C+00 0/1 0/0 0/0 .data @4652 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4652[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionInit__7daKey_cFv, -}; -#pragma pop - -/* 80CDB8D4-80CDB8E0 -00001 000C+00 0/1 0/0 0/0 .data @4653 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4653[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionParentWait__7daKey_cFv, -}; -#pragma pop - -/* 80CDB8E0-80CDB8EC -00001 000C+00 0/1 0/0 0/0 .data @4654 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4654[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__7daKey_cFv, -}; -#pragma pop - -/* 80CDB8EC-80CDB8F8 -00001 000C+00 0/1 0/0 0/0 .data @4655 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4655[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrderGetDemo__7daKey_cFv, -}; -#pragma pop - -/* 80CDB8F8-80CDB904 -00001 000C+00 0/1 0/0 0/0 .data @4656 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4656[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionGetDemo__7daKey_cFv, -}; -#pragma pop - -/* 80CDB904-80CDB910 -00001 000C+00 0/1 0/0 0/0 .data @4657 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4657[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionSwOnWait__7daKey_cFv, -}; -#pragma pop - -/* 80CDB910-80CDB91C -00001 000C+00 0/1 0/0 0/0 .data @4658 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4658[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionBoomerangCarry__7daKey_cFv, -}; -#pragma pop - -/* 80CDB91C-80CDB928 -00001 000C+00 0/1 0/0 0/0 .data @4659 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4659[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionE_GB__7daKey_cFv, -}; -#pragma pop - -/* 80CDB928-80CDB988 000080 0060+00 0/1 0/0 0/0 .data l_demoFunc$4651 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_demoFunc[96] = { - 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, -}; -#pragma pop - -/* 80CDB988-80CDB9A8 -00001 0020+00 1/0 0/0 0/0 .data l_daKey_Method */ -static actor_method_class l_daKey_Method = { - (process_method_func)daKey_Create__FP10fopAc_ac_c, - (process_method_func)daKey_Delete__FP7daKey_c, - (process_method_func)daKey_Execute__FP7daKey_c, - 0, - (process_method_func)daKey_Draw__FP7daKey_c, -}; - -/* 80CDB9A8-80CDB9D8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SmallKey */ -extern actor_process_profile_definition g_profile_Obj_SmallKey = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_SmallKey, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daKey_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 237, // mPriority - &l_daKey_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80CDB9D8-80CDB9E4 000130 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80CDB9E4-80CDB9F0 00013C 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80CDB9F0-80CDB9FC 000148 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80CDB9FC-80CDBA20 000154 0024+00 2/2 0/0 0/0 .data __vt__18dPa_levelEcallBack */ -SECTION_DATA extern void* __vt__18dPa_levelEcallBack[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18dPa_levelEcallBackFv, - (void*)execute__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)draw__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter, - (void*)NULL, - (void*)cleanup__18dPa_levelEcallBackFv, -}; - -/* 80CDBA20-80CDBA2C 000178 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80CDBA2C-80CDBA38 000184 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80CDBA38-80CDBA5C 000190 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80CDB7E4, - (void*)NULL, - (void*)NULL, - (void*)func_80CDB7DC, -}; - -/* 80CDBA5C-80CDBAA0 0001B4 0044+00 1/1 0/0 0/0 .data __vt__7daKey_c */ -SECTION_DATA extern void* __vt__7daKey_c[17] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)DrawBase__12daItemBase_cFv, - (void*)setListStart__12daItemBase_cFv, - (void*)settingBeforeDraw__12daItemBase_cFv, - (void*)setTevStr__12daItemBase_cFv, - (void*)setShadow__12daItemBase_cFv, - (void*)animEntry__12daItemBase_cFv, - (void*)RotateYBase__12daItemBase_cFv, - (void*)clothCreate__12daItemBase_cFv, - (void*)__CreateHeap__7daKey_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, -}; - -/* 80CDBAA0-80CDBAAC 0001F8 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - /* 80CD9B40-80CD9E3C 000400 02FC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof */ -static void Reflect(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING -} +static f32 Reflect(cXyz* i_vec, cBgS_PolyInfo const& i_polyinfo, f32 i_scale) { + cM3dGPla plane; + + if (dComIfG_Bgsp().GetTriPla(i_polyinfo, &plane)) { + cXyz reflect_vec; + f32 mag = i_vec->absXZ(); + + VECReflect(i_vec, &plane.mNormal, &reflect_vec); + *i_vec = (reflect_vec * mag) * i_scale; + return i_vec->absXZ(); + } -/* 80CD9E3C-80CD9E84 0006FC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING + return 0.0f; } /* 80CD9E84-80CD9EE0 000744 005C+00 1/1 0/0 0/0 .text * keyGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void keyGetTgCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - // NONMATCHING +static void keyGetTgCallBack(fopAc_ac_c* i_tgActor, dCcD_GObjInf* i_tgObjInf, + fopAc_ac_c* i_atActor, dCcD_GObjInf* i_atObjInf) { + daKey_c* a_tgActor = (daKey_c*)i_tgActor; + + if (a_tgActor != NULL) { + if ((i_atObjInf->ChkAtType(AT_TYPE_40) || i_atObjInf->ChkAtType(AT_TYPE_BOOMERANG)) && !dComIfGp_event_runCheck() && !a_tgActor->chkStatus(6)) { + a_tgActor->actionInitBoomerangCarry(); + } + } } /* 80CD9EE0-80CD9F2C 0007A0 004C+00 1/1 0/0 0/0 .text * keyGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void keyGetCoCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - // NONMATCHING +static void keyGetCoCallBack(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { + daKey_c* a_coActorA = (daKey_c*)i_coActorA; + + if (a_coActorA != NULL && i_coActorB != NULL) { + if (fopAcM_GetName(i_coActorB) == fopAcM_GetName(dComIfGp_getLinkPlayer())) { + a_coActorA->initActionOrderGetDemo(); + } + } } /* 80CD9F2C-80CD9F68 0007EC 003C+00 1/1 0/0 0/0 .text initBaseMtx__7daKey_cFv */ void daKey_c::initBaseMtx() { - // NONMATCHING + mpModel->setBaseScale(scale); + setBaseMtx(); } -/* ############################################################################################## */ -/* 80CDB860-80CDB864 00006C 0004+00 1/2 0/0 0/0 .rodata @4031 */ -SECTION_RODATA static f32 const lit_4031 = 5.0f; -COMPILER_STRIP_GATE(0x80CDB860, &lit_4031); - /* 80CD9F68-80CD9FDC 000828 0074+00 2/2 0/0 0/0 .text setBaseMtx__7daKey_cFv */ void daKey_c::setBaseMtx() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CDB864-80CDB868 000070 0004+00 0/1 0/0 0/0 .rodata @4064 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4064 = 30.0f; -COMPILER_STRIP_GATE(0x80CDB864, &lit_4064); -#pragma pop - -/* 80CDB868-80CDB86C 000074 0004+00 0/1 0/0 0/0 .rodata @4065 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4065 = -6.0f; -COMPILER_STRIP_GATE(0x80CDB868, &lit_4065); -#pragma pop - -/* 80CDB86C-80CDB874 000078 0008+00 1/2 0/0 0/0 .rodata @4067 */ -SECTION_RODATA static u8 const lit_4067[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80CDB86C, &lit_4067); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::transM(0.0f, 5.0f, 0.0f); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::XrotM(-0x4000); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); +} /* 80CD9FDC-80CDA15C 00089C 0180+00 1/1 0/0 0/0 .text Create__7daKey_cFv */ -void daKey_c::Create() { - // NONMATCHING +int daKey_c::Create() { + initBaseMtx(); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + + mAcchCir.SetWall(30.0f, 30.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + + mCcStts.Init(0, 0xFF, this); + mCcCyl.Set(l_cyl_src); + mCcCyl.SetStts(&mCcStts); + mCcCyl.SetCoHitCallback(keyGetCoCallBack); + mCcCyl.SetTgHitCallback(keyGetTgCallBack); + mCcCyl.SetR(dItem_data::getR(m_itemNo)); + mCcCyl.SetH(dItem_data::getH(m_itemNo)); + + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); + + if (getSwNo() == 0xFF) { + actionInitInit(); + } else { + actionInitSwOnWait(); + } + + fopAcM_SetGravity(this, -6.0f); + fopAcM_OnCarryType(this, fopAcM_CARRY(fopAcM_CARRY_ITEM | fopAcM_CARRY_LIGHT)); + execute(); + return 1; } /* 80CDA15C-80CDA164 000A1C 0008+00 1/0 0/0 0/0 .text __CreateHeap__7daKey_cFv */ -bool daKey_c::__CreateHeap() { - return true; +int daKey_c::__CreateHeap() { + return 1; } -/* ############################################################################################## */ -/* 80CDB890-80CDB890 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CDB890 = "F_SP118"; -#pragma pop - /* 80CDA164-80CDA404 000A24 02A0+00 1/1 0/0 0/0 .text create__7daKey_cFv */ -void daKey_c::create() { - // NONMATCHING -} - -/* 80CDA404-80CDA488 000CC4 0084+00 1/1 0/0 0/0 .text __dt__19dPa_followEcallBackFv */ -// dPa_followEcallBack::~dPa_followEcallBack() { -extern "C" void __dt__19dPa_followEcallBackFv() { - // NONMATCHING +int daKey_c::create() { + fopAcM_SetupActor(this, daKey_c); + + if (!mIsPrmInit) { + field_0x938 = home.angle.x; + field_0x93a = home.angle.z; + home.angle.z = 0; + home.angle.x = 0; + current.angle.z = 0; + current.angle.x = 0; + shape_angle.z = 0; + shape_angle.x = 0; + mIsPrmInit = TRUE; + } + + m_itemNo = fpcNm_ITEM_SMALL_KEY; + + if (strcmp(dComIfGp_getStartStageName(), "F_SP118") == 0) { + OS_REPORT(" SMKEY 0\n"); + if (dComIfGs_isTbox(getSaveBitNo())) { + OS_REPORT(" SMKEY 1\n"); + dComIfGp_setItemKeyNumCount(-dComIfGs_getKeyNum()); + dComIfGs_offTbox(getSaveBitNo()); + } + } + + if (dComIfGs_isTbox(getSaveBitNo())) { + return cPhs_ERROR_e; + } + + int phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo)); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap, 0x840)) { + return cPhs_ERROR_e; + } + + if (!Create()) { + return cPhs_ERROR_e; + } + } + + return phase_state; } -/* 80CDA488-80CDA48C 000D48 0004+00 1/0 0/0 0/0 .text cleanup__18dPa_levelEcallBackFv */ -// void dPa_levelEcallBack::cleanup() { -extern "C" void cleanup__18dPa_levelEcallBackFv() { - /* empty function */ -} - -/* 80CDA48C-80CDA4B4 000D4C 0028+00 1/1 0/0 0/0 .text __defctor__19dPa_followEcallBackFv - */ -// void dPa_followEcallBack::__defctor() { -extern "C" void __defctor__19dPa_followEcallBackFv() { - // NONMATCHING -} - -/* 80CDA4B4-80CDA4FC 000D74 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80CDA4FC-80CDA544 000DBC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80CDA544-80CDA5A0 000E04 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80CDA5A0-80CDA610 000E60 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80CDA610-80CDA680 000ED0 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80CDB874-80CDB878 000080 0004+00 0/1 0/0 0/0 .rodata @4279 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4279 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CDB874, &lit_4279); -#pragma pop +/* 80CDA680-80CDA7E8 000F40 0168+00 1/1 0/0 0/0 .text bg_check__7daKey_cFv */ +void daKey_c::bg_check() { + f32 temp_f31 = 0.7f; -/* 80CDB878-80CDB87C 000084 0004+00 0/2 0/0 0/0 .rodata @4280 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4280 = 3.0f; -COMPILER_STRIP_GATE(0x80CDB878, &lit_4280); -#pragma pop + if (mAcch.ChkWallHit() != 0) { + if (speedF > 5.0f) { + Reflect(&speed, mAcchCir, 1.0f); + } + current.angle.y = cM_atan2s(speed.x, speed.z); + } -/* 80CDB87C-80CDB880 000088 0004+00 0/1 0/0 0/0 .rodata @4281 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4281 = 2.0f; -COMPILER_STRIP_GATE(0x80CDB87C, &lit_4281); -#pragma pop + if (mAcch.ChkGroundLanding()) { + cXyz sp8(speed); + if (speedF > 5.0f) { + Reflect(&sp8, mAcchCir, temp_f31); + } -/* 80CDB880-80CDB884 00008C 0004+00 1/2 0/0 0/0 .rodata @4282 */ -SECTION_RODATA static f32 const lit_4282 = -1.0f; -COMPILER_STRIP_GATE(0x80CDB880, &lit_4282); + speed.y = -mPrevSpeed.y * temp_f31; + if (speed.y < 3.0f) { + fopAcM_SetSpeedF(this, 0.0f); + } -/* 80CDA680-80CDA7E8 000F40 0168+00 1/1 0/0 0/0 .text bg_check__7daKey_cFv */ -void daKey_c::bg_check() { - // NONMATCHING + field_0x936++; + fopAcM_seStart(this, Z2SE_OBJ_KEY_BOUND, 2.0f * fabsf(mPrevSpeed.y)); + } } /* 80CDA7E8-80CDA81C 0010A8 0034+00 1/1 0/0 0/0 .text actionInitInit__7daKey_cFv */ -void daKey_c::actionInitInit() { - // NONMATCHING +int daKey_c::actionInitInit() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + setStatus(STATUS_INIT_e); + return 1; } /* 80CDA81C-80CDA8C8 0010DC 00AC+00 1/0 0/0 0/0 .text actionInit__7daKey_cFv */ -void daKey_c::actionInit() { - // NONMATCHING +int daKey_c::actionInit() { + void* pparent = fpcM_Search(searchParentSub, this); + if (pparent != NULL) { + parentActorID = fopAcM_GetID(pparent); + if (fopAcM_GetProfName(pparent) == PROC_OBJ_GM || fopAcM_GetProfName(pparent) == PROC_E_ZM) { + hide(); + actionParentWaitInit(); + } else if (fopAcM_GetProfName(pparent) == PROC_E_GB) { + show(); + actionInitE_GB(); + } + } else { + show(); + actionWaitInit(); + } + + return 1; } /* 80CDA8C8-80CDA8FC 001188 0034+00 1/1 0/0 0/0 .text actionParentWaitInit__7daKey_cFv */ -void daKey_c::actionParentWaitInit() { - // NONMATCHING +int daKey_c::actionParentWaitInit() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + setStatus(STATUS_PARENT_WAIT_e); + return 1; } /* 80CDA8FC-80CDA9AC 0011BC 00B0+00 1/0 0/0 0/0 .text actionParentWait__7daKey_cFv */ -void daKey_c::actionParentWait() { - // NONMATCHING +int daKey_c::actionParentWait() { + fopAc_ac_c* pparent = (fopAc_ac_c*)fopAcM_SearchByID(parentActorID); + if (pparent == NULL) { + show(); + actionWaitInit(); + } else if (fopAcM_GetProfName(pparent) == PROC_E_ZM) { + current.pos = pparent->home.pos; + } else { + current.pos = pparent->current.pos; + } + + seStartTwinkle_private(Z2SE_OBJ_KEY_TWINKLE_HIDDEN); + return 1; } /* 80CDA9AC-80CDAA28 00126C 007C+00 3/3 0/0 1/1 .text actionWaitInit__7daKey_cFv */ -void daKey_c::actionWaitInit() { - // NONMATCHING -} +int daKey_c::actionWaitInit() { + mCcCyl.OnTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + cLib_offBit<u32>(attention_info.flags, 0x10); + attention_info.distances[fopAc_attn_CARRY_e] = 16; + attention_info.position = current.pos; -/* ############################################################################################## */ -/* 80CDB884-80CDB888 000090 0004+00 0/1 0/0 0/0 .rodata @4400 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4400 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80CDB884, &lit_4400); -#pragma pop + effectSet(); + setStatus(STATUS_WAIT_e); + return 1; +} /* 80CDAA28-80CDAB74 0012E8 014C+00 1/0 0/0 0/0 .text actionWait__7daKey_cFv */ -void daKey_c::actionWait() { - // NONMATCHING +int daKey_c::actionWait() { + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bg_check(); + + if (mAcch.ChkGroundHit()) { + cLib_onBit<u32>(attention_info.flags, 0x10); + + speedF *= 0.9f; + if (speedF < 1.0f) { + speedF = 0.0f; + } + } else { + cLib_offBit<u32>(attention_info.flags, 0x10); + } + + daPy_py_c* player = daPy_getPlayerActorClass(); + if (fopAcM_checkCarryNow(this)) { + cLib_offBit<u32>(attention_info.flags, 0x10); + if (player->getGrabUpStart()) { + fopAcM_cancelCarryNow(this); + initActionOrderGetDemo(); + } + } else { + cLib_onBit<u32>(attention_info.flags, 0x10); + } + + if (field_0x936 == 0) { + shape_angle.x += 4000; + } else { + shape_angle.x = 0; + } + + attention_info.position = current.pos; + seStartTwinkle_private(Z2SE_OBJ_KEY_TWINKLE); + return 1; } /* 80CDAB74-80CDAC18 001434 00A4+00 2/2 0/0 0/0 .text initActionOrderGetDemo__7daKey_cFv */ -void daKey_c::initActionOrderGetDemo() { - // NONMATCHING +int daKey_c::initActionOrderGetDemo() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + hide(); + effectStop(); + + fopAcM_orderItemEvent(this, 0, 0); + eventInfo.onCondition(8); + + mItemId = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this), NULL, NULL); + JUT_ASSERT(699, mItemId != fpcM_ERROR_PROCESS_ID_e); + + setStatus(STATUS_ORDER_GET_DEMO_e); + return 1; } /* 80CDAC18-80CDAC94 0014D8 007C+00 1/0 0/0 0/0 .text actionOrderGetDemo__7daKey_cFv */ -void daKey_c::actionOrderGetDemo() { - // NONMATCHING -} +int daKey_c::actionOrderGetDemo() { + if (eventInfo.checkCommandItem()) { + setStatus(STATUS_GET_DEMO_e); + if (mItemId != fpcM_ERROR_PROCESS_ID_e) { + dComIfGp_event_setItemPartnerId(mItemId); + } + } else { + fopAcM_orderItemEvent(this, 0, 0); + eventInfo.onCondition(8); + } -/* ############################################################################################## */ -/* 80CDB890-80CDB890 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80CDB898 = "DEFAULT_GETITEM"; -#pragma pop + return 1; +} /* 80CDAC94-80CDAD28 001554 0094+00 1/0 0/0 0/0 .text actionGetDemo__7daKey_cFv */ -void daKey_c::actionGetDemo() { - // NONMATCHING +int daKey_c::actionGetDemo() { + if (dComIfGp_evmng_endCheck("DEFAULT_GETITEM")) { + dComIfGs_onTbox(getSaveBitNo()); + dTres_c::offStatus(getSaveBitNo(), 1); + dComIfGp_event_reset(); + fopAcM_delete(this); + } + + return 1; } /* 80CDAD28-80CDADD4 0015E8 00AC+00 1/1 0/0 0/0 .text actionInitSwOnWait__7daKey_cFv */ -void daKey_c::actionInitSwOnWait() { - // NONMATCHING +int daKey_c::actionInitSwOnWait() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + hide(); + + if (getSwOnWaitTimer() == 63) { + mSwOnTimer = 15; + } else { + mSwOnTimer = getSwOnWaitTimer() + 1; + } + + if (fopAcM_isSwitch(this, getSwNo())) { + mSwOnTimer = 0; + } + + setStatus(STATUS_SW_ON_WAIT_e); + return 1; } /* 80CDADD4-80CDAE54 001694 0080+00 1/0 0/0 0/0 .text actionSwOnWait__7daKey_cFv */ -void daKey_c::actionSwOnWait() { - // NONMATCHING -} +int daKey_c::actionSwOnWait() { + if (fopAcM_isSwitch(this, getSwNo()) && cLib_calcTimer<u8>(&mSwOnTimer) == 0) { + show(); + actionWaitInit(); + } -/* ############################################################################################## */ -/* 80CDB888-80CDB88C 000094 0004+00 1/1 0/0 0/0 .rodata @4503 */ -SECTION_RODATA static f32 const lit_4503 = 4.0f; -COMPILER_STRIP_GATE(0x80CDB888, &lit_4503); + seStartTwinkle_private(Z2SE_OBJ_KEY_TWINKLE_HIDDEN); + return 1; +} /* 80CDAE54-80CDAF40 001714 00EC+00 1/1 0/0 0/0 .text actionInitBoomerangCarry__7daKey_cFv */ -void daKey_c::actionInitBoomerangCarry() { - // NONMATCHING +int daKey_c::actionInitBoomerangCarry() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OnTgSPrmBit(1); + mCcCyl.OnCoSPrmBit(1); + + u8 height = dItem_data::getH(m_itemNo); + u8 radius = dItem_data::getR(m_itemNo); + + mCcCyl.SetR(4.0f * radius); + mCcCyl.SetH(4.0f * height); + mCcCyl.OnCoSPrmBit(1); + + setStatus(STATUS_BOOMERANG_CARRY_e); + return 1; } /* 80CDAF40-80CDAFB4 001800 0074+00 1/0 0/0 0/0 .text actionBoomerangCarry__7daKey_cFv */ -void daKey_c::actionBoomerangCarry() { - // NONMATCHING +int daKey_c::actionBoomerangCarry() { + fopAc_ac_c* pboomerang = fopAcM_SearchByName(PROC_BOOMERANG); + if (pboomerang != NULL) { + current.pos = pboomerang->current.pos; + } else { + // "Small Key: can't find boomerang!!!\n" + OS_REPORT_ERROR("小さいカギ:ブーメランが見つかりません!!!\n"); + } + + seStartTwinkle_private(Z2SE_OBJ_KEY_TWINKLE); + // "Small Key: carrying\n" + OS_REPORT("小さい鍵:引き寄せ中\n"); + return 1; } /* 80CDAFB4-80CDB0D8 001874 0124+00 2/2 0/0 0/0 .text effectSet__7daKey_cFv */ void daKey_c::effectSet() { - // NONMATCHING + if (mEffect[0].getEmitter() == NULL) { + cXyz eff_scale[] = { // needs to be an array to match... + cXyz(1.0f, 1.0f, 1.0f) + }; + mEffRot = shape_angle; + mEffRot.x = -0x4000; + + dComIfGp_particle_set(0x82BE, ¤t.pos, &mEffRot, &eff_scale[0], 0xFF, &mEffect[0], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + dComIfGp_particle_set(0x82BF, ¤t.pos, &mEffRot, &eff_scale[0], 0xFF, &mEffect[1], fopAcM_GetRoomNo(this), NULL, NULL, NULL); + } } /* 80CDB0D8-80CDB128 001998 0050+00 2/2 0/0 0/0 .text effectStop__7daKey_cFv */ void daKey_c::effectStop() { - // NONMATCHING + mEffect[0].remove(); + mEffect[1].remove(); } -/* ############################################################################################## */ -/* 80CDB88C-80CDB890 000098 0004+00 0/1 0/0 0/0 .rodata @4618 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4618 = 1000.0f; -COMPILER_STRIP_GATE(0x80CDB88C, &lit_4618); -#pragma pop - /* 80CDB128-80CDB2E0 0019E8 01B8+00 1/1 0/0 0/0 .text effectCtrl__7daKey_cFv */ void daKey_c::effectCtrl() { - // NONMATCHING + cXyz eff_scale; + f32 cam_dist = current.pos.abs(dComIfGp_getCamera(0)->lookat.eye); + f32 var_f29 = 1000.0f; + f32 max_size = 3.0f; + f32 size = 1.0f; + + if (0.0f != var_f29) { + size = cam_dist / var_f29; + if (size < 1.0f) { + size = 1.0f; + } + } + + if (max_size < 1.0f) { + max_size = 1.0f; + } + + if (size > max_size) { + size = max_size; + } + + eff_scale.setall(size); + + for (int i = 0; i < 2; i++) { + JPABaseEmitter* pemitter = mEffect[i].getEmitter(); + if (pemitter != NULL) { + pemitter->setGlobalScale(eff_scale); + } + } } /* 80CDB2E0-80CDB36C 001BA0 008C+00 5/5 0/0 0/0 .text seStartTwinkle_private__7daKey_cFUl */ -void daKey_c::seStartTwinkle_private(u32 param_0) { - // NONMATCHING +void daKey_c::seStartTwinkle_private(u32 i_soundId) { + if (field_0x984 == 0) { + fopAcM_seStartLevel(this, i_soundId, 0); + } } /* 80CDB36C-80CDB3D8 001C2C 006C+00 1/1 0/0 0/0 .text actionInitE_GB__7daKey_cFv */ -void daKey_c::actionInitE_GB() { - // NONMATCHING +int daKey_c::actionInitE_GB() { + cLib_offBit<u32>(attention_info.flags, 0x10); + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + effectSet(); + fopAcM_SetSpeedF(this, 0.0f); + fopAcM_SetGravity(this, 0.0f); + setStatus(STATUS_E_GB_e); + return 1; } /* 80CDB3D8-80CDB404 001C98 002C+00 1/0 0/0 0/0 .text actionE_GB__7daKey_cFv */ -void daKey_c::actionE_GB() { - // NONMATCHING +int daKey_c::actionE_GB() { + seStartTwinkle_private(Z2SE_OBJ_KEY_TWINKLE_HIDDEN); + return 1; } /* 80CDB404-80CDB5D4 001CC4 01D0+00 2/2 0/0 0/0 .text execute__7daKey_cFv */ -void daKey_c::execute() { - // NONMATCHING -} +int daKey_c::execute() { + static int (daKey_c::*l_demoFunc[])() = { + &daKey_c::actionInit, + &daKey_c::actionParentWait, + &daKey_c::actionWait, + &daKey_c::actionOrderGetDemo, + &daKey_c::actionGetDemo, + &daKey_c::actionSwOnWait, + &daKey_c::actionBoomerangCarry, + &daKey_c::actionE_GB, + }; -/* 80CDB5D4-80CDB628 001E94 0054+00 1/1 0/0 0/0 .text draw__7daKey_cFv */ -void daKey_c::draw() { - // NONMATCHING -} - -/* 80CDB628-80CDB674 001EE8 004C+00 1/1 0/0 0/0 .text _delete__7daKey_cFv */ -void daKey_c::_delete() { - // NONMATCHING -} + mPrevSpeed = speed; + field_0x930++; -/* 80CDB674-80CDB694 001F34 0020+00 1/0 0/0 0/0 .text daKey_Draw__FP7daKey_c */ -static void daKey_Draw(daKey_c* param_0) { - // NONMATCHING -} + (this->*l_demoFunc[mStatus])(); -/* 80CDB694-80CDB6B4 001F54 0020+00 1/0 0/0 0/0 .text daKey_Execute__FP7daKey_c */ -static void daKey_Execute(daKey_c* param_0) { - // NONMATCHING -} + eyePos = current.pos; + attention_info.position = current.pos; -/* 80CDB6B4-80CDB6D4 001F74 0020+00 1/0 0/0 0/0 .text daKey_Delete__FP7daKey_c */ -static void daKey_Delete(daKey_c* param_0) { - // NONMATCHING -} + effectCtrl(); + setBaseMtx(); -/* 80CDB6D4-80CDB6F4 001F94 0020+00 1/0 0/0 0/0 .text daKey_Create__FP10fopAc_ac_c */ -static void daKey_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} + mCcCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCcCyl); -/* 80CDB6F4-80CDB73C 001FB4 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING + dTres_c::setPosition(getSaveBitNo(), ¤t.pos); + field_0x984 = 0; + return 1; } -/* 80CDB73C-80CDB7B0 001FFC 0074+00 1/0 0/0 0/0 .text __dt__18dPa_levelEcallBackFv */ -// dPa_levelEcallBack::~dPa_levelEcallBack() { -extern "C" void __dt__18dPa_levelEcallBackFv() { - // NONMATCHING -} +/* 80CDB5D4-80CDB628 001E94 0054+00 1/1 0/0 0/0 .text draw__7daKey_cFv */ +int daKey_c::draw() { + if (!chkDraw()) { + return 1; + } -/* 80CDB7B0-80CDB7B4 002070 0004+00 1/0 0/0 0/0 .text - * execute__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::execute(JPABaseEmitter* param_0) { -extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ + DrawBase(); + return 1; } -/* 80CDB7B4-80CDB7B8 002074 0004+00 1/0 0/0 0/0 .text - * executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::executeAfter(JPABaseEmitter* param_0) { -extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ +/* 80CDB628-80CDB674 001EE8 004C+00 1/1 0/0 0/0 .text _delete__7daKey_cFv */ +int daKey_c::_delete() { + effectStop(); + DeleteBase(dItem_data::getFieldArc(m_itemNo)); + return 1; } -/* 80CDB7B8-80CDB7BC 002078 0004+00 1/0 0/0 0/0 .text draw__18JPAEmitterCallBackFP14JPABaseEmitter - */ -// void JPAEmitterCallBack::draw(JPABaseEmitter* param_0) { -extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ +/* 80CDB674-80CDB694 001F34 0020+00 1/0 0/0 0/0 .text daKey_Draw__FP7daKey_c */ +static int daKey_Draw(daKey_c* i_this) { + return i_this->draw(); } -/* 80CDB7BC-80CDB7C0 00207C 0004+00 1/0 0/0 0/0 .text - * drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::drawAfter(JPABaseEmitter* param_0) { -extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ +/* 80CDB694-80CDB6B4 001F54 0020+00 1/0 0/0 0/0 .text daKey_Execute__FP7daKey_c */ +static int daKey_Execute(daKey_c* i_this) { + return i_this->execute(); } -/* 80CDB7C0-80CDB7DC 002080 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */ -extern "C" void func_80CDB7C0(void* _this, u8* param_0) { - // NONMATCHING +/* 80CDB6B4-80CDB6D4 001F74 0020+00 1/0 0/0 0/0 .text daKey_Delete__FP7daKey_c */ +static int daKey_Delete(daKey_c* i_this) { + fpc_ProcID id = fopAcM_GetID(i_this); + return i_this->_delete(); } -/* 80CDB7DC-80CDB7E4 00209C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80CDB7DC() { - // NONMATCHING +/* 80CDB6D4-80CDB6F4 001F94 0020+00 1/0 0/0 0/0 .text daKey_Create__FP10fopAc_ac_c */ +static int daKey_Create(fopAc_ac_c* i_this) { + fpc_ProcID id = fopAcM_GetID(i_this); + return ((daKey_c*)i_this)->create(); } -/* 80CDB7E4-80CDB7EC 0020A4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80CDB7E4() { - // NONMATCHING -} +/* 80CDB988-80CDB9A8 -00001 0020+00 1/0 0/0 0/0 .data l_daKey_Method */ +static actor_method_class l_daKey_Method = { + (process_method_func)daKey_Create, + (process_method_func)daKey_Delete, + (process_method_func)daKey_Execute, + (process_method_func)NULL, + (process_method_func)daKey_Draw, +}; -/* 80CDB890-80CDB890 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 80CDB9A8-80CDB9D8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SmallKey */ +extern actor_process_profile_definition g_profile_Obj_SmallKey = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_SmallKey, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daKey_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 237, // mPriority + &l_daKey_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; |
