diff --git a/config/GZ2E01/rels/d_a_obj_kazeneko/symbols.txt b/config/GZ2E01/rels/d_a_obj_kazeneko/symbols.txt index 2b2122466d4..8156c73cb8e 100644 --- a/config/GZ2E01/rels/d_a_obj_kazeneko/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_kazeneko/symbols.txt @@ -8,12 +8,12 @@ initCcCylinder__15daObjKazeNeko_cFv = .text:0x0000022C; // type:function size:0x setCcCylinder__15daObjKazeNeko_cFv = .text:0x000002B0; // type:function size:0x6C scope:global swingHead__15daObjKazeNeko_cFv = .text:0x0000031C; // type:function size:0xC4 scope:global getFirstVec__15daObjKazeNeko_cFP4cXyzi = .text:0x000003E0; // type:function size:0x50 scope:global -createSolidHeap__FP10fopAc_ac_c = .text:0x00000430; // type:function size:0x100 scope:global -daObjKazeNeko_Draw__FP15daObjKazeNeko_c = .text:0x00000530; // type:function size:0x118 scope:global -daObjKazeNeko_Execute__FP15daObjKazeNeko_c = .text:0x00000648; // type:function size:0x188 scope:global -daObjKazeNeko_IsDelete__FP15daObjKazeNeko_c = .text:0x000007D0; // type:function size:0x8 scope:global -daObjKazeNeko_Delete__FP15daObjKazeNeko_c = .text:0x000007D8; // type:function size:0x130 scope:global -daObjKazeNeko_Create__FP10fopAc_ac_c = .text:0x00000908; // type:function size:0x138 scope:global +createSolidHeap__FP10fopAc_ac_c = .text:0x00000430; // type:function size:0x100 scope:local +daObjKazeNeko_Draw__FP15daObjKazeNeko_c = .text:0x00000530; // type:function size:0x118 scope:local +daObjKazeNeko_Execute__FP15daObjKazeNeko_c = .text:0x00000648; // type:function size:0x188 scope:local +daObjKazeNeko_IsDelete__FP15daObjKazeNeko_c = .text:0x000007D0; // type:function size:0x8 scope:local +daObjKazeNeko_Delete__FP15daObjKazeNeko_c = .text:0x000007D8; // type:function size:0x130 scope:local +daObjKazeNeko_Create__FP10fopAc_ac_c = .text:0x00000908; // type:function size:0x138 scope:local __dt__8cM3dGCylFv = .text:0x00000A40; // type:function size:0x48 scope:global __dt__8cM3dGAabFv = .text:0x00000A88; // type:function size:0x48 scope:global __dt__10dCcD_GSttsFv = .text:0x00000AD0; // type:function size:0x5C scope:global @@ -33,8 +33,8 @@ ccCylSrc$3894 = .rodata:0x00000040; // type:object size:0x44 scope:local @3962 = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float @4119 = .rodata:0x00000090; // type:object size:0x8 scope:local @stringBase0 = .rodata:0x00000098; // type:object size:0x1A scope:local data:string_table -l_arcName = .data:0x00000000; // type:object size:0x4 scope:global -l_daObjKazeNeko_Method = .data:0x00000004; // type:object size:0x20 scope:global +l_arcName = .data:0x00000000; // type:object size:0x4 scope:local +l_daObjKazeNeko_Method = .data:0x00000004; // type:object size:0x20 scope:local g_profile_Obj_KazeNeko = .data:0x00000024; // type:object size:0x30 scope:global __vt__10cCcD_GStts = .data:0x00000054; // type:object size:0xC scope:global __vt__10dCcD_GStts = .data:0x00000060; // type:object size:0xC scope:global diff --git a/configure.py b/configure.py index e2375c58bc3..6ed56d6d916 100644 --- a/configure.py +++ b/configure.py @@ -1844,7 +1844,7 @@ def JSystemLib(lib_name, objects, progress_category="third_party"): ActorRel(NonMatching, "d_a_obj_kamakiri"), ActorRel(NonMatching, "d_a_obj_kantera"), ActorRel(NonMatching, "d_a_obj_katatsumuri"), - ActorRel(NonMatching, "d_a_obj_kazeneko"), + ActorRel(Matching, "d_a_obj_kazeneko"), ActorRel(NonMatching, "d_a_obj_kbox"), ActorRel(NonMatching, "d_a_obj_key"), ActorRel(NonMatching, "d_a_obj_keyhole"), diff --git a/include/d/actor/d_a_obj_kazeneko.h b/include/d/actor/d_a_obj_kazeneko.h index 46c12ea6ab0..0cc6a60d328 100644 --- a/include/d/actor/d_a_obj_kazeneko.h +++ b/include/d/actor/d_a_obj_kazeneko.h @@ -1,7 +1,24 @@ #ifndef D_A_OBJ_KAZENEKO_H #define D_A_OBJ_KAZENEKO_H -#include "f_op/f_op_actor_mng.h" +#include "f_op/f_op_actor.h" +#include "d/d_cc_d.h" + +struct KazoNekoAttr { + f32 mCylRadius; + f32 mCylHeight; + f32 field_0x08; + f32 field_0x0c; + f32 field_0x10; + f32 field_0x14; + f32 field_0x18; + f32 field_0x1c; + f32 field_0x20; + u8 field_0x24; + u8 field_0x25; + s16 field_0x26; + int field_0x28; +}; /** * @ingroup actors-objects @@ -20,13 +37,36 @@ class daObjKazeNeko_c : public fopAc_ac_c { /* 80C3CB10 */ void setCcCylinder(); /* 80C3CB7C */ void swingHead(); /* 80C3CC40 */ void getFirstVec(cXyz*, int); + inline int createHeap(); + inline int draw(); + inline int execute(); + inline int create(); + inline ~daObjKazeNeko_c(); - static u8 const M_attr[44]; + const KazoNekoAttr& attr() { return M_attr; } + + static KazoNekoAttr const M_attr; private: - /* 0x568 */ u8 field_0x568[0x754 - 0x568]; + /* 0x568 */ J3DModel* mModel; + /* 0x56C */ J3DModel* mArmModels[4]; + /* 0x57C */ request_of_phase_process_class mPhase; + /* 0x584 */ Mtx mMtx; + /* 0x5B4 */ dCcD_Stts mStts; + /* 0x5F0 */ dCcD_Cyl mCyl; + /* 0x72c */ cXyz field_0x72c; + /* 0x738 */ int field_0x738; + /* 0x73C */ f32 field_0x73c; + /* 0x740 */ f32 field_0x740; + /* 0x744 */ f32 field_0x744; + /* 0x748 */ s16 field_0x748; + /* 0x74A */ s16 field_0x74a; + /* 0x74C */ s16 field_0x74c; + /* 0x74E */ s16 field_0x74e; + /* 0x750 */ s16 field_0x750; + /* 0x752 */ u8 field_0x752; + /* 0x753 */ u8 field_0x753; }; STATIC_ASSERT(sizeof(daObjKazeNeko_c) == 0x754); - #endif /* D_A_OBJ_KAZENEKO_H */ diff --git a/src/d/actor/d_a_obj_kazeneko.cpp b/src/d/actor/d_a_obj_kazeneko.cpp index 13f84abdc18..39ce5fab01a 100644 --- a/src/d/actor/d_a_obj_kazeneko.cpp +++ b/src/d/actor/d_a_obj_kazeneko.cpp @@ -4,153 +4,48 @@ */ #include "d/actor/d_a_obj_kazeneko.h" +#include "SSystem/SComponent/c_math.h" +#include "d/actor/d_a_npc_tk.h" #include "d/d_cc_d.h" -#include "dol2asm.h" +#include "d/d_com_inf_game.h" +#include "f_op/f_op_actor_mng.h" - - -// -// Forward References: -// - -extern "C" void create_init__15daObjKazeNeko_cFv(); -extern "C" void initBaseMtx__15daObjKazeNeko_cFv(); -extern "C" void setBaseMtx__15daObjKazeNeko_cFv(); -extern "C" void initCcCylinder__15daObjKazeNeko_cFv(); -extern "C" void setCcCylinder__15daObjKazeNeko_cFv(); -extern "C" void swingHead__15daObjKazeNeko_cFv(); -extern "C" void getFirstVec__15daObjKazeNeko_cFP4cXyzi(); -extern "C" static void createSolidHeap__FP10fopAc_ac_c(); -extern "C" static void daObjKazeNeko_Draw__FP15daObjKazeNeko_c(); -extern "C" static void daObjKazeNeko_Execute__FP15daObjKazeNeko_c(); -extern "C" static bool daObjKazeNeko_IsDelete__FP15daObjKazeNeko_c(); -extern "C" static void daObjKazeNeko_Delete__FP15daObjKazeNeko_c(); -extern "C" static void daObjKazeNeko_Create__FP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" u8 const M_attr__15daObjKazeNeko_c[44]; -extern "C" extern char const* const d_a_obj_kazeneko__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void dKyw_get_wind_pow__Fv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -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 SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -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 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void endHawkCamera__10daNPC_TK_cFv(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80C3D3DC-80C3D408 000000 002C+00 7/7 0/0 0/0 .rodata M_attr__15daObjKazeNeko_c */ -SECTION_RODATA u8 const daObjKazeNeko_c::M_attr[44] = { - 0x41, 0xF0, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x45, 0x3B, 0x80, 0x00, 0x45, 0xDA, 0xC0, - 0x00, 0x42, 0xB4, 0x00, 0x00, 0x44, 0xE1, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x41, 0xD8, - 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x01, 0x70, 0x64, 0x00, 0x00, 0x19, 0x00, 0x00, +KazoNekoAttr const daObjKazeNeko_c::M_attr = { + 30.0f, 120.0f, 3000.0f, 7000.0f, 90.0f, + 1800.0f, 180.0f, 27.0f, 15.0f, + 1, 0x70, 0x6400, 0x190000, }; -COMPILER_STRIP_GATE(0x80C3D3DC, &daObjKazeNeko_c::M_attr); - -/* 80C3D408-80C3D40C 00002C 0004+00 0/1 0/0 0/0 .rodata @3853 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3853 = -100.0f; -COMPILER_STRIP_GATE(0x80C3D408, &lit_3853); -#pragma pop - -/* 80C3D40C-80C3D410 000030 0004+00 0/1 0/0 0/0 .rodata @3854 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3854 = -10.0f; -COMPILER_STRIP_GATE(0x80C3D40C, &lit_3854); -#pragma pop - -/* 80C3D410-80C3D414 000034 0004+00 0/1 0/0 0/0 .rodata @3855 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3855 = 100.0f; -COMPILER_STRIP_GATE(0x80C3D410, &lit_3855); -#pragma pop - -/* 80C3D414-80C3D418 000038 0004+00 0/1 0/0 0/0 .rodata @3856 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3856 = 200.0f; -COMPILER_STRIP_GATE(0x80C3D414, &lit_3856); -#pragma pop /* 80C3C8D8-80C3C968 000078 0090+00 1/1 0/0 0/0 .text create_init__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::create_init() { - // NONMATCHING + fopAcM_setCullSizeBox(this, -100.0f, -10.0f, -100.0f, 100.0f, 200.0f, 100.0f); + field_0x72c.set(current.pos.x, current.pos.y + attr().field_0x1c, current.pos.z); + field_0x752 = 0; + initBaseMtx(); + initCcCylinder(); } /* 80C3C968-80C3C988 000108 0020+00 1/1 0/0 0/0 .text initBaseMtx__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::initBaseMtx() { - // NONMATCHING + setBaseMtx(); } -/* ############################################################################################## */ -/* 80C3D418-80C3D41C 00003C 0004+00 2/3 0/0 0/0 .rodata @3890 */ -SECTION_RODATA static u8 const lit_3890[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80C3D418, &lit_3890); - /* 80C3C988-80C3CA8C 000128 0104+00 2/2 0/0 0/0 .text setBaseMtx__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::XrotM(shape_angle.x); + mDoMtx_stack_c::ZrotM(shape_angle.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + mModel->setBaseTRMtx(mDoMtx_stack_c::get()); + cMtx_copy(mDoMtx_stack_c::get(), mMtx); + if (field_0x738 == 0) { + mDoMtx_stack_c::transM(0.0f, attr().field_0x1c, 0.0f); + mDoMtx_stack_c::YrotM(field_0x748); + for (int i = 0; i < 4; i++) { + mDoMtx_stack_c::YrotM(0x4000); + mArmModels[i]->setBaseTRMtx(mDoMtx_stack_c::get()); + } + } } /* ############################################################################################## */ @@ -172,96 +67,182 @@ const static dCcD_SrcCyl ccCylSrc = { /* 80C3CA8C-80C3CB10 00022C 0084+00 1/1 0/0 0/0 .text initCcCylinder__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::initCcCylinder() { - // NONMATCHING + mStts.Init(0xff, 0xff, this); + mCyl.Set(ccCylSrc); + mCyl.SetStts(&mStts); + mCyl.SetC(current.pos); + mCyl.SetR(attr().mCylRadius); + mCyl.SetH(attr().mCylHeight); } /* 80C3CB10-80C3CB7C 0002B0 006C+00 1/1 0/0 0/0 .text setCcCylinder__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::setCcCylinder() { - // NONMATCHING + mCyl.SetC(current.pos); + mCyl.SetR(attr().mCylRadius); + mCyl.SetH(attr().mCylHeight); + dComIfG_Ccsp()->Set(&mCyl); } /* 80C3CB7C-80C3CC40 00031C 00C4+00 1/1 0/0 0/0 .text swingHead__15daObjKazeNeko_cFv */ void daObjKazeNeko_c::swingHead() { - // NONMATCHING + if (field_0x744 != 0.0f) { + f32 dVar5 = field_0x744 * cM_ssin(field_0x74c); + shape_angle.x = dVar5 * cM_ssin(field_0x74e); + shape_angle.z = dVar5 * cM_scos(field_0x74e); + cLib_chaseF(&field_0x744, 0.0f, attr().field_0x18); + field_0x74c += attr().field_0x26; + } } -/* ############################################################################################## */ -/* 80C3D460-80C3D464 000084 0004+00 0/1 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = 1.0f; -COMPILER_STRIP_GATE(0x80C3D460, &lit_3947); -#pragma pop +static f32 dummyFloat1() { + return 1.0f; +} -/* 80C3D464-80C3D468 000088 0004+00 0/1 0/0 0/0 .rodata @3948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3948 = -1.0f; -COMPILER_STRIP_GATE(0x80C3D464, &lit_3948); -#pragma pop -/* 80C3D468-80C3D46C 00008C 0004+00 1/1 0/0 0/0 .rodata @3962 */ -SECTION_RODATA static f32 const lit_3962 = 30.0f; -COMPILER_STRIP_GATE(0x80C3D468, &lit_3962); +static f32 dummyFloat2() { + return -1.0f; +} /* 80C3CC40-80C3CC90 0003E0 0050+00 0/0 0/0 1/1 .text getFirstVec__15daObjKazeNeko_cFP4cXyzi */ -void daObjKazeNeko_c::getFirstVec(cXyz* param_0, int param_1) { - // NONMATCHING +void daObjKazeNeko_c::getFirstVec(cXyz* param_1, int param_2) { + s16 sVar4 = field_0x748 + (param_2 << 14); + param_1->set((attr().field_0x20 * cM_ssin(sVar4)), 30.0f, attr().field_0x20 * cM_scos(sVar4)); } -/* ############################################################################################## */ -/* 80C3D474-80C3D474 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80C3D474 = "J_Kazami"; -SECTION_DEAD static char const* const stringBase_80C3D47D = "pole.bmd"; -SECTION_DEAD static char const* const stringBase_80C3D486 = "arm.bmd"; -#pragma pop - /* 80C3D490-80C3D494 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_kazeneko__stringBase0; +static char* l_arcName = "J_Kazami"; + +inline int daObjKazeNeko_c::createHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "pole.bmd"); + JUT_ASSERT(458, modelData != 0); + mModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mModel == NULL) { + return 0; + } + modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "arm.bmd"); + JUT_ASSERT(465, modelData != 0); + for (int i = 0; i < 4; i++) { + mArmModels[i] = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mArmModels[i] == NULL) { + return 0; + } + } + return 1; +} + /* 80C3CC90-80C3CD90 000430 0100+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */ -static void createSolidHeap(fopAc_ac_c* param_0) { - // NONMATCHING +static int createSolidHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); +} + +inline int daObjKazeNeko_c::draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mModel, &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mModel); + dComIfGd_setList(); + if (field_0x738 == 1) { + return 1; + } + for (int i = 0; i < 4; i++) { + g_env_light.setLightTevColorType_MAJI( + + mArmModels[i], &tevStr); + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mArmModels[i]); + dComIfGd_setList(); + } + return 1; } /* 80C3CD90-80C3CEA8 000530 0118+00 1/0 0/0 0/0 .text daObjKazeNeko_Draw__FP15daObjKazeNeko_c */ -static void daObjKazeNeko_Draw(daObjKazeNeko_c* param_0) { - // NONMATCHING +static int daObjKazeNeko_Draw(daObjKazeNeko_c* i_this) { + return i_this->draw(); } -/* ############################################################################################## */ -/* 80C3D46C-80C3D474 000090 0008+00 0/1 0/0 0/0 .rodata @4119 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4119[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80C3D46C, &lit_4119); -#pragma pop +inline int daObjKazeNeko_c::execute() { + if (field_0x738 == 0) { + field_0x73c = attr().field_0x08 * dKyw_get_wind_pow(); + field_0x748 = field_0x748 + field_0x73c + field_0x740; + cLib_chaseF(&field_0x740, 0.0f, attr().field_0x10); + Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_CAT_VANE_ROLL, &field_0x72c, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + } + if (mCyl.ChkTgHit() != 0) { + daNPC_TK_c* tk = (daNPC_TK_c*)mCyl.GetTgHitAc(); + if (fopAcM_GetName(tk) == PROC_NPC_TK) { + field_0x740 = attr().field_0x0c; + tk->setBump(); + } + } + swingHead(); + if (field_0x750 > 0) { + if (--field_0x750 <= 0) { + daNPC_TK_c* tk = (daNPC_TK_c*)fopAcM_SearchByName(PROC_NPC_TK); + if (tk != NULL) { + tk->endHawkCamera(); + field_0x752 = 1; + } + } + } + setBaseMtx(); + setCcCylinder(); + return 1; +} /* 80C3CEA8-80C3D030 000648 0188+00 1/0 0/0 0/0 .text daObjKazeNeko_Execute__FP15daObjKazeNeko_c */ -static void daObjKazeNeko_Execute(daObjKazeNeko_c* param_0) { - // NONMATCHING +static int daObjKazeNeko_Execute(daObjKazeNeko_c* i_this) { + return i_this->execute(); } /* 80C3D030-80C3D038 0007D0 0008+00 1/0 0/0 0/0 .text daObjKazeNeko_IsDelete__FP15daObjKazeNeko_c */ -static bool daObjKazeNeko_IsDelete(daObjKazeNeko_c* param_0) { - return true; +static int daObjKazeNeko_IsDelete(daObjKazeNeko_c* i_this) { + return 1; +} + +inline daObjKazeNeko_c::~daObjKazeNeko_c() { + dComIfG_resDelete(&mPhase, l_arcName); +} + +/* 80C3D038-80C3D168 0007D8 0130+00 1/0 0/0 0/0 .text daObjKazeNeko_Delete__FP15daObjKazeNeko_c */ +static int daObjKazeNeko_Delete(daObjKazeNeko_c* i_this) { + fopAcM_GetID(i_this); + i_this->~daObjKazeNeko_c(); + return 1; +} + +inline int daObjKazeNeko_c::create() { + fopAcM_SetupActor(this, daObjKazeNeko_c); + int rv = dComIfG_resLoad(&mPhase, l_arcName); + if (rv == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this, createSolidHeap, 0x2800) == 0) { + return cPhs_ERROR_e; + } + create_init(); + fopAcM_SetMtx(this, mMtx); + } + return rv; } +/* 80C3D168-80C3D2A0 000908 0138+00 1/0 0/0 0/0 .text daObjKazeNeko_Create__FP10fopAc_ac_c */ +static int daObjKazeNeko_Create(fopAc_ac_c* i_this) { + fopAcM_GetID(i_this); + return static_cast(i_this)->create(); +} + + /* ############################################################################################## */ /* 80C3D494-80C3D4B4 -00001 0020+00 1/0 0/0 0/0 .data l_daObjKazeNeko_Method */ static actor_method_class l_daObjKazeNeko_Method = { - (process_method_func)daObjKazeNeko_Create__FP10fopAc_ac_c, - (process_method_func)daObjKazeNeko_Delete__FP15daObjKazeNeko_c, - (process_method_func)daObjKazeNeko_Execute__FP15daObjKazeNeko_c, - (process_method_func)daObjKazeNeko_IsDelete__FP15daObjKazeNeko_c, - (process_method_func)daObjKazeNeko_Draw__FP15daObjKazeNeko_c, + (process_method_func)daObjKazeNeko_Create, + (process_method_func)daObjKazeNeko_Delete, + (process_method_func)daObjKazeNeko_Execute, + (process_method_func)daObjKazeNeko_IsDelete, + (process_method_func)daObjKazeNeko_Draw, }; /* 80C3D4B4-80C3D4E4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_KazeNeko */ @@ -282,66 +263,4 @@ extern actor_process_profile_definition g_profile_Obj_KazeNeko = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80C3D4E4-80C3D4F0 000054 000C+00 3/3 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, -}; - -/* 80C3D4F0-80C3D4FC 000060 000C+00 2/2 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, -}; - -/* 80C3D4FC-80C3D508 00006C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80C3D508-80C3D514 000078 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80C3D038-80C3D168 0007D8 0130+00 1/0 0/0 0/0 .text daObjKazeNeko_Delete__FP15daObjKazeNeko_c */ -static void daObjKazeNeko_Delete(daObjKazeNeko_c* param_0) { - // NONMATCHING -} - -/* 80C3D168-80C3D2A0 000908 0138+00 1/0 0/0 0/0 .text daObjKazeNeko_Create__FP10fopAc_ac_c */ -static void daObjKazeNeko_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80C3D2A0-80C3D2E8 000A40 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80C3D2E8-80C3D330 000A88 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80C3D330-80C3D38C 000AD0 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C3D38C-80C3D3D4 000B2C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80C3D474-80C3D474 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 80C3D474-80C3D474 000098 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */