d_com_inf_game minor progress

This commit is contained in:
Jasper St. Pierre
2023-11-10 23:23:05 -08:00
parent d7aba8e7df
commit cc79561051
4 changed files with 67 additions and 15 deletions
+30 -1
View File
@@ -366,6 +366,10 @@ public:
u8 getShipId() { return mShipId; }
u8 getShipRoomId() { return mShipRoomId; }
u8* getPlayerInfoBuffer() { return mPlayerInfoBuffer; }
void setPlayerInfoBufferStageNo(u8 i_stageno) { mPlayerInfoBufferStageNo = i_stageno; }
u8 getPlayerInfoBufferStageNo() { return mPlayerInfoBufferStageNo; }
void setAgb(fopAc_ac_c* i_agb) { mpAgb = (daAgb_c*)i_agb; }
daAgb_c* getAgb() { return mpAgb; }
@@ -618,7 +622,8 @@ public:
/* 0x4980 */ int mMesgCameraTagInfo;
/* 0x4984 */ int field_0x4984;
/* 0x4988 */ int field_0x4988[10];
/* 0x49B0 */ u8 field_0x49B0[0x4A24 - 0x49B0];
/* 0x49B0 */ u8 mPlayerInfoBuffer[0x4A20 - 0x49B0];
/* 0x4A20 */ u8 mPlayerInfoBufferStageNo;
/* 0x4A24 */ daAgb_c* mpAgb;
/* 0x4A28 */ u32 mPlayerStatus[2][2];
/* 0x4A38 */ u8 field_0x4A38[0x4A3A - 0x4A38];
@@ -1301,6 +1306,18 @@ inline u8 dComIfGs_getKeyNum() {
return g_dComIfG_gameInfo.save.getMemory().getBit().getKeyNum();
}
inline dSv_player_status_c_c * dComIfGs_getpPlayerStatusC(u32 i_idx) {
return g_dComIfG_gameInfo.save.getPlayer().getpPlayerStatusC(i_idx);
}
inline dSv_player_collect_c * dComIfGs_getpCollect() {
return g_dComIfG_gameInfo.save.getPlayer().getpCollect();
}
inline dSv_player_bag_item_record_c * dComIfGs_getpBagItemRecord() {
return g_dComIfG_gameInfo.save.getPlayer().getpBagItemRecord();
}
u8 dComIfGs_checkGetItemNum(u8 i_itemNo);
BOOL dComIfGs_checkSeaLandingEvent(s8 i_roomNo);
@@ -1694,6 +1711,18 @@ inline u8 dComIfGp_getShipRoomId() {
return g_dComIfG_gameInfo.play.getShipRoomId();
}
inline u8* dComIfGp_getPlayerInfoBuffer() {
return g_dComIfG_gameInfo.play.getPlayerInfoBuffer();
}
inline void dComIfGp_setPlayerInfoBufferStageNo(u8 i_stageno) {
g_dComIfG_gameInfo.play.setPlayerInfoBufferStageNo(i_stageno);
}
inline u8 dComIfGp_getPlayerInfoBufferStageNo() {
return g_dComIfG_gameInfo.play.getPlayerInfoBufferStageNo();
}
inline void dComIfGp_setAgb(fopAc_ac_c* i_agb) {
g_dComIfG_gameInfo.play.setAgb(i_agb);
}
+2 -1
View File
@@ -224,6 +224,7 @@ public:
void onCollect(int, u8);
void offCollect(int, u8);
BOOL isCollect(int, u8);
void setCollect(int idx, u8 byte) { mCollect[idx] = byte; }
void onTact(u8);
BOOL isTact(u8);
void onTriforce(u8);
@@ -232,7 +233,7 @@ public:
BOOL isSymbol(u8);
int getTriforceNum();
/* 0x0 */ u8 field_0x0[8];
/* 0x0 */ u8 mCollect[8];
/* 0x8 */ u8 field_0x8;
/* 0x9 */ u8 mTact;
/* 0xA */ u8 mTriforce;
+31 -9
View File
@@ -1211,7 +1211,7 @@ void dComIfGs_gameStart() {
void dComIfGs_copyPlayerRecollectionData() {
/* Nonmatching */
s32 tbl;
u8 buf[0x70];
dSv_player_status_c_c stts;
if (dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo()) == 3) {
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 3)
@@ -1228,19 +1228,41 @@ void dComIfGs_copyPlayerRecollectionData() {
return;
}
memcpy(&buf[0x00], &g_dComIfG_gameInfo.save.getPlayer().getPlayerStatusA(), 0x18);
memcpy(&buf[0x18], &g_dComIfG_gameInfo.save.getPlayer().getItem(), 0x15);
memcpy(&buf[0x2D], &g_dComIfG_gameInfo.save.getPlayer().getItemRecord().field_0x2, 0x03);
memcpy(&buf[0x30], &g_dComIfG_gameInfo.save.getPlayer().getItemMax().field_0x0, 0x03);
memcpy(&buf[0x33], &g_dComIfG_gameInfo.save.getPlayer().getBagItem(), 0x18);
memcpy(&buf[0x4B], &g_dComIfG_gameInfo.save.getPlayer().getBagItemRecord(), 0x18);
memcpy(&buf[0x63], &g_dComIfG_gameInfo.save.getPlayer().getCollect(), 0x0D);
memcpy(g_dComIfG_gameInfo.save.getPlayer().getpPlayerStatusC(tbl), buf, sizeof(buf));
memcpy(&stts.mRecollectStatusA, g_dComIfG_gameInfo.save.getPlayer().getpPlayerStatusA(), sizeof(stts.mRecollectStatusA));
memcpy(&stts.mRecollectItem, g_dComIfG_gameInfo.save.getPlayer().getpItem(), sizeof(stts.mRecollectItem));
memcpy(&stts.mRecollectItemRecord, &g_dComIfG_gameInfo.save.getPlayer().getpItemRecord()->field_0x2, sizeof(stts.mRecollectItemRecord));
memcpy(&stts.mRecollectItemMax, &g_dComIfG_gameInfo.save.getPlayer().getpItemMax()->field_0x0, sizeof(stts.mRecollectItemMax));
memcpy(&stts.mRecollectBagItem, g_dComIfG_gameInfo.save.getPlayer().getpBagItem(), sizeof(stts.mRecollectBagItem));
memcpy(&stts.mRecollectBagItemRecord, dComIfGs_getpBagItemRecord(), sizeof(stts.mRecollectBagItemRecord));
memcpy(&stts.mRecollectCollect, dComIfGs_getpCollect(), sizeof(stts.mRecollectCollect));
memcpy(dComIfGs_getpPlayerStatusC(tbl), &stts, sizeof(stts));
}
/* 80054E9C-80055318 .text dComIfGs_setPlayerRecollectionData__Fv */
void dComIfGs_setPlayerRecollectionData() {
/* Nonmatching */
daArrow_c::setKeepType(0);
u32 tbl;
if (strcmp(dComIfGp_getStartStageName(), "Xboss0") == 0 && dComIfGs_isEventBit(0x3d80) != 0) {
tbl = 0;
dComIfGp_setPlayerInfoBufferStageNo(1);
} else if (strcmp(dComIfGp_getStartStageName(), "Xboss1") == 0 && dComIfGs_isEventBit(0x3d40) != 0) {
tbl = 1;
dComIfGp_setPlayerInfoBufferStageNo(2);
} else if (strcmp(dComIfGp_getStartStageName(), "Xboss2") == 0 && dComIfGs_isEventBit(0x3d20) != 0) {
tbl = 2;
dComIfGp_setPlayerInfoBufferStageNo(3);
} else if (strcmp(dComIfGp_getStartStageName(), "Xboss3") == 0 && dComIfGs_isEventBit(0x3d10) != 0) {
tbl = 3;
dComIfGp_setPlayerInfoBufferStageNo(4);
} else {
dComIfGs_setSelectItem(0, NO_ITEM);
dComIfGs_setSelectItem(1, NO_ITEM);
dComIfGs_setSelectItem(2, NO_ITEM);
return;
}
// TODO: The rest of the checks
}
/* 80055318-80055580 .text dComIfGs_revPlayerRecollectionData__Fv */
+4 -4
View File
@@ -587,7 +587,7 @@ void dSv_player_bag_item_record_c::init() {
/* 8005ACA8-8005ACE0 .text init__20dSv_player_collect_cFv */
void dSv_player_collect_c::init() {
for (int i = 0; i < 8; i++) {
field_0x0[i] = 0;
mCollect[i] = 0;
}
field_0x8 = 0;
@@ -600,19 +600,19 @@ void dSv_player_collect_c::init() {
/* 8005ACE0-8005AD78 .text onCollect__20dSv_player_collect_cFiUc */
void dSv_player_collect_c::onCollect(int i_idx, u8 i_item) {
JUT_ASSERT(1412, 0 <= i_item && i_item < 8);
field_0x0[i_idx] |= (u8)(1 << i_item);
mCollect[i_idx] |= (u8)(1 << i_item);
}
/* 8005AD78-8005AE10 .text offCollect__20dSv_player_collect_cFiUc */
void dSv_player_collect_c::offCollect(int i_idx, u8 i_item) {
JUT_ASSERT(1427, 0 <= i_item && i_item < 8);
field_0x0[i_idx] &= ~(u8)(1 << i_item);
mCollect[i_idx] &= ~(u8)(1 << i_item);
}
/* 8005AE10-8005AEAC .text isCollect__20dSv_player_collect_cFiUc */
BOOL dSv_player_collect_c::isCollect(int i_idx, u8 i_item) {
JUT_ASSERT(1442, 0 <= i_item && i_item < 8);
return field_0x0[i_idx] & (u8)(1 << i_item) ? TRUE : FALSE;
return mCollect[i_idx] & (u8)(1 << i_item) ? TRUE : FALSE;
}
/* 8005AEAC-8005AF40 .text onTact__20dSv_player_collect_cFUc */