dbg npc_aru (-1 func), npc_maro, and npc_bans equiv (#3053)

* dbg npc_aru (-1 func), npc_maro, and tag_push equiv
* daNpc_Aru_c::adjustMoveDir doesn't match. I don't know how to fix it without breaking GCN

* JORM default args + PR comments

* npc_bans dbg equiv
This commit is contained in:
YunataSavior
2026-01-20 16:28:50 -08:00
committed by GitHub
parent 1fba6e13e5
commit 6472d5a4a6
11 changed files with 629 additions and 416 deletions
+1 -1
View File
@@ -277,7 +277,7 @@ public:
u32 checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
u32 checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); }
u32 checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); }
u32 checkHorseCallWait() const { return checkStateFlg0(FLG0_NO_DRAW_WAIT); }
u32 checkHorseCallWait() { return checkStateFlg0(FLG0_NO_DRAW_WAIT); }
BOOL checkTurn() const { return m_procID == PROC_TURN_e && field_0x1720 == 0; }
BOOL checkStop() const { return m_procID == PROC_STOP_e; }
BOOL checkJump() const { return m_procID == PROC_JUMP_e; }
+5 -7
View File
@@ -153,7 +153,9 @@ public:
char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
i_arcNames) {
OS_REPORT("|%06d:%x|daNpc_Aru_c -> コンストラクト\n", g_Counter.mCounter0, this);
}
u16 getEyeballMaterialNo() { return ARU_EYEBALL_M; }
s32 getHeadJointNo() { return JNT_HEAD; }
s32 getNeckJointNo() { return JNT_NECK; }
@@ -165,13 +167,9 @@ public:
int getFlowNodeNo() {
u16 nodeNo = home.angle.x;
if (nodeNo == 0xffff) {
return -1;
}
return nodeNo;
return (nodeNo == 0xFFFF) ? -1 : nodeNo;
}
int getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
void setLastIn() { mLastGoatIn = true; }
static char* mCutNameList[7];
+12 -6
View File
@@ -7,7 +7,7 @@
struct daNpc_Maro_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ s16 field_0x8c;
/* 0x8C */ s16 tease_interval;
};
class daNpc_Maro_Param_c {
@@ -125,6 +125,7 @@ public:
int arrowTutorial(void*);
int talk(void*);
int shop(void*);
BOOL test(void*);
daNpc_Maro_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
@@ -169,16 +170,21 @@ public:
static char* mCutNameList[17];
static cutFunc mCutList[17];
u8 getGroupId() {
return (fopAcM_GetParam(this) & 0xF0000000) >> 28;
}
u8 getPathID() {
return (fopAcM_GetParam(this) & 0xFF00) >> 8;
}
int getFlowNodeNo() {
u16 nodeNo = home.angle.x;
if (nodeNo == 0xffff) {
return -1;
}
return nodeNo;
return (nodeNo == 0xFFFF) ? -1 : nodeNo;
}
u8 getMaxNumItem() {
return (fopAcM_GetParam(this) & 0xf000000) >> 0x18;
return (fopAcM_GetParam(this) & 0xF000000) >> 24;
}
private:
+2 -2
View File
@@ -174,7 +174,7 @@ public:
void setTimeMs(s32 i_time) { mTimeMs = i_time; }
s32 getTimeMs() { return mTimeMs; }
u8 getNowCount() { return mNowCount; }
int getMaxCount() { return mMaxCount; }
u8 getMaxCount() { return mMaxCount; }
void setScopeZoomPointer(u8 param_0) { mScopeZoomPointer = param_0; }
u8 getItemExplainWindowStatus() { return mItemExplainWindowStatus; }
void setItemExplainWindowStatus(u8 i_value) { mItemExplainWindowStatus = i_value; }
@@ -671,7 +671,7 @@ inline u8 dMeter2Info_getNowCount() {
return g_meter2_info.getNowCount();
}
inline int dMeter2Info_getMaxCount() {
inline u8 dMeter2Info_getMaxCount() {
return g_meter2_info.getMaxCount();
}
+4 -4
View File
@@ -70,11 +70,11 @@ public:
/* 0x2c */ fopAc_ac_c* field_0x2c;
/* 0x30 */ fopAc_ac_c* field_0x30;
/* 0x34 */ fopAc_ac_c* field_0x34;
/* 0x38 */ cXyz field_0x38;
/* 0x44 */ cXyz field_0x44;
/* 0x38 */ Vec field_0x38;
/* 0x44 */ Vec field_0x44;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ cXyz field_0x54;
/* 0x60 */ cXyz field_0x60;
/* 0x54 */ Vec field_0x54;
/* 0x60 */ Vec field_0x60;
/* 0x6c */ f32 field_0x6c;
/* 0x70 */ cXyz field_0x70;
/* 0x7C */ cXyz field_0x7c;
File diff suppressed because it is too large Load Diff
+74 -87
View File
@@ -137,6 +137,51 @@ enum Type {
/* 0x5 */ TYPE_DEFAULT,
};
daNpc_Bans_HIOParam const daNpc_Bans_Param_c::m = {
200.0f,
-3.0f,
1.0f,
400.0f,
255.0f,
190.0f,
35.0f,
30.0f,
0.0f,
0.0f,
10.0f,
-10.0f,
30.0f,
-10.0f,
45.0f,
-45.0f,
0.6f,
12.0f,
3,
6,
5,
6,
110.0f,
0.0f,
0.0f,
0.0f,
60,
8,
0,
0,
0,
false,
false,
4.0f,
-20.0f,
0.0f,
-20.0f,
20.0f,
40.0f,
20.0f,
110.0f,
10.0f,
};
#if DEBUG
daNpc_Bans_HIO_c::daNpc_Bans_HIO_c() {
m = daNpc_Bans_Param_c::m;
@@ -150,7 +195,7 @@ void daNpc_Bans_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
switch ((u32)event->id) {
case 0x40000002:
if (jorFile.open(6, "", NULL, NULL, NULL)) {
if (jorFile.open(6, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL)) {
memset(buffer, 0, sizeof(buffer));
len = 0;
daNpcT_cmnListenPropertyEvent(buffer, &len, &m.common);
@@ -325,51 +370,6 @@ daNpc_Bans_c::~daNpc_Bans_c() {
deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList);
}
daNpc_Bans_HIOParam const daNpc_Bans_Param_c::m = {
200.0f,
-3.0f,
1.0f,
400.0f,
255.0f,
190.0f,
35.0f,
30.0f,
0.0f,
0.0f,
10.0f,
-10.0f,
30.0f,
-10.0f,
45.0f,
-45.0f,
0.6f,
12.0f,
3,
6,
5,
6,
110.0f,
0.0f,
0.0f,
0.0f,
60,
8,
0,
0,
0,
false,
false,
4.0f,
-20.0f,
0.0f,
-20.0f,
20.0f,
40.0f,
20.0f,
110.0f,
10.0f,
};
static NPC_BANS_HIO_CLASS l_HIO;
cPhs__Step daNpc_Bans_c::create() {
@@ -439,13 +439,11 @@ cPhs__Step daNpc_Bans_c::create() {
}
int daNpc_Bans_c::CreateHeap() {
J3DModelData* modelData;
int bmdIdx;
int resIdx;
u32 idx = 0;
idx = mTwilight == true ? TRUE : FALSE;
resIdx = l_bmdData[idx][1];
bmdIdx = l_bmdData[idx][0];
J3DModelData* modelData = NULL;
J3DModel* model = NULL;
u32 idx = mTwilight == true ? TRUE : FALSE;
int resIdx = l_bmdData[idx][1];
int bmdIdx = l_bmdData[idx][0];
modelData = (J3DModelData*)dComIfG_getObjectRes(l_resNameList[resIdx], bmdIdx);
if (modelData == NULL) {
return 0;
@@ -457,7 +455,7 @@ int daNpc_Bans_c::CreateHeap() {
return 0;
}
J3DModel* model = mpMorf[0]->getModel();
model = mpMorf[0]->getModel();
for (u16 i = 0; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(ctrlJointCallBack);
}
@@ -477,8 +475,8 @@ int daNpc_Bans_c::CreateHeap() {
return 1;
}
u32 uVar3 = 0x11000084;
mpScoopMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, NULL, J3DMdlFlag_DifferedDLBuffer, uVar3);
uVar2 = 0x11000084;
mpScoopMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, NULL, J3DMdlFlag_DifferedDLBuffer, uVar2);
if (mpScoopMorf == NULL || mpScoopMorf->getModel() == NULL) {
return 0;
}
@@ -1119,10 +1117,10 @@ bool daNpc_Bans_c::setScoopAnm(int i_idx, int i_attr, f32 i_morf) {
};
J3DAnmTransform* anm = NULL;
int my_idx = i_idx;
if (mpScoopMorf != NULL) {
if (scoopAnmData[i_idx][0] > 0) {
anm = getTrnsfrmKeyAnmP(l_resNameList[scoopAnmData[i_idx][1]], scoopAnmData[i_idx][0]);
if (scoopAnmData[my_idx][0] > 0) {
anm = getTrnsfrmKeyAnmP(l_resNameList[scoopAnmData[my_idx][1]], scoopAnmData[my_idx][0]);
}
if (anm != NULL) {
@@ -1133,12 +1131,9 @@ bool daNpc_Bans_c::setScoopAnm(int i_idx, int i_attr, f32 i_morf) {
return 1;
}
bool daNpc_Bans_c::afterSetMotionAnm(int i_idx, int i_attr, f32 i_morf, int param_4) {
if (mCreating == true) {
i_morf = 0.0f;
}
return setScoopAnm(i_idx, i_attr, i_morf);
bool daNpc_Bans_c::afterSetMotionAnm(int i_idx, int i_attr, f32 i_morf, int) {
f32 morf_val = (mCreating == true) ? 0.0f : i_morf;
return setScoopAnm(i_idx, i_attr, morf_val);
}
BOOL daNpc_Bans_c::selectAction() {
@@ -1184,43 +1179,35 @@ BOOL daNpc_Bans_c::setAction(actionFunc action) {
}
BOOL daNpc_Bans_c::checkPlayerIn2ndFloorOfBombShop() {
bool rv = false;
return strcmp("R_SP109", dComIfGp_getStartStageName()) == 0 && dComIfGp_roomControl_getStayNo() == 1 &&
300.0f < fabsf(daPy_getPlayerActorClass()->current.pos.y - current.pos.y);
}
void daNpc_Bans_c::orderAngerEvt() {
daTag_EvtArea_c* actor = NULL;
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->checkUseKandelaar(0) && player->getKandelaarFlamePos() != NULL) {
mEvtNo = EVT_ANGER;
for (int i = 0; i < 2; i++) {
daTag_EvtArea_c* actor = (daTag_EvtArea_c*)mActorMngrs[i + 5].getActorP();
bool bVar1 = false;
bool bVar2 = false;
if (actor != NULL) {
cXyz& pos(player->current.pos);
bVar1 = true;
if (actor->chkPointInArea(pos)) {
mEvtNo = EVT_ANGER_NEAR;
break;
}
actor = (daTag_EvtArea_c*)mActorMngrs[i + 5].getActorP();
if (actor != NULL && actor->chkPointInArea(player->current.pos)) {
mEvtNo = EVT_ANGER_NEAR;
break;
}
}
}
}
fopAc_ac_c* daNpc_Bans_c::getKMsgTagP() {
f32 fVar1 = 1000000000.0f;
int reg_r29 = 0; // unused
f32 fVar1 = G_CM3D_F_INF;
mFindCount = 0;
mSrchName = PROC_TAG_KMSG;
fopAcM_Search(srchActor, this);
int i = 0;
for (; i < mFindCount; i++) {
for (int i = 0; i < mFindCount; i++) {
if (((daTag_KMsg_c*)mFindActorPtrs[i])->getType() == 1) {
return mFindActorPtrs[i];
}
@@ -1485,7 +1472,7 @@ int daNpc_Bans_c::cutPurchase(int i_staffId) {
return rv;
}
int daNpc_Bans_c::wait(void* param_1) {
int daNpc_Bans_c::wait(void*) {
daNpc_Len_c* actor_p = NULL;
switch (mMode) {
@@ -1599,7 +1586,7 @@ int daNpc_Bans_c::wait(void* param_1) {
return 1;
}
int daNpc_Bans_c::tend(void* param_1) {
int daNpc_Bans_c::tend(void*) {
fopAc_ac_c* actor_p = NULL;
switch (mMode) {
@@ -1731,7 +1718,7 @@ int daNpc_Bans_c::tend(void* param_1) {
return 1;
}
int daNpc_Bans_c::talk(void* param_1) {
int daNpc_Bans_c::talk(void*) {
switch (mMode) {
case 0:
case 1:
@@ -1779,7 +1766,7 @@ int daNpc_Bans_c::talk(void* param_1) {
return 0;
}
int daNpc_Bans_c::shop(void* param_1) {
int daNpc_Bans_c::shop(void*) {
switch (mMode) {
case 0:
case 1:
@@ -1820,7 +1807,7 @@ int daNpc_Bans_c::shop(void* param_1) {
return 0;
}
int daNpc_Bans_c::test(void* param_1) {
int daNpc_Bans_c::test(void*) {
int rv = 0;
switch (mMode) {
@@ -1860,7 +1847,7 @@ static int daNpc_Bans_Draw(void* i_this) {
return static_cast<daNpc_Bans_c*>(i_this)->Draw();
}
static int daNpc_Bans_IsDelete(void* i_this) {
static int daNpc_Bans_IsDelete(void*) {
return 1;
}
-1
View File
@@ -360,7 +360,6 @@ void daNpc_Besu_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
}
void daNpc_Besu_HIO_c::genMessage(JORMContext* ctx) {
// NONMATCHING
daNpcT_cmnGenMessage(ctx, &m.common);
// animation playback speed:
ctx->genSlider("アニメ再生速度 ", &m.field_0x8c, -0.0f, 16.0f);
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -2007,7 +2007,7 @@ int daNpc_Toby_c::walk(void*) {
return 1;
}
int daNpc_Toby_c::play(void* param_0) {
int daNpc_Toby_c::play(void*) {
daObj_AutoMata_c* actor_p = (daObj_AutoMata_c*) mActorMngr[1].getActorP();
int reg_r29 = 1;
if (actor_p != NULL) {
@@ -2192,7 +2192,7 @@ static int daNpc_Toby_Draw(void* i_this) {
return static_cast<daNpc_Toby_c*>(i_this)->Draw();
}
static int daNpc_Toby_IsDelete(void* i_this) {
static int daNpc_Toby_IsDelete(void*) {
return true;
}
+1 -1
View File
@@ -154,7 +154,7 @@ static int daTag_Push_Draw(void* i_this) {
return static_cast<daTag_Push_c*>(i_this)->Draw();
}
static int daTag_Push_IsDelete(void* i_this) {
static int daTag_Push_IsDelete(void*) {
return 1;
}