summaryrefslogtreecommitdiff
path: root/include/d
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2026-06-23 20:52:55 +0100
committerGitHub <noreply@github.com>2026-06-23 12:52:55 -0700
commitc8fa8c9e2aab72cf4e5db0e5d1c84a9ea6ee6eb0 (patch)
treee74401818820cb5571533e10e3f1b987bdb8b75a /include/d
parent8eae8919c8f53c4c5015ef9b664c6cd2f7c31f8b (diff)
Link d_cursor_mng for all Wii versions (#3164)HEADmain
Diffstat (limited to 'include/d')
-rw-r--r--include/d/d_com_inf_game.h167
-rw-r--r--include/d/d_cursor_mng.h46
-rw-r--r--include/d/d_item.h14
-rw-r--r--include/d/d_rvl_fb_copy.h6
-rw-r--r--include/d/d_save.h4
5 files changed, 182 insertions, 55 deletions
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 1d6edbb860..c959c1cb74 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -310,9 +310,9 @@ public:
/* 0x04EEC */ u8 mDoStatus; // A button
/* 0x04EED */ u8 field_0x4eed;
/* 0x04EEE */ u8 m3DStatus;
- /* 0x04EEF */ u8 field_0x4eef; // related to NunStatusForce
+ /* 0x04EEF */ u8 mNunDirectionForce;
/* 0x04EF0 */ u8 field_0x4ef0; // related to NunStatus
- /* 0x04EF1 */ u8 field_0x4ef1; // related to RemoConStatusForce
+ /* 0x04EF1 */ u8 mRemoConDirectionForce;
/* 0x04EF2 */ u8 field_0x4ef2; // related to RemoConStatus
/* 0x04EF3 */ u8 field_0x4ef3[2];
/* 0x04EF5 */ u8 m3DDirection;
@@ -325,9 +325,9 @@ public:
/* 0x04EFC */ u8 mRStatusForce;
/* 0x04EFD */ u8 mAStatusForce;
/* 0x04EFE */ u8 field_0x4efe;
- /* 0x04EFF */ u8 field_0x4eff; // related to NunStatusForce
+ /* 0x04EFF */ u8 mNunStatusForce;
/* 0x04F00 */ u8 mBottleStatusForce;
- /* 0x04F01 */ u8 field_0x4f01; // related to RemoConStatusForce
+ /* 0x04F01 */ u8 mRemoConStatusForce;
/* 0x04F02 */ u8 field_0x4f02[2];
/* 0x04F04 */ u8 mDoStatusForce;
/* 0x04F05 */ u8 mTouchStatusForce;
@@ -350,9 +350,9 @@ public:
/* 0x04F17 */ u8 mRSetFlagForce;
/* 0x04F18 */ u8 mASetFlagForce;
/* 0x04F19 */ u8 field_0x4f19;
- /* 0x04F1A */ u8 field_0x4f1a; // related to NunStatusForce
+ /* 0x04F1A */ u8 mNunSetFlagForce;
/* 0x04F1B */ u8 mBottleSetFlagForce;
- /* 0x04F1C */ u8 field_0x4f1c; // related to RemoConStatusForce
+ /* 0x04F1C */ u8 mRemoConSetFlagForce;
/* 0x04F1D */ u8 field_0x4f1d[2];
/* 0x04F1F */ u8 mDoSetFlagForce;
/* 0x04F20 */ u8 m3DSetFlagForce;
@@ -369,12 +369,12 @@ public:
/* 0x04F2B */ u8 mYSetFlagForce;
/* 0x04F2C */ u8 mNunZStatus;
/* 0x04F2D */ u8 mNunZSetFlag;
- /* 0x04F2E */ u8 field_0x4fc6; // related to NunZStatusForce
- /* 0x04F2F */ u8 field_0x4fc7; // related to NunZStatusForce
+ /* 0x04F2E */ u8 mNunZStatusForce;
+ /* 0x04F2F */ u8 mNunZSetFlagForce;
/* 0x04F30 */ u8 mNunCStatus;
/* 0x04F31 */ u8 mNunCSetFlag;
- /* 0x04F32 */ u8 field_0x4fca; // related to NunCStatusForce
- /* 0x04F33 */ u8 field_0x4fcb; // related to NunCStatusForce
+ /* 0x04F32 */ u8 mNunCStatusForce;
+ /* 0x04F33 */ u8 mNunCSetFlagForce;
/* 0x04F34 */ u8 mSelectItem[8];
/* 0x04F3C */ u8 mSelectEquip[6];
/* 0x04F42 */ u8 mBaseAnimeID;
@@ -406,7 +406,7 @@ public:
/* 0x04F7D */ u8 mPauseFlag;
/* 0x04F7E */ u8 mItemLifeCountType;
/* 0x04F7F */ u8 mOxygenShowFlag;
- /* 0x04F80 */ u8 mShow2D;
+ /* 0x04F80 */ bool mShow2D;
/* 0x04F84 */ JKRExpHeap* mExpHeap2D;
/* 0x04F88 */ JKRExpHeap* mSubExpHeap2D[2];
/* 0x04F90 */ JKRExpHeap* mMsgExpHeap;
@@ -424,7 +424,7 @@ public:
void clearItemBombNumCount(u8 i_item);
s16 getItemMaxBombNumCount(u8 i_bombType);
void setNowVibration(u8 vib_status);
- u32 getNowVibration();
+ u8 getNowVibration();
void setStartStage(dStage_startStage_c* p_startStage);
static int getLayerNo_common_common(char const* stageName, int roomId, int layer);
static int getLayerNo_common(char const* stageName, int roomId, int layer);
@@ -593,7 +593,7 @@ public:
dMsgObject_c* getMsgObjectClass() { return mItemInfo.mMsgObjectClass; }
void setMsgObjectClass(dMsgObject_c* obj) { mItemInfo.mMsgObjectClass = obj; }
f32 getItemLifeCount() { return mItemInfo.mItemLifeCount; }
- u8& getItemLifeCountType() { return mItemInfo.mItemLifeCountType; }
+ u8 getItemLifeCountType() { return mItemInfo.mItemLifeCountType; }
void setItemLifeCount(f32 hearts, u8 type) {
mItemInfo.mItemLifeCount += hearts;
mItemInfo.mItemLifeCountType = type;
@@ -672,11 +672,18 @@ public:
}
u8 getNunStatus() { return mItemInfo.mNunStatus; }
bool isNunSetFlag(u8 flag) { return (mItemInfo.mNunSetFlag & flag) ? true : false; }
- void setNunStatus(u8 status, u8 param_1, u8 flag) {
+ void setNunStatus(u8 status, u8 direction, u8 flag) {
mItemInfo.mNunStatus = status;
- mItemInfo.field_0x4ef0 = param_1;
+ mItemInfo.field_0x4ef0 = direction;
mItemInfo.mNunSetFlag = flag;
}
+ u8 getNunStatusForce() { return mItemInfo.mNunStatus; }
+ bool getNunSetFlagForce() { return mItemInfo.mNunSetFlag; }
+ void setNunStatusForce(u8 status, u8 direction, u8 flag) {
+ mItemInfo.mNunStatusForce = status;
+ mItemInfo.mNunDirectionForce = direction;
+ mItemInfo.mNunSetFlagForce = flag;
+ }
u8 getBottleStatus() { return mItemInfo.mBottleStatus; }
bool isBottleSetFlag(u8 flag) { return (mItemInfo.mBottleSetFlag & flag) ? true : false; }
void setBottleStatus(u8 status, u8 flag) {
@@ -691,11 +698,18 @@ public:
}
u8 getRemoConStatus() { return mItemInfo.mRemoConStatus; }
bool isRemoConSetFlag(u8 flag) { return (mItemInfo.mRemoConSetFlag & flag) ? true : false; }
- void setRemoConStatus(u8 status, u8 param_1, u8 flag) {
+ void setRemoConStatus(u8 status, u8 direction, u8 flag) {
mItemInfo.mRemoConStatus = status;
- mItemInfo.field_0x4ef2 = param_1;
+ mItemInfo.field_0x4ef2 = direction;
mItemInfo.mRemoConSetFlag = flag;
}
+ u8 getRemoConStatusForce() { return mItemInfo.mBottleStatusForce; }
+ u8 getRemoConSetFlagForce() { return mItemInfo.mBottleSetFlagForce; }
+ void setRemoConStatusForce(u8 status, u8 direction, u8 flag) {
+ mItemInfo.mRemoConStatusForce = status;
+ mItemInfo.mRemoConDirectionForce = direction;
+ mItemInfo.mRemoConSetFlagForce = flag;
+ }
u8 getDoStatus() { return mItemInfo.mDoStatus; }
bool isDoSetFlag(u8 flag) { return (mItemInfo.mDoSetFlag & flag) ? true : false; }
void setDoStatus(u8 status, u8 flag) {
@@ -727,17 +741,17 @@ public:
u8 getCStickStatus() { return mItemInfo.mCStickStatus; }
u8 getCStickDirection() { return mItemInfo.mCStickDirection; }
bool isCStickSetFlag(u8 flag) { return (mItemInfo.mCStickSetFlag & flag) ? true : false; }
- void setCStickStatus(u8 status, u8 param_1, u8 flag) {
+ void setCStickStatus(u8 status, u8 direction, u8 flag) {
mItemInfo.mCStickStatus = status;
- mItemInfo.mCStickDirection = param_1;
+ mItemInfo.mCStickDirection = direction;
mItemInfo.mCStickSetFlag = flag;
}
u8 getCStickStatusForce() { return mItemInfo.mCStickStatusForce; }
u8 getCStickDirectionForce() { return mItemInfo.mCStickDirectionForce; }
u8 getCStickSetFlagForce() { return mItemInfo.mCStickSetFlagForce; }
- void setCStickStatusForce(u8 status, u8 param_1, u8 flag) {
+ void setCStickStatusForce(u8 status, u8 direction, u8 flag) {
mItemInfo.mCStickStatusForce = status;
- mItemInfo.mCStickDirectionForce = param_1;
+ mItemInfo.mCStickDirectionForce = direction;
mItemInfo.mCStickSetFlagForce = flag;
}
u8 getSButtonStatus() { return mItemInfo.mSButtonStatus; }
@@ -794,12 +808,29 @@ public:
mItemInfo.mNunZStatus = status;
mItemInfo.mNunZSetFlag = flag;
}
+ u8 getNunZStatusForce() { return mItemInfo.mBottleStatusForce; }
+ u8 getNunZSetFlagForce() { return mItemInfo.mBottleSetFlagForce; }
+ void setNunZStatusForce(u8 status, u8 flag) {
+ mItemInfo.mNunZStatusForce = status;
+ mItemInfo.mNunZSetFlagForce = flag;
+ }
u8 getNunCStatus() { return mItemInfo.mNunCStatus; }
bool isNunCSetFlag(u8 flag) { return (mItemInfo.mNunCSetFlag & flag) ? true : false; }
void setNunCStatus(u8 status, u8 flag) {
mItemInfo.mNunCStatus = status;
mItemInfo.mNunCSetFlag = flag;
}
+ u8 getNunCStatusForce() { return mItemInfo.mBottleStatusForce; }
+ u8 getNunCSetFlagForce() { return mItemInfo.mBottleSetFlagForce; }
+ void setNunCStatusForce(u8 status, u8 flag) {
+ mItemInfo.mNunCStatusForce = status;
+ mItemInfo.mNunCSetFlagForce = flag;
+ }
+ u8 getTouchStatusForce() { return mItemInfo.mTouchStatusForce; }
+ u8 getTouchSetFlagForce() { return mItemInfo.mBottleSetFlagForce; }
+ void setTouchStatusForce(u8 status) {
+ mItemInfo.mTouchStatusForce = status;
+ }
u8 getSelectItem(int idx) { return mItemInfo.mSelectItem[idx]; }
void setSelectItem(int idx, u8 i_itemNo) { mItemInfo.mSelectItem[idx] = i_itemNo; }
void setSelectEquip(int idx, u8 item_id) { mItemInfo.mSelectEquip[idx] = item_id; }
@@ -835,7 +866,7 @@ public:
void onPauseFlag() { mItemInfo.mPauseFlag = true; }
u8 getOxygenShowFlag() { return mItemInfo.mOxygenShowFlag; }
void setOxygenShowFlag(u8 flag) { mItemInfo.mOxygenShowFlag = flag; }
- u8 show2dCheck() { return mItemInfo.mShow2D; }
+ bool show2dCheck() { return mItemInfo.mShow2D; }
void show2dOn() { mItemInfo.mShow2D = 1; }
void show2dOff() { mItemInfo.mShow2D = 0; }
JKRExpHeap* getExpHeap2D() { return mItemInfo.mExpHeap2D; }
@@ -3727,8 +3758,20 @@ inline bool dComIfGp_isNunSetFlag(u8 flag) {
return g_dComIfG_gameInfo.play.isNunSetFlag(flag);
}
-inline void dComIfGp_setNunStatus(u8 status, u8 param_1, u8 flag) {
- g_dComIfG_gameInfo.play.setNunStatus(status, param_1, flag);
+inline void dComIfGp_setNunStatus(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setNunStatus(status, direction, flag);
+}
+
+inline void dComIfGp_getNunStatusForce() {
+ g_dComIfG_gameInfo.play.getNunStatusForce();
+}
+
+inline void dComIfGp_getNunSetFlagForce() {
+ g_dComIfG_gameInfo.play.getNunSetFlagForce();
+}
+
+inline void dComIfGp_setNunStatusForce(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setNunStatusForce(status, direction, flag);
}
inline u8 dComIfGp_getBottleStatus() {
@@ -3739,8 +3782,8 @@ inline bool dComIfGp_isBottleSetFlag(u8 flag) {
return g_dComIfG_gameInfo.play.isBottleSetFlag(flag);
}
-inline void dComIfGp_setBottleStatus(u8 param_0, u8 param_1) {
- g_dComIfG_gameInfo.play.setBottleStatus(param_0, param_1);
+inline void dComIfGp_setBottleStatus(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setBottleStatus(status, flag);
}
inline u8 dComIfGp_getBottleStatusForce() {
@@ -3751,8 +3794,8 @@ inline u8 dComIfGp_getBottleSetFlagForce() {
return g_dComIfG_gameInfo.play.getBottleSetFlagForce();
}
-inline void dComIfGp_setBottleStatusForce(u8 param_0, u8 param_1) {
- g_dComIfG_gameInfo.play.setBottleStatusForce(param_0, param_1);
+inline void dComIfGp_setBottleStatusForce(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setBottleStatusForce(status, flag);
}
inline u8 dComIfGp_getRemoConStatus() {
@@ -3763,8 +3806,20 @@ inline bool dComIfGp_isRemoConSetFlag(u8 flag) {
return g_dComIfG_gameInfo.play.isRemoConSetFlag(flag);
}
-inline void dComIfGp_setRemoConStatus(u8 status, u8 param_1, u8 flag) {
- g_dComIfG_gameInfo.play.setRemoConStatus(status, param_1, flag);
+inline void dComIfGp_setRemoConStatus(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setRemoConStatus(status, direction, flag);
+}
+
+inline u8 dComIfGp_getRemoConStatusForce() {
+ return g_dComIfG_gameInfo.play.getRemoConStatusForce();
+}
+
+inline u8 dComIfGp_getRemoConSetFlagForce() {
+ return g_dComIfG_gameInfo.play.getRemoConSetFlagForce();
+}
+
+inline void dComIfGp_setRemoConStatusForce(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setRemoConStatusForce(status, direction, flag);
}
inline u8 dComIfGp_getDoStatus() {
@@ -3835,8 +3890,8 @@ inline bool dComIfGp_isCStickSetFlag(u8 flag) {
return g_dComIfG_gameInfo.play.isCStickSetFlag(flag);
}
-inline void dComIfGp_setCStickStatus(u8 status, u8 param_1, u8 flag) {
- g_dComIfG_gameInfo.play.setCStickStatus(status, param_1, flag);
+inline void dComIfGp_setCStickStatus(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setCStickStatus(status, direction, flag);
}
inline u8 dComIfGp_getCStickStatusForce() {
@@ -3851,8 +3906,8 @@ inline u8 dComIfGp_getCStickSetFlagForce() {
return g_dComIfG_gameInfo.play.getCStickSetFlagForce();
}
-inline void dComIfGp_setCStickStatusForce(u8 status, u8 param_1, u8 flag) {
- g_dComIfG_gameInfo.play.setCStickStatusForce(status, param_1, flag);
+inline void dComIfGp_setCStickStatusForce(u8 status, u8 direction, u8 flag) {
+ g_dComIfG_gameInfo.play.setCStickStatusForce(status, direction, flag);
}
inline u8 dComIfGp_getSButtonStatus() {
@@ -3963,6 +4018,18 @@ inline void dComIfGp_setNunZStatus(u8 param_0, u8 param_1) {
g_dComIfG_gameInfo.play.setNunZStatus(param_0, param_1);
}
+inline u8 dComIfGp_getNunZStatusForce() {
+ return g_dComIfG_gameInfo.play.getNunZStatusForce();
+}
+
+inline u8 dComIfGp_getNunZSetFlagForce() {
+ return g_dComIfG_gameInfo.play.getNunZSetFlagForce();
+}
+
+inline void dComIfGp_setNunZStatusForce(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setNunZStatusForce(status, flag);
+}
+
inline u8 dComIfGp_getNunCStatus() {
return g_dComIfG_gameInfo.play.getNunCStatus();
}
@@ -3971,8 +4038,32 @@ inline bool dComIfGp_isNunCSetFlag(u8 flag) {
return g_dComIfG_gameInfo.play.isNunCSetFlag(flag);
}
-inline void dComIfGp_setNunCStatus(u8 param_0, u8 param_1) {
- g_dComIfG_gameInfo.play.setNunCStatus(param_0, param_1);
+inline void dComIfGp_setNunCStatus(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setNunCStatus(status, flag);
+}
+
+inline u8 dComIfGp_getNunCStatusForce() {
+ return g_dComIfG_gameInfo.play.getNunCStatusForce();
+}
+
+inline u8 dComIfGp_getNunCSetFlagForce() {
+ return g_dComIfG_gameInfo.play.getNunCSetFlagForce();
+}
+
+inline void dComIfGp_setNunCStatusForce(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setNunCStatusForce(status, flag);
+}
+
+inline u8 dComIfGp_getTouchStatusForce() {
+ return g_dComIfG_gameInfo.play.getTouchStatusForce();
+}
+
+inline u8 dComIfGp_getTouchSetFlagForce() {
+ return g_dComIfG_gameInfo.play.getTouchSetFlagForce();
+}
+
+inline void dComIfGp_setTouchStatusForce(u8 status) {
+ g_dComIfG_gameInfo.play.setTouchStatusForce(status);
}
inline void dComIfGp_setSelectEquipClothes(u8 i_clothNo) {
@@ -4099,7 +4190,7 @@ inline void dComIfGp_onOxygenShowFlag() {
g_dComIfG_gameInfo.play.setOxygenShowFlag(1);
}
-inline u8 dComIfGp_2dShowCheck() {
+inline bool dComIfGp_2dShowCheck() {
return g_dComIfG_gameInfo.play.show2dCheck();
}
@@ -4254,7 +4345,7 @@ inline void dComIfGp_setNowVibration(u8 status) {
g_dComIfG_gameInfo.play.setNowVibration(status);
}
-inline u32 dComIfGp_getNowVibration() {
+inline u8 dComIfGp_getNowVibration() {
return g_dComIfG_gameInfo.play.getNowVibration();
}
diff --git a/include/d/d_cursor_mng.h b/include/d/d_cursor_mng.h
index d8a84eb381..3d5a18d5b2 100644
--- a/include/d/d_cursor_mng.h
+++ b/include/d/d_cursor_mng.h
@@ -5,13 +5,13 @@
#include "m_Do/m_Do_graphic.h"
#include "m_Re/m_Re_controller_pad.h"
-// TODO: putting this here until a more appropriate place is found
-extern u8 data_8053a730;
-
class dCsr_mng_c {
+public:
struct csr_c;
- struct node_c : mDoGph_gInf_c::csr_c {
+ struct node_c {
+ virtual ~node_c() {}
+
BOOL set(u8 i_priority, u8, u16 i_mask);
/* 0x04 */ u8 m_priority;
@@ -19,12 +19,6 @@ class dCsr_mng_c {
/* 0x06 */ u16 m_mask;
/* 0x08 */ node_c* m_prev;
/* 0x0C */ node_c* m_next;
- /* 0x10 */ int m_actor_id;
- /* 0x14 */ csr_c* m_csr;
- /* 0x18 */ node_c* m_pointed_obj;
- };
-
- struct obj_c : node_c {
};
struct list_c {
@@ -40,7 +34,10 @@ class dCsr_mng_c {
/* 0x04 */ node_c* m_root;
};
- struct bloObj_c {
+ struct obj_c : node_c {
+ };
+
+ struct bloObj_c : obj_c {
struct paneObj_c {
paneObj_c(void) {
m_handle = NULL;
@@ -59,13 +56,16 @@ class dCsr_mng_c {
};
bloObj_c() {
- m_panes = new paneObj_c[1];
m_screen = 0;
+ m_panes = NULL;
+ m_pane_num = 0;
+ m_is_calc = FALSE;
+ m_pane_handle = NULL;
}
virtual ~bloObj_c(void);
virtual u32 signature(void) const {
- return 0x626c6f20;
+ return 'blo ';
}
virtual BOOL isInside(s16 i_x, s16 i_y);
BOOL create(J2DScreen* i_screen, u16 i_mask, u8 i_priority, u8);
@@ -73,7 +73,6 @@ class dCsr_mng_c {
void calcPaneObjNum(J2DPane* i_pane);
void createPaneObj(paneObj_c** i_panes, J2DPane* i_pane);
- /* 0x04 */ u8 field_0x04[0x10 - 0x4];
/* 0x10 */ J2DScreen* m_screen;
/* 0x14 */ paneObj_c* m_panes;
/* 0x18 */ u16 m_pane_num;
@@ -81,18 +80,35 @@ class dCsr_mng_c {
/* 0x1C */ J2DPane* m_pane_handle;
};
- struct ccObj_c : node_c {
+ struct ccObj_c : obj_c {
virtual ~ccObj_c(void);
virtual int signature(void) const {
return 'cc ';
}
virtual BOOL isInside(s16, s16);
void set(u16, u8, u8);
+
+ /* 0x10 */ int m_actor_id;
+ /* 0x14 */ csr_c* m_csr;
+ /* 0x18 */ node_c* m_pointed_obj;
};
struct csr_c : node_c {
+ csr_c() {
+ field_0x10 = 0xFF;
+ field_0x11 = 0;
+ field_0x12 = 0;
+ m_csr = NULL;
+ m_pointed_obj = NULL;
+ }
virtual ~csr_c(void);
BOOL set(mDoGph_gInf_c::csr_c* i_csr, u16, u8, u8);
+
+ /* 0x10 */ u8 field_0x10;
+ /* 0x11 */ u8 field_0x11;
+ /* 0x12 */ u16 field_0x12;
+ /* 0x14 */ mDoGph_gInf_c::csr_c* m_csr;
+ /* 0x18 */ node_c* m_pointed_obj;
};
private:
diff --git a/include/d/d_item.h b/include/d/d_item.h
index 0d379c0578..7b09ea9ddd 100644
--- a/include/d/d_item.h
+++ b/include/d/d_item.h
@@ -3,6 +3,20 @@
#include <types.h>
+#if PLATFORM_WII
+#define SELECT_ITEMS_COUNT 4
+#define SELECT_ITEMS_MAX 4
+#elif PLATFORM_SHIELD
+// Shield has some weird code where the Wii item limit of 4 is used e.g. as a loop bound
+// despite that version only allowing 2 bound items. We use a separate macro to differentiate
+// these usages as being disconnected from the actual item slot count.
+#define SELECT_ITEMS_COUNT 2
+#define SELECT_ITEMS_MAX 4
+#else
+#define SELECT_ITEMS_COUNT 2
+#define SELECT_ITEMS_MAX 2
+#endif
+
class dEnemyItem_c {
public:
static void setItemData(u8* data) { mData = data; }
diff --git a/include/d/d_rvl_fb_copy.h b/include/d/d_rvl_fb_copy.h
new file mode 100644
index 0000000000..2b14f4dfb3
--- /dev/null
+++ b/include/d/d_rvl_fb_copy.h
@@ -0,0 +1,6 @@
+#ifndef D_SCREEN_COPY
+#define D_SCREEN_COPY
+
+extern bool g_rvlEnableExtraFramebufferCopy;
+
+#endif /* D_SCREEN_COPY */
diff --git a/include/d/d_save.h b/include/d/d_save.h
index 3bcb4766a0..d90709e6df 100644
--- a/include/d/d_save.h
+++ b/include/d/d_save.h
@@ -500,7 +500,7 @@ private:
class dSv_player_config_c {
public:
void init();
- u32 checkVibration() const;
+ u8 checkVibration() const;
u8 getSound();
void setSound(u8 i_mode);
u8 getVibration();
@@ -639,7 +639,7 @@ public:
void onDungeonItemBossKey() { onDungeonItem(BOSS_KEY); }
void offDungeonItemBossKey() { offDungeonItem(BOSS_KEY); }
s32 isDungeonItemBossKey() const { return isDungeonItem(BOSS_KEY); }
- void onStageBossEnemy() {
+ void onStageBossEnemy() {
onDungeonItem(STAGE_BOSS_ENEMY);
onDungeonItem(OOCCOO_NOTE);
}