mirror of
https://github.com/zeldaret/tp
synced 2026-06-17 15:17:13 -04:00
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:
+21
-5
@@ -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 {
|
||||
|
||||
+222
-874
File diff suppressed because it is too large
Load Diff
@@ -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(¤t.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(¤t.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
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user