D_a_npc_tc matching for retail (#930)

* progress

* code matching non-demo

* cleanup for d_a_npc_tc and d_a_obj_smplbg
This commit is contained in:
Zeclos
2026-03-04 19:25:59 +01:00
committed by GitHub
parent d54d983a4a
commit dcf4862387
13 changed files with 2852 additions and 309 deletions
+1709 -249
View File
File diff suppressed because it is too large Load Diff
+312
View File
@@ -0,0 +1,312 @@
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "cut" functions
// are in a separate .text section from the rest of its functions.
/* 00005C58-00005E60 .text cutProc__10daNpc_Tc_cFv */
void daNpc_Tc_c::cutProc() {
static char* action_table[] = {
"SIT_TO_JUMP",
"PRESENT",
"SET_ANM",
"BACKJUMP",
"EFFECT",
"DOOR_OPEN",
"DOOR_CLOSE",
"DOOR_CLOSE2",
"PAY",
};
int staffIdx = dComIfGp_evmng_getMyStaffId("Tc");
if (staffIdx != -1) {
int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, ARRAY_SIZE(action_table), TRUE, 0);
if (actIdx == -1) {
dComIfGp_evmng_cutEnd(staffIdx);
} else {
if (dComIfGp_evmng_getIsAddvance(staffIdx)) {
switch(actIdx) {
case 0:
cutSitToJumpStart(staffIdx);
break;
case 1:
cutPresentStart(staffIdx);
break;
case 2:
cutSetAnmStart(staffIdx);
break;
case 3:
cutBackJumpStart(staffIdx);
break;
case 4:
cutEffectStart(staffIdx);
break;
case 5:
cutDoorOpenStart(staffIdx);
break;
case 6:
cutDoorCloseStart(staffIdx);
break;
case 7:
cutDoorClose2Start(staffIdx);
break;
case 8:
cutPayStart(staffIdx);
break;
}
}
switch(actIdx) {
case 0:
cutSitToJumpProc(staffIdx);
break;
case 1:
cutPresentProc(staffIdx);
break;
case 2:
cutSetAnmProc(staffIdx);
break;
case 3:
cutBackJumpProc(staffIdx);
break;
case 4:
cutEffectProc(staffIdx);
break;
case 5:
cutDoorOpenProc(staffIdx);
break;
case 6:
cutDoorCloseProc(staffIdx);
break;
case 7:
cutDoorClose2Proc(staffIdx);
break;
case 8:
cutPayProc(staffIdx);
}
}
}
}
/* 00005E60-00005E6C .text cutSitToJumpStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutSitToJumpStart(int) {
mAnmPrmIdx = ANM_PRM_IDX_JAMP_A;
}
/* 00005E6C-00005FA4 .text cutSitToJumpProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutSitToJumpProc(int i_staffIdx) {
if (mpMorf->isStop() && mAnmPrmIdx == ANM_PRM_IDX_JAMP_A) {
speedF = l_HIO.field_0x38;
speed.y = l_HIO.field_0x40;
gravity = l_HIO.field_0x3C;
mAnmPrmIdx = ANM_PRM_IDX_JAMP_B;
}
if(speed.y <= 0.0f && mAnmPrmIdx == ANM_PRM_IDX_JAMP_B) {
mAnmPrmIdx = ANM_PRM_IDX_JAMP_C1;
}
if(mObjAcch.ChkGroundHit() && mAnmPrmIdx == ANM_PRM_IDX_JAMP_C1) {
speedF = 0.0f;
mAnmPrmIdx = ANM_PRM_IDX_JAMP_C2;
mJumpLandingTimer = 0x33;
return;
}
if (cLib_calcTimer(&mJumpLandingTimer) == 0 && mAnmPrmIdx == ANM_PRM_IDX_JAMP_C2) {
mAnmPrmIdx = ANM_PRM_IDX_WAIT01;
dComIfGp_evmng_cutEnd(i_staffIdx);
}
}
/* 00005FA4-00005FA8 .text cutPresentStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutPresentStart(int) {
}
/* 00005FA8-00006174 .text cutPresentProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutPresentProc(int i_staffIdx) {
int* pItemType = dComIfGp_evmng_getMyIntegerP(i_staffIdx, "ItemType");
int temp;
if(pItemType == NULL) {
temp = 0;
} else {
temp = *pItemType;
}
int itemNo;
switch(temp) {
case 0:
itemNo = dItem_TINGLE_TUNER_e;
break;
case 1:
itemNo = dItem_COLLECT_MAP_35_e;
break;
case 2:
if (mType == TYPE_RED) {
if (checkAllMonumentFee()) {
itemNo = TINCLE_RUPEE6;
} else {
switch (checkAllMonumentPay()) {
case 1:
itemNo = TINCLE_RUPEE1;
break;
case 2:
itemNo = TINCLE_RUPEE2;
break;
case 3:
itemNo = TINCLE_RUPEE3;
break;
case 4:
itemNo = TINCLE_RUPEE4;
break;
case 5:
itemNo = TINCLE_RUPEE5;
break;
}
}
} else if (mType == TYPE_NORMAL2) {
switch (analysisCollectMap()) {
case 1:
itemNo = TRIFORCE_MAP1;
break;
case 2:
itemNo = TRIFORCE_MAP2;
break;
case 3:
itemNo = TRIFORCE_MAP3;
break;
case 4:
itemNo = TRIFORCE_MAP4;
break;
case 5:
itemNo = TRIFORCE_MAP5;
break;
case 6:
itemNo = TRIFORCE_MAP6;
break;
case 7:
itemNo = TRIFORCE_MAP7;
break;
case 8:
itemNo = TRIFORCE_MAP8;
break;
}
}
break;
}
#if VERSION == VERSION_DEMO
fpc_ProcID itemPID = fopAcM_createItemForPresentDemo(&current.pos, itemNo, 0, -1);
#else
fpc_ProcID itemPID = fopAcM_createItemForPresentDemo(&current.pos, itemNo, 0, -1, current.roomNo);
#endif
if(itemPID != fpcM_ERROR_PROCESS_ID_e) {
dComIfGp_event_setItemPartnerId(itemPID);
dComIfGp_evmng_cutEnd(i_staffIdx);
}
}
/* 00006174-000061F0 .text cutSetAnmStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutSetAnmStart(int i_staffIdx) {
const char* pName = dComIfGp_evmng_getMyStringP(i_staffIdx, "Name");
if(pName != NULL && strcmp(pName, "GET") == 0) {
mAnmPrmIdx = ANM_PRM_IDX_GET;
} else {
mAnmPrmIdx = ANM_PRM_IDX_WAIT01;
}
}
/* 000061F0-000062A0 .text cutSetAnmProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutSetAnmProc(int i_staffIdx) {
dComIfGp_evmng_getMyStringP(i_staffIdx, "Name");
if (mAnmPrmIdx == ANM_PRM_IDX_GET) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
if(mpMorf->isStop()) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
}
/* 000062A0-000062D8 .text cutBackJumpStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutBackJumpStart(int) {
mTargetSpeed = 0.0f;
speedF = l_HIO.field_0x48;
speed.y = l_HIO.field_0x50;
gravity = l_HIO.field_0x4C;
mAnmPrmIdx = ANM_PRM_IDX_GUARD;
}
/* 000062D8-000063BC .text cutBackJumpProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutBackJumpProc(int i_staffIdx) {
mSmokeCallBack.end();
if (mObjAcch.ChkGroundLanding()) {
speedF = 0.0f;
speed.y = 0.0f;
mSmokePos.set(current.pos);
mSmokeAngle = current.angle;
smoke_set(2.0f, 0.25f, 0.0f, 5.0f, 20.0f);
} else if (mObjAcch.ChkGroundHit() && speed.y == 0.0f){
speedF = 0.0f;
dComIfGp_evmng_cutEnd(i_staffIdx);
}
}
/* 000063BC-000064C8 .text cutEffectStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutEffectStart(int) {
// regswap for demo daNpc_Tc_c::setAnm also has a regswap with identical code
cXyz pos;
pos.x = current.pos.x;
pos.y = current.pos.y;
pos.z = current.pos.z;
pos.y -= 80.0f;
cXyz particleScale;
particleScale.setall(1.0f);
JPABaseEmitter* pEmitter = dComIfGp_particle_set(dPa_name::ID_SCENE_8152, &pos, NULL, &particleScale);
pEmitter->setGlobalParticleScale(0.62f, 0.6f);
fopAcM_seStart(this, JA_SE_CM_CMN_NOTICE, 0);
/* Nonmatching */
}
/* 000064C8-000064F4 .text cutEffectProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutEffectProc(int i_staffIdx) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
/* 000064F4-00006564 .text cutDoorOpenStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorOpenStart(int) {
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_OPEN, 0);
}
/* 00006564-00006590 .text cutDoorOpenProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorOpenProc(int i_staffIdx) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
/* 00006590-00006600 .text cutDoorCloseStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorCloseStart(int) {
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_CLOSE_1, 0);
}
/* 00006600-0000662C .text cutDoorCloseProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorCloseProc(int i_staffIdx) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
/* 0000662C-0000669C .text cutDoorClose2Start__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorClose2Start(int) {
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_CLOSE_2, 0);
}
/* 0000669C-000066C8 .text cutDoorClose2Proc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutDoorClose2Proc(int i_staffIdx) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
/* 000066C8-000066E0 .text cutPayStart__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutPayStart(int i_param) {
dComIfGp_setItemRupeeCount(-398);
}
/* 000066E0-0000670C .text cutPayProc__10daNpc_Tc_cFi */
void daNpc_Tc_c::cutPayProc(int i_staffIdx) {
dComIfGp_evmng_cutEnd(i_staffIdx);
}
+202
View File
@@ -0,0 +1,202 @@
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "normal2's" functions
// are in a separate .text section from the rest of its functions.
/* 00004BAC-00004E6C .text next_msgStatusNormal2__10daNpc_Tc_cFPUl */
u16 daNpc_Tc_c::next_msgStatusNormal2(u32* pMsgNo) {
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
} else {
switch (*pMsgNo) {
#if VERSION > VERSION_JPN
case 0x38AA:
case 0x38AB:
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3020)) {
*pMsgNo = 0x38AC;
} else {
*pMsgNo = 0x38AD;
}
break;
case 0x38AC:
case 0x38AD:
if (existKnownCollectMap()) {
*pMsgNo = 0xDBA;
} else {
*pMsgNo = 0xDB5;
}
break;
#endif
case 0xDB2:
case 0xDB3:
case 0xDFB:
*pMsgNo = 0xDB4;
break;
case 0xDB4:
*pMsgNo = getMsgNormal2();
break;
case 0xDB5:
*pMsgNo = 0xDBA;
break;
case 0xDBB:
*pMsgNo = 0xDBC;
break;
case 0xDBC:
*pMsgNo = 0xDBD;
break;
case 0xDBD:
*pMsgNo = 0xDBE;
break;
case 0xDBE:
if (mpCurrMsg->mSelectNum == 0) {
if ((u16)dComIfGs_getRupee() >= 398) {
mStatus = STATUS_PAY_RUPEE;
field_0x80D = true;
field_0x80C = true;
msgStatus = fopMsgStts_MSG_ENDS_e;
} else {
*pMsgNo = 0xDC0;
}
} else {
*pMsgNo = 0xDBF;
}
break;
case 0xDC0:
if (field_0x80B) {
*pMsgNo = 0xDC4;
} else {
*pMsgNo = 0xDC1;
}
break;
case 0xDBF:
*pMsgNo = 0xDC1;
break;
case 0xDC3:
if (mpCurrMsg->mSelectNum == 0) {
if ((u16)dComIfGs_getRupee() >= 398) {
mStatus = STATUS_PAY_RUPEE;
field_0x80D = true;
field_0x80C = true;
msgStatus = fopMsgStts_MSG_ENDS_e;
} else {
field_0x80B = true;
*pMsgNo = 0xDC0;
}
} else {
*pMsgNo = 0xDC4;
}
break;
case 0xDC4:
field_0x80D = false;
field_0x80B = false;
// fallthrough
default:
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
}
}
return msgStatus;
}
/* 00004E6C-00004F68 .text getMsgNormal2__10daNpc_Tc_cFv */
u32 daNpc_Tc_c::getMsgNormal2() {
u32 msg;
stopTower();
if (field_0x80D) {
if (existUnknownCollectMap()) {
msg = 0xDC3;
field_0x80D = false;
} else {
msg = 0xDC4;
}
} else if (!field_0x808) {
field_0x808 = true;
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1708)) {
msg = 0xDB3;
} else {
msg = 0xDFB;
}
} else {
msg = 0xDB2;
}
} else if (existUnknownCollectMap()) {
if (!field_0x809) {
field_0x809 = true;
msg = 0xDBB;
} else {
msg = 0xDBE;
}
} else {
#if VERSION <= VERSION_JPN
if(existKnownCollectMap()) {
msg = 0xDBA;
} else {
msg = 0xDB5;
}
#else
msg = setRupeeSizeMsg();
#endif
}
return msg;
}
#if VERSION > VERSION_JPN
/* 00004F68-00004FD8 .text setRupeeSizeMsg__10daNpc_Tc_cFv */
u32 daNpc_Tc_c::setRupeeSizeMsg() {
u32 msgNo = 0xDB5;
if (dComIfGs_getWalletSize() == 0) {
msgNo = 0x38AA;
} else if (dComIfGs_getWalletSize() == 1) {
msgNo = 0x38AB;
}
else if (dComIfGs_getWalletSize() == 2) {
if (existKnownCollectMap()) {
msgNo = 0xDBA;
} else {
msgNo = 0xDB5;
}
}
return msgNo;
}
#endif
/* 00004FD8-00005054 .text existUnknownCollectMap__10daNpc_Tc_cFv */
bool daNpc_Tc_c::existUnknownCollectMap() {
for(int i = 1; i <= 8; i++) {
if(!dComIfGs_isCollectMapTriforce(i) && dComIfGs_isGetCollectMap(i)) {
return true;
}
}
return false;
}
/* 00005054-000050DC .text analysisCollectMap__10daNpc_Tc_cFv */
int daNpc_Tc_c::analysisCollectMap() {
for(int i = 1; i <= 8; i++) {
if(!dComIfGs_isCollectMapTriforce(i) && dComIfGs_isGetCollectMap(i)) {
dComIfGs_onCollectMapTriforce(i);
return i;
}
}
return 0;
}
/* 000050DC-00005158 .text existKnownCollectMap__10daNpc_Tc_cFv */
bool daNpc_Tc_c::existKnownCollectMap() {
for(int i = 1; i <= 8; i++) {
if(dComIfGs_isGetCollectMap(i) && dComIfGs_isCollectMapTriforce(i)) {
return true;
}
}
return false;
}
+248
View File
@@ -0,0 +1,248 @@
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "red's" functions
// are in a separate .text section from the rest of its functions.
/* 00005498-00005720 .text next_msgStatusRed__10daNpc_Tc_cFPUl */
u16 daNpc_Tc_c::next_msgStatusRed(u32* pMsgNo) {
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
} else {
switch(*pMsgNo) {
case 0xDB7:
case 0xDE1:
*pMsgNo = 0xDE2;
break;
case 0xDE2:
if (dComIfGs_getClearCount() != 0) {
*pMsgNo = 0xDB8;
} else {
*pMsgNo = 0xDE3;
}
break;
case 0xDB8:
case 0xDE3:
*pMsgNo = 0xDE4;
break;
case 0xDE4:
*pMsgNo = setFinishMsg();
break;
case 0xDE5:
*pMsgNo = setFinishMsg();
break;
case 0xDE6:
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
*pMsgNo = 0xDEB;
} else {
*pMsgNo = 0xDE7;
}
field_0x814 = true;
break;
case 0xDEB:
if (field_0x814) {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
*pMsgNo = 0xDEC;
} else {
*pMsgNo = setFinishMsg();
}
} else {
*pMsgNo = setFinishMsg();
}
break;
case 0xDEC:
*pMsgNo = 0xDED;
break;
case 0xDED:
*pMsgNo = setFinishMsg();
break;
case 0xDE7:
*pMsgNo = 0xDE8;
break;
case 0xDE8:
*pMsgNo = 0xDE9;
break;
case 0xDE9:
*pMsgNo = 0xDEA;
break;
case 0xDEA:
*pMsgNo = setFinishMsg();
break;
case 0xDEE:
*pMsgNo = 0xDEF;
break;
case 0xDEF:
mStatus = STATUS_GET_RUPEE;
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
case 0xDF1:
*pMsgNo = 0xDF2;
break;
case 0xDF2:
mStatus = STATUS_MONUMENT_COMPLETE;
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
case 0xDF3:
*pMsgNo = 0xDF4;
break;
case 0xDF4:
*pMsgNo = 0xDF5;
break;
case 0xDF5:
*pMsgNo = setFinishMsg();
break;
case 0xDF0:
*pMsgNo = setFinishMsg();
break;
case 0xDC7:
m_jnt.onHeadLock();
msgStatus = fopMsgStts_MSG_ENDS_e;
field_0x814 = false;
break;
default:
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
}
}
return msgStatus;
}
/* 00005720-00005730 .text setFinishMsg__10daNpc_Tc_cFv */
u32 daNpc_Tc_c::setFinishMsg() {
m_jnt.onHeadLock();
return 0xDC7;
}
/* 00005730-00005944 .text getMsgRed__10daNpc_Tc_cFv */
u32 daNpc_Tc_c::getMsgRed() {
stopTower();
if (field_0x813) {
field_0x813 = false;
return 0xDF3;
}
if (field_0x812) {
field_0x812 = false;
switch(checkAllMonumentFee()) { // fake?
default:
return 0xDF1;
case false:
return 0xDF0;
}
}
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
if (!field_0x810) {
field_0x810 = true;
#if VERSION == VERSION_DEMO
if(checkAllMonumentFee() || !checkOneMonumentGet()) {
return 0xDE6;
}
return 0xDEE;
#else
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_DRC, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1240)) {
return 0xDEE;
}
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_FW, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D08)) {
return 0xDEE;
}
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_TOTG, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D04)) {
return 0xDEE;
}
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_WT, 0xF)&& !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D02)) {
return 0xDEE;
}
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_ET, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D01)) {
return 0xDEE;
}
return 0xDE6;
#endif
}
switch(dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) { // fake?
default:
return 0xDEB;
case false:
return 0xDEA;
}
}
if (dComIfGs_getClearCount() != 0) {
return setFirstMsg(&field_0x811, 0xDB7U, 0xDE5);
}
return setFirstMsg(&field_0x811, 0xDE1U, 0xDE5);
}
/* 00005944-000059A8 .text checkMonumentFee__10daNpc_Tc_cFUsUs */
bool daNpc_Tc_c::checkMonumentFee(u16 i_stageNo, u16 i_eventId) {
if (dComIfGs_isStageTbox(i_stageNo, 0xf)) {
return dComIfGs_isEventBit(i_eventId);
}
return false;
}
/* 000059A8-00005A50 .text checkAllMonumentFee__10daNpc_Tc_cFv */
bool daNpc_Tc_c::checkAllMonumentFee() {
if(checkMonumentFee(dSv_save_c::STAGE_DRC, dSv_event_flag_c::UNK_1240) &&
checkMonumentFee(dSv_save_c::STAGE_FW, dSv_event_flag_c::UNK_1D08) &&
checkMonumentFee(dSv_save_c::STAGE_TOTG, dSv_event_flag_c::UNK_1D04) &&
checkMonumentFee(dSv_save_c::STAGE_WT, dSv_event_flag_c::UNK_1D02) &&
checkMonumentFee(dSv_save_c::STAGE_ET, dSv_event_flag_c::UNK_1D01)) {
return true;
}
return false;
}
#if VERSION == VERSION_DEMO
bool daNpc_Tc_c::checkOneMonumentGet() {
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_DRC, 0xf)) {
return true;
}
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_FW, 0xf)) {
return true;
}
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_TOTG, 0xf)) {
return true;
}
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_WT, 0xf)) {
return true;
}
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_ET, 0xf)) {
return true;
}
return false;
}
#endif
/* 00005A50-00005B10 .text checkAllMonumentPay__10daNpc_Tc_cFv */
int daNpc_Tc_c::checkAllMonumentPay() {
int amountOfMonumentsPaid = 0;
if(checkMonumentPay(dSv_save_c::STAGE_DRC, dSv_event_flag_c::UNK_1240)) {
amountOfMonumentsPaid++;
}
if (checkMonumentPay(dSv_save_c::STAGE_FW, dSv_event_flag_c::UNK_1D08)) {
amountOfMonumentsPaid++;
}
if (checkMonumentPay(dSv_save_c::STAGE_TOTG, dSv_event_flag_c::UNK_1D04)) {
amountOfMonumentsPaid++;
}
if (checkMonumentPay(dSv_save_c::STAGE_WT, dSv_event_flag_c::UNK_1D02)) {
amountOfMonumentsPaid++;
}
if (checkMonumentPay(dSv_save_c::STAGE_ET, dSv_event_flag_c::UNK_1D01)) {
amountOfMonumentsPaid++;
}
return amountOfMonumentsPaid;
}
/* 00005B10-00005B98 .text checkMonumentPay__10daNpc_Tc_cFUsUs */
bool daNpc_Tc_c::checkMonumentPay(u16 i_stageNo, u16 i_eventId) {
if(dComIfGs_isEventBit(i_eventId)) {
return false;
}
if(dComIfGs_isStageTbox(i_stageNo, 0xF)) {
dComIfGs_onEventBit(i_eventId);
return true;
}
return false;
}
+131
View File
@@ -0,0 +1,131 @@
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "white's" functions
// are in a separate .text section from the rest of its functions.
/* 00005158-000053D4 .text next_msgStatusWhite__10daNpc_Tc_cFPUl */
u16 daNpc_Tc_c::next_msgStatusWhite(u32* pMsgNo) {
m_jnt.offHeadLock();
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
} else {
switch (*pMsgNo) {
case 0xDC5:
*pMsgNo = 0xDC6;
break;
case 0xDC6:
*pMsgNo = setFinishMsg();
break;
case 0xDC8:
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
if (!field_0x80E) {
field_0x80E = true;
*pMsgNo = 0xDD7;
}
} else if (!field_0x80F) {
field_0x80F = true;
*pMsgNo = 0xDC9;
}
break;
case 0xDD7:
*pMsgNo = 0xDD8;
break;
case 0xDD8:
*pMsgNo = setFinishMsg();
break;
case 0xDC9:
if (mpCurrMsg->mSelectNum == 0) {
*pMsgNo = 0xDCA;
} else {
*pMsgNo = 0xDD3;
}
break;
case 0xDCA:
*pMsgNo = 0xDCB;
break;
case 0xDCB:
*pMsgNo = 0xDCC;
break;
case 0xDCC:
*pMsgNo = 0xDCD;
break;
case 0xDCD:
*pMsgNo = 0xDCE;
break;
case 0xDCE:
*pMsgNo = 0xDCF;
break;
case 0xDCF:
*pMsgNo = 0xDD0;
break;
case 0xDD0:
*pMsgNo = 0xDD1;
break;
case 0xDD1:
*pMsgNo = 0xDD2;
break;
case 0xDD2:
*pMsgNo = setFinishMsg();
break;
case 0xDD3:
*pMsgNo = 0xDD4;
break;
case 0xDD4:
*pMsgNo = 0xDD5;
break;
case 0xDD5:
*pMsgNo = setFinishMsg();
break;
case 0xDC7:
m_jnt.onHeadLock();
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
case 0xDD9:
*pMsgNo = 0xDDA;
break;
case 0xDDA:
if (existTcMonument()) {
*pMsgNo = setFinishMsg();
} else {
*pMsgNo = 0xDDB;
}
break;
case 0xDDB:
*pMsgNo = 0xDDC;
break;
case 0xDDC:
*pMsgNo = setFinishMsg();
break;
default:
msgStatus = fopMsgStts_MSG_ENDS_e;
break;
}
}
return msgStatus;
}
/* 000053D4-00005498 .text getMsgWhite__10daNpc_Tc_cFv */
u32 daNpc_Tc_c::getMsgWhite() {
u32 msg;
stopTower();
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1708)) {
msg = 0xDD9;
m_jnt.onHeadLock();
} else {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
if (!field_0x80E) {
msg = 0xDC8;
m_jnt.onHeadLock();
} else {
msg = 0xDD6;
}
} else if (!field_0x80F) {
msg = 0xDC8;
m_jnt.onHeadLock();
} else {
msg = 0xDC5;
m_jnt.onHeadLock();
}
}
return msg;
}
+1 -1
View File
@@ -99,7 +99,7 @@ void daObjSmplbg::Act_c::init_mtx() {
/* 00000594-0000061C .text exec_qtkhd__Q211daObjSmplbg5Act_cFv */
void daObjSmplbg::Act_c::exec_qtkhd() {
if(field_0x2D8 == 0){
if(!mIsStop) {
shape_angle.y += 0x5b;
fopAcM_seStart(this, JA_SE_OBJ_TC_TOWER_ROUND, 0);
}