diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2021-05-02 10:13:14 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-02 13:13:14 -0400 |
| commit | 2f4904dae297e5d3f4df99fd6c34e61c124a230f (patch) | |
| tree | dde5cb1d3e7733b57b66d89462b4cf4fd0bbc707 /include | |
| parent | a9c78b5b0bc85f45e4ed5a3e9f1ddc12c8c47308 (diff) | |
move d_a_itembase_static / d_a_item_static / Z2StatusMgr (#123)
* move d_a_itembase_static
* move d_a_item_static
* moved Z2StatusMgr
* clang
* fixes
* clang?
* move d_save
* move d_meter2_info
* some d_meter2_info fixes
* move most d_a_player
* move d_bg_s stuff
* move c_cc_s stuff
* move d_cc stuff
* move d_attention / d_event / d_stage
Diffstat (limited to 'include')
35 files changed, 4018 insertions, 7 deletions
diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index d3b740a15d..184cd1a2d7 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -3,4 +3,35 @@ #include "dolphin/types.h" +#pragma pack(push, 1) +class J3DFrameCtrl { +public: + void init(s16); + void checkPass(f32); + void update(); + ~J3DFrameCtrl(); + + float getRate() { return mRate; } + void setAttribute(u8 pAttr) { mAttribute = pAttr; } + void setEnd(s16 pEnd) { mEnd = pEnd; } + void setRate(float pRate) { mRate = pRate; } + void setStart(s16 pStart) { + mStart = pStart; + mFrame = pStart; + } + void setFrame(float pFrame) { mFrame = pFrame; } + void setLoop(s16 pLoop) { mLoop = pLoop; } + +private: + void* vtable; + u8 mAttribute; + bool mState; + s16 mStart; + s16 mEnd; + s16 mLoop; + float mRate; + float mFrame; +}; +#pragma pack(pop) + #endif /* J3DANIMATION_H */ diff --git a/include/JSystem/JUtility/JUTFont.h b/include/JSystem/JUtility/JUTFont.h index 9da2015034..8abc640081 100644 --- a/include/JSystem/JUtility/JUTFont.h +++ b/include/JSystem/JUtility/JUTFont.h @@ -1,6 +1,24 @@ #ifndef JUTFONT_H #define JUTFONT_H +#include "dolphin/gx/GXTexture.h" #include "dolphin/types.h" +namespace JUtility { + +struct TColor : _GXColor { + TColor() { set(-1); } + + TColor(u32 raw) { *(u32*)&r = raw; } + + void set(u32 col) { *(u32*)&r = col; } + + u32 toUInt32() const { return *(u32*)&r; } + + operator u32() const { return toUInt32(); } + void operator=(const TColor& rhs) { ((_GXColor*)this)->operator=(rhs); } +}; + +} // namespace JUtility + #endif /* JUTFONT_H */ diff --git a/include/SSystem/SComponent/c_angle.h b/include/SSystem/SComponent/c_angle.h index a61c441758..39e0bd0e33 100644 --- a/include/SSystem/SComponent/c_angle.h +++ b/include/SSystem/SComponent/c_angle.h @@ -93,6 +93,7 @@ public: cSGlobe(float, short, short); cSGlobe(float, const cSAngle&, const cSAngle&); cSGlobe(const cXyz&); + ~cSGlobe(); cSGlobe& Formal(void); void Val(const cSGlobe&); void Val(float, short, short); diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index f4149343f2..0297ed5e1f 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -1,6 +1,286 @@ #ifndef C_CC_D_H #define C_CC_D_H +#include "SSystem/SComponent/c_m3d_g_aab.h" +#include "SSystem/SComponent/c_m3d_g_cps.h" +#include "SSystem/SComponent/c_m3d_g_cyl.h" +#include "SSystem/SComponent/c_m3d_g_sph.h" +#include "SSystem/SComponent/c_m3d_g_tri.h" +#include "dolphin/gx/GXTexture.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +class cCcD_ShapeAttr { +public: + struct Shape {}; + + /* 8008556C */ virtual ~cCcD_ShapeAttr(); + /* 802649D8 */ virtual bool CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const; + /* 802649E0 */ virtual bool CrossCo(cCcD_ShapeAttr const&, f32*) const; + /* 80084E38 */ virtual void GetCoCP() const; + /* 80084E2C */ virtual void GetCoCP(); + /* 80263A64 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + + static f32 m_virtual_center[3]; + +private: + /* 0x00 */ cM3dGAab mAab; +}; + +class cCcD_SphAttr; +class cCcD_CylAttr; +class cCcD_TriAttr; +class cCcD_PntAttr; +class cCcD_AabAttr; + +class cCcD_CpsAttr : public cCcD_ShapeAttr { +public: + /* 80085450 */ virtual ~cCcD_CpsAttr(); + /* 80263DC0 */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 80263E04 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80084FE4 */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const; + /* 80084FDC */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const; + /* 80084FD4 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const; + /* 80263D38 */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80263D7C */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80263F24 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80085024 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const; + /* 8008502C */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const; + /* 8008501C */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const; + /* 80263ED4 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80263F74 */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const; + /* 80085034 */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const; + /* 80263FC4 */ virtual void CalcAabBox(); + /* 80264014 */ virtual void GetNVec(cXyz const&, cXyz*) const; + +private: + /* 0x20 */ cM3dGCps mCps; +}; + +class cCcD_SphAttr : public cCcD_ShapeAttr { +public: + /* 8008721C */ virtual ~cCcD_SphAttr(); + /* 80264538 */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 802645C0 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80084B4C */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const; + /* 80084B54 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const; + /* 80084B5C */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const; + /* 802644EC */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 8026457C */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 80264688 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80084B94 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const; + /* 80084B9C */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const; + /* 80084BA4 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const; + /* 80084BAC */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const; + /* 80264644 */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const; + /* 802645F8 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80084B44 */ virtual void GetCoCP() const; + /* 80037A54 */ virtual void GetCoCP(); + /* 802646E0 */ virtual void CalcAabBox(); + /* 8026476C */ virtual void GetNVec(cXyz const&, cXyz*) const; + /* 80264808 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + +private: + /* 0x20 */ cM3dGSph mSph; +}; // Size = 0x30 + +class cCcD_CylAttr : public cCcD_ShapeAttr { +public: + /* 800854E0 */ virtual ~cCcD_CylAttr(); + /* 8026420C */ virtual void CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 802641C8 */ virtual void CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80084CC8 */ virtual bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const; + /* 80264250 */ virtual void CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80084CD0 */ virtual bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const; + /* 80084CD8 */ virtual void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const; + /* 8026417C */ virtual void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80264288 */ virtual void CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80264310 */ virtual void CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80084D10 */ virtual bool CrossCo(cCcD_AabAttr const&, f32*) const; + /* 80084D18 */ virtual bool CrossCo(cCcD_TriAttr const&, f32*) const; + /* 80084D20 */ virtual bool CrossCo(cCcD_PntAttr const&, f32*) const; + /* 80084D28 */ virtual void CrossCo(cCcD_ShapeAttr const&, f32*) const; + /* 802642CC */ virtual void CrossCo(cCcD_SphAttr const&, f32*) const; + /* 80084CC0 */ virtual void GetCoCP() const; + /* 80037A4C */ virtual void GetCoCP(); + /* 80264368 */ virtual void CalcAabBox(); + /* 802643D0 */ virtual void GetNVec(cXyz const&, cXyz*) const; + /* 802644B8 */ virtual void getShapeAccess(cCcD_ShapeAttr::Shape*) const; + +private: + /* 0x20 */ cM3dGCyl mCyl; +}; // Size = 0x34 + +class cCcD_TriAttr { + /* 80084E44 */ bool CrossAtTg(cCcD_AabAttr const&, cXyz*) const; + /* 80263A88 */ void CrossAtTg(cCcD_CpsAttr const&, cXyz*) const; + /* 80263BCC */ void CrossAtTg(cCcD_TriAttr const&, cXyz*) const; + /* 80084E4C */ bool CrossAtTg(cCcD_PntAttr const&, cXyz*) const; + /* 80263B90 */ void CrossAtTg(cCcD_SphAttr const&, cXyz*) const; + /* 80084E54 */ void CrossAtTg(cCcD_ShapeAttr const&, cXyz*) const; + /* 80263B58 */ void CrossAtTg(cCcD_CylAttr const&, cXyz*) const; + /* 80084E9C */ bool CrossCo(cCcD_AabAttr const&, f32*) const; + /* 80084EBC */ void CrossCo(cCcD_ShapeAttr const&, f32*) const; + /* 80084EA4 */ bool CrossCo(cCcD_TriAttr const&, f32*) const; + /* 80084E8C */ bool CrossCo(cCcD_SphAttr const&, f32*) const; + /* 80084EAC */ bool CrossCo(cCcD_CpsAttr const&, f32*) const; + /* 80084E94 */ bool CrossCo(cCcD_CylAttr const&, f32*) const; + /* 80084EB4 */ bool CrossCo(cCcD_PntAttr const&, f32*) const; + /* 80263C04 */ void CalcAabBox(); + /* 80263C9C */ void GetNVec(cXyz const&, cXyz*) const; + /* 80264938 */ ~cCcD_TriAttr(); +}; + +class cCcD_DivideInfo { +public: + /* 80263358 */ void Set(u32, u32, u32); + /* 80263368 */ void Chk(cCcD_DivideInfo const&) const; + +private: + /* 0x00 */ u32 field_0x0; + /* 0x04 */ u32 field_0x4; + /* 0x08 */ u32 field_0x8; + /* 0x0C */ void* vtable; +}; + +class cCcD_DivideArea { +public: + /* 802633A8 */ void SetArea(cM3dGAab const&); + /* 802634D4 */ void CalcDivideInfo(cCcD_DivideInfo*, cM3dGAab const&, u32); + /* 802636A0 */ void CalcDivideInfoOverArea(cCcD_DivideInfo*, cM3dGAab const&); + +private: + cM3dGAab mAab; + void* vtable; +}; + +struct cCcD_SrcObjTg {}; + +struct cCcD_SrcObjHitInf {}; + +struct cCcD_SrcObjAt {}; + +struct cCcD_SrcObj {}; + +class cCcD_GStts { +public: + /* 800837B0 */ ~cCcD_GStts(); + +private: + /* 0x00 */ void* vtable; +}; // Size = 0x4 + +class cCcD_Stts { +public: + /* 801410A4 */ ~cCcD_Stts(); + /* 80263894 */ bool GetGStts() const; + /* 8026389C */ bool GetGStts(); + /* 802638A4 */ void Init(int, int, void*, unsigned int); + /* 80263904 */ void Ct(); + /* 80263934 */ void PlusCcMove(f32, f32, f32); + /* 8026395C */ void ClrCcMove(); + /* 80263970 */ void PlusDmg(int); + /* 80263984 */ void GetWeightF() const; + /* 802649E8 */ void ClrAt(); + /* 802649EC */ void ClrTg(); + +private: + /* 0x00 */ cXyz field_0x00; + /* 0x0C */ fopAc_ac_c* mActor; + /* 0x10 */ int mApid; + /* 0x14 */ u8 mWeight; + /* 0x15 */ u8 field_0x15; + /* 0x16 */ u8 mTg; + /* 0x18 */ void* vtable; +}; // Size = 0x1C + +class cCcD_ObjCommonBase { +public: + /* 8008409C */ ~cCcD_ObjCommonBase(); + /* 802639B0 */ void ct(); + +private: + /* 0x00 */ int mSPrm; + /* 0x04 */ int mRPrm; + /* 0x08 */ void* mHitObj; // cCcD_Obj* type + /* 0x0C */ void* vtable; +}; + +class cCcD_Obj; +#pragma pack(push, 1) +class cCcD_ObjAt : cCcD_ObjCommonBase { +public: + /* 80084040 */ ~cCcD_ObjAt(); + /* 8026483C */ void SetHit(cCcD_Obj*); + /* 8026484C */ void Set(cCcD_SrcObjAt const&); + /* 80264868 */ void ClrHit(); + +private: + /* 0x10 */ int mType; + /* 0x14 */ u8 mAtp; +}; +#pragma pack(pop) + +class cCcD_ObjTg : cCcD_ObjCommonBase { +public: + /* 80083FE4 */ ~cCcD_ObjTg(); + /* 80264880 */ void Set(cCcD_SrcObjTg const&); + /* 80264894 */ void SetGrp(u32); + /* 802648B0 */ void ClrHit(); + /* 802648C8 */ void SetHit(cCcD_Obj*); + +private: + /* 0x10 */ int mType; +}; + +class cCcD_ObjCo : cCcD_ObjCommonBase { +public: + /* 80083F88 */ ~cCcD_ObjCo(); + /* 802648D8 */ void SetHit(cCcD_Obj*); + /* 802648E8 */ void ClrHit(); + /* 80264900 */ void SetIGrp(u32); + /* 8026491C */ void SetVsGrp(u32); +}; + +class cCcD_ObjHitInf { +public: + /* 80083EC8 */ ~cCcD_ObjHitInf(); + /* 802639C4 */ void Set(cCcD_SrcObjHitInf const&); + +private: + /* 0x000 */ cCcD_ObjAt mObjAt; + /* 0x015 */ u8 field_0x15[3]; // padding? + /* 0x018 */ cCcD_ObjTg mObjTg; + /* 0x02C */ cCcD_ObjCo mObjCo; + /* 0x03C */ void* vtable; +}; // Size = 0x40 + +class cCcD_Obj : cCcD_ObjHitInf { +public: + /* 80083DE0 */ ~cCcD_Obj(); + /* 800851A4 */ bool GetGObjInf() const; + /* 800847C8 */ bool GetGObjInf(); + /* 80084BE8 */ bool GetShapeAttr() const; + /* 80085130 */ bool GetShapeAttr(); + /* 80084BF0 */ void Draw(_GXColor const&); + /* 80263A10 */ void ct(); + /* 80263A1C */ void Set(cCcD_SrcObj const&); + void GetAc(); + +private: + /* 0x040 */ int field_0x40; + /* 0x044 */ cCcD_Stts* mStts; + /* 0x048 */ cCcD_DivideInfo mDivideInfo; +}; // Size = 0x58 + +class cCcD_GObjInf : cCcD_Obj { +public: + /* 80083CE8 */ ~cCcD_GObjInf(); + /* 800851A0 */ void GetGObjInf(); + /* 80084BE4 */ void GetGObjInf() const; + /* 80085138 */ void ClrAtHit(); + /* 80085158 */ void ClrTgHit(); + /* 8008517C */ void ClrCoHit(); +}; #endif /* C_CC_D_H */ diff --git a/include/SSystem/SComponent/c_cc_s.h b/include/SSystem/SComponent/c_cc_s.h index ebf07aa319..6e8acc2b79 100644 --- a/include/SSystem/SComponent/c_cc_s.h +++ b/include/SSystem/SComponent/c_cc_s.h @@ -1,6 +1,47 @@ #ifndef C_CC_S_H #define C_CC_S_H +#include "SSystem/SComponent/c_cc_d.h" #include "dolphin/types.h" +class cCcS { +public: + /* 80030BDC */ ~cCcS(); + /* 80264A6C */ cCcS(); + /* 80264A94 */ void Ct(); + /* 80264B60 */ void Dt(); + /* 80264B80 */ void GetWt(u8) const; + /* 80264BA8 */ void Set(cCcD_Obj*); + /* 80264C5C */ void ClrCoHitInf(); + /* 80264CF0 */ void ClrTgHitInf(); + /* 80264D90 */ void ClrAtHitInf(); + /* 80264E2C */ void ChkNoHitAtTg(cCcD_Obj*, cCcD_Obj*); + /* 80264F40 */ void ChkAtTg(); + /* 8026515C */ void ChkNoHitCo(cCcD_Obj*, cCcD_Obj*); + /* 80265230 */ void ChkCo(); + /* 802653A0 */ void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*); + /* 802653C8 */ void SetAtTgCommonHitInf(cCcD_Obj*, cCcD_Obj*, cXyz*); + /* 802655E4 */ void SetCoCommonHitInf(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32); + /* 80265750 */ void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32); + /* 80265BB4 */ void CalcArea(); + /* 80265CCC */ void Move(); + /* 80265D30 */ void DrawClear(); + /* 80265DF4 */ void SetCoGCorrectProc(cCcD_Obj*, cCcD_Obj*); + /* 80265DF8 */ void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*, + cCcD_Stts*, cCcD_GStts*, cCcD_GStts*); + /* 80265DFC */ void SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*, + cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, + cCcD_GStts*, cXyz*); + /* 80265E00 */ bool ChkNoHitGAtTg(cCcD_GObjInf const*, cCcD_GObjInf const*, cCcD_GStts*, + cCcD_GStts*); + /* 80265E08 */ bool ChkAtTgHitAfterCross(bool, bool, cCcD_GObjInf const*, cCcD_GObjInf const*, + cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*); + /* 80265E10 */ bool ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*); + /* 80265E18 */ void MoveAfterCheck(); + +private: + u8 field_0x0[10260]; + cCcD_DivideArea mDivideArea; +}; + #endif /* C_CC_S_H */ diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h index 10a330ff1b..9e0780aca9 100644 --- a/include/SSystem/SComponent/c_lib.h +++ b/include/SSystem/SComponent/c_lib.h @@ -48,4 +48,4 @@ void MtxPosition(cXyz*, cXyz*); void MtxPush(void); Mtx* MtxPull(void); -#endif
\ No newline at end of file +#endif diff --git a/include/SSystem/SComponent/c_m3d_g_cps.h b/include/SSystem/SComponent/c_m3d_g_cps.h index 6bc09c6462..7bf6132c93 100644 --- a/include/SSystem/SComponent/c_m3d_g_cps.h +++ b/include/SSystem/SComponent/c_m3d_g_cps.h @@ -21,12 +21,6 @@ public: void Set(const cXyz&, const cXyz&, f32); void Set(const cM3dGCpsS&); void SetCps(const cM3dGCps&); - virtual void unk1(void) = 0; - virtual void unk2(void) = 0; - virtual void unk3(void) = 0; - virtual void unk4(void) = 0; - virtual void unk5(void) = 0; - virtual void unk6(void) = 0; }; #endif /* C_M3D_G_CPS_H */ diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 4dae6d2835..1e3a0abea1 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -1,6 +1,45 @@ #ifndef Z2STATUSMGR_H #define Z2STATUSMGR_H +#include "dolphin/mtx/vec.h" #include "dolphin/types.h" +struct Z2StatusMgr { + Z2StatusMgr(); + void heartGaugeOn(); + void processHeartGaugeSound(); + void talkIn(); + void talkOut(); + void menuIn(); + void menuOut(); + bool isMovieDemo(); + void setDemoName(char*); + void processTime(); + bool checkDayTime(); + void setEventBit(void*); + void setCameraPolygonPos(Vec*); + void setCameraGroupInfo(u8); + void setCameraInWaterDepth(float); + + //! @todo there are a number of inlines only called from rels: see CHN_debug + + u8 mHour; + u8 mMinute; + u8 mWeekday; + u8 field_0x03; + s16 mTime; + u8 field_0x6[2]; + void* mEventBit; + bool mIsMenuIn; + u8 field_0xd[3]; + u32 mCameraMapInfo; + u32 field_0x14; + float mUnderwaterDepth; + float mCameraInWaterDepthRatio; + Vec mPolygonPosition; + u8 mDemoStatus; + u8 mHeartGaugeOn; + u8 padding[2]; +}; + #endif /* Z2STATUSMGR_H */ diff --git a/include/d/a/d_a_item_static.h b/include/d/a/d_a_item_static.h index 4e728a2f36..5fb0b88a16 100644 --- a/include/d/a/d_a_item_static.h +++ b/include/d/a/d_a_item_static.h @@ -1,6 +1,22 @@ #ifndef D_A_D_A_ITEM_STATIC_H #define D_A_D_A_ITEM_STATIC_H +#include "SSystem/SComponent/c_lib.h" #include "dolphin/types.h" +class daItem_c { +public: + u32 startCtrl(); + u32 startControl(); + u32 endControl(); + + void setFlag(u8 pFlag) { cLib_onBit(unk2376, pFlag); } + +private: + u8 unk0[0x948]; + u8 unk2376; + u8 unk2377; + u8 unk2378; +}; + #endif /* D_A_D_A_ITEM_STATIC_H */ diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index b7353ccc07..3cdfec42dd 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -3,4 +3,42 @@ #include "dolphin/types.h" +class daItemBase_c { +public: + u8 getItemNo(); + void hide(); + void show(); + void changeDraw(); + u8 chkDraw(); + void dead(); + u8 chkDead(); + void CreateItemHeap(char const*, s16, s16, s16, s16, s16, s16, s16); + void DeleteBase(char const*); + bool clothCreate(); + bool __CreateHeap(); + void DrawBase(); + void RotateYBase(); + void setListStart(); + void setListEnd(); + void settingBeforeDraw(); + void setTevStr(); + void setShadow(); + void animEntry(); + void animPlay(f32, f32, f32, f32, f32, f32); + void chkFlag(int); + void getTevFrm(); + void getBtpFrm(); + void getShadowSize(); + void getCollisionH(); + void getCollisionR(); + void getData(); + + static u8 const m_data[56]; + +private: + u8 unk0[0x92a]; + u8 mItemNo; + u8 unk2347; +}; + #endif /* D_A_D_A_ITEMBASE_H */ diff --git a/include/d/a/d_a_itembase_static.h b/include/d/a/d_a_itembase_static.h index 019d5a14fe..bc8924fa93 100644 --- a/include/d/a/d_a_itembase_static.h +++ b/include/d/a/d_a_itembase_static.h @@ -1,6 +1,7 @@ #ifndef D_A_D_A_ITEMBASE_STATIC_H #define D_A_D_A_ITEMBASE_STATIC_H +#include "d/a/d_a_itembase.h" #include "dolphin/types.h" #endif /* D_A_D_A_ITEMBASE_STATIC_H */ diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 86a561d5d4..872612d20a 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -1,6 +1,344 @@ #ifndef D_A_D_A_PLAYER_H #define D_A_D_A_PLAYER_H +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" +#include "d/save/d_save.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +// todo: remove after moving JKernel +struct JKRHeap { + /* 802CE5CC */ void freeAll(); +}; + +class daPy_anmHeap_c { +public: + enum daAlinkHEAP_TYPE {}; + + daPy_anmHeap_c(u32); + ~daPy_anmHeap_c(); + void initData(); + void mallocBuffer(); + void createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE); + void loadData(u16); + void loadDataIdx(u16); + void loadDataPriIdx(u16); + void loadDataDemoRID(u16, u16); + void setAnimeHeap(); + + u16 getIdx() const { return mIdx; } + void resetIdx() { mIdx = 0xffff; } + void resetPriIdx() { mPriIdx = 0xffff; } + void resetArcNo() { mArcNo = 0xffff; } + +private: + /* 0x00 */ u16 mIdx; + /* 0x02 */ u16 mPriIdx; + /* 0x04 */ u16 mArcNo; + /* 0x06 */ u16 field_0x06; + /* 0x08 */ int mBufferSize; + /* 0x0C */ void* mBuffer; + /* 0x10 */ JKRHeap* mAnimeHeap; +}; // Size = 0x14 + +class daPy_actorKeep_c { +public: + daPy_actorKeep_c(void); + void setActor(void); + void setData(fopAc_ac_c*); + void clearData(void); + + u32 getID(void) const { return mID; } + void setID(u32 id) { mID = id; } + fopAc_ac_c* getActor(void) const { return mActor; } + +private: + u32 mID; + fopAc_ac_c* mActor; +}; + +#pragma pack(push, 1) +class daPy_frameCtrl_c : public J3DFrameCtrl { +public: + bool checkAnmEnd(void); + void updateFrame(void); + void setFrameCtrl(u8, short, short, float, float); + + u16 getEndFlg() { return mEndFlg; } + u16 getNowSetFlg() { return mNowSetFlg; } + void onEndFlg() { mEndFlg = 1; } + void onNowSetFlg() { mNowSetFlg = 1; } + void offNowSetFlg() { mNowSetFlg = 0; } + void offEndFlg() { + mEndFlg = 0; + mNowSetFlg = 0; + } + +private: + /* 0x14 */ u16 mEndFlg; + /* 0x16 */ u16 mNowSetFlg; +}; +#pragma pack(pop) + +class daPy_demo_c { +public: +private: + /* 0x00 */ u16 mDemoType; + /* 0x02 */ s16 mDemoMoveAngle; + /* 0x04 */ s16 mTimer; + /* 0x06 */ s16 mParam2; + /* 0x08 */ int mParam0; + /* 0x0C */ int mParam1; + /* 0x10 */ int mDemoMode; + /* 0x14 */ float mStick; + /* 0x18 */ cXyz mDemoPos0; +}; // Size = 0x24 + +class daPy_py_c : public fopAc_ac_c { +private: + /* 0x0538 */ u8 field_0x538[0x32]; + /* 0x056A */ u8 field_0x56a; + /* 0x056B */ u8 field_0x56b[5]; + /* 0x0570 */ int mNoResetFlg0; + /* 0x0574 */ int mNoResetFlg1; + /* 0x0578 */ int mNoResetFlg2; + /* 0x057C */ int mNoResetFlg3; + /* 0x0580 */ int mResetFlg0; + /* 0x0584 */ int mResetFlg1; + /* 0x0588 */ int mEndResetFlg0; + /* 0x058C */ int mEndResetFlg1; + /* 0x0590 */ int mEndResetFlg2; + /* 0x0594 */ u8 field_0x594[0x10]; + /* 0x05A4 */ cXyz mHeadTopPos; + /* 0x05B0 */ cXyz mItemPos; + /* 0x05BC */ cXyz mSwordTopPos; + /* 0x05C8 */ cXyz mLeftHandPos; + /* 0x05D4 */ cXyz mRightHandPos; + /* 0x05E0 */ cXyz mLeftFootPosP; + /* 0x05EC */ cXyz mRightFootPosP; + /* 0x05F8 */ u8 field_0x5f8[0xC]; + /* 0x0604 */ daPy_demo_c mDemo; + +public: + enum daPy_FLG0 { EquipHeavyBoots = 0x2000000 }; + enum daPy_FLG2 {}; + enum daPy_ERFLG0 {}; + + void setParamData(int, int, int, int); + void checkFishingRodItem(int); + void checkBombItem(int); + void checkBottleItem(int); + void checkDrinkBottleItem(int); + void checkOilBottleItem(int); + void checkOpenBottleItem(int); + void checkBowItem(int); + void checkHookshotItem(int); + void checkTradeItem(int); + BOOL checkDungeonWarpItem(int); + void checkMasterSwordEquip(); + void checkWoodShieldEquip(); + void getAttentionOffsetY(); + void checkNowWolfEyeUp(); + void forceRestartRoom(int, u32, int); + void setFmChainPos(fopAc_ac_c*, cXyz*, int); + void cancelFmChainGrab(); + void setLookPos(cXyz*); + void setPlayerSe(u32); + void linkGrabSubjectNoDraw(fopAc_ac_c*); + void wolfGrabSubjectNoDraw(fopAc_ac_c*); + void checkRoomRestartStart(); + void checkCarryStartLightBallA(); + void checkCarryStartLightBallB(); + float getSpinnerRideSpeed() const; + void checkSpinnerReflectEffect(); + void checkBoomerangCharge(); + bool checkBoomerangChargeTime(); + void getThrowBoomerangActor(); + void cancelBoomerangLockActor(fopAc_ac_c*); + void setPlayerDamage(int, int); + void setMidnaMotionNum(int); + void setMidnaFaceNum(int); + int checkNoResetFlg0(daPy_FLG0) const; + int checkEquipHeavyBoots() const; + u32 checkBoarSingleBattle(void) const; + u32 checkEndResetFlg0(daPy_ERFLG0) const; + + virtual void unk(); + virtual bool getMidnaAtnPos(void) const; + virtual void setMidnaMsgNum(fopAc_ac_c*, u16); + virtual u32 getModelMtx(void); + virtual u32 getInvMtx(void); + virtual cXyz* getShadowTalkAtnPos(void); + virtual float getGroundY(); + virtual u32 getLeftItemMatrix(void); + virtual u32 getRightItemMatrix(void); + virtual u32 getLeftHandMatrix(void); + virtual u32 getRightHandMatrix(void); + virtual u32 getLinkBackBone1Matrix(void); + virtual u32 getWolfMouthMatrix(void); + virtual u32 getWolfBackbone2Matrix(void); + virtual bool getBottleMtx(void); + virtual bool checkPlayerGuard(void) const; + virtual bool checkPlayerFly() const; + virtual bool checkFrontRoll() const; + virtual bool checkWolfDash() const; + virtual bool checkAutoJump(void) const; + virtual bool checkSideStep(void) const; + virtual bool checkWolfTriggerJump(void) const; + virtual bool checkGuardBreakMode(void) const; + virtual bool checkLv3Slide(void) const; + virtual bool checkWolfHowlDemoMode(void) const; + virtual bool checkChainBlockPushPull(void); + virtual bool checkElecDamage(void) const; + virtual bool checkEmptyBottleSwing(void) const; + virtual bool checkBottleSwingMode(void) const; + virtual bool checkHawkWait(void) const; + virtual bool checkGoatThrow(void) const; + virtual bool checkGoatThrowAfter(void) const; + virtual bool checkWolfTagLockJump(void) const; + virtual bool checkWolfTagLockJumpLand(void) const; + virtual bool checkWolfRope(void); + virtual bool checkWolfRopeHang(void) const; + virtual bool checkRollJump(void) const; + virtual bool checkGoronRideWait(void) const; + virtual bool checkWolfChain(void) const; + virtual bool checkWolfWait(void) const; + virtual bool checkWolfJumpAttack(void) const; + virtual bool checkWolfRSit(void) const; + virtual bool checkBubbleFly(void) const; + virtual bool checkBottleDrinkEnd(void) const; + virtual bool checkWolfDig(void) const; + virtual bool checkCutCharge(void) const; + virtual bool checkCutTurnCharge(void) const; + virtual bool checkCutLargeJumpCharge(void) const; + virtual bool getBokoFlamePos(cXyz*); + virtual bool checkComboCutTurn(void) const; + virtual bool checkClimbMove(void) const; + virtual bool checkGrassWhistle(void) const; + virtual bool checkBoarRun(void) const; + virtual bool checkFmChainPut(void) const; + virtual bool checkHorseElecDamage(void) const; + virtual float getBaseAnimeFrameRate(void) const; + virtual float getBaseAnimeFrame(void) const; + virtual float setAnimeFrame(float); + virtual bool checkWolfLock(fopAc_ac_c*) const; + virtual bool cancelWolfLock(fopAc_ac_c*) const; + virtual bool getAtnActorID(void) const; + virtual bool getItemID(void) const; + virtual bool getGrabActorID(void) const; + virtual bool exchangeGrabActor(fopAc_ac_c*); + virtual bool setForceGrab(fopAc_ac_c*, bool, bool); + virtual void setForcePutPos(cXyz const&); + virtual bool checkPlayerNoDraw(void); + virtual bool checkRopeTag(void); + virtual void voiceStart(u32); + virtual void seStartOnlyReverb(u32); + virtual void seStartOnlyReverbLevel(u32); + virtual float setOutPower(float, short, bool); + virtual void setGrabCollisionOffset(float, float, void*); + virtual void onMagneGrab(float, float); + virtual void onFrollCrashFlg(u8, bool); + virtual bool getModelJoboolMtx(u16); + virtual bool getHeadMtx(void); + virtual bool setHookshotCarryOffset(u32, cXyz const*); + virtual bool checkIronBallReturn(void) const; + virtual bool checkIronBallGroundStop(void) const; + virtual bool checkSingleBoarBattleSecondBowReady(void) const; + virtual bool checkPoboolSubWindowMode(void) const; + virtual void setClothesChange(bool); + virtual void setPlayerPosAndAngle(float (*)[4]); + virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*); + virtual void setPlayerPosAndAngle(cXyz const*, short, bool); + virtual bool setThrowDamage(short, float, float, bool, bool, bool); + virtual bool checkSetNpcTks(cXyz*, bool, bool); + virtual bool setRollJump(float, float, short); + virtual void playerStartCollisionSE(u32, u32); + virtual void changeTextureAnime(u16, u16, bool); + virtual void cancelChangeTextureAnime(void); + virtual void cancelDungeonWarpReadyNeck(void); + virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*); + virtual void onSceneChangeAreaJump(u8, u8, fopAc_ac_c*); + virtual void onSceneChangeDead(u8, bool); + virtual bool checkHorseRide() const; + virtual bool checkBoarRide() const; + virtual bool checkCanoeRide() const; + virtual bool checkBoardRide() const; + virtual u32 checkSpinnerRide() const; + virtual bool getSpinnerActor(void); + virtual bool checkHorseRideNotReady(void) const; + virtual bool checkArrowChargeEnd(void) const; + virtual float getSearchBallScale(void) const; + virtual bool checkFastShotTime(void); + virtual bool checkNoEquipItem(void) const; + virtual bool checkFireMaterial(void) const; + virtual bool checkKandelaarSwing(bool) const; + virtual bool getBoardCutTurnOffsetAngleY(void) const; + virtual bool getMagneHitPos(void); + virtual bool getMagneBootsTopVec(void); + virtual bool getKandelaarFlamePos(); + virtual bool checkUseKandelaar(bool); + virtual void setDkCaught(fopAc_ac_c*); + virtual void onPressedDamage(cXyz const&, short); + virtual bool checkPriActorOwn(fopAc_ac_c const*) const; + virtual bool onWolfEnemyBiteAll(fopAc_ac_c*, daPy_FLG2); + virtual bool checkWolfEnemyBiteAllOwn(fopAc_ac_c const*) const; + virtual void setWolfEnemyHangBiteAngle(short); + virtual void setKandelaarMtx(float (*)[4], bool, bool); + virtual bool getStickAngleFromPlayerShape(short*) const; + virtual bool checkSpinnerPathMove(void); + virtual bool checkSpinnerTriggerAttack(void); + virtual void onSpinnerPathForceRemove(void); + virtual bool getIronBallBgHit(void) const; + virtual bool getIronBallCenterPos(void); + virtual bool checkCanoeFishingGetLeft(void) const; + virtual bool checkCanoeFishingGetRight(void) const; + virtual bool checkBeeChildDrink(void) const; + virtual void skipPortalObjWarp(void); + virtual bool checkTreasureRupeeReturn(bool) const; + virtual void setSumouReady(fopAc_ac_c*); + virtual bool checkAcceptDungeonWarpAlink(bool); + virtual bool getSumouCounter(void) const; + virtual bool checkSumouWithstand(void) const; + virtual void cancelGoronThrowEvent(void); + virtual void setSumouGraspCancelCount(bool); + virtual void setSumouPushBackDirection(short); + virtual void setSumouLoseHeadUp(void); + virtual s16 getGiantPuzzleAimAngle(void) const; + virtual void setGoronSideMove(fopAc_ac_c*); + virtual void setCargoCarry(fopAc_ac_c*); + virtual bool getDpdFarFlg(void) const; + virtual bool getHookshotTopPos(void); + virtual bool checkHookshotReturnMode(void) const; + virtual bool checkHookshotShootReturnMode(void) const; + virtual bool checkOctaIealHang(void) const; + virtual void cancelOctaIealHang(void); + virtual void cancelDragonHangBackJump(void); + virtual void setOctaIealWildHang(void); + virtual bool checkDragonHangRide(void) const; + virtual void changeDragonActor(fopAc_ac_c*); + virtual bool getClothesChangeWaitTimer(void) const; + virtual bool getShieldChangeWaitTimer(void) const; + virtual bool getSwordChangeWaitTimer(void) const; + virtual bool checkMetamorphose(void) const; + virtual bool checkWolfDownAttackPullOut(void) const; + virtual bool checkBootsOrArmorHeavy(void) const; + virtual bool getBottleOpenAppearItem(void) const; + virtual bool checkItemSwordEquip(void) const; + virtual float getSinkShapeOffset(void) const; + virtual bool checkSinkDead(void) const; + virtual bool checkHorseStart(void); + virtual bool getWolfHowlMgrP(void); + virtual bool checkWolfHowlSuccessAnime(void) const; + virtual bool checkCopyRodTopUse(void); + virtual bool checkCopyRodEquip(void) const; + virtual bool checkCutJumpMode(void) const; + + inline void onNoResetFlg0(int pFlg) { mNoResetFlg0 |= pFlg; } + inline void onNoResetFlg3(int pFlg) { mNoResetFlg3 |= pFlg; } + inline void offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; } + // inline fopAc_ac_c& getActor() { return mActor; } + + static u8 m_midnaActor[4]; +}; #endif /* D_A_D_A_PLAYER_H */ diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index e7493916ec..fc4b04d1ef 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -1,6 +1,118 @@ #ifndef D_BG_D_BG_S_H #define D_BG_D_BG_S_H +#include "SSystem/SComponent/c_bg_s_gnd_chk.h" +#include "SSystem/SComponent/c_bg_s_lin_chk.h" +#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "d/bg/d_bg_w.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +struct cBgW_BgId { + /* 802681C8 */ void Release(); + /* 802681D4 */ void ChkUsed() const; +}; + +#pragma pack(push, 1) +class cBgS_ChkElm { + cBgS_ChkElm(void); + ~cBgS_ChkElm(); + void Init(); + void Regist2(dBgW_Base*, unsigned int, void*); + void Release(); + + /* 0x00 */ dBgW_Base* bgw_base_pointer; + /* 0x04 */ u8 used; + /* 0x05 */ u8 padding[3]; + /* 0x08 */ u32 field_0x8; + /* 0x0C */ void* actor_pointer; + /* 0x10 */ u32 field_0x10; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class cBgS { + ~cBgS(); + void Regist(dBgW_Base*, unsigned int, void*); + void Release(dBgW_Base*); + void Ct(); + void Dt(); + void LineCross(cBgS_LinChk*); + void GroundCross(cBgS_GndChk*); + void ConvDzb(void*); + void GetActorPointer(int) const; + void GetBgWBasePointer(cBgS_PolyInfo const&) const; + void ChkPolySafe(cBgS_PolyInfo const&); + void GetGrpRoomId(cBgS_PolyInfo const&) const; + void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; + void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; + void ShdwDraw(cBgS_ShdwDraw*); + void GetGrpInf(cBgS_PolyInfo const&) const; + + /* 0x0000 */ cBgS_ChkElm cbgs_elements[256]; +}; +#pragma pack(pop) + +class dBgS_HIO { + /* 0x00 */ u8 vtable[4]; + /* 0x04 */ u8 field_0x4[2]; + /* 0x06 */ u16 field_0x6; + /* 0x08 */ u16 field_0x8; + /* 0x0A */ u8 field_0xa[2]; + /* 0x0C */ cXyz field_0xc; + /* 0x18 */ cXyz field_0x18; + /* 0x24 */ cXyz field_0x24; + /* 0x30 */ u8 field_0x30[4]; +}; + +class dBgS_Acch; +#pragma pack(push, 1) +class dBgS { +public: + ~dBgS(); + void Ct(); + void Dt(); + void ClrMoveFlag(); + void Move(); + void Regist(dBgW_Base*, fopAc_ac_c*); + void ChkMoveBG(cBgS_PolyInfo const&); + void ChkMoveBG_NoDABg(cBgS_PolyInfo const&); + void GetExitId(cBgS_PolyInfo const&); + void GetPolyColor(cBgS_PolyInfo const&); + void GetHorseNoEntry(cBgS_PolyInfo const&); + void GetSpecialCode(cBgS_PolyInfo const&); + void GetMagnetCode(cBgS_PolyInfo const&); + void GetMonkeyBarsCode(cBgS_PolyInfo const&); + void GetUnderwaterRoofCode(cBgS_PolyInfo const&); + void GetWallCode(cBgS_PolyInfo const&); + void GetPolyAtt0(cBgS_PolyInfo const&); + void GetPolyAtt1(cBgS_PolyInfo const&); + void GetGroundCode(cBgS_PolyInfo const&); + void GetCamMoveBG(cBgS_PolyInfo const&); + void GetRoomCamId(cBgS_PolyInfo const&); + void GetRoomPathId(cBgS_PolyInfo const&); + void GetRoomPathPntNo(cBgS_PolyInfo const&); + void GetGrpSoundId(cBgS_PolyInfo const&); + void ChkGrpInf(cBgS_PolyInfo const&, u32); + void GetRoomId(cBgS_PolyInfo const&); + void GetPolyAttackThrough(cBgS_PolyInfo const&); + void ChkPolyHSStick(cBgS_PolyInfo const&); + void WallCorrect(dBgS_Acch*); + void WallCorrectSort(dBgS_Acch*); + void RoofChk(dBgS_RoofChk*); + void SplGrpChk(dBgS_SplGrpChk*); + void SphChk(dBgS_SphChk*, void*); + void MoveBgCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*, bool, bool); + void MoveBgTransPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*); + void MoveBgMatrixCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*); + void RideCallBack(cBgS_PolyInfo const&, fopAc_ac_c*); + void ArrowStickCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, cXyz&); + void PushPullCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel); + +private: + /* 0x0000 */ cBgS cbgs; + /* 0x1400 */ void* vtable; +}; +#pragma pack(pop) #endif /* D_BG_D_BG_S_H */ diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h index fac211097a..b47e509e1f 100644 --- a/include/d/bg/d_bg_s_acch.h +++ b/include/d/bg/d_bg_s_acch.h @@ -1,6 +1,113 @@ #ifndef D_BG_D_BG_S_ACCH_H #define D_BG_D_BG_S_ACCH_H +#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "SSystem/SComponent/c_m3d_g_cir.h" +#include "SSystem/SComponent/c_m3d_g_cyl.h" +#include "SSystem/SComponent/c_m3d_g_lin.h" +#include "SSystem/SComponent/c_m3d_g_pla.h" +#include "d/a/d_a_player.h" +#include "d/bg/d_bg_s_gnd_chk.h" +#include "d/bg/d_bg_s_roof_chk.h" +#include "d/bg/d_bg_s_wtr_chk.h" #include "dolphin/types.h" +//#include "d/bg/d_bg_s.h" + +class dBgS_AcchCir { +public: + /* 80075EAC */ dBgS_AcchCir(); + /* 80075F14 */ void ClrWallHit(); + /* 80075F40 */ void SetWallR(f32); + /* 80075F48 */ void CalcWallRR(); + /* 80075F58 */ void SetWall(f32, f32); + /* 80075F80 */ void SetWallHDirect(f32); + /* 80077414 */ ~dBgS_AcchCir(); + +private: + /* 0x00 */ cBgS_PolyInfo mPolyInfo; + /* 0x10 */ int mWallHit; + /* 0x14 */ cM3dGCir m3DGCir; + /* 0x28 */ float mWallRR; + /* 0x2C */ float field_0x2c; + /* 0x30 */ float mWallH; + /* 0x34 */ float mWallR; + /* 0x38 */ float mWallHDirect; + /* 0x3C */ s16 mWallAngleY; + /* 0x3E */ u8 padding[2]; +}; + +class dBgS; +class dBgS_Acch { +public: + /* 80075F94 */ ~dBgS_Acch(); + /* 800760A0 */ dBgS_Acch(); + /* 800761CC */ void Init(); + /* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*); + /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); + /* 800762D8 */ void GroundCheckInit(dBgS&); + /* 80076350 */ void GroundCheck(dBgS&); + /* 8007654C */ void GroundRoofProc(dBgS&); + /* 80076624 */ void LineCheck(dBgS&); + /* 80076AAC */ void CrrPos(dBgS&); + /* 80076F84 */ void GetWallAllR(); + /* 80076FC0 */ void SetWallCir(); + /* 8007703C */ void CalcWallBmdCyl(); + /* 80077114 */ void SetGroundUpY(f32); + /* 80077128 */ void GetWallAllLowH(); + /* 80077178 */ void GetWallAllLowH_R(); + /* 800771E4 */ void GetSpeedY(); + /* 80077200 */ void GetWallAddY(Vec&); + /* 80077278 */ void SetNowActorInfo(int, void*, unsigned int); + /* 80077288 */ void SetWallPolyIndex(int, int); + /* 800772E8 */ void CalcMovePosWork(); + /* 8007732C */ void CalcWallRR(); + /* 80077388 */ void SetMoveBGOnly(); + /* 800773A4 */ void ClrMoveBGOnly(); + /* 800773C0 */ void SetGndThinCellingOff(); + /* 800773D0 */ void ClrGndThinCellingOff(); + /* 800773E0 */ void ChkGndThinCellingOff(); + /* 800773EC */ void OnWallSort(); + /* 800773FC */ void ChkWallSort(); + /* 80077408 */ void ChkLineDown(); + +private: + /* 0x000 */ cBgS_Chk field_0x000; + /* 0x014 */ dBgS_Chk field_0x014; + /* 0x02C */ int field_0x2c; + /* 0x030 */ cXyz* mPos; + /* 0x034 */ cXyz* mOldPos; + /* 0x038 */ cXyz* mSpeed; + /* 0x03C */ csXyz* mAngle; + /* 0x040 */ csXyz* mShapeAngle; + /* 0x044 */ cM3dGLin field_0x44; + /* 0x060 */ cM3dGCyl mWallBmdCyl; + /* 0x078 */ int field_0x78; + /* 0x07C */ void* field_0x7c; + /* 0x080 */ u32 field_0x80; + /* 0x084 */ fopAc_ac_c* mMyAc; + /* 0x088 */ int m_tbl_size; + /* 0x08C */ dBgS_AcchCir* field_0x8c; + /* 0x090 */ float field_0x90; + /* 0x094 */ float field_0x94; + /* 0x098 */ float mGroundH; + /* 0x09C */ float field_0x9c; + /* 0x0A0 */ cM3dGPla field_0xa0; + /* 0x0B4 */ u8 field_0xb4[4]; + /* 0x0B8 */ float field_0xb8; + /* 0x0BC */ float field_0xbc; + /* 0x0C0 */ u8 field_0xc0[4]; + /* 0x0C4 */ float mRoofHeight; + /* 0x0C8 */ float mRoofCrrHeight; + /* 0x0CC */ float field_0xcc; + /* 0x0D0 */ float mWaterCheckOffset; + /* 0x0D4 */ int field_0xd4; + /* 0x0D8 */ float field_0xd8; + /* 0x0DC */ dBgS_GndChk mGndChk; + /* 0x130 */ dBgS_RoofChk mRoofChk; + /* 0x180 */ dBgS_WtrChk mWtrChk; + /* 0x1D4 */ u8 mWtrChkMode; +}; + +class dBgS_LinkAcch : public dBgS_Acch {}; #endif /* D_BG_D_BG_S_ACCH_H */ diff --git a/include/d/bg/d_bg_s_chk.h b/include/d/bg/d_bg_s_chk.h index da72ae282f..549b8c2eed 100644 --- a/include/d/bg/d_bg_s_chk.h +++ b/include/d/bg/d_bg_s_chk.h @@ -1,6 +1,20 @@ #ifndef D_BG_D_BG_S_CHK_H #define D_BG_D_BG_S_CHK_H +#include "d/bg/d_bg_s_grp_pass_chk.h" +#include "d/bg/d_bg_s_poly_pass_chk.h" #include "dolphin/types.h" +class dBgS_Chk { +public: + /* 8007749C */ dBgS_Chk(); + /* 800774E8 */ ~dBgS_Chk(); + /* 80077560 */ void GetPolyPassChkInfo(); + /* 80077564 */ void GetGrpPassChkInfo(); + +private: + /* 0x000 */ dBgS_PolyPassChk mPolyPassChkInfo; + /* 0x010 */ dBgS_GrpPassChk mGrpPassChkInfo; +}; // Size = 0x18 + #endif /* D_BG_D_BG_S_CHK_H */ diff --git a/include/d/bg/d_bg_s_gnd_chk.h b/include/d/bg/d_bg_s_gnd_chk.h index e3e209a144..a979022a31 100644 --- a/include/d/bg/d_bg_s_gnd_chk.h +++ b/include/d/bg/d_bg_s_gnd_chk.h @@ -1,6 +1,22 @@ #ifndef D_BG_D_BG_S_GND_CHK_H #define D_BG_D_BG_S_GND_CHK_H +#include "SSystem/SComponent/c_bg_s_gnd_chk.h" +#include "d/bg/d_bg_s_chk.h" #include "dolphin/types.h" +class dBgS_GndChk : public cBgS_GndChk { +public: + /* 8007757C */ dBgS_GndChk(); + virtual void temp(); // temp to build OK + /* 800775F0 */ virtual ~dBgS_GndChk(); + +private: + /* 0x3C */ dBgS_Chk mChk; +}; // Size = 0x54 + +class dBgS_LinkGndChk : dBgS_GndChk {}; + +class dBgS_ObjGndChk : dBgS_GndChk {}; + #endif /* D_BG_D_BG_S_GND_CHK_H */ diff --git a/include/d/bg/d_bg_s_grp_pass_chk.h b/include/d/bg/d_bg_s_grp_pass_chk.h index fecd68bcb7..09a3435989 100644 --- a/include/d/bg/d_bg_s_grp_pass_chk.h +++ b/include/d/bg/d_bg_s_grp_pass_chk.h @@ -3,4 +3,18 @@ #include "dolphin/types.h" +class cBgS_GrpPassChk { +public: + ~cBgS_GrpPassChk(); +}; + +class dBgS_GrpPassChk : public cBgS_GrpPassChk { +public: + /* 80077BA0 */ dBgS_GrpPassChk(); + /* 80077BC4 */ ~dBgS_GrpPassChk(); + +private: + u32 mGrp; +}; + #endif /* D_BG_D_BG_S_GRP_PASS_CHK_H */ diff --git a/include/d/bg/d_bg_s_poly_pass_chk.h b/include/d/bg/d_bg_s_poly_pass_chk.h index baab841276..dc20a4bed4 100644 --- a/include/d/bg/d_bg_s_poly_pass_chk.h +++ b/include/d/bg/d_bg_s_poly_pass_chk.h @@ -3,4 +3,61 @@ #include "dolphin/types.h" +class cBgS_PolyPassChk { +public: + ~cBgS_PolyPassChk(); +}; + +class dBgS_PolyPassChk : public cBgS_PolyPassChk { +public: + dBgS_PolyPassChk(); + ~dBgS_PolyPassChk(); + + bool ChkArrow() { return mArrow; } + bool ChkBomb() { return mBomb; } + bool ChkBoomerang() { return mBoomerang; } + bool ChkCam() { return mCamera; } + bool ChkHorse() { return mHorse; } + bool ChkIronBall() { return mIronBall; } + bool ChkLink() { return mLink; } + bool ChkNoHorse(); + bool ChkObj() { return mObject; } + bool ChkRope() { return mRope; } + bool ChkStatue() { return mStatue; } + bool ChkUnderwaterRoof() { return mUnderwaterRoof; } + + void ClrBomb(); + void ClrCam(); + void ClrIronBall(); + void ClrLink(); + void ClrObj(); + void ClrStatue(); + + void SetArrow(); + void SetBomb(); + void SetBoomerang(); + void SetCam(); + void SetHorse(); + void SetIronBall(); + void SetLink(); + void SetObj(); + void SetPassChkInfo(dBgS_PolyPassChk& chk); + void SetRope(); + void SetStatue(); + void SetUnderwaterRoof(); + +private: + bool mObject; + bool mCamera; + bool mLink; + bool mArrow; + bool mBomb; + bool mBoomerang; + bool mRope; + bool mUnderwaterRoof; + bool mHorse; + bool mStatue; + bool mIronBall; +}; + #endif /* D_BG_D_BG_S_POLY_PASS_CHK_H */ diff --git a/include/d/bg/d_bg_s_roof_chk.h b/include/d/bg/d_bg_s_roof_chk.h index 718493410a..86f823faa8 100644 --- a/include/d/bg/d_bg_s_roof_chk.h +++ b/include/d/bg/d_bg_s_roof_chk.h @@ -1,6 +1,27 @@ #ifndef D_BG_D_BG_S_ROOF_CHK_H #define D_BG_D_BG_S_ROOF_CHK_H +#include "SSystem/SComponent/c_bg_s_chk.h" +#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "SSystem/SComponent/c_xyz.h" +#include "d/bg/d_bg_s_chk.h" #include "dolphin/types.h" +class dBgS_RoofChk { +public: + /* 80078FF4 */ dBgS_RoofChk(); + /* 80079090 */ ~dBgS_RoofChk(); + /* 80079124 */ void Init(); + +private: + /* 0x00 */ cBgS_PolyInfo field_0x00; + /* 0x10 */ cBgS_Chk field_0x10; + /* 0x24 */ dBgS_Chk field_0x24; + /* 0x3C */ cXyz m_pos; + /* 0x48 */ int field_0x48; + /* 0x4C */ float mNowY; +}; // Size = 0x50 + +class dBgS_LinkRoofChk : dBgS_RoofChk {}; + #endif /* D_BG_D_BG_S_ROOF_CHK_H */ diff --git a/include/d/bg/d_bg_s_spl_grp_chk.h b/include/d/bg/d_bg_s_spl_grp_chk.h index 823e0fa4fc..4fb3645b49 100644 --- a/include/d/bg/d_bg_s_spl_grp_chk.h +++ b/include/d/bg/d_bg_s_spl_grp_chk.h @@ -1,6 +1,27 @@ #ifndef D_BG_D_BG_S_SPL_GRP_CHK_H #define D_BG_D_BG_S_SPL_GRP_CHK_H +#include "SSystem/SComponent/c_bg_s_chk.h" +#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "SSystem/SComponent/c_xyz.h" +#include "d/bg/d_bg_s_chk.h" #include "dolphin/types.h" +class dBgS_SplGrpChk { +public: + /* 80078B90 */ void Set(cXyz&, f32); + /* 80078BB0 */ dBgS_SplGrpChk(); + /* 80078C78 */ ~dBgS_SplGrpChk(); + /* 80078D0C */ void Init(); + +private: + /* 0x00 */ cBgS_PolyInfo field_0x00; + /* 0x10 */ cBgS_Chk field_0x10; + /* 0x24 */ dBgS_Chk field_0x24; + /* 0x3C */ cXyz m_ground; + /* 0x48 */ float mRoof; + /* 0x4C */ float mHeight; + /* 0x50 */ int field_0x50; +}; // Size = 0x54 + #endif /* D_BG_D_BG_S_SPL_GRP_CHK_H */ diff --git a/include/d/bg/d_bg_s_wtr_chk.h b/include/d/bg/d_bg_s_wtr_chk.h index 1a17cddbfb..79a6806bab 100644 --- a/include/d/bg/d_bg_s_wtr_chk.h +++ b/include/d/bg/d_bg_s_wtr_chk.h @@ -1,6 +1,15 @@ #ifndef D_BG_D_BG_S_WTR_CHK_H #define D_BG_D_BG_S_WTR_CHK_H +#include "d/bg/d_bg_s_spl_grp_chk.h" #include "dolphin/types.h" +class dBgS_WtrChk { +public: + /* 80079164 */ dBgS_WtrChk(); + +private: + /* 0x00 */ dBgS_SplGrpChk mSplGrp; +}; // Size = 0x54 + #endif /* D_BG_D_BG_S_WTR_CHK_H */ diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index fbbef58825..3d7329acef 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -1,6 +1,211 @@ #ifndef D_BG_D_BG_W_H #define D_BG_D_BG_W_H +#include "SSystem/SComponent/c_bg_s_gnd_chk.h" +#include "SSystem/SComponent/c_bg_s_lin_chk.h" +#include "SSystem/SComponent/c_bg_s_poly_info.h" +#include "d/bg/d_bg_s_acch.h" +#include "d/bg/d_bg_s_grp_pass_chk.h" +#include "d/bg/d_bg_s_poly_pass_chk.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +struct dBgS_CaptPoly {}; + +struct dBgS_SphChk {}; + +struct cM3dGTri { + /* 8007A344 */ ~cM3dGTri(); + /* 8026F85C */ void setBg(Vec const*, Vec const*, Vec const*, cM3dGPla const*); +}; + +struct cM3dGSph {}; + +struct cM3dGAab { + /* 8026EC88 */ void CrossY(cXyz const*) const; + /* 8026ECD0 */ void UnderPlaneYUnder(f32) const; + /* 8026ECE4 */ void TopPlaneYUnder(f32) const; + /* 8026ECF8 */ void ClearForMinMax(); + /* 8026ED1C */ void SetMinMax(cXyz const&); + /* 8026EDA4 */ void SetMin(cXyz const&); + /* 8026EDE4 */ void SetMax(cXyz const&); +}; + +struct cBgW_TriElm { + /* 800796F8 */ ~cBgW_TriElm(); + /* 80079754 */ cBgW_TriElm(); +}; + +struct cBgW_RwgElm { + /* 800791C4 */ cBgW_RwgElm(); + /* 800791D4 */ ~cBgW_RwgElm(); +}; + +struct cBgW_NodeTree { + /* 8007921C */ cBgW_NodeTree(); + /* 80079238 */ ~cBgW_NodeTree(); +}; + +struct cBgW_GrpElm { + /* 8007A184 */ ~cBgW_GrpElm(); + /* 8007A1E4 */ cBgW_GrpElm(); +}; + +struct cBgS_ShdwDraw {}; + +struct cBgD_t {}; + +struct cBgW { + /* 80079294 */ cBgW(); + /* 8007933C */ ~cBgW(); + /* 800793A4 */ void FreeArea(); + /* 800793C4 */ void GlobalVtx(); + /* 80079484 */ void SetVtx(); + /* 80079564 */ void CalcPlane(); + /* 80079668 */ void SetTri(); + /* 80079770 */ void BlckConnect(u16*, int*, int); + /* 800797BC */ void ClassifyPlane(); + /* 8007998C */ void MakeBlckTransMinMax(cXyz*, cXyz*); + /* 800799E0 */ void MakeBlckMinMax(int, cXyz*, cXyz*); + /* 80079A68 */ void MakeBlckBnd(int, cXyz*, cXyz*); + /* 80079BDC */ void MakeNodeTreeRp(int); + /* 80079CC4 */ void MakeNodeTreeGrpRp(int); + /* 80079DF0 */ void MakeNodeTree(); + /* 80079EEC */ void ChkMemoryError(); + /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); + /* 8007A200 */ void RwgLineCheck(u16, cBgS_LinChk*); + /* 8007A3A0 */ void LineCheckRp(cBgS_LinChk*, int); + /* 8007A52C */ void LineCheckGrpRp(cBgS_LinChk*, int, int); + /* 8007A658 */ void LineCheck(cBgS_LinChk*); + /* 8007A680 */ void RwgGroundCheckCommon(f32, u16, cBgS_GndChk*); + /* 8007A774 */ void RwgGroundCheckGnd(u16, cBgS_GndChk*); + /* 8007A824 */ void RwgGroundCheckWall(u16, cBgS_GndChk*); + /* 8007A8F4 */ void GroundCrossRp(cBgS_GndChk*, int); + /* 8007AA50 */ void GroundCrossGrpRp(cBgS_GndChk*, int, int); + /* 8007AB9C */ void GroundCross(cBgS_GndChk*); + /* 8007ABC4 */ void CopyOldMtx(); + /* 8007AC10 */ void Move(); + /* 8007ADF0 */ void RwgShdwDraw(int, cBgS_ShdwDraw*); + /* 8007AEA4 */ void ShdwDrawRp(cBgS_ShdwDraw*, int); + /* 8007AFC0 */ void ShdwDrawGrpRp(cBgS_ShdwDraw*, int); + /* 8007B084 */ void ShdwDraw(cBgS_ShdwDraw*); + /* 8007B0A8 */ bool ChkPolyThrough(int, cBgS_PolyPassChk*); + /* 8007B0B0 */ void ChkShdwDrawThrough(int, cBgS_PolyPassChk*); + /* 8007B0DC */ bool ChkGrpThrough(int, cBgS_GrpPassChk*, int); + /* 8007B0E4 */ void GetGrpRoomIndex(cBgS_PolyInfo const&) const; + /* 8007B164 */ void GetBnd() const; + /* 8007B17C */ void GetTrans(cXyz*) const; + /* 8007B1B4 */ void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; + /* 8007B240 */ void GetTopUnder(f32*, f32*) const; + /* 8007B270 */ void GetTriPla(cBgS_PolyInfo const&) const; + /* 8007B2B0 */ void GetGrpInf(cBgS_PolyInfo const&) const; + /* 8007B2F4 */ void GetPolyInfId(int) const; + /* 8007B30C */ void GetPolyInf0(int, u32, u32) const; + /* 8007B360 */ void GetMaskPolyInf0_NoShift(int, u32) const; + /* 8007B654 */ void GetPolyInf1(int, u32, u32) const; + /* 8007B78C */ void GetMaskPolyInf1_NoShift(int, u32) const; + /* 8007B824 */ void GetPolyInf2(int, u32, u32) const; + /* 8007B930 */ void GetTriGrp(int) const; + /* 8007B948 */ void ChkNotReady() const; + /* 8007B958 */ void ChkLock() const; + /* 8007B964 */ void ChkMoveBg() const; +}; + +#pragma pack(push, 1) +class dBgW_Base { +public: + enum PushPullLabel {}; + + /* 8007E5A8 */ dBgW_Base(); + /* 8007E640 */ ~dBgW_Base(); + /* 8007E6D8 */ void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*); + /* 8007E6DC */ void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&); + /* 80074AB4 */ void SetOldShapeAngleY(s16); + /* 8007E6E0 */ void CalcDiffShapeAngleY(s16); + +private: + u16 field_0x0; + u8 field_0x2[2]; + void* field_0x4; + u8 field_0x8; + u8 field_0x9; + u8 field_0xa; + u8 field_0xb; + s16 field_0xc; + s16 field_0xe; +}; +#pragma pack(pop) + +class dBgW { +public: + /* 8007B3AC */ void GetExitId(cBgS_PolyInfo const&); + /* 8007B3D8 */ void GetPolyColor(cBgS_PolyInfo const&); + /* 8007B404 */ void GetHorseNoEntry(cBgS_PolyInfo const&); + /* 8007B430 */ void GetSpecialCode(cBgS_PolyInfo const&); + /* 8007B460 */ void GetSpecialCode(int); + /* 8007B488 */ void GetMagnetCode(cBgS_PolyInfo const&); + /* 8007B4B4 */ void GetMonkeyBarsCode(cBgS_PolyInfo const&); + /* 8007B4E0 */ void GetPolyObjThrough(int); + /* 8007B504 */ void GetPolyCamThrough(int); + /* 8007B52C */ void GetPolyLinkThrough(int); + /* 8007B550 */ void GetPolyArrowThrough(int); + /* 8007B574 */ void GetPolyHSStick(int); + /* 8007B598 */ void GetPolyBoomerangThrough(int); + /* 8007B5BC */ void GetPolyRopeThrough(int); + /* 8007B5E0 */ void GetPolyBombThrough(int); + /* 8007B604 */ void GetShdwThrough(int); + /* 8007B630 */ void GetUnderwaterRoofCode(int); + /* 8007B6AC */ void GetLinkNo(cBgS_PolyInfo const&); + /* 8007B6D8 */ void GetWallCode(cBgS_PolyInfo const&); + /* 8007B704 */ void GetPolyAtt0(cBgS_PolyInfo const&); + /* 8007B734 */ void GetPolyAtt1(cBgS_PolyInfo const&); + /* 8007B760 */ void GetGroundCode(cBgS_PolyInfo const&); + /* 8007B7DC */ void GetIronBallThrough(int); + /* 8007B800 */ void GetAttackThrough(int); + /* 8007B87C */ void GetCamMoveBG(cBgS_PolyInfo const&); + /* 8007B8A8 */ void GetRoomCamId(cBgS_PolyInfo const&); + /* 8007B8D8 */ void GetRoomPathId(cBgS_PolyInfo const&); + /* 8007B904 */ void GetRoomPathPntNo(cBgS_PolyInfo const&); + /* 8007B970 */ dBgW(); + /* 8007B9C0 */ void Move(); + /* 8007B9EC */ void positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz*, f32); + /* 8007BA40 */ void RwgWallCorrect(dBgS_Acch*, u16); + /* 8007C234 */ void WallCorrectRp(dBgS_Acch*, int); + /* 8007C360 */ void WallCorrectGrpRp(dBgS_Acch*, int, int); + /* 8007C484 */ void WallCorrect(dBgS_Acch*); + /* 8007C4AC */ void RwgWallCorrectSort(dBgS_Acch*, u16); + /* 8007C714 */ void WallCorrectRpSort(dBgS_Acch*, int); + /* 8007C808 */ void WallCorrectGrpRpSort(dBgS_Acch*, int, int); + /* 8007C910 */ void WallCorrectSort(dBgS_Acch*); + /* 8007D0DC */ void RwgRoofChk(u16, dBgS_RoofChk*); + /* 8007D208 */ void RoofChkRp(dBgS_RoofChk*, int); + /* 8007D330 */ void RoofChkGrpRp(dBgS_RoofChk*, int, int); + /* 8007D470 */ void RoofChk(dBgS_RoofChk*); + /* 8007D498 */ void RwgSplGrpChk(u16, dBgS_SplGrpChk*); + /* 8007D5C4 */ void SplGrpChkRp(dBgS_SplGrpChk*, int); + /* 8007D6F0 */ void SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int); + /* 8007D830 */ void SplGrpChk(dBgS_SplGrpChk*); + /* 8007D858 */ void RwgCaptPoly(int, dBgS_CaptPoly&); + /* 8007D8E8 */ void CaptPolyRp(dBgS_CaptPoly&, int); + /* 8007DA04 */ void CaptPolyGrpRp(dBgS_CaptPoly&, int, int); + /* 8007DAF8 */ void CaptPoly(dBgS_CaptPoly&); + /* 8007DB20 */ void RwgSphChk(u16, dBgS_SphChk*, void*); + /* 8007DC70 */ void SphChkRp(dBgS_SphChk*, void*, int); + /* 8007DDE0 */ void SphChkGrpRp(dBgS_SphChk*, void*, int, int); + /* 8007DF00 */ void SphChk(dBgS_SphChk*, void*); + /* 8007DF28 */ void GetPolyGrpRoomInfId(cBgS_PolyInfo const&); + /* 8007DF58 */ void GetGrpSoundId(cBgS_PolyInfo const&); + /* 8007DF88 */ void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + /* 8007DFC4 */ void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + /* 8007E000 */ void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + /* 8007E02C */ void ChkPolyThrough(int, cBgS_PolyPassChk*); + /* 8007E360 */ void ChkShdwDrawThrough(int, cBgS_PolyPassChk*); + /* 8007E3D8 */ void ChkGrpThrough(int, cBgS_GrpPassChk*, int); + /* 8007E444 */ void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*); + /* 8007E474 */ void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&); + /* 8007E4A4 */ void OffMoveFlag(); + /* 8007E4B4 */ void ChkMoveFlag() const; + /* 8007E548 */ ~dBgW(); +}; #endif /* D_BG_D_BG_W_H */ diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index 5450b06eca..f861f758d8 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -1,6 +1,191 @@ #ifndef D_CC_D_CC_D_H #define D_CC_D_CC_D_H +#include "SSystem/SComponent/c_cc_d.h" #include "dolphin/types.h" +struct dCcD_SrcTri {}; + +struct dCcD_SrcSph {}; + +struct dCcD_SrcGObjTg {}; + +struct dCcD_SrcGObjInf {}; + +struct dCcD_SrcGObjAt {}; + +struct dCcD_SrcGAtTgCoCommonBase {}; + +struct dCcD_SrcCyl {}; + +struct dCcD_SrcCps {}; + +class dCcD_GStts : cCcD_GStts { +public: + /* 80083760 */ dCcD_GStts(); + /* 800837F8 */ void Ct(); + /* 80083830 */ void Move(); + /* 8008523C */ ~dCcD_GStts(); + +private: + /* 0x04 */ u8 mAt; + /* 0x05 */ u8 mTg; + /* 0x06 */ u8 mRoomId; + /* 0x08 */ u16 field_0x08; + /* 0x0C */ int mAtApid; + /* 0x10 */ int mAtOldApid; + /* 0x14 */ int mTgApid; + /* 0x18 */ int mTgOldApid; + /* 0x1C */ int field_0x1C; +}; // Size = 0x20 + +class dCcD_Stts : cCcD_Stts { +public: + /* 80083850 */ void GetGStts(); + /* 80083860 */ void Init(int, int, fopAc_ac_c*); + /* 800838F4 */ void Ct(); + /* 80083928 */ void ClrAt(); + /* 80083934 */ void ClrTg(); + /* 800851AC */ ~dCcD_Stts(); + +private: + /* 0x1C */ dCcD_GStts mGStts; +}; // Size = 0x3C + +class dCcD_GAtTgCoCommonBase { +public: + /* 8008364C */ void ClrActorInfo(); + /* 80083660 */ void ct(); + /* 80083678 */ void SetHitApid(unsigned int); + /* 80083688 */ void GetAc(); + /* 80083704 */ void Set(dCcD_SrcGAtTgCoCommonBase const&); + /* 80083718 */ void SetEffCounterTimer(); + /* 80083724 */ void SubtractEffCounter(); + /* 80083748 */ void ChkEffCounter(); + /* 80083CA0 */ ~dCcD_GAtTgCoCommonBase(); + +private: + /* 0x00 */ void* mBase; // type dCcD_SrcGAtTgCoCommonBase* + /* 0x04 */ u32 mRPrm; + /* 0x08 */ u32 field_0x08; + /* 0x0C */ u32 field_0x0C; + /* 0x10 */ fopAc_ac_c* mAc; + /* 0x14 */ s8 mEffCounter; + /* 0x15 */ u8 field_0x15[3]; + /* 0x18 */ void* vtable; +}; // Size = 0x1C + +class dCcD_GObjAt : dCcD_GAtTgCoCommonBase { +public: + /* 80083944 */ void Set(dCcD_SrcGObjAt const&); + /* 80083C44 */ ~dCcD_GObjAt(); + +private: + /* 0x1C */ u8 mSe; + /* 0x1D */ u8 mMtrl; + /* 0x1E */ u8 mHitMark; + /* 0x1F */ u8 mSpl; + /* 0x20 */ cXyz mHitPos; + /* 0x2C */ cXyz mVec; + /* 0x38 */ cXyz mRVec; +}; // Size = 0x44 +class dCcD_GObjTg : dCcD_GAtTgCoCommonBase { +public: + /* 800839A0 */ void Set(dCcD_SrcGObjTg const&); + /* 80083BE8 */ ~dCcD_GObjTg(); + +private: + /* 0x1C */ u8 mSe; + /* 0x1D */ u8 mMtrl; + /* 0x1E */ u8 mHitMark; + /* 0x1F */ u8 mSpl; + /* 0x20 */ cXyz mVec; + /* 0x2C */ cXyz mRVec; + /* 0x38 */ cXyz mHitPos; + /* 0x44 */ s16* mShieldFrontRangeYAngle; + /* 0x48 */ s16 mShieldRange; +}; // Size = 0x4A ? +class dCcD_GObjCo : dCcD_GAtTgCoCommonBase { +public: + /* 80083B8C */ ~dCcD_GObjCo(); + +private: +}; // Size = 0x1C ? + +class dCcD_GObjInf : cCcD_GObjInf { +public: + /* 80083A28 */ dCcD_GObjInf(); + /* 800840E4 */ ~dCcD_GObjInf(); + /* 80084268 */ void GetGObjInf(); + /* 8008426C */ void ClrAtHit(); + /* 800842C0 */ void ChkAtHit(); + /* 80084318 */ void ResetAtHit(); + /* 80084358 */ void GetAtHitObj(); + /* 800843A8 */ void GetAtHitGObj(); + /* 800843DC */ void ChkAtNoGuard(); + /* 800843FC */ void ClrTgHit(); + /* 80084460 */ void ChkTgHit(); + /* 800844B8 */ void ResetTgHit(); + /* 800844F8 */ void GetTgHitObj(); + /* 80084548 */ void GetTgHitGObj(); + /* 8008457C */ void GetTgHitObjSe(); + /* 800845B0 */ void getHitSeID(u8, int); + /* 8008460C */ void ClrCoHit(); + /* 80084658 */ void ChkCoHit(); + /* 800846B0 */ void ResetCoHit(); + /* 800846F0 */ void GetCoHitObj(); + /* 80084740 */ void Set(dCcD_SrcGObjInf const&); + + static u8 const m_hitSeID[96]; + +private: + /* 0x058 */ dCcD_GObjAt mGObjAt; + /* 0x09C */ dCcD_GObjTg mGObjTg; + /* 0x0E8 */ dCcD_GObjCo mGObjCo; +}; // Size = 0x104 + +class dCcD_Cyl : dCcD_GObjInf { +public: + /* 800848B4 */ void Set(dCcD_SrcCyl const&); + /* 800848F8 */ void GetShapeAttr(); + /* 80084908 */ void StartCAt(cXyz&); + /* 80084954 */ void MoveCAt(cXyz&); + /* 800849C4 */ void MoveCTg(cXyz&); + /* 80084D60 */ ~dCcD_Cyl(); + +private: + /* 0x104 */ cCcD_CylAttr mCylAttr; +}; // Size = 0x13C + +class dCcD_Sph : dCcD_GObjInf { +public: + /* 80084A34 */ void Set(dCcD_SrcSph const&); + /* 80084A78 */ void StartCAt(cXyz&); + /* 80084AC4 */ void MoveCAt(cXyz&); + /* 80084B34 */ void GetShapeAttr(); + /* 80084BF4 */ ~dCcD_Sph(); + +private: + /* 0x104 */ cCcD_SphAttr mSphAttr; +}; // Size = 0x138 + +class dCcD_Cps : dCcD_GObjInf { +public: + /* 800847D0 */ void Set(dCcD_SrcCps const&); + /* 80084814 */ void GetShapeAttr(); + /* 80084824 */ void CalcAtVec(); + /* 80084854 */ void CalcTgVec(); + /* 8008506C */ ~dCcD_Cps(); + +private: + /* 0x104 */ cCcD_CpsAttr mCpsAttr; +}; // Size = 0x144 + +class dCcD_Tri { +public: + /* 80084884 */ void Set(dCcD_SrcTri const&); + /* 800848A4 */ void GetShapeAttr(); + /* 80084EF4 */ ~dCcD_Tri(); +}; + #endif /* D_CC_D_CC_D_H */ diff --git a/include/d/cc/d_cc_mass_s.h b/include/d/cc/d_cc_mass_s.h index cf8748a101..9a654a13be 100644 --- a/include/d/cc/d_cc_mass_s.h +++ b/include/d/cc/d_cc_mass_s.h @@ -1,6 +1,41 @@ #ifndef D_CC_D_CC_MASS_S_H #define D_CC_D_CC_MASS_S_H +#include "SSystem/SComponent/c_cc_d.h" #include "dolphin/types.h" +class dCcMassS_Obj { +public: +private: + u8 field_0x0[12]; + cCcD_DivideInfo cccd_divideinfo; + void* vtable; +}; + +class dCcMassS_Mng { +public: + dCcMassS_Mng(void); + +private: + /* 0x0000 */ cCcD_DivideArea cccd_dividearea; + /* 0x0020 */ u8 field_0x20[36]; + /* 0x0044 */ dCcMassS_Obj dccmasss_obj; + /* 0x0064 */ u8 field_0x64[292]; + /* 0x0188 */ dCcMassS_Obj dccmasss_obj2; + /* 0x01A8 */ u8 field_0x1a8[32]; + /* 0x01C8 */ cCcD_CylAttr cccd_cylattr; + /* 0x0200 */ u8 field_0x200[2]; + /* 0x0202 */ u8 field_0x202; + /* 0x0203 */ u8 field_0x203; + /* 0x0204 */ float cam_x_pos; + /* 0x0208 */ float cam_y_pos; + /* 0x020C */ float cam_z_pos; + /* 0x0210 */ float field_0x210; + /* 0x0214 */ float field_0x214; + /* 0x0218 */ float field_0x218; + /* 0x021C */ u8 field_0x21c[8]; + /* 0x0224 */ cCcD_CpsAttr cccd_cpsattr; + /* 0x0288 */ cCcD_DivideInfo cccd_divideinfo; +}; + #endif /* D_CC_D_CC_MASS_S_H */ diff --git a/include/d/cc/d_cc_s.h b/include/d/cc/d_cc_s.h index 9fb1a51100..66999bff2e 100644 --- a/include/d/cc/d_cc_s.h +++ b/include/d/cc/d_cc_s.h @@ -1,6 +1,50 @@ #ifndef D_CC_D_CC_S_H #define D_CC_D_CC_S_H +#include "d/cc/d_cc_d.h" +#include "d/cc/d_cc_mass_s.h" #include "dolphin/types.h" +class dCcS { +public: + /* 8002FF40 */ ~dCcS(); + /* 80085ED4 */ void Ct(); + /* 80085F08 */ void Dt(); + /* 80085F28 */ void ChkShieldFrontRange(cCcD_Obj*, cCcD_Obj*, int, cXyz const*); + /* 800860F8 */ void ChkShield(cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cXyz const*); + /* 800861B0 */ void CalcTgPlusDmg(cCcD_Obj*, cCcD_Obj*, cCcD_Stts*, cCcD_Stts*); + /* 800861B4 */ void ChkAtTgHitAfterCross(bool, bool, cCcD_GObjInf const*, cCcD_GObjInf const*, + cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, cCcD_GStts*); + /* 80086240 */ void SetCoGObjInf(bool, bool, cCcD_GObjInf*, cCcD_GObjInf*, cCcD_Stts*, + cCcD_Stts*, cCcD_GStts*, cCcD_GStts*); + /* 80086360 */ void GetRank(u8); + /* 80086404 */ bool ChkNoHitGCo(cCcD_Obj*, cCcD_Obj*); + /* 8008640C */ void SetPosCorrect(cCcD_Obj*, cXyz*, cCcD_Obj*, cXyz*, f32); + /* 80086754 */ void CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*); + /* 8008685C */ void ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, + dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*, + dCcD_GStts*, cXyz*, bool); + /* 80086AC0 */ void SetAtTgGObjInf(bool, bool, cCcD_Obj*, cCcD_Obj*, cCcD_GObjInf*, + cCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, cCcD_GStts*, + cCcD_GStts*, cXyz*); + /* 80086D8C */ void ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*); + /* 80086FBC */ void chkCameraPoint(cXyz const&, cCcD_ShapeAttr::Shape*, fopAc_ac_c*, + fopAc_ac_c*); + /* 800872A8 */ void MoveAfterCheck(); + /* 800872AC */ void DrawAfter(); + /* 800872B0 */ void Move(); + /* 800872D0 */ void Draw(); + /* 8008730C */ void MassClear(); + /* 80087330 */ void ChkAtTgMtrlHit(u8, u8); + /* 8008734C */ void ChkNoHitGAtTg(cCcD_GObjInf const*, cCcD_GObjInf const*, cCcD_GStts*, + cCcD_GStts*); + + static u8 m_mtrl_hit_tbl[64]; + +private: + /* 0x0000 */ cCcS cccs; + /* 0x2834 */ u8 field_0x2834[0x18]; + /* 0x284C */ dCcMassS_Mng dccmass_mng; +}; + #endif /* D_CC_D_CC_S_H */ diff --git a/include/d/d_attention.h b/include/d/d_attention.h index d403982af7..2690ea3a7e 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -1,6 +1,244 @@ #ifndef D_D_ATTENTION_H #define D_D_ATTENTION_H +#include "SSystem/SComponent/c_angle.h" +#include "d/a/d_a_player.h" +#include "d/save/d_save.h" #include "dolphin/types.h" +#include "m_Do/m_Do_ext.h" + +struct J3DTransformInfo {}; + +class dAttHint_c { +public: + /* 800738B4 */ void getPId(void*); + /* 800738CC */ void convPId(unsigned int); + /* 800738FC */ void request(fopAc_ac_c*, int); + /* 80073958 */ void init(); + /* 80073970 */ void proc(); + +private: + u32 field_0x0; + u32 field_0x4; + u32 field_0x8; +}; + +class dAttCatch_c { +public: + /* 8007398C */ void convPId(unsigned int); + /* 800739BC */ void init(); + /* 800739DC */ void proc(); + /* 80073A08 */ void request(fopAc_ac_c*, u8, f32, f32, f32, s16, int); + +private: + void* field_0x0; + u32 field_0x4; + float field_0x8; + u8 field_0xc; + u8 field_0xd; + u8 field_0xe; + u8 field_0xf; + void* field_0x10; +}; + +class dAttParam_c { +public: + /* 80070038 */ dAttParam_c(s32); + /* 80070110 */ ~dAttParam_c(); + +private: + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + u8 field_0x8; + u8 field_0x9; + u8 field_0xa; + u8 field_0xb; + u8 field_0xc; + u8 field_0xd; + u8 field_0xe; + u8 field_0xf; + u8 field_0x10; + u8 field_0x11; + u8 field_0x12; +}; + +class dAttLook_c { +public: + /* 80073CA4 */ void convPId(unsigned int); + /* 80073CD4 */ void init(); + /* 80073CEC */ void proc(); + /* 80073D08 */ void request(fopAc_ac_c*, f32, f32, f32, s16, int); + +private: + u32 field_0x0; + u32 field_0x4; + float field_0x8; +}; + +#pragma pack(push, 1) +class dAttList_c { +public: + /* 800304D0 */ ~dAttList_c(); + /* 8003050C */ dAttList_c(); + /* 80073864 */ void getActor(); + /* 80073898 */ void setActor(fopAc_ac_c*); + +private: + u8 field_0x0[8]; + cSAngle angle; + u8 field_0xa[10]; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class dAttDraw_c { +public: + /* 8003054C */ ~dAttDraw_c(); + /* 800307F0 */ dAttDraw_c(); + /* 80072DD8 */ void setAnm(u8, f32); + /* 80072FE8 */ void setAlphaAnm(u8, u8); + /* 80073004 */ void alphaAnm(); + /* 800732B0 */ void draw(cXyz&, f32 (*)[4]); + + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + /* 0x008 */ mDoExt_bckAnm bckAnm[2]; + /* 0x040 */ mDoExt_bpkAnm bpkAnm[2]; + /* 0x070 */ mDoExt_brkAnm brkAnm[2]; + /* 0x0A0 */ mDoExt_brkAnm brkAnm2[2]; + /* 0x0D0 */ mDoExt_btkAnm btkAnm[2]; + /* 0x100 */ mDoExt_bckAnm bckAnm2; + /* 0x11C */ mDoExt_bpkAnm bpkAnm2; + /* 0x134 */ mDoExt_brkAnm brkAnm3; + /* 0x14C */ mDoExt_btkAnm btkAnm2; + /* 0x164 */ u8 field_0x164[0xC]; + /* 0x170 */ u8 field_0x170; + /* 0x171 */ u8 field_0x171; + /* 0x172 */ u8 field_0x172; + /* 0x173 */ u8 field_0x173; + /* 0x174 */ u8 field_0x174; + /* 0x175 */ u8 field_0x175; +}; +#pragma pack(pop) + +class dAttDraw_CallBack_c { +public: + /* 80070178 */ void execute(u16, J3DTransformInfo*); + + mDoExt_McaMorfCallBack1_c mDoExt_McaMorfCallback; +}; + +class dAttention_c { +public: + /* 80070198 */ dAttention_c(fopAc_ac_c*, u32); + /* 80070774 */ ~dAttention_c(); + /* 80070844 */ void GetLockonList(s32); + /* 80070880 */ void getActionBtnB(); + /* 80070974 */ void getActionBtnXY(); + /* 80070A70 */ void chkAttMask(u32, u32); + /* 80070E90 */ void calcWeight(int, fopAc_ac_c*, f32, s16, s16, u32*); + /* 800710C0 */ void setList(int, fopAc_ac_c*, f32, f32, cSAngle, u32); + /* 80071240 */ void initList(u32); + /* 800713CC */ void makeList(); + /* 80071424 */ void setOwnerAttentionPos(); + /* 80071488 */ void SelectAttention(fopAc_ac_c*); + /* 800716B8 */ void sortList(); + /* 800718A4 */ void stockAttention(); + /* 80071960 */ void nextAttention(); + /* 80071A68 */ void freeAttention(); + /* 80071A98 */ void chaseAttention(); + /* 80071CC0 */ void EnemyDistance(fopAc_ac_c*); + /* 80071DEC */ void runSoundProc(); + /* 80071E84 */ void runDrawProc(); + /* 800720F4 */ void runDebugDisp(); + /* 800720F8 */ void checkButton(); + /* 800722A0 */ void triggerProc(); + /* 800722EC */ void lostCheck(); + /* 80072344 */ void judgementStatus4Hold(); + /* 800725F0 */ void judgementStatus4Switch(); + /* 80072924 */ void Run(); + /* 80072BD4 */ void Draw(); + /* 80072D80 */ void lockSoundStart(u32); + /* 8007353C */ void LockonTarget(s32); + /* 800735DC */ void LockonReleaseDistanse(); + /* 800736CC */ void LockonTargetPId(s32); + /* 80073734 */ void ActionTarget(s32); + /* 8007378C */ void CheckObjectTarget(s32); + /* 800737E4 */ void LockonTruth(); + /* 80073838 */ void checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32); + + static u8 loc_type_tbl[12]; + static u8 act_type_tbl[20]; + static u8 dist_table[6552]; + static u32 loc_type_num; + static u32 act_type_num; + static u32 chk_type_tbl; + static u32 chk_type_num; + +private: + u8 field_0x0[4]; + u32 field_0x4; + dAttDraw_CallBack_c dattdraw_callback; + u32 field_0xc; + u32 field_0x10; + u8 field_0x14[8]; + cXyz field_0x1c; + /* 0x028 */ dAttDraw_c attention_draw[2]; + int field_0x318; + cXyz field_0x31c; + u8 field_0x328[12]; + u32 field_0x334; + /* 0x0338 */ dAttList_c attention_list1[8]; + int* field_0x3d8; + int* field_0x3dc; + /* 0x03E0 */ dAttList_c attention_list2[4]; + int* field_0x430; + int field_0x434; + /* 0x0438 */ dAttList_c attention_list3[4]; + int* field_0x488; + int field_0x48c; + dAttHint_c attention_hint; + dAttCatch_c attention_catch; + u8 field_0x4b0[4]; + dAttLook_c attention_look; + u8 field_0x4c0; + u8 field_0x4c1; + u8 field_0x4c2; + u8 field_0x4c3; + int* field_0x4c4; + u8 field_0x4c8; + u8 field_0x4c9; + u8 field_0x4ca; + u8 field_0x4cb; + u8 field_0x4cc; + u8 field_0x4cd; + u8 field_0x4ce; + u8 field_0x4cf; + /* 0x04D0 */ dAttParam_c attention_param; + u8 field_0x4e3; + u8 field_0x4e4; + u8 field_0x4e5; + int* field_0x4e6; + u8 field_0x4ea; + u8 field_0x4eb; + u8 field_0x4ec; + u8 field_0x4ed; + u8 field_0x4ee; + u8 field_0x4ef; + u8 field_0x4f0[0x18]; + /* 0x0508 */ void* vtable; +}; #endif /* D_D_ATTENTION_H */ diff --git a/include/d/d_stage.h b/include/d/d_stage.h index ba38abe7d1..cdf860e997 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -1,6 +1,441 @@ #ifndef D_D_STAGE_H #define D_D_STAGE_H +#include "d/save/d_save.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +struct stage_vrboxcol_info_class {}; + +struct stage_vrbox_info_class {}; + +struct stage_tresure_class {}; + +struct stage_tgsc_data_class { + /* 8002847C */ ~stage_tgsc_data_class(); + /* 800284B8 */ stage_tgsc_data_class(); +}; + +struct stage_tgsc_class {}; + +struct stage_stag_info_class {}; + +struct stage_scls_info_dummy_class {}; + +struct stage_pure_lightvec_info_class {}; + +struct stage_pselect_info_class {}; + +struct stage_plight_info_class {}; + +struct stage_palette_info_class {}; + +struct stage_map_info_dummy_class {}; + +struct stage_map_info_class {}; + +struct stage_envr_info_class {}; + +struct stage_camera_class {}; + +struct stage_camera2_data_class {}; + +struct stage_arrow_class {}; + +struct stage_actor_data_class {}; + +struct stage_actor_class {}; + +struct roomRead_class {}; + +struct dStage_FileList2_dt_c {}; + +struct dStage_MemoryMap_c {}; + +struct dStage_dPath_c {}; + +struct dStage_Multi_c {}; + +struct dStage_SoundInfo_c {}; + +struct dStage_FileList_dt_c {}; + +struct dStage_dPnt_c {}; + +struct dStage_FloorInfo_c {}; + +struct dStage_Lbnk_c {}; + +struct dStage_Elst_c {}; + +struct dStage_MemoryConfig_c {}; + +struct dStage_DMap_c {}; + +struct dStage_MapEventInfo_c {}; + +class dStage_stageDt_c { +public: + stage_camera_class* getCamera(void) const; + stage_arrow_class* getArrow(void) const; + stage_actor_class* getPlayer(void) const; + roomRead_class* getRoom(void) const; + stage_map_info_class* getMapInfo(void) const; + stage_map_info_dummy_class* getMapInfoBase(void) const; + stage_palette_info_class* getPaletteInfo(void) const; + stage_pselect_info_class* getPselectInfo(void) const; + stage_envr_info_class* getEnvrInfo(void) const; + stage_vrbox_info_class* getVrboxInfo(void) const; + stage_vrboxcol_info_class* getVrboxcolInfo(void) const; + dStage_FileList2_dt_c* getFileList2Info(void) const; + dStage_FileList_dt_c* getFileListInfo(void) const; + stage_plight_info_class* getPlightInfo(void) const; + dStage_MapEventInfo_c* getMapEventInfo(void) const; + int getPaletteNumInfo(void) const; + int getPselectNumInfo(void) const; + int getEnvrNumInfo(void) const; + int getVrboxNumInfo(void) const; + int getVrboxcolNumInfo(void) const; + int getPlightNumInfo(void) const; + u16 getPlayerNum(void) const; + int getMapInfo2(int) const; + stage_stag_info_class* getStagInfo(void) const; + stage_scls_info_dummy_class* getSclsInfo(void) const; + dStage_Lbnk_c* getLbnk(void) const; + dStage_dPnt_c* getPntInf(void) const; + dStage_dPath_c* getPathInf(void) const; + dStage_dPnt_c* getPnt2Inf(void) const; + dStage_dPath_c* getPath2Inf(void) const; + dStage_SoundInfo_c* getSoundInf(void) const; + dStage_SoundInfo_c* getSoundInfCL(void) const; + dStage_FloorInfo_c* getFloorInfo(void) const; + dStage_MemoryConfig_c* getMemoryConfig(void) const; + dStage_MemoryMap_c* getMemoryMap(void) const; + dStage_Multi_c* getMulti(void) const; + dStage_Multi_c* getOldMulti(void) const; + stage_tresure_class* getTresure(void) const; + dStage_DMap_c* getDMap(void) const; + stage_tgsc_class* getDrTg(void) const; + stage_tgsc_class* getDoor(void) const; + dStage_Elst_c* getElst(void); + stage_pure_lightvec_info_class* getLightVecInfo(void) const; + int getLightVecInfoNum(void) const; + int getMapPath(void); + + void init(void); + void resetOldMulti(void); + + void setCamera(stage_camera_class*); + void setArrow(stage_arrow_class*); + void setPlayer(stage_actor_class*); + void setRoom(roomRead_class*); + void setMapInfo(stage_map_info_class*); + void setMapInfoBase(stage_map_info_dummy_class*); + void setPaletteInfo(stage_palette_info_class*); + void setPselectInfo(stage_pselect_info_class*); + void setEnvrInfo(stage_envr_info_class*); + void setVrboxInfo(stage_vrbox_info_class*); + void setVrboxcolInfo(stage_vrboxcol_info_class*); + void setFileList2Info(dStage_FileList2_dt_c*); + void setFileListInfo(dStage_FileList_dt_c*); + void setPlightInfo(stage_plight_info_class*); + void setMapEventInfo(dStage_MapEventInfo_c*); + void setPaletteNumInfo(int); + void setPselectNumInfo(int); + void setEnvrNumInfo(int); + void setVrboxNumInfo(int); + void setVrboxcolNumInfo(int); + void setPlightNumInfo(int); + void setPlayerNum(u16); + void setStagInfo(stage_stag_info_class*); + void setSclsInfo(stage_scls_info_dummy_class*); + void setLbnk(dStage_Lbnk_c*); + void setPntInfo(dStage_dPnt_c*); + void setPathInfo(dStage_dPath_c*); + void setPnt2Info(dStage_dPnt_c*); + void setPath2Info(dStage_dPath_c*); + void setSoundInf(dStage_SoundInfo_c*); + void setSoundInfCL(dStage_SoundInfo_c*); + void setFloorInfo(dStage_FloorInfo_c*); + void setMemoryConfig(dStage_MemoryConfig_c*); + void setMemoryMap(dStage_MemoryMap_c*); + void setMulti(dStage_Multi_c*); + void setOldMulti(void); + void setTreasure(stage_tresure_class*); + void setDMap(dStage_DMap_c*); + void setDrTg(stage_tgsc_class*); + void setDoor(stage_tgsc_class*); + void setElst(dStage_Elst_c*); + void setLightVecInfo(stage_pure_lightvec_info_class*); + void setLightVecInfoNum(int); + void setTresure(stage_tresure_class*); + void setMapPath(void*); + +private: + u8 field_0x0[0x8]; + stage_camera_class* mCamera; + stage_arrow_class* mArrow; + stage_actor_class* mPlayer; + roomRead_class* mRoom; + stage_map_info_class* mMapInfo; + stage_map_info_dummy_class* mMapInfoBase; + stage_palette_info_class* mPaletteInfo; + stage_pselect_info_class* mPselectInfo; + stage_envr_info_class* mEnvrInfo; + stage_vrbox_info_class* mVrboxInfo; + stage_vrboxcol_info_class* mVrboxcolInfo; + stage_plight_info_class* mPlightInfo; + dStage_MapEventInfo_c* mMapEventInfo; + u32 mPaletteNumInfo; + u32 mPselectNumInfo; + u32 mEnvrNumInfo; + u32 mVrboxNumInfo; + int mVrboxcolNumInfo; + u32 mPlightNumInfo; + u16 mPlayerNum; + u16 field_0x56; + u16 field_0x58; + u16 field_0x5a; + stage_stag_info_class* mStagInfo; + stage_scls_info_dummy_class* mSclsInfo; + dStage_dPnt_c* mPntInfo; + dStage_dPath_c* mPathInfo; + dStage_dPnt_c* mPnt2Inf; + dStage_dPath_c* mPath2Info; + dStage_SoundInfo_c* mSoundInf; + dStage_SoundInfo_c* mSoundInfCL; + dStage_FloorInfo_c* mFloorInfo; + dStage_MemoryConfig_c* mMemoryConfig; + dStage_MemoryMap_c* mMemoryMap; + dStage_Multi_c* mMulti; + dStage_Multi_c* mOldMulti; + stage_tresure_class* mTreasure; + dStage_DMap_c* mDMap; + stage_tgsc_class* mDrTg; + stage_tgsc_class* mDoor; + dStage_Elst_c* mElst; +}; + +class dStage_roomDt_c { +public: + stage_pure_lightvec_info_class* getLightVecInfo(void) const; + int getLightVecInfoNum(void) const; + stage_map_info_class* getMapInfo(void) const; + stage_map_info_dummy_class* getMapInfoBase(void) const; + int getMapPath(void); + stage_vrbox_info_class* getVrboxInfo(void) const; + stage_vrboxcol_info_class* getVrboxcolInfo(void) const; + dStage_FileList2_dt_c* getFileList2Info(void) const; + dStage_FileList_dt_c* getFileListInfo(void) const; + stage_actor_class* getPlayer(void) const; + dStage_dPnt_c* getPnt2Inf(void) const; + dStage_dPath_c* getPath2Inf(void) const; + stage_camera_class* getCamera(void) const; + stage_arrow_class* getArrow(void) const; + dStage_MapEventInfo_c* getMapEventInfo(void) const; + dStage_SoundInfo_c* getSoundInf(void) const; + dStage_SoundInfo_c* getSoundInfCL(void) const; + stage_scls_info_dummy_class* getSclsInfo(void) const; + dStage_Lbnk_c* getLbnk(void) const; + stage_tresure_class* getTresure(void) const; + stage_tgsc_class* getDrTg(void) const; + stage_tgsc_class* getDoor(void) const; + dStage_FloorInfo_c* getFloorInfo(void) const; + u16 getPlayerNum(void) const; + int getEnvrNumInfo(void) const; + int getVrboxNumInfo(void) const; + int getVrboxcolNumInfo(void) const; + int getMapInfo2(int) const; + int getPlightNumInfo(void) const; + stage_stag_info_class* getStagInfo(void) const; + dStage_dPnt_c* getPntInf(void) const; + dStage_dPath_c* getPathInf(void) const; + dStage_MemoryConfig_c* getMemoryConfig(void) const; + dStage_MemoryMap_c* getMemoryMap(void) const; + dStage_Multi_c* getMulti(void) const; + dStage_Multi_c* getOldMulti(void) const; + dStage_DMap_c* getDMap(void) const; + dStage_Elst_c* getElst(void); + roomRead_class* getRoom(void) const; + stage_palette_info_class* getPaletteInfo(void) const; + stage_pselect_info_class* getPselectInfo(void) const; + stage_envr_info_class* getEnvrInfo(void) const; + stage_plight_info_class* getPlightInfo(void) const; + int getPaletteNumInfo(void) const; + int getPselectNumInfo(void) const; + + void initFileList2(void); + void init(void); + + void setLightVecInfo(stage_pure_lightvec_info_class*); + void setLightVecInfoNum(int); + void setMapInfo(stage_map_info_class*); + void setMapInfoBase(stage_map_info_dummy_class*); + void setVrboxInfo(stage_vrbox_info_class*); + void setVrboxcolInfo(stage_vrboxcol_info_class*); + void setFileList2Info(dStage_FileList2_dt_c*); + void setFileListInfo(dStage_FileList_dt_c*); + void setPlayer(stage_actor_class*); + void setPnt2Inf(dStage_dPnt_c*); + void setPath2Info(dStage_dPath_c*); + void setCamera(stage_camera_class*); + void setArrow(stage_arrow_class*); + void setMapEventInfo(dStage_MapEventInfo_c*); + void setSoundInf(dStage_SoundInfo_c*); + void setSoundInfCL(dStage_SoundInfo_c*); + void setSclsInfo(stage_scls_info_dummy_class*); + void setLbnk(dStage_Lbnk_c*); + void setTreasure(stage_tresure_class*); + void setDrTg(stage_tgsc_class*); + void setDoor(stage_tgsc_class*); + void setFloorInfo(dStage_FloorInfo_c*); + void setPlayerNum(u16); + void setVrboxNumInfo(int); + void setVrboxcolNumInfo(int); + void setStagInfo(stage_stag_info_class*); + void setPntInfo(dStage_dPnt_c*); + void setPathInfo(dStage_dPath_c*); + void setPnt2Info(dStage_dPnt_c*); + void setPlightNumInfo(int); + void setMemoryConfig(dStage_MemoryConfig_c*); + void setMemoryMap(dStage_MemoryMap_c*); + void setMulti(dStage_Multi_c*); + void setOldMulti(void); + void resetOldMulti(void); + void setTresure(stage_tresure_class*); + void setDMap(dStage_DMap_c*); + void setMapPath(void*); + void setElst(dStage_Elst_c*); + void setRoom(roomRead_class*); + void setPaletteInfo(stage_palette_info_class*); + void setPselectInfo(stage_pselect_info_class*); + void setEnvrInfo(stage_envr_info_class*); + void setPlightInfo(stage_plight_info_class*); + void setPaletteNumInfo(int); + void setPselectNumInfo(int); + void setEnvrNumInfo(int); + +private: + u8 field_0x0[0x8]; + stage_pure_lightvec_info_class* mLightVecInfo; + int mLightVecInfoNum; + stage_map_info_class* mMapInfo; + stage_map_info_dummy_class* mMapInfoBase; + stage_vrbox_info_class* mVrboxInfo; + stage_vrboxcol_info_class* mVrboxcolInfo; + dStage_FileList2_dt_c* mFileList2Info; + dStage_FileList_dt_c* mFileListInfo; + stage_actor_class* mPlayer; + dStage_dPnt_c* mPnt2Info; + dStage_dPath_c* mPath2Info; + stage_camera_class* mCamera; + stage_arrow_class* mArrow; + dStage_MapEventInfo_c* mMapEventInfo; + dStage_SoundInfo_c* mSoundInf; + dStage_SoundInfo_c* mSoundInfCL; + stage_scls_info_dummy_class* mSclsInfo; + dStage_Lbnk_c* mLbnk; + stage_tresure_class* mTreasure; + stage_tgsc_class* mDrTg; + stage_tgsc_class* mDoor; + dStage_FloorInfo_c* mFloorInfo; + u16 mPlayerNum; + u16 field_0x62; + int mVrboxNumInfo; + int mVrboxcolNumInfo; +}; // Size: 0x6C + +#pragma pack(push, 1) +class dStage_roomControl_c { +public: + struct roomDzs_c { + /* 80024A34 */ void create(u8); + /* 80024ABC */ void remove(); + /* 80024B44 */ void add(u8, u8); + }; + + void init(void); + static int getZoneNo(int room); + /* 80024338 */ void initZone(); + /* 80024384 */ void getStatusRoomDt(int); + /* 800243B0 */ void getMemoryBlock(int); + /* 800243E8 */ void setStayNo(int); + /* 80024424 */ void setNextStayNo(int); + /* 800244E8 */ void checkRoomDisp(int) const; + /* 8002451C */ void loadRoom(int, u8*, bool); + /* 8002471C */ void zoneCountCheck(int) const; + /* 80024844 */ void createMemoryBlock(int, u32); + /* 800248A8 */ void destroyMemoryBlock(); + /* 8002490C */ void setArcBank(int, char const*); + /* 80024940 */ void getArcBank(int); + /* 80024954 */ void resetArchiveBank(int); + /* 80024DB0 */ void SetTimePass(int); + + static u8 mMemoryBlock[76]; + static u8 mArcBank[320]; + static u8 mStatus[65792]; + static u8 mDemoArcName[10 + 2 /* padding */]; + static u8 mProcID[4]; + static u8 mArcBankName[4]; + static u8 mArcBankData[4]; + static u8 m_roomDzs[8]; + +private: + u8 field_0x0[164]; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class dStage_nextStage_c { +public: + void set(const char*, s8, s16, s8, s8, u8); + +private: + char mStage[8]; + s16 mPoint; + u8 mRoomNo; + u8 mLayer; + u8 field_0xc; + u8 field_0xd; + s8 enabled; + u8 wipe; + u8 wipe_speed; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class dStage_startStage_c { +public: + void set(const char*, s8, s16, s8); + inline char* getName() { return mStage; } + +private: + /* 0x0 */ char mStage[8]; + /* 0x8 */ s16 mPoint; + /* 0xA */ s8 mRoomNo; + /* 0xB */ s8 mLayer; + /* 0xC */ s8 mDarkArea; +}; +#pragma pack(pop) + +class dStage_roomStatus_c : dStage_roomDt_c { +private: + /* 0x06C */ u8 mJ3DLightInfo[0xA0 - 0x6C]; + /* 0x0A0 */ u8 unk_A0[0x3F7 - 0xA0]; + /* 0x3F7 */ s8 mZoneNo; + /* 0x3F8 */ u8 unk_3F8[0x404 - 0x3F8]; + +public: + int getZoneNo() const { return mZoneNo; } + /* 80028360 */ ~dStage_roomStatus_c(); + /* 8002839C */ dStage_roomStatus_c(); +}; // Size: 0x404 + +// unknown name +struct objectNameInfo { + char mName[8]; + s16 mProcTypeID; + s8 unkA; +}; // Size: 0xC #endif /* D_D_STAGE_H */ diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 530080ff29..e42af8eceb 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -1,6 +1,301 @@ #ifndef D_EVENT_D_EVENT_H #define D_EVENT_D_EVENT_H +#include "d/a/d_a_itembase.h" +#include "d/a/d_a_player.h" +#include "d/d_stage.h" +#include "d/save/d_save.h" #include "dolphin/types.h" +#pragma pack(push, 1) +class dEvt_order_c { +public: + /* 80030154 */ ~dEvt_order_c(); + /* 800415D4 */ dEvt_order_c(); + +private: + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + u8 field_0x8; + u8 field_0x9; + u8 field_0xa; + u8 field_0xb; + u8 field_0xc; + u8 field_0xd; + u8 field_0xe; + u8 field_0xf; + u8 field_0x10; + u8 field_0x11; + u8 field_0x12; + u8 field_0x13; + u8 field_0x14; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + u8 field_0x18; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u8 field_0x1c; + u8 field_0x1d; + u8 field_0x1e; + u8 field_0x1f; + u8 field_0x20; + u8 field_0x21; + u8 field_0x22; + u8 field_0x23; + u8 field_0x24; + u8 field_0x25; + u8 field_0x26; + u8 field_0x27; + u8 field_0x28; + u8 field_0x29; + u8 field_0x2a; + u8 field_0x2b; + u8 field_0x2c; + u8 field_0x2d; + u8 field_0x2e; + u8 field_0x2f; + u8 field_0x30; + u8 field_0x31; + u8 field_0x32; + u8 field_0x33; + u8 field_0x34; + u8 field_0x35; + u8 field_0x36; + u8 field_0x37; + u8 field_0x38; + u8 field_0x39; + u8 field_0x3a; + u8 field_0x3b; + u8 field_0x3c; + u8 field_0x3d; + u8 field_0x3e; + u8 field_0x3f; + u8 field_0x40; + u8 field_0x41; + u8 field_0x42; + u8 field_0x43; + u8 field_0x44; + u8 field_0x45; + u8 field_0x46; + u8 field_0x47; + u8 field_0x48; + u8 field_0x49; + u8 field_0x4a; + u8 field_0x4b; + u8 field_0x4c; + u8 field_0x4d; + u8 field_0x4e; + u8 field_0x4f; + u8 field_0x50; + u8 field_0x51; + u8 field_0x52; + u8 field_0x53; + u8 field_0x54; + u8 field_0x55; + u8 field_0x56; + u8 field_0x57; + u8 field_0x58; + u8 field_0x59; + u8 field_0x5a; + u8 field_0x5b; + u8 field_0x5c; + u8 field_0x5d; + u8 field_0x5e; + u8 field_0x5f; + u8 field_0x60; + u8 field_0x61; + u8 field_0x62; + u8 field_0x63; + u8 field_0x64; + u8 field_0x65; + u8 field_0x66; + u8 field_0x67; + u8 field_0x68; + u8 field_0x69; + u8 field_0x6a; + u8 field_0x6b; + u8 field_0x6c; + u8 field_0x6d; + u8 field_0x6e; + u8 field_0x6f; + u8 field_0x70; + u8 field_0x71; + u8 field_0x72; + u8 field_0x73; + u8 field_0x74; + u8 field_0x75; + u8 field_0x76; + u8 field_0x77; + u8 field_0x78; + u8 field_0x79; + u8 field_0x7a; + u8 field_0x7b; + u8 field_0x7c; + u8 field_0x7d; + u8 field_0x7e; + u8 field_0x7f; + u8 field_0x80; + u8 field_0x81; + u8 field_0x82; + u8 field_0x83; + u8 field_0x84; + u8 field_0x85; + u8 field_0x86; + u8 field_0x87; + u8 field_0x88; + u8 field_0x89; + u8 field_0x8a; + u8 field_0x8b; + u8 field_0x8c; + u8 field_0x8d; + u8 field_0x8e; + u8 field_0x8f; + u8 field_0x90; + u8 field_0x91; + u8 field_0x92; + u8 field_0x93; + u8 field_0x94; + u8 field_0x95; + u8 field_0x96; + u8 field_0x97; + u8 field_0x98; + u8 field_0x99; + u8 field_0x9a; + u8 field_0x9b; + u8 field_0x9c; + u8 field_0x9d; + u8 field_0x9e; + u8 field_0x9f; + u8 field_0xa0; + u8 field_0xa1; + u8 field_0xa2; + u8 field_0xa3; + u8 field_0xa4; + u8 field_0xa5; + u8 field_0xa6; + u8 field_0xa7; + u8 field_0xa8; + u8 field_0xa9; + u8 field_0xaa; + u8 field_0xab; + u8 field_0xac; + u8 field_0xad; + u8 field_0xae; + u8 field_0xaf; + u8 field_0xb0; + u8 field_0xb1; + u8 field_0xb2; + u8 field_0xb3; + u8 field_0xb4; + u8 field_0xb5; + u8 field_0xb6; + u8 field_0xb7; + u8 field_0xb8; + u8 field_0xb9; + u8 field_0xba; + u8 field_0xbb; + u8 field_0xbc; + u8 field_0xbd; + u8 field_0xbe; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class dEvt_control_c { +public: + /* 80041580 */ dEvt_control_c(); + /* 800415D8 */ void orderOld(u16, u16, u16, u16, void*, void*, void const*); + /* 80041668 */ void order(u16, u16, u16, u16, void*, void*, s16, u8); + /* 80041804 */ void setParam(dEvt_order_c*); + /* 80041934 */ void beforeFlagProc(dEvt_order_c*); + /* 80041964 */ void afterFlagProc(dEvt_order_c*); + /* 800419A8 */ void commonCheck(dEvt_order_c*, u16, u16); + /* 80041A20 */ void talkCheck(dEvt_order_c*); + /* 80041B58 */ void talkXyCheck(dEvt_order_c*); + /* 80041C90 */ void catchCheck(dEvt_order_c*); + /* 80041D34 */ void talkEnd(); + /* 80041DDC */ void demoCheck(dEvt_order_c*); + /* 80041F18 */ void demoEnd(); + /* 80041FA0 */ void potentialCheck(dEvt_order_c*); + /* 80042014 */ void doorCheck(dEvt_order_c*); + /* 8004212C */ void itemCheck(dEvt_order_c*); + /* 800421C0 */ void endProc(); + /* 80042254 */ void change(); + /* 800422C0 */ void entry(); + /* 80042518 */ void reset(void*); + /* 80042468 */ void reset(); + /* 800425B4 */ void clearSkipSystem(); + /* 8004290C */ void getSkipEventName(); + /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int); + /* 80042958 */ void setSkipZev(void*, char*); + /* 800429A8 */ void onSkipFade(); + /* 800429B4 */ void offSkipFade(); + /* 800429D4 */ void skipper(); + /* 80042BBC */ void Step(); + /* 80042FA8 */ void moveApproval(void*); + /* 8004316C */ void compulsory(void*, char const*, u16); + /* 800431E8 */ void remove(); + /* 80043278 */ void getStageEventDt(); + /* 80043280 */ void sceneChange(int); + /* 800432C8 */ void getPId(void*); + /* 800432EC */ void convPId(unsigned int); + /* 8004331C */ void getStbDemoData(char*); + /* 80043500 */ void searchMapEventData(u8, s32); + /* 800434D8 */ void searchMapEventData(u8); + /* 8004360C */ void runningEventID(s16); + /* 8004362C */ void setPt1(void*); + /* 8004365C */ void setPt2(void*); + /* 8004368C */ void setPtT(void*); + /* 800436BC */ void setPtI(void*); + /* 800436EC */ void setPtI_Id(unsigned int); + /* 800436F4 */ void setPtD(void*); + /* 80043724 */ void setGtItm(u8); + +private: + /* 0x000 */ u8 field_0x0[4]; + /* 0x004 */ dEvt_order_c event_order; + /* 0x0C4 */ int mPt1; + /* 0x0C8 */ int mPt2; + /* 0x0CC */ int mPtT; + /* 0x0D0 */ int mPtI; + /* 0x0D4 */ int mPtd; + /* 0x0D8 */ u16 mEventFlag; + /* 0x0DA */ u16 mFlag2; + /* 0x0DC */ u16 mHindFlag; + /* 0x0DE */ u16 field_0xde; + /* 0x0E0 */ u16 field_0xe0; + /* 0x0E2 */ u8 field_0xe2; + /* 0x0E3 */ u8 field_0xe3; + /* 0x0E4 */ u8 mMode; + /* 0x0E5 */ u8 field_0xe5; + /* 0x0E6 */ u8 field_0xe6; + /* 0x0E7 */ u8 field_0xe7; + /* 0x0E8 */ u8 field_0xe8; + /* 0x0E9 */ u8 mDebugStb; + /* 0x0EA */ u8 field_0xea; + /* 0x0EB */ u8 mMapToolId; + /* 0x0EC */ u8 field_0xec; + /* 0x0ED */ u8 field_0xed; + /* 0x0EE */ u8 mPreItemNo; + /* 0x0EF */ u8 mGtItm; + /* 0x0F0 */ float mCullRate; + /* 0x0F4 */ int mStageEventDt; + /* 0x0F8 */ int mChangeOK; + /* 0x0FC */ u8 field_0xfc[20]; + /* 0x110 */ bool mSkipFade; + /* 0x114 */ char mSkipEventName[0x14]; + /* 0x128 */ u8 mCompulsory; + /* 0x129 */ u8 field_0x129; + /* 0x12C */ int field_0x12c; +}; +#pragma pack(pop) + #endif /* D_EVENT_D_EVENT_H */ diff --git a/include/d/event/d_event_data.h b/include/d/event/d_event_data.h index 67d70995c2..71383da85f 100644 --- a/include/d/event/d_event_data.h +++ b/include/d/event/d_event_data.h @@ -1,6 +1,62 @@ #ifndef D_EVENT_D_EVENT_DATA_H #define D_EVENT_D_EVENT_DATA_H +#include "d/d_stage.h" +#include "d/save/d_save.h" #include "dolphin/types.h" +struct dEvDtStaff_c { + /* 80043FD8 */ void specialProc_WaitStart(int); + /* 8004403C */ void specialProc_WaitProc(int); + /* 80044080 */ void specialProc(); + /* 80044134 */ void init(); + /* 80044170 */ void advanceCut(int); + /* 80044190 */ void specialProcLight(); + /* 80044324 */ void specialProcMessage(); + /* 80044A58 */ void specialProcSound(); + /* 80044CB8 */ void specialProcCreate(); + /* 80044EE4 */ void specialProcDirector(); + /* 80045878 */ void specialProcPackage(); + /* 80045AFC */ void specialProcTimekeeper(); + /* 80045C34 */ void specialProcEffect(); +}; + +struct dEvDtEvent_c { + /* 80043E78 */ void finishCheck(); + /* 80043EFC */ void forceFinish(); + /* 80043F70 */ void specialStaffProc(dEvDtStaff_c*); +}; + +class dEvDtFlag_c { +public: + /* 80043D60 */ void flagCheck(int); + /* 80043DC8 */ void flagSet(int); + /* 80043E30 */ void flagMaxCheck(int); + /* 80043E58 */ void init(); + +private: + u8 field_0x0[320]; +}; +#pragma pack(push, 1) +class dEvDtBase_c { +public: + dEvDtBase_c(); + /* 80046138 */ void init(); + /* 8004616C */ void init(char*, int); + /* 8004628C */ void advanceCut(dEvDtEvent_c*); + /* 800462FC */ void advanceCutLocal(dEvDtStaff_c*); + +private: + u32 field_0x0; + u32 field_0x4; + u32 field_0x8; + u32 field_0xc; + u32 field_0x10; + u32 field_0x14; + u32 field_0x18; + u32 field_0x1c; + u32 field_0x20; +}; +#pragma pack(pop) + #endif /* D_EVENT_D_EVENT_DATA_H */ diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h index db13164478..e9d571a819 100644 --- a/include/d/event/d_event_manager.h +++ b/include/d/event/d_event_manager.h @@ -1,6 +1,90 @@ #ifndef D_EVENT_D_EVENT_MANAGER_H #define D_EVENT_D_EVENT_MANAGER_H +#include "d/event/d_event_data.h" #include "dolphin/types.h" +struct dEvDtData_c {}; + +#pragma pack(push, 1) +class dEvent_exception_c { +public: + /* 800463DC */ void init(); + /* 800463F0 */ void setStartDemo(int); + /* 80046480 */ void getEventName(); + +private: + u32 field_0x0; + u8 field_0x4; + u8 field_0x5; + u8 field_0x6; + u8 field_0x7; + u32 field_0x8; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +struct dEvent_manager_c { + /* 800465E8 */ void getSubstance(dEvDtData_c*, int); + /* 80046688 */ dEvent_manager_c(); + /* 80046710 */ void create(); + /* 80046800 */ void setObjectArchive(char*); + /* 80046888 */ void demoInit(); + /* 80046904 */ void roomInit(int); + /* 800469EC */ void roomFinish(int); + /* 80046A58 */ void orderStartDemo(); + /* 80046C0C */ void remove(); + /* 80046CB8 */ void startProc(dEvDtEvent_c*); + /* 80046DA0 */ void closeProc(dEvDtEvent_c*); + /* 80046DAC */ void endProc(s16, int); + /* 80046E64 */ void Sequencer(); + /* 800473FC */ void Experts(); + /* 800474BC */ void getEventData(s16); + /* 80047454 */ void getEventData(s16, int); + /* 80047514 */ void getEventIdx(char const*, u8, s32); + /* 80047698 */ void getEventIdx(fopAc_ac_c*, u8); + /* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8); + /* 80047930 */ void isMapToolCamera(u8, s32); + /* 80047984 */ void order(s16); + /* 800479F8 */ void startCheck(s16); + /* 80047A38 */ void startCheckOld(char const*); + /* 80047A78 */ void endCheck(s16); + /* 80047ADC */ void endCheckOld(char const*); + /* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int); + /* 80047D4C */ void getIsAddvance(int); + /* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int); + /* 80047F5C */ void getMyNowCutName(int); + /* 80047FC8 */ void getMyDataP(int, char const*, int); + /* 800480EC */ void getMySubstanceP(int, char const*, int); + /* 80048144 */ void getMySubstanceNum(int, char const*); + /* 8004817C */ void cutEnd(int); + /* 800481F4 */ void getEventPrio(fopAc_ac_c*, s16); + /* 800482CC */ void issueStaff(char const*); + /* 80048348 */ void cancelStaff(char const*); + /* 800483C4 */ void setGoal(cXyz*); + /* 800483E0 */ void getGoal(); + /* 800483E8 */ void getRunEventName(); + /* 80048520 */ void specialCast_Shutter(s16, int); + /* 80048618 */ void specialCast(char const*, int); + /* 800487F0 */ void ChkPresentEnd(); + /* 8004882C */ void checkStartDemo(); + + /* 0x0000 */ dEvDtBase_c event_data_base[11]; + /* 0x018C */ u32 field_0x18c; + /* 0x0190 */ u32 field_0x190; + /* 0x0194 */ u8 field_0x194[0x8]; + /* 0x019C */ cXyz goal; + /* 0x01A8 */ u8 field_0x1A8[4]; + /* 0x01AA */ u16 field_0x1aa; + /* 0x01AC */ u8 field_0x1ac[0x8]; + /* 0x01B4 */ dEvent_exception_c event_exception; + /* 0x01C0 */ cXyz position; + /* 0x01CC */ u8 field_0x1cc[0x14]; + /* 0x01E0 */ dEvDtFlag_c event_data_flag; + /* 0x0320 */ u8 field_0x320[0x35C]; + /* 0x067C */ void* vtable; + /* 0x0680 */ u8 field_0x680[0x3C]; +}; +#pragma pack(pop) + #endif /* D_EVENT_D_EVENT_MANAGER_H */ diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index bd4295b3d1..485852dcbe 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -2,5 +2,203 @@ #define D_METER_D_METER2_INFO_H #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +//#include "JSystem/JUtility/JUTFont.h" + +struct dSv_event_flag_c { + static u8 saveBitLabels[1644 + 4 /* padding */]; +}; + +struct dMsgObject_c { + /* 802384C4 */ void setLetterNameID(u16); +}; + +struct dMsgFlow_c { + /* 80249F00 */ dMsgFlow_c(); + /* 80249F48 */ ~dMsgFlow_c(); + /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**); + /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int); + /* 8024A538 */ void getMsgNo(); +}; + +class dMeterMap_c { +public: + /* 8020D900 */ bool isMapOpenCheck(); +}; + +struct J2DPicture {}; + +struct JMSMesgEntry_c {}; + +struct J2DTextBox { + /* 8021C7F4 */ void getFont() const; +}; + +struct JUTFont {}; + +struct dMenu_Letter { + static u8 letter_data[512]; +}; + +struct dItem_data { + static void* item_resource[1530]; +}; + +struct CPaneMgr {}; + +class dMeter2_c {}; + +class dMw_c {}; + +struct ResTIMG {}; + +struct JKRArchive { + /* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*); + /* 802D5ECC */ void readIdxResource(void*, u32, u32); +}; + +class dMeter2Info_c { +public: + class WarpInfo_c { + public: + /* 0x00 */ char mStageName[8]; + /* 0x08 */ cXyz mPosition; + /* 0x14 */ s16 mAngle; + /* 0x16 */ u8 mRoomNo; + /* 0x17 */ u8 unk79; + /* 0x18 */ u8 mWarpPlayerNo; + }; + + dMeter2Info_c(); + virtual ~dMeter2Info_c(); + void init(void); + void setFloatingMessage(u16, s16, bool); + void setFloatingFlow(u16, s16, bool); + int isFloatingMessageVisible(void); + int decFloatingMessageTimer(void); + void resetFloatingMessage(void); + void decMsgKeyWaitTimer(void); + void getString(u32, char*, JMSMesgEntry_c*); // define JMSMesgEntry + void getStringKana(u32, char*, JMSMesgEntry_c*); + void getStringKanji(u32, char*, JMSMesgEntry_c*); + double getStringLength(J2DTextBox*, char*); // define J2DTextBox + dMeter2Info_c* getStringLength(JUTFont*, float, float, char*); + void onDirectUseItem(int); + bool isDirectUseItem(int); + int setMeterString(s32); + void resetWarpStatus(void); + void warpInProc(void); + void warpOutProc(void); + void resetMeterString(void); + void setWarpInfo(const char*, const cXyz&, s16, u8, u8, u8); + u8 getItemType(u8); + u8 readItemTexture(u8, void*, J2DPicture*, void*, J2DPicture*, void*, J2DPicture*, void*, + J2DPicture*, int); // define J2DPicture + void setItemColor(u8, J2DPicture*, J2DPicture*, J2DPicture*, J2DPicture*); + s8 get2ndTexture(u8); + s8 get3rdTexture(u8); + s8 get4thTexture(u8); + void set1stColor(u8, J2DPicture*); + void set2ndColor(u8, J2DPicture*); + void set3rdColor(u8, J2DPicture*); + void set4thColor(u8, J2DPicture*); + void setHotSpringTimer(u8); + void decHotSpringTimer(void); + void changeWater(u8); + void setMiniGameItem(u8); + void resetMiniGameItem(bool); + void setMiniGameCount(s8); + void setSaveStageName(const char*); + u8& getDirectUseItem() { return mDirectUseItem; } + dMeterMap_c* getMeterMapClass() { return mMeterMap; } + +private: + /* 0x04 */ u8 unk4[4]; + /* 0x08 */ u32 unk8; + /* 0x0C */ u32 unk12; + /* 0x10 */ void* mMsgResource; + /* 0x14 */ void* mStageMsgResource; + /* 0x18 */ void* mMsgUnitResource; + /* 0x1C */ dMeter2_c* mMeterClass; + /* 0x20 */ dMeterMap_c* mMeterMap; + /* 0x24 */ dMw_c* mMenuWindowClass; + /* 0x28 */ CPaneMgr* mMeterItemPanePtr[4]; + /* 0x38 */ WarpInfo_c mWarpInfo; + /* 0x54 */ float unk84; + /* 0x58 */ float unk88; + /* 0x5C */ float unk92; + /* 0x60 */ float unk96; + /* 0x64 */ float unk100; + /* 0x68 */ float unk104; + /* 0x6C */ float unk108; + /* 0x70 */ float m2DWidth; + /* 0x74 */ float m2DHeight; + /* 0x78 */ float m2DPosH; + /* 0x7C */ float m2DPosV; + /* 0x80 */ float unk128; + /* 0x84 */ u32 mTimeMs; + /* 0x88 */ u32 mMsgTimeMs; + /* 0x8C */ u32 mMeterString; + /* 0x90 */ u32 mTempBits; + /* 0x94 */ s16 mMsgKeyWaitTimer; + /* 0x96 */ u16 mHorseLifeCount; + /* 0x98 */ u16 unk152; + /* 0x9A */ u16 mHotSpringTimer[4]; + /* 0xA2 */ u16 mSub2DStatus; + /* 0xA4 */ u16 mFloatingFlowID; + /* 0xA6 */ u16 mFloatingMessageID; + /* 0xA8 */ s16 mFloatingMessageTimer; + /* 0xAA */ u16 mMapKeyDirection; + /* 0xAC */ u16 mBlinkButton; + /* 0xAE */ u16 mUseButton; + /* 0xB0 */ u16 mGameStatus; + /* 0xB2 */ u16 mTouchKeyCheck; + /* 0xB4 */ u16 mWindowAccept; + /* 0xB6 */ u16 mOilGaugeBackUp; + /* 0xB8 */ u8 mDirectUseItem; + /* 0xB9 */ u8 mWindowStatus; + /* 0xBA */ u8 unk186; + /* 0xBB */ u8 mMaxCount; + /* 0xBC */ u8 mNowCount; + /* 0xBD */ u8 mShopTalkFlag; + /* 0xBE */ u8 unk190; + /* 0xBF */ u8 mMapStatus; + /* 0xC0 */ u8 mWarpStatus; + /* 0xC1 */ u8 mPauseStatus; + /* 0xC2 */ u8 mGameOverType; + /* 0xC3 */ u8 mInsectSelectType; + /* 0xC4 */ u32 unk196; + /* 0xC8 */ u32 unk200; + /* 0xCC */ u8 unk204; + /* 0xCD */ u8 unk205; + /* 0xCE */ u8 unk206; + /* 0xCF */ u8 unk207; + /* 0xD0 */ f64 unk208; + /* 0xD8 */ u8 unk216; + /* 0xD9 */ u8 unk217; + /* 0xDA */ u8 unk218; + /* 0xDB */ u8 unk219; + /* 0xDC */ u8 mRentalBombBag; + /* 0xDD */ u8 mMiniGameItemSetFlag; + /* 0xDE */ u8 mMiniGameCount; + /* 0xDF */ u8 mCollectCursorPosX; + /* 0xE0 */ u8 mCollectCursorPosY; + /* 0xE1 */ u8 mTableMapRegionNo; + /* 0xE2 */ u8 mGoldWolfMapType; + /* 0xE3 */ u8 mLightDropGetFlag[3]; + /* 0xE6 */ u8 mLifeGaugeSE; + /* 0xE7 */ u8 unk231; + /* 0xE8 */ u8 mItemExplainWindowStatus; + /* 0xE9 */ char mSaveStageName[8]; + /* 0xF1 */ u8 mFloatingMessageWakuVisible; + /* 0xF2 */ u8 mMapDrugFlag; + /* 0xF3 */ u8 unk243[5]; +}; + +extern dMeter2Info_c g_meter2_info; + +inline dMeterMap_c* dMeter2Info_getMeterMapClass() { + return g_meter2_info.getMeterMapClass(); +} #endif /* D_METER_D_METER2_INFO_H */ diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index e43919d1bc..808ccba9da 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -1,6 +1,931 @@ #ifndef D_SAVE_D_SAVE_H #define D_SAVE_D_SAVE_H +#include "SSystem/SComponent/c_xyz.h" #include "dolphin/types.h" +#define DEFAULT_SELECT_ITEM_INDEX 0 +#define MAX_SELECT_ITEM 3 +#define MAX_EVENTS 256 +#define MAX_ITEM_SLOTS 24 +#define ITEM_XY_MAX_DUMMY 8 +#define LIGHT_DROP_STAGE 4 +#define LETTER_INFO_BIT 64 +#define BOMB_BAG_MAX 3 +#define BOTTLE_MAX 4 + +enum Wallets { WALLET, BIG_WALLET, GIANT_WALLET }; + +enum ItemSlots { + SLOT_0, + SLOT_1, + SLOT_2, + SLOT_3, + SLOT_4, + SLOT_5, + SLOT_6, + SLOT_7, + SLOT_8, + SLOT_9, + SLOT_10, + SLOT_11, + SLOT_12, + SLOT_13, + SLOT_14, + SLOT_15, + SLOT_16, + SLOT_17, + SLOT_18, + SLOT_19, + SLOT_20, + SLOT_21, + SLOT_22, + SLOT_23 +}; + +enum ItemTable { + HEART, + GREEN_RUPEE, + BLUE_RUPEE, + YELLOW_RUPEE, + RED_RUPEE, + PURPLE_RUPEE, + ORANGE_RUPEE, + SILVER_RUPEE, + S_MAGIC, + L_MAGIC, + BOMB_5, + BOMB_10, + BOMB_20, + BOMB_30, + ARROW_10, + ARROW_20, + ARROW_30, + ARROW_1, + PACHINKO_SHOT, + noentry1, + noentry2, + noentry3, + WATER_BOMB_5, + WATER_BOMB_10, + WATER_BOMB_20, + WATER_BOMB_30, + BOMB_INSECT_5, + BOMB_INSECT_10, + BOMB_INSECT_20, + BOMB_INSECT_30, + RECOVERY_FAILY, + TRIPLE_HEART, + SMALL_KEY, + KAKERA_HEART, + UTAWA_HEART, + MAP, + COMPUS, + DUNGEON_EXIT, + BOSS_KEY, + DUNGEON_BACK, + SWORD, + MASTER_SWORD, + WOOD_SHIELD, + SHIELD, + HYLIA_SHIELD, + TKS_LETTER, + WEARS_CASUAL, + WEAR_KOKIRI, + ARMOR, + WEAR_ZORA, + MAGIC_LV1, + DUNGEON_EXIT_2, + WALLET_LV1, + WALLET_LV2, + WALLET_LV3, + noentry4, + noentry5, + noentry6, + noentry7, + noentry8, + noentry9, + ZORAS_JEWEL, + HAWK_EYE, + WOOD_STICK, + BOOMERANG, + SPINNER, + IRONBALL, + BOW, + HOOKSHOT, + HVY_BOOTS, + COPY_ROD, + W_HOOKSHOT, + KANTERA, + LIGHT_SWORD, + FISHING_ROD_1, + PACHINKO, + COPY_ROD_2, + noentry10, + noentry11, + BOMB_BAG_LV2, + BOMB_BAG_LV1, + BOMB_IN_BAG, + noentry12, + LIGHT_ARROW, + ARROW_LV1, + ARROW_LV2, + ARROW_LV3, + noentry13, + LURE_ROD, + BOMB_ARROW, + HAWK_ARROW, + BEE_ROD, + JEWEL_ROD, + WORM_ROD, + JEWEL_BEE_ROD, + JEWEL_WORM_ROD, + EMPTY_BOTTLE, + RED_BOTTLE, + GREEN_BOTTLE, + BLUE_BOTTLE, + MILK_BOTTLE, + HALF_MILK_BOTTLE, + OIL_BOTTLE, + WATER_BOTTLE, + OIL_BOTTLE_2, + RED_BOTTLE_2, + UGLY_SOUP, + HOT_SPRING, + FAIRY, + HOT_SPRING_2, + OIL2, + OIL, + NORMAL_BOMB, + WATER_BOMB, + POKE_BOMB, + FAIRY_DROP, + WORM, + DROP_BOTTLE, + BEE_CHILD, + CHUCHU_RARE, + CHUCHU_RED, + CHUCHU_BLUE, + CHUCHU_GREEN, + CHUCHU_YELLOW, + CHUCHU_PURPLE, + LV1_SOUP, + LV2_SOUP, + LV3_SOUP, + LETTER, + BILL, + WOOD_STATUE, + IRIAS_PENDANT, + HORSE_FLUTE, + noentry14, + noentry15, + noentry16, + noentry17, + noentry18, + noentry19, + noentry20, + noentry21, + noentry22, + noentry23, + noentry24, + RAFRELS_MEMO, + ASHS_SCRIBBLING, + noentry25, + noentry26, + noentry27, + noentry28, + noentry29, + noentry30, + noentry31, + noentry32, + noentry33, + noentry34, + CHUCHU_YELLOW2, + OIL_BOTTLE3, + SHOP_BEE_CHILD, + CHUCHU_BLACK, + LIGHT_DROP, + DROP_CONTAINER, + DROP_CONTAINER02, + DROP_CONTAINER03, + FILLED_CONTAINER, + MIRROR_PIECE_2, + MIRROR_PIECE_3, + MIRROR_PIECE_4, + noentry35, + noentry36, + noentry37, + noentry38, + noentry39, + noentry40, + noentry41, + noentry42, + SMELL_YELIA_POUCH, + SMELL_PUMPKIN, + SMELL_POH, + SMELL_FISH, + SMELL_CHILDREN, + SMELL_MEDICINE, + noentry43, + noentry44, + noentry45, + noentry46, + noentry47, + noentry48, + noentry49, + noentry50, + noentry51, + noentry52, + M_BEETLE, + F_BEETLE, + M_BUTTERFLY, + F_BUTTERFLY, + M_STAG_BEETLE, + F_STAG_BEETLE, + M_GRASSHOPPER, + F_GRASSHOPPER, + M_NANAFUSHI, + F_NANAFUSHI, + M_DANGOMUSHI, + F_DANGOMUSHI, + M_MANTIS, + F_MANTIS, + M_LADYBUG, + F_LADYBUG, + M_SNAIL, + F_SNAIL, + M_DRAGONFLY, + F_DRAGONFLY, + M_ANT, + F_ANT, + M_MAYFLY, + F_MAYFLY, + noentry53, + noentry54, + noentry55, + noentry56, + noentry57, + noentry58, + noentry59, + noentry60, + POU_SPIRIT, + noentry61, + noentry62, + noentry63, + noentry64, + noentry65, + noentry66, + noentry67, + noentry68, + ANCIENT_DOCUMENT, + AIR_LETTER, + ANCIENT_DOCUMENT2, + LV7_DUNGEON_EXIT, + LINKS_SAVINGS, + SMALL_KEY2, + POU_FIRE1, + POU_FIRE2, + POU_FIRE3, + POU_FIRE4, + BOSSRIDER_KEY, + TOMATO_PUREE, + TASTE, + LV5_BOSS_KEY, + SURFBOARD, + KANTERA2, + L2_KEY_PIECES1, + L2_KEY_PIECES2, + L2_KEY_PIECES3, + KEY_OF_CARAVAN, + LV2_BOSS_KEY, + KEY_OF_FILONE, + NO_ITEM +}; + +enum EquipmentBits { CLOTHING_BITFIELD, SWORD_BITFIELD, SHIELD_BITFIELD }; + +enum Swords { ORDON_SWORD_FLAG, MASTER_SWORD_FLAG, WOODEN_SWORD_FLAG, LIGHT_SWORD_FLAG }; + +enum Shields { ORDON_SHIELD_FLAG, HYLIAN_SHIELD_FLAG, WOODEN_SHIELD_FLAG }; + +enum Armors { KOKIRI_CLOTHES_FLAG }; + +enum DungeonItem { MAP_FLAG, COMPASS_FLAG, BOSS_KEY_FLAG, OOCCOO_NOTE_FLAG = 6 }; + +enum AreaVessel { FARON_VESSEL, ELDIN_VESSEL, LANAYRU_VESSEL }; + +class dSv_player_status_a_c { +public: + void init(void); + void setSelectItemIndex(signed int, u8); + u8 getSelectItemIndex(signed int) const; + void setMixItemIndex(signed int, u8); + u8 getMixItemIndex(signed int) const; + u16 getRupeeMax(void) const; + int isMagicFlag(u8) const; + + u16& getMaxLife() { return mMaxHealth; } + u16& getLife() { return mCurrentHealth; } + u16& getRupee() { return mCurrentRupees; } + u16& getOil() { return mCurrentLanternOil; } + u8 getSelectEquip(int item) const { return mEquipment[item]; } + void setWalletLV(u8 lv) { mCurrentWallet = lv; } + void setOil(u16 oil) { mCurrentLanternOil = oil; } + void setMaxOil(u16 max) { mMaxLanternOil = max; } + void setWalletSize(u8 size) { mCurrentWallet = size; } + void setMagic(u8 magic) { mCurrentMagic = magic; } + void setMaxMagic(u8 max) { mMaxMagic = max; } + void setRupee(u16 rupees) { mCurrentRupees = rupees; } + void setLife(u16 life) { mCurrentHealth = life; } + void setMaxLife(u8 max) { mMaxHealth = max; } + void setSelectEquip(int item_index, u8 item) { mEquipment[item_index] = item; } + +private: + u16 mMaxHealth; + u16 mCurrentHealth; + u16 mCurrentRupees; + u16 mMaxLanternOil; + u16 mCurrentLanternOil; + u8 unk10; + u8 mSelectItem[3]; + u8 mMixItem[3]; + u8 unk17; + u8 unk18; + u8 mEquipment[6]; + u8 mCurrentWallet; + u8 mMaxMagic; + u8 mCurrentMagic; + u8 mMagicFlag; + u8 unk29; + u8 unk30; + u8 unk31[3]; + u8 padding[6]; +}; + +class dSv_player_status_b_c { +public: + void init(void); + void onDarkClearLV(int); + BOOL isDarkClearLV(int) const; + void onTransformLV(int); + BOOL isTransformLV(int) const; + +private: + u32 unk0; + u32 unk4; + u8 mTransformLevelFlag; + u8 mDarkClearLevelFlag; + u8 unk10; + u8 unk11; + float mTimeOfDay; + u16 unk16; + u8 unk18[3]; + u8 padding[3]; +}; + +class dSv_horse_place_c { +public: + void init(void); + void set(const char*, const cXyz&, s16, s8); + +private: + cXyz mPosition; + u16 mXRotation; + char mCurrentStage[8]; + u8 mSpawnId; + u8 mRoomId; +}; + +class dSv_player_return_place_c { +public: + void init(void); + void set(const char*, s8, u8); + +private: + char mCurrentStage[8]; + u8 mSpawnId; + u8 mRoomId; + u8 unk10; + u8 unk11; +}; + +class dSv_player_field_last_stay_info_c { +public: + void init(void); + BOOL isRegionBit(int unk) const; + void onRegionBit(int unk); + void set(const char*, const cXyz&, s16, s8, u8); + +private: + cXyz mLastPosition; + s16 mLastAngle; + char mLastStage[8]; + u8 mLastSpawnId; + u8 mLastRoomId; + u8 unk24; + u8 mLastRegion; + u8 unk26[2]; +}; + +class dSv_player_last_mark_info_c { +public: + void init(void); + void setWarpItemData(const char*, const cXyz&, s16, s8, u8, u8); + + const char* getName(void) { return mOoccooStage; } + cXyz getPos(void) { return mOoccooPosition; } + s16 getAngleY(void) { return mOoccooXRotation; } + s8 getRoomNo(void) { return mOoccooRoomId; } + char getWarpAcceptStage(void) { return mWarpAcceptStage; } + +private: + cXyz mOoccooPosition; + s16 mOoccooXRotation; + char mOoccooStage[8]; + u8 mOoccooSpawnId; + s8 mOoccooRoomId; + char mWarpAcceptStage; + u8 unk25[3]; +}; + +class dSv_player_item_c { +public: + void init(void); + void setItem(int, u8); + u8 getItem(int, bool) const; + void setLineUpItem(void); + u8 getLineUpItem(int) const; + void setBottleItemIn(u8, u8); + void setEmptyBottleItemIn(u8); + void setEmptyBottle(void); + void setEmptyBottle(u8); + void setEquipBottleItemIn(u8, u8); + void setEquipBottleItemEmpty(u8); + u8 checkBottle(u8); + int checkInsectBottle(void); + u8 checkEmptyBottle(void); + void setBombBagItemIn(u8, u8, bool); + void setBombBagItemIn(u8, u8, u8, bool); + void setEmptyBombBagItemIn(u8, bool); + void setEmptyBombBagItemIn(u8, u8, bool); + void setEmptyBombBag(void); + void setEmptyBombBag(u8, u8); + u8 checkBombBag(u8); + void setWarashibeItem(u8); + void setRodTypeLevelUp(void); + void setBaitItem(u8); + +private: + u8 mItems[24]; + u8 mItemSlots[24]; +}; + +class dSv_player_get_item_c { +public: + void init(void); + void onFirstBit(u8); + void offFirstBit(u8); + int isFirstBit(u8) const; + +private: + u32 mPauseMenuBitFields[4]; + u8 padding[16]; +}; + +class dSv_player_item_record_c { +public: + void init(void); + void setBombNum(u8, u8); + u8 getBombNum(u8) const; + void setBottleNum(u8, u8); + u8 addBottleNum(u8, s16); + u8 getBottleNum(u8) const; + + void setArrowNum(u8 amount) { mBow = amount; } + +private: + u8 mBow; + u8 mBombBags[3]; + u8 mBottles[4]; + u8 mSlingshot; + u8 unk5[3]; +}; + +class dSv_player_item_max_c { +public: + void init(void); + void setBombNum(u8, u8); + u8 getBombNum(u8) const; + + void setArrowNum(u8 max) { mItemCapacities[0] = max; } + u8 getArrowNum() { return mItemCapacities[0]; } + +private: + u8 mItemCapacities[8]; +}; + +class dSv_player_collect_c { +public: + void init(void); + void setCollect(int, u8); + BOOL isCollect(int, u8) const; + void onCollectCrystal(u8); + BOOL isCollectCrystal(u8) const; + void onCollectMirror(u8); + BOOL isCollectMirror(u8) const; + + u8 getPohNum() { return mPoeCount; } + +private: + u8 unk0[8]; + u8 unk8; + u8 mCrystal; + u8 mMirror; + u8 unk11; + u8 mPoeCount; + u8 padding[3]; +}; + +class dSv_player_wolf_c { +public: + void init(void); + +private: + u8 unk0[3]; + u8 unk3; +}; + +class dSv_light_drop_c { +public: + void init(void); + void setLightDropNum(u8, u8); + u8 getLightDropNum(u8) const; + void onLightDropGetFlag(u8); + BOOL isLightDropGetFlag(u8) const; + +private: + u8 mLightDropCounts[4]; + u8 mLightDropGetFlag; + u8 unk5[3]; +}; + +class dSv_letter_info_c { +public: + void init(void); + void onLetterGetFlag(int); + BOOL isLetterGetFlag(int) const; + void onLetterReadFlag(int); + int isLetterReadFlag(int) const; + +private: + u32 mLetterGetBitfields[2]; + u32 mLetterReadBitfields[2]; + u8 unk16[64]; +}; + +class dSv_fishing_info_c { +public: + void init(void); + void addFishCount(u8); // merged with init in the assembly + +private: + u16 mFishCount[16]; + u8 unk32[16]; + u8 padding[4]; +}; + +class dSv_player_info_c { +public: + void init(void); + char* getLinkName() { return (char*)link_name; } + +private: + u32 unk0; + u32 unk4; + u32 unk8; + u32 unk12; + u16 unk16; + u16 unk18; + u8 link_name[16]; + u8 unk36; + u8 epona_name[16]; + u8 unk53; + u8 unk54; + u8 unk55[5]; + u8 padding[4]; +}; + +class dSv_player_config_c { +public: + void init(void); + u32 checkVibration(void) const; + u8 getSound(void); + void setSound(u8); + u8 getVibration(void); + void setVibration(u8); + +private: + u8 unk0; + u8 mSoundMode; + u8 unk2; + u8 mVibrationStatus; + u8 unk4; + u8 unk5; + u16 unk6; + u8 unk8; + u8 unk9; + u8 unk10; + u8 unk11; + u8 padding[4]; +}; + +class dSv_player_c { +public: + void init(void); + dSv_player_info_c& getPlayerInfo() { return mPlayerInfo; } + dSv_player_status_a_c& getPlayerStatusA() { return player_status_a; } + dSv_player_item_c& getPlayerItem() { return player_item; } + dSv_player_collect_c& getPlayerCollect() { return player_collect; } + dSv_player_item_record_c& getPlayerItemRecord() { return player_item_record; } + dSv_player_item_max_c& getPlayerItemMax() { return player_item_max; } + dSv_player_last_mark_info_c& getPlayerLastMarkInfo() { return player_last_mark; } + dSv_light_drop_c& getLightDrop() { return light_drop; } + dSv_player_get_item_c& getPlayerGetItem() { return player_get_item; } + + void setPlayerStatusAWalletLV(u8 lv) { player_status_a.setWalletLV(lv); } + +private: + dSv_player_status_a_c player_status_a; + dSv_player_status_b_c player_status_b; + dSv_horse_place_c horse_place; + dSv_player_return_place_c player_return; + dSv_player_field_last_stay_info_c player_last_field; + dSv_player_last_mark_info_c player_last_mark; + dSv_player_item_c player_item; + dSv_player_get_item_c player_get_item; + dSv_player_item_record_c player_item_record; + dSv_player_item_max_c player_item_max; + dSv_player_collect_c player_collect; + dSv_player_wolf_c player_wolf; + dSv_light_drop_c light_drop; + dSv_letter_info_c letter_info; + dSv_fishing_info_c fishing_info; + dSv_player_info_c mPlayerInfo; + dSv_player_config_c player_config; +}; + +#pragma pack(push, 1) +class dSv_memBit_c { +public: + void init(void); + void onTbox(int); + void offTbox(int); + BOOL isTbox(int) const; + void onSwitch(int); + void offSwitch(int); + BOOL isSwitch(int) const; + BOOL revSwitch(int); + void onItem(int); + BOOL isItem(int) const; + void onDungeonItem(int); + bool isDungeonItem(int) const; + + u8 getKeyNum() { return small_key_flags; } + void onDungeonItemMap() { onDungeonItem(MAP_FLAG); } + bool isDungeonItemMap() const { return isDungeonItem(MAP_FLAG); } + void onDungeonItemCompass() { onDungeonItem(COMPASS_FLAG); } + void onDungeonItemWarp() { onDungeonItem(OOCCOO_NOTE_FLAG); } + void onDungeonItemBossKey() { onDungeonItem(BOSS_KEY_FLAG); } + bool isDungeonItemBossKey() const { return isDungeonItem(BOSS_KEY_FLAG); } + +private: + u32 area_flags_bitfields1[2]; + u32 area_flags_bitfields2[4]; + u32 rupee_flags_bitfields; + u8 small_key_flags; + u8 dungeons_flags; +}; +#pragma pack(pop) + +class dSv_event_c { +public: + void init(void); + void onEventBit(u16); + void offEventBit(u16); + int isEventBit(u16) const; + void setEventReg(u16, u8); + u8 getEventReg(u16) const; + +private: + u8 events[256]; +}; + +class dSv_MiniGame_c { +public: + void init(void); + +private: + u8 unk0; + u8 unk1[3]; + u32 unk4; + u32 unk8; + u32 unk12; + u32 unk16; + u32 unk20; +}; + +class dSv_memory_c { +public: + dSv_memory_c(void); // the assembly for this is in d_com_inf_game.s + void init(void); + dSv_memBit_c& getTempFlags() { return temp_flags; } + const dSv_memBit_c& getTempFlagsConst() const { return temp_flags; } + +private: + dSv_memBit_c temp_flags; + u8 padding30[2]; +}; + +class dSv_memory2_c { +public: + dSv_memory2_c(void); // the assembly for this is in d_com_inf_game.s + void init(void); + void onVisitedRoom(int); + void offVisitedRoom(int); + BOOL isVisitedRoom(int); + +private: + u32 unk0[2]; +}; + +class dSv_danBit_c { +public: + bool init(s8); + void onSwitch(int); + void offSwitch(int); + BOOL isSwitch(int) const; + BOOL revSwitch(int); + void onItem(int); + BOOL isItem(int) const; + +private: + s8 mStageNum; + u8 unk1; + u8 unk2[2]; + u32 switch_bitfield[2]; + u32 item_bitfield[4]; + s16 unk28[16]; +}; + +class dSv_zoneBit_c { +public: + void init(void); + void clearRoomSwitch(void); + void clearRoomItem(void); + void onSwitch(int); + void offSwitch(int); + BOOL isSwitch(int) const; + BOOL revSwitch(int); + void onOneSwitch(int); + void offOneSwitch(int); + BOOL isOneSwitch(int) const; + BOOL revOneSwitch(int); + void onItem(int); + BOOL isItem(int) const; + void onOneItem(int); + BOOL isOneItem(int) const; + +private: + u16 switch_bitfield[2]; + u16 room_switch; + u16 item_bitfield[2]; + u16 room_item; + u16 unk12; +}; + +class dSv_zoneActor_c { +public: + void init(void); + void on(int); + void off(int); + BOOL is(int) const; + + static const int ACTOR_MAX = 0xFFFF; + +private: + u32 actor_bitfield[4]; +}; + +class dSv_zone_c { +public: + dSv_zone_c(void); // the assembly for this is in d_com_inf_game.s + void init(int); + dSv_zoneBit_c& getZoneBit() { return zone_bit; } + const dSv_zoneBit_c& getZoneBitConst() const { return zone_bit; } + dSv_zoneActor_c& getZoneActor() { return zone_actor; } + const dSv_zoneActor_c& getZoneActorConst() const { return zone_actor; } + + s8& getUnk0() { return unk0; } + +private: + s8 unk0; + u8 unk1; + dSv_zoneBit_c zone_bit; + dSv_zoneActor_c zone_actor; +}; + +class dSv_restart_c { +public: + void setRoom(const cXyz&, s16, s8); + +private: + u8 unk0; + u8 unk1[5]; + s16 mXRotation; + cXyz mPosition; + u8 padding20[16]; +}; + +class dSv_turnRestart_c { +public: + void set(const cXyz&, s16, s8, u32); + +private: + cXyz mPosition; + u32 unk12; + s16 mXRotation; + s8 unk18; +}; + +class dSv_reserve_c { +public: +private: + u8 unk[80]; +}; + +class dSv_save_c { +public: + void init(void); + dSv_memory2_c* getSave2(int); + dSv_player_c& getPlayer() { return player; } + dSv_player_status_a_c& getPlayerStatusA() { return player.getPlayerStatusA(); } + dSv_player_get_item_c& getPlayerGetItem() { return player.getPlayerGetItem(); } + dSv_player_item_record_c& getPlayerItemRecord() { return player.getPlayerItemRecord(); } + dSv_player_item_max_c& getPlayerItemMax() { return player.getPlayerItemMax(); } + dSv_player_last_mark_info_c& getPlayerLastMarkInfo() { return player.getPlayerLastMarkInfo(); } + dSv_player_item_c& getPlayerItem() { return player.getPlayerItem(); } + dSv_player_collect_c& getPlayerCollect() { return player.getPlayerCollect(); } + dSv_light_drop_c& getLightDrop() { return player.getLightDrop(); } + dSv_event_c& getEventFlags() { return event_flags; } + + void setPlayerStatusAWallet(u8 lv) { player.setPlayerStatusAWalletLV(lv); } + + static const int STAGE_MAX = 4; + +private: + dSv_player_c player; + dSv_memory_c area_flags[32]; + dSv_memory2_c unk_flags[64]; + dSv_event_c event_flags; + dSv_reserve_c reserve; + dSv_MiniGame_c minigame_flags; +}; +#pragma pack(push, 1) +class dSv_info_c { +public: + void init(void); + void getSave(int); + void putSave(int); + void initZone(void); + u32 createZone(int); + void onSwitch(int, int); + void offSwitch(int, int); + BOOL isSwitch(int, int) const; + BOOL revSwitch(int, int); + void onItem(int, int); + BOOL isItem(int, int) const; + void onActor(int, int); + void offActor(int, int); + BOOL isActor(int, int) const; + void memory_to_card(char*, int); + void card_to_memory(char*, int); + void initdata_to_card(char*, int); + + dSv_save_c& getSaveFile() { return save_file; } + dSv_memory_c& getMemory() { return memory; } + dSv_zone_c* getZones() { return zones; } + dSv_player_c& getPlayer() { return save_file.getPlayer(); } + dSv_event_c& getEvent() { return events; } + +private: + /* 0x000 */ dSv_save_c save_file; + /* 0x958 */ dSv_memory_c memory; + /* 0x978 */ dSv_danBit_c dungeon_bit; + /* 0x9B4 */ dSv_zone_c zones[32]; + /* 0xDB4 */ dSv_restart_c restart; + /* 0xDD8 */ dSv_event_c events; + /* 0xED8 */ dSv_turnRestart_c turn_restart; +}; +#pragma pack(pop) + #endif /* D_SAVE_D_SAVE_H */ diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index 2f2bbfb6e0..75bd5ac4aa 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -3,4 +3,25 @@ #include "dolphin/types.h" +struct _GXColor { + void operator=(const _GXColor& rhs) { + r = rhs.r; + g = rhs.g; + b = rhs.b; + a = rhs.a; + } + + u8 r; + u8 g; + u8 b; + u8 a; +}; + +struct GXColorS10 { + s16 r; + s16 g; + s16 b; + s16 a; +}; + #endif /* GXTEXTURE_H */ diff --git a/include/dolphin/mtx/vec.h b/include/dolphin/mtx/vec.h index 2d959e4bd7..3234768cf8 100644 --- a/include/dolphin/mtx/vec.h +++ b/include/dolphin/mtx/vec.h @@ -3,4 +3,14 @@ #include "dolphin/types.h" +struct Vec { + float x, y, z; + float GetX() const { return x; } + float GetY() const { return y; } + float GetZ() const { return z; } + float getXDiff(const Vec* other) const { return x - other->x; } + float getYDiff(const Vec* other) const { return y - other->y; } + float getZDiff(const Vec* other) const { return z - other->z; } +}; + #endif /* VEC_H */ diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index e6a3b3971a..84640448e0 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -1,6 +1,118 @@ #ifndef M_DO_M_DO_EXT_H #define M_DO_M_DO_EXT_H +#include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "dolphin/types.h" +struct J3DModelData {}; + +struct J3DModel { + /* 80327100 */ void initialize(); + /* 80327184 */ void entryModelData(J3DModelData*, u32, u32); + /* 803275FC */ void newDifferedDisplayList(u32); + /* 8032767C */ void lock(); + /* 803276B4 */ void unlock(); + /* 803279A0 */ void diff(); +}; + +struct J3DMaterialTable; +struct J3DAnmTextureSRTKey { + /* 8032B0C0 */ void searchUpdateMaterialID(J3DMaterialTable*); +}; + +struct J3DAnmTexPattern { + /* 8032B004 */ void searchUpdateMaterialID(J3DMaterialTable*); +}; + +struct J3DAnmTevRegKey { + /* 8032B780 */ void searchUpdateMaterialID(J3DMaterialTable*); +}; + +struct J3DAnmColor { + /* 8032A8A4 */ void searchUpdateMaterialID(J3DMaterialTable*); +}; + +struct J3DMaterialTable { + /* 8032FAF4 */ void entryMatColorAnimator(J3DAnmColor*); + /* 8032FBC8 */ void entryTexNoAnimator(J3DAnmTexPattern*); + /* 8032FCC4 */ void entryTexMtxAnimator(J3DAnmTextureSRTKey*); + /* 8032FE70 */ void entryTevRegAnimator(J3DAnmTevRegKey*); +}; + +struct J3DAnmTransform {}; + +#pragma pack(push, 1) +class mDoExt_baseAnm { +public: + /* 8000D320 */ void initPlay(s16, int, f32, s16, s16); + /* 8000D428 */ void play(); + +private: + J3DFrameCtrl frame_control; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class mDoExt_btkAnm { +public: + mDoExt_btkAnm(void); + /* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); + /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); + +private: + mDoExt_baseAnm base_anm; + u32 field_0x14; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class mDoExt_brkAnm { +public: + mDoExt_brkAnm(void); + /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); + /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); + +private: + mDoExt_baseAnm mDoExt_baseAnm; + u32 field_0x14; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class mDoExt_bpkAnm { +public: + mDoExt_bpkAnm(void); + /* 8000D47C */ void init(J3DMaterialTable*, J3DAnmColor*, int, int, f32, s16, s16); + /* 8000D518 */ void entry(J3DMaterialTable*, f32); + +private: + mDoExt_baseAnm mDoExt_baseAnm; + u32 field_0x14; +}; +#pragma pack(pop) + +#pragma pack(push, 1) +class mDoExt_bckAnm { +public: + mDoExt_bckAnm(void); + /* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool); + /* 8000D990 */ void changeBckOnly(J3DAnmTransform*); + /* 8000D9CC */ void entry(J3DModelData*, f32); + /* 8000D9E8 */ void entryJoint(J3DModelData*, u16, f32); + +private: + mDoExt_baseAnm base_anm; + u8 field_0x14[4]; + u32 field_0x18; +}; // Size = 0x1C +#pragma pack(pop) + +#pragma pack(push, 1) +class mDoExt_McaMorfCallBack1_c { +public: +private: + void* vtable; +}; +#pragma pack(pop) + #endif /* M_DO_M_DO_EXT_H */ |
