summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-04-06 11:08:25 -0700
committerGitHub <noreply@github.com>2025-04-06 21:08:25 +0300
commit54dd7640969e1f414f9b1111f874f85171ab6987 (patch)
tree8f83caa22c5ab811736e3625be599061d478af10 /include
parent4361019959acf84f347fec62315f8aefb2d63a6f (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.h1
-rw-r--r--include/JSystem/JUtility/JUTResFont.h2
-rw-r--r--include/SSystem/SComponent/c_cc_s.h9
-rw-r--r--include/d/d_attention.h24
-rw-r--r--include/d/d_bg_s.h33
-rw-r--r--include/d/d_cc_s.h3
-rw-r--r--include/d/d_com_inf_game.h778
-rw-r--r--include/d/d_drawlist.h26
-rw-r--r--include/d/d_event.h3
-rw-r--r--include/d/d_event_manager.h8
-rw-r--r--include/d/d_kankyo.h9
-rw-r--r--include/d/d_menu_window_HIO.h5
-rw-r--r--include/d/d_meter2_info.h14
-rw-r--r--include/d/d_meter_HIO.h9
-rw-r--r--include/d/d_resorce.h3
-rw-r--r--include/d/d_s_menu.h85
-rw-r--r--include/d/d_s_play.h21
-rw-r--r--include/d/d_save.h101
-rw-r--r--include/d/d_vibration.h24
-rw-r--r--include/f_ap/f_ap_game.h8
-rw-r--r--include/f_op/f_op_msg_mng.h1
-rw-r--r--include/m_Do/m_Do_ext.h5
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(&param_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();