diff options
Diffstat (limited to 'src/d/actor/d_a_obj_kantera.cpp')
| -rw-r--r-- | src/d/actor/d_a_obj_kantera.cpp | 339 |
1 files changed, 82 insertions, 257 deletions
diff --git a/src/d/actor/d_a_obj_kantera.cpp b/src/d/actor/d_a_obj_kantera.cpp index b7c4e57ead..0a3d60197f 100644 --- a/src/d/actor/d_a_obj_kantera.cpp +++ b/src/d/actor/d_a_obj_kantera.cpp @@ -4,124 +4,15 @@ */ #include "d/actor/d_a_obj_kantera.h" +#include "d/actor/d_a_player.h" #include "SSystem/SComponent/c_math.h" #include "d/d_a_itembase_static.h" #include "d/d_com_inf_game.h" #include "d/d_item.h" #include "d/d_item_data.h" #include "d/d_procname.h" -#include "dol2asm.h" #include "f_op/f_op_actor_mng.h" -// -// Forward References: -// - -extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void initBaseMtx__15daItemKantera_cFv(); -extern "C" void setBaseMtx__15daItemKantera_cFv(); -extern "C" void Create__15daItemKantera_cFv(); -extern "C" bool __CreateHeap__15daItemKantera_cFv(); -extern "C" void create__15daItemKantera_cFv(); -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__15daItemKantera_cFv(); -extern "C" void actionInit__15daItemKantera_cFv(); -extern "C" void actionWaitInit__15daItemKantera_cFv(); -extern "C" void actionWait__15daItemKantera_cFv(); -extern "C" void initActionOrderGetDemo__15daItemKantera_cFv(); -extern "C" void actionOrderGetDemo__15daItemKantera_cFv(); -extern "C" void actionGetDemo__15daItemKantera_cFv(); -extern "C" void execute__15daItemKantera_cFv(); -extern "C" void draw__15daItemKantera_cFv(); -extern "C" void _delete__15daItemKantera_cFv(); -extern "C" static void daItemKantera_Draw__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Execute__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Delete__FP15daItemKantera_c(); -extern "C" static void daItemKantera_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" static void func_80C39630(); -extern "C" static void func_80C39638(); -extern "C" extern char const* const d_a_obj_kantera__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void __ct__10fopAc_ac_cFv(); -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 dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -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 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 checkItemGet__FUci(); -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 __ml__4cXyzCFf(); -extern "C" void cM_atan2s__Fff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void __dl__FPv(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -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 data_80C39860[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80C39648-80C3968C 000000 0044+00 4/4 0/0 0/0 .rodata l_cyl_src */ const static dCcD_SrcCyl l_cyl_src = { { @@ -137,144 +28,21 @@ const static dCcD_SrcCyl l_cyl_src = { } // mCyl }; -/* 80C3968C-80C39690 000044 0004+00 0/3 0/0 0/0 .rodata @3855 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3855[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C3968C, &lit_3855); -#pragma pop - -/* 80C39690-80C39698 000048 0008+00 0/1 0/0 0/0 .rodata @3856 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3856[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C39690, &lit_3856); -#pragma pop - -/* 80C39698-80C396A0 000050 0008+00 0/1 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3857[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C39698, &lit_3857); -#pragma pop - -/* 80C396A0-80C396A8 000058 0008+00 0/1 0/0 0/0 .rodata @3858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3858[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C396A0, &lit_3858); -#pragma pop - -/* 80C396DC-80C396E8 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, -}; - -/* 80C396E8-80C396FC 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 - -/* 80C396FC-80C39708 -00001 000C+00 0/1 0/0 0/0 .data @4184 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4184[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionInit__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39708-80C39714 -00001 000C+00 0/1 0/0 0/0 .data @4185 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4185[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39714-80C39720 -00001 000C+00 0/1 0/0 0/0 .data @4186 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4186[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrderGetDemo__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C39720-80C3972C -00001 000C+00 0/1 0/0 0/0 .data @4187 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4187[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionGetDemo__15daItemKantera_cFv, -}; -#pragma pop - -/* 80C3972C-80C3975C 000050 0030+00 0/1 0/0 0/0 .data l_demoFunc$4183 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_demoFunc[48] = { - 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 - -/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */ -static actor_method_class l_daItemKantera_Method = { - (process_method_func)daItemKantera_Create__FP10fopAc_ac_c, - (process_method_func)daItemKantera_Delete__FP15daItemKantera_c, - (process_method_func)daItemKantera_Execute__FP15daItemKantera_c, - 0, - (process_method_func)daItemKantera_Draw__FP15daItemKantera_c, -}; - -/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */ -extern actor_process_profile_definition g_profile_Obj_Kantera = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Kantera, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daItemKantera_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 238, // mPriority - &l_daItemKantera_Method, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; +UNK_REL_DATA /* 80C38678-80C38974 000078 02FC+00 1/1 0/0 0/0 .text Reflect__FP4cXyzRC13cBgS_PolyInfof */ -static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING +static f32 Reflect(cXyz* i_xyz, cBgS_PolyInfo const& param_2, f32 param_3) { + cM3dGPla acStack_3c; + if (dComIfG_Bgsp().GetTriPla(param_2, &acStack_3c) != 0) { + cXyz cStack_48; + f32 dVar5 = i_xyz->absXZ(); + C_VECReflect(i_xyz, &acStack_3c.mNormal, &cStack_48); + *i_xyz = (cStack_48 * dVar5) * param_3; + return i_xyz->absXZ(); + } + + return 0.0f; } /* 80C389BC-80C389F8 0003BC 003C+00 1/1 0/0 0/0 .text initBaseMtx__15daItemKantera_cFv */ @@ -347,8 +115,8 @@ int daItemKantera_c::create() { } /* 80C38F78-80C39068 000978 00F0+00 1/1 0/0 0/0 .text bg_check__15daItemKantera_cFv */ -// NONMATCHING lfs not correct void daItemKantera_c::bg_check() { + f32 dVar6 = 0.7f; if (mAcch.ChkWallHit()) { if (speedF > 5.0f) { Reflect(&speed, mAcchCir, 1.0f); @@ -360,7 +128,9 @@ void daItemKantera_c::bg_check() { if (speedF > 5.0f) { Reflect(&l_speed, mAcchCir, 0.7f); } - speed.y = -field_0x93c.y * 0.7f; + f32 tmp = field_0x93c.y; + tmp = -tmp; + speed.y = tmp * dVar6; if (speed.y < 3.0f) { fopAcM_SetSpeedF(this, 0.0f); } @@ -388,17 +158,32 @@ int daItemKantera_c::actionWaitInit() { return 1; } -/* ############################################################################################## */ -/* 80C396C8-80C396CC 000080 0004+00 0/1 0/0 0/0 .rodata @4145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4145 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80C396C8, &lit_4145); -#pragma pop - /* 80C3911C-80C39234 000B1C 0118+00 1/0 0/0 0/0 .text actionWait__15daItemKantera_cFv */ int daItemKantera_c::actionWait() { - // NONMATCHING + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bg_check(); + if (mAcch.ChkGroundHit()) { + cLib_onBit(attention_info.flags, 0x10UL); + speedF *= 0.9f; + if (speedF < 1.0f) { + speedF = 0.0f; + } + } else { + cLib_offBit(attention_info.flags, 0x10UL); + } + daPy_py_c* player = daPy_getPlayerActorClass(); + if (fopAcM_checkCarryNow(this)) { + cLib_offBit(attention_info.flags, 0x10UL); + if (player->getGrabUpStart()) { + fopAcM_cancelCarryNow(this); + initActionOrderGetDemo(); + } + } else { + cLib_onBit(attention_info.flags, 0x10UL); + } + attention_info.position = current.pos; + return 1; } /* 80C39234-80C392D0 000C34 009C+00 1/1 0/0 0/0 .text initActionOrderGetDemo__15daItemKantera_cFv @@ -442,7 +227,19 @@ int daItemKantera_c::actionGetDemo() { /* 80C393B0-80C394DC 000DB0 012C+00 1/1 0/0 0/0 .text execute__15daItemKantera_cFv */ int daItemKantera_c::execute() { - // NONMATCHING + static daItemKantera_c::actionFunc l_demoFunc[4] = { + &daItemKantera_c::actionInit, + &daItemKantera_c::actionWait, + &daItemKantera_c::actionOrderGetDemo, + &daItemKantera_c::actionGetDemo, + }; + field_0x93c = speed; + field_0x930++; + (this->*(l_demoFunc[mStatus]))(); + eyePos = current.pos; + attention_info.position = current.pos; + setBaseMtx(); + return 1; } /* 80C394DC-80C39530 000EDC 0054+00 1/1 0/0 0/0 .text draw__15daItemKantera_cFv */ @@ -480,3 +277,31 @@ static int daItemKantera_Delete(daItemKantera_c* i_this) { static int daItemKantera_Create(fopAc_ac_c* i_this) { return static_cast<daItemKantera_c*>(i_this)->create(); } + + +/* 80C3975C-80C3977C -00001 0020+00 1/0 0/0 0/0 .data l_daItemKantera_Method */ +static actor_method_class l_daItemKantera_Method = { + (process_method_func)daItemKantera_Create, + (process_method_func)daItemKantera_Delete, + (process_method_func)daItemKantera_Execute, + NULL, + (process_method_func)daItemKantera_Draw, +}; + +/* 80C3977C-80C397AC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Kantera */ +extern actor_process_profile_definition g_profile_Obj_Kantera = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Kantera, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daItemKantera_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 238, // mPriority + &l_daItemKantera_Method, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; |
