Miscellaneous retail+debug fixes, link several new TUs (#2836)

This commit is contained in:
Max Roncace
2025-11-21 02:09:21 -05:00
committed by GitHub
parent f171287913
commit 81017cf22c
24 changed files with 1354 additions and 1082 deletions
-18
View File
@@ -77,23 +77,5 @@ public:
STATIC_ASSERT(sizeof(daE_WS_c) == 0xb80);
class daE_WS_HIO_c : public JORReflexible {
public:
/* 807E3A0C */ daE_WS_HIO_c();
/* 807E6E44 */ virtual ~daE_WS_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 move_range;
/* 0x10 */ f32 search_range;
/* 0x14 */ f32 search_y_range;
/* 0x18 */ f32 dist_to_ground;
/* 0x1C */ f32 search_angle;
/* 0x20 */ f32 attack_speed;
/* 0x24 */ u8 debug_ON;
};
#endif /* D_A_E_WS_H */
+60 -108
View File
@@ -35,18 +35,18 @@ struct daNpcCd2_HIO_MChild_c {
/* 8015A808 */ daNpcCd2_HIO_MChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[19];
/* 0x1CE */ s16 mMaxLmtY_BACKBONE;
/* 0x1CA */ s16 mMaxLmtX_BACKBONE;
/* 0x1CC */ s16 mMinLmtY_BACKBONE;
/* 0x1CE */ s16 mMinLmtX_BACKBONE;
/* 0x1D0 */ s16 mMaxLmtY_NECK;
/* 0x1D2 */ s16 mMaxLmtX_NECK;
/* 0x1D4 */ s16 mMinLmtY_NECK;
/* 0x1D6 */ s16 mMinLmtX_NECK;
/* 0x1D0 */ s16 mMaxLmtY_HEAD;
/* 0x1D2 */ s16 mMaxLmtX_HEAD;
/* 0x1D4 */ s16 mMinLmtY_HEAD;
/* 0x1D6 */ s16 mMinLmtX_HEAD;
/* 0x1CE */ s16 mMaxLmtX_BACKBONE;
/* 0x1CA */ s16 mMaxLmtY_BACKBONE;
/* 0x1CC */ s16 mMinLmtX_BACKBONE;
/* 0x1CE */ s16 mMinLmtY_BACKBONE;
/* 0x1D0 */ s16 mMaxLmtX_NECK;
/* 0x1D2 */ s16 mMaxLmtY_NECK;
/* 0x1D4 */ s16 mMinLmtX_NECK;
/* 0x1D6 */ s16 mMinLmtY_NECK;
/* 0x1D0 */ s16 mMaxLmtX_HEAD;
/* 0x1D2 */ s16 mMaxLmtY_HEAD;
/* 0x1D4 */ s16 mMinLmtX_HEAD;
/* 0x1D6 */ s16 mMinLmtY_HEAD;
/* 0x1E0 */ f32 mScale;
/* 0x1E4 */ s16 mAttn;
/* 0x1E8 */ f32 mAnmPlaySpeed;
@@ -64,18 +64,18 @@ struct daNpcCd2_HIO_WChild_c {
/* 8015A730 */ daNpcCd2_HIO_WChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[21];
/* 0x1FE */ s16 mMaxLmtY_BACKBONE;
/* 0x1FA */ s16 mMaxLmtX_BACKBONE;
/* 0x1FC */ s16 mMinLmtY_BACKBONE;
/* 0x1FE */ s16 mMinLmtX_BACKBONE;
/* 0x200 */ s16 mMaxLmtY_NECK;
/* 0x202 */ s16 mMaxLmtX_NECK;
/* 0x204 */ s16 mMinLmtY_NECK;
/* 0x206 */ s16 mMinLmtX_NECK;
/* 0x200 */ s16 mMaxLmtY_HEAD;
/* 0x202 */ s16 mMaxLmtX_HEAD;
/* 0x204 */ s16 mMinLmtY_HEAD;
/* 0x206 */ s16 mMinLmtX_HEAD;
/* 0x1FE */ s16 mMaxLmtX_BACKBONE;
/* 0x1FA */ s16 mMaxLmtY_BACKBONE;
/* 0x1FC */ s16 mMinLmtX_BACKBONE;
/* 0x1FE */ s16 mMinLmtY_BACKBONE;
/* 0x200 */ s16 mMaxLmtX_NECK;
/* 0x202 */ s16 mMaxLmtY_NECK;
/* 0x204 */ s16 mMinLmtX_NECK;
/* 0x206 */ s16 mMinLmtY_NECK;
/* 0x200 */ s16 mMaxLmtX_HEAD;
/* 0x202 */ s16 mMaxLmtY_HEAD;
/* 0x204 */ s16 mMinLmtX_HEAD;
/* 0x206 */ s16 mMinLmtY_HEAD;
/* 0x218 */ f32 mScale;
/* 0x21C */ s16 mAttn;
/* 0x220 */ f32 mAnmPlaySpeed;
@@ -148,123 +148,75 @@ inline f32 Cd2_HIO_cylH(int param_1) {
}
inline s16 Cd2_HIO_maxLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_BACKBONE);
}
inline s16 Cd2_HIO_maxLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_BACKBONE);
}
inline s16 Cd2_HIO_maxLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_NECK);
}
inline s16 Cd2_HIO_maxLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_NECK);
}
inline s16 Cd2_HIO_maxLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_HEAD);
}
inline s16 Cd2_HIO_maxLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_HEAD);
}
inline s16 Cd2_HIO_minLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_BACKBONE);
}
inline s16 Cd2_HIO_minLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_BACKBONE;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_BACKBONE);
}
inline s16 Cd2_HIO_minLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_NECK);
}
inline s16 Cd2_HIO_minLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_NECK;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_NECK);
}
inline s16 Cd2_HIO_minLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_HEAD);
}
inline s16 Cd2_HIO_minLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_HEAD;
}
return rv;
return (s16)(param_1 < 16 ?
l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD :
l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_HEAD);
}
class PathTrace_c {
+75 -52
View File
@@ -93,6 +93,7 @@ public:
/* 8097C844 */ int sing(void*);
/* 8097C910 */ int create();
/* 8097CC58 */ void create_init();
inline int createHeap();
/* 8097D078 */ void setMtx();
/* 8097D120 */ void lookat();
/* 8097D684 */ virtual ~daNpcCdn3_c();
@@ -102,17 +103,23 @@ public:
inline int draw();
int getTimeHour() {
int hour;
if (mIsDarkWorld) {
return dKy_getDarktime_hour();
}
return dKy_getdaytime_hour();
hour = dKy_getDarktime_hour();
} else {
hour = dKy_getdaytime_hour();
}
return hour;
}
int getTimeMinute() {
int minute;
if (mIsDarkWorld) {
return dKy_getDarktime_minute();
}
return dKy_getdaytime_minute();
minute = dKy_getDarktime_minute();
} else {
minute = dKy_getdaytime_minute();
}
return minute;
}
int getTime() {
@@ -120,20 +127,23 @@ public:
}
int getDayOfWeek() {
int day;
if (mIsDarkWorld) {
return dKy_getDarktime_week();
day = dKy_getDarktime_week();
} else {
return dKy_get_dayofweek();
day = dKy_get_dayofweek();
}
return day;
}
void setSpeed(f32* param_1, f32 param_2, f32 param_3, int param_4) {
f32 target = field_0xb5c * (param_3 * field_0xb5c);
f32 step = field_0xb5c * (param_2 * field_0xb5c);
if (param_3 < target) {
target = param_3;
void setSpeed(f32 param_0, f32 param_1, f32* param_2, int param_3) {
(void)param_3;
f32 target = field_0xb5c * (param_1 * field_0xb5c);
f32 step = field_0xb5c * (param_0 * field_0xb5c);
if (param_1 < target) {
target = param_1;
}
cLib_chaseF(param_1, target, step);
cLib_chaseF(param_2, target, step);
}
int getGroupID() { return fopAcM_GetParam(this) & 0xff; }
@@ -142,15 +152,17 @@ public:
int getType() { return argument & 0x7f; }
int getSeqNum() { return shape_angle.x & 0x3f; }
int getFlowNodeNum() { return shape_angle.z; }
u16 getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
u16 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
u8 getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
u8 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
void initParamTime() {
u16 startTime = getStartTime();
u16 endTime = getEndTime();
u16 x;
u16 y;
u8 startTime = getStartTime();
u8 endTime = getEndTime();
if (startTime != 0xff && endTime != 0xff) {
u16 x = startTime / 10;
u16 y = (startTime % 10) * 10;
x = startTime / 10;
y = (startTime % 10) * 10;
field_0xb8c = y + x * 60;
x = endTime / 10;
y = (endTime % 10) * 10;
@@ -179,78 +191,77 @@ public:
}
int getObjNum() {
u8 uVar3 = (shape_angle.x >> 6) & 0xf;
int rv;
int uVar3 = (shape_angle.x >> 6) & 0xf;
if (isM_()) {
switch (uVar3) {
case 0:
rv = 0;
uVar3 = 0;
break;
case 1:
rv = 1;
uVar3 = 1;
break;
case 2:
rv = 2;
uVar3 = 2;
break;
case 3:
rv = 4;
uVar3 = 4;
break;
case 4:
rv = 6;
uVar3 = 6;
break;
case 5:
rv = 0;
uVar3 = 0;
break;
case 6:
rv = 0;
uVar3 = 0;
break;
case 7:
rv = 9;
uVar3 = 9;
break;
default:
rv = 0;
uVar3 = 0;
break;
}
/* dSv_event_flag_c::F_0281 - Shop - Malo Mart opens in Castle Town */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[281]) && rv == 9) {
rv = 0xb;
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[281]) && uVar3 == 9) {
uVar3 = 0xb;
}
} else {
switch (uVar3) {
case 0:
rv = 0;
uVar3 = 0;
break;
case 1:
rv = 8;
uVar3 = 8;
break;
case 2:
rv = 3;
uVar3 = 3;
break;
case 3:
rv = 5;
uVar3 = 5;
break;
case 4:
rv = 7;
uVar3 = 7;
break;
case 5:
rv = 0;
uVar3 = 0;
break;
case 6:
rv = 0;
uVar3 = 0;
break;
case 7:
rv = 10;
uVar3 = 10;
break;
default:
rv = 0;
uVar3 = 0;
break;
}
/* dSv_event_flag_c::F_0281 - Shop - Malo Mart opens in Castle Town */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[281]) && rv == 10) {
rv = 12;
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[281]) && uVar3 == 10) {
uVar3 = 12;
}
}
return rv;
return uVar3;
}
void initCollision() {
@@ -277,11 +288,11 @@ public:
if (strcmp(dComIfGp_getStartStageName(), "F_SP116") != 0) {
return 0;
} else {
if (mSeqNum == 17 &&
if (m_seqNum == 17 &&
(getType() == 4 || getType() == 5 || getType() == 6 || getType() == 16))
{
return 1;
} else if (mSeqNum == 37 && getType() == 7) {
} else if (m_seqNum == 37 && getType() == 7) {
return 1;
} else {
return 0;
@@ -314,7 +325,14 @@ public:
}
int orderEvent() {
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) && mFlowNodeNum > 0 && ((attention_info.flags & fopAc_AttnFlag_SPEAK_e) || (attention_info.flags & fopAc_AttnFlag_TALK_e))) {
#if PLATFORM_SHIELD
if (mFlowNodeNum > 0) {
#else
if ((!mIsDarkWorld || daPy_py_c::checkNowWolfEyeUp()) &&
mFlowNodeNum > 0 &&
((attention_info.flags & fopAc_AttnFlag_SPEAK_e) ||
(attention_info.flags & fopAc_AttnFlag_TALK_e))) {
#endif
eventInfo.onCondition(dEvtCnd_CANTALK_e);
}
return 1;
@@ -323,7 +341,12 @@ public:
inline bool searchFirstScheduleTag();
inline bool searchNextScheduleTag();
static actionFunc ActionTable[8][2];
struct ActionPair {
actionFunc mInitFn;
actionFunc mExecFn;
};
static const ActionPair ActionTable[8];
static seqFunc* m_funcTbl[44];
static seqFunc m_seq00_funcTbl[2];
static seqFunc m_seq01_funcTbl[2];
@@ -375,7 +398,7 @@ public:
/* 0xAD0 */ PathTrace_c m_path;
/* 0xAE8 */ daNpcT_ActorMngr_c m_targetAct;
/* 0xB00 */ dMsgFlow_c mMsgFlow;
/* 0xB4C */ daNpcCdn3_c::actionFunc* mAction;
/* 0xB4C */ const actionFunc* mAction;
/* 0xB50 */ Mode_e mMode;
/* 0xB54 */ Mode_e mPrevMode;
/* 0xB58 */ int mObjNum;
@@ -386,7 +409,7 @@ public:
/* 0xB6C */ int mMsgIndex;
/* 0xB70 */ int mFlowNodeNum;
/* 0xB74 */ int field_0xb74;
/* 0xB78 */ int mSeqNum;
/* 0xB78 */ int m_seqNum;
/* 0xB7C */ int field_0xb7c;
/* 0xB80 */ J3DAnmTransform* field_0xb80;
/* 0xB84 */ daTagSchedule_c* mTagSched;
@@ -398,7 +421,7 @@ public:
/* 0xB94 */ u8 field_0xb94;
/* 0xB95 */ u8 field_0xb95;
/* 0xB96 */ u8 field_0xb96;
/* 0xB97 */ u8 field_0xb97;
/* 0xB97 */ u8 m_seqStep;
/* 0xB98 */ u8 field_0xb98;
/* 0xB99 */ u8 field_0xb99;
};
+5
View File
@@ -34,6 +34,7 @@ public:
/* 80BC5CF8 */ int CreateHeap();
/* 80BC5E98 */ int create();
/* 80BC6260 */ int Execute(Mtx**);
void block_mode_proc_call();
/* 80BC6270 */ void initWait();
/* 80BC627C */ void modeWait();
/* 80BC6414 */ void initWalk();
@@ -70,6 +71,10 @@ private:
/* 0xCA3 */ u8 field_0xca3;
/* 0xCA4 */ s16 walkTimer;
/* 0xCA6 */ s16 field_0xca6;
#if DEBUG
/* 0xCB0 */ cXyz field_0xcb0_debug[2];
/* 0xCC8 */ cXyz field_0xcc8_debug[2];
#endif
};
STATIC_ASSERT(sizeof(daObjCBlk_c) == 0xca8);
+2
View File
@@ -43,6 +43,8 @@ public:
/* 80CE7CC4 */ void setMtx();
/* 80CE7D28 */ void setAttnPos();
/* 80CE7D5C */ int wait(void* param_0);
int buy(void* param_0);
int cancel(void* param_0);
static dCcD_SrcGObjInf const mCcDObjInfo;
static dCcD_SrcCyl mCcDCyl;
+7 -3
View File
@@ -11,13 +11,17 @@ public:
}
int getSeqNum() { return (fopAcM_GetParam(this) >> 6) & 0x3f; }
u16 getStartTime() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
u8 getStartTime() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
u8 getStartEnd() { return (fopAcM_GetParam(this) >> 20) & 0xff; }
int getGroupID() { return fopAcM_GetParam(this) & 0x3f; }
int getWeekNum() { return mWeekNum; }
void setWeekNum(int weekNum) { mWeekNum = weekNum; }
#if PLATFORM_SHIELD
void setWeekNum(u32 weekNum) { mWeekNum = weekNum % 7; }
#else
void setWeekNum(int weekNum) { mWeekNum = weekNum % (u32)7; }
#endif
u8 getPathID() { return shape_angle.x & 0xff; }
s16 getFlowNodeNum() { return shape_angle.z; }
int getFlowNodeNum() { return shape_angle.z; }
/* 0x568 */ int mWeekNum;
};