diff options
| author | Max Roncace <me@caseif.net> | 2025-11-21 02:09:21 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-20 23:09:21 -0800 |
| commit | e6a5d5c3dd3249fe61086ba37fecc9684caa4191 (patch) | |
| tree | f2ab7b1f19f278159263bfcf3340575aaa599d2c /src | |
| parent | 91011befd7f834db307ab4b35d7937b470c9f333 (diff) | |
Miscellaneous retail+debug fixes, link several new TUs (#2836)
Diffstat (limited to 'src')
| -rw-r--r-- | src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp | 43 | ||||
| -rw-r--r-- | src/d/actor/d_a_b_mgn.cpp | 10 | ||||
| -rw-r--r-- | src/d/actor/d_a_e_ws.cpp | 18 | ||||
| -rw-r--r-- | src/d/actor/d_a_mant.cpp | 256 | ||||
| -rw-r--r-- | src/d/actor/d_a_mg_fshop.cpp | 4 | ||||
| -rw-r--r-- | src/d/actor/d_a_npc_cd2.cpp | 4 | ||||
| -rw-r--r-- | src/d/actor/d_a_npc_cdn3.cpp | 1398 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_cblock.cpp | 207 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_lv7PropellerY.cpp | 6 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_lv7bridge.cpp | 38 | ||||
| -rw-r--r-- | src/d/actor/d_a_obj_ss_item.cpp | 41 | ||||
| -rw-r--r-- | src/m_Do/m_Do_ext.cpp | 25 |
12 files changed, 1175 insertions, 875 deletions
diff --git a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index dfd97c6606..e1f06d3baa 100644 --- a/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -293,19 +293,38 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) { int uVar13; for (; (int)pDListPos - (int)pDList < pModelData->getShapeNodePointer(i)->getShapeDraw(j)->getDisplayListSize(); - pDListPos += r23 * uVar13) + pDListPos += r23 * uVar13 + //TODO: This loop's logic has drastically different codegen between GCN and Shield + // in a way that so far can't be pinned down as just compiler differences. This + // may have been refactored in the J3D version used for Shield, but note that + // it's very possible that this is a fakematch and there's some other way of + // expressing it that matches for both versions. +#if PLATFORM_GCN + , pDListPos += 3 +#endif + ) { u8 command = *pDListPos; +#if !PLATFORM_GCN pDListPos++; +#endif if (command != GX_TRIANGLEFAN && command != GX_TRIANGLESTRIP) { break; } - + +#if PLATFORM_GCN + uVar13 = *(u16*)(pDListPos + 1); +#else uVar13 = *(u16*)pDListPos; pDListPos += 2; +#endif for (int local_60 = 0; local_60 < uVar13; local_60++) { - u8* iVar5 = pDListPos + r23 * local_60; - u8 bVar3 = *(iVar5 + pnmtx_num) / 3U; +#if PLATFORM_GCN + u8* iVar5 = ((u8*)(pDListPos + 3) + r23 * local_60); +#else + u8* iVar5 = ((u8*)pDListPos + r23 * local_60); +#endif + u8 bVar3 = *(u8*)(iVar5 + pnmtx_num) / 3U; u16 vtx_idx = *(u16*)(iVar5 + vtx_num); u16 nrm_idx = *(u16*)(iVar5 + nrm_num); u16 uVar3 = *(u16*)(iVar5 + tex_num); @@ -563,8 +582,8 @@ void J3DSkinDeform::deformVtxPos_F32(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer* J3DJointTree* jointTree = pMtxBuffer->getJointTree(); int vtxNum = pVtxBuffer->getVertexData()->getVtxNum(); int sp8 = jointTree->getDrawMtxNum(); - void* currentVtxPos = pVtxBuffer->getCurrentVtxPos(); - void* transformedVtxPos = pVtxBuffer->getTransformedVtxPos(0); + void* currentVtxPos = (void*)pVtxBuffer->getCurrentVtxPos(); + void* transformedVtxPos = (void*)pVtxBuffer->getTransformedVtxPos(0); for (int i = 0; i < vtxNum; i++) { anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])]; @@ -590,8 +609,8 @@ void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer* J3DJointTree* jointTree = pMtxBuffer->getJointTree(); int vtxNum = pVtxBuffer->getVertexData()->getVtxNum(); int sp8 = jointTree->getDrawMtxNum(); - void* currentVtxPos = pVtxBuffer->getCurrentVtxPos(); - void* transformedVtxPos = pVtxBuffer->getTransformedVtxPos(0); + void* currentVtxPos = (void*)pVtxBuffer->getCurrentVtxPos(); + void* transformedVtxPos = (void*)pVtxBuffer->getTransformedVtxPos(0); for (int i = 0; i < vtxNum; i++) { anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])]; @@ -608,8 +627,8 @@ void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* pVtxBuffer, J3DMtxBuffer* void J3DSkinDeform::deformVtxNrm_F32(J3DVertexBuffer* pVtxBuffer) const { pVtxBuffer->swapTransformedVtxNrm(); int nrmNum = pVtxBuffer->getVertexData()->getNrmNum(); - void* currentVtxNrm = pVtxBuffer->getCurrentVtxNrm(); - void* transformedVtxNrm = pVtxBuffer->getTransformedVtxNrm(0); + void* currentVtxNrm = (void*)pVtxBuffer->getCurrentVtxNrm(); + void* transformedVtxNrm = (void*)pVtxBuffer->getTransformedVtxNrm(0); for (int i = 0; i < nrmNum; i++) { J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], (Vec*)((u8*)currentVtxNrm + i * 3 * 4), (Vec*)((u8*)transformedVtxNrm + i * 3 * 4)); @@ -628,8 +647,8 @@ void J3DSkinDeform::deformVtxNrm_S16(J3DVertexBuffer* pVtxBuffer) const { pVtxBuffer->swapTransformedVtxNrm(); int nrmNum = pVtxBuffer->getVertexData()->getNrmNum(); - void* currentVtxNrm = pVtxBuffer->getCurrentVtxNrm(); - void* transformedVtxNrm = pVtxBuffer->getTransformedVtxNrm(0); + void* currentVtxNrm = (void*)pVtxBuffer->getCurrentVtxNrm(); + void* transformedVtxNrm = (void*)pVtxBuffer->getTransformedVtxNrm(0); for (int i = 0; i < nrmNum; i++) { J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], (S16Vec*)(((s16*)currentVtxNrm) + (i * 3)), (S16Vec*)(((s16*)transformedVtxNrm) + (i * 3))); diff --git a/src/d/actor/d_a_b_mgn.cpp b/src/d/actor/d_a_b_mgn.cpp index c55bebb951..4f0590e375 100644 --- a/src/d/actor/d_a_b_mgn.cpp +++ b/src/d/actor/d_a_b_mgn.cpp @@ -1327,15 +1327,15 @@ void daB_MGN_c::executeCircle() { } /* 80608EF8-80609D70 0038B8 0E78+00 2/1 0/0 0/0 .text executeDash__9daB_MGN_cFv */ -// NONMATCHING - small regalloc, equivalent +// NONMATCHING - regalloc + extra mr, equivalent void daB_MGN_c::executeDash() { - daPy_py_c* player = daPy_getPlayerActorClass(); + daPy_py_c* player_sp14 = daPy_getPlayerActorClass(); switch (mMoveMode) { case 10: case 11: { cXyz gate_offset(0.0f, 0.0f, -800.0f); - cXyz player_pos(player->current.pos); + cXyz player_pos(player_sp14->current.pos); s16 angle = cLib_targetAngleY(&player_pos, &gate_offset); if (field_0xaff >= 5) { @@ -1449,7 +1449,7 @@ void daB_MGN_c::executeDash() { mJewelColorMode = 2; case 1: attention_info.flags = 0; - if (player->checkNowWolf()) { + if (player_sp14->checkNowWolf()) { attention_info.flags = fopAc_AttnFlag_BATTLE_e; } @@ -1499,7 +1499,7 @@ void daB_MGN_c::executeDash() { field_0xb09 = 1; attention_info.flags = 0; - if (player->checkNowWolf()) { + if (player_sp14->checkNowWolf()) { attention_info.flags |= fopAc_AttnFlag_BATTLE_e; cXyz sp48; diff --git a/src/d/actor/d_a_e_ws.cpp b/src/d/actor/d_a_e_ws.cpp index 9a4d163bf5..e10320ab41 100644 --- a/src/d/actor/d_a_e_ws.cpp +++ b/src/d/actor/d_a_e_ws.cpp @@ -10,6 +10,24 @@ #include <cmath.h> #include "f_op/f_op_actor_enemy.h" +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; +}; + namespace { /* 807E7448-807E7488 000038 0040+00 1/1 0/0 0/0 .data cc_ws_src__22@unnamed@d_a_e_ws_cpp@ */ diff --git a/src/d/actor/d_a_mant.cpp b/src/d/actor/d_a_mant.cpp index 635133181b..97203523ef 100644 --- a/src/d/actor/d_a_mant.cpp +++ b/src/d/actor/d_a_mant.cpp @@ -19,6 +19,7 @@ /* 8086AD40-8086ADA0 008020 0060+00 1/0 0/0 0/0 .data l_Egnd_mantPAL */ #include "assets/l_Egnd_mantPAL.h" +#include "d/d_s_play.h" /* 8086ADA0-8086B58C 008080 07EC+00 0/0 0/0 0/0 .data l_pos */ static u32 l_pos[507] = { @@ -263,7 +264,6 @@ static void* tex_d[2] = { static char lbl_277_bss_0; /* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */ -// NONMATCHING - missing some weird stack duplication void daMant_packet_c::draw() { void* image = tex_d[0]; void* lut = pal_d; @@ -298,10 +298,8 @@ void daMant_packet_c::draw() { dKy_Global_amb_set(this->mTevStr); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); - GXColor local_84 = {1, 0, 0, 0}; - GXSetTevColor(GX_TEVREG0, local_84); - GXColor local_8c = {1, 0, 0, 0}; - GXSetTevKColor(GX_KCOLOR0, local_8c); + GXSetTevColor(GX_TEVREG0, (GXColor){1, 0, 0, 0}); + GXSetTevKColor(GX_KCOLOR0, (GXColor){1, 0, 0, 0}); GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0); @@ -334,10 +332,8 @@ void daMant_packet_c::draw() { GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1); GXLoadTexObj(&GStack_74, GX_TEXMAP0); - GXColor local_94 = {0, 0, 0, 0}; - GXSetTevColor(GX_TEVREG0, local_94); - GXColor local_9c = {0, 0, 0, 0}; - GXSetTevKColor(GX_KCOLOR0, local_9c); + GXSetTevColor(GX_TEVREG0, (GXColor){0, 0, 0, 0}); + GXSetTevKColor(GX_KCOLOR0, (GXColor){0, 0, 0, 0}); GXSetCullMode(GX_CULL_FRONT); GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0); @@ -368,154 +364,192 @@ static int daMant_Draw(mant_class* i_this) { } /* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff */ -// NONMATCHING - regalloc static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f32 param_4, f32 param_5) { static f32 d_p[12] = { 1.4000001f, 0.6f, 0.35f, 0.3f, 0.3f, 0.3f, 0.25f, 0.2f, 0.2f, 0.2f, 0.15f, 0.1f }; - cXyz local_134, local_140, local_14c, local_158, local_164; - BOOL bVar2 = FALSE; - f32 dVar14, dVar16, dVar17, dVar18, dVar19, dVar20; - f32 fVar1; - b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID); + mant_class* mant_sp38 = i_this; + + cXyz spFC; + cXyz spF0; + cXyz spE4; + + int sp34; + f32 sp30; + f32 sp2C; + f32 sp28; + cXyz* var_r30; + cXyz* sp24; + BOOL sp20 = FALSE; + + cXyz spD8; + Vec spCC; + + b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(mant_sp38->parentActorID); + + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 var_f28; + f32 var_f27; + f32 var_f26; + + f32 sp18; + f32 sp14; if (gndActor->mDrawHorse != 0) { - bVar2 = TRUE; - local_158 = gndActor->field_0x1fb8; + sp20 = TRUE; + spD8 = gndActor->field_0x1fb8; } else if (i_this->field_0x3966 != 0) { - local_158 = i_this->field_0x3928[0] + ((i_this->field_0x3928[1] - i_this->field_0x3928[0]) * 0.5f); - local_158.y += -60.0f; + spD8 = i_this->field_0x3928[0] + ((i_this->field_0x3928[1] - i_this->field_0x3928[0]) * 0.5f); + spD8.y += -60.0f + KREG_F(11); } - cXyz* vec_p = param_2->field_0x0; - cXyz* pcVar9 = param_2->field_0x9c; - dBgS_GndChk(dStack_f8); - local_164 = param_2->field_0x0[0]; - local_164.y += 50.0f; + var_r30 = param_2->field_0x0; + sp24 = param_2->field_0x9c; + dBgS_GndChk(sp108); + spCC = param_2->field_0x0[0]; + spCC.y += 50.0f; - dStack_f8.SetPos((Vec*)&local_164); - dVar17 = dComIfG_Bgsp().GroundCross(&dStack_f8) + 3.0f; + sp108.SetPos(&spCC); + var_f27 = dComIfG_Bgsp().GroundCross(&sp108) + 3.0f; - if (dVar17 - param_2->field_0x0[0].y > 50.0f) { - dVar17 = param_2->field_0x0[0].y; + if (var_f27 - var_r30[0].y > 50.0f) { + var_f27 = var_r30[0].y; } - cXyz cStack_170, local_17c; - cXyz local_188(0.0f, 0.0f, 0.0f); - cXyz local_194(0.0f, 0.0f, 0.0f); - cXyz local_1a0(0.0f, 0.0f, 0.0f); + cXyz spC0; + cXyz spB4; + cXyz spA8(0.0f, 0.0f, 0.0f); + cXyz sp9C(0.0f, 0.0f, 0.0f); + cXyz sp90(0.0f, 0.0f, 0.0f); cMtx_YrotS(*calc_mtx, param_2->field_0x013a); - local_134.x = 0.0f; - local_134.y = 0.0f; - local_134.z = i_this->field_0x3954 * (cM_ssin(param_3 * 23000) * 0.05f + 1.0f); - MtxPosition(&local_134, &cStack_170); + spFC.x = 0.0f; + spFC.y = 0.0f; + spFC.z = i_this->field_0x3954 * (cM_ssin(param_3 * 23000) * 0.05f + 1.0f); + MtxPosition(&spFC, &spC0); - cXyz local_1ac; + cXyz sp84; - s16 sVar3 = param_3 + -6; - if (sVar3 < 0) { - sVar3 *= -1; - } + s16 sp0C; + s16 sp0A; - sVar3 *= -4000; - local_134.x = 0.0f; - local_134.y = 0.0f; - local_134.z = i_this->field_0x394c; - local_134.z *= i_this->scale.y; + s16 sp08 = param_3 + -6; + if (sp08 < 0) { + sp08 *= -1; + } - for (int i = 0; i < 13; i++, vec_p++, pcVar9++) { - if (0 < i) { - dVar16 = i_this->field_0x3950; + sp08 *= (s16)(-4000 + VREG_S(5)); + spFC.x = 0.0f; + spFC.y = 0.0f; + spFC.z = i_this->field_0x394c; + spFC.z *= i_this->scale.y; - local_17c = cStack_170 * d_p[i - 1]; + for (sp34 = 0; sp34 < 13; sp34++, var_r30++, sp24++) { + if (0 < sp34) { + sp14 = i_this->field_0x3950; - dVar18 = i_this->field_0x3958; - dVar18 *= 1.0f - i * 0.07f; + spB4 = spC0 * (d_p[sp34 - 1] + NREG_F(sp34)); - local_1ac.zero(); + sp18 = i_this->field_0x3958; + sp18 *= 1.0f + VREG_F(0) - sp34 * (0.07f + VREG_F(1)); + sp84.zero(); // (1.0f / 100.0f) if (param_4 > 0.01f) { - dVar16 = 0.0f; - f32 dVar14 = param_4 * (i * 0.2f + 1.0f); + sp14 = 0.0f + VREG_F(15); + var_f26 = param_4 * (sp34 * (0.2f + VREG_F(16)) + 1.0f); cMtx_YrotS(*calc_mtx, param_2->field_0x013a); cMtx_XrotM(*calc_mtx, param_2->field_0x0138); - local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x1000 + (i * -7500) + sVar3); - local_140.y = (dVar14 * 5.0f) * cM_ssin(i_this->field_0x25a0 * 0x1800 + (i * -7000) + sVar3); - local_140.z = -15.0f; - MtxPosition(&local_140, &local_1ac); + spF0.x = ((2.0f + VREG_F(17)) * var_f26) * + cM_ssin(i_this->field_0x25a0 * (0x1000 + JREG_S(0)) + + (sp34 * (-7500 + JREG_S(1))) + sp08); + spF0.y = ((5.0f + VREG_F(18)) * var_f26) * + cM_ssin(i_this->field_0x25a0 * (0x1800 + JREG_S(2)) + + (sp34 * (-7000 + JREG_S(3))) + sp08); + spF0.z = -15.0f + VREG_F(19); + MtxPosition(&spF0, &sp84); } if (param_5 > 0.01f) { - dVar14 = param_5 * (i * 0.2f + 1.0f); + var_f26 = param_5 * (sp34 * (0.2f + VREG_F(16)) + 1.0f); cMtx_YrotS(*calc_mtx, param_2->field_0x013a + -6000); cMtx_XrotM(*calc_mtx, -5000); - local_140.x = (dVar14 * 2.0f) * cM_ssin(i_this->field_0x25a0 * 0x448 + (i * -7000) + sVar3); - local_140.y = (dVar14 * 6.0f) * cM_ssin(i_this->field_0x25a0 * 0xc48 + (i * -7500) + sVar3); - local_140.z = param_5 * -15.0f; - MtxPosition(&local_140, &local_14c); - local_1ac += local_14c; + spF0.x = ((2.0f + VREG_F(17)) * var_f26) * + cM_ssin(i_this->field_0x25a0 * (0x448 + JREG_S(0)) + + (sp34 * (-7000 + JREG_S(1))) + sp08); + spF0.y = ((6.0f + VREG_F(18)) * var_f26) * + cM_ssin(i_this->field_0x25a0 * (0xc48 + JREG_S(2)) + + (sp34 * (-7500 + JREG_S(3))) + sp08); + spF0.z = (-15.0f + VREG_F(19)) * param_5; + MtxPosition(&spF0, &spE4); + sp84 += spE4; } if (i_this->field_0x3960 > 0.1f) { - local_1ac.y = i_this->field_0x3960 * cM_ssin(i_this->field_0x25a0 * 0x1100 + (i * -7000) + sVar3); + sp84.y = i_this->field_0x3960 * + cM_ssin(i_this->field_0x25a0 * (0x1100 + JREG_S(2)) + + (sp34 * (-7000 + JREG_S(3))) + sp08); } - dVar20 = (vec_p->x - vec_p[-1].x) + pcVar9->x + local_17c.x + local_1ac.x; - dVar19 = (vec_p->z - vec_p[-1].z) + pcVar9->z + local_17c.z + local_1ac.z; - dVar14 = local_1ac.y + (vec_p->y + pcVar9->y + dVar18); - - if (bVar2) { - dVar18 = dVar17; - local_14c = local_158 - *vec_p; - fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z); - if (fVar1 < 85.0f) { - dVar18 = local_158.y + 1.0f * JMAFastSqrt(7225.0f - fVar1 * fVar1); + sp30 = (var_r30->x - var_r30[-1].x) + sp24->x + spB4.x + sp84.x; + sp28 = (var_r30->z - var_r30[-1].z) + sp24->z + spB4.z + sp84.z; + var_f31 = var_r30->y + sp24->y + sp18 + sp84.y; + + if (sp20) { + var_f30 = var_f27; + spE4 = spD8 - *var_r30; + var_f29 = JMAFastSqrt(spE4.x * spE4.x + spE4.z * spE4.z); + var_f28 = 85.0f + KREG_F(12); + if (var_f29 < var_f28) { + var_f30 = spD8.y + 1.0f * JMAFastSqrt(var_f28 * var_f28 - var_f29 * var_f29) * + (1.0f + KREG_F(13)); } - if (dVar14 < dVar18) { - dVar14 = dVar18; + if (var_f31 < var_f30) { + var_f31 = var_f30; } } else if (i_this->field_0x3966 != 0) { - dVar18 = dVar17; - local_14c = local_158 - *vec_p; - fVar1 = JMAFastSqrt(local_14c.x * local_14c.x + local_14c.z * local_14c.z); - - if (fVar1 < 85.0f) { - dVar18 = local_158.y + JMAFastSqrt(7225.0f - fVar1 * fVar1); + var_f30 = var_f27; + spE4 = spD8 - *var_r30; + var_f29 = JMAFastSqrt(spE4.x * spE4.x + spE4.z * spE4.z); + var_f28 = 85.0f + KREG_F(12); + if (var_f29 < var_f28) { + var_f30 = spD8.y + JMAFastSqrt(var_f28 * var_f28 - var_f29 * var_f29) * + (1.0f + KREG_F(13)); } - if (dVar14 < dVar18) { - dVar14 = dVar18; + if (var_f31 < var_f30) { + var_f31 = var_f30; } } else { - if (dVar14 < dVar17) { - dVar14 = dVar17; + if (var_f31 < var_f27) { + var_f31 = var_f27; } } - dVar14 -= vec_p[-1].y; - s16 sVar4 = -cM_atan2s(dVar14, dVar19); - s16 sVar5 = (s16)cM_atan2s(dVar20, JMAFastSqrt(dVar14 * dVar14 + dVar19 * dVar19)); + sp2C = var_f31 - var_r30[-1].y; + sp0C = -cM_atan2s(sp2C, sp28); + sp0A = (s16)cM_atan2s(sp30, JMAFastSqrt(sp2C * sp2C + sp28 * sp28)); - cMtx_XrotS(*calc_mtx, sVar4); - cMtx_YrotM(*calc_mtx, sVar5); - MtxPosition(&local_134, &local_14c); + cMtx_XrotS(*calc_mtx, sp0C); + cMtx_YrotM(*calc_mtx, sp0A); + MtxPosition(&spFC, &spE4); - *pcVar9 = *vec_p; + *sp24 = *var_r30; - vec_p->x = vec_p[-1].x + local_14c.x; - vec_p->y = vec_p[-1].y + local_14c.y; - vec_p->z = vec_p[-1].z + local_14c.z; + var_r30->x = var_r30[-1].x + spE4.x; + var_r30->y = var_r30[-1].y + spE4.y; + var_r30->z = var_r30[-1].z + spE4.z; - pcVar9->x = dVar16 * (vec_p->x - pcVar9->x); - pcVar9->y = dVar16 * (vec_p->y - pcVar9->y); - pcVar9->z = dVar16 * (vec_p->z - pcVar9->z); + sp24->x = sp14 * (var_r30->x - sp24->x); + sp24->y = sp14 * (var_r30->y - sp24->y); + sp24->z = sp14 * (var_r30->z - sp24->z); } } } @@ -612,7 +646,14 @@ static int mant_cut_type; /* 808624E8-80862908 0012C8 0420+00 2/1 0/0 0/0 .text daMant_Execute__FP10mant_class */ static int daMant_Execute(mant_class* i_this) { f32 var_f31, var_f30; - int iVar8, unaff_r29, iVar2, uVar1, uVar4; + int iVar8; + s16 unaff_r29; + int iVar2, uVar1, uVar4; + + fopAc_ac_c* mant_actor = (fopAc_ac_c*)i_this; + + fopAc_ac_c* unusedPlayerActor = dComIfGp_getPlayer(0); + daPy_py_c* unusedPlayer = (daPy_py_c*)unusedPlayerActor; i_this->field_0x25a0++; lbl_277_bss_0++; @@ -621,7 +662,7 @@ static int daMant_Execute(mant_class* i_this) { i_this->field_0x399e--; } - b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(i_this->parentActorID); + b_gnd_class* gndActor = (b_gnd_class*)fopAcM_SearchByID(mant_actor->parentActorID); if (gndActor && gndActor->mDrawHorse != 0) { i_this->field_0x394c = 21.0f; @@ -647,7 +688,7 @@ static int daMant_Execute(mant_class* i_this) { i_this->field_0x3965 = 0; i_this->field_0x3966 = 0; - i_this->field_0x3940 = i_this->current.pos; + i_this->field_0x3940 = mant_actor->current.pos; iVar8 = 0; @@ -674,7 +715,7 @@ static int daMant_Execute(mant_class* i_this) { for (int i = 0; i < iVar8; i++) { var_f31 += cM_ssin(unaff_r29); - var_f30 -= cM_scos(unaff_r29); + var_f30 += -cM_scos(unaff_r29); uVar4 = (int)(var_f31 + 64.0f) | (int)(var_f30 + 64.0f) << 7; @@ -725,8 +766,7 @@ static int daMant_Execute(mant_class* i_this) { if (0 <= uVar1 && uVar1 < 0x4000) { int iVar5 = (uVar1 & 7) + (uVar1 & 0x78) * 4 + (uVar1 >> 4 & 0x18) + (uVar1 & 0x3e00); - l_Egnd_mantTEX_U[iVar5] = 0; - l_Egnd_mantTEX[iVar5] = 0; + l_Egnd_mantTEX[iVar5] = l_Egnd_mantTEX_U[iVar5] = 0; } } } @@ -748,6 +788,8 @@ static int daMant_Delete(mant_class* i_this) { static int daMant_Create(fopAc_ac_c* i_this) { mant_class* m_this = (mant_class*)i_this; + fpc_ProcID unusedId = fopAcM_GetID(m_this); + fopAcM_ct(m_this, mant_class); //m_this->field_0x0570.field_0x74 = 0; m_this->field_0x259c = fopAcM_GetParam(i_this); diff --git a/src/d/actor/d_a_mg_fshop.cpp b/src/d/actor/d_a_mg_fshop.cpp index 0bb2a49848..8c15501248 100644 --- a/src/d/actor/d_a_mg_fshop.cpp +++ b/src/d/actor/d_a_mg_fshop.cpp @@ -1686,7 +1686,11 @@ static int daFshop_Create(fopAc_ac_c* actor) { int sp24; if (sp10 == 1) { +#if VERSION == VERSION_GCN_JPN + sp24 = dComIfGs_getEventReg(check_kind[i]); +#else sp24 = 2.54f * dComIfGs_getEventReg(check_kind[i]); +#endif } else { sp24 = dComIfGs_getEventReg(check_kind[i]); } diff --git a/src/d/actor/d_a_npc_cd2.cpp b/src/d/actor/d_a_npc_cd2.cpp index 8a4d6944f3..f20cb12f09 100644 --- a/src/d/actor/d_a_npc_cd2.cpp +++ b/src/d/actor/d_a_npc_cd2.cpp @@ -2136,12 +2136,12 @@ daNpcCd2_HIO_c::daNpcCd2_HIO_c() { for (int j = 0; j < 19; j++) { memcpy(&field_0x0004[i].field_0x004[j].field_0x04, a_jntTbl_M[i][j], 20); } - memcpy(&field_0x0004[i].mMaxLmtY_BACKBONE, a_prmTbl_M + i * 0x40, 0x40); + memcpy(&field_0x0004[i].mMaxLmtX_BACKBONE, a_prmTbl_M + i * 0x40, 0x40); } for (int i = 0; i < 14; i++) { for (int j = 0; j < 21; j++) { memcpy(&field_0x20c4[i].field_0x004[j].field_0x04, a_jntTbl_W[i][j], 20); } - memcpy(&field_0x20c4[i].mMaxLmtY_BACKBONE, a_prmTbl_W + i * 0x40, 0x40); + memcpy(&field_0x20c4[i].mMaxLmtX_BACKBONE, a_prmTbl_W + i * 0x40, 0x40); } } diff --git a/src/d/actor/d_a_npc_cdn3.cpp b/src/d/actor/d_a_npc_cdn3.cpp index 28069ee977..75c411c267 100644 --- a/src/d/actor/d_a_npc_cdn3.cpp +++ b/src/d/actor/d_a_npc_cdn3.cpp @@ -7,62 +7,55 @@ #include "d/actor/d_a_npc_cdn3.h" #include "d/d_msg_object.h" -#include "dol2asm.h" +#include "d/d_s_play.h" // // Declarations: // -/* 80978CD8-80978DD4 000078 00FC+00 1/1 0/0 0/0 .text createHeapCallBack__FP10fopAc_ac_c - */ -static int createHeapCallBack(fopAc_ac_c* param_0) { - daNpcCdn3_c* i_this = (daNpcCdn3_c*)param_0; - int rv = i_this->NpcCreate(i_this->m_type); +/* 8097F788-8097F848 0000E0 00C0+00 1/2 0/0 0/0 .data ActionTable__11daNpcCdn3_c */ +const daNpcCdn3_c::ActionPair daNpcCdn3_c::ActionTable[8] = { + {&daNpcCdn3_c::initWait, &daNpcCdn3_c::executeWait}, + {&daNpcCdn3_c::initPath, &daNpcCdn3_c::executePath}, + {&daNpcCdn3_c::initTalk, &daNpcCdn3_c::executeTalk}, + {&daNpcCdn3_c::initEscape, &daNpcCdn3_c::executeEscape}, + {&daNpcCdn3_c::initFear, &daNpcCdn3_c::executeFear}, + {&daNpcCdn3_c::initFear2, &daNpcCdn3_c::executeFear2}, + {&daNpcCdn3_c::initFight, &daNpcCdn3_c::executeFight}, + {&daNpcCdn3_c::initRelief, &daNpcCdn3_c::executeRelief}, +}; + +int daNpcCdn3_c::createHeap() { + int rv = NpcCreate(m_type); if (rv != 0) { - if (i_this->mObjNum != 0) { - rv = (i_this->field_0xac8 = i_this->ObjCreate(i_this->mObjNum)) != NULL; + if (mObjNum != 0) { + rv = NULL != (field_0xac8 = ObjCreate(mObjNum)); if (!rv) { - i_this->mpMorf->stopZelAnime(); + mpMorf->stopZelAnime(); } } else { - i_this->field_0xac8 = NULL; + field_0xac8 = NULL; + rv = 1; } - if (i_this->isChairStyle()) { - f32 scale = Cd2_HIO_objScale(i_this->m_type); - - J3DModel* model = i_this->ChairCreate(scale); - i_this->field_0xacc = model; - rv = model != 0; + if (isChairStyle()) { + rv = NULL != (field_0xacc = ChairCreate(Cd2_HIO_objScale(m_type))); if (rv == 0) { - i_this->mpMorf->stopZelAnime(); + mpMorf->stopZelAnime(); } } else { - i_this->field_0xacc = NULL; + field_0xacc = NULL; rv = 1; } } return rv; } -/* 8097F788-8097F848 0000E0 00C0+00 1/2 0/0 0/0 .data ActionTable__11daNpcCdn3_c */ -daNpcCdn3_c::actionFunc daNpcCdn3_c::ActionTable[8][2] = { - &daNpcCdn3_c::initWait, - &daNpcCdn3_c::executeWait, - &daNpcCdn3_c::initPath, - &daNpcCdn3_c::executePath, - &daNpcCdn3_c::initTalk, - &daNpcCdn3_c::executeTalk, - &daNpcCdn3_c::initEscape, - &daNpcCdn3_c::executeEscape, - &daNpcCdn3_c::initFear, - &daNpcCdn3_c::executeFear, - &daNpcCdn3_c::initFear2, - &daNpcCdn3_c::executeFear2, - &daNpcCdn3_c::initFight, - &daNpcCdn3_c::executeFight, - &daNpcCdn3_c::initRelief, - &daNpcCdn3_c::executeRelief, -}; +/* 80978CD8-80978DD4 000078 00FC+00 1/1 0/0 0/0 .text createHeapCallBack__FP10fopAc_ac_c + */ +static int createHeapCallBack(fopAc_ac_c* param_0) { + daNpcCdn3_c* npc = (daNpcCdn3_c*)param_0; + return npc->createHeap(); +} /* 80978DD4-80978E18 000174 0044+00 9/9 0/0 0/0 .text * setAction__11daNpcCdn3_cFQ211daNpcCdn3_c6Mode_e */ @@ -70,7 +63,7 @@ void daNpcCdn3_c::setAction(daNpcCdn3_c::Mode_e i_action) { JUT_ASSERT(366, i_action < MODE_MAX_e); mPrevMode = mMode; mMode = i_action; - mAction = ActionTable[mMode]; + mAction = &ActionTable[mMode].mInitFn; callInit(); } @@ -86,290 +79,18 @@ void daNpcCdn3_c::callExecute() { (this->*(mAction[1]))(); } -/* 8097F848-8097F8F8 -00001 00B0+00 5/5 0/0 0/0 .data m_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc* daNpcCdn3_c::m_funcTbl[44] = { - daNpcCdn3_c::m_seq00_funcTbl, daNpcCdn3_c::m_seq01_funcTbl, - daNpcCdn3_c::m_seq02_funcTbl, daNpcCdn3_c::m_seq03_funcTbl, - daNpcCdn3_c::m_seq04_funcTbl, daNpcCdn3_c::m_seq05_funcTbl, - daNpcCdn3_c::m_seq06_funcTbl, daNpcCdn3_c::m_seq07_funcTbl, - daNpcCdn3_c::m_seq08_funcTbl, daNpcCdn3_c::m_seq09_funcTbl, - daNpcCdn3_c::m_seq10_funcTbl, daNpcCdn3_c::m_seq11_funcTbl, - daNpcCdn3_c::m_seq12_funcTbl, daNpcCdn3_c::m_seq13_funcTbl, - daNpcCdn3_c::m_seq14_funcTbl, daNpcCdn3_c::m_seq15_funcTbl, - daNpcCdn3_c::m_seq16_funcTbl, daNpcCdn3_c::m_seq17_funcTbl, - daNpcCdn3_c::m_seq18_funcTbl, daNpcCdn3_c::m_seq19_funcTbl, - daNpcCdn3_c::m_seq20_funcTbl, daNpcCdn3_c::m_seq21_funcTbl, - daNpcCdn3_c::m_seq22_funcTbl, daNpcCdn3_c::m_seq23_funcTbl, - daNpcCdn3_c::m_seq24_funcTbl, daNpcCdn3_c::m_seq25_funcTbl, - daNpcCdn3_c::m_seq26_funcTbl, daNpcCdn3_c::m_seq27_funcTbl, - daNpcCdn3_c::m_seq28_funcTbl, daNpcCdn3_c::m_seq29_funcTbl, - daNpcCdn3_c::m_seq30_funcTbl, daNpcCdn3_c::m_seq31_funcTbl, - daNpcCdn3_c::m_seq32_funcTbl, daNpcCdn3_c::m_seq33_funcTbl, - daNpcCdn3_c::m_seq34_funcTbl, daNpcCdn3_c::m_seq35_funcTbl, - daNpcCdn3_c::m_seq36_funcTbl, daNpcCdn3_c::m_seq37_funcTbl, - daNpcCdn3_c::m_seq38_funcTbl, daNpcCdn3_c::m_seq39_funcTbl, - daNpcCdn3_c::m_seq40_funcTbl, daNpcCdn3_c::m_seq41_funcTbl, - daNpcCdn3_c::m_seq42_funcTbl, daNpcCdn3_c::m_seq43_funcTbl, -}; - -/* 8097F904-8097F91C 00025C 0018+00 1/1 0/0 0/0 .data m_seq00_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq00_funcTbl[2] = {&daNpcCdn3_c::walka, NULL}; - -/* 8097F928-8097F940 000280 0018+00 1/1 0/0 0/0 .data m_seq01_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq01_funcTbl[2] = {&daNpcCdn3_c::runa, NULL}; - -/* 8097F94C-8097F964 0002A4 0018+00 1/1 0/0 0/0 .data m_seq02_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq02_funcTbl[2] = {&daNpcCdn3_c::waita, NULL}; - -/* 8097F970-8097F988 0002C8 0018+00 1/1 0/0 0/0 .data m_seq03_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq03_funcTbl[2] = {&daNpcCdn3_c::talka, NULL}; - -/* 8097F994-8097F9AC 0002EC 0018+00 1/1 0/0 0/0 .data m_seq04_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq04_funcTbl[2] = {&daNpcCdn3_c::runb, NULL}; - -/* 8097F9D0-8097FA00 000328 0030+00 1/1 0/0 0/0 .data m_seq05_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq05_funcTbl[4] = {&daNpcCdn3_c::turnr, &daNpcCdn3_c::waita, - &daNpcCdn3_c::talka, NULL}; - -/* 8097FA24-8097FA54 00037C 0030+00 1/1 0/0 0/0 .data m_seq06_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq06_funcTbl[4] = {&daNpcCdn3_c::turnl, &daNpcCdn3_c::waita, - &daNpcCdn3_c::talka, NULL}; - -/* 8097FA60-8097FA78 0003B8 0018+00 1/1 0/0 0/0 .data m_seq07_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq07_funcTbl[2] = {&daNpcCdn3_c::waitwall, NULL}; - -/* 8097FAC0-8097FB14 000418 0054+00 1/1 0/0 0/0 .data m_seq08_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq08_funcTbl[7] = { - &daNpcCdn3_c::talkwall, - &daNpcCdn3_c::waitwall, - &daNpcCdn3_c::talkbwall, - &daNpcCdn3_c::waitwall, - &daNpcCdn3_c::talkwall, - &daNpcCdn3_c::talkbwall, - NULL, -}; - -/* 8097FB20-8097FB38 000478 0018+00 1/1 0/0 0/0 .data m_seq09_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq09_funcTbl[2] = {&daNpcCdn3_c::talkb, NULL}; - -/* 8097FB44-8097FB5C 00049C 0018+00 1/1 0/0 0/0 .data m_seq10_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq10_funcTbl[2] = {&daNpcCdn3_c::talkc, NULL}; - -/* 8097FB98-8097FBE0 0004F0 0048+00 1/1 0/0 0/0 .data m_seq11_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq11_funcTbl[6] = {&daNpcCdn3_c::talka, &daNpcCdn3_c::waita, - &daNpcCdn3_c::talkb, &daNpcCdn3_c::waitb, - &daNpcCdn3_c::talkc, NULL}; - -/* 8097FBEC-8097FC04 000544 0018+00 1/1 0/0 0/0 .data m_seq12_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq12_funcTbl[2] = {&daNpcCdn3_c::waitb, NULL}; - -/* 8097FC40-8097FC88 000598 0048+00 1/1 0/0 0/0 .data m_seq13_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq13_funcTbl[6] = { - &daNpcCdn3_c::browsea, &daNpcCdn3_c::browseb, &daNpcCdn3_c::talka, - &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, NULL}; - -/* 8097FC94-8097FCAC 0005EC 0018+00 1/1 0/0 0/0 .data m_seq14_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq14_funcTbl[2] = {&daNpcCdn3_c::walkb, NULL}; - -/* 8097FCB8-8097FCD0 000610 0018+00 1/1 0/0 0/0 .data m_seq15_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq15_funcTbl[2] = {&daNpcCdn3_c::sitwaita, NULL}; - -/* 8097FD18-8097FD6C 000670 0054+00 1/1 0/0 0/0 .data m_seq16_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq16_funcTbl[7] = { - &daNpcCdn3_c::sittalka, - &daNpcCdn3_c::sitwaita, - &daNpcCdn3_c::sittalkab, - &daNpcCdn3_c::sitwaita, - &daNpcCdn3_c::sittalka, - &daNpcCdn3_c::sittalkab, - NULL, -}; - -/* 8097FD78-8097FD90 0006D0 0018+00 1/1 0/0 0/0 .data m_seq17_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq17_funcTbl[2] = { - &daNpcCdn3_c::playm, - NULL, -}; - -/* 8097FD9C-8097FDB4 0006F4 0018+00 1/1 0/0 0/0 .data m_seq18_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq18_funcTbl[2] = {&daNpcCdn3_c::sitwaitb, NULL}; - -/* 8097FDFC-8097FE50 000754 0054+00 1/1 0/0 0/0 .data m_seq19_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq19_funcTbl[7] = { - &daNpcCdn3_c::sittalkb, - &daNpcCdn3_c::sitwaitb, - &daNpcCdn3_c::sittalkbb, - &daNpcCdn3_c::sitwaitb, - &daNpcCdn3_c::sittalkb, - &daNpcCdn3_c::sittalkbb, - NULL, -}; - -/* 8097FE5C-8097FE74 0007B4 0018+00 1/1 0/0 0/0 .data m_seq20_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq20_funcTbl[2] = {&daNpcCdn3_c::looka, NULL}; - -/* 8097FE80-8097FE98 0007D8 0018+00 1/1 0/0 0/0 .data m_seq21_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq21_funcTbl[2] = {&daNpcCdn3_c::lookb, NULL}; - -/* 8097FEBC-8097FEEC 000814 0030+00 1/1 0/0 0/0 .data m_seq22_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq22_funcTbl[4] = {&daNpcCdn3_c::looka, &daNpcCdn3_c::lookb, - &daNpcCdn3_c::waita, NULL}; - -/* 8097FF34-8097FF88 00088C 0054+00 1/1 0/0 0/0 .data m_seq23_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq23_funcTbl[7] = { - &daNpcCdn3_c::talka, - &daNpcCdn3_c::waita, - &daNpcCdn3_c::talkb, - &daNpcCdn3_c::waita, - &daNpcCdn3_c::talka, - &daNpcCdn3_c::talkb, - NULL, -}; - -/* 8097FFB8-8097FFF4 000910 003C+00 1/1 0/0 0/0 .data m_seq24_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq24_funcTbl[5] = { - &daNpcCdn3_c::talkb, &daNpcCdn3_c::talka, &daNpcCdn3_c::talkc, &daNpcCdn3_c::waita, NULL, -}; - -/* 8098003C-80980090 000994 0054+00 1/1 0/0 0/0 .data m_seq25_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq25_funcTbl[7] = { - &daNpcCdn3_c::browsea, - &daNpcCdn3_c::browseb, - &daNpcCdn3_c::talka, - &daNpcCdn3_c::talkb, - &daNpcCdn3_c::talkc, - &daNpcCdn3_c::waita, - NULL, -}; - -/* 809800A8-809800CC 000A00 0024+00 1/1 0/0 0/0 .data m_seq26_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq26_funcTbl[3] = { - &daNpcCdn3_c::browsea, - &daNpcCdn3_c::browseb, - NULL, -}; - -/* 809800D8-809800F0 000A30 0018+00 1/1 0/0 0/0 .data m_seq27_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq27_funcTbl[2] = {&daNpcCdn3_c::dance, NULL}; - -/* 80980108-8098012C 000A60 0024+00 1/1 0/0 0/0 .data m_seq28_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq28_funcTbl[3] = { - &daNpcCdn3_c::ladytalka, - &daNpcCdn3_c::normtalka, - NULL, -}; - -/* 80980144-80980168 000A9C 0024+00 1/1 0/0 0/0 .data m_seq29_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq29_funcTbl[3] = { - &daNpcCdn3_c::ladytalkb, - &daNpcCdn3_c::normtalkb, - NULL, -}; - -/* 809801A4-809801EC 000AFC 0048+00 1/1 0/0 0/0 .data m_seq30_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq30_funcTbl[6] = { - &daNpcCdn3_c::talka, &daNpcCdn3_c::ladytalka, &daNpcCdn3_c::waita, - &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, NULL, -}; - -/* 80980228-80980270 000B80 0048+00 1/1 0/0 0/0 .data m_seq31_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq31_funcTbl[6] = { - &daNpcCdn3_c::waita, &daNpcCdn3_c::ladytalkb, &daNpcCdn3_c::talka, - &daNpcCdn3_c::waita, &daNpcCdn3_c::talkb, NULL, -}; - -/* 809802B8-8098030C 000C10 0054+00 1/1 0/0 0/0 .data m_seq32_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq32_funcTbl[7] = { - &daNpcCdn3_c::talka, - &daNpcCdn3_c::ladytalka, - &daNpcCdn3_c::waita, - &daNpcCdn3_c::talkb, - &daNpcCdn3_c::waita, - &daNpcCdn3_c::normtalka, - NULL, -}; - -/* 80980354-809803A8 000CAC 0054+00 1/1 0/0 0/0 .data m_seq33_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq33_funcTbl[7] = { - &daNpcCdn3_c::waita, - &daNpcCdn3_c::ladytalkb, - &daNpcCdn3_c::talka, - &daNpcCdn3_c::waita, - &daNpcCdn3_c::talkb, - &daNpcCdn3_c::normtalkb, - NULL, -}; - -/* 80980408-80980474 000D60 006C+00 1/1 0/0 0/0 .data m_seq34_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq34_funcTbl[9] = { - &daNpcCdn3_c::talka, &daNpcCdn3_c::ladytalka, &daNpcCdn3_c::ladytalkb, - &daNpcCdn3_c::waita, &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, - &daNpcCdn3_c::normtalka, &daNpcCdn3_c::normtalkb, NULL, -}; - -/* 80980480-80980498 000DD8 0018+00 1/1 0/0 0/0 .data m_seq35_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq35_funcTbl[2] = { - &daNpcCdn3_c::sellme, - NULL, -}; - -/* 809804BC-809804EC 000E14 0030+00 1/1 0/0 0/0 .data m_seq36_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq36_funcTbl[4] = { - &daNpcCdn3_c::ladytalkb, - &daNpcCdn3_c::talka, - &daNpcCdn3_c::waita, - NULL, -}; - -/* 809804F8-80980510 000E50 0018+00 1/1 0/0 0/0 .data m_seq37_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq37_funcTbl[2] = { - &daNpcCdn3_c::sing, NULL, -}; - -/* 8098051C-80980534 000E74 0018+00 1/1 0/0 0/0 .data m_seq38_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq38_funcTbl[2] = { - &daNpcCdn3_c::sittalka, NULL, -}; - -/* 80980540-80980558 000E98 0018+00 1/1 0/0 0/0 .data m_seq39_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq39_funcTbl[2] = { - &daNpcCdn3_c::sittalkab, NULL, -}; - -/* 80980570-80980594 000EC8 0024+00 1/1 0/0 0/0 .data m_seq40_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq40_funcTbl[3] = { - &daNpcCdn3_c::sittalka, &daNpcCdn3_c::sittalkab, NULL, -}; - -/* 809805A0-809805B8 000EF8 0018+00 1/1 0/0 0/0 .data m_seq41_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq41_funcTbl[2] = { - &daNpcCdn3_c::sittalkb, NULL, -}; - -/* 809805C4-809805DC 000F1C 0018+00 1/1 0/0 0/0 .data m_seq42_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq42_funcTbl[2] = { - &daNpcCdn3_c::sittalkbb, NULL, - -}; - -/* 809805F4-80980618 000F4C 0024+00 1/1 0/0 0/0 .data m_seq43_funcTbl__11daNpcCdn3_c */ -daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq43_funcTbl[3] = { - &daNpcCdn3_c::sittalkb, &daNpcCdn3_c::sittalkbb, NULL, -}; - /* 80978E6C-80978ED0 00020C 0064+00 1/0 0/0 0/0 .text initWait__11daNpcCdn3_cFv */ void daNpcCdn3_c::initWait() { speedF = 0.0f; - field_0xb97 = 0; + m_seqStep = 0; field_0xb94 = 1; - (this->*(m_funcTbl[mSeqNum][field_0xb97]))(NULL); + (this->*(m_funcTbl[m_seqNum][m_seqStep]))(NULL); } /* 80978ED0-80979080 000270 01B0+00 1/0 0/0 0/0 .text executeWait__11daNpcCdn3_cFv */ void daNpcCdn3_c::executeWait() { - if ((this->*(m_funcTbl[mSeqNum][field_0xb97]))(NULL) != 0) { - int newIndex; - field_0xb97 = (m_funcTbl[mSeqNum][field_0xb97 + 1] == NULL) ? 0 : field_0xb97 + 1; + if ((this->*(m_funcTbl[m_seqNum][m_seqStep]))(NULL) != 0) { + m_seqStep = (m_funcTbl[m_seqNum][m_seqStep + 1] == NULL) ? 0 : m_seqStep + 1; field_0xb94 = 1; if (mpMorf->getAnm() == getAnmP(8, mObjNum)) { mCitizen.playVoice(3); @@ -393,13 +114,13 @@ void daNpcCdn3_c::executeWait() { void daNpcCdn3_c::initPath() { setAnm((J3DAnmTransformKey*) getAnmP(2, mObjNum), 1.0f, 12.0f, 2, 0, -1); field_0xb68 = 2; - field_0xb97 = 0; + m_seqStep = 0; field_0xb94 = 1; field_0xb98 = 0; if (mTagSched != NULL) { - mSeqNum = mTagSched->getSeqNum(); - if (mSeqNum >= 0 && mSeqNum < 44) { - (this->*(m_funcTbl[mSeqNum][0]))(NULL); + m_seqNum = mTagSched->getSeqNum(); + if (m_seqNum >= 0 && m_seqNum < 44) { + (this->*(m_funcTbl[m_seqNum][0]))(NULL); } } } @@ -414,10 +135,11 @@ void daNpcCdn3_c::executePath() { if (m_path.getArg0() != -1) { field_0xb74 = getTimeMinute() + getTimeHour() * 60 + m_path.getArg0() * 10; } - mSeqNum = m_path.getArg1(); + m_seqNum = m_path.getArg1(); if (m_path.checkPathEnd(current.pos, speedF)) { if (getGroupID() != 0xff) { - if ((int)mTagSched->getStartEnd() == 1) { + int startEnd = mTagSched->getStartEnd(); + if (startEnd == 1) { setSchedule(field_0xb88); field_0xb88 = NULL; field_0xb95 = 1; @@ -425,8 +147,10 @@ void daNpcCdn3_c::executePath() { if (m_path.isClose()) { m_path.setNextPoint(current.pos); } else { - if (mSeqNum < 0 || mSeqNum >= 44) { - OSReport_Error("城下町の町人 パス点引数設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum); + if (m_seqNum < 0 || m_seqNum >= 44) { + // "Castle Town Townspeople Path Point Argument Setting Value Error + // Argument 1 Motion Sequence = %d is abnormal" + OSReport_Error("城下町の町人 パス点引数設定値異常 引数1モーションシーケンス=%dが異常です。\n", m_seqNum); JUT_ASSERT(517, FALSE); } field_0xb68 = 0; @@ -441,7 +165,7 @@ void daNpcCdn3_c::executePath() { current.pos.set(m_path.getPoint(0)); home.pos.set(current.pos); old.pos.set(current.pos); - current.angle.y = cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); + current.angle.y = (s16)cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); shape_angle.y = current.angle.y; home.angle.y = current.angle.y; old.angle.y = current.angle.y; @@ -452,14 +176,14 @@ void daNpcCdn3_c::executePath() { } } } else { - if (mSeqNum >= 0 && mSeqNum < 44) { + if (m_seqNum >= 0 && m_seqNum < 44) { field_0xb68 = 0; field_0xb98 = 1; } else { if (mTagSched != NULL) { - mSeqNum = mTagSched->getSeqNum(); - if (mSeqNum >= 0 && mSeqNum < 44) { - (this->*(m_funcTbl[mSeqNum][0]))(NULL); + m_seqNum = mTagSched->getSeqNum(); + if (m_seqNum >= 0 && m_seqNum < 44) { + (this->*(m_funcTbl[m_seqNum][0]))(NULL); } } m_path.setNextPoint(current.pos); @@ -469,8 +193,8 @@ void daNpcCdn3_c::executePath() { break; case 1: if (field_0xb74 != -1) { - if ((this->*(m_funcTbl[mSeqNum][field_0xb97]))(NULL)) { - field_0xb97 = (m_funcTbl[mSeqNum][field_0xb97 + 1] == NULL) ? 0 : field_0xb97 + 1; + if ((this->*(m_funcTbl[m_seqNum][m_seqStep]))(NULL)) { + m_seqStep = (m_funcTbl[m_seqNum][m_seqStep + 1] == NULL) ? 0 : m_seqStep + 1; field_0xb94 = 1; } int time = getTime(); @@ -479,23 +203,23 @@ void daNpcCdn3_c::executePath() { setAnm((J3DAnmTransformKey*)getAnmP(2, mObjNum), 1.0f, 12.0f, 2, 0, -1); field_0xb68 = 2; } - field_0xb97 = 0; + m_seqStep = 0; field_0xb94 = 1; m_path.setNextPoint(current.pos); field_0xb98 = 0; } } else { - if ((this->*(m_funcTbl[mSeqNum][field_0xb97]))(NULL)) { - if (m_funcTbl[mSeqNum][field_0xb97 + 1] == NULL) { + if ((this->*(m_funcTbl[m_seqNum][m_seqStep]))(NULL)) { + if (m_funcTbl[m_seqNum][m_seqStep + 1] == NULL) { if (field_0xb68 == 0) { setAnm((J3DAnmTransformKey*)getAnmP(2, mObjNum), 1.0f, 12.0f, 2, 0, -1); field_0xb68 = 2; } - field_0xb97 = 0; + m_seqStep = 0; m_path.setNextPoint(current.pos); field_0xb98 = 0; } else { - field_0xb97++; + m_seqStep++; } field_0xb94 = 1; } @@ -512,12 +236,12 @@ void daNpcCdn3_c::executePath() { } cXyz cStack_58; m_path.getTargetPoint(&cStack_58); - s16 sVar10 = cLib_targetAngleY(¤t.pos, &cStack_58); - cLib_addCalcAngleS2(&shape_angle.y, sVar10, 0xd, 0x600); + cLib_addCalcAngleS2(&shape_angle.y, cLib_targetAngleY(¤t.pos, &cStack_58), 0xd, 0x600); if (current.pos.y != old.pos.y) { s16 sVar10 = 0; cM3dGPla acStack_4c; - if (dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &acStack_4c) != 0) { + bool triPla = dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &acStack_4c); + if (triPla) { sVar10 = fopAcM_getPolygonAngle(&acStack_4c, shape_angle.y); } if (sVar10 != 0) { @@ -552,23 +276,12 @@ void daNpcCdn3_c::initTalk() { m_targetAct.entry(dComIfGp_getLinkPlayer()); field_0xb92 = shape_angle.y; field_0xb80 = mpMorf->getAnm(); - field_0xb7c = mSeqNum; + field_0xb7c = m_seqNum; JUT_ASSERT(658, NULL != m_targetAct.getActorP()); if (!isInShop() && !isNoTurnTalk()) { - int uVar2; - if (isChairStyle()) { - uVar2 = 15; - } else { - uVar2 = 2; - } - mSeqNum = uVar2; - field_0xb97 = 0; - AnmNum anmNum; - if (isChairStyle()) { - anmNum = CD2_ANM_14; - } else { - anmNum = CD2_ANM_0; - } + m_seqNum = isChairStyle() ? 15 : 2; + m_seqStep = 0; + AnmNum anmNum = isChairStyle() ? CD2_ANM_14 : CD2_ANM_0; setAnm((J3DAnmTransformKey*)getAnmP(anmNum, mObjNum), 1.0f, 12.0f, 2, 0, -1); } field_0xb98 = 0; @@ -612,7 +325,7 @@ void daNpcCdn3_c::executeTalk() { if (mMsgFlow.doFlow(this, NULL, 0)) { dComIfGp_event_reset(); m_targetAct.remove(); - mSeqNum = field_0xb7c; + m_seqNum = field_0xb7c; if (field_0xb68 != 0) { setAction(mPrevMode); } else { @@ -628,13 +341,13 @@ void daNpcCdn3_c::executeTalk() { } else { int msgAnm = ctrlMsgAnm(); if (msgAnm != -1) { - mSeqNum = msgAnm; - field_0xb97 = 0; + m_seqNum = msgAnm; + m_seqStep = 0; field_0xb94 = 1; } - JUT_ASSERT(726, m_funcTbl[mSeqNum][field_0xb97] != NULL); - if ((this->*(m_funcTbl[mSeqNum][field_0xb97]))(NULL) != 0) { - field_0xb97 = (m_funcTbl[mSeqNum][field_0xb97 + 1] == NULL) ? 0 : field_0xb97 + 1; + JUT_ASSERT(726, m_funcTbl[m_seqNum][m_seqStep] != NULL); + if ((this->*(m_funcTbl[m_seqNum][m_seqStep]))(NULL) != 0) { + m_seqStep = (m_funcTbl[m_seqNum][m_seqStep + 1] == NULL) ? 0 : m_seqStep + 1; field_0xb94 = 1; } } @@ -648,7 +361,7 @@ void daNpcCdn3_c::executeTalk() { return; default: JUT_ASSERT(741, FALSE); - } + } } /* 80979F08-8097A028 0012A8 0120+00 1/0 0/0 0/0 .text initEscape__11daNpcCdn3_cFv */ @@ -672,6 +385,277 @@ void daNpcCdn3_c::initEscape() { dComIfGs_onSaveDunSwitch(0x3c); } +/* 8097F848-8097F8F8 -00001 00B0+00 5/5 0/0 0/0 .data m_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc* daNpcCdn3_c::m_funcTbl[44] = { + m_seq00_funcTbl, m_seq01_funcTbl, + m_seq02_funcTbl, m_seq03_funcTbl, + m_seq04_funcTbl, m_seq05_funcTbl, + m_seq06_funcTbl, m_seq07_funcTbl, + m_seq08_funcTbl, m_seq09_funcTbl, + m_seq10_funcTbl, m_seq11_funcTbl, + m_seq12_funcTbl, m_seq13_funcTbl, + m_seq14_funcTbl, m_seq15_funcTbl, + m_seq16_funcTbl, m_seq17_funcTbl, + m_seq18_funcTbl, m_seq19_funcTbl, + m_seq20_funcTbl, m_seq21_funcTbl, + m_seq22_funcTbl, m_seq23_funcTbl, + m_seq24_funcTbl, m_seq25_funcTbl, + m_seq26_funcTbl, m_seq27_funcTbl, + m_seq28_funcTbl, m_seq29_funcTbl, + m_seq30_funcTbl, m_seq31_funcTbl, + m_seq32_funcTbl, m_seq33_funcTbl, + m_seq34_funcTbl, m_seq35_funcTbl, + m_seq36_funcTbl, m_seq37_funcTbl, + m_seq38_funcTbl, m_seq39_funcTbl, + m_seq40_funcTbl, m_seq41_funcTbl, + m_seq42_funcTbl, m_seq43_funcTbl, +}; + +/* 8097F904-8097F91C 00025C 0018+00 1/1 0/0 0/0 .data m_seq00_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq00_funcTbl[2] = {&daNpcCdn3_c::walka, NULL}; + +/* 8097F928-8097F940 000280 0018+00 1/1 0/0 0/0 .data m_seq01_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq01_funcTbl[2] = {&daNpcCdn3_c::runa, NULL}; + +/* 8097F94C-8097F964 0002A4 0018+00 1/1 0/0 0/0 .data m_seq02_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq02_funcTbl[2] = {&daNpcCdn3_c::waita, NULL}; + +/* 8097F970-8097F988 0002C8 0018+00 1/1 0/0 0/0 .data m_seq03_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq03_funcTbl[2] = {&daNpcCdn3_c::talka, NULL}; + +/* 8097F994-8097F9AC 0002EC 0018+00 1/1 0/0 0/0 .data m_seq04_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq04_funcTbl[2] = {&daNpcCdn3_c::runb, NULL}; + +/* 8097F9D0-8097FA00 000328 0030+00 1/1 0/0 0/0 .data m_seq05_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq05_funcTbl[4] = {&daNpcCdn3_c::turnr, &daNpcCdn3_c::waita, + &daNpcCdn3_c::talka, NULL}; + +/* 8097FA24-8097FA54 00037C 0030+00 1/1 0/0 0/0 .data m_seq06_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq06_funcTbl[4] = {&daNpcCdn3_c::turnl, &daNpcCdn3_c::waita, + &daNpcCdn3_c::talka, NULL}; + +/* 8097FA60-8097FA78 0003B8 0018+00 1/1 0/0 0/0 .data m_seq07_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq07_funcTbl[2] = {&daNpcCdn3_c::waitwall, NULL}; + +/* 8097FAC0-8097FB14 000418 0054+00 1/1 0/0 0/0 .data m_seq08_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq08_funcTbl[7] = { + &daNpcCdn3_c::talkwall, + &daNpcCdn3_c::waitwall, + &daNpcCdn3_c::talkbwall, + &daNpcCdn3_c::waitwall, + &daNpcCdn3_c::talkwall, + &daNpcCdn3_c::talkbwall, + NULL, +}; + +/* 8097FB20-8097FB38 000478 0018+00 1/1 0/0 0/0 .data m_seq09_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq09_funcTbl[2] = {&daNpcCdn3_c::talkb, NULL}; + +/* 8097FB44-8097FB5C 00049C 0018+00 1/1 0/0 0/0 .data m_seq10_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq10_funcTbl[2] = {&daNpcCdn3_c::talkc, NULL}; + +/* 8097FB98-8097FBE0 0004F0 0048+00 1/1 0/0 0/0 .data m_seq11_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq11_funcTbl[6] = {&daNpcCdn3_c::talka, &daNpcCdn3_c::waita, + &daNpcCdn3_c::talkb, &daNpcCdn3_c::waitb, + &daNpcCdn3_c::talkc, NULL}; + +/* 8097FBEC-8097FC04 000544 0018+00 1/1 0/0 0/0 .data m_seq12_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq12_funcTbl[2] = {&daNpcCdn3_c::waitb, NULL}; + +/* 8097FC40-8097FC88 000598 0048+00 1/1 0/0 0/0 .data m_seq13_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq13_funcTbl[6] = { + &daNpcCdn3_c::browsea, &daNpcCdn3_c::browseb, &daNpcCdn3_c::talka, + &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, NULL}; + +/* 8097FC94-8097FCAC 0005EC 0018+00 1/1 0/0 0/0 .data m_seq14_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq14_funcTbl[2] = {&daNpcCdn3_c::walkb, NULL}; + +/* 8097FCB8-8097FCD0 000610 0018+00 1/1 0/0 0/0 .data m_seq15_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq15_funcTbl[2] = {&daNpcCdn3_c::sitwaita, NULL}; + +/* 8097FD18-8097FD6C 000670 0054+00 1/1 0/0 0/0 .data m_seq16_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq16_funcTbl[7] = { + &daNpcCdn3_c::sittalka, + &daNpcCdn3_c::sitwaita, + &daNpcCdn3_c::sittalkab, + &daNpcCdn3_c::sitwaita, + &daNpcCdn3_c::sittalka, + &daNpcCdn3_c::sittalkab, + NULL, +}; + +/* 8097FD78-8097FD90 0006D0 0018+00 1/1 0/0 0/0 .data m_seq17_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq17_funcTbl[2] = { + &daNpcCdn3_c::playm, + NULL, +}; + +/* 8097FD9C-8097FDB4 0006F4 0018+00 1/1 0/0 0/0 .data m_seq18_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq18_funcTbl[2] = {&daNpcCdn3_c::sitwaitb, NULL}; + +/* 8097FDFC-8097FE50 000754 0054+00 1/1 0/0 0/0 .data m_seq19_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq19_funcTbl[7] = { + &daNpcCdn3_c::sittalkb, + &daNpcCdn3_c::sitwaitb, + &daNpcCdn3_c::sittalkbb, + &daNpcCdn3_c::sitwaitb, + &daNpcCdn3_c::sittalkb, + &daNpcCdn3_c::sittalkbb, + NULL, +}; + +/* 8097FE5C-8097FE74 0007B4 0018+00 1/1 0/0 0/0 .data m_seq20_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq20_funcTbl[2] = {&daNpcCdn3_c::looka, NULL}; + +/* 8097FE80-8097FE98 0007D8 0018+00 1/1 0/0 0/0 .data m_seq21_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq21_funcTbl[2] = {&daNpcCdn3_c::lookb, NULL}; + +/* 8097FEBC-8097FEEC 000814 0030+00 1/1 0/0 0/0 .data m_seq22_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq22_funcTbl[4] = {&daNpcCdn3_c::looka, &daNpcCdn3_c::lookb, + &daNpcCdn3_c::waita, NULL}; + +/* 8097FF34-8097FF88 00088C 0054+00 1/1 0/0 0/0 .data m_seq23_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq23_funcTbl[7] = { + &daNpcCdn3_c::talka, + &daNpcCdn3_c::waita, + &daNpcCdn3_c::talkb, + &daNpcCdn3_c::waita, + &daNpcCdn3_c::talka, + &daNpcCdn3_c::talkb, + NULL, +}; + +/* 8097FFB8-8097FFF4 000910 003C+00 1/1 0/0 0/0 .data m_seq24_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq24_funcTbl[5] = { + &daNpcCdn3_c::talkb, &daNpcCdn3_c::talka, &daNpcCdn3_c::talkc, &daNpcCdn3_c::waita, NULL, +}; + +/* 8098003C-80980090 000994 0054+00 1/1 0/0 0/0 .data m_seq25_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq25_funcTbl[7] = { + &daNpcCdn3_c::browsea, + &daNpcCdn3_c::browseb, + &daNpcCdn3_c::talka, + &daNpcCdn3_c::talkb, + &daNpcCdn3_c::talkc, + &daNpcCdn3_c::waita, + NULL, +}; + +/* 809800A8-809800CC 000A00 0024+00 1/1 0/0 0/0 .data m_seq26_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq26_funcTbl[3] = { + &daNpcCdn3_c::browsea, + &daNpcCdn3_c::browseb, + NULL, +}; + +/* 809800D8-809800F0 000A30 0018+00 1/1 0/0 0/0 .data m_seq27_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq27_funcTbl[2] = {&daNpcCdn3_c::dance, NULL}; + +/* 80980108-8098012C 000A60 0024+00 1/1 0/0 0/0 .data m_seq28_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq28_funcTbl[3] = { + &daNpcCdn3_c::ladytalka, + &daNpcCdn3_c::normtalka, + NULL, +}; + +/* 80980144-80980168 000A9C 0024+00 1/1 0/0 0/0 .data m_seq29_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq29_funcTbl[3] = { + &daNpcCdn3_c::ladytalkb, + &daNpcCdn3_c::normtalkb, + NULL, +}; + +/* 809801A4-809801EC 000AFC 0048+00 1/1 0/0 0/0 .data m_seq30_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq30_funcTbl[6] = { + &daNpcCdn3_c::talka, &daNpcCdn3_c::ladytalka, &daNpcCdn3_c::waita, + &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, NULL, +}; + +/* 80980228-80980270 000B80 0048+00 1/1 0/0 0/0 .data m_seq31_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq31_funcTbl[6] = { + &daNpcCdn3_c::waita, &daNpcCdn3_c::ladytalkb, &daNpcCdn3_c::talka, + &daNpcCdn3_c::waita, &daNpcCdn3_c::talkb, NULL, +}; + +/* 809802B8-8098030C 000C10 0054+00 1/1 0/0 0/0 .data m_seq32_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq32_funcTbl[7] = { + &daNpcCdn3_c::talka, + &daNpcCdn3_c::ladytalka, + &daNpcCdn3_c::waita, + &daNpcCdn3_c::talkb, + &daNpcCdn3_c::waita, + &daNpcCdn3_c::normtalka, + NULL, +}; + +/* 80980354-809803A8 000CAC 0054+00 1/1 0/0 0/0 .data m_seq33_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq33_funcTbl[7] = { + &daNpcCdn3_c::waita, + &daNpcCdn3_c::ladytalkb, + &daNpcCdn3_c::talka, + &daNpcCdn3_c::waita, + &daNpcCdn3_c::talkb, + &daNpcCdn3_c::normtalkb, + NULL, +}; + +/* 80980408-80980474 000D60 006C+00 1/1 0/0 0/0 .data m_seq34_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq34_funcTbl[9] = { + &daNpcCdn3_c::talka, &daNpcCdn3_c::ladytalka, &daNpcCdn3_c::ladytalkb, + &daNpcCdn3_c::waita, &daNpcCdn3_c::talkb, &daNpcCdn3_c::waita, + &daNpcCdn3_c::normtalka, &daNpcCdn3_c::normtalkb, NULL, +}; + +/* 80980480-80980498 000DD8 0018+00 1/1 0/0 0/0 .data m_seq35_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq35_funcTbl[2] = { + &daNpcCdn3_c::sellme, + NULL, +}; + +/* 809804BC-809804EC 000E14 0030+00 1/1 0/0 0/0 .data m_seq36_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq36_funcTbl[4] = { + &daNpcCdn3_c::ladytalkb, + &daNpcCdn3_c::talka, + &daNpcCdn3_c::waita, + NULL, +}; + +/* 809804F8-80980510 000E50 0018+00 1/1 0/0 0/0 .data m_seq37_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq37_funcTbl[2] = { + &daNpcCdn3_c::sing, NULL, +}; + +/* 8098051C-80980534 000E74 0018+00 1/1 0/0 0/0 .data m_seq38_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq38_funcTbl[2] = { + &daNpcCdn3_c::sittalka, NULL, +}; + +/* 80980540-80980558 000E98 0018+00 1/1 0/0 0/0 .data m_seq39_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq39_funcTbl[2] = { + &daNpcCdn3_c::sittalkab, NULL, +}; + +/* 80980570-80980594 000EC8 0024+00 1/1 0/0 0/0 .data m_seq40_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq40_funcTbl[3] = { + &daNpcCdn3_c::sittalka, &daNpcCdn3_c::sittalkab, NULL, +}; + +/* 809805A0-809805B8 000EF8 0018+00 1/1 0/0 0/0 .data m_seq41_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq41_funcTbl[2] = { + &daNpcCdn3_c::sittalkb, NULL, +}; + +/* 809805C4-809805DC 000F1C 0018+00 1/1 0/0 0/0 .data m_seq42_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq42_funcTbl[2] = { + &daNpcCdn3_c::sittalkbb, NULL, + +}; + +/* 809805F4-80980618 000F4C 0024+00 1/1 0/0 0/0 .data m_seq43_funcTbl__11daNpcCdn3_c */ +daNpcCdn3_c::seqFunc daNpcCdn3_c::m_seq43_funcTbl[3] = { + &daNpcCdn3_c::sittalkb, &daNpcCdn3_c::sittalkbb, NULL, +}; + /* 8097A028-8097A398 0013C8 0370+00 1/0 0/0 0/0 .text executeEscape__11daNpcCdn3_cFv */ void daNpcCdn3_c::executeEscape() { if (field_0xb68 == 0) { @@ -699,7 +683,8 @@ void daNpcCdn3_c::executeEscape() { if (current.pos.y != old.pos.y) { s16 gndAngle = 0; cM3dGPla plane; - if (dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane)) { + bool triPla = dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane); + if (triPla) { gndAngle = fopAcM_getPolygonAngle(&plane, shape_angle.y); } if (gndAngle != 0) { @@ -735,7 +720,7 @@ void daNpcCdn3_c::initFear() { a_anmNum = 0x28; } - mSeqNum = a_anmNum; + m_seqNum = a_anmNum; setAnm((J3DAnmTransformKey*)getAnmP(0x29, mObjNum), 1.0f, 0.0f, 0, 0, -1); field_0xb92 = fopAcM_searchPlayerAngleY(this); mFlowNodeNum = 0; @@ -751,7 +736,7 @@ void daNpcCdn3_c::executeFear() { } if (mpMorf->isStop()) { mObjNum = 0; - setAnm((J3DAnmTransformKey*)getAnmP(mSeqNum, mObjNum), 1.0f, 12.0f, 2, 0, -1); + setAnm((J3DAnmTransformKey*)getAnmP(m_seqNum, mObjNum), 1.0f, 12.0f, 2, 0, -1); field_0xb92 = cLib_targetAngleY(fopAcM_GetPosition_p(daPy_getPlayerActorClass()), ¤t.pos); } cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 3, 0x600); @@ -824,7 +809,7 @@ void daNpcCdn3_c::executeRelief() { current.pos.set(m_path.getPoint(0)); home.pos.set(current.pos); old.pos.set(current.pos); - current.angle.y = cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); + current.angle.y = (s16)cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); shape_angle.y = current.angle.y; home.angle.y = current.angle.y; old.angle.y = current.angle.y; @@ -839,7 +824,7 @@ void daNpcCdn3_c::executeRelief() { setAction(MODE_FEAR); } } - cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 3, 0x600); + cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 3 + MREG_S(0), 0x600 + MREG_S(1)); } /* 8097ABDC-8097ABE8 001F7C 000C+00 3/3 0/0 0/0 .text setAngle__11daNpcCdn3_cFv */ @@ -857,8 +842,8 @@ void daNpcCdn3_c::pathMoveF() { anmSpeed = Cd2_HIO_walkAnmPlaySpeed(m_type); cLib_chaseF(&field_0xb5c, 0.8f, 0.05f); - setSpeed(&field_0xb60, 0.7f, walkSpeed, 0); - setSpeed(&speedF, 0.7f, walkSpeed, 1); + setSpeed(0.7f, walkSpeed, &field_0xb60, 0); + setSpeed(0.7f, walkSpeed, &speedF, 1); } else if (field_0xb68 == 1) { walkSpeed = Cd2_HIO_maxSpeed(m_type); anmSpeed = Cd2_HIO_anmPlaySpeed(m_type); @@ -867,8 +852,8 @@ void daNpcCdn3_c::pathMoveF() { anmSpeed *= 1.5f; } cLib_chaseF(&field_0xb5c, 1.0, 0.05f); - setSpeed(&field_0xb60, 0.7f, walkSpeed, 0); - setSpeed(&speedF, 0.7f, walkSpeed, 1); + setSpeed(0.7f, walkSpeed, &field_0xb60, 0); + setSpeed(0.7f, walkSpeed, &speedF, 1); } else if (field_0xb68 == 0) { cLib_chaseF(&field_0xb5c, 0.0, 0.05f); cLib_chaseF(&field_0xb60, 0.0f, 1.5f); @@ -876,18 +861,20 @@ void daNpcCdn3_c::pathMoveF() { } cXyz targetPoint; m_path.getTargetPoint(&targetPoint); - if (cLib_distanceAngleS(shape_angle.y, cLib_targetAngleY(¤t.pos, &targetPoint)) >= 0x2000) { + int angle = cLib_distanceAngleS(shape_angle.y, cLib_targetAngleY(¤t.pos, &targetPoint)); + if (angle >= 0x2000) { cLib_chaseF(&field_0xb5c, 0.0f, 0.05f); cLib_chaseF(&field_0xb60, 0.0f, 1.2f); cLib_chaseF(&speedF, 0.0f, 1.2f); } fopAcM_posMoveF(this, movePos); + f32 playSpeed; if (field_0xb68 != 0) { - walkSpeed = field_0xb60 / walkSpeed; - if (walkSpeed > 1.0f) { - walkSpeed = 1.0f; + playSpeed = field_0xb60 / walkSpeed; + if (playSpeed > 1.0f) { + playSpeed = 1.0f; } - f32 playSpeed = anmSpeed * walkSpeed; + playSpeed = anmSpeed * playSpeed; if (playSpeed < 0.6f) { playSpeed = 0.6f; } @@ -899,7 +886,7 @@ void daNpcCdn3_c::pathMoveF() { int daNpcCdn3_c::ctrlMsgAnm() { int rv = -1; if (!eventInfo.checkCommandTalk()) { - return -1; + return rv; } if (dComIfGp_event_getTalkPartner() == this) { msg_class* msg_p = dMsgObject_c::getActor(); @@ -934,25 +921,26 @@ static void* s_sub1(void* param_1, void* param_2) { /* 8097B04C-8097B128 0023EC 00DC+00 1/1 0/0 0/0 .text * searchNextScheduleTagSub__11daNpcCdn3_cFP10fopAc_ac_c */ bool daNpcCdn3_c::searchNextScheduleTagSub(fopAc_ac_c* param_1) { - if (getGroupID() == ((daTagSchedule_c*)param_1)->getGroupID()) { - int uVar3 = mTagSched->getStartTime(); - uVar3 = (u16)((uVar3 / 10) * 60 + (uVar3 % 10) * 10); - int uVar4 = ((daTagSchedule_c*)param_1)->getStartTime(); + daTagSchedule_c* schedule = (daTagSchedule_c*)param_1; + if (getGroupID() == schedule->getGroupID()) { + u8 uVar3 = mTagSched->getStartTime(); + int uVar3_2 = (u16)((uVar3 / 10) * 60 + (uVar3 % 10) * 10); + u8 uVar4 = schedule->getStartTime(); int uVar4a = (u16)((uVar4 / 10) * 60 + (uVar4 % 10) * 10); - if (uVar4a <= (int)uVar3) { + if (uVar4a <= uVar3_2) { uVar4a += 24 * 60; } - if (uVar4a > uVar3) { + if (uVar4a > uVar3_2) { if (field_0xb88 == NULL) { - field_0xb88 = (daTagSchedule_c*)param_1; + field_0xb88 = schedule; } else { - u16 uVar5 = field_0xb88->getStartTime(); + u8 uVar5 = field_0xb88->getStartTime(); int uVar5a = (u16)((uVar5 / 10) * 60 + (uVar5 % 10) * 10); - if (uVar5a <= uVar3) { + if (uVar5a <= uVar3_2) { uVar5a += 24 * 60; } if (uVar4a < uVar5a) { - field_0xb88 = (daTagSchedule_c*)param_1; + field_0xb88 = schedule; } } } @@ -974,20 +962,22 @@ static void* s_sub2(void* param_1, void* param_2) { /* 8097B194-8097B288 002534 00F4+00 1/1 0/0 0/0 .text * searchFirstScheduleTagSub__11daNpcCdn3_cFP10fopAc_ac_c */ bool daNpcCdn3_c::searchFirstScheduleTagSub(fopAc_ac_c* param_1) { - if (getGroupID() == ((daTagSchedule_c*)param_1)->getGroupID()) { - int uVar3 = ((daTagSchedule_c*)param_1)->getStartTime(); + daTagSchedule_c* schedule = (daTagSchedule_c*)param_1; + if (getGroupID() == schedule->getGroupID()) { + u8 uVar3 = schedule->getStartTime(); int uVar3a = (u16)((uVar3 / 10) * 60 + (uVar3 % 10) * 10); int iVar1 = getTime(); if (mTagSched == NULL) { - mTagSched = (daTagSchedule_c*)param_1; + mTagSched = schedule; } else { u8 uVar4 = mTagSched->getStartTime(); + u16 unusedShort1 = ((uVar4 / 10) * 60) + ((uVar4 % 10) * 10); if (uVar3a > iVar1) { if (uVar3a < uVar4) { - mTagSched = (daTagSchedule_c*)param_1; + mTagSched = schedule; } } else if (uVar3a > uVar4) { - mTagSched = (daTagSchedule_c*)param_1; + mTagSched = schedule; } } } @@ -997,12 +987,16 @@ bool daNpcCdn3_c::searchFirstScheduleTagSub(fopAc_ac_c* param_1) { /* 8097B288-8097B38C 002628 0104+00 2/2 0/0 0/0 .text checkSchedule__11daNpcCdn3_cFv */ void daNpcCdn3_c::checkSchedule() { if (getGroupID() != 0xff && field_0xb88 != NULL) { - u16 rawStartTime = field_0xb88->getStartTime(); + u8 rawStartTime = field_0xb88->getStartTime(); int schedStartTime = (u16)((rawStartTime / 10) * 60 + (rawStartTime % 10) * 10); int currentTime = getTime(); +#if PLATFORM_SHIELD + if (field_0xb88->getWeekNum() == getDayOfWeek() && schedStartTime <= currentTime) { +#else int currentDay = getDayOfWeek(); int schedDay = field_0xb88->getWeekNum(); if (schedDay == currentDay && schedStartTime <= currentTime) { +#endif setSchedule(field_0xb88); field_0xb88 = NULL; setAction(MODE_PATH); @@ -1014,8 +1008,8 @@ void daNpcCdn3_c::checkSchedule() { * setSchedule__11daNpcCdn3_cFP15daTagSchedule_c */ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) { mTagSched = param_1; - int iVar8; if (mTagSched->getPathID() != 0xff) { + int iVar8; if (mTagSched->getStartEnd() == 0) { iVar8 = 1; } else { @@ -1031,19 +1025,21 @@ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) { m_path.setLastPointNum(); } } - u16 startTime = mTagSched->getStartTime(); + u8 startTime = mTagSched->getStartTime(); field_0xb8c = (startTime / 10) * 60 + (startTime % 10) * 10; - mSeqNum = mTagSched->getSeqNum(); + m_seqNum = mTagSched->getSeqNum(); mFlowNodeNum = mTagSched->getFlowNodeNum(); - if (mSeqNum < 0 || mSeqNum >= 44) { - OSReport_Error("城下町の町人 スケジュールタグ設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum); + if (m_seqNum < 0 || m_seqNum >= 44) { + // "Castle town townspeople schedule tag setting value error + // Argument 1 motion sequence=%d is abnormal" + OSReport_Error("城下町の町人 スケジュールタグ設定値異常 引数1モーションシーケンス=%dが異常です。\n", m_seqNum); JUT_ASSERT(1825, FALSE); } if (mTagSched->getStartEnd() == 0) { current.pos.set(m_path.getPoint(0)); home.pos.set(current.pos); old.pos.set(current.pos); - current.angle.y = cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); + current.angle.y = (int)cLib_targetAngleY(m_path.getPoint(0), m_path.getPoint(1)); shape_angle.y = current.angle.y; home.angle.y = current.angle.y; old.angle.y = current.angle.y; @@ -1085,7 +1081,7 @@ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) { OS_REPORT("開始時刻: %s曜日 %d時 %d分\n", dayStr, startTime / 10, (startTime % 10) * 10); OS_REPORT("グループID: %d\n", mTagSched->getGroupID()); OS_REPORT("レールID: %d\n", mTagSched->getPathID()); - OS_REPORT("モーションシーケンス: %d\n", mSeqNum); + OS_REPORT("モーションシーケンス: %d\n", m_seqNum); OS_REPORT("スタート、エンド: %d\n", mTagSched->getStartEnd()); OS_REPORT("メッセージID: %d\n", mFlowNodeNum); } @@ -1101,8 +1097,8 @@ inline bool daNpcCdn3_c::isInShop() { /* 8097B60C-8097B684 0029AC 0078+00 3/3 0/0 0/0 .text isChairStyle__11daNpcCdn3_cFv */ bool daNpcCdn3_c::isChairStyle() { - if (mSeqNum == 15 || mSeqNum == 16 || (mSeqNum == 17 && isM_()) || - mSeqNum == 38 || mSeqNum == 39 || mSeqNum == 40) + if (m_seqNum == 15 || m_seqNum == 16 || (m_seqNum == 17 && isM_()) || + m_seqNum == 38 || m_seqNum == 39 || m_seqNum == 40) { return true; } @@ -1111,8 +1107,8 @@ bool daNpcCdn3_c::isChairStyle() { /* 8097B684-8097B6D0 002A24 004C+00 2/2 0/0 0/0 .text isNoTurnTalk__11daNpcCdn3_cFv */ bool daNpcCdn3_c::isNoTurnTalk() { - if (mSeqNum == 7 || mSeqNum == 8 || mSeqNum == 18 || mSeqNum == 19 || - mSeqNum == 41 || mSeqNum == 42 || mSeqNum == 43) + if (m_seqNum == 7 || m_seqNum == 8 || m_seqNum == 18 || m_seqNum == 19 || + m_seqNum == 41 || m_seqNum == 42 || m_seqNum == 43) { return true; } @@ -1121,273 +1117,293 @@ bool daNpcCdn3_c::isNoTurnTalk() { /* 8097B6D0-8097B754 002A70 0084+00 21/0 0/0 0/0 .text waita__11daNpcCdn3_cFPv */ int daNpcCdn3_c::waita(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B754-8097B7D8 002AF4 0084+00 15/0 0/0 0/0 .text talka__11daNpcCdn3_cFPv */ int daNpcCdn3_c::talka(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(6, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(6, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B7D8-8097B85C 002B78 0084+00 3/0 0/0 0/0 .text waitwall__11daNpcCdn3_cFPv */ int daNpcCdn3_c::waitwall(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(11, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(11, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B85C-8097B8E0 002BFC 0084+00 2/0 0/0 0/0 .text talkwall__11daNpcCdn3_cFPv */ int daNpcCdn3_c::talkwall(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(12, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(12, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B8E0-8097B964 002C80 0084+00 2/0 0/0 0/0 .text talkbwall__11daNpcCdn3_cFPv */ int daNpcCdn3_c::talkbwall(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(13, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(13, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B964-8097B9E8 002D04 0084+00 12/0 0/0 0/0 .text talkb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::talkb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(7, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(7, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097B9E8-8097BA6C 002D88 0084+00 4/0 0/0 0/0 .text talkc__11daNpcCdn3_cFPv */ int daNpcCdn3_c::talkc(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(8, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(8, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BA6C-8097BAF0 002E0C 0084+00 2/0 0/0 0/0 .text waitb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::waitb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(1, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(1, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BAF0-8097BB74 002E90 0084+00 3/0 0/0 0/0 .text sitwaita__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sitwaita(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(14, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(14, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BB74-8097BBF8 002F14 0084+00 4/0 0/0 0/0 .text sittalka__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sittalka(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(15, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(15, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BBF8-8097BC7C 002F98 0084+00 4/0 0/0 0/0 .text sittalkab__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sittalkab(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(16, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(16, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BC7C-8097BD00 00301C 0084+00 3/0 0/0 0/0 .text sitwaitb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sitwaitb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(17, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(17, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BD00-8097BD84 0030A0 0084+00 4/0 0/0 0/0 .text sittalkb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sittalkb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(18, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(18, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BD84-8097BE08 003124 0084+00 4/0 0/0 0/0 .text sittalkbb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sittalkbb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(19, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(19, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BE08-8097BE8C 0031A8 0084+00 2/0 0/0 0/0 .text looka__11daNpcCdn3_cFPv */ int daNpcCdn3_c::looka(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(9, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(9, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BE8C-8097BF10 00322C 0084+00 2/0 0/0 0/0 .text lookb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::lookb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(10, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(10, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097BF10-8097C070 0032B0 0160+00 1/0 0/0 0/0 .text playm__11daNpcCdn3_cFPv */ int daNpcCdn3_c::playm(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(34, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - if (isM_()) { - if (getType() == 4) { - mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_1, -1); + if (!isStop()) { + return 0; + } + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(34, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + + if (isM_()) { + if (getType() == 4) { + mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_1, -1); + } else { + if (getType() == 5) { + mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_2, -1); } else { - if (getType() == 5) { - mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_2, -1); - } else { - if (getType() == 6) { - mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_3, -1); - } + if (getType() == 6) { + mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_GT_3, -1); } } - } else { - mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_FLUTE, -1); } - return field_0xaa0 == 0; + } else { + mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_FLUTE, -1); } - return 0; + return field_0xaa0 == 0; } /* 8097C070-8097C12C 003410 00BC+00 1/0 0/0 0/0 .text turnr__11daNpcCdn3_cFPv */ int daNpcCdn3_c::turnr(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xb92 = shape_angle.y - 0x4000; - field_0xb94 = 0; - } - cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 4, 0x2000); - if (abs(field_0xb92 - shape_angle.y) <= 4) { - shape_angle.y = field_0xb92; - return 1; - } + if (!isStop()) { return 0; } + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xb92 = shape_angle.y - 0x4000; + field_0xb94 = 0; + } + cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 4, 0x2000); + if (abs(field_0xb92 - shape_angle.y) <= 4) { + shape_angle.y = field_0xb92; + return 1; + } return 0; } /* 8097C12C-8097C1E8 0034CC 00BC+00 1/0 0/0 0/0 .text turnl__11daNpcCdn3_cFPv */ int daNpcCdn3_c::turnl(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xb92 = shape_angle.y + 0x4000; - field_0xb94 = 0; - } - cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 4, 0x2000); - if (abs(field_0xb92 - shape_angle.y) <= 4) { - shape_angle.y = field_0xb92; - return 1; - } + if (!isStop()) { return 0; } + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(0, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xb92 = shape_angle.y + 0x4000; + field_0xb94 = 0; + } + cLib_addCalcAngleS2(&shape_angle.y, field_0xb92, 4, 0x2000); + if (abs(field_0xb92 - shape_angle.y) <= 4) { + shape_angle.y = field_0xb92; + return 1; + } return 0; } @@ -1421,131 +1437,140 @@ int daNpcCdn3_c::runb(void* param_0) { /* 8097C388-8097C40C 003728 0084+00 3/0 0/0 0/0 .text browsea__11daNpcCdn3_cFPv */ int daNpcCdn3_c::browsea(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(20, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(20, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C40C-8097C490 0037AC 0084+00 3/0 0/0 0/0 .text browseb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::browseb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(21, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(21, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C490-8097C5B0 003830 0120+00 1/0 0/0 0/0 .text dance__11daNpcCdn3_cFPv */ int daNpcCdn3_c::dance(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(47, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - if (m_type == 17) { - mCitizen.startCreatureVoiceLevel(Z2SE_WAD_A_MV_DANCE, -1); + if (!isStop()) { + return 0; + } + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(47, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + if (m_type == 17) { + mCitizen.startCreatureVoiceLevel(Z2SE_WAD_A_MV_DANCE, -1); + } else { + if (m_type == 2) { + mCitizen.startCreatureVoiceLevel(Z2SE_MCN_A_V_DANCE, -1); } else { - if (m_type == 2) { - mCitizen.startCreatureVoiceLevel(Z2SE_MCN_A_V_DANCE, -1); - } else { - if (m_type == 26) { - mCitizen.startCreatureVoiceLevel(Z2SE_WCN_A_V_DANCE, -1); - } + if (m_type == 26) { + mCitizen.startCreatureVoiceLevel(Z2SE_WCN_A_V_DANCE, -1); } } - return field_0xaa0 == 0; } - return 0; + return field_0xaa0 == 0; } /* 8097C5B0-8097C634 003950 0084+00 4/0 0/0 0/0 .text ladytalka__11daNpcCdn3_cFPv */ int daNpcCdn3_c::ladytalka(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(48, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(48, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C634-8097C6B8 0039D4 0084+00 5/0 0/0 0/0 .text ladytalkb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::ladytalkb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(49, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(49, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C6B8-8097C73C 003A58 0084+00 3/0 0/0 0/0 .text normtalka__11daNpcCdn3_cFPv */ int daNpcCdn3_c::normtalka(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(50, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(50, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C73C-8097C7C0 003ADC 0084+00 3/0 0/0 0/0 .text normtalkb__11daNpcCdn3_cFPv */ int daNpcCdn3_c::normtalkb(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(51, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(51, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C7C0-8097C844 003B60 0084+00 1/0 0/0 0/0 .text sellme__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sellme(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(52, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(52, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + return field_0xaa0 == 0; } /* 8097C844-8097C8F0 003BE4 00AC+00 1/0 0/0 0/0 .text sing__11daNpcCdn3_cFPv */ int daNpcCdn3_c::sing(void* param_0) { - if (isStop()) { - if (field_0xb94 != 0) { - setAnm((J3DAnmTransformKey*)getAnmP(53, mObjNum), 1.0f, 12.0f, 2, 0, -1); - field_0xaa0 = 1; - field_0xb94 = 0; - } - mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_VOCAL, -1); - return field_0xaa0 == 0; + if (!isStop()) { + return 0; } - return 0; + + if (field_0xb94 != 0) { + setAnm((J3DAnmTransformKey*)getAnmP(53, mObjNum), 1.0f, 12.0f, 2, 0, -1); + field_0xaa0 = 1; + field_0xb94 = 0; + } + mCitizen.startCreatureVoiceLevel(Z2SE_CSL_TOWN_BAND_VOCAL, -1); + return field_0xaa0 == 0; } /* 8097C8F0-8097C910 003C90 0020+00 1/0 0/0 0/0 .text daNpcCdn3_Create__FPv */ @@ -1553,29 +1578,24 @@ static int daNpcCdn3_Create(void* i_this) { return static_cast<daNpcCdn3_c*>(i_this)->create(); } -/* ############################################################################################## */ -/* 8097F5AC-8097F5AC 00006C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8097F652 = - "城下町の町人 マップツール設定値異常 引数1モーションシーケンス=%dが異常です。\n"; -#pragma pop - /* 8097C910-8097CC58 003CB0 0348+00 3/1 0/0 0/0 .text create__11daNpcCdn3_cFv */ int daNpcCdn3_c::create() { fopAcM_ct(this, daNpcCdn3_c); mIsDarkWorld = dKy_darkworld_check(); m_type = getType(); mObjNum = getObjNum(); - mSeqNum = getSeqNum(); + m_seqNum = getSeqNum(); mFlowNodeNum = getFlowNodeNum(); - if (mSeqNum < 0 || 44 <= mSeqNum) { - OSReport_Error("城下町の町人 マップツール設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum); + if (m_seqNum < 0 || 44 <= m_seqNum) { + OSReport_Error("城下町の町人 マップツール設定値異常 引数1モーションシーケンス=%dが異常です。\n", m_seqNum); JUT_ASSERT(175, FALSE); } int rv = loadResrc(m_type, mObjNum); if (rv == cPhs_COMPLEATE_e) { - if (fopAcM_entrySolidHeap(this, createHeapCallBack, 0x80002890) == 0) { + int msb = 0x80000000; + int heapSize = 0x2890; + heapSize |= msb; + if (fopAcM_entrySolidHeap(this, createHeapCallBack, heapSize) == 0) { OS_REPORT("アクター生成失敗しました!\n"); return cPhs_ERROR_e; } @@ -1586,14 +1606,15 @@ int daNpcCdn3_c::create() { /* 8097CC58-8097D078 003FF8 0420+00 1/1 0/0 0/0 .text create_init__11daNpcCdn3_cFv */ void daNpcCdn3_c::create_init() { +#if DEBUG + l_Cd2_HIO.entryHIO("NPC(C級,D級)HighPoly"); +#endif + gravity = -3.0f; initTimeSchedule(); fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); - fopAcM_setCullSizeBox(this, -40.0f, -10.0f, -40.0f, 40.0f, 190.0f, - 40.0f); - f32 chkWallR = Cd2_HIO_chkWallR(m_type); - f32 chkWallH = Cd2_HIO_chkWallH(m_type); - mAcchCir.SetWall(chkWallH, chkWallR); + fopAcM_setCullSizeBox(this, -40.0f, -10.0f, -40.0f, 40.0f, 190.0f, 40.0f); + mAcchCir.SetWall(Cd2_HIO_chkWallH(m_type), Cd2_HIO_chkWallR(m_type)); mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.SetRoofNone(); @@ -1623,9 +1644,7 @@ void daNpcCdn3_c::create_init() { } mpMorf->setMorf(0.0f); - f32 gnd = mAcch.GetGroundH(); - current.pos.y = gnd; - field_0xb64 = gnd; + field_0xb64 = current.pos.y = mAcch.GetGroundH(); setMtx(); } @@ -1644,17 +1663,16 @@ void daNpcCdn3_c::setMtx() { } /* 8097D120-8097D614 0044C0 04F4+00 1/1 0/0 0/0 .text lookat__11daNpcCdn3_cFv */ -// NONMATCHING - r3 init order + regalloc void daNpcCdn3_c::lookat() { csXyz vecs1[3] = { - csXyz((s32)Cd2_HIO_maxLmtX_BACKBONE(m_type), (s32)Cd2_HIO_maxLmtY_BACKBONE(m_type), 0), - csXyz((s32)Cd2_HIO_maxLmtX_NECK(m_type), (s32)Cd2_HIO_maxLmtY_NECK(m_type), 0), - csXyz((s32)Cd2_HIO_maxLmtX_HEAD(m_type), (s32)Cd2_HIO_maxLmtY_HEAD(m_type), 0), + csXyz(Cd2_HIO_maxLmtX_BACKBONE(m_type), Cd2_HIO_maxLmtY_BACKBONE(m_type), 0), + csXyz(Cd2_HIO_maxLmtX_NECK(m_type), Cd2_HIO_maxLmtY_NECK(m_type), 0), + csXyz(Cd2_HIO_maxLmtX_HEAD(m_type), Cd2_HIO_maxLmtY_HEAD(m_type), 0), }; csXyz vecs2[3] = { - csXyz((s32)Cd2_HIO_minLmtX_BACKBONE(m_type), (s32)Cd2_HIO_minLmtY_BACKBONE(m_type), 0), - csXyz((s32)Cd2_HIO_minLmtX_NECK(m_type), (s32)Cd2_HIO_minLmtY_NECK(m_type), 0), - csXyz((s32)Cd2_HIO_minLmtX_HEAD(m_type), (s32)Cd2_HIO_minLmtY_HEAD(m_type), 0), + csXyz(Cd2_HIO_minLmtX_BACKBONE(m_type), Cd2_HIO_minLmtY_BACKBONE(m_type), 0), + csXyz(Cd2_HIO_minLmtX_NECK(m_type), Cd2_HIO_minLmtY_NECK(m_type), 0), + csXyz(Cd2_HIO_minLmtX_HEAD(m_type), Cd2_HIO_minLmtY_HEAD(m_type), 0), }; int local_68[4]; cXyz cStack_80(cXyz::Zero); @@ -1669,7 +1687,7 @@ void daNpcCdn3_c::lookat() { local_68[2] = 3; local_68[3] = -1; } - mLookat.init(mpMorf->getModel(), local_68, &vecs1[0], &vecs2[0]); + mLookat.init(mpMorf->getModel(), local_68, vecs1, vecs2); Mtx afStack_38; if (m_targetAct.getActorP() != NULL) { cMtx_copy(mpMorf->getModel()->getBaseTRMtx(), afStack_38); @@ -1678,7 +1696,7 @@ void daNpcCdn3_c::lookat() { cMtx_copy(mpMorf->getModel()->getBaseTRMtx(), afStack_38); cStack_80 = cXyz::Zero; } - mLookat.action(cStack_80, eyePos, this, afStack_38, m_targetAct.getActorP() != NULL); + mLookat.action(cStack_80, eyePos, this, afStack_38, NULL != m_targetAct.getActorP()); } /* 8097D650-8097D684 0049F0 0034+00 1/0 0/0 0/0 .text daNpcCdn3_Delete__FPv */ @@ -1693,6 +1711,10 @@ daNpcCdn3_c::~daNpcCdn3_c() { if (heap != NULL) { mpMorf->stopZelAnime(); } + +#if DEBUG + l_Cd2_HIO.removeHIO(this); +#endif } /* 8097D728-8097D748 004AC8 0020+00 1/0 0/0 0/0 .text daNpcCdn3_Execute__FPv */ @@ -1735,9 +1757,9 @@ int daNpcCdn3_c::execute() { inline bool daNpcCdn3_c::searchFirstScheduleTag() { field_0xb88 = NULL; - fpcM_Search(s_sub2, this); + base_process_class* unusedSearchResult = fpcM_Search(s_sub2, this); if (mTagSched != NULL) { - mTagSched->setWeekNum((u32)getDayOfWeek() % 7); + mTagSched->setWeekNum(getDayOfWeek()); } return mTagSched != NULL; } @@ -1747,15 +1769,13 @@ inline bool daNpcCdn3_c::searchNextScheduleTag() { return 0; } field_0xb88 = 0; - fpcM_Search(s_sub1, this); + base_process_class* unusedSearchResult = fpcM_Search(s_sub1, this); if (field_0xb88 != 0) { u32 uVar2 = mTagSched->getWeekNum(); - u32 bVar3 = mTagSched->getStartTime(); - u32 bVar4 = field_0xb88->getStartTime(); - if (bVar4 <= bVar3) { + if (field_0xb88->getStartTime() <= mTagSched->getStartTime()) { uVar2 = (uVar2 + 1) % 7; } - field_0xb88->setWeekNum(uVar2 % 7); + field_0xb88->setWeekNum(uVar2); } return field_0xb88 != NULL; } @@ -1797,9 +1817,13 @@ void daNpcCdn3_c::checkTimeSchedule() { } } } else if (field_0xb95 != 0 && mTagSched->getStartEnd() != 1) { +#if PLATFORM_SHIELD + if (mTagSched->getWeekNum() == getDayOfWeek() && field_0xb8c <= iVar2) { +#else int day = getDayOfWeek(); int weekNum = mTagSched->getWeekNum(); if (weekNum == day && field_0xb8c <= iVar2) { +#endif field_0xb95 = 0; } } diff --git a/src/d/actor/d_a_obj_cblock.cpp b/src/d/actor/d_a_obj_cblock.cpp index 003e0fd145..9a3ce450bc 100644 --- a/src/d/actor/d_a_obj_cblock.cpp +++ b/src/d/actor/d_a_obj_cblock.cpp @@ -5,25 +5,50 @@ #include "d/dolzel_rel.h" // IWYU pragma: keep +#include "Z2AudioLib/Z2Instances.h" #include "d/actor/d_a_obj_cblock.h" +#include "d/actor/d_a_player.h" #include "d/d_cc_d.h" #include "d/d_path.h" -#include "d/actor/d_a_player.h" -#include "Z2AudioLib/Z2Instances.h" +#include "d/d_s_play.h" + +#if DEBUG +#define TRAVEL_TIME (l_HIO.mTravelTime) +#define TRAVEL_DIST (l_HIO.mTravelDist) +#else +#define TRAVEL_TIME (13) +#define TRAVEL_DIST (50.0f) +#endif + +class daObjCBlk_HIO_c : public mDoHIO_entry_c { +public: + daObjCBlk_HIO_c(); + virtual ~daObjCBlk_HIO_c() {} + +#if DEBUG + void genMessage(JORMContext*); +#endif + + /* 0x06 */ u8 field_0x06; + /* 0x07 */ u8 field_0x07; + /* 0x08 */ u8 mWaitTime; + /* 0x09 */ u8 mTravelTime; + /* 0x0C */ f32 mGravity; + /* 0x10 */ f32 mTravelDist; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ f32 field_0x1c; +}; -/* 80BC5A0C-80BC5A48 0000EC 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjCBlk_cFv */ -void daObjCBlk_c::initBaseMtx() { - model1->setBaseScale(scale); - setBaseMtx(); -} +/* 80BC6C9C-80BC6CA8 000054 000C+00 1/2 0/0 0/0 .bss l_chainOffset */ +static cXyz l_chainOffset(0.0f, 105.0f, 30.0f); -/* 80BC5A48-80BC5ABC 000128 0074+00 1/1 0/0 0/0 .text setBaseMtx__11daObjCBlk_cFv */ -void daObjCBlk_c::setBaseMtx() { - mDoMtx_stack_c::transS(current.pos.x, current.pos.y,current.pos.z); - mDoMtx_stack_c::YrotM(shape_angle.y); - model1->setBaseTRMtx(mDoMtx_stack_c::get()); - MTXCopy(mDoMtx_stack_c::get(), mBgMtx); -} +/* 80BC6CB4-80BC6CC4 00006C 000C+04 0/1 0/0 0/0 .bss l_smokeSetOffset */ +static cXyz l_smokeSetOffset(0.0f, 0.0f, -200.0f); + +#if !DEBUG +static s32 unused_bss_70 = 0; +#endif /* ############################################################################################## */ /* 80BC6A38-80BC6A50 000000 0018+00 5/5 0/0 0/0 .rodata l_cull_box */ @@ -51,12 +76,55 @@ static dCcD_SrcCyl l_cyl_src = { {0x0}, // mGObjCo }, // mObjInf { - {0.0f, 0.0f, 0.0f}, // mCenter - 60.0f, // mRadius - 300.0f // mHeight - } // mCyl + {0.0f, 0.0f, 0.0f}, // mCenter + 60.0f, // mRadius + 300.0f // mHeight + } // mCyl }; +#if DEBUG +daObjCBlk_HIO_c::daObjCBlk_HIO_c() { + field_0x06 = 0; + field_0x07 = 0; + mGravity = -6.0f; + mTravelDist = 50.0f; + mTravelTime = 13; + mWaitTime = 8; + field_0x14 = 35.0f; + field_0x18 = 35.0f; + field_0x1c = 15.0f; +} + +static f32 dummy1() { + return 15.0f; +} + +void daObjCBlk_HIO_c::genMessage(JORMContext* ctx) { + // "Chained block" + ctx->genLabel("チェーン付きブロック", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("重力", &mGravity, -10.0f, -0.1f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("移動時間", &mTravelTime, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("タメ時間", &mWaitTime, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); + ctx->genSlider("移動距離", &mTravelDist, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18); +} + +static daObjCBlk_HIO_c l_HIO; +#endif + +/* 80BC5A0C-80BC5A48 0000EC 003C+00 1/1 0/0 0/0 .text initBaseMtx__11daObjCBlk_cFv */ +void daObjCBlk_c::initBaseMtx() { + model1->setBaseScale(scale); + setBaseMtx(); +} + +/* 80BC5A48-80BC5ABC 000128 0074+00 1/1 0/0 0/0 .text setBaseMtx__11daObjCBlk_cFv */ +void daObjCBlk_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y,current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y); + model1->setBaseTRMtx(mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), mBgMtx); +} + /* 80BC5ABC-80BC5CBC 00019C 0200+00 1/0 0/0 0/0 .text Create__11daObjCBlk_cFv */ int daObjCBlk_c::Create() { u8 pathId = getPathID(); @@ -138,13 +206,6 @@ daObjCBlk_c::chain_s::~chain_s() { daObjCBlk_c::chain_s::chain_s() { } -static inline void dummylfunc() { - static daObjCBlk_c::modeFunc l_func[2] = { - &daObjCBlk_c::modeWait, - &daObjCBlk_c::modeWalk, - }; -} - /* 80BC5E98-80BC6020 000578 0188+00 1/1 0/0 0/0 .text create__11daObjCBlk_cFv */ int daObjCBlk_c::create() { fopAcM_ct(this, daObjCBlk_c); @@ -155,6 +216,10 @@ int daObjCBlk_c::create() { return rv; } OS_REPORT("CHAIN BLOCK:%x\n", fopAcM_GetParam(this)); + +#if DEBUG + l_HIO.entryHIO("チェーン付きブロック"); +#endif } return rv; } @@ -165,6 +230,21 @@ int daObjCBlk_c::Execute(f32 (**mtx)[3][4]) { return 1; } +void daObjCBlk_c::block_mode_proc_call() { + static modeFunc l_func[2] = { + &daObjCBlk_c::modeWait, + &daObjCBlk_c::modeWalk, + }; + (this->*(l_func[field_0xc1e]))(); +} + +#if DEBUG +static void dummy5() { + OS_REPORT("Delete -> ChainBlock(id=%d)\n"); + OS_REPORT("Create -> ChainBlock(id=%d)\n"); +} +#endif + /* 80BC6270-80BC627C 000950 000C+00 2/2 0/0 0/0 .text initWait__11daObjCBlk_cFv */ void daObjCBlk_c::initWait() { field_0xc1f = 0; @@ -183,18 +263,23 @@ void daObjCBlk_c::modeWait() { mDoMtx_stack_c::multVec(&cStack_44, &cStack_44); cStack_38.normalizeZP(); cStack_44.normalizeZP(); - f32 dVar7 = fabs(cStack_38.inprod(cStack_44)); - if (dVar7 > 0.95000005f) { + f32 inprod = cStack_38.inprod(cStack_44); + if (std::fabs(inprod) > 0.95000005f + KREG_F(4)) { bVar1 = true; } if (field_0xc1c != 0 && field_0xc1e != 0) { setPower(power); if (bVar1) { field_0xca3++; - if (!checkWall() && player->getBaseAnimeFrame() > 6.0f && player->getBaseAnimeFrame() < 8.0f && - field_0xca3 > 8) + if (!checkWall() && player->getBaseAnimeFrame() > 6.0f && player->getBaseAnimeFrame() < 8.0f) { - initWalk(); +#if DEBUG + if (field_0xca3 > l_HIO.mWaitTime) { +#else + if (field_0xca3 > 8) { +#endif + initWalk(); + } } } } else { @@ -204,21 +289,24 @@ void daObjCBlk_c::modeWait() { /* 80BC6414-80BC6430 000AF4 001C+00 1/1 0/0 0/0 .text initWalk__11daObjCBlk_cFv */ void daObjCBlk_c::initWalk() { - walkTimer = 13; - field_0xca6 = 2520; + u8 travelTime = TRAVEL_TIME; + walkTimer = travelTime; + field_0xca6 = 0x7fff / travelTime; field_0xc1f = 1; } /* 80BC6430-80BC65CC 000B10 019C+00 1/0 0/0 0/0 .text modeWalk__11daObjCBlk_cFv */ void daObjCBlk_c::modeWalk() { + u8 travelTime = TRAVEL_TIME; + f32 travelDist = TRAVEL_DIST; + cLib_calcTimer(&walkTimer); - f32 dVar5 = cM_scos(field_0xca6 * (13 - walkTimer)); - dVar5 = (1.0f - dVar5) * 0.5f; + f32 dVar5 = (1.0f - cM_scos(field_0xca6 * (travelTime - walkTimer))) * 0.5f; cXyz local_58(0.0f, 0.0f, 1.0f); mDoMtx_stack_c::YrotS(home.angle.y); mDoMtx_stack_c::multVec(&local_58, &local_58); - current.pos.x = home.pos.x + local_58.x * (50.0f * (field_0xca2 + dVar5)); - current.pos.z = home.pos.z + local_58.z * (50.0f * (field_0xca2 + dVar5)); + current.pos.x = home.pos.x + local_58.x * (travelDist * (field_0xca2 + dVar5)); + current.pos.z = home.pos.z + local_58.z * (travelDist * (field_0xca2 + dVar5)); setPower(power); fopAcM_seStartLevel(this, Z2SE_OBJ_CBLOCK_SLIDEMOVE, 0); if (walkTimer == 0) { @@ -227,9 +315,6 @@ void daObjCBlk_c::modeWalk() { } } -/* 80BC6C9C-80BC6CA8 000054 000C+00 1/2 0/0 0/0 .bss l_chainOffset */ -static cXyz l_chainOffset(0.0f, 105.0f, 30.0f); - /* 80BC65CC-80BC6648 000CAC 007C+00 2/2 0/0 0/0 .text getChainBasePos__11daObjCBlk_cFP4cXyz */ void daObjCBlk_c::getChainBasePos(cXyz* pPos) { *pPos = l_chainOffset; @@ -241,24 +326,36 @@ void daObjCBlk_c::getChainBasePos(cXyz* pPos) { /* 80BC6648-80BC66DC 000D28 0094+00 2/2 0/0 0/0 .text setPower__11daObjCBlk_cFf */ void daObjCBlk_c::setPower(f32 power) { daPy_py_c* player = daPy_getPlayerActorClass(); - chain_s* pChain = chains; + chain_s* pChain = chains + 5; cXyz local_28; - local_28 = pChain[4].position - pChain[5].position; + local_28 = pChain[-1].position - pChain[0].position; s16 angle = cM_atan2s(local_28.x, local_28.z); player->setOutPower(power, angle, 0); } -static f32 dummy() { +static f32 dummy2() { f32 f0 = -6.0f; +#if DEBUG + f32 f1 = 3.0f / 20.0f; +#else f32 f1 = 3.0f / 40.0f; +#endif f32 f2 = 100.0f; f32 f3 = 15.0f; f32 f4 = 35.0f; +#if DEBUG + f32 f5 = 5.0f; + f32 f6 = 0.0f; + f32 f7 = 0.0f; + f32 f8 = 0.0f; + f32 f9 = 0.0f; +#else f64 f5 = 0.5; f64 f6 = 3.0; f64 f7 = 0.0; f32 f8 = 195.0f; f32 f9 = 210.0f; +#endif return f0 + f1 * (f2 - f3 * (f4 - f5 * (f6 - f7 * f8 - (f7 - f9)))); } @@ -266,7 +363,7 @@ static f32 dummy() { BOOL daObjCBlk_c::checkWall() { cXyz acStack_30[2] = {cXyz(-95.0f, 5.0f, 1.0f), cXyz(95.0f, 5.0f, 1.0f)}; cXyz cStack_40(0.0f, 0.0f, 1.0f); - cStack_40.z = 50.0f; + cStack_40.z = TRAVEL_DIST; BOOL rv = FALSE; for (int i = 0; i < 2; i++) { cXyz cStack_4c(acStack_30[i]); @@ -276,6 +373,10 @@ BOOL daObjCBlk_c::checkWall() { cStack_4c += current.pos; mDoMtx_stack_c::multVec(&cStack_58, &cStack_58); cStack_58 += cStack_4c; +#if DEBUG + field_0xcb0_debug[i] = cStack_4c; + field_0xcc8_debug[i] = cStack_58; +#endif if (fopAcM_lc_c::lineCheck(&cStack_4c, &cStack_58, this)) { rv = TRUE; } @@ -291,6 +392,9 @@ int daObjCBlk_c::Draw() { /* 80BC6870-80BC68A4 000F50 0034+00 1/0 0/0 0/0 .text Delete__11daObjCBlk_cFv */ int daObjCBlk_c::Delete() { dComIfG_resDelete(&phase, l_arcName); +#if DEBUG + l_HIO.removeHIO(); +#endif return 1; } @@ -308,19 +412,24 @@ static int daObjCBlk_Execute(daObjCBlk_c* i_this) { /* 80BC68F0-80BC6910 000FD0 0020+00 1/0 0/0 0/0 .text daObjCBlk_Delete__FP11daObjCBlk_c */ static int daObjCBlk_Delete(daObjCBlk_c* i_this) { + fpc_ProcID unusedId = fopAcM_GetID(i_this); return i_this->MoveBGDelete(); } /* 80BC6910-80BC6930 000FF0 0020+00 1/0 0/0 0/0 .text daObjCBlk_Create__FP10fopAc_ac_c */ static int daObjCBlk_Create(fopAc_ac_c* i_this) { - fopAcM_GetID(i_this); - return static_cast<daObjCBlk_c*>(i_this)->create(); + daObjCBlk_c* cblock = static_cast<daObjCBlk_c*>(i_this); + fpc_ProcID unusedId = fopAcM_GetID(i_this); + return cblock->create(); } -/* 80BC6CB4-80BC6CC4 00006C 000C+04 0/1 0/0 0/0 .bss l_smokeSetOffset */ -static cXyz l_smokeSetOffset(0.0f, 0.0f, -200.0f); - -static s32 unused_bss_70 = 0; +#if DEBUG +static const u32 dummy3[3] = { + 0xff0000ff, + 0x0000ffff, + 0x00ff00ff, +}; +#endif AUDIO_INSTANCES; diff --git a/src/d/actor/d_a_obj_lv7PropellerY.cpp b/src/d/actor/d_a_obj_lv7PropellerY.cpp index 44b4183a1d..1cc854cffa 100644 --- a/src/d/actor/d_a_obj_lv7PropellerY.cpp +++ b/src/d/actor/d_a_obj_lv7PropellerY.cpp @@ -255,7 +255,6 @@ void daPropY_c::init_modeStop() { } /* 80C85DD0-80C85F14 000A50 0144+00 1/0 0/0 0/0 .text modeStop__9daPropY_cFv */ -// NONMATCHING - fsubs instead of fsub void daPropY_c::modeStop() { s16 var_r30; if (mTurnType == 0) { @@ -264,7 +263,12 @@ void daPropY_c::modeStop() { var_r30 = cLib_addCalcAngleS(&shape_angle.y, field_0x5b6, 1, (182.04445f * fopAcM_GetSpeedF(this)), 1); } + // probably not a real version difference - GCN has fsub for some reason instead of fsubs +#if PLATFORM_GCN + field_0x5c4 = field_0x5c0 * ((f32)std::fabs((f64)var_r30) / field_0x5bc); +#else field_0x5c4 = field_0x5c0 * (std::fabs((f32)var_r30) / field_0x5bc); +#endif mDoAud_seStartLevel(Z2SE_OBJ_AMI_ROLL, ¤t.pos, field_0x5c4, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); if (var_r30 == 0) { diff --git a/src/d/actor/d_a_obj_lv7bridge.cpp b/src/d/actor/d_a_obj_lv7bridge.cpp index d390f1469d..6db7d96ada 100644 --- a/src/d/actor/d_a_obj_lv7bridge.cpp +++ b/src/d/actor/d_a_obj_lv7bridge.cpp @@ -9,6 +9,29 @@ #include "d/actor/d_a_obj_swspinner.h" #include "d/d_s_play.h" +#if DEBUG +class daObjLv7Brg_HIO_c : public JORReflexible { +public: + daObjLv7Brg_HIO_c(); + virtual ~daObjLv7Brg_HIO_c() {} + + void genMessage(JORMContext*); + + u8 field_0x04[0x08 - 0x04]; + f32 field_0x08; + f32 field_0x0c; +}; + +daObjLv7Brg_HIO_c::daObjLv7Brg_HIO_c() { +} + +void daObjLv7Brg_HIO_c::genMessage(JORMContext* ctx) { + // NONMATCHING +} + +static daObjLv7Brg_HIO_c l_HIO; +#endif + /* 80C86378-80C863EC 000078 0074+00 1/1 0/0 0/0 .text searchSwSpinner__FPvPv */ static void* searchSwSpinner(void* i_actor, void* i_data) { fopAc_ac_c* swspinner = (fopAc_ac_c*)i_actor; @@ -329,19 +352,32 @@ void daObjLv7Brg_c::mode_action() { if (5100.0f == field_0xa78) { var_f31 = 0.0f; } else { +#if DEBUG + var_f31 = l_HIO.field_0x08; +#else var_f31 = 30.0f; +#endif } } else if (0.0f == field_0xa78) { var_f31 = 0.0f; } else { +#if DEBUG + var_f31 = -l_HIO.field_0x0c; +#else var_f31 = -45.0f; +#endif } cLib_addCalc(&speedF, var_f31, 0.02f, 1.0f, 0.1f); field_0xa78 += speedF; if (0.0f != speedF) { - fopAcM_seStartLevel(this, 0x8025F, (127.0f * speedF) / 30.0f); +#if DEBUG + u32 var_r28 = 127.0f * speedF / l_HIO.field_0x08; +#else + u32 var_r28 = 127.0f * speedF / 30.0f; +#endif + fopAcM_seStartLevel(this, 0x8025F, var_r28); } if (0.0f != speedF && 0.0f == temp_f29) { diff --git a/src/d/actor/d_a_obj_ss_item.cpp b/src/d/actor/d_a_obj_ss_item.cpp index 3d12397408..0f063e19c7 100644 --- a/src/d/actor/d_a_obj_ss_item.cpp +++ b/src/d/actor/d_a_obj_ss_item.cpp @@ -336,6 +336,47 @@ int daObj_SSItem_c::wait(void* param_0) { } } +int daObj_SSItem_c::buy(void* param_0) { + switch (mEventType) { + case 0: + break; + case 1: + dComIfGp_event_reset(); + + if (getParentPtr() != NULL) { + ((daMyna_c *)getParentPtr())->deleteItem(fopAcM_GetID(this)); + } + + fopAcM_delete(this); + break; + case 2: + break; + } + + return 1; +} + +int daObj_SSItem_c::cancel(void* param_0) { + switch (mEventType) { + case 0: + break; + case 1: + if (field_0xAFC == 0) { + dComIfGp_event_reset(); + + current.pos.set(field_0xAF0); + + setProcess(&daObj_SSItem_c::wait); + } + + break; + case 2: + break; + } + + return 1; +} + /* 80CE7D8C-80CE7DAC 0011EC 0020+00 1/0 0/0 0/0 .text daObj_SSItem_Create__FPv */ static int daObj_SSItem_Create(void* i_this) { return static_cast<daObj_SSItem_c*>(i_this)->create(); diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 9f54014c35..579add2f41 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -410,37 +410,40 @@ static void dummy2() { J3DTevOrder tevOrder; J3DTevSwapModeTable tevSwapModeTable; J3DIndTexOrder indTexOrder; - J3DIndTexMtx indTexMtx; - J3DIndTexCoordScale indTexCoordScale; + + J3DTevStage* tevStage_p; + J3DTevStageInfo tevStageInfo; + tevStage_p->setTevStageInfo(tevStageInfo); + J3DTevStage tevStage; J3DColorBlock* colorBlock = NULL; - colorBlock->setColorChanNum((const u8*)NULL); + colorBlock->setColorChanNum((u8)NULL); colorBlock->setMatColor(0, gxColor); colorBlock->setColorChan(0, colorChan); colorBlock->setAmbColor(0, gxColor); J3DTexGenBlock* texGenBlock = NULL; - texGenBlock->setTexGenNum((const u32*)NULL); + texGenBlock->setTexGenNum((u32)NULL); texGenBlock->setTexCoord(0, NULL); J3DTevBlock* tevBlock = NULL; - tevBlock->setTevStageNum((const u8*)NULL); + tevBlock->setTevStageNum((u8)0); tevBlock->setTevColor(0, J3DGXColorS10()); tevBlock->setTevKColor(0, gxColor); tevBlock->setTevOrder(0, tevOrder); - tevBlock->setTevKColorSel(0, (const u8*)NULL); - tevBlock->setTevKAlphaSel(0, (const u8*)NULL); + tevBlock->setTevKColorSel(0, (u8)0); + tevBlock->setTevKAlphaSel(0, (u8)0); tevBlock->setTevSwapModeTable(0, tevSwapModeTable); - tevBlock->setTexNo(0, (const u16*)NULL); - J3DTevStage tevStage; + tevBlock->setTexNo(0, (u16)0); tevBlock->setTevStage(0, tevStage); tevBlock->setIndTevStage(0, indTevStage); J3DIndBlock* indBlock = NULL; indBlock->setIndTexStageNum(0); + J3DIndTexMtx indTexMtx; indBlock->setIndTexMtx(0, indTexMtx); + J3DIndTexCoordScale indTexCoordScale; indBlock->setIndTexCoordScale(0, indTexCoordScale); - indTexCoordScale.~J3DIndTexCoordScale(); J3DPEBlock* peBlock = NULL; J3DAlphaComp alphaComp; @@ -450,7 +453,7 @@ static void dummy2() { J3DZMode zMode; peBlock->setZMode(zMode); u8 compLoc; - peBlock->setZCompLoc(&compLoc); + peBlock->setZCompLoc(compLoc); colorBlock->getColorChanNum(); colorBlock->getMatColor(0); |
