Link d_cursor_mng for all Wii versions (#3164)

This commit is contained in:
Max Roncace
2026-06-23 20:52:55 +01:00
committed by GitHub
parent 8eae8919c8
commit c8fa8c9e2a
26 changed files with 315 additions and 145 deletions
+129 -38
View File
@@ -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();
}
+31 -15
View File
@@ -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:
+14
View File
@@ -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; }
+6
View File
@@ -0,0 +1,6 @@
#ifndef D_SCREEN_COPY
#define D_SCREEN_COPY
extern bool g_rvlEnableExtraFramebufferCopy;
#endif /* D_SCREEN_COPY */
+2 -2
View File
@@ -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);
}