diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 864b991c8..e2fd2f853 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -61,7 +61,6 @@ public: virtual cXyz& GetCoCP() { return m_virtual_center; } virtual void CalcAabBox() = 0; virtual bool GetNVec(cXyz const&, cXyz*) const = 0; - virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; cM3dGAab& GetWorkAab() { return mAab; } cM3dGAab const& GetWorkAab() const { return mAab; } @@ -172,7 +171,6 @@ public: virtual bool CrossCo(cCcD_CylAttr const&, f32*) const; virtual void CalcAabBox(); virtual bool GetNVec(cXyz const&, cXyz*) const; - virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; }; // Size = 0x34 @@ -204,7 +202,6 @@ public: virtual cXyz& GetCoCP() { return mCenter; } virtual void CalcAabBox(); virtual bool GetNVec(cXyz const&, cXyz*) const; - virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; }; // Size = 0x38 @@ -497,7 +494,6 @@ public: virtual cCcD_GObjInf* GetGObjInf() { return NULL; } virtual cCcD_ShapeAttr const* GetShapeAttr() const { return NULL; } virtual cCcD_ShapeAttr* GetShapeAttr() { return NULL; } - virtual void Draw(_GXColor const&) {} void ct(); void Set(cCcD_SrcObj const&); fopAc_ac_c* GetAc(); diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index eb5aa6ab7..d07401348 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -70,49 +70,54 @@ public: /* 0x2FC */ u8 field_0x2FC[0x300 - 0x2FC]; /* 0x300 */ f32 field_0x300; /* 0x304 */ daPy_demo_c mDemo; - /* 0x31C */ void* vtbl; - void onFrollCrashFlg(u32); - void getGrabActorID() const; - void getBokoFlamePos(cXyz*); - void setPlayerPosAndAngle(cXyz*, s16); + virtual void getLeftHandMatrix(); + virtual void getRightHandMatrix(); + virtual void getGroundY(); + virtual void getTactMusic() const; + virtual void getTactTimerCancel() const; + virtual void checkPlayerGuard() const; + virtual void getGrabMissActor(); + virtual void checkPlayerFly() const; + virtual void checkFrontRoll() const; + virtual void checkBottleSwing() const; + virtual void checkCutCharge() const; + virtual void getBokoFlamePos(cXyz*); + virtual void checkTactWait() const; + virtual void setTactZev(u32, int, char*); + virtual void onDekuSpReturnFlg(u8); + virtual void checkComboCutTurn() const; + virtual void getBaseAnimeFrameRate(); + virtual void getBaseAnimeFrame(); + virtual void getItemID() const; + virtual void getThrowBoomerangID() const; + virtual void getGrabActorID() const; + virtual void checkGrabBarrel(); + virtual void checkPlayerNoDraw(); + virtual void checkRopeTag(); + virtual void checkRopeReadyAnime() const; + virtual void voiceStart(u32); + virtual void setOutPower(f32, s16, int); + virtual void onFrollCrashFlg(u32); + virtual void getModelJointMtx(u16); + virtual void getOldSpeedY(); + virtual void setHookshotCarryOffset(u32, cXyz const*); + virtual void setPlayerPosAndAngle(cXyz*, s16); + virtual void setPlayerPosAndAngle(cXyz*, csXyz*); + virtual void setPlayerPosAndAngle(f32*[][][][]); + virtual void setThrowDamage(cXyz*, s16, f32, f32, int); + virtual void changeTextureAnime(u16, u16, int); + virtual void cancelChangeTextureAnime(); + void getSwordTopPos() const; - void checkPlayerFly() const; - void checkPlayerNoDraw(); void getLeftHandPos() const; - void checkPlayerGuard() const; void getRopeJumpLand() const; - void checkRopeReadyAnime() const; void checkRopeForceEnd() const; void getHeadTopPos() const; void changePlayer(fopAc_ac_c*); void objWindHitCheck(dCcD_Cyl*); void setDoButtonQuake(); void stopDoButtonQuake(int); - void getTactMusic() const; - void getTactTimerCancel() const; - void getGrabMissActor(); - void checkFrontRoll() const; - void checkBottleSwing() const; - void checkCutCharge() const; - void checkTactWait() const; - void setTactZev(u32, int, char*); - void onDekuSpReturnFlg(u8); - void checkComboCutTurn() const; - void getItemID() const; - void getThrowBoomerangID() const; - void checkGrabBarrel(); - void checkRopeTag(); - void voiceStart(u32); - void setOutPower(f32, s16, int); - void getModelJointMtx(u16); - void getOldSpeedY(); - void setHookshotCarryOffset(u32, cXyz const*); - void setPlayerPosAndAngle(f32*[][][][]); - void setPlayerPosAndAngle(cXyz*, csXyz*); - void setThrowDamage(cXyz*, s16, f32, f32, int); - void changeTextureAnime(u16, u16, int); - void cancelChangeTextureAnime(); void getRopePos() const; }; diff --git a/include/d/d_a_obj.h b/include/d/d_a_obj.h index c1ea4c4d8..77d073e47 100644 --- a/include/d/d_a_obj.h +++ b/include/d/d_a_obj.h @@ -6,7 +6,8 @@ namespace daObj { template int PrmAbstract(const fopAc_ac_c* actor, T width, T shift) { - return ((1 << width) - 1) & (fopAcM_GetParam(actor) >> shift); + u32 param = fopAcM_GetParam(actor); + return ((1 << width) - 1) & (param >> shift); } }; diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index b672b3e0c..4979191ae 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -351,7 +351,7 @@ STATIC_ASSERT(sizeof(dCcD_GObjInf) == 0xF8); class dCcD_Cyl : public dCcD_GObjInf, public cCcD_CylAttr { public: void Set(dCcD_SrcCyl const&); - cCcD_ShapeAttr* GetShapeAttr(); + cCcD_ShapeAttr* GetShapeAttr() { return this; } void StartCAt(cXyz&); void MoveCAt(cXyz&); void MoveCTg(cXyz&); diff --git a/include/d/d_item.h b/include/d/d_item.h index ea2491d6b..b902b82da 100644 --- a/include/d/d_item.h +++ b/include/d/d_item.h @@ -1,8 +1,8 @@ #ifndef D_ITEM_H #define D_ITEM_H -void execItemGet(unsigned char); -void checkItemGet(unsigned char, int); +void execItemGet(u8 itemNo); +BOOL checkItemGet(u8 itemNo, BOOL defaultVal); void item_func_heart(); void item_func_green_rupee(); void item_func_blue_rupee(); diff --git a/src/d/actor/d_a_andsw2.cpp b/src/d/actor/d_a_andsw2.cpp index 8f910b540..12dea6235 100644 --- a/src/d/actor/d_a_andsw2.cpp +++ b/src/d/actor/d_a_andsw2.cpp @@ -101,7 +101,7 @@ BOOL daAndsw2_c::chkAllSw2() { return false; } } - return true; + return TRUE; } /* 000001D8-000002B0 .text daAndsw2_actionOnAll__FP10daAndsw2_c */ @@ -245,7 +245,7 @@ s32 daAndsw2_c::create() { current.angle.z = 0; current.angle.x = 0; - return 4; + return cPhs_COMPLEATE_e; } /* 00000530-00000538 .text daAndsw2_Draw__FP10daAndsw2_c */ diff --git a/src/d/actor/d_a_tag_ret.cpp b/src/d/actor/d_a_tag_ret.cpp index 275814b0d..ce1f38ffb 100644 --- a/src/d/actor/d_a_tag_ret.cpp +++ b/src/d/actor/d_a_tag_ret.cpp @@ -3,171 +3,162 @@ // Translation Unit: d_a_tag_ret.cpp // -#include "d_a_tag_ret.h" +#include "d/d_a_obj.h" +#include "d/d_item.h" +#include "d/d_item_data.h" +#include "d/d_cc_d.h" +#include "d/d_procname.h" +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dolphin/types.h" -/* 00000078-000001D4 .text _create__Q28daTagRet5Act_cFv */ -void daTagRet::Act_c::_create() { - /* Nonmatching */ -} +static dCcD_SrcCyl cyl_check_src = { + 0, + 0, + 0, + 0, + 0, + 0, + 0x119, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + + // Cylinder + 0.0, // X + 0.0, // Y + 0.0, // Z + 1000.0, // Radius + 100.0, // Height +}; -/* 000001D4-000002A0 .text __dt__8dCcD_CylFv */ -dCcD_Cyl::~dCcD_Cyl() { - /* Nonmatching */ -} - -/* 000002A0-000002E8 .text __dt__8cM3dGCylFv */ -cM3dGCyl::~cM3dGCyl() { - /* Nonmatching */ -} - -/* 000002E8-00000344 .text __dt__14cCcD_ShapeAttrFv */ -cCcD_ShapeAttr::~cCcD_ShapeAttr() { - /* Nonmatching */ -} - -/* 00000344-0000038C .text __dt__8cM3dGAabFv */ -cM3dGAab::~cM3dGAab() { - /* Nonmatching */ -} - -/* 0000038C-00000394 .text _delete__Q28daTagRet5Act_cFv */ -void daTagRet::Act_c::_delete() { - /* Nonmatching */ -} - -/* 00000394-00000398 .text set_mtx__Q28daTagRet5Act_cFv */ -void daTagRet::Act_c::set_mtx() { - /* Nonmatching */ -} - -/* 00000398-00000460 .text _execute__Q28daTagRet5Act_cFv */ -void daTagRet::Act_c::_execute() { - /* Nonmatching */ -} - -/* 00000460-00000468 .text _draw__Q28daTagRet5Act_cFv */ -void daTagRet::Act_c::_draw() { - /* Nonmatching */ -} - -/* 00000468-00000488 .text Mthd_Create__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ -void daTagRet::@unnamed@d_a_tag_ret_cpp@::Mthd_Create(void*) { - /* Nonmatching */ -} - -/* 00000488-000004AC .text Mthd_Delete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ -void daTagRet::@unnamed@d_a_tag_ret_cpp@::Mthd_Delete(void*) { - /* Nonmatching */ -} - -/* 000004AC-000004D0 .text Mthd_Execute__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ -void daTagRet::@unnamed@d_a_tag_ret_cpp@::Mthd_Execute(void*) { - /* Nonmatching */ -} - -/* 000004D0-000004F4 .text Mthd_Draw__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ -void daTagRet::@unnamed@d_a_tag_ret_cpp@::Mthd_Draw(void*) { - /* Nonmatching */ -} - -/* 000004F4-000004FC .text Mthd_IsDelete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ -void daTagRet::@unnamed@d_a_tag_ret_cpp@::Mthd_IsDelete(void*) { - /* Nonmatching */ -} - -/* 000004FC-0000050C .text GetShapeAttr__8dCcD_CylFv */ -void dCcD_Cyl::GetShapeAttr() { - /* Nonmatching */ -} - -/* 0000050C-00000514 .text GetCoCP__12cCcD_CylAttrFv */ -void cCcD_CylAttr::GetCoCP() { - /* Nonmatching */ -} - -/* 00000514-0000051C .text GetCoCP__12cCcD_CylAttrCFv */ -void cCcD_CylAttr::GetCoCP() const { - /* Nonmatching */ -} - -/* 0000051C-00000524 .text CrossAtTg__12cCcD_CylAttrCFRC12cCcD_AabAttrP4cXyz */ -void cCcD_CylAttr::CrossAtTg(const cCcD_AabAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 00000524-0000052C .text CrossAtTg__12cCcD_CylAttrCFRC12cCcD_PntAttrP4cXyz */ -void cCcD_CylAttr::CrossAtTg(const cCcD_PntAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 0000052C-00000564 .text CrossAtTg__12cCcD_CylAttrCFRC14cCcD_ShapeAttrP4cXyz */ -void cCcD_CylAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 00000564-0000056C .text CrossCo__12cCcD_CylAttrCFRC12cCcD_AabAttrPf */ -void cCcD_CylAttr::CrossCo(const cCcD_AabAttr&, float*) const { - /* Nonmatching */ -} - -/* 0000056C-00000574 .text CrossCo__12cCcD_CylAttrCFRC12cCcD_TriAttrPf */ -void cCcD_CylAttr::CrossCo(const cCcD_TriAttr&, float*) const { - /* Nonmatching */ -} - -/* 00000574-0000057C .text CrossCo__12cCcD_CylAttrCFRC12cCcD_PntAttrPf */ -void cCcD_CylAttr::CrossCo(const cCcD_PntAttr&, float*) const { - /* Nonmatching */ -} - -/* 0000057C-000005B4 .text CrossCo__12cCcD_CylAttrCFRC14cCcD_ShapeAttrPf */ -void cCcD_CylAttr::CrossCo(const cCcD_ShapeAttr&, float*) const { - /* Nonmatching */ -} - -/* 000005B4-000005B8 .text GetGObjInf__12cCcD_GObjInfCFv */ -void cCcD_GObjInf::GetGObjInf() const { - /* Nonmatching */ -} - -/* 000005B8-000005C0 .text GetShapeAttr__8cCcD_ObjCFv */ -void cCcD_Obj::GetShapeAttr() const { - /* Nonmatching */ -} - -/* 000005C0-000005C8 .text CrossAtTg__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrP4cXyz */ -void cCcD_ShapeAttr::CrossAtTg(const cCcD_ShapeAttr&, cXyz*) const { - /* Nonmatching */ -} - -/* 000005C8-000005D0 .text CrossCo__14cCcD_ShapeAttrCFRC14cCcD_ShapeAttrPf */ -void cCcD_ShapeAttr::CrossCo(const cCcD_ShapeAttr&, float*) const { - /* Nonmatching */ -} - -/* 000005D0-000005DC .text GetCoCP__14cCcD_ShapeAttrFv */ -void cCcD_ShapeAttr::GetCoCP() { - /* Nonmatching */ -} - -/* 000005DC-000005E8 .text GetCoCP__14cCcD_ShapeAttrCFv */ -void cCcD_ShapeAttr::GetCoCP() const { - /* Nonmatching */ -} - -/* 000005E8-00000604 .text PrmAbstract__5daObjFPC10fopAc_ac_cQ38daTagRet5Act_c5Prm_eQ38daTagRet5Act_c5Prm_e */ -void daObj::PrmAbstract(const fopAc_ac_c*, daTagRet::Act_c::Prm_e, daTagRet::Act_c::Prm_e) { - /* Nonmatching */ -} - -/* 00000604-0000060C .text @280@__dt__8dCcD_CylFv */ -void @280@__dt__8dCcD_CylFv { - /* Nonmatching */ -} - -/* 0000060C-00000614 .text @248@__dt__8dCcD_CylFv */ -void @248@__dt__8dCcD_CylFv { - /* Nonmatching */ -} +namespace daTagRet { + struct Act_c : public fopAc_ac_c { + public: + enum Prm_e { + PRM_PLAYER_ID_W = 8, + PRM_PLAYER_ID_S = 0, + }; + + s32 _create(); + s32 _delete(); + void set_mtx(); + s32 _execute(); + s32 _draw(); + + public: + u8 unknown_padding[0xC]; + /* 0x29C */ dCcD_Stts mStts; + /* 0x2D8 */ dCcD_Cyl mCyl; + }; + + /* 00000078-000001D4 .text _create__Q28daTagRet5Act_cFv */ + s32 Act_c::_create() { + fopAcM_SetupActor(this, daTagRet::Act_c); + + if (checkItemGet(PEARL3, TRUE)) { + return cPhs_UNK3_e; + } + + mStts.Init(0xFF, 0xFF, this); + mCyl.Set(cyl_check_src); + mCyl.SetR(1000.0f*mScale.x); + mCyl.SetH(100.0f*mScale.y); + mCyl.SetStts(&mStts); + + return cPhs_COMPLEATE_e; + } + + /* 0000038C-00000394 .text _delete__Q28daTagRet5Act_cFv */ + s32 Act_c::_delete() { + return TRUE; + } + + /* 00000394-00000398 .text set_mtx__Q28daTagRet5Act_cFv */ + void Act_c::set_mtx() { + return; + } + + /* 00000398-00000460 .text _execute__Q28daTagRet5Act_cFv */ + s32 Act_c::_execute() { + mCyl.SetC(current.pos); + mCyl.SetR(1000.0f*mScale.x); + mCyl.SetH(100.0f*mScale.y); + g_dComIfG_gameInfo.play.mCcS.Set(&mCyl); + + if (mCyl.ChkCoHit()) { + u32 playerId = daObj::PrmAbstract(this, PRM_PLAYER_ID_W, PRM_PLAYER_ID_S); + daPy_getPlayerLinkActorClass()->onDekuSpReturnFlg(playerId); + } + + set_mtx(); + + return TRUE; + } + + /* 00000460-00000468 .text _draw__Q28daTagRet5Act_cFv */ + s32 Act_c::_draw() { + return TRUE; + } + + namespace { + /* 00000468-00000488 .text Mthd_Create__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + s32 Mthd_Create(void* i_this) { + return ((Act_c*)i_this)->_create(); + } + + /* 00000488-000004AC .text Mthd_Delete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + u8 Mthd_Delete(void* i_this) { + return ((Act_c*)i_this)->_delete(); + } + + /* 000004AC-000004D0 .text Mthd_Execute__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + u8 Mthd_Execute(void* i_this) { + return ((Act_c*)i_this)->_execute(); + } + + /* 000004D0-000004F4 .text Mthd_Draw__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + u8 Mthd_Draw(void* i_this) { + return ((Act_c*)i_this)->_draw(); + } + + /* 000004F4-000004FC .text Mthd_IsDelete__Q28daTagRet25@unnamed@d_a_tag_ret_cpp@FPv */ + u8 Mthd_IsDelete(void* i_this) { + return TRUE; + } + + static actor_method_class Mthd_Table = { + (process_method_func)Mthd_Create, + (process_method_func)Mthd_Delete, + (process_method_func)Mthd_Execute, + (process_method_func)Mthd_IsDelete, + (process_method_func)Mthd_Draw, + }; + }; +}; +extern actor_process_profile_definition g_profile_Tag_Ret = { + fpcLy_CURRENT_e, + 3, + fpcLy_CURRENT_e, + PROC_Tag_Ret, + &g_fpcLf_Method.mBase, + sizeof(daTagRet::Act_c), + 0, + 0, + &g_fopAc_Method.base, + 0x005F, + &daTagRet::Mthd_Table, + 0x00040000, + fopAc_ACTOR_e, + fopAc_CULLBOX_0_e, +};