diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-04-06 11:08:25 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-06 21:08:25 +0300 |
| commit | 54dd7640969e1f414f9b1111f874f85171ab6987 (patch) | |
| tree | 8f83caa22c5ab811736e3625be599061d478af10 /include | |
| parent | 4361019959acf84f347fec62315f8aefb2d63a6f (diff) | |
GCN pal / jpn support, some debug work (#2375)
* d_save debug cleanup / d_s_menu debug
* gameinfo / kankyo struct debug fixes
* pal building ok
* jp building ok
* some tests with jp
* some more pal/jp tests
Diffstat (limited to 'include')
| -rw-r--r-- | include/JSystem/JFramework/JFWSystem.h | 1 | ||||
| -rw-r--r-- | include/JSystem/JUtility/JUTResFont.h | 2 | ||||
| -rw-r--r-- | include/SSystem/SComponent/c_cc_s.h | 9 | ||||
| -rw-r--r-- | include/d/d_attention.h | 24 | ||||
| -rw-r--r-- | include/d/d_bg_s.h | 33 | ||||
| -rw-r--r-- | include/d/d_cc_s.h | 3 | ||||
| -rw-r--r-- | include/d/d_com_inf_game.h | 778 | ||||
| -rw-r--r-- | include/d/d_drawlist.h | 26 | ||||
| -rw-r--r-- | include/d/d_event.h | 3 | ||||
| -rw-r--r-- | include/d/d_event_manager.h | 8 | ||||
| -rw-r--r-- | include/d/d_kankyo.h | 9 | ||||
| -rw-r--r-- | include/d/d_menu_window_HIO.h | 5 | ||||
| -rw-r--r-- | include/d/d_meter2_info.h | 14 | ||||
| -rw-r--r-- | include/d/d_meter_HIO.h | 9 | ||||
| -rw-r--r-- | include/d/d_resorce.h | 3 | ||||
| -rw-r--r-- | include/d/d_s_menu.h | 85 | ||||
| -rw-r--r-- | include/d/d_s_play.h | 21 | ||||
| -rw-r--r-- | include/d/d_save.h | 101 | ||||
| -rw-r--r-- | include/d/d_vibration.h | 24 | ||||
| -rw-r--r-- | include/f_ap/f_ap_game.h | 8 | ||||
| -rw-r--r-- | include/f_op/f_op_msg_mng.h | 1 | ||||
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 5 |
22 files changed, 799 insertions, 373 deletions
diff --git a/include/JSystem/JFramework/JFWSystem.h b/include/JSystem/JFramework/JFWSystem.h index fd8156e587..b535c47da2 100644 --- a/include/JSystem/JFramework/JFWSystem.h +++ b/include/JSystem/JFramework/JFWSystem.h @@ -36,6 +36,7 @@ struct JFWSystem { static JUTConsole* getSystemConsole() { return systemConsole; } static JKRExpHeap* getSystemHeap() { return systemHeap; } + static JUTResFont* getSystemFont() { return systemFont; } static void setMaxStdHeap(s32 max) { CSetUpParam::maxStdHeaps = max; } static void setSysHeapSize(u32 size) { CSetUpParam::sysHeapSize = size; } diff --git a/include/JSystem/JUtility/JUTResFont.h b/include/JSystem/JUtility/JUTResFont.h index 99574b712e..50246d87a0 100644 --- a/include/JSystem/JUtility/JUTResFont.h +++ b/include/JSystem/JUtility/JUTResFont.h @@ -78,4 +78,6 @@ public: /* 0x6C */ const IsLeadByte_func* mIsLeadByte; }; +extern u8 const JUTResFONT_Ascfont_fix12[16736]; + #endif /* JUTRESFONT_H */ diff --git a/include/SSystem/SComponent/c_cc_s.h b/include/SSystem/SComponent/c_cc_s.h index 09899b8a23..5c5a5921d0 100644 --- a/include/SSystem/SComponent/c_cc_s.h +++ b/include/SSystem/SComponent/c_cc_s.h @@ -15,10 +15,19 @@ public: /* 0x0400 */ cCcD_Obj* mpObjTg[0x300]; /* 0x1000 */ cCcD_Obj* mpObjCo[0x100]; /* 0x1400 */ cCcD_Obj* mpObj[0x500]; +#ifdef DEBUG + /* 0x2800 */ int m_debug_code; +#endif /* 0x2800 */ u16 mObjAtCount; /* 0x2802 */ u16 mObjTgCount; /* 0x2804 */ u16 mObjCoCount; /* 0x2806 */ u16 mObjCount; +#ifdef DEBUG + /* 0x280C */ u16 field_0x280c; + /* 0x280E */ u16 field_0x280e; + /* 0x2810 */ u16 field_0x2810; + /* 0x2812 */ u16 field_0x2812; +#endif /* 0x2808 */ cCcD_DivideArea mDivideArea; /* 0x2848 vtable */ diff --git a/include/d/d_attention.h b/include/d/d_attention.h index 41ad71e140..20884a94a6 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -4,12 +4,12 @@ #include "SSystem/SComponent/c_angle.h" #include "m_Do/m_Do_ext.h" #include "f_pc/f_pc_base.h" +#include "JSystem/JHostIO/JORReflexible.h" class fopAc_ac_c; class dAttHint_c { public: - dAttHint_c() {} /* 800738B4 */ fpc_ProcID getPId(void*); /* 800738CC */ fopAc_ac_c* convPId(fpc_ProcID); /* 800738FC */ int request(fopAc_ac_c*, int); @@ -26,7 +26,6 @@ private: class dAttCatch_c { public: - dAttCatch_c() {} fopAc_ac_c* convPId(fpc_ProcID); void init(); void proc(); @@ -44,8 +43,12 @@ private: /* 0x14 */ u8 mChangeItem; }; // Size: 0x18 -class dAttParam_c { +class dAttParam_c : public JORReflexible { public: +#ifdef DEBUG + /* 0x04 */ u8 unk_0x4; +#endif + /* 0x00 */ u16 mFlags; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; @@ -63,10 +66,18 @@ public: /* 0x35 */ u8 mAttnCursorDisappearFrames; /* 0x38 */ f32 field_0x38; /* 0x3C */ f32 field_0x3c; +#ifdef DEBUG + /* 0x44 */ int unk_0x44; + /* 0x48 */ int unk_0x48; +#endif public: dAttParam_c() {} /* 80070038 */ dAttParam_c(s32); + +#ifdef DEBUG + virtual void genMessage(JORMContext*); +#endif /* 80070110 */ virtual ~dAttParam_c(); enum EFlag { @@ -299,8 +310,15 @@ public: /* 0x49C */ dAttCatch_c mCatghTarget; /* 0x4B4 */ dAttLook_c mLookTarget; /* 0x4C4 */ int mAttnBlockTimer; +#ifdef DEBUG + /* 0x4C8 */ u8 field_0x4c8[0x4D0 - 0x4C8]; +#endif /* 0x4C8 */ dAttParam_c mAttParam; +#ifdef DEBUG + /* 0x51C */ u8 field_0x50c[0x520 - 0x51C]; +#else /* 0x50C */ u8 field_0x50c[0x514 - 0x50c]; +#endif /* 0x514 */ fpc_ProcID mEnemyActorID; /* 0x518 */ f32 mEnemyDist; }; // Size: 0x51C diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h index 088e80e4ad..6cbed51548 100644 --- a/include/d/d_bg_s.h +++ b/include/d/d_bg_s.h @@ -2,6 +2,7 @@ #define D_BG_D_BG_S_H #include "d/d_bg_w_base.h" +#include "JSystem/JHostIO/JORReflexible.h" #include "global.h" class dBgW; @@ -62,6 +63,33 @@ class dBgS_Acch; u8 dKy_pol_sound_get(cBgS_PolyInfo const* param_0); +class dBgS_HIO : public JORReflexible { +public: +#ifdef DEBUG + dBgS_HIO() { + field_0x6 = 0; + field_0x8 = 0; + + field_0xc.x = field_0xc.y = field_0xc.z = 0.0f; + field_0x18.x = field_0x18.y = field_0x18.z = 0.0f; + field_0x24.x = field_0x24.y = field_0x24.z = 0.0f; + + field_0x30 = -1; + } + + virtual void genMessage(JORMContext*); + virtual ~dBgS_HIO(); + + /* 0x04 */ u8 field_0x4[0x6 - 0x4]; + /* 0x06 */ u16 field_0x6; + /* 0x08 */ u16 field_0x8; + /* 0x0C */ cXyz field_0xc; + /* 0x18 */ cXyz field_0x18; + /* 0x24 */ cXyz field_0x24; + /* 0x30 */ int field_0x30; +#endif +}; + class dBgS : public cBgS { public: dBgS() {} @@ -111,6 +139,11 @@ public: u32 GetMtrlSndId(const cBgS_PolyInfo& param_0) { return dKy_pol_sound_get(¶m_0); } void DebugDrawPoly(dBgW_Base *param_1) {} fopAc_ac_c* GetActorPointer(cBgS_PolyInfo const& param_0) { return cBgS::GetActorPointer(param_0); } + +#ifdef DEBUG + /* 0x1404 */ u8 field_0x1404[0x1408 - 0x1404]; + /* 0x1408 */ dBgS_HIO m_hio; +#endif }; // Size: 0x1404 bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&); diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h index 9db69795ed..af4428d1d4 100644 --- a/include/d/d_cc_s.h +++ b/include/d/d_cc_s.h @@ -63,6 +63,9 @@ public: // /* 0x0000 */ cCcS mCCcS; /* 0x284C */ dCcMassS_Mng mMass_Mng; +#ifdef DEBUG + /* 0x2AD0 */ u8 field_0x2ad0; +#endif }; // Size = 0x2AC4 STATIC_ASSERT(sizeof(dCcS) == 0x2AC4); diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index aae93b2b76..15a05f91c5 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -58,10 +58,13 @@ public: /* 0x0C */ f32 mCameraZoomScale; /* 0x10 */ f32 mCameraZoomForcus; /* 0x14 */ char* mCameraParamFileName; - /* 0x18 */ cXyz mCameraPos; - /* 0x24 */ cXyz mCameraTarget; - /* 0x30 */ f32 mCameraFovy; - /* 0x34 */ s16 mCameraBank; + class { + public: + /* 0x18 */ cXyz mCameraPos; + /* 0x24 */ cXyz mCameraTarget; + /* 0x30 */ f32 mCameraFovy; + /* 0x34 */ s16 mCameraBank; + } mCamInfo; }; STATIC_ASSERT(sizeof(dComIfG_camera_info_class) == 0x38); @@ -92,6 +95,153 @@ public: /* 0x08 */ fopAc_ac_c* mActor[10]; }; +class dComIfG_item_info_class { +public: + /* 0x04E84 */ dMsgObject_c* mMsgObjectClass; + /* 0x04E88 */ f32 mItemLifeCount; + /* 0x04E8C */ s32 mItemRupeeCount; + /* 0x04E90 */ s16 mItemKeyNumCount; + /* 0x04E92 */ s16 mItemMaxLifeCount; + /* 0x04E94 */ s16 mItemMagicCount; + /* 0x04E96 */ s16 mItemNowMagicCount; + /* 0x04E98 */ s16 mItemMaxMagicCount; + /* 0x04E9A */ s16 field_0x4e9a; + /* 0x04E9C */ s32 mItemOilCount; + /* 0x04EA0 */ s32 mItemNowOil; + /* 0x04EA4 */ int mItemMaxOilCount; + /* 0x04EA8 */ int mOxygen; + /* 0x04EAC */ int mNowOxygen; + /* 0x04EB0 */ int mMaxOxygen; + /* 0x04EB4 */ int mOxygenCount; + /* 0x04EB8 */ int mMaxOxygenCount; + /* 0x04EBC */ s16 mItemArrowNumCount; + /* 0x04EBE */ s16 mItemPachinkoNumCount; + /* 0x04EC0 */ s16 mItemMaxArrowNumCount; + /* 0x04EC2 */ s16 mItemBombNumCount[3]; + /* 0x04EC8 */ u8 field_0x4ec8[4]; + /* 0x04ECC */ s16 mItemMaxBombNumCount1; + /* 0x04ECE */ s16 mItemMaxBombNumCount2; + /* 0x04ED0 */ u8 field_0x4ed0[4]; + /* 0x04ED4 */ int mMessageCountNum; + /* 0x04ED8 */ s16 field_0x4ed8; + /* 0x04EDA */ u8 field_0x4eda[0x4EDE - 0x4EDA]; + /* 0x04EDE */ u16 mItemNowLife; + /* 0x04EE0 */ u8 field_0x4ee0[2]; + /* 0x04EE2 */ u8 mMesgStatus; + /* 0x04EE3 */ u8 field_0x4ee3; + /* 0x04EE4 */ u8 mRStatus; + /* 0x04EE5 */ u8 mAStatus; // B button + /* 0x04EE6 */ u8 field_0x4ee6; + /* 0x04EE7 */ u8 mNunStatus; + /* 0x04EE8 */ u8 mBottleStatus; + /* 0x04EE9 */ u8 mRemoConStatus; + /* 0x04EEA */ u8 field_0x4eea[2]; + /* 0x04EEC */ u8 mDoStatus; // A button + /* 0x04EED */ u8 field_0x4eed; + /* 0x04EEE */ u8 m3DStatus; + /* 0x04EEF */ u8 field_0x4eef; // related to NunStatusForce + /* 0x04EF0 */ u8 field_0x4ef0; // related to NunStatus + /* 0x04EF1 */ u8 field_0x4ef1; // related to RemoConStatusForce + /* 0x04EF2 */ u8 field_0x4ef2; // related to RemoConStatus + /* 0x04EF3 */ u8 field_0x4ef3[2]; + /* 0x04EF5 */ u8 m3DDirection; + /* 0x04EF6 */ u8 m3DDirectionForce; + /* 0x04EF7 */ u8 mCStickStatus; + /* 0x04EF8 */ u8 mCStickDirection; + /* 0x04EF9 */ u8 mCStickDirectionForce; + /* 0x04EFA */ u8 mSButtonStatus; + /* 0x04EFB */ u8 mZStatus; + /* 0x04EFC */ u8 mRStatusForce; + /* 0x04EFD */ u8 mAStatusForce; + /* 0x04EFE */ u8 field_0x4efe; + /* 0x04EFF */ u8 field_0x4eff; // related to NunStatusForce + /* 0x04F00 */ u8 mBottleStatusForce; + /* 0x04F01 */ u8 field_0x4f01; // related to RemoConStatusForce + /* 0x04F02 */ u8 field_0x4f02[2]; + /* 0x04F04 */ u8 mDoStatusForce; + /* 0x04F05 */ u8 mTouchStatusForce; + /* 0x04F06 */ u8 m3DStatusForce; + /* 0x04F07 */ u8 mCStickStatusForce; + /* 0x04F08 */ u8 mSButtonStatusForce; + /* 0x04F09 */ u8 mZStatusForce; + /* 0x04F0A */ u8 mRSetFlag; + /* 0x04F0B */ u8 mASetFlag; + /* 0x04F0C */ u8 field_0x4f0c; + /* 0x04F0D */ u8 mNunSetFlag; + /* 0x04F0E */ u8 mBottleSetFlag; + /* 0x04F0F */ u8 mRemoConSetFlag; + /* 0x04F10 */ u8 field_0x4f10[2]; + /* 0x04F12 */ u8 mDoSetFlag; + /* 0x04F13 */ u8 m3DSetFlag; + /* 0x04F14 */ u8 mCStickSetFlag; + /* 0x04F15 */ u8 mSButtonSetFlag; + /* 0x04F16 */ u8 mZSetFlag; + /* 0x04F17 */ u8 mRSetFlagForce; + /* 0x04F18 */ u8 mASetFlagForce; + /* 0x04F19 */ u8 field_0x4f19; + /* 0x04F1A */ u8 field_0x4f1a; // related to NunStatusForce + /* 0x04F1B */ u8 mBottleSetFlagForce; + /* 0x04F1C */ u8 field_0x4f1c; // related to RemoConStatusForce + /* 0x04F1D */ u8 field_0x4f1d[2]; + /* 0x04F1F */ u8 mDoSetFlagForce; + /* 0x04F20 */ u8 m3DSetFlagForce; + /* 0x04F21 */ u8 mCStickSetFlagForce; + /* 0x04F22 */ u8 mSButtonSetFlagForce; + /* 0x04F23 */ u8 mZSetFlagForce; + /* 0x04F24 */ u8 mXStatus; + /* 0x04F25 */ u8 mXStatusForce; + /* 0x04F26 */ u8 mXSetFlag; + /* 0x04F27 */ u8 mXSetFlagForce; + /* 0x04F28 */ u8 mYStatus; + /* 0x04F29 */ u8 mYStatusForce; + /* 0x04F2A */ u8 mYSetFlag; + /* 0x04F2B */ u8 mYSetFlagForce; + /* 0x04F2C */ u8 mNunZStatus; + /* 0x04F2D */ u8 mNunZSetFlag; + /* 0x04F2E */ u8 field_0x4fc6; // related to NunZStatusForce + /* 0x04F2F */ u8 field_0x4fc7; // related to NunZStatusForce + /* 0x04F30 */ u8 mNunCStatus; + /* 0x04F31 */ u8 mNunCSetFlag; + /* 0x04F32 */ u8 field_0x4fca; // related to NunCStatusForce + /* 0x04F33 */ u8 field_0x4fcb; // related to NunCStatusForce + /* 0x04F34 */ u8 mSelectItem[8]; + /* 0x04F3C */ u8 mSelectEquip[6]; + /* 0x04F42 */ u8 mBaseAnimeID; + /* 0x04F43 */ u8 mFaceAnimeID; + /* 0x04F44 */ u8 mNowAnimeID; + /* 0x04F45 */ u8 mItemSlot; + /* 0x04F46 */ u8 mItemID; + /* 0x04F47 */ u8 field_0x4f47[2]; + /* 0x04F49 */ u8 mDirection; + /* 0x04F4A */ u8 field_0x4f4a; +#ifdef DEBUG + /* 0x04FE3 */ u8 unk_0x4fe3; +#endif + /* 0x04F4B */ u8 field_0x4f4b; // related to itemInit + /* 0x04F4C */ u8 field_0x4f4c; // related to itemInit + /* 0x04F4D */ u8 field_0x4f4d; + /* 0x04F4E */ u8 mMesgCancelButton; + /* 0x04F4F */ u8 field_0x4f4f[2]; + /* 0x04F51 */ u8 mGameoverStatus; + /* 0x04F52 */ u8 field_0x4f52[5]; + /* 0x04F57 */ u8 mHeapLockFlag; + /* 0x04F58 */ u8 mSubHeapLockFlag[2]; + /* 0x04F5A */ u8 mNowVibration; + /* 0x04F5B */ u8 field_0x4f5b[2]; + /* 0x04F5D */ u8 mWolfAbility[12]; + /* 0x04F69 */ u8 mNeedLightDropNum; + /* 0x04F6A */ u8 field_0x4f6a[18]; + /* 0x04F7C */ u8 mMesgBgm; + /* 0x04F7D */ bool mPauseFlag; + /* 0x04F7E */ u8 mItemLifeCountType; + /* 0x04F7F */ u8 mOxygenShowFlag; + /* 0x04F80 */ u8 mShow2D; + /* 0x04F84 */ JKRExpHeap* mExpHeap2D; + /* 0x04F88 */ JKRExpHeap* mSubExpHeap2D[2]; + /* 0x04F90 */ JKRExpHeap* mMsgExpHeap; + /* 0x04F94 */ dSv_memBit_c::WarpItemData_c mWarpItemData; +}; + class dComIfG_play_c { public: dComIfG_play_c() { this->ct(); } @@ -127,7 +277,7 @@ public: void setWarpItemData(const char* stage, cXyz pos, s16 angle, s8 roomNo, u8, u8); ~dComIfG_play_c() {} - dMsgObject_c* getMsgObjectClass() { return mMsgObjectClass; } + dMsgObject_c* getMsgObjectClass() { return mItemInfo.mMsgObjectClass; } dStage_roomControl_c* getRoomControl() { return &mRoomControl; } dStage_stageDt_c& getStage() { return mStageData; } dEvt_control_c& getEvent() { return mEvent; } @@ -147,257 +297,257 @@ public: void setCurrentView(view_class* i_view) { mCurrentView = i_view; } void setCurrentViewport(view_port_class* i_viewport) { mCurrentViewport = i_viewport; } - void setSelectItem(int idx, u8 i_itemNo) { mSelectItem[idx] = i_itemNo; } - u8 getSelectItem(int idx) { return mSelectItem[idx]; } - void setSelectEquip(int idx, u8 item_id) { mSelectEquip[idx] = item_id; } + void setSelectItem(int idx, u8 i_itemNo) { mItemInfo.mSelectItem[idx] = i_itemNo; } + u8 getSelectItem(int idx) { return mItemInfo.mSelectItem[idx]; } + void setSelectEquip(int idx, u8 item_id) { mItemInfo.mSelectEquip[idx] = item_id; } void setItem(u8 slot, u8 i_no) { - mItemSlot = slot; - mItemID = i_no; + mItemInfo.mItemSlot = slot; + mItemInfo.mItemID = i_no; } - u8 getDoStatus() { return mDoStatus; } - u8 getRStatus() { return mRStatus; } - u8 getAStatus() { return mAStatus; } - u8 getXStatus() { return mXStatus; } - u8 getYStatus() { return mYStatus; } - u8 getZStatus() { return mZStatus; } - u8 get3DStatus() { return m3DStatus; } - u8 getCStickStatus() { return mCStickStatus; } - u8 getSButtonStatus() { return mSButtonStatus; } - u8 getNunStatus() { return mNunStatus; } - u8 getRemoConStatus() { return mRemoConStatus; } - u8 getNunZStatus() { return mNunZStatus; } - u8 getNunCStatus() { return mNunCStatus; } - u8 getBottleStatus() { return mBottleStatus; } - u8 getSButtonStatusForce() { return mSButtonStatusForce; } - u8 getSButtonSetFlagForce() { return mSButtonSetFlagForce; } - u8 getCStickStatusForce() { return mCStickStatusForce; } - u8 getCStickSetFlagForce() { return mCStickSetFlagForce; } - u8 getCStickDirectionForce() { return mCStickDirectionForce; } - u8 getDoStatusForce() { return mDoStatusForce; } - u8 getDoSetFlagForce() { return mDoSetFlagForce; } - u8 getAStatusForce() { return mAStatusForce; } - u8 getASetFlagForce() { return mASetFlagForce; } - u8 getRStatusForce() { return mRStatusForce; } - u8 getRSetFlagForce() { return mRSetFlagForce; } - u8 getZStatusForce() { return mZStatusForce; } - u8 getZSetFlagForce() { return mZSetFlagForce; } - u8 getBottleStatusForce() { return mBottleStatusForce; } - u8 getBottleSetFlagForce() { return mBottleSetFlagForce; } - u8 get3DStatusForce() { return m3DStatusForce; } - u8 get3DSetFlagForce() { return m3DSetFlagForce; } - u8 get3DDirectionForce() { return m3DDirectionForce; } - u8 getXStatusForce() { return mXStatusForce; } - u8 getXSetFlagForce() { return mXSetFlagForce; } - u8 getYStatusForce() { return mYStatusForce; } - u8 getYSetFlagForce() { return mYSetFlagForce; } - u8 getFaceAnimeID() { return mFaceAnimeID; } - u8 getBaseAnimeID() { return mBaseAnimeID; } - bool isCStickSetFlag(u8 flag) { return mCStickSetFlag & flag; } - bool isDoSetFlag(u8 flag) { return (mDoSetFlag & flag) ? true : false; } - bool isASetFlag(u8 flag) { return (mASetFlag & flag) ? true : false; } - bool isRSetFlag(u8 flag) { return (mRSetFlag & flag) ? true : false; } - bool isXSetFlag(u8 flag) { return (mXSetFlag & flag) ? true : false; } - bool isYSetFlag(u8 flag) { return (mYSetFlag & flag) ? true : false; } - bool is3DSetFlag(u8 flag) { return (m3DSetFlag & flag) ? true : false; } - bool isZSetFlag(u8 flag) { return (mZSetFlag & flag) ? true : false; } - bool isSButtonSetFlag(u8 flag) { return (mSButtonSetFlag & flag) ? true : false; } - bool isNunSetFlag(u8 flag) { return (mNunSetFlag & flag) ? true : false; } - bool isRemoConSetFlag(u8 flag) { return (mRemoConSetFlag & flag) ? true : false; } - bool isNunZSetFlag(u8 flag) { return (mNunZSetFlag & flag) ? true : false; } - bool isNunCSetFlag(u8 flag) { return (mNunCSetFlag & flag) ? true : false; } - bool isBottleSetFlag(u8 flag) { return (mBottleSetFlag & flag) ? true : false; } - - u8 get3DDirection() { return m3DDirection; } - u8 getCStickDirection() { return mCStickDirection; } + u8 getDoStatus() { return mItemInfo.mDoStatus; } + u8 getRStatus() { return mItemInfo.mRStatus; } + u8 getAStatus() { return mItemInfo.mAStatus; } + u8 getXStatus() { return mItemInfo.mXStatus; } + u8 getYStatus() { return mItemInfo.mYStatus; } + u8 getZStatus() { return mItemInfo.mZStatus; } + u8 get3DStatus() { return mItemInfo.m3DStatus; } + u8 getCStickStatus() { return mItemInfo.mCStickStatus; } + u8 getSButtonStatus() { return mItemInfo.mSButtonStatus; } + u8 getNunStatus() { return mItemInfo.mNunStatus; } + u8 getRemoConStatus() { return mItemInfo.mRemoConStatus; } + u8 getNunZStatus() { return mItemInfo.mNunZStatus; } + u8 getNunCStatus() { return mItemInfo.mNunCStatus; } + u8 getBottleStatus() { return mItemInfo.mBottleStatus; } + u8 getSButtonStatusForce() { return mItemInfo.mSButtonStatusForce; } + u8 getSButtonSetFlagForce() { return mItemInfo.mSButtonSetFlagForce; } + u8 getCStickStatusForce() { return mItemInfo.mCStickStatusForce; } + u8 getCStickSetFlagForce() { return mItemInfo.mCStickSetFlagForce; } + u8 getCStickDirectionForce() { return mItemInfo.mCStickDirectionForce; } + u8 getDoStatusForce() { return mItemInfo.mDoStatusForce; } + u8 getDoSetFlagForce() { return mItemInfo.mDoSetFlagForce; } + u8 getAStatusForce() { return mItemInfo.mAStatusForce; } + u8 getASetFlagForce() { return mItemInfo.mASetFlagForce; } + u8 getRStatusForce() { return mItemInfo.mRStatusForce; } + u8 getRSetFlagForce() { return mItemInfo.mRSetFlagForce; } + u8 getZStatusForce() { return mItemInfo.mZStatusForce; } + u8 getZSetFlagForce() { return mItemInfo.mZSetFlagForce; } + u8 getBottleStatusForce() { return mItemInfo.mBottleStatusForce; } + u8 getBottleSetFlagForce() { return mItemInfo.mBottleSetFlagForce; } + u8 get3DStatusForce() { return mItemInfo.m3DStatusForce; } + u8 get3DSetFlagForce() { return mItemInfo.m3DSetFlagForce; } + u8 get3DDirectionForce() { return mItemInfo.m3DDirectionForce; } + u8 getXStatusForce() { return mItemInfo.mXStatusForce; } + u8 getXSetFlagForce() { return mItemInfo.mXSetFlagForce; } + u8 getYStatusForce() { return mItemInfo.mYStatusForce; } + u8 getYSetFlagForce() { return mItemInfo.mYSetFlagForce; } + u8 getFaceAnimeID() { return mItemInfo.mFaceAnimeID; } + u8 getBaseAnimeID() { return mItemInfo.mBaseAnimeID; } + bool isCStickSetFlag(u8 flag) { return mItemInfo.mCStickSetFlag & flag; } + bool isDoSetFlag(u8 flag) { return (mItemInfo.mDoSetFlag & flag) ? true : false; } + bool isASetFlag(u8 flag) { return (mItemInfo.mASetFlag & flag) ? true : false; } + bool isRSetFlag(u8 flag) { return (mItemInfo.mRSetFlag & flag) ? true : false; } + bool isXSetFlag(u8 flag) { return (mItemInfo.mXSetFlag & flag) ? true : false; } + bool isYSetFlag(u8 flag) { return (mItemInfo.mYSetFlag & flag) ? true : false; } + bool is3DSetFlag(u8 flag) { return (mItemInfo.m3DSetFlag & flag) ? true : false; } + bool isZSetFlag(u8 flag) { return (mItemInfo.mZSetFlag & flag) ? true : false; } + bool isSButtonSetFlag(u8 flag) { return (mItemInfo.mSButtonSetFlag & flag) ? true : false; } + bool isNunSetFlag(u8 flag) { return (mItemInfo.mNunSetFlag & flag) ? true : false; } + bool isRemoConSetFlag(u8 flag) { return (mItemInfo.mRemoConSetFlag & flag) ? true : false; } + bool isNunZSetFlag(u8 flag) { return (mItemInfo.mNunZSetFlag & flag) ? true : false; } + bool isNunCSetFlag(u8 flag) { return (mItemInfo.mNunCSetFlag & flag) ? true : false; } + bool isBottleSetFlag(u8 flag) { return (mItemInfo.mBottleSetFlag & flag) ? true : false; } + + u8 get3DDirection() { return mItemInfo.m3DDirection; } + u8 getCStickDirection() { return mItemInfo.mCStickDirection; } void setZStatus(u8 status, u8 flag) { - mZStatus = status; - mZSetFlag = flag; + mItemInfo.mZStatus = status; + mItemInfo.mZSetFlag = flag; } void setRStatus(u8 status, u8 flag) { - mRStatus = status; - mRSetFlag = flag; + mItemInfo.mRStatus = status; + mItemInfo.mRSetFlag = flag; } void setDoStatus(u8 status, u8 flag) { - mDoStatus = status; - mDoSetFlag = flag; + mItemInfo.mDoStatus = status; + mItemInfo.mDoSetFlag = flag; } void setAStatus(u8 status, u8 flag) { - mAStatus = status; - mASetFlag = flag; + mItemInfo.mAStatus = status; + mItemInfo.mASetFlag = flag; } void setXStatus(u8 status, u8 flag) { - mXStatus = status; - mXSetFlag = flag; + mItemInfo.mXStatus = status; + mItemInfo.mXSetFlag = flag; } void setXStatusForce(u8 status, u8 flag) { - mXStatusForce = status; - mXSetFlagForce = flag; + mItemInfo.mXStatusForce = status; + mItemInfo.mXSetFlagForce = flag; } void setYStatus(u8 status, u8 flag) { - mYStatus = status; - mYSetFlag = flag; + mItemInfo.mYStatus = status; + mItemInfo.mYSetFlag = flag; } void setYStatusForce(u8 status, u8 flag) { - mYStatusForce = status; - mYSetFlagForce = flag; + mItemInfo.mYStatusForce = status; + mItemInfo.mYSetFlagForce = flag; } void setBottleStatus(u8 status, u8 flag) { - mBottleStatus = status; - mBottleSetFlag = flag; + mItemInfo.mBottleStatus = status; + mItemInfo.mBottleSetFlag = flag; } void setBottleStatusForce(u8 status, u8 flag) { - mBottleStatusForce = status; - mBottleSetFlagForce = flag; + mItemInfo.mBottleStatusForce = status; + mItemInfo.mBottleSetFlagForce = flag; } void setNunStatus(u8 status, u8 param_1, u8 flag) { - mNunStatus = status; - field_0x4ef0 = param_1; - mNunSetFlag = flag; + mItemInfo.mNunStatus = status; + mItemInfo.field_0x4ef0 = param_1; + mItemInfo.mNunSetFlag = flag; } void setRemoConStatus(u8 status, u8 param_1, u8 flag) { - mRemoConStatus = status; - field_0x4ef2 = param_1; - mRemoConSetFlag = flag; + mItemInfo.mRemoConStatus = status; + mItemInfo.field_0x4ef2 = param_1; + mItemInfo.mRemoConSetFlag = flag; } void setNunZStatus(u8 status, u8 flag) { - mNunZStatus = status; - mNunZSetFlag = flag; + mItemInfo.mNunZStatus = status; + mItemInfo.mNunZSetFlag = flag; } void setNunCStatus(u8 status, u8 flag) { - mNunCStatus = status; - mNunCSetFlag = flag; + mItemInfo.mNunCStatus = status; + mItemInfo.mNunCSetFlag = flag; } void setCStickStatus(u8 status, u8 param_1, u8 flag) { - mCStickStatus = status; - mCStickDirection = param_1; - mCStickSetFlag = flag; + mItemInfo.mCStickStatus = status; + mItemInfo.mCStickDirection = param_1; + mItemInfo.mCStickSetFlag = flag; } void setCStickStatusForce(u8 status, u8 param_1, u8 flag) { - mCStickStatusForce = status; - mCStickDirectionForce = param_1; - mCStickSetFlagForce = flag; + mItemInfo.mCStickStatusForce = status; + mItemInfo.mCStickDirectionForce = param_1; + mItemInfo.mCStickSetFlagForce = flag; } void setSButtonStatus(u8 status, u8 flag) { - mSButtonStatus = status; - mSButtonSetFlag = flag; + mItemInfo.mSButtonStatus = status; + mItemInfo.mSButtonSetFlag = flag; } void setSButtonStatusForce(u8 status, u8 flag) { - mSButtonStatusForce = status; - mSButtonSetFlagForce = flag; + mItemInfo.mSButtonStatusForce = status; + mItemInfo.mSButtonSetFlagForce = flag; } void set3DStatus(u8 status, u8 direction, u8 flag) { - m3DStatus = status; - m3DDirection = direction; - m3DSetFlag = flag; + mItemInfo.m3DStatus = status; + mItemInfo.m3DDirection = direction; + mItemInfo.m3DSetFlag = flag; } void set3DStatusForce(u8 status, u8 direction, u8 flag) { - m3DStatusForce = status; - m3DDirectionForce = direction; - m3DSetFlagForce = flag; + mItemInfo.m3DStatusForce = status; + mItemInfo.m3DDirectionForce = direction; + mItemInfo.m3DSetFlagForce = flag; } void setDoStatusForce(u8 status, u8 flag) { - mDoStatusForce = status; - mDoSetFlagForce = flag; + mItemInfo.mDoStatusForce = status; + mItemInfo.mDoSetFlagForce = flag; } void setAStatusForce(u8 status, u8 flag) { - mAStatusForce = status; - mASetFlagForce = flag; + mItemInfo.mAStatusForce = status; + mItemInfo.mASetFlagForce = flag; } void setRStatusForce(u8 status, u8 flag) { - mRStatusForce = status; - mRSetFlagForce = flag; + mItemInfo.mRStatusForce = status; + mItemInfo.mRSetFlagForce = flag; } void setZStatusForce(u8 status, u8 flag) { - mZStatusForce = status; - mZSetFlagForce = flag; + mItemInfo.mZStatusForce = status; + mItemInfo.mZSetFlagForce = flag; } void onStatus(u16 i_status) { mStatus |= i_status; } - void setItemRupeeCount(s32 rupees) { mItemRupeeCount += rupees; } - void setItemMagicCount(s16 magic) { mItemMagicCount += magic; } - void setItemMaxMagicCount(s16 max) { mItemMaxMagicCount += max; } - void setItemArrowNumCount(s16 arrows) { mItemArrowNumCount += arrows; } - void setItemPachinkoNumCount(s16 seeds) { mItemPachinkoNumCount += seeds; } - void setItemKeyNumCount(s16 keys) { mItemKeyNumCount += keys; } - void setItemMaxLifeCount(s16 max) { mItemMaxLifeCount += max; } - void setOxygen(s32 oxygen) { mOxygen = oxygen; } - void setNowOxygen(s32 oxygen) { mNowOxygen = oxygen; } - void setOxygenCount(s32 oxygen) { mOxygenCount += oxygen; } - int getOxygen() { return mOxygen; } - void setMaxOxygen(int max) { mMaxOxygen = max; } - int getMaxOxygen() { return mMaxOxygen; } - int getNowOxygen() { return mNowOxygen; } - void setItemNowLife(u16 life) { mItemNowLife = life; } - void setItemNowMagic(s16 magic) { mItemNowMagicCount = magic; } - void setItemNowOil(s32 oil) { mItemNowOil = oil; } - void setItemOilCount(s32 oil) { mItemOilCount += oil; } - s16 getItemMaxLifeCount() { return mItemMaxLifeCount; } - f32 getItemLifeCount() { return mItemLifeCount; } - s16 getItemMaxArrowNumCount() { return mItemMaxArrowNumCount; } - s16 getItemArrowNumCount() { return mItemArrowNumCount; } - s32 getItemMaxOilCount() { return mItemMaxOilCount; } - s32 getItemOilCount() { return mItemOilCount; } - s32 getMaxOxygenCount() { return mMaxOxygenCount; } - s32 getOxygenCount() { return mOxygenCount; } - s32 getItemRupeeCount() { return mItemRupeeCount; } - s16 getItemKeyNumCount() { return mItemKeyNumCount; } - void clearNowAnimeID() { mNowAnimeID = -1; } + void setItemRupeeCount(s32 rupees) { mItemInfo.mItemRupeeCount += rupees; } + void setItemMagicCount(s16 magic) { mItemInfo.mItemMagicCount += magic; } + void setItemMaxMagicCount(s16 max) { mItemInfo.mItemMaxMagicCount += max; } + void setItemArrowNumCount(s16 arrows) { mItemInfo.mItemArrowNumCount += arrows; } + void setItemPachinkoNumCount(s16 seeds) { mItemInfo.mItemPachinkoNumCount += seeds; } + void setItemKeyNumCount(s16 keys) { mItemInfo.mItemKeyNumCount += keys; } + void setItemMaxLifeCount(s16 max) { mItemInfo.mItemMaxLifeCount += max; } + void setOxygen(s32 oxygen) { mItemInfo.mOxygen = oxygen; } + void setNowOxygen(s32 oxygen) { mItemInfo.mNowOxygen = oxygen; } + void setOxygenCount(s32 oxygen) { mItemInfo.mOxygenCount += oxygen; } + int getOxygen() { return mItemInfo.mOxygen; } + void setMaxOxygen(int max) { mItemInfo.mMaxOxygen = max; } + int getMaxOxygen() { return mItemInfo.mMaxOxygen; } + int getNowOxygen() { return mItemInfo.mNowOxygen; } + void setItemNowLife(u16 life) { mItemInfo.mItemNowLife = life; } + void setItemNowMagic(s16 magic) { mItemInfo.mItemNowMagicCount = magic; } + void setItemNowOil(s32 oil) { mItemInfo.mItemNowOil = oil; } + void setItemOilCount(s32 oil) { mItemInfo.mItemOilCount += oil; } + s16 getItemMaxLifeCount() { return mItemInfo.mItemMaxLifeCount; } + f32 getItemLifeCount() { return mItemInfo.mItemLifeCount; } + s16 getItemMaxArrowNumCount() { return mItemInfo.mItemMaxArrowNumCount; } + s16 getItemArrowNumCount() { return mItemInfo.mItemArrowNumCount; } + s32 getItemMaxOilCount() { return mItemInfo.mItemMaxOilCount; } + s32 getItemOilCount() { return mItemInfo.mItemOilCount; } + s32 getMaxOxygenCount() { return mItemInfo.mMaxOxygenCount; } + s32 getOxygenCount() { return mItemInfo.mOxygenCount; } + s32 getItemRupeeCount() { return mItemInfo.mItemRupeeCount; } + s16 getItemKeyNumCount() { return mItemInfo.mItemKeyNumCount; } + void clearNowAnimeID() { mItemInfo.mNowAnimeID = -1; } void clearMesgCamInfoID() { mMesgCamInfo.mID = -1; } - void clearBaseAnimeID() { mBaseAnimeID = 0; } - void clearFaceAnimeID() { mFaceAnimeID = 0; } + void clearBaseAnimeID() { mItemInfo.mBaseAnimeID = 0; } + void clearFaceAnimeID() { mItemInfo.mFaceAnimeID = 0; } void clearMesgCamInfoBasicID() { mMesgCamInfo.mBasicID = 0; } - void clearItemMaxLifeCount() { mItemMaxLifeCount = 0; } - void clearItemMaxOilCount() { mItemMaxOilCount = 0; } - void clearItemOilCount() { mItemOilCount = 0; } - void clearMaxOxygenCount() { mMaxOxygenCount = 0; } - void clearOxygenCount() { mOxygenCount = 0; } - void clearItemRupeeCount() { mItemRupeeCount = 0; } - void clearItemKeyNumCount() { mItemKeyNumCount = 0; } - void clearItemArrowNumCount() { mItemArrowNumCount = 0; } + void clearItemMaxLifeCount() { mItemInfo.mItemMaxLifeCount = 0; } + void clearItemMaxOilCount() { mItemInfo.mItemMaxOilCount = 0; } + void clearItemOilCount() { mItemInfo.mItemOilCount = 0; } + void clearMaxOxygenCount() { mItemInfo.mMaxOxygenCount = 0; } + void clearOxygenCount() { mItemInfo.mOxygenCount = 0; } + void clearItemRupeeCount() { mItemInfo.mItemRupeeCount = 0; } + void clearItemKeyNumCount() { mItemInfo.mItemKeyNumCount = 0; } + void clearItemArrowNumCount() { mItemInfo.mItemArrowNumCount = 0; } void clearItemLifeCount() { - mItemLifeCount = 0.0f; - mItemLifeCountType = 0; + mItemInfo.mItemLifeCount = 0.0f; + mItemInfo.mItemLifeCountType = 0; } void setItemLifeCount(f32 hearts, u8 type) { - mItemLifeCount += hearts; - mItemLifeCountType = type; + mItemInfo.mItemLifeCount += hearts; + mItemInfo.mItemLifeCountType = type; } - u8& getItemLifeCountType() { return mItemLifeCountType; } - u16 getItemNowLife() { return mItemNowLife; } - s32 getItemNowOil() { return mItemNowOil; } - s16 getItemPachinkoNumCount() { return mItemPachinkoNumCount; } - void clearItemPachinkoNumCount() { mItemPachinkoNumCount = 0; } - u8 getNeedLightDropNum() { return mNeedLightDropNum; } - void setNeedLightDropNum(u8 i_num) { mNeedLightDropNum = i_num; } - u8 getWolfAbility(int i_idx) { return mWolfAbility[i_idx]; } + u8& getItemLifeCountType() { return mItemInfo.mItemLifeCountType; } + u16 getItemNowLife() { return mItemInfo.mItemNowLife; } + s32 getItemNowOil() { return mItemInfo.mItemNowOil; } + s16 getItemPachinkoNumCount() { return mItemInfo.mItemPachinkoNumCount; } + void clearItemPachinkoNumCount() { mItemInfo.mItemPachinkoNumCount = 0; } + u8 getNeedLightDropNum() { return mItemInfo.mNeedLightDropNum; } + void setNeedLightDropNum(u8 i_num) { mItemInfo.mNeedLightDropNum = i_num; } + u8 getWolfAbility(int i_idx) { return mItemInfo.mWolfAbility[i_idx]; } const char* getStartStageName() { return mStartStage.getName(); } s8 getStartStageRoomNo() { return mStartStage.getRoomNo(); } @@ -420,18 +570,18 @@ public: mNextStage.set(stage, roomNo, point, layer, wipe, wipe_speed); } - u8 isHeapLockFlag() { return mHeapLockFlag; } - void setHeapLockFlag(u8 status) { mHeapLockFlag = status; } - void setSubHeapLockFlag(int idx, u8 status) { mSubHeapLockFlag[idx] = status; } - u8 getSubHeapLockFlag(int idx) { return mSubHeapLockFlag[idx]; } - void offHeapLockFlag() { mHeapLockFlag = 0; } + u8 isHeapLockFlag() { return mItemInfo.mHeapLockFlag; } + void setHeapLockFlag(u8 status) { mItemInfo.mHeapLockFlag = status; } + void setSubHeapLockFlag(int idx, u8 status) { mItemInfo.mSubHeapLockFlag[idx] = status; } + u8 getSubHeapLockFlag(int idx) { return mItemInfo.mSubHeapLockFlag[idx]; } + void offHeapLockFlag() { mItemInfo.mHeapLockFlag = 0; } - JKRExpHeap* getExpHeap2D() { return mExpHeap2D; } - JKRExpHeap* getMsgExpHeap() { return mMsgExpHeap; } - JKRExpHeap* getSubExpHeap2D(int idx) { return mSubExpHeap2D[idx]; } - void setSubExpHeap2D(int idx, void* heap) { mSubExpHeap2D[idx] = (JKRExpHeap*)heap; } - void setExpHeap2D(void* heap) { mExpHeap2D = (JKRExpHeap*)heap; } - void setMsgExpHeap(void* heap) { mMsgExpHeap = (JKRExpHeap*)heap; } + JKRExpHeap* getExpHeap2D() { return mItemInfo.mExpHeap2D; } + JKRExpHeap* getMsgExpHeap() { return mItemInfo.mMsgExpHeap; } + JKRExpHeap* getSubExpHeap2D(int idx) { return mItemInfo.mSubExpHeap2D[idx]; } + void setSubExpHeap2D(int idx, void* heap) { mItemInfo.mSubExpHeap2D[idx] = (JKRExpHeap*)heap; } + void setExpHeap2D(void* heap) { mItemInfo.mExpHeap2D = (JKRExpHeap*)heap; } + void setMsgExpHeap(void* heap) { mItemInfo.mMsgExpHeap = (JKRExpHeap*)heap; } JKRArchive* getMsgDtArchive(int idx) { return mMsgDtArchive[idx]; } JKRArchive* getMsgArchive(int idx) { return mMsgArchive[idx]; } @@ -469,7 +619,7 @@ public: void setMsgDtArchive(int i, JKRArchive* arc) { mMsgDtArchive[i] = arc; } void setMsgCommonArchive(JKRArchive* arc) { mMsgCommonArchive = arc; } void setMsgArchive(int i, JKRArchive* arc) { mMsgArchive[i] = arc; } - void setMsgObjectClass(dMsgObject_c* obj) { mMsgObjectClass = obj; } + void setMsgObjectClass(dMsgObject_c* obj) { mItemInfo.mMsgObjectClass = obj; } void setMesgCamInfoBasicID(int id) { mMesgCamInfo.mBasicID = id; } void setMesgCamInfoActor(fopAc_ac_c* param_1, fopAc_ac_c* param_2, fopAc_ac_c* param_3, fopAc_ac_c* param_4, fopAc_ac_c* param_5, fopAc_ac_c* param_6, @@ -534,17 +684,17 @@ public: void setCameraZoomScale(int i_no, f32 i_scale) { mCameraInfo[i_no].mCameraZoomScale = i_scale; } void saveCameraPosition(int i, cXyz* i_pos, cXyz* i_target, f32 i_fovy, s16 i_bank) { - mCameraInfo[i].mCameraPos = *i_pos; - mCameraInfo[i].mCameraTarget = *i_target; - mCameraInfo[i].mCameraFovy = i_fovy; - mCameraInfo[i].mCameraBank = i_bank; + mCameraInfo[i].mCamInfo.mCameraPos = *i_pos; + mCameraInfo[i].mCamInfo.mCameraTarget = *i_target; + mCameraInfo[i].mCamInfo.mCameraFovy = i_fovy; + mCameraInfo[i].mCamInfo.mCameraBank = i_bank; } void loadCameraPosition(int i, cXyz* o_pos, cXyz* o_target, f32* o_fovy, s16* o_bank) { - *o_pos = mCameraInfo[i].mCameraPos; - *o_target = mCameraInfo[i].mCameraTarget; - *o_fovy = mCameraInfo[i].mCameraFovy; - *o_bank = mCameraInfo[i].mCameraBank; + *o_pos = mCameraInfo[i].mCamInfo.mCameraPos; + *o_target = mCameraInfo[i].mCamInfo.mCameraTarget; + *o_fovy = mCameraInfo[i].mCamInfo.mCameraFovy; + *o_bank = mCameraInfo[i].mCamInfo.mCameraBank; } void setMesgCamInfoID(int param_0) { mMesgCamInfo.mID = param_0; } @@ -552,22 +702,34 @@ public: void setStatus(u16 status) { mStatus = status; } s32 checkStatus(u16 flags) { return flags & mStatus; } - void setDirection(u8 i_dir) { mDirection = i_dir; } + void setDirection(u8 i_dir) { mItemInfo.mDirection = i_dir; } - bool& isPauseFlag() { return mPauseFlag; } - void offPauseFlag() { mPauseFlag = false; } - void onPauseFlag() { mPauseFlag = true; } - u8 getOxygenShowFlag() { return mOxygenShowFlag; } - void setOxygenShowFlag(u8 flag) { mOxygenShowFlag = flag; } - void show2dOn() { mShow2D = 1; } - void show2dOff() { mShow2D = 0; } - u8 show2dCheck() { return mShow2D; } + bool& isPauseFlag() { return mItemInfo.mPauseFlag; } + void offPauseFlag() { mItemInfo.mPauseFlag = false; } + void onPauseFlag() { mItemInfo.mPauseFlag = true; } + u8 getOxygenShowFlag() { return mItemInfo.mOxygenShowFlag; } + void setOxygenShowFlag(u8 flag) { mItemInfo.mOxygenShowFlag = flag; } + void show2dOn() { mItemInfo.mShow2D = 1; } + void show2dOff() { mItemInfo.mShow2D = 0; } + u8 show2dCheck() { return mItemInfo.mShow2D; } s8 getLayerOld() { return mLayerOld; } - u8 checkMesgCancelButton() { return mMesgCancelButton; } - void setMesgCancelButton(u8 button) { mMesgCancelButton = button; } - void setMesgBgm(u8 param_0) { mMesgBgm = param_0; } - int getMessageCountNumber() { return mMessageCountNum; } - void setMessageCountNumber(u32 number) { mMessageCountNum = number; } + u8 checkMesgCancelButton() { return mItemInfo.mMesgCancelButton; } + void setMesgCancelButton(u8 button) { mItemInfo.mMesgCancelButton = button; } + void setMesgBgm(u8 param_0) { mItemInfo.mMesgBgm = param_0; } + int getMessageCountNumber() { return mItemInfo.mMessageCountNum; } + void setMessageCountNumber(u32 number) { mItemInfo.mMessageCountNum = number; } + + s16 getItemMaxBombNumCount(u8 i_bombType) { + switch (i_bombType) { + case fpcNm_ITEM_NORMAL_BOMB: + return mItemInfo.mItemMaxBombNumCount1; + case fpcNm_ITEM_WATER_BOMB: + return mItemInfo.mItemMaxBombNumCount2; + case fpcNm_ITEM_POKE_BOMB: + return mItemInfo.field_0x4ed8; + } + return 0; + } void setWindowNum(u8 num) { mWindowNum = num; } int getWindowNum() { return mWindowNum; } @@ -586,11 +748,11 @@ public: } char* getLastPlayStageName() { return mLastPlayStageName; } - void setGameoverStatus(u8 status) { mGameoverStatus = status; } - u8 getGameoverStatus() { return mGameoverStatus; } - u8 getMesgStatus() { return mMesgStatus; } + void setGameoverStatus(u8 status) { mItemInfo.mGameoverStatus = status; } + u8 getGameoverStatus() { return mItemInfo.mGameoverStatus; } + u8 getMesgStatus() { return mItemInfo.mMesgStatus; } - u8 getDirection() { return mDirection; } + u8 getDirection() { return mItemInfo.mDirection; } public: /* 0x00000 */ dBgS mBgs; @@ -640,152 +802,7 @@ public: /* 0x04E74 */ daAlink_c* mPlayer[1]; /* 0x04E78 */ s8 mPlayerCameraID[1]; /* 0x04E7C */ fopAc_ac_c* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong - /* 0x04E84 */ dMsgObject_c* mMsgObjectClass; - /* 0x04E88 */ f32 mItemLifeCount; - /* 0x04E8C */ s32 mItemRupeeCount; - /* 0x04E90 */ s16 mItemKeyNumCount; - /* 0x04E92 */ s16 mItemMaxLifeCount; - /* 0x04E94 */ s16 mItemMagicCount; - /* 0x04E96 */ s16 mItemNowMagicCount; - /* 0x04E98 */ s16 mItemMaxMagicCount; - /* 0x04E9A */ s16 field_0x4e9a; - /* 0x04E9C */ s32 mItemOilCount; - /* 0x04EA0 */ s32 mItemNowOil; - /* 0x04EA4 */ int mItemMaxOilCount; - /* 0x04EA8 */ int mOxygen; - /* 0x04EAC */ int mNowOxygen; - /* 0x04EB0 */ int mMaxOxygen; - /* 0x04EB4 */ int mOxygenCount; - /* 0x04EB8 */ int mMaxOxygenCount; - /* 0x04EBC */ s16 mItemArrowNumCount; - /* 0x04EBE */ s16 mItemPachinkoNumCount; - /* 0x04EC0 */ s16 mItemMaxArrowNumCount; - /* 0x04EC2 */ s16 mItemBombNumCount[3]; - /* 0x04EC8 */ u8 field_0x4ec8[4]; - /* 0x04ECC */ s16 mItemMaxBombNumCount1; - /* 0x04ECE */ s16 mItemMaxBombNumCount2; - /* 0x04ED0 */ u8 field_0x4ed0[4]; - /* 0x04ED4 */ int mMessageCountNum; - /* 0x04ED8 */ u8 field_0x4ed8[6]; - /* 0x04EDE */ u16 mItemNowLife; - /* 0x04EE0 */ u8 field_0x4ee0[2]; - /* 0x04EE2 */ u8 mMesgStatus; - /* 0x04EE3 */ u8 field_0x4ee3; - /* 0x04EE4 */ u8 mRStatus; - /* 0x04EE5 */ u8 mAStatus; // B button - /* 0x04EE6 */ u8 field_0x4ee6; - /* 0x04EE7 */ u8 mNunStatus; - /* 0x04EE8 */ u8 mBottleStatus; - /* 0x04EE9 */ u8 mRemoConStatus; - /* 0x04EEA */ u8 field_0x4eea[2]; - /* 0x04EEC */ u8 mDoStatus; // A button - /* 0x04EED */ u8 field_0x4eed; - /* 0x04EEE */ u8 m3DStatus; - /* 0x04EEF */ u8 field_0x4eef; // related to NunStatusForce - /* 0x04EF0 */ u8 field_0x4ef0; // related to NunStatus - /* 0x04EF1 */ u8 field_0x4ef1; // related to RemoConStatusForce - /* 0x04EF2 */ u8 field_0x4ef2; // related to RemoConStatus - /* 0x04EF3 */ u8 field_0x4ef3[2]; - /* 0x04EF5 */ u8 m3DDirection; - /* 0x04EF6 */ u8 m3DDirectionForce; - /* 0x04EF7 */ u8 mCStickStatus; - /* 0x04EF8 */ u8 mCStickDirection; - /* 0x04EF9 */ u8 mCStickDirectionForce; - /* 0x04EFA */ u8 mSButtonStatus; - /* 0x04EFB */ u8 mZStatus; - /* 0x04EFC */ u8 mRStatusForce; - /* 0x04EFD */ u8 mAStatusForce; - /* 0x04EFE */ u8 field_0x4efe; - /* 0x04EFF */ u8 field_0x4eff; // related to NunStatusForce - /* 0x04F00 */ u8 mBottleStatusForce; - /* 0x04F01 */ u8 field_0x4f01; // related to RemoConStatusForce - /* 0x04F02 */ u8 field_0x4f02[2]; - /* 0x04F04 */ u8 mDoStatusForce; - /* 0x04F05 */ u8 mTouchStatusForce; - /* 0x04F06 */ u8 m3DStatusForce; - /* 0x04F07 */ u8 mCStickStatusForce; - /* 0x04F08 */ u8 mSButtonStatusForce; - /* 0x04F09 */ u8 mZStatusForce; - /* 0x04F0A */ u8 mRSetFlag; - /* 0x04F0B */ u8 mASetFlag; - /* 0x04F0C */ u8 field_0x4f0c; - /* 0x04F0D */ u8 mNunSetFlag; - /* 0x04F0E */ u8 mBottleSetFlag; - /* 0x04F0F */ u8 mRemoConSetFlag; - /* 0x04F10 */ u8 field_0x4f10[2]; - /* 0x04F12 */ u8 mDoSetFlag; - /* 0x04F13 */ u8 m3DSetFlag; - /* 0x04F14 */ u8 mCStickSetFlag; - /* 0x04F15 */ u8 mSButtonSetFlag; - /* 0x04F16 */ u8 mZSetFlag; - /* 0x04F17 */ u8 mRSetFlagForce; - /* 0x04F18 */ u8 mASetFlagForce; - /* 0x04F19 */ u8 field_0x4f19; - /* 0x04F1A */ u8 field_0x4f1a; // related to NunStatusForce - /* 0x04F1B */ u8 mBottleSetFlagForce; - /* 0x04F1C */ u8 field_0x4f1c; // related to RemoConStatusForce - /* 0x04F1D */ u8 field_0x4f1d[2]; - /* 0x04F1F */ u8 mDoSetFlagForce; - /* 0x04F20 */ u8 m3DSetFlagForce; - /* 0x04F21 */ u8 mCStickSetFlagForce; - /* 0x04F22 */ u8 mSButtonSetFlagForce; - /* 0x04F23 */ u8 mZSetFlagForce; - /* 0x04F24 */ u8 mXStatus; - /* 0x04F25 */ u8 mXStatusForce; - /* 0x04F26 */ u8 mXSetFlag; - /* 0x04F27 */ u8 mXSetFlagForce; - /* 0x04F28 */ u8 mYStatus; - /* 0x04F29 */ u8 mYStatusForce; - /* 0x04F2A */ u8 mYSetFlag; - /* 0x04F2B */ u8 mYSetFlagForce; - /* 0x04F2C */ u8 mNunZStatus; - /* 0x04F2D */ u8 mNunZSetFlag; - /* 0x04F2E */ u8 field_0x4fc6; // related to NunZStatusForce - /* 0x04F2F */ u8 field_0x4fc7; // related to NunZStatusForce - /* 0x04F30 */ u8 mNunCStatus; - /* 0x04F31 */ u8 mNunCSetFlag; - /* 0x04F32 */ u8 field_0x4fca; // related to NunCStatusForce - /* 0x04F33 */ u8 field_0x4fcb; // related to NunCStatusForce - /* 0x04F34 */ u8 mSelectItem[8]; - /* 0x04F3C */ u8 mSelectEquip[6]; - /* 0x04F42 */ u8 mBaseAnimeID; - /* 0x04F43 */ u8 mFaceAnimeID; - /* 0x04F44 */ u8 mNowAnimeID; - /* 0x04F45 */ u8 mItemSlot; - /* 0x04F46 */ u8 mItemID; - /* 0x04F47 */ u8 field_0x4f47[2]; - /* 0x04F49 */ u8 mDirection; - /* 0x04F4A */ u8 field_0x4f4a; - /* 0x04F4B */ u8 field_0x4f4b; // related to itemInit - /* 0x04F4C */ u8 field_0x4f4c; // related to itemInit - /* 0x04F4D */ u8 field_0x4f4d; - /* 0x04F4E */ u8 mMesgCancelButton; - /* 0x04F4F */ u8 field_0x4f4f[2]; - /* 0x04F51 */ u8 mGameoverStatus; - /* 0x04F52 */ u8 field_0x4f52[5]; - /* 0x04F57 */ u8 mHeapLockFlag; - /* 0x04F58 */ u8 mSubHeapLockFlag[2]; - /* 0x04F5A */ u8 mNowVibration; - /* 0x04F5B */ u8 field_0x4f5b[2]; - /* 0x04F5D */ u8 mWolfAbility[12]; - /* 0x04F69 */ u8 mNeedLightDropNum; - /* 0x04F6A */ u8 field_0x4f6a[18]; - /* 0x04F7C */ u8 mMesgBgm; - /* 0x04F7D */ bool mPauseFlag; - /* 0x04F7E */ u8 mItemLifeCountType; - /* 0x04F7F */ u8 mOxygenShowFlag; - /* 0x04F80 */ u8 mShow2D; - /* 0x04F81 */ u8 field_0x4f81[3]; - /* 0x04F84 */ JKRExpHeap* mExpHeap2D; - /* 0x04F88 */ JKRExpHeap* mSubExpHeap2D[2]; - /* 0x04F90 */ JKRExpHeap* mMsgExpHeap; - /* 0x04F94 */ char mWarpItemStage[8]; - /* 0x04F9C */ cXyz mWarpItemPos; - /* 0x04FA8 */ s16 mWarpItemAngle; - /* 0x04FAA */ s8 mWarpItemRoom; - /* 0x04FAB */ u8 field_0x4fab; // related to setWarpItemData - /* 0x04FAC */ u8 field_0x4fac; // related to setWarpItemData - /* 0x04FAD */ u8 field_0x4fad[3]; + /* 0x04E84 */ dComIfG_item_info_class mItemInfo; /* 0x04FB0 */ dComIfG_MesgCamInfo_c mMesgCamInfo; /* 0x04FE0 */ u32 mPlayerStatus[1][4]; /* 0x04FF0 */ u8 field_0x4ff0[0x8]; @@ -1034,6 +1051,9 @@ u8 dComIfGs_getSelectMixItemNoArrowIndex(int i_selmixItemIdx); BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no); s8 dComIfGs_PolyDamageOff_Check(); void dComIfGs_Grass_hide_Set(s8 param_0); +void dComIfGs_onGetMagicUseFlag(); +void dComIfG_playerStatusD(); +void dComIfG_playerStatusD_pre_clear(); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); @@ -1469,6 +1489,10 @@ inline dSv_save_c* dComIfGs_getSaveData() { return &g_dComIfG_gameInfo.info.getSavedata(); } +inline dSv_info_c* dComIfGs_getSaveInfo() { + return &g_dComIfG_gameInfo.info; +} + inline void dComIfGs_setLineUpItem() { g_dComIfG_gameInfo.info.getPlayer().getItem().setLineUpItem(); } @@ -2011,6 +2035,46 @@ inline void dComIfGs_setBaitItem(u8 i_item) { g_dComIfG_gameInfo.info.getPlayer().getItem().setBaitItem(i_item); } +inline void dComIfGs_setBombMax(u8 i_type, u8 i_max) { + g_dComIfG_gameInfo.info.getPlayer().getItemMax().setBombNum(i_type, i_max); +} + +inline u8 dComIfGs_getPalLanguage() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getPalLanguage(); +} + +inline u8 dComIfGs_getClearCount() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerInfo().getClearCount(); +} + +inline void dComIfGs_offGetMagicUseFlag() { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().offMagicFlag(0); +} + +inline void dComIfGs_offLightDropGetFlag(u8 i_level) { + g_dComIfG_gameInfo.info.getPlayer().getLightDrop().offLightDropGetFlag(i_level); +} + +inline void dComIfGs_setBombMax(u8 i_max) { + g_dComIfG_gameInfo.info.getPlayer().getItemMax().setBombNum(0, i_max); +} + +inline u8 dComIfGs_getBombMax() { + return g_dComIfG_gameInfo.info.getPlayer().getItemMax().getBombNum(0); +} + +inline void dComIfGs_setBombNum(u8 i_num) { + g_dComIfG_gameInfo.info.getPlayer().getItemRecord().setBombNum(0, i_num); +} + +inline void dComIfGs_offDarkClearLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offDarkClearLV(i_no); +} + +inline void dComIfGs_offTransformLV(int i_no) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().offTransformLV(i_no); +} + void dComIfGp_setSelectItem(int index); s32 dComIfGp_offHeapLockFlag(int flag); void dComIfGp_createSubExpHeap2D(); @@ -2833,7 +2897,7 @@ inline void dComIfGp_setItemNowMagic(s16 magic) { g_dComIfG_gameInfo.play.setItemNowMagic(magic); } -inline void dComIfGp_setOxygen(int oxygen) { +inline void dComIfGp_setOxygen(s32 oxygen) { g_dComIfG_gameInfo.play.setOxygen(oxygen); } @@ -3353,6 +3417,10 @@ inline void dComIfGp_setCurrentViewport(view_port_class* i_viewport) { g_dComIfG_gameInfo.play.setCurrentViewport(i_viewport); } +inline s16 dComIfGp_getItemMaxBombNumCount() { + return g_dComIfG_gameInfo.play.getItemMaxBombNumCount(fpcNm_ITEM_NORMAL_BOMB); +} + inline BOOL dComIfGp_event_compulsory(void* param_0, const char* param_1, u16 param_2) { return g_dComIfG_gameInfo.play.getEvent().compulsory(param_0, param_1, param_2); } diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index ace4cf2ab8..74d0542044 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -89,6 +89,26 @@ private: /* 0x160 */ u8 mAlpha; }; +class dDlst_2DQuad_c : public dDlst_base_c { +public: + dDlst_2DQuad_c() {} + /* 80051CF0 */ virtual void draw(); + + void init(s16 posX, s16 posY, s16 width, s16 height, GXColor& color) { + mPosX = posX; + mPosY = posY; + mSizeX = width; + mSizeY = height; + mColor = color; + } + + /* 0x4 */ s16 mPosX; + /* 0x6 */ s16 mPosY; + /* 0x8 */ s16 mSizeX; + /* 0xA */ s16 mSizeY; + /* 0xC */ GXColor mColor; +}; + class dDlst_2DT2_c : public dDlst_base_c { public: /* 80052354 */ virtual void draw(); @@ -305,6 +325,10 @@ public: /* 0x12 */ DB_LIST_2D_SCREEN, /* 0x13 */ DB_LIST_MIDDLE, /* 0x14 */ DB_LIST_3D_LAST, +#if VERSION > VERSION_GCN_JPN + DB_LIST_CURSOR, +#endif + DB_LIST_MAX, }; void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaStart, mp2DOpaEnd, dlst); } @@ -425,7 +449,7 @@ public: static u8 mWipe; private: - /* 0x00000 */ J3DDrawBuffer* mDrawBuffers[21]; + /* 0x00000 */ J3DDrawBuffer* mDrawBuffers[DB_LIST_MAX]; /* 0x00054 */ dDlst_base_c* mpCopy2DDrawLists[4]; /* 0x00064 */ dDlst_base_c** mpCopy2DStart; /* 0x00068 */ dDlst_base_c** mpCopy2DEnd; diff --git a/include/d/d_event.h b/include/d/d_event.h index a5d2a83648..6f8e892a30 100644 --- a/include/d/d_event.h +++ b/include/d/d_event.h @@ -173,6 +173,9 @@ public: /* 0x128 */ u8 mCompulsory; /* 0x129 */ bool mRoomInfoSet; /* 0x12C */ int mRoomNo; +#ifdef DEBUG + /* 0x130 */ u8 field_0x130; +#endif }; // Size = 0x130 int dEv_defaultSkipProc(void* param_0, int param_1); diff --git a/include/d/d_event_manager.h b/include/d/d_event_manager.h index 3ffc942189..6540a426be 100644 --- a/include/d/d_event_manager.h +++ b/include/d/d_event_manager.h @@ -25,6 +25,12 @@ public: #define EVT_SE_RIDDLE_A 1 #define EVT_SE_RIDDLE_B 2 +#ifdef DEBUG +#define EVENT_LIST_NUM 12 +#else +#define EVENT_LIST_NUM 11 +#endif + class dEvent_manager_c { public: void* getSubstance(dEvDtData_c* p_data, int type); @@ -91,7 +97,7 @@ public: static s16 makeCompositId(s16 a, int b) { return a | (b << 8); } private: - /* 0x0000 */ dEvDtBase_c mEventList[11]; + /* 0x0000 */ dEvDtBase_c mEventList[EVENT_LIST_NUM]; /* 0x018C */ s32 mCameraPlay; /* 0x0190 */ dEvent_exception_c mEventException; /* 0x019C */ cXyz mGoal; diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index 74d5497d91..c760ab5590 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -109,6 +109,11 @@ struct GB_MAPLE_COL_CHANGE { /* 0x00 */ J3DLightObj light_obj; }; // Size: 0x74 +struct NAVYCHAN { + /* 0x0 */ u8 field_0x0[0x4 - 0x0]; + /* 0x4 */ cXyz field_0x4; +}; + struct LightStatus { /* 0x00 */ Vec position; /* 0x0C */ Vec field_0xc; @@ -273,6 +278,10 @@ public: /* 0x09B8 */ DUNGEON_LIGHT dungeonlight[8]; /* 0x0C18 */ BOSS_LIGHT field_0x0c18[8]; /* 0x0D58 */ BOSS_LIGHT field_0x0d58[6]; +#ifdef DEBUG + /* 0x0E48 */ NAVYCHAN navy; + /* 0x0E58 */ u8 field_0xe58[0xE68 - 0xE58]; // part of NAVYCHAN? +#endif /* 0x0E48 */ GB_WIND_INFLUENCE global_wind_influence; /* 0x0E5C */ f32 custom_windpower; /* 0x0E60 */ f32 unk_0xe60; diff --git a/include/d/d_menu_window_HIO.h b/include/d/d_menu_window_HIO.h index f3308eb6f2..b26cd8ce7c 100644 --- a/include/d/d_menu_window_HIO.h +++ b/include/d/d_menu_window_HIO.h @@ -37,6 +37,11 @@ public: /* 801F9E14 */ bool getBombFlag(); /* 801F9E1C */ bool getArrowFlag(); /* 801F9E24 */ bool getPachinkoFlag(); + void update(); + + void setArrowFlag(u8 i_flag) { mArrowFlag = i_flag; } + void setPachinkoFlag(u8 i_flag) { mPachinkoFlag = i_flag; } + void setBombFlag(u8 i_flag) { mBombFlag = i_flag; } /* 801F9EE0 */ virtual ~dMw_HIO_c() {} diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index a11eade4d8..d850a378d8 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -179,6 +179,8 @@ public: mCollectCursorPosY = y; } void setMapDrugFlag(u8 flag) { mMapDrugFlag = flag; } + void offTempBit(int i_bit) { mTempBits &= ~(1 << i_bit); } + void onTempBit(int i_bit) { mTempBits |= (1 << i_bit); } bool isTempBit(int bit) { return mTempBits & (1 << bit); } void offSub2DStatus(int bit) { mSub2DStatus &= ~(1 << bit); } void onSub2DStatus(int bit) { mSub2DStatus |= 1 << bit; } @@ -799,6 +801,18 @@ inline void dMeter2Info_setHorseLifeCount(s16 i_count) { g_meter2_info.setHorseLifeCount(i_count); } +inline void dMeter2Info_offTempBit(int i_bit) { + g_meter2_info.offTempBit(i_bit); +} + +inline void dMeter2Info_onTempBit(int i_bit) { + g_meter2_info.onTempBit(i_bit); +} + +inline bool dMeter2Info_isNextStage(const char*, s16, s16, s16) { + return false; +} + const char* dMeter2Info_getPlusTextureName(); const char* dMeter2Info_getNumberTextureName(int pIndex); int dMeter2Info_recieveLetter(); diff --git a/include/d/d_meter_HIO.h b/include/d/d_meter_HIO.h index 799633c439..9c7d6d6aa5 100644 --- a/include/d/d_meter_HIO.h +++ b/include/d/d_meter_HIO.h @@ -2,6 +2,7 @@ #define D_METER_D_METER_HIO_H #include "JSystem/JUtility/TColor.h" +#include "JSystem/JHostIO/JORReflexible.h" #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" #include "global.h" @@ -1085,7 +1086,7 @@ public: /* 0x179 */ bool mIconDisplay[22]; }; // Size: 0x190 -class dMeter_fmapHIO_c { +class dMeter_fmapHIO_c : public JORReflexible { public: enum { /* 0x0 */ REGION_ORDONA, @@ -1130,6 +1131,12 @@ public: }; // Size: 0x28 /* 802006C8 */ dMeter_fmapHIO_c(); +#ifdef DEBUG + void update(); + + virtual void listenPropertyEvent(const JORPropertyEvent*); + virtual void genMessage(JORMContext*); +#endif /* 80200BCC */ virtual ~dMeter_fmapHIO_c(); /* 0x004 */ s8 field_0x4; diff --git a/include/d/d_resorce.h b/include/d/d_resorce.h index bce624e396..5ce6322755 100644 --- a/include/d/d_resorce.h +++ b/include/d/d_resorce.h @@ -52,6 +52,9 @@ private: /* 0x18 */ JKRHeap* heap; /* 0x1C */ JKRSolidHeap* mDataHeap; /* 0x20 */ void** mRes; +#ifdef DEBUG + /* 0x24 */ void* unk_0x24; +#endif }; // Size: 0x24 STATIC_ASSERT(sizeof(dRes_info_c) == 0x24); diff --git a/include/d/d_s_menu.h b/include/d/d_s_menu.h index c9313abc7d..751ab970e0 100644 --- a/include/d/d_s_menu.h +++ b/include/d/d_s_menu.h @@ -1,5 +1,90 @@ #ifndef D_S_D_S_MENU_H #define D_S_D_S_MENU_H +#include "JSystem/JUtility/JUTResFont.h" +#include "f_op/f_op_scene_mng.h" + +class mDoDvdThd_toMainRam_c; + +#ifdef DEBUG +class myFontClass : public JUTResFont { +public: + myFontClass(const ResFONT* i_font, JKRHeap* i_heap) + : JUTResFont(i_font, i_heap), + field_0x70((ResFONT*)JUTResFONT_Ascfont_fix12, i_heap) + {} + + virtual ~myFontClass(); + virtual f32 drawChar_scale(f32 param_0, f32 param_1, f32 param_2, f32 param_3, int param_4, bool param_5); + + /* 0x70 */ JUTResFont field_0x70; +}; + +struct menu_category_data_class { + u8 name[68]; +}; + +struct menu_category_class { + /* 0x0 */ u8 num; + /* 0x4 */ menu_category_data_class* data; +}; + +struct menu_data_class { + /* 0x00 */ char env_data[65]; + /* 0x41 */ char stage_name[8]; + /* 0x49 */ s8 room_no; + /* 0x4A */ u8 point; + /* 0x4B */ s8 layer; +}; + +struct menu_stage_class { + /* 0x00 */ u8 field_0x00[0x41 - 0x00]; + /* 0x41 */ u8 field_0x41; + /* 0x42 */ u8 field_0x42; + /* 0x43 */ u8 field_0x43; + /* 0x44 */ menu_data_class* data; +}; + +struct menu_info_class { + /* 0x0 */ u8 num; + /* 0x4 */ menu_stage_class* stage_data; +}; + +class dScnMenu_c : public scene_class { +public: + static bool isAutoSelect() { return m_autoSelect; } + + static char cursolStageName[8]; + static int cursolRoomNo; + static int cursolLayer; + static int cursolPoint; + + static u8 m_error_flags; + static bool m_autoSelect; + static int m_autoCursolID; + static int m_autoGroupPoint; + + /* 0x1C8 */ request_of_phase_process_class phase; + /* 0x1D0 */ mDoDvdThd_toMainRam_c* command; + /* 0x1D4 */ mDoDvdThd_toMainRam_c* fontCommand; + /* 0x1D8 */ menu_info_class* info; + /* 0x1DC */ menu_category_class* category_info; + /* 0x1E0 */ ResFONT* fontRes; + /* 0x1E4 */ myFontClass* font; + /* 0x1E8 */ u8 select_point; + /* 0x1E9 */ u8 cursor_move_timer; + /* 0x1EA */ u8 group_move_timer; + /* 0x1EB */ u8 category_move_timer; + /* 0x1EC */ u8 week_move_timer; + /* 0x1ED */ u8 current_category; + /* 0x1EE */ u8 field_0x1ee; +}; + +extern int g_playerKind; +extern int g_debugHpMode; +extern int g_horsePosInit; +#else +class dScnMenu_c {}; +#endif #endif /* D_S_D_S_MENU_H */ diff --git a/include/d/d_s_play.h b/include/d/d_s_play.h index 4c7dc454a8..0f961ccf84 100644 --- a/include/d/d_s_play.h +++ b/include/d/d_s_play.h @@ -41,6 +41,23 @@ public: /* 0x14 */ dScnPly_env_debugHIO_c mDebug; }; +class dScnPly_preset_HIO_c : public JORReflexible { +public: + dScnPly_preset_HIO_c(); + void exePreset(); + + virtual void listenPropertyEvent(const JORPropertyEvent*); + virtual void genMessage(JORMContext*); + virtual ~dScnPly_preset_HIO_c() {} + + /* 0x0004 */ u8 field_0x4; + /* 0x0005 */ u8 field_0x5; + /* 0x0006 */ u8 mPresetData[10000]; + /* 0x2716 */ u8 field_0x2716; + /* 0x2717 */ u8 field_0x2717; + /* 0x2718 */ char mFilename[100]; +}; + class dScnPly_c : public scene_class { public: /* 80259400 */ s8 calcPauseTimer(); @@ -62,6 +79,10 @@ public: extern dScnPly_env_HIO_c g_envHIO; extern dScnPly_reg_HIO_c g_regHIO; +#ifdef DEBUG +extern dScnPly_preset_HIO_c g_presetHIO; +#endif + /** * === Register Usage === * Short Reg(00-09) ... -32768 - +32768 diff --git a/include/d/d_save.h b/include/d/d_save.h index 3ca0ce4642..3161dce6ad 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -6,6 +6,8 @@ #include <dolphin/os.h> #include "global.h" #include "f_pc/f_pc_name.h" +#include "JSystem/JUtility/JUTAssert.h" +#include "JSystem/JHostIO/JORReflexible.h" #define DEFAULT_SELECT_ITEM_INDEX 0 #define MAX_SELECT_ITEM 4 @@ -18,7 +20,6 @@ #define MAX_INSECT_NUM 24 #define MAX_VISIBLE_HEARTPIECES 4 #define MAX_POH_NUM 100 -#define BOTTLE_MAX 4 #define TBOX_MAX 64 #define DSV_MEMBIT_ENUM_MAX 8 #define ITEM_MAX_DAN 128 @@ -35,6 +36,9 @@ #define GIANT_WALLET_MAX 1000 #define MAX_FINDABLE_FISHES 6 +#define ITEM_XY_MAX_DUMMY 8 +#define ITEM_BIT_MAX 0x100 + enum ButtonIndexes { /* 0 */ A_BUTTON, /* 1 */ B_BUTTON, @@ -133,6 +137,8 @@ public: void setMixItemIndex(int i_no, u8 i_slotNo); u8 getMixItemIndex(int i_no) const; u16 getRupeeMax() const; + void onMagicFlag(u8 i_magic); + void offMagicFlag(u8 i_magic); int isMagicFlag(u8 i_magic) const; u16 getMaxLife() const { return mMaxLife; } @@ -181,8 +187,10 @@ class dSv_player_status_b_c { public: void init(); void onDarkClearLV(int i_no); + void offDarkClearLV(int i_no); BOOL isDarkClearLV(int i_no) const; void onTransformLV(int i_no); + void offTransformLV(int i_no); BOOL isTransformLV(int i_no) const; void setDateIpl(s64 i_time) { mDateIpl = i_time; } @@ -260,7 +268,7 @@ private: /* 0x00 */ cXyz mPos; /* 0x0C */ s16 mAngleY; /* 0x0E */ char mName[8]; - /* 0x16 */ u8 mLastSpawnId; + /* 0x16 */ s8 mLastSpawnId; /* 0x17 */ u8 mRegionNo; /* 0x18 */ bool mFieldDataExistFlag; /* 0x19 */ u8 mRegion; @@ -320,6 +328,7 @@ public: void setBaitItem(u8 i_itemNo); static const int BOMB_BAG_MAX = 3; + static const int BOTTLE_MAX = 4; private: /* 0x00 */ u8 mItems[24]; @@ -376,10 +385,13 @@ class dSv_player_collect_c { public: void init(); void setCollect(int i_item_type, u8 i_item); + void offCollect(int i_item_type, u8 i_item); BOOL isCollect(int i_item_type, u8 i_item) const; void onCollectCrystal(u8 i_item); + void offCollectCrystal(u8 i_item); BOOL isCollectCrystal(u8 i_item) const; void onCollectMirror(u8 i_item); + void offCollectMirror(u8 i_item); BOOL isCollectMirror(u8 i_item) const; u8 getPohNum() { return mPohNum; } @@ -409,6 +421,7 @@ public: void setLightDropNum(u8 i_nowLevel, u8 i_dropNum); u8 getLightDropNum(u8 i_nowLevel) const; void onLightDropGetFlag(u8 i_nowLevel); + void offLightDropGetFlag(u8 i_nowLevel); BOOL isLightDropGetFlag(u8 i_nowLevel) const; private: @@ -455,6 +468,7 @@ public: void setHorseName(const char* i_name) { strcpy((char*)mHorseName, i_name); } void setTotalTime(s64 i_time) { mTotalTime = i_time; } s64 getTotalTime() const { return mTotalTime; } + u8 getClearCount() const { return mClearCount; } void addDeathCount() { if (mDeathCount < 0xFFFF) { @@ -463,8 +477,7 @@ public: } private: - /* 0x00 */ u32 unk0; - /* 0x04 */ u32 unk4; + /* 0x00 */ u64 unk0; /* 0x08 */ s64 mTotalTime; /* 0x10 */ u16 unk16; /* 0x12 */ u16 mDeathCount; @@ -484,6 +497,7 @@ public: void setSound(u8 i_mode); u8 getVibration(); void setVibration(u8 i_status); + u8 getPalLanguage() const; u8 getAttentionType() { return mAttentionType; } void setAttentionType(u8 i_mAttentionType) { mAttentionType = i_mAttentionType; } @@ -498,12 +512,20 @@ public: bool getPointer() { return mPointer; } void setPointer(bool i_mPointer) { mPointer = i_mPointer; } + enum dSv_config_language { + LANGAUGE_ENGLISH, + LANGAUGE_GERMAN, + LANGAUGE_FRENCH, + LANGAUGE_SPANISH, + LANGAUGE_ITALIAN, + }; + private: /* 0x0 */ u8 unk0; /* 0x1 */ u8 mSoundMode; /* 0x2 */ u8 mAttentionType; // Lock-On Type; 0 : hold, 1 : switch /* 0x3 */ u8 mVibration; // Rumble status - /* 0x4 */ u8 unk4; + /* 0x4 */ u8 mLanguage; /* 0x5 */ u8 unk5; /* 0x6 */ u16 mCalibrateDist; // Wii pointer horizontal calibration. Default is 0x015E /* 0x8 */ u8 mCalValue; // Wii pointer vertical calibration. Default is 0x00 @@ -558,6 +580,17 @@ private: class dSv_memBit_c { public: + class WarpItemData_c { + public: + /* 0x04F94 */ char mWarpItemStage[8]; + /* 0x04F9C */ cXyz mWarpItemPos; + /* 0x04FA8 */ s16 mWarpItemAngle; + /* 0x04FAA */ s8 mWarpItemRoom; + /* 0x04FAB */ u8 field_0x4fab; // related to setWarpItemData + /* 0x04FAC */ u8 field_0x4fac; // related to setWarpItemData + /* 0x04FAD */ u8 field_0x4fad[3]; + }; + enum { /* 0x0 */ MAP, /* 0x1 */ COMPASS, @@ -578,8 +611,10 @@ public: BOOL isSwitch(int i_no) const; BOOL revSwitch(int i_no); void onItem(int i_no); + void offItem(int i_no); BOOL isItem(int i_no) const; void onDungeonItem(int i_no); + void offDungeonItem(int i_no); s32 isDungeonItem(int i_no) const; u8 getKeyNum() { return mKeyNum; } @@ -633,8 +668,7 @@ public: u32 getBalloonScore() const { return mBalloonScore; } private: - /* 0x00 */ u8 unk0; - /* 0x01 */ u8 unk1[3]; + /* 0x00 */ u8 unk0[1][4]; /* 0x04 */ u32 mStarTime; /* 0x08 */ u32 mBalloonScore; /* 0x0C */ u32 mRaceGameTime; @@ -677,6 +711,7 @@ public: BOOL isSwitch(int i_no) const; BOOL revSwitch(int i_no); void onItem(int i_no); + void offItem(int i_no); BOOL isItem(int i_no) const; void reset() { mStageNo = -1; } @@ -704,8 +739,10 @@ public: BOOL isOneSwitch(int i_no) const; BOOL revOneSwitch(int i_no); void onItem(int i_no); + void offItem(int i_no); BOOL isItem(int i_no) const; void onOneItem(int i_no); + void offOneItem(int i_no); BOOL isOneItem(int i_no) const; private: @@ -723,7 +760,7 @@ public: void off(int i_id); BOOL is(int i_id) const; - static const int ACTOR_MAX = 0xFFFF; + static const int ACTOR_MAX = 0x80; private: /* 0x00 */ u32 mActorFlags[4]; @@ -739,7 +776,7 @@ public: dSv_zoneActor_c& getActor() { return mActor; } const dSv_zoneActor_c& getActor() const { return mActor; } - s8& getRoomNo() { return mRoomNo; } + int getRoomNo() const { return mRoomNo; } void reset() { mRoomNo = -1; } private: @@ -836,7 +873,11 @@ public: dSv_event_c& getEvent() { return mEvent; } dSv_memory_c& getSave(int i_stageNo) { return mSave[i_stageNo]; } dSv_MiniGame_c& getMiniGame() { return mMiniGame; } - void putSave(int i_stageNo, dSv_memory_c mem) { mSave[i_stageNo] = mem; } + + void putSave(int i_stageNo, dSv_memory_c mem) { + JUT_ASSERT(1417, 0 <= i_stageNo && i_stageNo < dSv_save_c::STAGE_MAX); + mSave[i_stageNo] = mem; + } static const int STAGE_MAX = 32; static const int STAGE2_MAX = 64; @@ -850,6 +891,28 @@ public: /* 0x940 */ dSv_MiniGame_c mMiniGame; }; // Size: 0x958 +class flagFile_c : public JORReflexible { +public: + enum Flag_e { + FLAG_SCENE_e = 0x1, + FLAG_SAVE_e = 0x2, + FLAG_MEM_e = 0x4, + FLAG_DAN_e = 0x8, + FLAG_ALL_e = 0xF, + }; + + flagFile_c(); + ~flagFile_c(); + BOOL check_flag(u16); + + virtual void listenPropertyEvent(const JORPropertyEvent*); + virtual void genMessage(JORMContext*); + + /* 0x4 */ u8 unk_0x4[0x6 - 0x4]; + /* 0x6 */ u16 m_flags; + /* 0x8 */ s8 m_no; +}; + class dSv_info_c { public: void init(); @@ -895,6 +958,10 @@ public: u8 getNewFile() const { return mNewFile; } void setNewFile(u8 file) { mNewFile = file; } + void setSavedata(dSv_save_c& i_save) { mSavedata = i_save; } + void setMemory(dSv_memory_c& i_memory) { mMemory = i_memory; } + void setDan(dSv_danBit_c& i_dan) { mDan = i_dan; } + static const int MEMORY_SWITCH = 0x80; static const int DAN_SWITCH = 0x40; static const int ZONE_SWITCH = 0x20; @@ -907,7 +974,11 @@ public: static const int ZONE_MAX = 0x20; -private: +#if VERSION == VERSION_SHIELD_DEBUG + /* 0x000 */ u8 unk_0x0; + /* 0x001 */ u8 unk_0x1; + /* 0x000 */ u8 unk_0x2[0x48 - 0x2]; +#endif /* 0x000 */ dSv_save_c mSavedata; /* 0x958 */ dSv_memory_c mMemory; /* 0x978 */ dSv_danBit_c mDan; @@ -922,6 +993,9 @@ private: /* 0xF1B */ u8 field_0xf1b[13]; /* 0xF28 */ s64 mStartTime; /* 0xF30 */ s64 mSaveTotalTime; +#if VERSION == VERSION_SHIELD_DEBUG + /* 0xF80 */ flagFile_c mFlagFile; +#endif }; // Size: 0xF38 class dSv_event_flag_c { @@ -930,6 +1004,9 @@ public: #include "d/d_save_bit_labels.inc" }; +#if VERSION > VERSION_GCN_JPN + const +#endif static u16 saveBitLabels[822]; }; @@ -938,7 +1015,7 @@ public: enum { #include "d/d_save_temp_bit_labels.inc" }; - + static u16 const tempBitLabels[185]; }; diff --git a/include/d/d_vibration.h b/include/d/d_vibration.h index 9fd24e955a..e2ed5272e6 100644 --- a/include/d/d_vibration.h +++ b/include/d/d_vibration.h @@ -2,6 +2,7 @@ #define D_D_VIBRATION_H #include "SSystem/SComponent/c_xyz.h" +#include "JSystem/JHostIO/JORReflexible.h" struct vib_pattern { /* 0x0 */ u16 rounds; @@ -42,6 +43,25 @@ enum VIBMODE_QUAKE { VIBMODE_Q_MAX }; +class dVibTest_c : public JORReflexible { +public: + dVibTest_c(); + + virtual void listenPropertyEvent(const JORPropertyEvent*); + virtual void genMessage(JORMContext*); + virtual ~dVibTest_c() {} + + /* 0x04 */ s8 field_0x4; + /* 0x06 */ u16 m_pattern; + /* 0x08 */ u16 m_pattern2; + /* 0x0A */ u16 field_0xa; + /* 0x0C */ s16 m_randombit; + /* 0x0E */ s16 m_length; + /* 0x10 */ int field_0x10; + /* 0x14 */ int m_vibswitch; + /* 0x18 */ u16 m_displayDbg; +}; + class dVibration_c { public: enum { @@ -68,6 +88,10 @@ public: static const vib_pattern CQ_patt[VIBMODE_Q_MAX]; private: +#ifdef DEBUG + /* 0x00 */ dVibTest_c mVibTest; +#endif + class { public: class { diff --git a/include/f_ap/f_ap_game.h b/include/f_ap/f_ap_game.h index 931c282a7f..9abf333966 100644 --- a/include/f_ap/f_ap_game.h +++ b/include/f_ap/f_ap_game.h @@ -42,6 +42,14 @@ public: extern fapGm_HIO_c g_HIO; +inline void fapGmHIO_offMenu() { + g_HIO.mDisplayPrint &= (u8)~2; +} + +inline void fapGmHIO_onMenu() { + g_HIO.mDisplayPrint |= (u8)2; +} + inline BOOL fapGmHIO_isMenu() { return g_HIO.mDisplayPrint & 2; } diff --git a/include/f_op/f_op_msg_mng.h b/include/f_op/f_op_msg_mng.h index 8a02551996..214d38da8e 100644 --- a/include/f_op/f_op_msg_mng.h +++ b/include/f_op/f_op_msg_mng.h @@ -61,5 +61,6 @@ inline fpc_ProcID fopMsgM_Timer_create(s16 i_procName, u8 i_mode, u32 i_limitMs, return fop_Timer_create(i_procName, i_mode, i_limitMs, i_type, param_4, param_5, param_6, param_7, param_8, i_createFunc); } +u8 fopMsgM_itemNumIdx(u8 i_no); #endif diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 1fdb9e815f..7cf6cd680c 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -838,6 +838,11 @@ OSThread* mDoExt_GetCurrentRunningThread(); void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareModelData); void mDoExt_btkAnmRemove(J3DModelData* i_modelData); +#if VERSION == VERSION_SHIELD_DEBUG +s32 mDoExt_getSafeZeldaHeapSize(); +void mDoExt_addSafeZeldaHeapSize(s32); +#endif + struct JUTFont; JUTFont* mDoExt_getMesgFont(); JUTFont* mDoExt_getSubFont(); |
