npc_toby OK (#2733)

* npc_toby 68% done

* address ykm ykw regressions

* All npc_toby cut done + chkPassed1 fakematch

* npc_toby OK

* npc_toby some hio var rename

* npc_gnd cleanup

* npc_gnd CreateHeap and reset

* Add fakematch comment fo get_u16_Idx
This commit is contained in:
YunataSavior
2025-10-16 20:21:57 -07:00
committed by GitHub
parent da605fd792
commit 43bf8abf48
13 changed files with 2665 additions and 3098 deletions
+21 -5
View File
@@ -461,12 +461,18 @@ int daNpcT_Path_c::getDstPosH(cXyz i_pnt, cXyz* o_pos_p, int i_idx, int param_3)
/* 80146188-801464D8 140AC8 0350+00 2/2 0/0 2/2 .text chkPassed1__13daNpcT_Path_cF4cXyzi
*/
// NONMATCHING one instruction order swap
int daNpcT_Path_c::chkPassed1(cXyz i_pnt, int i_num) {
cXyz prev_pos, cur_pos, next_pos;
cXyz prev_pos;
cXyz cur_pos;
cXyz next_pos;
cXyz sp5C;
#if VERSION != VERSION_SHIELD_DEBUG
// FIXME: fakematch. I literally don't know how else to get this to match....
u16 cur_idx = get_u16_Idx();
#else
u16 cur_idx = getIdx();
#endif
u16 prev_idx, next_idx;
prev_idx = next_idx = cur_idx;
@@ -543,7 +549,7 @@ int daNpcT_Path_c::chkPassed2(cXyz i_pnt, cXyz* param_2, int i_num, int param_4)
cXyz h_startTan;
cXyz h_endTan;
u16 cur_idx = (u16)getIdx();
u16 cur_idx = getIdx();
u16 sp10;
u16 prev_idx;
u16 next_idx;
@@ -1794,11 +1800,17 @@ int daNpcT_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
}
/* 8014997C-80149BB4 1442BC 0238+00 1/0 1/0 58/0 .text evtProc__8daNpcT_cFv */
// NONMATCHING loads dComIfG_gameInfo twice
BOOL daNpcT_c::evtProc() {
BOOL ret = FALSE;
if (dComIfGp_event_runCheck() != 0) {
#if VERSION != VERSION_SHIELD_DEBUG
// TODO: gameInfo fake match to force reuse of pointer
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
if (play->getEvent().runCheck())
#else
if (dComIfGp_event_runCheck())
#endif
{
if (eventInfo.checkCommandTalk()) {
if (!checkChangeEvt()) {
evtTalk();
@@ -1807,7 +1819,11 @@ BOOL daNpcT_c::evtProc() {
} else if (eventInfo.checkCommandDemoAccrpt()
&& dComIfGp_getEventManager().endCheck(mEvtId)) {
if (evtEndProc()) {
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
mEvtId = -1;
}
} else {
File diff suppressed because it is too large Load Diff
+6 -8
View File
@@ -454,8 +454,8 @@ BOOL daNpc_Moi_c::isDelete() {
/* 80A74D8C-80A7513C 000F2C 03B0+00 1/1 0/0 0/0 .text reset__11daNpc_Moi_cFv */
void daNpc_Moi_c::reset() {
int iVar8;
csXyz cStack_80;
cXyz cStack_30;
csXyz cStack_80;
int iVar1 = (u8*)&field_0x1670 - (u8*)&field_0x1610;
if (mpMatAnm[0] != NULL) {
@@ -489,13 +489,13 @@ void daNpc_Moi_c::reset() {
break;
case TYPE_2:
if (daNpcT_chkEvtBit(0xcd)) {
JUT_ASSERT(1932, 0 != mPath.getPathInfo());
iVar8 = g_Counter.mCounter0 % mPath.getNumPnts();
cStack_30 = mPath.getPntPos(iVar8);
setPos(cStack_30);
mPath.setIdx(iVar8);
mPath.setNextIdx(mPath.getNumPnts());
u16 path_idx = mPath.getIdx();
cStack_30 = mPath.getPntPos(path_idx);
mPath.setNextIdx();
cStack_30 = mPath.getPntPos(mPath.getIdx());
cStack_80.y = cLib_targetAngleY(&current.pos, &cStack_30);
}
field_0x1666 = 1;
@@ -1576,8 +1576,7 @@ int daNpc_Moi_c::cutConversationWithUri(int param_1) {
setPos(cStack_34);
mPath.setIdx(0);
mPath.setNextIdx(mPath.getNumPnts());
u16 path_idx = mPath.getIdx();
cStack_34 = mPath.getPntPos(path_idx);
cStack_34 = mPath.getPntPos(mPath.getIdx());
setAngle(cLib_targetAngleY(&current.pos, &cStack_34));
break;
case 2:
@@ -1638,8 +1637,7 @@ int daNpc_Moi_c::cutFindWolf(int param_1) {
mPath.offReverse();
mPath.setIdx(0);
mPath.setNextIdx(mPath.getNumPnts());
u16 path_idx = mPath.getIdx();
cStack_30 = mPath.getPntPos(path_idx);
cStack_30 = mPath.getPntPos(mPath.getIdx());
field_0x1664 = fopAcM_searchPlayerAngleY(this);
setAngle(field_0x1664);
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
+2199 -2071
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -3426,7 +3426,7 @@ BOOL daNpc_ykM_c::race(void* param_1) {
int idx;
while (true) {
if (mPath.chkPassed1(current.pos, mPath.getNumPnts())) {
if (mPath.getArg0() == 0) {
if (u8(mPath.getArg0()) == 0) {
mSound.startCreatureSound(Z2SE_YM_SNOBO_JUMP, 0, -1);
mSound.startCreatureVoice(Z2SE_YM_V_SNOBO_JUMP, -1);
field_0x157e = 1;
+1 -1
View File
@@ -2879,7 +2879,7 @@ int daNpc_ykW_c::race(void* param_0) {
if (field_0x106e == 0) {
while (true) {
if (mPath.chkPassed1(current.pos, mPath.getNumPnts())) {
if (mPath.getArg0() == 0) {
if (u8(mPath.getArg0()) == 0) {
mSound.startCreatureSound(Z2SE_YW_SNOBO_JUMP, 0, -1);
mSound.startCreatureVoice(Z2SE_YW_V_SNOBO_JUMP, -1);
field_0x106e = 1;
+2 -2
View File
@@ -148,7 +148,7 @@ int daObj_AutoMata_c::Execute() {
mAnmPlaySpeed = 0.0f;
setSe();
setMtx();
if (field_0xb31 == 0) {
if (mCoNone == 0) {
cStack_28.set(0.0f, 40.0f, 0.0f);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
mDoMtx_stack_c::multVec(&cStack_28, &sphCenter);
@@ -164,7 +164,7 @@ int daObj_AutoMata_c::Execute() {
mCyl.ClrCoHit();
attention_info.flags = 0;
eyePos = attention_info.position = current.pos;
field_0xb31 = 0;
mCoNone = 0;
return 1;
}
return 0;