summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2025-11-21 02:09:21 -0500
committerGitHub <noreply@github.com>2025-11-20 23:09:21 -0800
commite6a5d5c3dd3249fe61086ba37fecc9684caa4191 (patch)
treef2ab7b1f19f278159263bfcf3340575aaa599d2c /src/d
parent91011befd7f834db307ab4b35d7937b470c9f333 (diff)
Miscellaneous retail+debug fixes, link several new TUs (#2836)
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_b_mgn.cpp10
-rw-r--r--src/d/actor/d_a_e_ws.cpp18
-rw-r--r--src/d/actor/d_a_mant.cpp256
-rw-r--r--src/d/actor/d_a_mg_fshop.cpp4
-rw-r--r--src/d/actor/d_a_npc_cd2.cpp4
-rw-r--r--src/d/actor/d_a_npc_cdn3.cpp1398
-rw-r--r--src/d/actor/d_a_obj_cblock.cpp207
-rw-r--r--src/d/actor/d_a_obj_lv7PropellerY.cpp6
-rw-r--r--src/d/actor/d_a_obj_lv7bridge.cpp38
-rw-r--r--src/d/actor/d_a_obj_ss_item.cpp41
10 files changed, 1130 insertions, 852 deletions
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(&current.pos, &cStack_58);
- cLib_addCalcAngleS2(&shape_angle.y, sVar10, 0xd, 0x600);
+ cLib_addCalcAngleS2(&shape_angle.y, cLib_targetAngleY(&current.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()), &current.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(&current.pos, &targetPoint)) >= 0x2000) {
+ int angle = cLib_distanceAngleS(shape_angle.y, cLib_targetAngleY(&current.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, &current.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();