diff --git a/config/GZ2E01/rels/d_a_obj_wood_statue/symbols.txt b/config/GZ2E01/rels/d_a_obj_wood_statue/symbols.txt index 45cc645e68..3ecc026a57 100644 --- a/config/GZ2E01/rels/d_a_obj_wood_statue/symbols.txt +++ b/config/GZ2E01/rels/d_a_obj_wood_statue/symbols.txt @@ -3,9 +3,9 @@ _epilog = .text:0x0000002C; // type:function size:0x2C scope:global _unresolved = .text:0x00000058; // type:function size:0x20 scope:global Reflect__FP4cXyzRC13cBgS_PolyInfof = .text:0x00000078; // type:function size:0x2FC scope:global __dt__8cM3dGPlaFv = .text:0x00000374; // type:function size:0x48 scope:global -lifeGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf = .text:0x000003BC; // type:function size:0x5C scope:global -lifeGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf = .text:0x00000418; // type:function size:0x44 scope:global -s_sh_sub__FPvPv = .text:0x0000045C; // type:function size:0x4C scope:global +lifeGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf = .text:0x000003BC; // type:function size:0x5C scope:local +lifeGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf = .text:0x00000418; // type:function size:0x44 scope:local +s_sh_sub__FPvPv = .text:0x0000045C; // type:function size:0x4C scope:local initBaseMtx__14daObjWStatue_cFv = .text:0x000004A8; // type:function size:0x3C scope:global setBaseMtx__14daObjWStatue_cFv = .text:0x000004E4; // type:function size:0x4C scope:global Create__14daObjWStatue_cFv = .text:0x00000530; // type:function size:0x184 scope:global @@ -36,10 +36,10 @@ execute__14daObjWStatue_cFv = .text:0x000014E0; // type:function size:0x188 scop draw__14daObjWStatue_cFv = .text:0x00001668; // type:function size:0x54 scope:global setListStart__14daObjWStatue_cFv = .text:0x000016BC; // type:function size:0x4 scope:global _delete__14daObjWStatue_cFv = .text:0x000016C0; // type:function size:0x38 scope:global -daObjWStatue_Draw__FP14daObjWStatue_c = .text:0x000016F8; // type:function size:0x20 scope:global -daObjWStatue_Execute__FP14daObjWStatue_c = .text:0x00001718; // type:function size:0x20 scope:global -daObjWStatue_Delete__FP14daObjWStatue_c = .text:0x00001738; // type:function size:0x20 scope:global -daObjWStatue_Create__FP10fopAc_ac_c = .text:0x00001758; // type:function size:0x20 scope:global +daObjWStatue_Draw__FP14daObjWStatue_c = .text:0x000016F8; // type:function size:0x20 scope:local +daObjWStatue_Execute__FP14daObjWStatue_c = .text:0x00001718; // type:function size:0x20 scope:local +daObjWStatue_Delete__FP14daObjWStatue_c = .text:0x00001738; // type:function size:0x20 scope:local +daObjWStatue_Create__FP10fopAc_ac_c = .text:0x00001758; // type:function size:0x20 scope:local __dt__10cCcD_GSttsFv = .text:0x00001778; // type:function size:0x48 scope:global __dt__18dPa_levelEcallBackFv = .text:0x000017C0; // type:function size:0x74 scope:global execute__18JPAEmitterCallBackFP14JPABaseEmitter = .text:0x00001834; // type:function size:0x4 scope:global @@ -52,7 +52,7 @@ cLib_calcTimer__FPUc = .text:0x00001844; // type:function size:0x1C scope:gl _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global ...rodata.0 = .rodata:0x00000000; // type:label scope:local -l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:global +l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:local @3857 = .rodata:0x00000044; // type:object size:0x4 scope:local @3858 = .rodata:0x00000048; // type:object size:0x8 scope:local @3859 = .rodata:0x00000050; // type:object size:0x8 scope:local @@ -73,11 +73,11 @@ l_cyl_src = .rodata:0x00000000; // type:object size:0x44 scope:global @4324 = .rodata:0x00000098; // type:object size:0x4 scope:local @stringBase0 = .rodata:0x0000009C; // type:object size:0x45 scope:local data:string_table ...data.0 = .data:0x00000000; // type:label scope:local -cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global +cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local @1787 = .data:0x0000000C; // type:object size:0x4 scope:local lbl_691_data_10 = .data:0x00000010; // type:object size:0x10 -l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte -l_eventName = .data:0x00000024; // type:object size:0x4 scope:global data:4byte +l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte +l_eventName = .data:0x00000024; // type:object size:0x4 scope:local data:4byte action_table$4273 = .data:0x00000028; // type:object size:0x10 scope:local @4356 = .data:0x00000038; // type:object size:0xC scope:local @4357 = .data:0x00000044; // type:object size:0xC scope:local @@ -85,7 +85,7 @@ action_table$4273 = .data:0x00000028; // type:object size:0x10 scope:local @4359 = .data:0x0000005C; // type:object size:0xC scope:local @4360 = .data:0x00000068; // type:object size:0xC scope:local l_demoFunc$4355 = .data:0x00000074; // type:object size:0x3C scope:local -l_daObjWStatue_Method = .data:0x000000B0; // type:object size:0x20 scope:global +l_daObjWStatue_Method = .data:0x000000B0; // type:object size:0x20 scope:local g_profile_Obj_WoodStatue = .data:0x000000D0; // type:object size:0x30 scope:global __vt__12dBgS_AcchCir = .data:0x00000100; // type:object size:0xC scope:global __vt__10cCcD_GStts = .data:0x0000010C; // type:object size:0xC scope:global @@ -96,4 +96,4 @@ __vt__8cM3dGAab = .data:0x00000154; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x00000160; // type:object size:0x24 scope:global __vt__14daObjWStatue_c = .data:0x00000184; // type:object size:0x44 scope:global __vt__8cM3dGPla = .data:0x000001C8; // type:object size:0xC scope:global -lbl_691_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$2078 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte diff --git a/config/GZ2J01/rels/d_a_obj_wood_statue/symbols.txt b/config/GZ2J01/rels/d_a_obj_wood_statue/symbols.txt index b06a6dc020..328c69c652 100644 --- a/config/GZ2J01/rels/d_a_obj_wood_statue/symbols.txt +++ b/config/GZ2J01/rels/d_a_obj_wood_statue/symbols.txt @@ -95,4 +95,4 @@ __vt__8cM3dGAab = .data:0x00000154; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x00000160; // type:object size:0x24 scope:global __vt__14daObjWStatue_c = .data:0x00000184; // type:object size:0x44 scope:global __vt__8cM3dGPla = .data:0x000001C8; // type:object size:0xC scope:global -lbl_691_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$2078 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/rels/d_a_obj_wood_statue/symbols.txt b/config/GZ2P01/rels/d_a_obj_wood_statue/symbols.txt index b06a6dc020..328c69c652 100644 --- a/config/GZ2P01/rels/d_a_obj_wood_statue/symbols.txt +++ b/config/GZ2P01/rels/d_a_obj_wood_statue/symbols.txt @@ -95,4 +95,4 @@ __vt__8cM3dGAab = .data:0x00000154; // type:object size:0xC scope:global __vt__12dBgS_ObjAcch = .data:0x00000160; // type:object size:0x24 scope:global __vt__14daObjWStatue_c = .data:0x00000184; // type:object size:0x44 scope:global __vt__8cM3dGPla = .data:0x000001C8; // type:object size:0xC scope:global -lbl_691_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte +init$2078 = .bss:0x00000000; // type:object size:0x1 data:byte diff --git a/configure.py b/configure.py index 9a3552699f..1dde066427 100755 --- a/configure.py +++ b/configure.py @@ -2163,7 +2163,7 @@ config.libs = [ ActorRel(MatchingFor("GZ2E01"), "d_a_obj_wind_stone"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_window"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_wood_pendulum"), - ActorRel(NonMatching, "d_a_obj_wood_statue"), + ActorRel(MatchingFor("GZ2E01"), "d_a_obj_wood_statue"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_wsword"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_yel_bag"), ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ystone"), diff --git a/include/d/actor/d_a_itembase.h b/include/d/actor/d_a_itembase.h index 737c221ba4..ac463a42fa 100644 --- a/include/d/actor/d_a_itembase.h +++ b/include/d/actor/d_a_itembase.h @@ -33,7 +33,7 @@ public: void hide(); void show(); void changeDraw(); - u8 chkDraw(); + bool chkDraw(); void dead(); bool chkDead(); int CreateItemHeap(char const*, s16, s16, s16, s16, s16, s16, s16); diff --git a/include/d/actor/d_a_obj_wood_statue.h b/include/d/actor/d_a_obj_wood_statue.h index a7ebd34ccd..331da72a1d 100644 --- a/include/d/actor/d_a_obj_wood_statue.h +++ b/include/d/actor/d_a_obj_wood_statue.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_WOOD_STATUE_H #define D_A_OBJ_WOOD_STATUE_H +#include "d/actor/d_a_itembase.h" +#include "d/d_particle.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,33 +13,57 @@ * @details * */ -class daObjWStatue_c : public fopAc_ac_c { +class daObjWStatue_c : public daItemBase_c { public: + typedef int (daObjWStatue_c::*demoFunc)(); + + enum Status { + STATUS_WAIT, + STATUS_ORDER_GET_DEMO, + STATUS_GET_DEMO, + STATUS_SW_ON_WAIT, + STATUS_BOOMERANG_CARRY, + }; + /* 80D3A268 */ void initBaseMtx(); /* 80D3A2A4 */ void setBaseMtx(); - /* 80D3A2F0 */ void Create(); - /* 80D3A474 */ bool __CreateHeap(); - /* 80D3A47C */ void create(); + /* 80D3A2F0 */ int Create(); + /* 80D3A474 */ int __CreateHeap(); + /* 80D3A47C */ int create(); /* 80D3A8E8 */ void bg_check(); - /* 80D3AA3C */ void actionWaitInit(); - /* 80D3AA80 */ void actionWait(); - /* 80D3AB9C */ void initActionOrderGetDemo(); - /* 80D3AC64 */ void actionOrderGetDemo(); - /* 80D3ACAC */ void actionGetDemo(); - /* 80D3AD30 */ void actionInitSwOnWait(); - /* 80D3AD88 */ void actionSwOnWait(); - /* 80D3AE7C */ void actionInitBoomerangCarry(); - /* 80D3AF5C */ void actionBoomerangCarry(); + /* 80D3AA3C */ int actionWaitInit(); + /* 80D3AA80 */ int actionWait(); + /* 80D3AB9C */ int initActionOrderGetDemo(); + /* 80D3AC64 */ int actionOrderGetDemo(); + /* 80D3ACAC */ int actionGetDemo(); + /* 80D3AD30 */ int actionInitSwOnWait(); + /* 80D3AD88 */ int actionSwOnWait(); + /* 80D3AE7C */ int actionInitBoomerangCarry(); + /* 80D3AF5C */ int actionBoomerangCarry(); /* 80D3AFC0 */ void demoProc(); /* 80D3B164 */ void effectSet(); /* 80D3B250 */ void effectStop(); - /* 80D3B2A0 */ void execute(); - /* 80D3B428 */ void draw(); + /* 80D3B2A0 */ int execute(); + /* 80D3B428 */ int draw(); /* 80D3B47C */ void setListStart(); - /* 80D3B480 */ void _delete(); + /* 80D3B480 */ int _delete(); + + bool chkStatus(u8 status) { return mStatus == status; } + void setStatus(u8 status) { mStatus = status; } + u8 getSwbit2() { return fopAcM_GetParamBit(this, 8, 8); } private: - /* 0x568 */ u8 field_0x568[0x974 - 0x568]; + /* 0x92C */ fpc_ProcID mItemId; + /* 0x930 */ int field_0x930; + /* 0x934 */ int mStaffIdx; + /* 0x938 */ u8 mStatus; + /* 0x939 */ u8 mShouldBoundSEPlay; + /* 0x93A */ u8 field_0x93a; + /* 0x93B */ u8 mRespawnTimer; + /* 0x93C */ cXyz field_0x93c; + /* 0x948 */ s16 mEventIdx; + /* 0x94A */ s16 mBoundSETimer; + /* 0x94C */ dPa_followEcallBack mCallbacks[2]; }; STATIC_ASSERT(sizeof(daObjWStatue_c) == 0x974); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index ca6c98800f..bb8508d625 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -86,16 +86,9 @@ struct fopAcM_search_prm { /* 0x0A */ s8 subtype; }; -// define to avoid vtable mess in WIP TUs -#ifndef HIO_entry_c_NO_VIRTUAL struct fOpAcm_HIO_entry_c : public mDoHIO_entry_c { virtual ~fOpAcm_HIO_entry_c() {} }; -#else -struct fOpAcm_HIO_entry_c { - ~fOpAcm_HIO_entry_c(); -}; -#endif class l_HIO { public: @@ -389,7 +382,7 @@ inline const Vec* fopAcM_getCullSizeBoxMax(const fopAc_ac_c* i_actor) { return &i_actor->cull.box.max; } -inline void fopAcM_SetCullSize(fopAc_ac_c* i_actor, s8 i_cullsize) { +inline void fopAcM_SetCullSize(fopAc_ac_c* i_actor, int i_cullsize) { i_actor->cullType = i_cullsize; } diff --git a/src/d/actor/d_a_obj_kantera.cpp b/src/d/actor/d_a_obj_kantera.cpp index 75d29ab078..e7aa87c7fd 100644 --- a/src/d/actor/d_a_obj_kantera.cpp +++ b/src/d/actor/d_a_obj_kantera.cpp @@ -70,7 +70,7 @@ int daItemKantera_c::Create() { mCcCyl.SetStts(&mCcStts); mCcCyl.SetR(dItem_data::getR(m_itemNo)); mCcCyl.SetH(dItem_data::getH(m_itemNo)); - fopAcM_SetCullSize(this, 0xF); + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); actionWaitInit(); fopAcM_SetGravity(this, -6.0f); fopAcM_OnCarryType(this, fopAcM_CARRY_ITEM); diff --git a/src/d/actor/d_a_obj_shield.cpp b/src/d/actor/d_a_obj_shield.cpp index e200b2a387..571b860707 100644 --- a/src/d/actor/d_a_obj_shield.cpp +++ b/src/d/actor/d_a_obj_shield.cpp @@ -90,7 +90,7 @@ int daItemShield_c::Create() { mCcCyl.SetStts(&mCcStts); mCcCyl.SetR(dItem_data::getR(m_itemNo)); mCcCyl.SetH(dItem_data::getH(m_itemNo)); - fopAcM_SetCullSize(this, 15); + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); actionWaitInit(); if (fopAcM_isSwitch(this, getSwBit())) { field_0x94a = 3; diff --git a/src/d/actor/d_a_obj_wood_statue.cpp b/src/d/actor/d_a_obj_wood_statue.cpp index 40a6989266..5d9c2c8062 100644 --- a/src/d/actor/d_a_obj_wood_statue.cpp +++ b/src/d/actor/d_a_obj_wood_statue.cpp @@ -4,170 +4,38 @@ */ #include "d/actor/d_a_obj_wood_statue.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" +#include "d/d_com_inf_game.h" +#include "d/d_item_data.h" +#include "d/d_s_play.h" #include "dol2asm.h" +#ifdef DEBUG -// -// Forward References: -// +class daObjWStatue_HIO_c : public fOpAcm_HIO_entry_c { +public: + daObjWStatue_HIO_c() { + mRespawnTimer = 30; + } -extern "C" static void Reflect__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" static void -lifeGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -lifeGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void s_sh_sub__FPvPv(); -extern "C" void initBaseMtx__14daObjWStatue_cFv(); -extern "C" void setBaseMtx__14daObjWStatue_cFv(); -extern "C" void Create__14daObjWStatue_cFv(); -extern "C" bool __CreateHeap__14daObjWStatue_cFv(); -extern "C" void create__14daObjWStatue_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__14daObjWStatue_cFv(); -extern "C" void actionWaitInit__14daObjWStatue_cFv(); -extern "C" void actionWait__14daObjWStatue_cFv(); -extern "C" void initActionOrderGetDemo__14daObjWStatue_cFv(); -extern "C" void actionOrderGetDemo__14daObjWStatue_cFv(); -extern "C" void actionGetDemo__14daObjWStatue_cFv(); -extern "C" void actionInitSwOnWait__14daObjWStatue_cFv(); -extern "C" void actionSwOnWait__14daObjWStatue_cFv(); -extern "C" void actionInitBoomerangCarry__14daObjWStatue_cFv(); -extern "C" void actionBoomerangCarry__14daObjWStatue_cFv(); -extern "C" void demoProc__14daObjWStatue_cFv(); -extern "C" void effectSet__14daObjWStatue_cFv(); -extern "C" void effectStop__14daObjWStatue_cFv(); -extern "C" void execute__14daObjWStatue_cFv(); -extern "C" void draw__14daObjWStatue_cFv(); -extern "C" void setListStart__14daObjWStatue_cFv(); -extern "C" void _delete__14daObjWStatue_cFv(); -extern "C" static void daObjWStatue_Draw__FP14daObjWStatue_c(); -extern "C" static void daObjWStatue_Execute__FP14daObjWStatue_c(); -extern "C" static void daObjWStatue_Delete__FP14daObjWStatue_c(); -extern "C" static void daObjWStatue_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_80D3B604(void* _this, u8*); -extern "C" static void func_80D3B620(); -extern "C" static void func_80D3B628(); -extern "C" extern char const* const d_a_obj_wood_statue__stringBase0; + void genMessage(JORMContext* context) { + // Wooden Statue + context->genLabel("木彫りの像", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); -// -// External References: -// + // Respawn timer + context->genSlider("全滅後の出現タイマー", &mRespawnTimer, 0, 200, 0, NULL, 0xffff, 0xffff, + 0x200, 0x18); + } -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -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_orderChangeEventId__FP10fopAc_ac_csUsUs(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_createItemForTrBoxDemo__FPC4cXyziiiPC5csXyzPC4cXyz(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void fpcSch_JudgeForPName__FPvPv(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void onSwitch__10dSv_info_cFii(); -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 reset__14dEvt_control_cFPv(); -extern "C" void setPtI_Id__14dEvt_control_cFUi(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void endCheckOld__16dEvent_manager_cFPCc(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void setGoal__16dEvent_manager_cFP4cXyz(); -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 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 ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -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 settingBeforeDraw__12daItemBase_cFv(); -extern "C" void setTevStr__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 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 __dl__FPv(); -extern "C" void __construct_array(); -extern "C" void __ptmf_scall(); -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_80D3B8F0[4]; + u8 mRespawnTimer; +}; + +daObjWStatue_HIO_c l_HIO; + +#endif -// -// Declarations: -// -/* ############################################################################################## */ /* 80D3B638-80D3B67C 000000 0044+00 5/5 0/0 0/0 .rodata l_cyl_src */ const static dCcD_SrcCyl l_cyl_src = { { @@ -183,637 +51,485 @@ const static dCcD_SrcCyl l_cyl_src = { } // mCyl }; -/* 80D3B67C-80D3B680 000044 0004+00 0/3 0/0 0/0 .rodata @3857 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3857[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80D3B67C, &lit_3857); -#pragma pop - -/* 80D3B680-80D3B688 000048 0008+00 0/1 0/0 0/0 .rodata @3858 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3858[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D3B680, &lit_3858); -#pragma pop - -/* 80D3B688-80D3B690 000050 0008+00 0/1 0/0 0/0 .rodata @3859 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3859[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D3B688, &lit_3859); -#pragma pop - -/* 80D3B690-80D3B698 000058 0008+00 0/1 0/0 0/0 .rodata @3860 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3860[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D3B690, &lit_3860); -#pragma pop - -/* 80D3B6D4-80D3B6D4 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D3B6D4 = "O_wood"; -SECTION_DEAD static char const* const stringBase_80D3B6DB = "GET_WOOD_STATUE"; -SECTION_DEAD static char const* const stringBase_80D3B6EB = "DEFAULT_GETITEM"; -SECTION_DEAD static char const* const stringBase_80D3B6FB = "WAIT"; -SECTION_DEAD static char const* const stringBase_80D3B700 = "MOVE"; -SECTION_DEAD static char const* const stringBase_80D3B705 = "SETPOS"; -SECTION_DEAD static char const* const stringBase_80D3B70C = "NOTEND"; -#pragma pop - -/* 80D3B71C-80D3B728 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, -}; - -/* 80D3B728-80D3B73C 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 +UNK_REL_DATA /* 80D3B73C-80D3B740 -00001 0004+00 1/1 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_wood_statue__stringBase0; +static char* l_arcName = "O_wood"; /* 80D3B740-80D3B744 -00001 0004+00 1/1 0/0 0/0 .data l_eventName */ -SECTION_DATA static void* l_eventName = (void*)(((char*)&d_a_obj_wood_statue__stringBase0) + 0x7); - -/* 80D3B744-80D3B754 -00001 0010+00 1/1 0/0 0/0 .data action_table$4273 */ -SECTION_DATA static void* action_table[4] = { - (void*)(((char*)&d_a_obj_wood_statue__stringBase0) + 0x27), - (void*)(((char*)&d_a_obj_wood_statue__stringBase0) + 0x2C), - (void*)(((char*)&d_a_obj_wood_statue__stringBase0) + 0x31), - (void*)(((char*)&d_a_obj_wood_statue__stringBase0) + 0x38), -}; - -/* 80D3B754-80D3B760 -00001 000C+00 0/1 0/0 0/0 .data @4356 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4356[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionWait__14daObjWStatue_cFv, -}; -#pragma pop - -/* 80D3B760-80D3B76C -00001 000C+00 0/1 0/0 0/0 .data @4357 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4357[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionOrderGetDemo__14daObjWStatue_cFv, -}; -#pragma pop - -/* 80D3B76C-80D3B778 -00001 000C+00 0/1 0/0 0/0 .data @4358 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4358[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionGetDemo__14daObjWStatue_cFv, -}; -#pragma pop - -/* 80D3B778-80D3B784 -00001 000C+00 0/1 0/0 0/0 .data @4359 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4359[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionSwOnWait__14daObjWStatue_cFv, -}; -#pragma pop - -/* 80D3B784-80D3B790 -00001 000C+00 0/1 0/0 0/0 .data @4360 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4360[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)actionBoomerangCarry__14daObjWStatue_cFv, -}; -#pragma pop - -/* 80D3B790-80D3B7CC 000074 003C+00 0/1 0/0 0/0 .data l_demoFunc$4355 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_demoFunc[60] = { - 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 - -/* 80D3B7CC-80D3B7EC -00001 0020+00 1/0 0/0 0/0 .data l_daObjWStatue_Method */ -static actor_method_class l_daObjWStatue_Method = { - (process_method_func)daObjWStatue_Create__FP10fopAc_ac_c, - (process_method_func)daObjWStatue_Delete__FP14daObjWStatue_c, - (process_method_func)daObjWStatue_Execute__FP14daObjWStatue_c, - 0, - (process_method_func)daObjWStatue_Draw__FP14daObjWStatue_c, -}; - -/* 80D3B7EC-80D3B81C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_WoodStatue */ -extern actor_process_profile_definition g_profile_Obj_WoodStatue = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_WoodStatue, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjWStatue_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 563, // mPriority - &l_daObjWStatue_Method, // sub_method - 0x00044100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 80D3B81C-80D3B828 000100 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, -}; - -/* 80D3B828-80D3B834 00010C 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, -}; - -/* 80D3B834-80D3B840 000118 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, -}; - -/* 80D3B840-80D3B864 000124 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, -}; - -/* 80D3B864-80D3B870 000148 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, -}; - -/* 80D3B870-80D3B87C 000154 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, -}; - -/* 80D3B87C-80D3B8A0 000160 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_80D3B628, - (void*)NULL, - (void*)NULL, - (void*)func_80D3B620, -}; - -/* 80D3B8A0-80D3B8E4 000184 0044+00 1/1 0/0 0/0 .data __vt__14daObjWStatue_c */ -SECTION_DATA extern void* __vt__14daObjWStatue_c[17] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)DrawBase__12daItemBase_cFv, - (void*)setListStart__14daObjWStatue_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__14daObjWStatue_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, -}; - -/* 80D3B8E4-80D3B8F0 0001C8 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, -}; +static char* l_eventName = "GET_WOOD_STATUE"; /* 80D39E38-80D3A134 000078 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 -} - -/* 80D3A134-80D3A17C 000374 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING +static f32 Reflect(cXyz* param_1, cBgS_PolyInfo const& param_2, f32 param_3) { + cM3dGPla acStack_3c; + bool isTriPla = dComIfG_Bgsp().GetTriPla(param_2, &acStack_3c); + if (isTriPla) { + cXyz cStack_48; + f32 dVar5 = param_1->absXZ(); + VECReflect(param_1, &acStack_3c.mNormal, &cStack_48); + *param_1 = (cStack_48 * dVar5) * param_3; + return param_1->absXZ(); + } else { + return 0.0f; + } } /* 80D3A17C-80D3A1D8 0003BC 005C+00 1/1 0/0 0/0 .text * lifeGetTgCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void lifeGetTgCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - // NONMATCHING +static void lifeGetTgCallBack(fopAc_ac_c* i_this, dCcD_GObjInf* param_2, fopAc_ac_c* param_3, + dCcD_GObjInf* param_4) { + if (i_this != NULL && + (param_4->ChkAtType(AT_TYPE_40) || param_4->ChkAtType(AT_TYPE_BOOMERANG)) && + !dComIfGp_event_runCheck() && + !((daObjWStatue_c*)i_this)->chkStatus(daObjWStatue_c::STATUS_BOOMERANG_CARRY)) + { + ((daObjWStatue_c*)i_this)->actionInitBoomerangCarry(); + } + return; } /* 80D3A1D8-80D3A21C 000418 0044+00 1/1 0/0 0/0 .text * lifeGetCoCallBack__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void lifeGetCoCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - // NONMATCHING +static void lifeGetCoCallBack(fopAc_ac_c* i_this, dCcD_GObjInf* param_2, fopAc_ac_c* param_3, + dCcD_GObjInf* param_4) { + if (i_this != NULL && param_3 != NULL && param_3 == dComIfGp_getLinkPlayer()) { + ((daObjWStatue_c*)i_this)->initActionOrderGetDemo(); + } } /* 80D3A21C-80D3A268 00045C 004C+00 1/1 0/0 0/0 .text s_sh_sub__FPvPv */ -static void s_sh_sub(void* param_0, void* param_1) { - // NONMATCHING +static void* s_sh_sub(void* param_1, void* param_2) { + if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_E_SH) { + return param_1; + } + return NULL; } /* 80D3A268-80D3A2A4 0004A8 003C+00 1/1 0/0 0/0 .text initBaseMtx__14daObjWStatue_cFv */ void daObjWStatue_c::initBaseMtx() { - // NONMATCHING + mpModel->setBaseScale(scale); + setBaseMtx(); } /* 80D3A2A4-80D3A2F0 0004E4 004C+00 2/2 0/0 0/0 .text setBaseMtx__14daObjWStatue_cFv */ void daObjWStatue_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); } -/* ############################################################################################## */ -/* 80D3B698-80D3B69C 000060 0004+00 0/1 0/0 0/0 .rodata @3943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3943 = 30.0f; -COMPILER_STRIP_GATE(0x80D3B698, &lit_3943); -#pragma pop - -/* 80D3B69C-80D3B6A0 000064 0004+00 0/1 0/0 0/0 .rodata @3944 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3944 = -6.0f; -COMPILER_STRIP_GATE(0x80D3B69C, &lit_3944); -#pragma pop - -/* 80D3B6A0-80D3B6A8 000068 0008+00 1/2 0/0 0/0 .rodata @3946 */ -SECTION_RODATA static u8 const lit_3946[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80D3B6A0, &lit_3946); - /* 80D3A2F0-80D3A474 000530 0184+00 1/1 0/0 0/0 .text Create__14daObjWStatue_cFv */ -void daObjWStatue_c::Create() { - // NONMATCHING +int daObjWStatue_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(lifeGetCoCallBack); + mCcCyl.SetTgHitCallback(lifeGetTgCallBack); + mCcCyl.SetR(dItem_data::getR(m_itemNo)); + mCcCyl.SetH(dItem_data::getH(m_itemNo)); + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_0_e); + actionInitSwOnWait(); + fopAcM_SetGravity(this, -6.0f); + eventInfo.setArchiveName(l_arcName); + mEventIdx = (s16)dComIfGp_getEventManager().getEventIdx(this, l_eventName, 0xff); + + #ifdef DEBUG + if (mEventIdx == -1) { + // Wooden statue: Event acquisition failure + OS_REPORT_ERROR("木彫りの像:イベント取得失敗\n"); + return 0; + } else { + return 1; + } + #else + return 1; + #endif } /* 80D3A474-80D3A47C 0006B4 0008+00 1/0 0/0 0/0 .text __CreateHeap__14daObjWStatue_cFv */ -bool daObjWStatue_c::__CreateHeap() { - return true; +int daObjWStatue_c::__CreateHeap() { + return 1; } /* 80D3A47C-80D3A66C 0006BC 01F0+00 1/1 0/0 0/0 .text create__14daObjWStatue_cFv */ -void daObjWStatue_c::create() { - // NONMATCHING +int daObjWStatue_c::create() { + fopAcM_SetupActor(this, daObjWStatue_c); + m_itemNo = fpcNm_ITEM_WOOD_STATUE; + if (fopAcM_isSwitch(this, getSwbit2())) { + return cPhs_ERROR_e; + } + + int rv = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo)); + if (rv == 4) { + if (fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap, 0x820) == 0) { + return cPhs_ERROR_e; + } + + if (Create() == 0) { + return cPhs_ERROR_e; + } + + #ifdef DEBUG + // Wooden statue + l_HIO.entryHIO("木彫りの像"); + #endif + } + return rv; } -/* 80D3A66C-80D3A6F0 0008AC 0084+00 1/1 0/0 0/0 .text __dt__19dPa_followEcallBackFv */ -// dPa_followEcallBack::~dPa_followEcallBack() { -extern "C" void __dt__19dPa_followEcallBackFv() { - // NONMATCHING -} - -/* 80D3A6F0-80D3A6F4 000930 0004+00 1/0 0/0 0/0 .text cleanup__18dPa_levelEcallBackFv */ -// void dPa_levelEcallBack::cleanup() { -extern "C" void cleanup__18dPa_levelEcallBackFv() { - /* empty function */ -} - -/* 80D3A6F4-80D3A71C 000934 0028+00 1/1 0/0 0/0 .text __defctor__19dPa_followEcallBackFv - */ -// void dPa_followEcallBack::__defctor() { -extern "C" void __defctor__19dPa_followEcallBackFv() { - // NONMATCHING -} - -/* 80D3A71C-80D3A764 00095C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80D3A764-80D3A7AC 0009A4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 80D3A7AC-80D3A808 0009EC 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80D3A808-80D3A878 000A48 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80D3A878-80D3A8E8 000AB8 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80D3B6A8-80D3B6AC 000070 0004+00 0/1 0/0 0/0 .rodata @4128 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4128 = 5.0f; -COMPILER_STRIP_GATE(0x80D3B6A8, &lit_4128); -#pragma pop - -/* 80D3B6AC-80D3B6B0 000074 0004+00 2/4 0/0 0/0 .rodata @4129 */ -SECTION_RODATA static f32 const lit_4129 = 1.0f; -COMPILER_STRIP_GATE(0x80D3B6AC, &lit_4129); - -/* 80D3B6B0-80D3B6B4 000078 0004+00 0/1 0/0 0/0 .rodata @4130 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4130 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D3B6B0, &lit_4130); -#pragma pop - -/* 80D3B6B4-80D3B6B8 00007C 0004+00 0/1 0/0 0/0 .rodata @4131 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4131 = 3.0f; -COMPILER_STRIP_GATE(0x80D3B6B4, &lit_4131); -#pragma pop - -/* 80D3B6B8-80D3B6BC 000080 0004+00 0/1 0/0 0/0 .rodata @4132 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4132 = -1.0f; -COMPILER_STRIP_GATE(0x80D3B6B8, &lit_4132); -#pragma pop - /* 80D3A8E8-80D3AA3C 000B28 0154+00 1/1 0/0 0/0 .text bg_check__14daObjWStatue_cFv */ void daObjWStatue_c::bg_check() { - // NONMATCHING + f32 dVar6 = 0.7f; + if (mAcch.ChkWallHit()) { + if (speedF > 5.0f) { + Reflect(&speed, mAcchCir, 1.0f); + } + current.angle.y = cM_atan2s(speed.x, speed.z); + } + + if (mAcch.ChkGroundLanding()) { + cXyz acStack_38(speed); + if (speedF > 5.0f) { + Reflect(&acStack_38, mAcchCir, dVar6); + } + speed.y = -field_0x93c.y * dVar6; + if (speed.y < 3.0f) { + fopAcM_SetSpeedF(this, 0.0f); + } + if (mBoundSETimer > 5) { + mShouldBoundSEPlay++; + } + + if (mShouldBoundSEPlay == 1) { + fopAcM_seStart(this, Z2SE_OBJ_WOOD_STATUE_BOUND, 0); + // Wooden Statue: Bound SE + OS_REPORT("木彫りの像:バウンドSE\n"); + } + } } /* 80D3AA3C-80D3AA80 000C7C 0044+00 1/1 0/0 0/0 .text actionWaitInit__14daObjWStatue_cFv */ -void daObjWStatue_c::actionWaitInit() { - // NONMATCHING +int daObjWStatue_c::actionWaitInit() { + mCcCyl.OnTgSPrmBit(1); + mCcCyl.OnCoSPrmBit(1); + mBoundSETimer = 0; + attention_info.position = current.pos; + setStatus(STATUS_WAIT); + return 1; } -/* ############################################################################################## */ -/* 80D3B6BC-80D3B6C0 000084 0004+00 0/1 0/0 0/0 .rodata @4168 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4168 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80D3B6BC, &lit_4168); -#pragma pop - /* 80D3AA80-80D3AB9C 000CC0 011C+00 1/0 0/0 0/0 .text actionWait__14daObjWStatue_cFv */ -void daObjWStatue_c::actionWait() { - // NONMATCHING +int daObjWStatue_c::actionWait() { + mBoundSETimer++; + if (dComIfGp_evmng_endCheck(mEventIdx)) { + dComIfGp_event_reset(); + } else { + demoProc(); + } + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); + mAcch.CrrPos(dComIfG_Bgsp()); + bg_check(); + if (mAcch.ChkGroundHit()) { + speedF *= 0.9f; + if (speedF < 1.0f) { + speedF = 0.0f; + } + } + + if (mCcCyl.ChkCoHit()) { + daPy_py_c* player = daPy_getPlayerActorClass(); + fopAc_ac_c* hitActor = mCcCyl.GetCoHitAc(); + if (player == hitActor) { + initActionOrderGetDemo(); + } + } + attention_info.position = current.pos; + return 1; } /* 80D3AB9C-80D3AC64 000DDC 00C8+00 2/2 0/0 0/0 .text initActionOrderGetDemo__14daObjWStatue_cFv */ -void daObjWStatue_c::initActionOrderGetDemo() { - // NONMATCHING +int daObjWStatue_c::initActionOrderGetDemo() { + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + hide(); + s16 eventIdx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, eventIdx, 1, 0xffff); + mItemId = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, 0xffffffff, + fopAcM_GetRoomNo(this), 0, 0); + JUT_ASSERT(544, mItemId != fpcM_ERROR_PROCESS_ID_e); + setStatus(STATUS_ORDER_GET_DEMO); + return 1; } /* 80D3AC64-80D3ACAC 000EA4 0048+00 1/0 0/0 0/0 .text actionOrderGetDemo__14daObjWStatue_cFv */ -void daObjWStatue_c::actionOrderGetDemo() { - // NONMATCHING +int daObjWStatue_c::actionOrderGetDemo() { + setStatus(STATUS_GET_DEMO); + if (mItemId != fpcM_ERROR_PROCESS_ID_e) { + dComIfGp_event_setItemPartnerId(mItemId); + } + return 1; } /* 80D3ACAC-80D3AD30 000EEC 0084+00 1/0 0/0 0/0 .text actionGetDemo__14daObjWStatue_cFv */ -void daObjWStatue_c::actionGetDemo() { - // NONMATCHING +int daObjWStatue_c::actionGetDemo() { + if (dComIfGp_evmng_endCheck("DEFAULT_GETITEM")) { + fopAcM_onSwitch(this, getSwbit2()); + dComIfGp_event_reset(); + fopAcM_delete(this); + } + return 1; } /* 80D3AD30-80D3AD88 000F70 0058+00 1/1 0/0 0/0 .text actionInitSwOnWait__14daObjWStatue_cFv */ -void daObjWStatue_c::actionInitSwOnWait() { - // NONMATCHING +int daObjWStatue_c::actionInitSwOnWait() { + mCcCyl.OffTgSPrmBit(1); + mCcCyl.OffCoSPrmBit(1); + hide(); + setStatus(STATUS_SW_ON_WAIT); + field_0x93a = 0; + return 1; } /* 80D3AD88-80D3AE7C 000FC8 00F4+00 1/0 0/0 0/0 .text actionSwOnWait__14daObjWStatue_cFv */ -void daObjWStatue_c::actionSwOnWait() { - // NONMATCHING -} +int daObjWStatue_c::actionSwOnWait() { + base_process_class* iVar2 = fpcM_Search(s_sh_sub, this); + switch (field_0x93a) { + case 0: + if (iVar2 == NULL) { + #ifdef DEBUG + mRespawnTimer = l_HIO.mRespawnTimer; + #else + mRespawnTimer = 30; + #endif + field_0x93a = 1; + } + break; + case 1: + if (iVar2 != NULL) { + field_0x93a = 0; + } else { + if (cLib_calcTimer(&mRespawnTimer) == 0) { + field_0x93a = 2; + } + } + break; + case 2: + if (eventInfo.checkCommandDemoAccrpt()) { + actionWaitInit(); + } else { + fopAcM_orderOtherEventId(this, mEventIdx, 0xff, 0xffff, 0, 1); + eventInfo.onCondition(dEvtCnd_CANDEMO_e); + } + break; + default: + JUT_PANIC(644, "0"); + } -/* ############################################################################################## */ -/* 80D3B6C0-80D3B6C4 000088 0004+00 1/1 0/0 0/0 .rodata @4256 */ -SECTION_RODATA static f32 const lit_4256 = 4.0f; -COMPILER_STRIP_GATE(0x80D3B6C0, &lit_4256); + return 1; +} /* 80D3AE7C-80D3AF5C 0010BC 00E0+00 1/1 0/0 0/0 .text actionInitBoomerangCarry__14daObjWStatue_cFv */ -void daObjWStatue_c::actionInitBoomerangCarry() { - // NONMATCHING +int daObjWStatue_c::actionInitBoomerangCarry() { + mCcCyl.OnTgSPrmBit(1); + mCcCyl.OnCoSPrmBit(1); + f32 cylH = dItem_data::getH(m_itemNo); + f32 cylR = dItem_data::getR(m_itemNo); + mCcCyl.SetR(cylR * 4.0f); + mCcCyl.SetH(cylH * 4.0f); + mCcCyl.OnCoSPrmBit(1); + setStatus(STATUS_BOOMERANG_CARRY); + return 1; } /* 80D3AF5C-80D3AFC0 00119C 0064+00 1/0 0/0 0/0 .text actionBoomerangCarry__14daObjWStatue_cFv */ -void daObjWStatue_c::actionBoomerangCarry() { - // NONMATCHING +int daObjWStatue_c::actionBoomerangCarry() { + fopAc_ac_c* boomerang = fopAcM_SearchByName(PROC_BOOMERANG); + if (boomerang != NULL) { + current.pos = boomerang->current.pos; + } else { + // Wooden Statue: can't find boomerang!!! + OS_REPORT_ERROR("木彫りの像:ブーメランが見つかりません!!!\n"); + } + // Wooden Statue: carrying boomerang + OS_REPORT("木彫りの像:引き寄せ中\n"); + return 1; } -/* ############################################################################################## */ -/* 80D3B6C4-80D3B6C8 00008C 0004+00 0/1 0/0 0/0 .rodata @4321 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4321 = 10.0f; -COMPILER_STRIP_GATE(0x80D3B6C4, &lit_4321); -#pragma pop - -/* 80D3B6C8-80D3B6CC 000090 0004+00 0/1 0/0 0/0 .rodata @4322 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4322 = -2.5f; -COMPILER_STRIP_GATE(0x80D3B6C8, &lit_4322); -#pragma pop - -/* 80D3B6CC-80D3B6D0 000094 0004+00 0/1 0/0 0/0 .rodata @4323 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4323 = 20.0f; -COMPILER_STRIP_GATE(0x80D3B6CC, &lit_4323); -#pragma pop - -/* 80D3B6D0-80D3B6D4 000098 0004+00 0/1 0/0 0/0 .rodata @4324 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4324 = 100.0f; -COMPILER_STRIP_GATE(0x80D3B6D0, &lit_4324); -#pragma pop - -/* 80D3B6D4-80D3B6D4 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80D3B713 = "Timer"; -#pragma pop - /* 80D3AFC0-80D3B164 001200 01A4+00 1/1 0/0 0/0 .text demoProc__14daObjWStatue_cFv */ void daObjWStatue_c::demoProc() { - // NONMATCHING + static char* action_table[4] = { + "WAIT", + "MOVE", + "SETPOS", + "NOTEND", + }; + int* pTimer; + daPy_py_c* player = daPy_getPlayerActorClass(); + int actIdx = dComIfGp_evmng_getMyActIdx(mStaffIdx, (char**)action_table, 4, 0, 0); + if (dComIfGp_evmng_getIsAddvance(mStaffIdx)) { + switch (actIdx) + case 0: { + pTimer = dComIfGp_evmng_getMyIntegerP(mStaffIdx, "Timer"); + if (pTimer == NULL) { + mRespawnTimer = 1; + } else { + mRespawnTimer = *pTimer; + } + break; + case 1: + effectSet(); + show(); + fopAcM_SetSpeedF(this, KREG_F(0) + 10.0f); + fopAcM_SetGravity(this, KREG_F(1) + -2.5f); + speed.y = KREG_F(2) + 20.0f; + current.pos.y += KREG_F(3) + 100.0f; + mRespawnTimer = 80; + break; + case 2: + dComIfGp_evmng_setGoal(¤t.pos); + break; + case 3: + break; + } + } + + switch(actIdx) { + case 0: + if (cLib_calcTimer(&mRespawnTimer) == 0) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } + break; + case 1: + if (cLib_calcTimer(&mRespawnTimer) == 0) { + effectStop(); + dComIfGp_evmng_cutEnd(mStaffIdx); + } + break; + case 3: + break; + default: + dComIfGp_evmng_cutEnd(mStaffIdx); + break; + } } /* 80D3B164-80D3B250 0013A4 00EC+00 1/1 0/0 0/0 .text effectSet__14daObjWStatue_cFv */ void daObjWStatue_c::effectSet() { - // NONMATCHING + if (mCallbacks[0].getEmitter() == NULL) { + dComIfGp_particle_set(0x827a, ¤t.pos, &shape_angle, &scale, 0xff, &mCallbacks[0], + fopAcM_GetRoomNo(this), NULL, NULL, NULL); + dComIfGp_particle_set(0x827b, ¤t.pos, &shape_angle, &scale, 0xff, &mCallbacks[1], + fopAcM_GetRoomNo(this), NULL, NULL, NULL); + } } /* 80D3B250-80D3B2A0 001490 0050+00 1/1 0/0 0/0 .text effectStop__14daObjWStatue_cFv */ void daObjWStatue_c::effectStop() { - // NONMATCHING + mCallbacks[0].remove(); + mCallbacks[1].remove(); } /* 80D3B2A0-80D3B428 0014E0 0188+00 1/1 0/0 0/0 .text execute__14daObjWStatue_cFv */ -void daObjWStatue_c::execute() { - // NONMATCHING +int daObjWStatue_c::execute() { + static daObjWStatue_c::demoFunc l_demoFunc[5] = { + &daObjWStatue_c::actionWait, &daObjWStatue_c::actionOrderGetDemo, + &daObjWStatue_c::actionGetDemo, &daObjWStatue_c::actionSwOnWait, + &daObjWStatue_c::actionBoomerangCarry, + }; + field_0x93c = speed; + field_0x930++; + (this->*l_demoFunc[mStatus])(); + eyePos = current.pos; + attention_info.position = current.pos; + setBaseMtx(); + animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f); + mCcCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCcCyl); + return 1; } /* 80D3B428-80D3B47C 001668 0054+00 1/1 0/0 0/0 .text draw__14daObjWStatue_cFv */ -void daObjWStatue_c::draw() { - // NONMATCHING +int daObjWStatue_c::draw() { + if (!chkDraw()) { + return 1; + } + DrawBase(); + return 1; } /* 80D3B47C-80D3B480 0016BC 0004+00 1/0 0/0 0/0 .text setListStart__14daObjWStatue_cFv */ -void daObjWStatue_c::setListStart() { - /* empty function */ -} +void daObjWStatue_c::setListStart() {} /* 80D3B480-80D3B4B8 0016C0 0038+00 1/1 0/0 0/0 .text _delete__14daObjWStatue_cFv */ -void daObjWStatue_c::_delete() { - // NONMATCHING +int daObjWStatue_c::_delete() { + DeleteBase(dItem_data::getFieldArc(m_itemNo)); + + #ifdef DEBUG + l_HIO.removeHIO(); + #endif + + return 1; } /* 80D3B4B8-80D3B4D8 0016F8 0020+00 1/0 0/0 0/0 .text daObjWStatue_Draw__FP14daObjWStatue_c */ -static void daObjWStatue_Draw(daObjWStatue_c* param_0) { - // NONMATCHING +static int daObjWStatue_Draw(daObjWStatue_c * i_this) { + return i_this->draw(); } -/* 80D3B4D8-80D3B4F8 001718 0020+00 1/0 0/0 0/0 .text daObjWStatue_Execute__FP14daObjWStatue_c */ -static void daObjWStatue_Execute(daObjWStatue_c* param_0) { - // NONMATCHING +/* 80D3B4D8-80D3B4F8 001718 0020+00 1/0 0/0 0/0 .text daObjWStatue_Execute__FP14daObjWStatue_c + */ +static int daObjWStatue_Execute(daObjWStatue_c * i_this) { + return i_this->execute(); } /* 80D3B4F8-80D3B518 001738 0020+00 1/0 0/0 0/0 .text daObjWStatue_Delete__FP14daObjWStatue_c */ -static void daObjWStatue_Delete(daObjWStatue_c* param_0) { - // NONMATCHING +static int daObjWStatue_Delete(daObjWStatue_c * i_this) { + fopAcM_RegisterDeleteID(i_this, "ObjLife"); + return i_this->_delete(); } -/* 80D3B518-80D3B538 001758 0020+00 1/0 0/0 0/0 .text daObjWStatue_Create__FP10fopAc_ac_c - */ -static void daObjWStatue_Create(fopAc_ac_c* param_0) { - // NONMATCHING +/* 80D3B518-80D3B538 001758 0020+00 1/0 0/0 0/0 .text daObjWStatue_Create__FP10fopAc_ac_c + */ +static int daObjWStatue_Create(fopAc_ac_c * i_this) { + fopAcM_RegisterCreateID(daObjWStatue_c, i_this, "ObjLife"); + return a_this->create(); } -/* 80D3B538-80D3B580 001778 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 80D3B7CC-80D3B7EC -00001 0020+00 1/0 0/0 0/0 .data l_daObjWStatue_Method */ +static actor_method_class l_daObjWStatue_Method = { + (process_method_func)daObjWStatue_Create, (process_method_func)daObjWStatue_Delete, + (process_method_func)daObjWStatue_Execute, NULL, + (process_method_func)daObjWStatue_Draw, +}; -/* 80D3B580-80D3B5F4 0017C0 0074+00 1/0 0/0 0/0 .text __dt__18dPa_levelEcallBackFv */ -// dPa_levelEcallBack::~dPa_levelEcallBack() { -extern "C" void __dt__18dPa_levelEcallBackFv() { - // NONMATCHING -} - -/* 80D3B5F4-80D3B5F8 001834 0004+00 1/0 0/0 0/0 .text - * execute__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::execute(JPABaseEmitter* param_0) { -extern "C" void execute__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80D3B5F8-80D3B5FC 001838 0004+00 1/0 0/0 0/0 .text - * executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::executeAfter(JPABaseEmitter* param_0) { -extern "C" void executeAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80D3B5FC-80D3B600 00183C 0004+00 1/0 0/0 0/0 .text draw__18JPAEmitterCallBackFP14JPABaseEmitter - */ -// void JPAEmitterCallBack::draw(JPABaseEmitter* param_0) { -extern "C" void draw__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80D3B600-80D3B604 001840 0004+00 1/0 0/0 0/0 .text - * drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter */ -// void JPAEmitterCallBack::drawAfter(JPABaseEmitter* param_0) { -extern "C" void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter() { - /* empty function */ -} - -/* 80D3B604-80D3B620 001844 001C+00 2/2 0/0 0/0 .text cLib_calcTimer__FPUc */ -extern "C" void func_80D3B604(void* _this, u8* param_0) { - // NONMATCHING -} - -/* 80D3B620-80D3B628 001860 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_80D3B620() { - // NONMATCHING -} - -/* 80D3B628-80D3B630 001868 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_80D3B628() { - // NONMATCHING -} +/* 80D3B7EC-80D3B81C -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_WoodStatue */ +extern actor_process_profile_definition g_profile_Obj_WoodStatue = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_WoodStatue, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjWStatue_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 563, // mPriority + &l_daObjWStatue_Method, // sub_method + 0x00044100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; /* 80D3B6D4-80D3B6D4 00009C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/d_a_itembase_static.cpp b/src/d/d_a_itembase_static.cpp index 49ec0a7242..cd0363351c 100644 --- a/src/d/d_a_itembase_static.cpp +++ b/src/d/d_a_itembase_static.cpp @@ -28,8 +28,8 @@ void daItemBase_c::changeDraw() { } } -u8 daItemBase_c::chkDraw() { - return cLib_checkBit(field_0x92b, 1) != 0; +bool daItemBase_c::chkDraw() { + return cLib_checkBit(field_0x92b, 1); } void daItemBase_c::dead() {