summaryrefslogtreecommitdiff
path: root/src/d/actor
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-11-17 10:01:03 -0800
committerGitHub <noreply@github.com>2025-11-17 20:01:03 +0200
commit540217c31b88246d5c3abd57bb3fbd97cff6d31c (patch)
treecc08666dad6a7cd55539168a0d0e3f6bba188488 /src/d/actor
parent4350a38fe01fa57890eade52c7c5e3789cce83ac (diff)
wii building OK / m_Do_graphic debug work (#2815)
* wii building OK + m_Do_graphic debug work * d_meter_HIO debug cleanup * wii m_Do_graphic stuff * tag_attack_item OK, mirror_chain almost * fix build * mg_fshop matching
Diffstat (limited to 'src/d/actor')
-rw-r--r--src/d/actor/d_a_alink_kandelaar.inc2
-rw-r--r--src/d/actor/d_a_balloon_2D.cpp2
-rw-r--r--src/d/actor/d_a_e_fk.cpp2
-rw-r--r--src/d/actor/d_a_e_fs.cpp2
-rw-r--r--src/d/actor/d_a_e_sm.cpp2
-rw-r--r--src/d/actor/d_a_mg_fshop.cpp1612
-rw-r--r--src/d/actor/d_a_mirror.cpp8
-rw-r--r--src/d/actor/d_a_movie_player.cpp4
-rw-r--r--src/d/actor/d_a_npc.cpp2
-rw-r--r--src/d/actor/d_a_npc_henna.cpp4
-rw-r--r--src/d/actor/d_a_obj_ari.cpp2
-rw-r--r--src/d/actor/d_a_obj_cho.cpp2
-rw-r--r--src/d/actor/d_a_obj_crvfence.cpp6
-rw-r--r--src/d/actor/d_a_obj_crvhahen.cpp2
-rw-r--r--src/d/actor/d_a_obj_dan.cpp2
-rw-r--r--src/d/actor/d_a_obj_gomikabe.cpp2
-rw-r--r--src/d/actor/d_a_obj_groundwater.cpp2
-rw-r--r--src/d/actor/d_a_obj_hhashi.cpp2
-rw-r--r--src/d/actor/d_a_obj_kabuto.cpp2
-rw-r--r--src/d/actor/d_a_obj_kamakiri.cpp8
-rw-r--r--src/d/actor/d_a_obj_katatsumuri.cpp6
-rw-r--r--src/d/actor/d_a_obj_kuwagata.cpp4
-rw-r--r--src/d/actor/d_a_obj_lv3Water2.cpp2
-rw-r--r--src/d/actor/d_a_obj_mhole.cpp2
-rw-r--r--src/d/actor/d_a_obj_mirror_chain.cpp459
-rw-r--r--src/d/actor/d_a_obj_octhashi.cpp4
-rw-r--r--src/d/actor/d_a_obj_rstair.cpp2
-rw-r--r--src/d/actor/d_a_obj_ten.cpp4
-rw-r--r--src/d/actor/d_a_obj_thashi.cpp4
-rw-r--r--src/d/actor/d_a_obj_tombo.cpp4
-rw-r--r--src/d/actor/d_a_obj_tp.cpp2
-rw-r--r--src/d/actor/d_a_obj_zra_freeze.cpp2
-rw-r--r--src/d/actor/d_a_tag_attack_item.cpp290
-rw-r--r--src/d/actor/d_a_title.cpp2
34 files changed, 1233 insertions, 1224 deletions
diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc
index afea666b31..0a24d7516c 100644
--- a/src/d/actor/d_a_alink_kandelaar.inc
+++ b/src/d/actor/d_a_alink_kandelaar.inc
@@ -207,7 +207,7 @@ void daAlink_c::preKandelaarDraw() {
var_f3 = 0.0f;
}
- if (proj.x > 0.0f && proj.x < 608.0f && proj.y > var_f3 && proj.y < 448.0f - var_f3) {
+ if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > var_f3 && proj.y < FB_HEIGHT - var_f3) {
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
} else {
field_0x32c8 = 0;
diff --git a/src/d/actor/d_a_balloon_2D.cpp b/src/d/actor/d_a_balloon_2D.cpp
index c177fb2230..6a49136da8 100644
--- a/src/d/actor/d_a_balloon_2D.cpp
+++ b/src/d/actor/d_a_balloon_2D.cpp
@@ -567,7 +567,7 @@ void daBalloon2D_c::setHIO(bool param_1) {
field_0x5a0->paneTrans(l_HOSTIO.m.mBalloonSmallPosX, l_HOSTIO.m.mBalloonSmallPosY);
field_0x5a0->scale(l_HOSTIO.m.mBalloonSmallSize, l_HOSTIO.m.mBalloonSmallSize);
field_0x5a0->setAlphaRate(l_HOSTIO.m.mBalloonSmallAlpha * mAllAlpha);
-#if DEBUG
+#if WIDESCREEN_SUPPORT
if (mDoGph_gInf_c::isWide()) {
field_0x5a4->paneTrans(l_HOSTIO.m.m2DNumberCombo2PosX, l_HOSTIO.m.m2DNumberCombo2PosY);
} else {
diff --git a/src/d/actor/d_a_e_fk.cpp b/src/d/actor/d_a_e_fk.cpp
index 9fa0e46915..38c369b538 100644
--- a/src/d/actor/d_a_e_fk.cpp
+++ b/src/d/actor/d_a_e_fk.cpp
@@ -466,7 +466,7 @@ void daE_FK_c::DamageAction() {
bool daE_FK_c::checkViewArea() {
Vec proj;
mDoLib_project(&current.pos, &proj);
- return (proj.x >= 0.0f && proj.x <= 608.0f) && (proj.y >= 0.0f && proj.y <= 448.0f);
+ return (proj.x >= 0.0f && proj.x <= FB_WIDTH) && (proj.y >= 0.0f && proj.y <= FB_HEIGHT);
}
namespace {
diff --git a/src/d/actor/d_a_e_fs.cpp b/src/d/actor/d_a_e_fs.cpp
index d8582fb900..d5b8edaaa8 100644
--- a/src/d/actor/d_a_e_fs.cpp
+++ b/src/d/actor/d_a_e_fs.cpp
@@ -480,7 +480,7 @@ static bool checkViewArea(cXyz* i_pos) {
Vec proj;
mDoLib_project(i_pos, &proj);
bool ret = false;
- if (proj.x >= 0.0f && proj.x <= 608.0f && proj.y >= 0.0f && proj.y <= 448.0f) {
+ if (proj.x >= 0.0f && proj.x <= FB_WIDTH && proj.y >= 0.0f && proj.y <= FB_HEIGHT) {
ret = true;
}
return ret;
diff --git a/src/d/actor/d_a_e_sm.cpp b/src/d/actor/d_a_e_sm.cpp
index cdd670aefb..18125a1db4 100644
--- a/src/d/actor/d_a_e_sm.cpp
+++ b/src/d/actor/d_a_e_sm.cpp
@@ -1394,7 +1394,7 @@ bool daE_SM_c::CheckViewArea() {
mDoLib_project(&current.pos, &vec);
bool rv = false;
- if (vec.x >= 0.0f && vec.x <= 608.0f && vec.y >= 0.0f && vec.y <= 448.0f) {
+ if (vec.x >= 0.0f && vec.x <= FB_WIDTH && vec.y >= 0.0f && vec.y <= FB_HEIGHT) {
rv = true;
}
diff --git a/src/d/actor/d_a_mg_fshop.cpp b/src/d/actor/d_a_mg_fshop.cpp
index 8b0c6f5980..7e94d1bbf6 100644
--- a/src/d/actor/d_a_mg_fshop.cpp
+++ b/src/d/actor/d_a_mg_fshop.cpp
@@ -6,57 +6,62 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_mg_fshop.h"
-#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "d/actor/d_a_npc_henna.h"
+#include "d/actor/d_a_mg_rod.h"
#include "d/actor/d_a_player.h"
-#include "d/d_bg_w.h"
-#include "d/d_kankyo.h"
-#include "f_op/f_op_actor_mng.h"
#include "f_op/f_op_camera_mng.h"
#include "d/d_timer.h"
-#include "dol2asm.h"
-#include "m_Do/m_Do_controller_pad.h"
-#include "SSystem/SComponent/c_math.h"
+#include "d/d_s_play.h"
#include "Z2AudioLib/Z2Instances.h"
/* 8086C06C-8086C08C 0000EC 0020+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
-static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
- if (param_2->field_0x567 == 0) {
- param_2->field_0x567 = 1;
- ((fshop_class*)param_2)->field_0x428c = 0;
+static void ride_call_back(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) {
+ if (i_rideActor->field_0x567 == 0) {
+ i_rideActor->field_0x567 = 1;
+ ((fshop_class*)i_rideActor)->field_0x428c = 0;
}
}
/* 8086C08C-8086C140 00010C 00B4+00 1/1 0/0 0/0 .text Reel_CallBack__FP8J3DJointi */
-static int Reel_CallBack(J3DJoint* param_0, int param_1) {
+static int Reel_CallBack(J3DJoint* i_joint, int param_1) {
+ s32 userarea;
+ J3DJoint* var_r27;
+
if (param_1 == 0) {
- u16 uVar1 = param_0->getJntNo();
+ var_r27 = i_joint;
+ int jnt_no = var_r27->getJntNo();
J3DModel* model = j3dSys.getModel();
- s32 iVar2 = model->getUserArea();
- MTXCopy(model->getAnmMtx(uVar1), (MtxP)calc_mtx);
- cMtx_XrotM((MtxP)calc_mtx, (int)*(short*)(iVar2 + 0x58));
- model->setAnmMtx(uVar1, (MtxP)calc_mtx);
- PSMTXCopy((MtxP)calc_mtx, (MtxP) J3DSys::mCurrentMtx);
+ userarea = model->getUserArea();
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ cMtx_XrotM(*calc_mtx, *(s16*)(userarea + 0x58)); // fakematch, unknown type for userarea
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
}
+
return 1;
}
/* 8086C140-8086C214 0001C0 00D4+00 1/1 0/0 0/0 .text frog_CallBack__FP8J3DJointi */
-static int frog_CallBack(J3DJoint* param_0, int param_1) {
+static int frog_CallBack(J3DJoint* i_joint, int param_1) {
+ int userarea;
+ J3DJoint* var_r27;
+
if (param_1 == 0) {
- s32 sVar2 = param_0->getJntNo();
+ var_r27 = i_joint;
+ int jnt_no = var_r27->getJntNo();
J3DModel* model = j3dSys.getModel();
- model->getUserArea();
- if (sVar2 == 1) {
- MtxP uVar1 = model->getAnmMtx(sVar2);
- MTXCopy(uVar1, (MtxP)calc_mtx);
- cMtx_YrotM((MtxP)calc_mtx, -8800);
- MtxScale(2.0f, 1.0f, 1.5f, 1);
- model->setAnmMtx(sVar2, (MtxP)calc_mtx);
- MTXCopy((MtxP)calc_mtx, (MtxP)J3DSys::mCurrentMtx);
+ userarea = model->getUserArea(); // unknown type
+
+ if (jnt_no == 1) {
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ cMtx_YrotM(*calc_mtx, JREG_S(7) + -8800);
+ MtxScale(JREG_F(10) + 2.0f, JREG_F(11) + 1.0f, JREG_F(12) + 1.5f, 1);
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
}
}
+
return 1;
}
@@ -70,19 +75,23 @@ static cXyz BallEndPos;
static J3DModel* ArcIX_A_crwaku_model[1];
/* 8086C214-8086C310 000294 00FC+00 1/1 0/0 0/0 .text koro2_draw__FP11fshop_class */
-static void koro2_draw(fshop_class* param_1) {
+static void koro2_draw(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
- if (param_1->scale.x > 5.0f) {
+ if (actor->scale.x > 5.0f) {
dComIfGd_setListBG();
}
- g_env_light.setLightTevColorType_MAJI(ArcIX_A_crwaku_model[0], &param_1->tevStr);
+
+ g_env_light.setLightTevColorType_MAJI(ArcIX_A_crwaku_model[0], &actor->tevStr);
mDoExt_modelUpdateDL(ArcIX_A_crwaku_model[0]);
- for (s32 iVar1 = 0; iVar1 < ARRAY_SIZE(param_1->mKoro2); iVar1++) {
- if (param_1->mKoro2[iVar1].mpModel != NULL) {
- g_env_light.setLightTevColorType_MAJI(param_1->mKoro2[iVar1].mpModel, &param_1->tevStr);
- mDoExt_modelUpdateDL(param_1->mKoro2[iVar1].mpModel);
+
+ for (int i = 0; i < ARRAY_SIZE(i_this->mKoro2); i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mKoro2[i].mpModel, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mKoro2[i].mpModel);
}
}
+
dComIfGd_setList();
}
@@ -983,91 +992,94 @@ static J3DModel* ArcIX_A_crcurve_b_model[4];
static J3DModel* ArcIX_A_crsaka_model[8];
/* 80870704-8087071C -00001 0018+00 0/1 0/0 0/0 .data koro2_union_model */
-static void* koro2_union_model[6] = {
- (void*)&ArcIX_A_crstart_model, (void*)&ArcIX_A_crgoal_model, (void*)&ArcIX_A_crbox_model,
- (void*)&ArcIX_A_crcurve_a_model, (void*)&ArcIX_A_crcurve_b_model, (void*)&ArcIX_A_crsaka_model,
+static J3DModel** koro2_union_model[6] = {
+ ArcIX_A_crstart_model, ArcIX_A_crgoal_model, ArcIX_A_crbox_model,
+ ArcIX_A_crcurve_a_model, ArcIX_A_crcurve_b_model, ArcIX_A_crsaka_model,
};
-/* 8087071C-80870728 000498 000C+00 1/1 0/0 0/0 .data rod_color$3900 */
-static GXColor rod_color[3] = {
- {0x96, 0x50, 0x14, 0xFF}, {0x64, 0x96, 0x14, 0xFF}, {0x96, 0x14, 0x14, 0xFF},
-};
+/* 8086C310-8086C6E4 000390 03D4+00 1/0 0/0 0/0 .text daFshop_Draw__FP11fshop_class */
+static int daFshop_Draw(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+ g_env_light.settingTevStruct(0x10, &actor->current.pos, &actor->tevStr);
-/* 80870728-8087072C 0004A4 0004+00 1/1 0/0 0/0 .data l_color$3912 */
-static GXColor l_color = {
- 0x32,
- 0x64,
- 0x1E,
- 0xFF,
-};
+ if (i_this->field_0x4070 != NULL) {
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x4070, &actor->tevStr);
-/* 8086C310-8086C6E4 000390 03D4+00 1/0 0/0 0/0 .text daFshop_Draw__FP11fshop_class */
-// NONMATCHING regalloc
-static int daFshop_Draw(fshop_class* param_0) {
- g_env_light.settingTevStruct(0x10, &param_0->current.pos, &param_0->tevStr);
-
- if (param_0->field_0x4070 != NULL) {
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x4070, &param_0->tevStr);
- param_0->field_0x4070->getModelData()->getMaterialNodePointer(0)->getTevKColor(1)->r = 0;
- mDoExt_modelUpdateDL(param_0->field_0x4070);
+ J3DMaterial* sp1C = i_this->field_0x4070->getModelData()->getMaterialNodePointer(0);
+ sp1C->getTevKColor(1)->r = 0;
+
+ mDoExt_modelUpdateDL(i_this->field_0x4070);
dComIfGd_setSimpleShadow(
- &param_0->current.pos, param_0->field_0x40b4.GetGroundH(), 66.6f * param_0->scale.x,
- param_0->field_0x40b4.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ &actor->current.pos, i_this->field_0x40b4.GetGroundH(), (TREG_F(8) + 66.6f) * actor->scale.x,
+ i_this->field_0x40b4.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
return 1;
}
- if (param_0->field_0x400e != 0) {
- if (param_0->field_0x400d == 0) {
- koro2_draw(param_0);
- param_0->field_0x400d = 1;
+ if (i_this->field_0x400e != 0) {
+ if (i_this->field_0x400d == 0) {
+ koro2_draw(i_this);
+ i_this->field_0x400d = 1;
}
return 1;
}
- int cVar11 = fopAcM_GetRoomNo(param_0);
- camera_class* camera = dComIfGp_getCamera(0);
+ int roomNo = fopAcM_GetRoomNo(actor);
+ camera_class* camera = (camera_class*)dComIfGp_getCamera(0);
- for (int iVar12 = 0; iVar12 < 48; iVar12++) {
- f32 fVar4 = param_0->mLure[iVar12].field_0x00.x - camera->lookat.eye.x;
- f32 fVar5 = param_0->mLure[iVar12].field_0x00.z - camera->lookat.eye.z;
- if (fVar4 * fVar4 + fVar5 * fVar5 > 1200.0f) {
- g_env_light.setLightTevColorType_MAJI(param_0->mLure[iVar12].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mLure[iVar12].field_0x14);
- if (param_0->mLure[iVar12].field_0x24 != 3) {
- for (int local_50 = 0; local_50 < 2; local_50++) {
- dComIfGp_entrySimpleModel(param_0->mLure[iVar12].field_0x18[local_50], cVar11);
+ for (int i = 0; i < 48; i++) {
+ f32 fVar4 = i_this->mLure[i].field_0x00.x - camera->lookat.eye.x;
+ f32 fVar5 = i_this->mLure[i].field_0x00.z - camera->lookat.eye.z;
+ if (SQUARE(fVar4) + SQUARE(fVar5) > KREG_F(11) + 1200.0f) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mLure[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mLure[i].field_0x14);
+
+ if (i_this->mLure[i].field_0x24 != 3) {
+ for (int j = 0; j < 2; j++) {
+ dComIfGp_entrySimpleModel(i_this->mLure[i].field_0x18[j], roomNo);
}
}
}
}
- for (int iVar9 = 0; iVar9 < 3; iVar9++) {
- g_env_light.setLightTevColorType_MAJI(param_0->mRod[iVar9].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mRod[iVar9].field_0x14);
- param_0->mRod[iVar9].line_mat.update(8, rod_color[iVar9], &param_0->tevStr);
- dComIfGd_set3DlineMat(&param_0->mRod[iVar9].line_mat);
- for (int local_54 = 0; local_54 < 6; local_54++) {
- dComIfGp_entrySimpleModel(param_0->mRod[iVar9].field_0x18[local_54], cVar11);
+ for (int i = 0; i < 3; i++) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mRod[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mRod[i].field_0x14);
+
+ static GXColor rod_color[3] = {
+ {0x96, 0x50, 0x14, 0xFF},
+ {0x64, 0x96, 0x14, 0xFF},
+ {0x96, 0x14, 0x14, 0xFF},
+ };
+ i_this->mRod[i].line_mat.update(8, rod_color[i], &actor->tevStr);
+ dComIfGd_set3DlineMat(&i_this->mRod[i].line_mat);
+
+ for (int j = 0; j < 6; j++) {
+ dComIfGp_entrySimpleModel(i_this->mRod[i].field_0x18[j], roomNo);
}
}
- for (int local_58 = 0; local_58 < 2; local_58++) {
- g_env_light.setLightTevColorType_MAJI(param_0->mTsubo[local_58].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mTsubo[local_58].field_0x14);
+
+ for (int i = 0; i < 2; i++) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mTsubo[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mTsubo[i].field_0x14);
}
- param_0->field_0x3f88.update(0xf, 1.2f, l_color, 2, &param_0->tevStr);
- dComIfGd_set3DlineMat(&param_0->field_0x3f88);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x6b30, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x6b30);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x3ff4, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x3ff4);
- if (param_0->field_0x4004 != NULL) {
+ static GXColor l_color = {0x32, 0x64, 0x1E, 0xFF};
+ i_this->field_0x3f88.update(15, TREG_F(11) + 1.2f, l_color, 2, &actor->tevStr);
+ dComIfGd_set3DlineMat(&i_this->field_0x3f88);
+
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x6b30, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x6b30);
+
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x3ff4, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x3ff4);
+
+ if (i_this->field_0x4004 != NULL) {
mDoMtx_stack_c::transS(0.0f, 0.0f, 0.0f);
- MtxP pfVar10 = mDoMtx_stack_c::get();
- param_0->field_0x4004->setBaseTRMtx(pfVar10);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x4004, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x4004);
+ i_this->field_0x4004->setBaseTRMtx(mDoMtx_stack_c::get());
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x4004, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x4004);
}
+
return 1;
}
@@ -1097,9 +1109,10 @@ static f32 hook_2_offy[3] = {
};
/* 8086C6E4-8086C9D0 000764 02EC+00 1/1 0/0 0/0 .text lure_set__FP11fshop_class */
-static void lure_set(fshop_class* param_0) {
+static void lure_set(fshop_class* i_this) {
static f32 lure_ofy[3] = {-12.0f, -10.0f, -14.0f};
- fs_lure_s* pLure = param_0->mLure;
+ fs_lure_s* pLure = i_this->mLure;
+
for (int i = 0; i < 48; i++, pLure++) {
if (daPy_getPlayerActorClass()->checkFrontRollCrash()) {
pLure->field_0x34 = cM_rndF(65536.0f);
@@ -1107,12 +1120,15 @@ static void lure_set(fshop_class* param_0) {
pLure->field_0x38 = cM_rndF(1000.0f) + 500.0f;
pLure->field_0x3c = cM_rndF(1000.0f) + 500.0f;
}
+
pLure->field_0x34 += 4000;
pLure->field_0x36 += 4000;
pLure->field_0x32 = pLure->field_0x3c * cM_ssin(pLure->field_0x36);
pLure->field_0x30 = pLure->field_0x38 * cM_ssin(pLure->field_0x34);
+
cLib_addCalc0(&pLure->field_0x3c, 1.0f, 40.0f);
cLib_addCalc0(&pLure->field_0x38, 1.0f, 40.0f);
+
f32 fVar1 = 0.0f;
f32 fVar2;
if (pLure->field_0x24 != 3) {
@@ -1121,6 +1137,7 @@ static void lure_set(fshop_class* param_0) {
} else {
fVar2 = 12.0f;
}
+
mDoMtx_stack_c::transS(
pLure->field_0x00.x,
pLure->field_0x00.y + fVar1,
@@ -1135,6 +1152,7 @@ static void lure_set(fshop_class* param_0) {
mDoMtx_stack_c::scaleM(pLure->field_0x2c, pLure->field_0x2c, pLure->field_0x28);
mDoMtx_stack_c::transM(0.0f, 0.0f, 0.0f);
pLure->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
if (pLure->field_0x24 != 3) {
mDoMtx_stack_c::push();
mDoMtx_stack_c::transM(0.0f, hook_1_offy[pLure->field_0x24], 1.0f);
@@ -1150,9 +1168,10 @@ static void lure_set(fshop_class* param_0) {
}
/* 8086C9D0-8086CC30 000A50 0260+00 1/1 0/0 0/0 .text rod_set__FP11fshop_class */
-static void rod_set(fshop_class* param_0) {
- fs_rod_s* pRod = param_0->mRod;
- for (s32 i = 0; i < 3; i++, pRod++) {
+static void rod_set(fshop_class* i_this) {
+ fs_rod_s* pRod = i_this->mRod;
+
+ for (int i = 0; i < 3; i++, pRod++) {
mDoMtx_stack_c::transS(pRod->field_0x00.x, pRod->field_0x00.y, pRod->field_0x00.z);
if (i == 0) {
mDoMtx_stack_c::YrotM(-12000.0f);
@@ -1164,6 +1183,7 @@ static void rod_set(fshop_class* param_0) {
mDoMtx_stack_c::XrotM(1300);
mDoMtx_stack_c::YrotM(0);
pRod->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
cXyz* local_64 = pRod->line_mat.getPos(0);
if (pRod->field_0x4c == 0) {
mDoMtx_stack_c::transM(0.0f, 15.0f, 0.0f);
@@ -1174,11 +1194,11 @@ static void rod_set(fshop_class* param_0) {
cXyz cStack_1c;
cXyz cStack_28;
cXyz local_34;
- for (s32 local_68 = 0; local_68 < 8; local_68++) {
+ for (int j = 0; j < 8; j++) {
mDoMtx_stack_c::multVecZero(local_64);
- if (local_68 == 0) {
+ if (j == 0) {
cStack_1c = *local_64;
- } else if (local_68 == 7) {
+ } else if (j == 7) {
cStack_28 = *local_64;
}
mDoMtx_stack_c::transM(0.0f, pRod->field_0x54, 0.0f);
@@ -1187,33 +1207,35 @@ static void rod_set(fshop_class* param_0) {
static f32 guide_p[6] = {0.0f, 0.1f, 0.22f, 0.36f, 0.52f, 0.7f};
static f32 guide_s[6] = {0.5f, 0.5f, 0.55f, 0.6f, 0.65f, 0.8f};
- for (s32 local_6c = 0; local_6c < 6; local_6c++) {
- cXyz local_34 = cStack_28 + (cStack_1c - cStack_28) * guide_p[local_6c];
+ for (int j = 0; j < 6; j++) {
+ cXyz local_34 = cStack_28 + (cStack_1c - cStack_28) * guide_p[j];
mDoMtx_stack_c::transS(local_34.x, local_34.y, local_34.z);
- mDoMtx_stack_c::scaleM(guide_s[local_6c], guide_s[local_6c], guide_s[local_6c]);
+ mDoMtx_stack_c::scaleM(guide_s[j], guide_s[j], guide_s[j]);
mDoMtx_stack_c::transM(0.0f, 4.0f, 0.0f);
mDoMtx_stack_c::YrotM(0x4000);
- pRod->field_0x18[local_6c]->setBaseTRMtx(mDoMtx_stack_c::get());
+ pRod->field_0x18[j]->setBaseTRMtx(mDoMtx_stack_c::get());
}
}
}
/* 8086CC6C-8086CD70 000CEC 0104+00 1/1 0/0 0/0 .text s_fish_sub__FPvPv */
-static void* s_fish_sub(void* param_0, void* param_1) {
- fopAc_ac_c* actor = (fopAc_ac_c*)param_0;
- fs_weed_s* weed = (fs_weed_s*)param_1;
- if (fopAcM_IsActor(param_0) && fopAcM_GetName(param_0) == PROC_MG_FISH && actor->speedF > 0.1f) {
- f32 dVar9 = actor->current.pos.x - weed->field_0x00[0].x;
- f32 dVar8 = actor->current.pos.y - weed->field_0x00[0].y;
- f32 dVar10 = actor->current.pos.z - weed->field_0x00[0].z;
- f32 dVar3 = ((f32*)actor)[0x16F];
+static void* s_fish_sub(void* i_actor, void* i_data) {
+ mg_fish_class* fish = (mg_fish_class*)i_actor;
+ fs_weed_s* weed = (fs_weed_s*)i_data;
+
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_MG_FISH && fish->actor.speedF > 0.1f) {
+ f32 x_dist = fish->actor.current.pos.x - weed->field_0x00[0].x;
+ f32 y_dist = fish->actor.current.pos.y - weed->field_0x00[0].y;
+ f32 z_dist = fish->actor.current.pos.z - weed->field_0x00[0].z;
+
+ f32 dVar3 = fish->mJointScale;
if (dVar3 > 0.7f) {
dVar3 = 0.7f;
}
- if (fabsf(dVar8) < 60.0f * weed->field_0xb4 &&
- JMAFastSqrt(((dVar9 * dVar9) + (dVar10 * dVar10))) < dVar3 * 35.0f){
+
+ if (fabsf(y_dist) < 60.0f * weed->field_0xb4 && JMAFastSqrt(SQUARE(x_dist) + SQUARE(z_dist)) < dVar3 * 35.0f) {
cLib_addCalc2(&weed->field_0xb8, dVar3, 0.1f, 0.05f);
- return (fopAc_ac_c*)param_0;
+ return i_actor;
}
}
@@ -1221,132 +1243,148 @@ static void* s_fish_sub(void* param_0, void* param_1) {
}
/* 8086CD70-8086CF8C 000DF0 021C+00 1/1 0/0 0/0 .text tsubo_set__FP11fshop_class */
-static void tsubo_set(fshop_class* param_1) {
+static void tsubo_set(fshop_class* i_this) {
fopAc_ac_c* pfVar5 = dComIfGp_getPlayer(0);
- fs_tsubo_s* pTsubo = param_1->mTsubo;
+ fs_tsubo_s* pTsubo = i_this->mTsubo;
+
cXyz local_40;
s16 xrot;
s16 zrot;
- for (s32 local_48 = 0; local_48 < 2; local_48++, pTsubo++) {
+ for (int i = 0; i < 2; i++, pTsubo++) {
local_40.x = pTsubo->field_0x00.x - pfVar5->current.pos.x;
local_40.z = pTsubo->field_0x00.z - pfVar5->current.pos.z;
- if (daPy_getPlayerActorClass()->checkFrontRollCrash() &&
- JMAFastSqrt((local_40.x * local_40.x + local_40.z * local_40.z)) < 150.0f)
- {
- if (local_48 == 0) {
+ if (daPy_getPlayerActorClass()->checkFrontRollCrash() && JMAFastSqrt(SQUARE(local_40.x) + SQUARE(local_40.z)) < 150.0f) {
+ if (i == 0) {
pTsubo->field_0x1c = 1200.0f;
- pTsubo->field_0x24 = 0x708;
+ pTsubo->field_0x24 = 1800;
} else {
pTsubo->field_0x1c = 1800.0f;
- pTsubo->field_0x24 = 0xaf0;
+ pTsubo->field_0x24 = 2800;
}
pTsubo->field_0x20 = cM_rndF(65536.0f);
pTsubo->field_0x22 = cM_rndF(65536.0f);
+
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
if (henna != NULL) {
- henna->field_0x7b5 = 0x3c;
+ henna->field_0x7b5 = 60;
}
}
+
xrot = cM_ssin(pTsubo->field_0x20) * pTsubo->field_0x1c;
zrot = cM_ssin(pTsubo->field_0x22) * pTsubo->field_0x1c;
pTsubo->field_0x20 += pTsubo->field_0x24;
pTsubo->field_0x22 += pTsubo->field_0x24 + 700;
cLib_addCalcAngleS2(&pTsubo->field_0x24, 9000, 1, 200);
+
mDoMtx_stack_c::transS(pTsubo->field_0x00.x, pTsubo->field_0x00.y, pTsubo->field_0x00.z);
mDoMtx_stack_c::XrotM(xrot);
mDoMtx_stack_c::ZrotM(zrot);
mDoMtx_stack_c::scaleM(1.0f, 1.0f, 1.0f);
pTsubo->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
cLib_addCalc0(&pTsubo->field_0x1c, 1.0f, 50.0f);
}
}
/* 8086CF8C-8086D1A0 00100C 0214+00 1/1 0/0 0/0 .text weed_control__FP11fshop_classP9fs_weed_s */
-static void weed_control(fshop_class* param_1, fs_weed_s* param_2) {
- int iVar6;
+static void weed_control(fshop_class* i_this, fs_weed_s* i_weed) {
+ int i;
cXyz local_84;
cXyz local_90;
- cXyz* pfVar7 = param_2->field_0x00 + 1;
+ cXyz* pfVar7 = i_weed->field_0x00 + 1;
+
local_84.x = 0.0f;
local_84.y = 0.0f;
- local_84.z = param_2->field_0xb4 * 5.0f;
- f32 dVar11 = param_2->field_0xb8 + 0.5f;
- param_2->field_0xbc += (s16)(param_2->field_0xb8 * 600.0f + 200.0f);
- cLib_addCalc0(&param_2->field_0xb8, 0.05f, 0.02f);
- for (iVar6 = 1; iVar6 < 0xf; iVar6++, pfVar7++) {
- f32 dVar10 = dVar11 * cM_ssin(param_2->field_0xbc + iVar6 * -5000);
- f32 dVar8 = cM_ssin(param_2->field_0xbc + iVar6 * -5500);
- f32 dVar4 = dVar10 + (pfVar7[0].x - pfVar7[0 - 1].x);
- f32 dVar12 = (pfVar7[0].y - pfVar7[0 - 1].y) + 3.0f;
- f32 dVar6 = dVar11 * dVar8 + (pfVar7[0].z - pfVar7[0 - 1].z);
- mDoMtx_XrotS((MtxP)calc_mtx, -cM_atan2s(dVar12, dVar6));
- mDoMtx_YrotM((MtxP)calc_mtx, (s32)cM_atan2s(dVar4, JMAFastSqrt(dVar12 * dVar12 + dVar6 * dVar6)));
+ local_84.z = i_weed->field_0xb4 * 5.0f;
+
+ f32 dVar11 = i_weed->field_0xb8 + 0.5f;
+ i_weed->field_0xbc += (s16)(i_weed->field_0xb8 * 600.0f + 200.0f);
+ cLib_addCalc0(&i_weed->field_0xb8, 0.05f, 0.02f);
+
+ for (i = 1; i < 15; i++, pfVar7++) {
+ f32 dVar10 = dVar11 * cM_ssin(i_weed->field_0xbc + i * -5000);
+ f32 dVar8 = cM_ssin(i_weed->field_0xbc + i * -5500);
+ f32 dVar4 = dVar10 + (pfVar7[0].x - pfVar7[-1].x);
+ f32 dVar12 = (pfVar7[0].y - pfVar7[-1].y) + 3.0f;
+ f32 dVar6 = dVar11 * dVar8 + (pfVar7[0].z - pfVar7[-1].z);
+ cMtx_XrotS(*calc_mtx, -cM_atan2s(dVar12, dVar6));
+ cMtx_YrotM(*calc_mtx, (s16)cM_atan2s(dVar4, JMAFastSqrt(SQUARE(dVar12) + SQUARE(dVar6))));
MtxPosition(&local_84, &local_90);
- pfVar7[0].x = pfVar7[0 - 1].x + local_90.x;
- pfVar7[0].y = pfVar7[0 - 1].y + local_90.y;
- pfVar7[0].z = pfVar7[0 - 1].z + local_90.z;
+
+ pfVar7[0].x = pfVar7[-1].x + local_90.x;
+ pfVar7[0].y = pfVar7[-1].y + local_90.y;
+ pfVar7[0].z = pfVar7[-1].z + local_90.z;
}
}
/* 8086D1A0-8086D1EC 001220 004C+00 1/1 0/0 0/0 .text stage_copy__FP11fshop_classP11fshop_class */
-static void stage_copy(fshop_class* param_0, fshop_class* param_1) {
- param_0->field_0x4014 = param_1->field_0x4014;
- param_0->field_0x4020 = param_1->field_0x4020;
- param_0->scale = param_1->scale;
+static void stage_copy(fshop_class* i_dst, fshop_class* i_src) {
+ i_dst->field_0x4014 = i_src->field_0x4014;
+ i_dst->field_0x4020 = i_src->field_0x4020;
+ i_dst->actor.scale = i_src->actor.scale;
}
/* 8086D1EC-8086D48C 00126C 02A0+00 1/1 0/0 0/0 .text koro2_mtx_set__FP11fshop_class */
-// NONMATCHING float load order
-static void koro2_mtx_set(fshop_class* param_1) {
+static void koro2_mtx_set(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+
cXyz cStack_44;
cXyz cStack_50;
- if (param_1->field_0x400d) {
+ if (i_this->field_0x400d) {
mDoMtx_stack_c::transS(0.0f, -10000.0f, 0.0f);
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x4030);
- param_1->field_0x402c->Move();
- for (int local_58 = 0; local_58 < 100; local_58++) {
- fs_koro2_s* pmVar4 = &param_1->mKoro2[local_58];
- if (param_1->mKoro2[local_58].mpModel != NULL) {
- MTXCopy(mDoMtx_stack_c::get(), param_1->mKoro2[local_58].field_0x04);
- param_1->mKoro2[local_58].mpBgW->Move();
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x4030);
+ i_this->field_0x402c->Move();
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mKoro2[i].field_0x04);
+ i_this->mKoro2[i].mpBgW->Move();
}
}
} else {
- mDoMtx_stack_c::transS(param_1->field_0x4014.x, param_1->field_0x4014.y, param_1->field_0x4014.z);
- mDoMtx_stack_c::YrotM(param_1->field_0x4020.y);
- mDoMtx_stack_c::XrotM(param_1->field_0x4020.x);
- mDoMtx_stack_c::ZrotM(param_1->field_0x4020.z);
- mDoMtx_stack_c::scaleM(param_1->scale.x, param_1->scale.x, param_1->scale.x);
+ mDoMtx_stack_c::transS(i_this->field_0x4014.x, i_this->field_0x4014.y, i_this->field_0x4014.z);
+ mDoMtx_stack_c::YrotM(i_this->field_0x4020.y);
+ mDoMtx_stack_c::XrotM(i_this->field_0x4020.x);
+ mDoMtx_stack_c::ZrotM(i_this->field_0x4020.z);
+ mDoMtx_stack_c::scaleM(actor->scale.x, actor->scale.x, actor->scale.x);
mDoMtx_stack_c::push();
mDoMtx_stack_c::scaleM(0.01f, 0.01f, 0.01f);
- param_1->mpA_crwaku_model->setBaseTRMtx(mDoMtx_stack_c::get());
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x4030);
- param_1->field_0x402c->Move();
+ i_this->mpA_crwaku_model->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x4030);
+
+ i_this->field_0x402c->Move();
mDoMtx_stack_c::pop();
- for (int iVar8 = 0; iVar8 < 100; iVar8++) {
- if (param_1->mKoro2[iVar8].mpModel != NULL) {
+
+ f32 var_f31 = VREG_F(2) + -10.0f;
+ f32 var_f30 = VREG_F(4) + -18.0f;
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
mDoMtx_stack_c::push();
- mDoMtx_stack_c::transM(param_1->mKoro2[iVar8].field_0x38.x + -10.0f,
- param_1->mKoro2[iVar8].field_0x38.y,
- param_1->mKoro2[iVar8].field_0x38.z + -18.0f);
- mDoMtx_stack_c::YrotM(param_1->mKoro2[iVar8].field_0x50);
- mDoMtx_stack_c::scaleM(param_1->mKoro2[iVar8].field_0x44.x,
- param_1->mKoro2[iVar8].field_0x44.y,
- param_1->mKoro2[iVar8].field_0x44.z);
+ mDoMtx_stack_c::transM(i_this->mKoro2[i].field_0x38.x + var_f31,
+ i_this->mKoro2[i].field_0x38.y,
+ i_this->mKoro2[i].field_0x38.z + var_f30);
+ mDoMtx_stack_c::YrotM(i_this->mKoro2[i].field_0x50);
+ mDoMtx_stack_c::scaleM(i_this->mKoro2[i].field_0x44.x,
+ i_this->mKoro2[i].field_0x44.y,
+ i_this->mKoro2[i].field_0x44.z);
mDoMtx_stack_c::push();
mDoMtx_stack_c::scaleM(0.01f, 0.01f, 0.01f);
- param_1->mKoro2[iVar8].mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
- MTXCopy(mDoMtx_stack_c::get(), param_1->mKoro2[iVar8].field_0x04);
- param_1->mKoro2[iVar8].mpBgW->Move();
+ i_this->mKoro2[i].mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mKoro2[i].field_0x04);
+
+ i_this->mKoro2[i].mpBgW->Move();
mDoMtx_stack_c::pop();
- mDoMtx_stack_c::multVecZero(&param_1->mKoro2[iVar8].field_0x54);
- if (param_1->mKoro2[iVar8].field_0x34 == 6) {
+ mDoMtx_stack_c::multVecZero(&i_this->mKoro2[i].field_0x54);
+
+ if (i_this->mKoro2[i].field_0x34 == 6) {
cStack_44.set(0.0f, 0.0f, 2.5f);
mDoMtx_stack_c::multVec(&cStack_44, &BallStartPos);
- } else if (param_1->mKoro2[iVar8].field_0x34 == 7) {
+ } else if (i_this->mKoro2[i].field_0x34 == 7) {
cStack_44.set(0.0f, 0.0f, -2.0f);
mDoMtx_stack_c::multVec(&cStack_44, &BallEndPos);
}
+
mDoMtx_stack_c::pop();
}
}
@@ -1354,12 +1392,10 @@ static void koro2_mtx_set(fshop_class* param_1) {
}
/* 8086D48C-8086D500 00150C 0074+00 1/1 0/0 0/0 .text s_sel_sub__FPvPv */
-static void* s_sel_sub(void* param_1, void* param_2) {
- if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_FSHOP) {
- u8 uVar1 = ((fshop_class*)param_1)->field_0x400e;
- u8 uVar2 = (((fshop_class*)param_2)->field_0x400c & 7) + 1;
- if (uVar1 == uVar2) {
- return param_1;
+static void* s_sel_sub(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_FSHOP) {
+ if (((fshop_class*)i_actor)->field_0x400e == (u8)((((fshop_class*)i_data)->field_0x400c & 7) + 1)) {
+ return i_actor;
}
}
@@ -1367,10 +1403,9 @@ static void* s_sel_sub(void* param_1, void* param_2) {
}
/* 8086D500-8086D55C 001580 005C+00 1/1 0/0 0/0 .text s_ball_sub__FPvPv */
-static void* s_ball_sub(void* param_1, void* param_2) {
- if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_FSHOP &&
- (u8)fopAcM_GetParam(param_1) == 0x23) {
- return param_1;
+static void* s_ball_sub(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_FSHOP && (fopAcM_GetParam(i_actor) & 0xFF) == 0x23) {
+ return i_actor;
}
return NULL;
@@ -1378,9 +1413,11 @@ static void* s_ball_sub(void* param_1, void* param_2) {
/* 8086D55C-8086D854 0015DC 02F8+00 1/1 0/0 0/0 .text koro2_game__FP11fshop_class */
static void koro2_game(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+
cXyz sp5C;
cXyz sp68;
- i_this->scale.x = 1.0f;
+ actor->scale.x = 1.0f;
switch (i_this->field_0x4010) {
case 0:
@@ -1399,7 +1436,7 @@ static void koro2_game(fshop_class* i_this) {
cLib_addCalcAngleS2(&i_this->field_0x4020.x, 0, 2, 0x200);
cLib_addCalcAngleS2(&i_this->field_0x4020.z, 0, 2, 0x200);
case 2:
- i_this->scale.x = 10.0f;
+ actor->scale.x = 10.0f;
if (i_this->field_0x4010 == 2) {
static f32 old_stick_x = 0.0f;
@@ -1460,151 +1497,165 @@ static void koro2_game(fshop_class* i_this) {
}
}
-/* 80870AC4-80870AC8 000174 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80870AC4[4];
-
/* 8086D854-8086DA00 0018D4 01AC+00 1/1 0/0 0/0 .text ball_wall_check__FP11fshop_class */
-static int ball_wall_check(fshop_class* param_1) {
- if (!param_1->field_0x40b4.ChkWallHit()) {
+static int ball_wall_check(fshop_class* i_this) {
+ if (!i_this->field_0x40b4.ChkWallHit()) {
return 0;
}
- fopAc_ac_c* actor = param_1;
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
dBgS_LinChk adStack_88;
cXyz cStack_94;
cXyz cStack_a0;
cXyz local_ac;
local_ac.y = 0.0f;
+
cStack_94 = actor->current.pos;
- cStack_94.y +=5.0f;
- for (int iVar1 = 0; iVar1 < 4; iVar1++) {
+ cStack_94.y += nREG_F(7) + 5.0f;
+
+ for (int i = 0; i < 4; i++) {
static f32 c_x[4] = {14.0f, -14.0f, 0.0f, 0.0f};
static f32 c_z[4] = {0.0f, 0.0f, 14.0f, -14.0f};
- local_ac.x = c_x[iVar1];
- local_ac.z = c_z[iVar1];
+ local_ac.x = c_x[i];
+ local_ac.z = c_z[i];
cStack_a0 = cStack_94 + local_ac;
+
adStack_88.Set(&cStack_94, &cStack_a0, actor);
if (dComIfG_Bgsp().LineCross(&adStack_88)) {
- if ((iVar1 == 0 && actor->speed.x > 0.0f) ||
- (iVar1 == 1 && actor->speed.x < 0.0f))
+ if ((i == 0 && actor->speed.x > 0.0f) ||
+ (i == 1 && actor->speed.x < 0.0f))
{
actor->speed.x = 0.0f;
}
- if ((iVar1 == 2 && actor->speed.z > 0.0f) ||
- (iVar1 == 3 && actor->speed.z < 0.0f))
+
+ if ((i == 2 && actor->speed.z > 0.0f) ||
+ (i == 3 && actor->speed.z < 0.0f))
{
actor->speed.z = 0.0f;
}
}
}
+
return 0;
}
/* 8086DA00-8086E6C4 001A80 0CC4+00 2/1 0/0 0/0 .text daFshop_Execute__FP11fshop_class */
-static int daFshop_Execute(fshop_class* param_1) {
+static int daFshop_Execute(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
fopAc_ac_c* pPlayer = dComIfGp_getPlayer(0);
cXyz local_c0;
- param_1->field_0x0570++;
- if (param_1->field_0x400e != 0) {
- if (param_1->field_0x428d != 0) {
- param_1->field_0x428d--;
+
+ i_this->field_0x0570++;
+
+ if (i_this->field_0x400e != 0) {
+ if (i_this->field_0x428d != 0) {
+ i_this->field_0x428d--;
}
- koro2_mtx_set(param_1);
+
+ koro2_mtx_set(i_this);
return 1;
}
- if (param_1->field_0x4070 != NULL) {
- param_1->scale.x = 0.024f;
+
+ if (i_this->field_0x4070 != NULL) {
+ actor->scale.x = 0.024f;
cXyz local_cc;
cXyz local_d8;
BOOL bVar5 = FALSE;
- if (param_1->field_0x428d != 0) {
- param_1->field_0x428d--;
+
+ if (i_this->field_0x428d != 0) {
+ i_this->field_0x428d--;
}
- switch (param_1->field_0x0572) {
+
+ switch (i_this->field_0x0572) {
case 0:
- param_1->current.pos = BallStartPos;
- param_1->current.pos.y += 4.0f;
- param_1->old.pos = param_1->current.pos;
- param_1->field_0x428d = 10;
+ actor->current.pos = BallStartPos;
+ actor->current.pos.y += 4.0f;
+ actor->old.pos = actor->current.pos;
+ i_this->field_0x428d = 10;
break;
case 1:
- param_1->current.pos = BallStartPos;
- param_1->current.pos.y += 4.0f;
- param_1->old.pos = param_1->current.pos;
- param_1->speed.zero();
- param_1->field_0x0572++;
- param_1->field_0x428c = 3;
- param_1->field_0x567 = 0;
- param_1->field_0x428d = 10;
+ actor->current.pos = BallStartPos;
+ actor->current.pos.y += 4.0f;
+ actor->old.pos = actor->current.pos;
+ actor->speed.zero();
+
+ i_this->field_0x0572++;
+ i_this->field_0x428c = 3;
+ actor->field_0x567 = 0;
+ i_this->field_0x428d = 10;
case 2:
bVar5 = TRUE;
- param_1->scale.x = 0.24000001f;
+ actor->scale.x = 0.24000001f;
break;
}
if (bVar5) {
- cMtx_YrotS((MtxP)calc_mtx, param_1->field_0x4020.y);
- cMtx_XrotM((MtxP)calc_mtx, param_1->field_0x4020.x);
- cMtx_ZrotM((MtxP)calc_mtx, param_1->field_0x4020.z);
- MtxPosition(&param_1->speed, &param_1->field_0x4064);
- param_1->field_0x4064 = param_1->speed;
- param_1->current.pos += param_1->field_0x4064;
- if (param_1->speed.x || param_1->speed.z) {
- param_1->current.angle.y = cM_atan2s(param_1->speed.x, param_1->speed.z);
+ cMtx_YrotS(*calc_mtx, i_this->field_0x4020.y);
+ cMtx_XrotM(*calc_mtx, i_this->field_0x4020.x);
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x4020.z);
+ MtxPosition(&actor->speed, &i_this->field_0x4064);
+ i_this->field_0x4064 = actor->speed;
+ actor->current.pos += i_this->field_0x4064;
+
+ if (actor->speed.x || actor->speed.z) {
+ actor->current.angle.y = cM_atan2s(actor->speed.x, actor->speed.z);
}
- param_1->speed.y -= 3.5f;
- if (param_1->speed.y <= -15.0f) {
- param_1->speed.y = -15.0f;
+
+ actor->speed.y -= 3.5f;
+ if (actor->speed.y <= -15.0f) {
+ actor->speed.y = -15.0f;
}
- param_1->field_0x40b4.m_gnd.OffWall();
- param_1->field_0x40b4.CrrPos(dComIfG_Bgsp());
- ball_wall_check(param_1);
- fshop_class* iVar6 = param_1->field_0x4008;
- for (int local_124 = 0; local_124 < 100; local_124++) {
- if (iVar6->mKoro2[local_124].mpModel != NULL) {
- local_cc.x = iVar6->mKoro2[local_124].field_0x54.x - param_1->current.pos.x;
- local_cc.z = iVar6->mKoro2[local_124].field_0x54.z - param_1->current.pos.z;
+
+ i_this->field_0x40b4.m_gnd.OffWall();
+ i_this->field_0x40b4.CrrPos(dComIfG_Bgsp());
+ ball_wall_check(i_this);
+
+ fshop_class* iVar6 = i_this->field_0x4008;
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL) {
+ local_cc.x = iVar6->mKoro2[i].field_0x54.x - actor->current.pos.x;
+ local_cc.z = iVar6->mKoro2[i].field_0x54.z - actor->current.pos.z;
if (JMAFastSqrt(local_cc.x * local_cc.x + local_cc.z * local_cc.z) < 40.0f) {
- iVar6->mKoro2[local_124].field_0x60 = 0;
+ iVar6->mKoro2[i].field_0x60 = 0;
}
}
}
- if (param_1->current.pos.y < -2500.0f) {
- param_1->field_0x567 = 1;
+
+ if (actor->current.pos.y < -2500.0f) {
+ actor->field_0x567 = 1;
}
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
- if (henna != NULL && henna->field_0x7b9 != 0 &&
- (param_1->field_0x567 == 1 || dTimer_getRestTimeMs() == 0))
- {
+ if (henna != NULL && henna->field_0x7b9 != 0 && (actor->field_0x567 == 1 || dTimer_getRestTimeMs() == 0)) {
BOOL bVar5 = FALSE;
- for (int local_130 = 0; local_130 < 100; local_130++) {
- if (iVar6->mKoro2[local_130].mpModel != NULL && iVar6->mKoro2[local_130].field_0x60) {
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL && iVar6->mKoro2[i].field_0x60) {
bVar5 = TRUE;
break;
}
}
+
if (!bVar5) {
henna->actor.health = 1;
- } else if (param_1->field_0x567 == 1) {
+ } else if (actor->field_0x567 == 1) {
henna->actor.health = 0;
} else {
henna->actor.health = 2;
}
- henna->cam_mode = 0x49;
+ henna->cam_mode = 73;
henna->field_0x754 = 0;
henna->field_0x7b9 = 0;
- param_1->field_0x567 = 2;
+ actor->field_0x567 = 2;
} else {
- if (param_1->field_0x567 == 0) {
- local_cc = BallEndPos - param_1->current.pos;
+ if (actor->field_0x567 == 0) {
+ local_cc = BallEndPos - actor->current.pos;
if (local_cc.abs() < 65.0f) {
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
if (henna != NULL) {
BOOL bVar5 = FALSE;
- for (int local_13c = 0; local_13c < 100; local_13c++) {
- if (iVar6->mKoro2[local_13c].mpModel != NULL && iVar6->mKoro2[local_13c].field_0x60) {
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL && iVar6->mKoro2[i].field_0x60) {
bVar5 = TRUE;
break;
}
@@ -1612,601 +1663,734 @@ static int daFshop_Execute(fshop_class* param_1) {
if (bVar5) {
henna->actor.health = 3;
- henna->cam_mode = 0x49;
+ henna->cam_mode = 73;
} else {
- henna->cam_mode = 0x4c;
+ henna->cam_mode = 76;
}
+
henna->field_0x754 = 0;
henna->field_0x7b9 = 0;
- param_1->field_0x567 = 2;
+ actor->field_0x567 = 2;
}
}
}
}
- if (param_1->field_0x40b4.ChkGroundHit()) {
- if (param_1->field_0x428c == 0) {
- param_1->speed.y = 7.0f;
- } else if (param_1->field_0x428c == 1) {
- param_1->speed.y = 2.5f;
- } else if (param_1->field_0x428c == 2) {
- param_1->speed.y = 1.0f;
+
+ if (i_this->field_0x40b4.ChkGroundHit()) {
+ if (i_this->field_0x428c == 0) {
+ actor->speed.y = 7.0f;
+ } else if (i_this->field_0x428c == 1) {
+ actor->speed.y = 2.5f;
+ } else if (i_this->field_0x428c == 2) {
+ actor->speed.y = 1.0f;
} else {
- param_1->speed.y = -5.0f;
- param_1->field_0x428c = 2;
+ actor->speed.y = -5.0f;
+ i_this->field_0x428c = 2;
}
- param_1->field_0x428c++;
+
+ i_this->field_0x428c++;
+
dBgS_GndChk adStack_b4;
- cXyz local_e4 = param_1->current.pos;
+ cXyz local_e4 = actor->current.pos;
local_e4.y += 10.0f;
local_e4.z += 1.0f;
adStack_b4.SetPos(&local_e4);
local_e4.y = dComIfG_Bgsp().GroundCross(&adStack_b4);
- s16 local_160 = -cM_atan2s(local_e4.y - param_1->current.pos.y,
- local_e4.z - param_1->current.pos.z);
+ s16 local_160 = -cM_atan2s(local_e4.y - actor->current.pos.y,
+ local_e4.z - actor->current.pos.z);
if (local_160 > 0x3000) {
local_160 = 0x3000;
} else if (local_160 < -0x3000) {
local_160 = -0x3000;
}
- local_e4 = param_1->current.pos;
+ local_e4 = actor->current.pos;
local_e4.y += 10.0f;
local_e4.x += 1.0f;
adStack_b4.SetPos(&local_e4);
local_e4.y = dComIfG_Bgsp().GroundCross(&adStack_b4);
- s16 local_162 = (s16)cM_atan2s(local_e4.y - param_1->current.pos.y,
- local_e4.x - param_1->current.pos.x);
+ s16 local_162 = (s16)cM_atan2s(local_e4.y - actor->current.pos.y,
+ local_e4.x - actor->current.pos.x);
if (local_162 > 0x3000) {
local_162 = 0x3000;
} else if (local_162 < -0x3000) {
local_162 = -0x3000;
}
- cMtx_XrotS((MtxP)calc_mtx, local_160);
- cMtx_ZrotM((MtxP)calc_mtx, local_162);
+
+ cMtx_XrotS(*calc_mtx, local_160);
+ cMtx_ZrotM(*calc_mtx, local_162);
local_cc.x = 0.0f;
local_cc.y = 30.0f;
local_cc.z = 0.0f;
MtxPosition(&local_cc, &local_d8);
- cLib_addCalc2(&param_1->speed.x, local_d8.x, 0.05f,
- (fabsf(local_d8.x) * 0.1f + 0.2f));
- cLib_addCalc2(&param_1->speed.z, local_d8.z, 0.05f,
- (fabsf(local_d8.z) * 0.1f + 0.2f));
+
+ cLib_addCalc2(&actor->speed.x, local_d8.x, 0.05f, fabsf(local_d8.x) * 0.1f + 0.2f);
+ cLib_addCalc2(&actor->speed.z, local_d8.z, 0.05f, fabsf(local_d8.z) * 0.1f + 0.2f);
}
}
camera_class* pmVar11 = (camera_class*)dComIfGp_getCamera(0);
- mDoMtx_stack_c::transS(param_1->current.pos.x, param_1->current.pos.y,
- param_1->current.pos.z);
- mDoMtx_stack_c::scaleM(param_1->scale.x, param_1->scale.x,
- param_1->scale.x);
- mDoMtx_stack_c::transM(0.0f, 190.0f * param_1->scale.x, 0.0f);
- local_cc = pmVar11->lookat.eye - param_1->current.pos;
+ mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y,
+ actor->current.pos.z);
+ mDoMtx_stack_c::scaleM(actor->scale.x, actor->scale.x,
+ actor->scale.x);
+ mDoMtx_stack_c::transM(0.0f, 190.0f * actor->scale.x, 0.0f);
+ local_cc = pmVar11->lookat.eye - actor->current.pos;
mDoMtx_stack_c::YrotM(cM_atan2s(local_cc.x, local_cc.z));
mDoMtx_stack_c::XrotM(-cM_atan2s(local_cc.y, JMAFastSqrt((local_cc.x * local_cc.x + local_cc.z * local_cc.z))));
- param_1->field_0x4070->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->field_0x4070->setBaseTRMtx(mDoMtx_stack_c::get());
return 1;
} else {
- lure_set(param_1);
- rod_set(param_1);
- tsubo_set(param_1);
- fs_weed_s* pWeed = param_1->mWeed;
- for (s32 local_14c = 0; local_14c < 60; local_14c++, pWeed++) {
- weed_control(param_1, pWeed);
- cXyz* local_148 = param_1->field_0x3f88.getPos(local_14c);
- for (s32 local_150 = 0; local_150 < 15; local_150++, local_148++) {
+ lure_set(i_this);
+ rod_set(i_this);
+ tsubo_set(i_this);
+
+ fs_weed_s* pWeed = i_this->mWeed;
+ for (int i = 0; i < 60; i++, pWeed++) {
+ weed_control(i_this, pWeed);
+ cXyz* local_148 = i_this->field_0x3f88.getPos(i);
+ for (int local_150 = 0; local_150 < 15; local_150++, local_148++) {
*local_148 = pWeed->field_0x00[local_150];
}
fpcM_Search(s_fish_sub, pWeed);
}
+
cXyz cStack_f0(-720.0f, 30.0f, 70.0f);
cXyz cStack_fc(0.5f, 0.5f, 0.5f);
- for (int local_154 = 0; local_154 < 2; local_154++) {
- if (local_154 == 0) {
+ for (int i = 0; i < 2; i++) {
+ if (i == 0) {
cStack_f0.z = -30.0f;
} else {
cStack_f0.z = 220.0f;
}
- param_1->field_0x6b6c[local_154] = dComIfGp_particle_set(
- param_1->field_0x6b6c[local_154], 0x1e8, &cStack_f0, 0, &cStack_fc);
+
+ i_this->field_0x6b6c[i] = dComIfGp_particle_set(i_this->field_0x6b6c[i], ID_ZI_J_LK_ABUKU_A, &cStack_f0, 0, &cStack_fc);
}
+
if (daPy_getPlayerActorClass()->checkFrontRollCrash()) {
- param_1->field_0x6b34 = 0x1e;
+ i_this->field_0x6b34 = 30;
}
- s16 iVar6 = param_1->field_0x6b34 * cM_ssin(param_1->field_0x6b34 * 5000) * 30.0f;
- if (param_1->field_0x6b34 != 0) {
- param_1->field_0x6b34--;
+
+ s16 iVar6 = i_this->field_0x6b34 * cM_ssin(i_this->field_0x6b34 * 5000) * 30.0f;
+ if (i_this->field_0x6b34 != 0) {
+ i_this->field_0x6b34--;
}
+
mDoMtx_stack_c::transS(-450.0f, 25.0f, -250.0f);
mDoMtx_stack_c::YrotM(0x4000);
mDoMtx_stack_c::ZrotM(iVar6 + 2000);
- param_1->field_0x6b30->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->field_0x6b30->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::transS(-450.0f, 0.0f, -250.0f);
mDoMtx_stack_c::scaleM(4.0f, 1.5f, 1.0f);
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x6b38);
- param_1->field_0x6b68->Move();
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x6b38);
+
+ i_this->field_0x6b68->Move();
+
local_c0.x = 325.0f - pPlayer->current.pos.x;
local_c0.z = 237.0f - pPlayer->current.pos.z;
- if (daPy_getPlayerActorClass()->checkFrontRollCrash() &&
- JMAFastSqrt((local_c0.x * local_c0.x + local_c0.z * local_c0.z)) < 150.0f)
- {
- param_1->field_0x3ff8 = cM_rndF(65536.0f);
- param_1->field_0x3ffa = cM_rndF(65536.0f);
- param_1->field_0x3ffc = cM_rndF(600.0f) + 1300.0f;
- param_1->field_0x4000 = cM_rndF(600.0f) + 1300.0f;
+ if (daPy_getPlayerActorClass()->checkFrontRollCrash() && JMAFastSqrt(SQUARE(local_c0.x) + SQUARE(local_c0.z)) < 150.0f) {
+ i_this->field_0x3ff8 = cM_rndF(65536.0f);
+ i_this->field_0x3ffa = cM_rndF(65536.0f);
+ i_this->field_0x3ffc = cM_rndF(600.0f) + 1300.0f;
+ i_this->field_0x4000 = cM_rndF(600.0f) + 1300.0f;
}
- param_1->field_0x3ff8 += 4000;
- param_1->field_0x3ffa += 4000;
- s16 iVar10 = param_1->field_0x4000 * cM_ssin(param_1->field_0x3ffa);
- s16 iVar11 = param_1->field_0x3ffc * cM_ssin(param_1->field_0x3ff8);
- cLib_addCalc0(&param_1->field_0x3ffc, 1.0f, 40.0f);
- cLib_addCalc0(&param_1->field_0x4000, 1.0f, 40.0f);
+
+ i_this->field_0x3ff8 += 4000;
+ i_this->field_0x3ffa += 4000;
+ s16 iVar10 = i_this->field_0x4000 * cM_ssin(i_this->field_0x3ffa);
+ s16 iVar11 = i_this->field_0x3ffc * cM_ssin(i_this->field_0x3ff8);
+ cLib_addCalc0(&i_this->field_0x3ffc, 1.0f, 40.0f);
+ cLib_addCalc0(&i_this->field_0x4000, 1.0f, 40.0f);
+
mDoMtx_stack_c::transS(325.0f, 140.0f, 237.0f);
mDoMtx_stack_c::XrotM((s16)iVar10);
mDoMtx_stack_c::ZrotM(iVar11 + 15000);
mDoMtx_stack_c::transM(-10.0f, -7.0f, 0.0f);
- param_1->field_0x3ff4->setBaseTRMtx(mDoMtx_stack_c::get());
- koro2_game(param_1);
+ i_this->field_0x3ff4->setBaseTRMtx(mDoMtx_stack_c::get());
+
+ koro2_game(i_this);
}
+
return 1;
}
/* 8086E6C4-8086E6CC 002744 0008+00 1/0 0/0 0/0 .text daFshop_IsDelete__FP11fshop_class
*/
-static int daFshop_IsDelete(fshop_class* param_0) {
+static int daFshop_IsDelete(fshop_class* i_this) {
return 1;
}
/* 8086E6CC-8086E7F0 00274C 0124+00 1/0 0/0 0/0 .text daFshop_Delete__FP11fshop_class */
-static int daFshop_Delete(fshop_class* param_1) {
- fopAcM_GetID(param_1);
- if (param_1->field_0x6b7c != 0) {
+static int daFshop_Delete(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+ fopAcM_GetID(i_this);
+
+ if (i_this->field_0x6b7c != 0) {
J3DModelData* pModelData = (J3DModelData*) dComIfG_getObjectRes("Fshop", 5);
- dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(param_1));
+ dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(actor));
pModelData = (J3DModelData*) dComIfG_getObjectRes("Fshop", 6);
- dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(param_1));
+ dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(actor));
}
- dComIfG_resDelete(&param_1->mPhase, "Fshop");
- dComIfG_Bgsp().Release(param_1->field_0x6b68);
- if (param_1->field_0x400e != 0) {
- dComIfG_Bgsp().Release(param_1->field_0x402c);
+
+ dComIfG_resDelete(&i_this->mPhase, "Fshop");
+ dComIfG_Bgsp().Release(i_this->field_0x6b68);
+
+ if (i_this->field_0x400e != 0) {
+ dComIfG_Bgsp().Release(i_this->field_0x402c);
for (int i = 0; i < 100; i++) {
- if (param_1->mKoro2[i].mpBgW != NULL) {
- dComIfG_Bgsp().Release(param_1->mKoro2[i].mpBgW);
+ if (i_this->mKoro2[i].mpBgW != NULL) {
+ dComIfG_Bgsp().Release(i_this->mKoro2[i].mpBgW);
}
}
}
+
return 1;
}
/* 8086E7F0-8086ECC8 002870 04D8+00 1/1 0/0 0/0 .text koro2_heapinit__FP10fopAc_ac_c */
-// NONMATCHING mapPtr definition and stack issue
-static int koro2_heapinit(fopAc_ac_c* param_1) {
- static s32 koro2_bmd[15] = {
+static int koro2_heapinit(fopAc_ac_c* actor) {
+ static int koro2_bmd[15] = {
0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0F, 0x0D, 0x0C,
0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E,
};
+
static u32 koro2_dzb[15] = {
0x1F, 0x20, 0x20, 0x20, 0x20, 0x24, 0x22, 0x21,
0x21, 0x21, 0x21, 0x23, 0x23, 0x23, 0x23,
};
+
static u8 pande_d[16] = {
0x00, 0x01, 0x03, 0x02, 0x05, 0x04, 0x06, 0x07,
0x09, 0x08, 0x0B, 0x0A, 0x0C, 0x0D, 0x0F, 0x0E,
};
- fshop_class* pShop = (fshop_class*) param_1;
- pShop->field_0x402c = new dBgW();
- if (pShop->field_0x402c == NULL) {
+ fshop_class* i_this = (fshop_class*)actor;
+
+ i_this->field_0x402c = new dBgW();
+ if (i_this->field_0x402c == NULL) {
return 0;
}
- cBgD_t* pcVar3 = (cBgD_t*)dComIfG_getObjectRes("Fshop", 37);
- if (pShop->field_0x402c->Set(pcVar3, 1, &pShop->field_0x4030) == 1) {
+
+ cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Fshop", 37);
+ if (i_this->field_0x402c->Set(dzb, 1, &i_this->field_0x4030) == 1) {
return 0;
}
- pShop->field_0x402c->SetCrrFunc(dBgS_MoveBGProc_Typical);
- pShop->field_0x402c->SetRideCallback(ride_call_back);
- pShop->mpA_crwaku_model = ArcIX_A_crwaku_model[0];
- int local_30 = 0;
- int flag567 = pShop->field_0x567 & 8;
+ i_this->field_0x402c->SetCrrFunc(dBgS_MoveBGProc_Typical);
+ i_this->field_0x402c->SetRideCallback(ride_call_back);
+ i_this->mpA_crwaku_model = ArcIX_A_crwaku_model[0];
+
+ int part_no = 0;
+ int flag567 = actor->field_0x567 & 8;
int r29 = 0;
int r28 = 0;
int r30 = 0;
int r27 = 0;
int r26 = 0;
int r25 = 0;
- s8* mapPtr = koro2_map_d[pShop->field_0x567 & 7];
- for (int local_5c = 0; local_5c < 9; local_5c++) {
+ s8* mapData = koro2_map_d[actor->field_0x567 & 7];
+
+ for (int i = 0; i < 9; i++) {
for (int local_60 = 0; local_60 < 15; local_60++) {
- int index = local_60 * 9 + local_5c;
- if (mapPtr[index] != 0) {
+ int index = local_60 * 9 + i;
+ if (mapData[index] != 0) {
if (flag567 != 0) {
- pShop->mKoro2[local_30].field_0x34 = pande_d[mapPtr[index]];
- pShop->mKoro2[local_30].field_0x38.x = 2.5f * (8 - local_5c);
+ i_this->mKoro2[part_no].field_0x34 = pande_d[mapData[index]];
+ i_this->mKoro2[part_no].field_0x38.x = 2.5f * (8 - i);
} else {
- pShop->mKoro2[local_30].field_0x34 = mapPtr[index];
- pShop->mKoro2[local_30].field_0x38.x = 2.5f * local_5c;
+ i_this->mKoro2[part_no].field_0x34 = mapData[index];
+ i_this->mKoro2[part_no].field_0x38.x = 2.5f * i;
}
- pShop->mKoro2[local_30].field_0x38.y = 2.0f;
- pShop->mKoro2[local_30].field_0x38.z = 2.5f * local_60;
- if (pShop->mKoro2[local_30].field_0x34 == 6) {
- pShop->mKoro2[local_30].field_0x38.z -= 2.5f;
- } else if (pShop->mKoro2[local_30].field_0x34 == 8) {
- pShop->mKoro2[local_30].field_0x38.z -= 2.5f;
- pShop->mKoro2[local_30].field_0x38.x -= 2.5f;
- } else if (pShop->mKoro2[local_30].field_0x34 == 11) {
- pShop->mKoro2[local_30].field_0x38.z += 2.5f;
- pShop->mKoro2[local_30].field_0x38.x += 2.5f;
+
+ i_this->mKoro2[part_no].field_0x38.y = 2.0f;
+ i_this->mKoro2[part_no].field_0x38.z = 2.5f * local_60;
+
+ if (i_this->mKoro2[part_no].field_0x34 == 6) {
+ i_this->mKoro2[part_no].field_0x38.z -= 2.5f;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 8) {
+ i_this->mKoro2[part_no].field_0x38.z -= 2.5f;
+ i_this->mKoro2[part_no].field_0x38.x -= 2.5f;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 11) {
+ i_this->mKoro2[part_no].field_0x38.z += 2.5f;
+ i_this->mKoro2[part_no].field_0x38.x += 2.5f;
}
- pShop->mKoro2[local_30].field_0x44.set(2.5f, 2.5f, 2.5f);
- if (pShop->mKoro2[local_30].field_0x34 == 2 ||
- pShop->mKoro2[local_30].field_0x34 == 8)
- {
- pShop->mKoro2[local_30].field_0x50 = -16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 4 ||
- pShop->mKoro2[local_30].field_0x34 == 10)
- {
- pShop->mKoro2[local_30].field_0x50 = -32768;
- } else if (pShop->mKoro2[local_30].field_0x34 == 5 ||
- pShop->mKoro2[local_30].field_0x34 == 11)
- {
- pShop->mKoro2[local_30].field_0x50 = 16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 12) {
- pShop->mKoro2[local_30].field_0x50 = -32768;
- } else if (pShop->mKoro2[local_30].field_0x34 == 14) {
- pShop->mKoro2[local_30].field_0x50 = -16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 15) {
- pShop->mKoro2[local_30].field_0x50 = 16384;
+
+ i_this->mKoro2[part_no].field_0x44.set(2.5f, 2.5f, 2.5f);
+
+ if (i_this->mKoro2[part_no].field_0x34 == 2 || i_this->mKoro2[part_no].field_0x34 == 8) {
+ i_this->mKoro2[part_no].field_0x50 = -0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 4 || i_this->mKoro2[part_no].field_0x34 == 10) {
+ i_this->mKoro2[part_no].field_0x50 = -0x8000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 5 || i_this->mKoro2[part_no].field_0x34 == 11) {
+ i_this->mKoro2[part_no].field_0x50 = 0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 12) {
+ i_this->mKoro2[part_no].field_0x50 = -0x8000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 14) {
+ i_this->mKoro2[part_no].field_0x50 = -0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 15) {
+ i_this->mKoro2[part_no].field_0x50 = 0x4000;
}
- if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 10) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crbox_model[r30];
+ if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 10) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crbox_model[r30];
r30++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 15) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crstart_model[r29];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 15) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crstart_model[r29];
r29++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 13) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crgoal_model[r28];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 13) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crgoal_model[r28];
r28++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 11) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crcurve_a_model[r27];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 11) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crcurve_a_model[r27];
r27++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 12) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crcurve_b_model[r26];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 12) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crcurve_b_model[r26];
r26++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 14) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crsaka_model[r25];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 14) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crsaka_model[r25];
r25++;
}
- if (pShop->mKoro2[local_30].mpModel == NULL) {
+ if (i_this->mKoro2[part_no].mpModel == NULL) {
return 0;
}
- pShop->mKoro2[local_30].mpBgW = new dBgW();
- if (pShop->mKoro2[local_30].mpBgW == NULL) {
+ i_this->mKoro2[part_no].mpBgW = new dBgW();
+ if (i_this->mKoro2[part_no].mpBgW == NULL) {
return 0;
}
- cBgD_t* pcVar3 = (cBgD_t*)dComIfG_getObjectRes("Fshop",koro2_dzb[pShop->mKoro2[local_30].field_0x34 - 1]);
- if (pShop->mKoro2[local_30].mpBgW->Set(pcVar3, 1, &pShop->mKoro2[local_30].field_0x04) == 1) {
+
+ cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Fshop",koro2_dzb[i_this->mKoro2[part_no].field_0x34 - 1]);
+ if (i_this->mKoro2[part_no].mpBgW->Set(dzb, 1, &i_this->mKoro2[part_no].field_0x04) == 1) {
return 0;
}
- pShop->mKoro2[local_30].mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
- local_30++;
- if (local_30 >= 100) {
+
+ i_this->mKoro2[part_no].mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
+
+ part_no++;
+ if (part_no >= 100) {
+ OS_REPORT("//////////////KORO2 PART MAX OVER !!\n");
return 0;
}
}
}
}
+
return 1;
}
-/* ############################################################################################## */
-/* 808701D4-808701D8 000140 0004+00 0/1 0/0 0/0 .rodata @5206 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5206 = -370.0f;
-COMPILER_STRIP_GATE(0x808701D4, &lit_5206);
-#pragma pop
-
-/* 808701D8-808701DC 000144 0004+00 0/1 0/0 0/0 .rodata @5207 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5207 = 16.0f;
-COMPILER_STRIP_GATE(0x808701D8, &lit_5207);
-#pragma pop
-
-/* 808701DC-808701E0 000148 0004+00 0/2 0/0 0/0 .rodata @5208 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5208 = 215.0f;
-COMPILER_STRIP_GATE(0x808701DC, &lit_5208);
-#pragma pop
-
-/* 808701E0-808701E4 00014C 0004+00 0/1 0/0 0/0 .rodata @5209 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5209 = 43.0f;
-COMPILER_STRIP_GATE(0x808701E0, &lit_5209);
-#pragma pop
-
-/* 808701E4-808701E8 000150 0004+00 0/1 0/0 0/0 .rodata @5210 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5210 = 593.0f;
-COMPILER_STRIP_GATE(0x808701E4, &lit_5210);
-#pragma pop
-
-/* 808701E8-808701EC 000154 0004+00 0/1 0/0 0/0 .rodata @5211 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5211 = 32768.0f;
-COMPILER_STRIP_GATE(0x808701E8, &lit_5211);
-#pragma pop
-
-/* 808701EC-808701F0 000158 0004+00 0/1 0/0 0/0 .rodata @5212 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5212 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x808701EC, &lit_5212);
-#pragma pop
-
-/* 808701F0-808701F4 00015C 0004+00 0/1 0/0 0/0 .rodata @5213 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5213 = 0x403F5C29;
-COMPILER_STRIP_GATE(0x808701F0, &lit_5213);
-#pragma pop
-
-/* 808701F4-808701F8 000160 0004+00 0/1 0/0 0/0 .rodata @5214 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5214 = 0x3F3851EB;
-COMPILER_STRIP_GATE(0x808701F4, &lit_5214);
-#pragma pop
-
-/* 808701F8-808701FC 000164 0004+00 0/1 0/0 0/0 .rodata @5215 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5215 = 0x3FFEB852;
-COMPILER_STRIP_GATE(0x808701F8, &lit_5215);
-#pragma pop
-
-/* 808701FC-80870200 000168 0004+00 0/1 0/0 0/0 .rodata @5216 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5216 = -685.0f;
-COMPILER_STRIP_GATE(0x808701FC, &lit_5216);
-#pragma pop
-
-/* 80870200-80870204 00016C 0004+00 0/1 0/0 0/0 .rodata @5217 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5217 = 18.0f;
-COMPILER_STRIP_GATE(0x80870200, &lit_5217);
-#pragma pop
-
-/* 80870204-80870208 000170 0004+00 0/1 0/0 0/0 .rodata @5218 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5218 = 565.0f;
-COMPILER_STRIP_GATE(0x80870204, &lit_5218);
-#pragma pop
-
-/* 80870208-8087020C 000174 0004+00 0/1 0/0 0/0 .rodata @5219 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5219 = 177.0f;
-COMPILER_STRIP_GATE(0x80870208, &lit_5219);
-#pragma pop
-
-/* 8087020C-80870210 000178 0004+00 0/1 0/0 0/0 .rodata @5220 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5220 = 290.0f;
-COMPILER_STRIP_GATE(0x8087020C, &lit_5220);
-#pragma pop
-
-/* 80870210-80870214 00017C 0004+00 0/1 0/0 0/0 .rodata @5221 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5221 = 550.0f;
-COMPILER_STRIP_GATE(0x80870210, &lit_5221);
-#pragma pop
-
-/* 80870214-80870218 000180 0004+00 0/1 0/0 0/0 .rodata @5222 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5222 = 560.0f;
-COMPILER_STRIP_GATE(0x80870214, &lit_5222);
-#pragma pop
-
-/* 80870218-8087021C 000184 0004+00 0/1 0/0 0/0 .rodata @5223 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5223 = -16384.0f;
-COMPILER_STRIP_GATE(0x80870218, &lit_5223);
-#pragma pop
-
-/* 8087021C-80870220 000188 0004+00 0/2 0/0 0/0 .rodata @5224 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5224 = 2000.0f;
-COMPILER_STRIP_GATE(0x8087021C, &lit_5224);
-#pragma pop
-
-/* 8087084C-8087085C 0005C8 0010+00 0/1 0/0 0/0 .data lure_d$5019 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 lure_d[16] = {
- 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x14,
-};
-#pragma pop
+/* 8086ECC8-8086F5C8 002D48 0900+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
+static int useHeapInit(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
+ cM_initRnd2(JREG_S(8) + 37, 123, 70);
+
+ void* modelData;
+ for (int i = 0; i < 48; i++) {
+ i_this->mLure[i].field_0x00.x = -370.0f + VREG_F(6) + (-(i & 15) * (16.0f + VREG_F(8))) + cM_rndFX(2.5f);
+ i_this->mLure[i].field_0x00.y = (215.0f + VREG_F(7)) - (((i >> 4) & 3) * (43.0f + VREG_F(9)));
+ i_this->mLure[i].field_0x00.z = 593.0f + JREG_F(1);
+
+ if (i >= 32 && i <= 33) {
+ i_this->mLure[i].field_0x24 = 3;
+ i_this->mLure[i].field_0x0c = JREG_S(4) - 0x4000;
+ i_this->mLure[i].field_0x0e = cM_rndFX2(32768.0f);
+ i_this->mLure[i].field_0x28 = 1.2f + JREG_F(0);
+ i_this->mLure[i].field_0x2c = 1.2f + JREG_F(0);
+ i_this->mLure[i].field_0x00.y += 13.0f;
+ } else {
+ if (cM_rndF2(1.0f) < 0.3f) {
+ i_this->mLure[i].field_0x24 = cM_rndF2(2.99f);
+ } else {
+ i_this->mLure[i].field_0x24 = i + (i >> 4);
+ i_this->mLure[i].field_0x24 &= 3;
+ if (i_this->mLure[i].field_0x24 == 3) {
+ i_this->mLure[i].field_0x24 = cM_rndF2(2.99f);
+ }
+ }
-/* 8087085C-80870864 0005D8 0008+00 0/1 0/0 0/0 .data rod_d$5056 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 rod_d[8] = {
- 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18,
-};
-#pragma pop
-
-/* 80870864-80870884 0005E0 0020+00 0/1 0/0 0/0 .data rod_w$5087 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 rod_w[32] = {
- 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x33, 0x33, 0x33,
- 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x3E, 0x99, 0x99, 0x9A,
-};
-#pragma pop
-
-/* 80870884-8087089C 000600 0018+00 0/1 0/0 0/0 .data koro2_union_bmd$5117 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 koro2_union_bmd[24] = {
- 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0A,
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E,
-};
-#pragma pop
-
-/* 8087089C-808708B4 000618 0018+00 0/1 0/0 0/0 .data koro2_union_no$5118 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 koro2_union_no[24] = {
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1F,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08,
-};
-#pragma pop
+ i_this->mLure[i].field_0x0c = JREG_S(3) + 0x4000;
+ i_this->mLure[i].field_0x0e = cM_rndFX2(65536.0f);
+ i_this->mLure[i].field_0x28 = 0.8f + JREG_F(0) + cM_rndFX2(0.1f);
-/* 8086ECC8-8086F5C8 002D48 0900+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
+ if (i_this->mLure[i].field_0x24 == 2) {
+ i_this->mLure[i].field_0x2c = (0.71999997f + JREG_F(0)) - cM_rndF2(0.15f);
+ } else {
+ i_this->mLure[i].field_0x2c = 0.8f + JREG_F(0) + cM_rndFX2(0.1f);
+ }
+ }
+
+ static int lure_d[] = {0x16, 0x17, 0x1C, 0x14};
+ modelData = dComIfG_getObjectRes("Fshop", lure_d[i_this->mLure[i].field_0x24]);
+ JUT_ASSERT(2832, modelData != NULL);
+
+ i_this->mLure[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mLure[i].field_0x14 == NULL) {
+ return 0;
+ }
+
+ if (i_this->mLure[i].field_0x24 == 3) {
+ i_this->mLure[i].field_0x14->setUserArea((uintptr_t)&i_this->mLure[i]);
+
+ for (u16 j = 0; j < ((J3DModelData*)modelData)->getJointNum(); j++) {
+ if (j == 1) {
+ ((J3DModelData*)modelData)->getJointNodePointer(j)->setCallBack(frog_CallBack);
+ }
+ }
+ } else {
+ modelData = dComIfG_getObjectRes("Fshop", 5);
+ JUT_ASSERT(2852, modelData != NULL);
+
+ for (int j = 0; j < 2; j++) {
+ i_this->mLure[i].field_0x18[j] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x20000, 0x11000084);
+ if (i_this->mLure[i].field_0x18[j] == NULL) {
+ return 0;
+ }
+ }
+ }
+ }
+
+ cM_initRnd2(JREG_S(9) + 79, JREG_S(8) + 133, 70);
+
+ for (int i = 0; i < 3; i++) {
+ i_this->mRod[i].field_0x4c = cM_rndF2(1.99f);
+ i_this->mRod[i].field_0x00.x = -685.0f + YREG_F(2);
+ i_this->mRod[i].field_0x00.y = 18.0f + YREG_F(3);
+ i_this->mRod[i].field_0x00.z = 565.0f + YREG_F(4);
+
+ if (i == 1) {
+ i_this->mRod[i].field_0x00.x -= 15.0f;
+ } else if (i == 2) {
+ i_this->mRod[i].field_0x00.z += 15.0f;
+ }
+
+ if (i_this->mRod[i].field_0x4c == 0) {
+ i_this->mRod[i].field_0x54 = 30.0f * (1.2f + cM_rndF2(0.15f));
+ } else {
+ i_this->mRod[i].field_0x54 = 30.0f * (1.0f + cM_rndF2(0.15f));
+ }
+
+ static int rod_d[] = {0x19, 0x18,};
+ modelData = dComIfG_getObjectRes("Fshop", rod_d[i_this->mRod[i].field_0x4c]);
+ JUT_ASSERT(2903, modelData != NULL);
+ i_this->mRod[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mRod[i].field_0x14 == NULL) {
+ return 0;
+ }
+
+ i_this->mRod[i].field_0x14->setUserArea((uintptr_t)&i_this->mRod[i]);
+ i_this->mRod[i].field_0x58 = cM_rndF2(65536.0f);
+
+ for (u16 j = 0; j < ((J3DModelData*)modelData)->getJointNum(); j++) {
+ if (j == 1) {
+ ((J3DModelData*)modelData)->getJointNodePointer(j)->setCallBack(Reel_CallBack);
+ }
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 6);
+ JUT_ASSERT(2923, modelData != NULL);
+
+ for (int j = 0; j < 6; j++) {
+ i_this->mRod[i].field_0x18[j] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x20000, 0x11000084);
+ if (i_this->mRod[i].field_0x18[j] == NULL) {
+ return 0;
+ }
+ }
+
+ if (!i_this->mRod[i].line_mat.init(1, 8, 1)) {
+ return 0;
+ }
+
+ f32* sp1C = i_this->mRod[i].line_mat.getSize(0);
+ for (int j = 0; j < 8; j++, sp1C++) {
+ static f32 rod_w[8] = {
+ 1.0f,
+ 0.89999998f,
+ 0.8f,
+ 0.69999999f,
+ 0.6f,
+ 0.5f,
+ 0.4f,
+ 0.3f,
+ };
+
+ *sp1C = rod_w[j];
+ }
+ }
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 0) {
+ i_this->mTsubo[i].field_0x00.set(177.0f, 290.0f, 550.0f);
+ modelData = dComIfG_getObjectRes("Fshop", 0x1A);
+ } else {
+ i_this->mTsubo[i].field_0x00.set(40.0f, 290.0f, 560.0f);
+ modelData = dComIfG_getObjectRes("Fshop", 0x1B);
+ }
+
+ JUT_ASSERT(2969, modelData != NULL);
+
+ i_this->mTsubo[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mTsubo[i].field_0x14 == NULL) {
+ return 0;
+ }
+ }
+
+ if (!i_this->field_0x3f88.init(60, 15, 0)) {
+ return 0;
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 0x12);
+ JUT_ASSERT(3035, modelData != NULL);
+ i_this->field_0x6b30 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x6b30 == NULL) {
+ return 0;
+ }
+
+ i_this->field_0x6b68 = new dBgW();
+ if (i_this->field_0x6b68 == NULL) {
+ return 0;
+ }
+
+ if (i_this->field_0x6b68->Set((cBgD_t*)dComIfG_getObjectRes("Fshop", 0x26), 1, &i_this->field_0x6b38) == 1) {
+ return 0;
+ }
+
+ i_this->field_0x6b68->SetCrrFunc(dBgS_MoveBGProc_Typical);
+
+ modelData = dComIfG_getObjectRes("Fshop", 0x15);
+ JUT_ASSERT(3069, modelData != NULL);
+ i_this->field_0x3ff4 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x3ff4 == 0) {
+ return 0;
+ }
+
+ #if !PLATFORM_SHIELD
+ i_this->field_0x4020.y = cM_rndFX(2000.0f) + -16384.0f;
+
+ modelData = dComIfG_getObjectRes("Fshop", 16);
+ JUT_ASSERT(3069, modelData != NULL);
+ ArcIX_A_crwaku_model[0] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (ArcIX_A_crwaku_model[0] == NULL) {
+ return 0;
+ }
+
+ J3DModel** var_r24;
+ for (int i = 0; i < 6; i++) {
+ static int koro2_union_bmd[] = {
+ 0xF,
+ 0xD,
+ 0xA,
+ 0xB,
+ 0xC,
+ 0xE,
+ };
+
+ modelData = dComIfG_getObjectRes("Fshop", koro2_union_bmd[i]);
+
+ static int koro2_union_no[] = {
+ 1,
+ 1,
+ 31,
+ 16,
+ 4,
+ 8,
+ };
+
+ var_r24 = koro2_union_model[i];
+ for (int j = 0; j < koro2_union_no[i]; j++, var_r24++) {
+ *var_r24 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (*var_r24 == NULL) {
+ return 0;
+ }
+ }
+ }
+ #endif
+
+ #if PLATFORM_SHIELD
+ if (!koro2_heapinit(actor)) {
+ return 0;
+ }
+ #endif
+
+ if ((int)dComIfGs_getEventReg(0xF47F) >= 10) {
+ modelData = dComIfG_getObjectRes("Fshop", 0x11);
+ JUT_ASSERT(3137, modelData != NULL);
+ i_this->field_0x4004 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x4004 == 0) {
+ return 0;
+ }
+ }
+
+ return 1;
}
/* 8086F5C8-8086F634 003648 006C+00 1/1 0/0 0/0 .text BalluseHeapInit__FP10fopAc_ac_c */
-static void BalluseHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
+static int BalluseHeapInit(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
-/* ############################################################################################## */
-/* 80870220-80870240 00018C 0020+00 0/0 0/0 0/0 .rodata @5249 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5249[32] = {
- 0x00, 0x00, 0x84, 0xA0, 0x00, 0x00, 0x9A, 0xC0, 0x00, 0x00, 0xB4, 0x40, 0x00, 0x00, 0xE1, 0x00,
- 0x00, 0x00, 0x82, 0x20, 0x00, 0x00, 0x9A, 0x40, 0x00, 0x00, 0x64, 0xE0, 0x00, 0x00, 0xA9, 0xE0,
-};
-COMPILER_STRIP_GATE(0x80870220, &lit_5249);
-#pragma pop
-
-/* 80870240-80870244 0001AC 0004+00 0/1 0/0 0/0 .rodata @5476 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5476 = 9.0f;
-COMPILER_STRIP_GATE(0x80870240, &lit_5476);
-#pragma pop
-
-/* 80870244-80870248 0001B0 0004+00 0/1 0/0 0/0 .rodata @5477 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5477 = 11.0f;
-COMPILER_STRIP_GATE(0x80870244, &lit_5477);
-#pragma pop
-
-/* 80870248-8087024C 0001B4 0004+00 0/1 0/0 0/0 .rodata @5478 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5478 = 20.0f;
-COMPILER_STRIP_GATE(0x80870248, &lit_5478);
-#pragma pop
-
-/* 8087024C-80870250 0001B8 0004+00 0/1 0/0 0/0 .rodata @5479 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5479 = 67.0f;
-COMPILER_STRIP_GATE(0x8087024C, &lit_5479);
-#pragma pop
-
-/* 80870250-80870254 0001BC 0004+00 0/1 0/0 0/0 .rodata @5480 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5480 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80870250, &lit_5480);
-#pragma pop
-
-/* 80870254-80870258 0001C0 0004+00 0/1 0/0 0/0 .rodata @5481 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5481 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80870254, &lit_5481);
-#pragma pop
-
-/* 80870258-8087025C 0001C4 0004+00 0/1 0/0 0/0 .rodata @5482 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5482 = 127.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80870258, &lit_5482);
-#pragma pop
-
-/* 8087025C-80870260 0001C8 0004+00 0/1 0/0 0/0 .rodata @5483 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5483 = -648.0f;
-COMPILER_STRIP_GATE(0x8087025C, &lit_5483);
-#pragma pop
-
-/* 80870260-80870264 0001CC 0004+00 0/1 0/0 0/0 .rodata @5484 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5484 = 380.0f;
-COMPILER_STRIP_GATE(0x80870260, &lit_5484);
-#pragma pop
-
-/* 80870264-80870268 0001D0 0004+00 0/1 0/0 0/0 .rodata @5485 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5485 = -131.0f;
-COMPILER_STRIP_GATE(0x80870264, &lit_5485);
-#pragma pop
-
-/* 80870268-8087026C 0001D4 0004+00 0/1 0/0 0/0 .rodata @5486 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5486 = 3000.0f;
-COMPILER_STRIP_GATE(0x80870268, &lit_5486);
-#pragma pop
-
-/* 8087026C-80870270 0001D8 0004+00 0/1 0/0 0/0 .rodata @5487 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5487 = -4500.0f;
-COMPILER_STRIP_GATE(0x8087026C, &lit_5487);
-#pragma pop
-
-/* 80870270-80870274 0001DC 0004+00 0/1 0/0 0/0 .rodata @5488 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5488 = -878.0f;
-COMPILER_STRIP_GATE(0x80870270, &lit_5488);
-#pragma pop
-
-/* 80870274-8087027C 0001E0 0008+00 0/1 0/0 0/0 .rodata @5490 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5490[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80870274, &lit_5490);
-#pragma pop
+ void* modelData = dComIfG_getObjectRes("Fshop", 9);
+ JUT_ASSERT(3157, modelData != NULL);
+ i_this->field_0x4070 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x4070 == 0) {
+ return 0;
+ }
-/* 808708B4-808708BC 000630 0008+00 1/1 0/0 0/0 .data check_kind$5285 */
-SECTION_DATA static u8 check_kind[8] = {
- 0xF5, 0x7F, 0xF4, 0x7F, 0xF3, 0x7F, 0xF2, 0x7F,
-};
+ return 1;
+}
/* 8086F634-8086FD78 0036B4 0744+00 1/0 0/0 0/0 .text daFshop_Create__FP10fopAc_ac_c */
-static void daFshop_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
- fopAcM_ct(param_0, fshop_class);
+static int daFshop_Create(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
+ fopAcM_ct(actor, fshop_class);
+
+ int sp3C = dComIfG_resLoad(&i_this->mPhase, "Fshop");
+ if (sp3C == cPhs_COMPLEATE_e) {
+ OS_REPORT("FSHOP PARAM %x\n", fopAcM_GetParam(actor));
+ if ((fopAcM_GetParam(actor) & 0xFF) == 0x23) {
+ if (!fopAcM_entrySolidHeap(actor, BalluseHeapInit, 0x800)) {
+ OS_REPORT("//////////////FSHOP BALL SET NON !!\n");
+ return 5;
+ }
+
+ i_this->field_0x40b4.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), actor, 1, &i_this->field_0x4074, fopAcM_GetSpeed_p(actor), NULL, NULL);
+ i_this->field_0x4074.SetWall(9.0f, 11.0f);
+ i_this->field_0x40b4.OnWallSort();
+ return sp3C;
+ }
+
+ if ((s8)(fopAcM_GetParam(actor) & 0xFF) >= 100) {
+ i_this->field_0x400e = (fopAcM_GetParam(actor) & 0xFF) - 100;
+ actor->field_0x567 = ((i_this->field_0x400e - 1) | (dComIfGs_getEventReg(0xF63F) & 8));
+
+ u32 sp58[] = {
+ 0x84A0,
+ 0x9AC0,
+ 0xB440,
+ 0xE100,
+ 0x8220,
+ 0x9A40,
+ 0x64E0,
+ 0xA9E0,
+ };
+
+ if (!fopAcM_entrySolidHeap(actor, koro2_heapinit, sp58[i_this->field_0x400e - 1])) {
+ OS_REPORT("//////////////FSHOP KORO222 SET NON !!\n");
+ return 5;
+ }
+
+ if (i_this->field_0x402c != NULL && dComIfG_Bgsp().Regist(i_this->field_0x402c, actor)) {
+ return 5;
+ }
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpBgW != NULL && dComIfG_Bgsp().Regist(i_this->mKoro2[i].mpBgW, actor)) {
+ return 5;
+ }
+ }
+
+ i_this->field_0x428d = 30;
+ i_this->field_0x400d = 1;
+ return sp3C;
+ }
+
+ fopAcM_SetParam(actor, 0);
+ i_this->field_0x400c = dComIfGs_getEventReg(0xF63F) & 0xFF;
+
+ OS_REPORT("FSHOP//////////////FSHOP SET 1 !!\n");
+
+ if (!fopAcM_entrySolidHeap(actor, useHeapInit, 0x5B000)) {
+ OS_REPORT("//////////////FSHOP SET NON !!\n");
+ return 5;
+ }
+
+ OS_REPORT("//////////////FSHOP SET 2 !!\n");
+
+ if (i_this->field_0x6b68 != NULL && dComIfG_Bgsp().Regist(i_this->field_0x6b68, actor)) {
+ return 5;
+ }
+
+ for (int i = 0; i < 60; i++) {
+ if (i < 30) {
+ i_this->mWeed[i].field_0x00[0].z = -30.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0x00[0].y = 67.0f;
+ i_this->mWeed[i].field_0xb4 = 0.9f + cM_rndF2(0.6f);
+ } else {
+ i_this->mWeed[i].field_0x00[0].z = 220.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0x00[0].y = 67.0f;
+ i_this->mWeed[i].field_0xb4 = 0.9f + cM_rndF2(0.6f);
+ }
+
+ i_this->mWeed[i].field_0x00[0].x = -720.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0xbc = cM_rndF2(65536.0f);
+ }
+
+ daFshop_Execute(i_this);
+
+ void* modelData = dComIfG_getObjectRes("Fshop", 5);
+ JUT_ASSERT(3354, modelData != NULL);
+ if (dComIfGp_addSimpleModel((J3DModelData*)modelData, fopAcM_GetRoomNo(actor), 0) == -1) {
+ OS_REPORT("\x1B[43;30m針のシンプルモデル登録失敗しました。\n\x1B[m");
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 6);
+ JUT_ASSERT(3362, modelData != NULL);
+ if (dComIfGp_addSimpleModel((J3DModelData*)modelData, fopAcM_GetRoomNo(actor), 0) == -1) {
+ OS_REPORT("\x1B[43;30mリングのシンプルモデル登録失敗しました。\n\x1B[m");
+ }
+
+ i_this->field_0x6b7c = 1;
+
+ for (int i = 0; i < 8; i++) {
+ fopAcM_createChild(PROC_FSHOP, fopAcM_GetID(actor), i - 155, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1, NULL);
+ }
+
+ fopAcM_createChild(PROC_FSHOP, fopAcM_GetID(actor), 0xFFFFFF23, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1, NULL);
+
+ u8 sp10 = 1;
+ #if VERSION == VERSION_GCN_PAL || VERSION == VERSION_WII_PAL || PLATFORM_SHIELD
+ if (dComIfGs_getPalLanguage() == 1) {
+ sp10 = 2;
+ } else {
+ sp10 = 0;
+ }
+ #endif
+
+ for (int i = 0; i <= 3; i++) {
+ static u16 check_kind[] = {
+ 0xF57F,
+ 0xF47F,
+ 0xF37F,
+ 0xF27F,
+ };
+
+ int sp24;
+ if (sp10 == 1) {
+ sp24 = 2.54f * dComIfGs_getEventReg(check_kind[i]);
+ } else {
+ sp24 = dComIfGs_getEventReg(check_kind[i]);
+ }
+
+ if (sp24 >= 0xA) {
+ u32 sp28 = (sp24 << 8) | 0xFFFF0000 | i;
+ fopAcM_create(PROC_MG_FISH, sp28, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+ }
+
+ cXyz sp48(-648.0f + YREG_F(7), 215.0f + YREG_F(8), 380.0f + YREG_F(9));
+ csXyz sp40(0, 0, 0);
+ fopAcM_create(PROC_OBJ_KAGE, 0xFFFFFF01, &sp48, fopAcM_GetRoomNo(actor), &sp40, NULL, -1);
+
+ for (int i = 0; i < 8; i++) {
+ fopAcM_create(PROC_MG_FISH, 0xFFFF2005, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+
+ sp48.set(-131.0f, 3000.0f + nREG_F(7), -4500.0f);
+ fopAcM_create(PROC_NPC_TK, -1, &sp48, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+
+ for (int i = 0; i < 5; i++) {
+ sp48.set(-450.0f, 0.0f, -878.0f);
+ fopAcM_create(PROC_BD, 0xFFFFFFFF, &sp48, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+ }
+
+ return sp3C;
}
/* 808708BC-808708DC -00001 0020+00 1/0 0/0 0/0 .data l_daFshop_Method */
diff --git a/src/d/actor/d_a_mirror.cpp b/src/d/actor/d_a_mirror.cpp
index 06812298a1..792f1e7fe9 100644
--- a/src/d/actor/d_a_mirror.cpp
+++ b/src/d/actor/d_a_mirror.cpp
@@ -342,16 +342,16 @@ void dMirror_packet_c::mainDraw() {
f32 var_f5;
f32 var_f6;
if (view_port->x_orig != 0.0f) {
- var_f3 = (((view_port->x_orig * 2.0f) + view_port->width) * 0.5f) - (608.0f / 2);
- var_f5 = 608.0f;
+ var_f3 = (((view_port->x_orig * 2.0f) + view_port->width) * 0.5f) - (FB_WIDTH / 2);
+ var_f5 = FB_WIDTH;
} else {
var_f3 = view_port->x_orig;
var_f5 = view_port->width;
}
if (view_port->y_orig != 0.0f) {
- var_f4 = (((view_port->y_orig * 2.0f) + view_port->height) * 0.5f) - (448.0f / 2);
- var_f6 = 448.0f;
+ var_f4 = (((view_port->y_orig * 2.0f) + view_port->height) * 0.5f) - (FB_HEIGHT / 2);
+ var_f6 = FB_HEIGHT;
} else {
var_f4 = view_port->y_orig;
var_f6 = view_port->height;
diff --git a/src/d/actor/d_a_movie_player.cpp b/src/d/actor/d_a_movie_player.cpp
index 97976d4e39..0a0b1ff8d3 100644
--- a/src/d/actor/d_a_movie_player.cpp
+++ b/src/d/actor/d_a_movie_player.cpp
@@ -2977,9 +2977,9 @@ static void daMP_THPGXYuv2RgbSetup(GXRenderModeObj const* param_0) {
int height = param_0->efbHeight;
f32 var_f31 = 0.0f;
- #if PLATFORM_WII || PLATFORM_SHIELD
+ #if WIDESCREEN_SUPPORT
if (!mDoGph_gInf_c::isWide()) {
- var_f31 = ((u16)height - (width * 808.0f) / 608.0f) * 0.5f;
+ var_f31 = ((u16)height - (width * 808.0f) / FB_WIDTH) * 0.5f;
}
#endif
diff --git a/src/d/actor/d_a_npc.cpp b/src/d/actor/d_a_npc.cpp
index 3e0835750c..5bbea1652e 100644
--- a/src/d/actor/d_a_npc.cpp
+++ b/src/d/actor/d_a_npc.cpp
@@ -2646,7 +2646,7 @@ BOOL daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32
for (int i = 0; i < 8; i++) {
mDoLib_project(&pos_array[i], &proj);
- if (0.0f < proj.x && proj.x < 608.0f && 0.0f < proj.y && proj.y < 448.0f) {
+ if (0.0f < proj.x && proj.x < FB_WIDTH && 0.0f < proj.y && proj.y < FB_HEIGHT) {
continue;
}
return false;
diff --git a/src/d/actor/d_a_npc_henna.cpp b/src/d/actor/d_a_npc_henna.cpp
index 5f123d08c7..ca7879f6f3 100644
--- a/src/d/actor/d_a_npc_henna.cpp
+++ b/src/d/actor/d_a_npc_henna.cpp
@@ -1868,14 +1868,14 @@ static void demo_camera_shop(npc_henna_class* i_this) {
}
case 73: {
koro_shop = (fshop_class*)fpcM_Search(s_koro2ball_sub, i_this);
- unkXyz_54 = koro_shop->current.pos;
+ unkXyz_54 = koro_shop->actor.current.pos;
fshop = (fshop_class*)fpcM_Search(s_shop_sub, i_this);
cMtx_YrotS(*calc_mtx, fshop->field_0x4060);
unkXyz_78.x = -500.0f;
unkXyz_78.y = 600.0f;
unkXyz_78.z = 0.0f;
MtxPosition(&unkXyz_78, &unkXyz_60);
- unkXyz_60 += koro_shop->current.pos;
+ unkXyz_60 += koro_shop->actor.current.pos;
if (koro2_reset != 0) {
koro2_reset = 0;
i_this->field_0x76c = unkXyz_54;
diff --git a/src/d/actor/d_a_obj_ari.cpp b/src/d/actor/d_a_obj_ari.cpp
index e8e614956b..0a5a9044f7 100644
--- a/src/d/actor/d_a_obj_ari.cpp
+++ b/src/d/actor/d_a_obj_ari.cpp
@@ -531,7 +531,7 @@ void daObjARI_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
- if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
+ if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
diff --git a/src/d/actor/d_a_obj_cho.cpp b/src/d/actor/d_a_obj_cho.cpp
index 3425ccf1ac..e41241cb7e 100644
--- a/src/d/actor/d_a_obj_cho.cpp
+++ b/src/d/actor/d_a_obj_cho.cpp
@@ -316,7 +316,7 @@ void daObjCHO_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
- if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
+ if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
diff --git a/src/d/actor/d_a_obj_crvfence.cpp b/src/d/actor/d_a_obj_crvfence.cpp
index 4803d1ddaa..2c80397efe 100644
--- a/src/d/actor/d_a_obj_crvfence.cpp
+++ b/src/d/actor/d_a_obj_crvfence.cpp
@@ -242,7 +242,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
#ifdef DEBUG
if (sp24.x >= 0.0f) {
- if (sp24.y <= 640.0f) {
+ if (sp24.y <= FB_WIDTH) {
bVar1 = true;
}
}
@@ -251,7 +251,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
bVar1 = false;
if (sp24.y >= 0.0f) {
- if (sp24.y <= 456.0f) {
+ if (sp24.y <= FB_HEIGHT) {
bVar1 = true;
}
}
@@ -261,7 +261,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
}
}
#else
- if (sp24.x >= 0.0f && sp24.x <= 608.0f && sp24.y >= 0.0f && sp24.y <= 448.0f) {
+ if (sp24.x >= 0.0f && sp24.x <= FB_WIDTH && sp24.y >= 0.0f && sp24.y <= FB_HEIGHT) {
rv = true;
}
#endif
diff --git a/src/d/actor/d_a_obj_crvhahen.cpp b/src/d/actor/d_a_obj_crvhahen.cpp
index 20a6163d9a..f0e40a0b18 100644
--- a/src/d/actor/d_a_obj_crvhahen.cpp
+++ b/src/d/actor/d_a_obj_crvhahen.cpp
@@ -151,7 +151,7 @@ bool daObjCRVHAHEN_c::checkViewArea(cXyz* i_this) {
bool ret = false;
- if (proj.x >= 0.0f && proj.x <= 608.0f && proj.y >= 0.0f && proj.y <= 448.0f) {
+ if (proj.x >= 0.0f && proj.x <= FB_WIDTH && proj.y >= 0.0f && proj.y <= FB_HEIGHT) {
ret = true;
}
diff --git a/src/d/actor/d_a_obj_dan.cpp b/src/d/actor/d_a_obj_dan.cpp
index 01fdcdee3a..33af5795ea 100644
--- a/src/d/actor/d_a_obj_dan.cpp
+++ b/src/d/actor/d_a_obj_dan.cpp
@@ -292,7 +292,7 @@ void daObjDAN_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
- if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
+ if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
diff --git a/src/d/actor/d_a_obj_gomikabe.cpp b/src/d/actor/d_a_obj_gomikabe.cpp
index ea19451152..590ae92c7e 100644
--- a/src/d/actor/d_a_obj_gomikabe.cpp
+++ b/src/d/actor/d_a_obj_gomikabe.cpp
@@ -219,7 +219,7 @@ bool daObjGOMIKABE_c::checkViewArea(cXyz param_1) {
Vec local_24;
mDoLib_project(&param_1, &local_24);
bool rv = false;
- if (local_24.x >= 0.0f && local_24.x <= 608.0f && local_24.y >= 0.0f && local_24.y <= 448.0f) {
+ if (local_24.x >= 0.0f && local_24.x <= FB_WIDTH && local_24.y >= 0.0f && local_24.y <= FB_HEIGHT) {
rv = true;
}
diff --git a/src/d/actor/d_a_obj_groundwater.cpp b/src/d/actor/d_a_obj_groundwater.cpp
index 1bc17a6c36..8ca9c0c65a 100644
--- a/src/d/actor/d_a_obj_groundwater.cpp
+++ b/src/d/actor/d_a_obj_groundwater.cpp
@@ -324,7 +324,9 @@ int daGrdWater_c::Draw() {
Mtx afStack_50;
C_MTXLightPerspective(afStack_50, dComIfGd_getView()->fovy, dComIfGd_getView()->aspect,
1.0f, 1.0f, -0.01f, 0.0f);
+ #if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(afStack_50);
+ #endif
mtxInfo->setEffectMtx(afStack_50);
modelData2->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
diff --git a/src/d/actor/d_a_obj_hhashi.cpp b/src/d/actor/d_a_obj_hhashi.cpp
index 1f30fa0e73..0b2dbd0d7e 100644
--- a/src/d/actor/d_a_obj_hhashi.cpp
+++ b/src/d/actor/d_a_obj_hhashi.cpp
@@ -229,7 +229,7 @@ bool daObjHHASHI_c::checkViewArea(int param_1) {
Vec local_20;
mDoLib_project(&field_0x5b0[param_1], &local_20);
bool rv = false;
- if (local_20.x >= 0.0f && local_20.x <= 608.0f && local_20.y >= 0.0f && local_20.y <= 448.0f) {
+ if (local_20.x >= 0.0f && local_20.x <= FB_WIDTH && local_20.y >= 0.0f && local_20.y <= FB_HEIGHT) {
rv = true;
}
return rv;
diff --git a/src/d/actor/d_a_obj_kabuto.cpp b/src/d/actor/d_a_obj_kabuto.cpp
index a19eca796c..0d387d56d2 100644
--- a/src/d/actor/d_a_obj_kabuto.cpp
+++ b/src/d/actor/d_a_obj_kabuto.cpp
@@ -457,7 +457,7 @@ void daObjKABUTO_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
- if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
+ if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
diff --git a/src/d/actor/d_a_obj_kamakiri.cpp b/src/d/actor/d_a_obj_kamakiri.cpp
index 86e48c13fa..51ed44d686 100644
--- a/src/d/actor/d_a_obj_kamakiri.cpp
+++ b/src/d/actor/d_a_obj_kamakiri.cpp
@@ -543,11 +543,11 @@ void daObjKAM_c::Z_BufferChk() {
cameraHeight = 0.0f;
}
#ifdef DEBUG
-#define Z_BUFFERCHK_X_MAX 640.0f
-#define Z_BUFFERCHK_Y_MAX 456.0f
+#define Z_BUFFERCHK_X_MAX FB_WIDTH
+#define Z_BUFFERCHK_Y_MAX FB_HEIGHT
#else
-#define Z_BUFFERCHK_X_MAX 608.0f
-#define Z_BUFFERCHK_Y_MAX 448.0f
+#define Z_BUFFERCHK_X_MAX FB_WIDTH
+#define Z_BUFFERCHK_Y_MAX FB_HEIGHT
#endif
if (currentProj.x > 0.0f && currentProj.x < Z_BUFFERCHK_X_MAX && currentProj.y > cameraHeight &&
currentProj.y < Z_BUFFERCHK_Y_MAX - cameraHeight)
diff --git a/src/d/actor/d_a_obj_katatsumuri.cpp b/src/d/actor/d_a_obj_katatsumuri.cpp
index f65c412676..8493976d02 100644
--- a/src/d/actor/d_a_obj_katatsumuri.cpp
+++ b/src/d/actor/d_a_obj_katatsumuri.cpp
@@ -622,10 +622,10 @@ void daObjKAT_c::Z_BufferChk() {
#if DEBUG
#define KAT_Z_BUFFERCHK_MAX_X 640.0f
-#define KAT_Z_BUFFERCHK_MAX_Y 456.0f
+#define KAT_Z_BUFFERCHK_MAX_Y FB_HEIGHT
#else
-#define KAT_Z_BUFFERCHK_MAX_X 608.0f
-#define KAT_Z_BUFFERCHK_MAX_Y 448.0f
+#define KAT_Z_BUFFERCHK_MAX_X FB_WIDTH
+#define KAT_Z_BUFFERCHK_MAX_Y FB_HEIGHT
#endif
if (projected.x > 0.0f && projected.x < KAT_Z_BUFFERCHK_MAX_X && projected.y > unkFloat1 &&
projected.y < KAT_Z_BUFFERCHK_MAX_Y - unkFloat1)
diff --git a/src/d/actor/d_a_obj_kuwagata.cpp b/src/d/actor/d_a_obj_kuwagata.cpp
index 69354bbd35..484e3400c1 100644
--- a/src/d/actor/d_a_obj_kuwagata.cpp
+++ b/src/d/actor/d_a_obj_kuwagata.cpp
@@ -558,8 +558,8 @@ void daObjKUW_c::Z_BufferChk() {
trimHeight = 0.0f;
}
- if (local_5c.x > 0.0f && local_5c.x < 608.0f &&
- local_5c.y > trimHeight && local_5c.y < 448.0f - trimHeight) {
+ if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH &&
+ local_5c.y > trimHeight && local_5c.y < FB_HEIGHT - trimHeight) {
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x9bc);
}
diff --git a/src/d/actor/d_a_obj_lv3Water2.cpp b/src/d/actor/d_a_obj_lv3Water2.cpp
index db18100211..c6ce4fab6f 100644
--- a/src/d/actor/d_a_obj_lv3Water2.cpp
+++ b/src/d/actor/d_a_obj_lv3Water2.cpp
@@ -236,7 +236,7 @@ int daLv3Water2_c::Draw() {
Mtx lightProjMtx;
C_MTXLightPerspective(lightProjMtx, dComIfGd_getView()->fovy, dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
- #ifdef DEBUG
+ #if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightProjMtx);
/* TODO: Handle screen capture perspective calculations */
#endif
diff --git a/src/d/actor/d_a_obj_mhole.cpp b/src/d/actor/d_a_obj_mhole.cpp
index 53074c05ca..c7229120dd 100644
--- a/src/d/actor/d_a_obj_mhole.cpp
+++ b/src/d/actor/d_a_obj_mhole.cpp
@@ -342,7 +342,9 @@ int daObjMHole_c::draw() {
Mtx effect_mtx;
MTXLightPerspective(effect_mtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0.0f);
+ #if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(effect_mtx);
+ #endif
tex_mtx_info->setEffectMtx(effect_mtx);
modelData->simpleCalcMaterial((MtxP)j3dDefaultMtx);
}
diff --git a/src/d/actor/d_a_obj_mirror_chain.cpp b/src/d/actor/d_a_obj_mirror_chain.cpp
index 3436a0d3b0..63368abb13 100644
--- a/src/d/actor/d_a_obj_mirror_chain.cpp
+++ b/src/d/actor/d_a_obj_mirror_chain.cpp
@@ -7,186 +7,280 @@
#include "d/actor/d_a_obj_mirror_chain.h"
#include "d/d_com_inf_game.h"
-#include "dol2asm.h"
/* 80C98080-80C98084 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
static char const* l_arcName = "MR-Chain";
-/* ############################################################################################## */
-/* 80C98028-80C9802C 000000 0004+00 2/2 0/0 0/0 .rodata @3915 */
-SECTION_RODATA static u32 const lit_3915 = 0x3C8EFA35;
-COMPILER_STRIP_GATE(0x80C98028, &lit_3915);
-
-/* 80C9802C-80C98030 000004 0004+00 0/1 0/0 0/0 .rodata @3916 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3916 = 0.5f;
-COMPILER_STRIP_GATE(0x80C9802C, &lit_3916);
-#pragma pop
-
-/* 80C98034-80C98038 00000C 0004+00 0/1 0/0 0/0 .rodata @3918 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3918 = 2.0f;
-COMPILER_STRIP_GATE(0x80C98034, &lit_3918);
-#pragma pop
-
-/* 80C98038-80C9803C 000010 0004+00 0/1 0/0 0/0 .rodata @3919 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3919 = 304.0f;
-COMPILER_STRIP_GATE(0x80C98038, &lit_3919);
-#pragma pop
-
-/* 80C9803C-80C98040 000014 0004+00 0/1 0/0 0/0 .rodata @3920 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3920 = 608.0f;
-COMPILER_STRIP_GATE(0x80C9803C, &lit_3920);
-#pragma pop
-
-/* 80C98040-80C98044 000018 0004+00 0/1 0/0 0/0 .rodata @3921 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3921 = 224.0f;
-COMPILER_STRIP_GATE(0x80C98040, &lit_3921);
-#pragma pop
-
-/* 80C98044-80C98048 00001C 0004+00 0/1 0/0 0/0 .rodata @3922 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3922 = 448.0f;
-COMPILER_STRIP_GATE(0x80C98044, &lit_3922);
-#pragma pop
-
-/* 80C98048-80C98050 000020 0004+04 1/3 0/0 0/0 .rodata @3923 */
-SECTION_RODATA static f32 const lit_3923[1 + 1 /* padding */] = {
- 1.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80C98048, &lit_3923);
-
-/* 80C98050-80C98058 000028 0008+00 0/1 0/0 0/0 .rodata @3925 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3925[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80C98050, &lit_3925);
-#pragma pop
-
/* 80C98138-80C98148 000000 0010+00 2/2 0/0 0/0 .bss l_scissor */
static u32 l_scissor[4];
+#if DEBUG
+static u8 l_begin;
+#endif
+
/* 80C96698-80C96DAC 000078 0714+00 1/0 0/0 0/0 .text draw__22dScissorBegin_packet_cFv */
+// NONMATCHING - slight stack order issue
void dScissorBegin_packet_c::draw() {
- // NONMATCHING
-}
+ GXGetScissor(&l_scissor[0], &l_scissor[1], &l_scissor[2], &l_scissor[3]);
+
+ #if DEBUG
+ JUT_ASSERT(76, !l_begin);
+ l_begin = TRUE;
+ #endif
+
+ f32 var_f31 = FLT_MAX;
+ f32 var_f30 = FLT_MAX;
+ f32 sp7C = -FLT_MAX;
+ f32 sp78 = -FLT_MAX;
+ f32 sp74 = -FLT_MAX;
+
+ f32 sp70 = l_scissor[0];
+ f32 sp6C = sp70 + l_scissor[2];
+ f32 sp68 = l_scissor[1];
+ f32 sp64 = sp68 + l_scissor[3];
+
+ cXyz spEC[4];
+ cXyz sp11C;
+ int sp60 = 4;
+ view_class* view_p = dComIfGd_getView();
+ f32 sp58 = -view_p->near;
+
+ cXyz* sp54 = mQuad;
+ cXyz* var_r30 = spEC;
+
+ int sp50 = 0;
+ int sp4C = 0;
+
+ for (int i = 0; i < 4; i++) {
+ cMtx_multVec(view_p->viewMtx, sp54, var_r30);
+ if (var_r30->z >= sp58) {
+ sp50++;
+ } else {
+ sp4C = i;
+ }
+
+ sp54++;
+ var_r30++;
+ }
+
+ if (sp50 >= 4) {
+ GXSetScissor(FB_WIDTH + 1, FB_HEIGHT + 1, 0, 0);
+ return;
+ }
+
+ if (sp50 != 0) {
+ int sp44 = -1;
+
+ for (int i = 0; i < 4; i++) {
+ int sp3C = (sp4C + 1) % 4;
+ if (sp44 < 0) {
+ if (spEC[sp3C].z >= sp58) {
+ sp44 = sp3C;
+ }
+ } else if (spEC[sp3C].z < sp58) {
+ int sp38 = (sp44 + 3) % 4;
+ cXyz spE0 = spEC[sp44] - spEC[sp38];
+ f32 sp34 = (sp58 - spEC[sp38].z) / spE0.z;
+ spE0 *= sp34;
+ spEC[sp60] = spEC[sp38] + spE0;
+
+ sp60++;
+
+ spE0 = spEC[sp4C] - spEC[sp3C];
+ sp34 = (sp58 - spEC[sp3C].z) / spE0.z;
+ spE0 *= sp34;
+ spEC[sp4C] = spEC[sp3C] + spE0;
+
+ for (int sp30 = sp44; sp30 != sp4C; sp30 = (sp30 + 1) % 4) {
+ spEC[sp30] = spEC[sp4C];
+ }
+ break;
+ }
+
+ sp4C = (sp4C + 1) % 4;
+ }
+ }
+
+ f32 sp2C = view_p->fovy;
+ f32 sp28 = view_p->aspect;
+ f32 sp24 = std::tan(0.017453292f * (0.5f * sp2C));
+
+ f32 sp20, sp1C, sp18, sp14;
+ view_port_class* viewport_p = dComIfGd_getViewport();
+ if (0.0f != viewport_p->x_orig) {
+ sp20 = (0.5f * ((2.0f * viewport_p->x_orig) + viewport_p->width)) - (FB_WIDTH / 2);
+ sp18 = FB_WIDTH;
+ } else {
+ sp20 = viewport_p->x_orig;
+ sp18 = viewport_p->width;
+ }
+
+ if (0.0f != viewport_p->y_orig) {
+ sp1C = (0.5f * ((2.0f * viewport_p->y_orig) + viewport_p->height)) - (FB_HEIGHT / 2);
+ sp14 = FB_HEIGHT;
+ } else {
+ sp1C = viewport_p->y_orig;
+ sp14 = viewport_p->height;
+ }
+
+ var_r30 = spEC;
+ for (int i = 0; i < sp60; i++) {
+ var_r30->y = var_r30->y / (var_r30->z * sp24);
+ var_r30->x = var_r30->x / (sp28 * (-var_r30->z * sp24));
-// Temporary fake function to make the cXyz destructor appear here
-// delete once dScissorBegin_packet_c::draw() is matched
-static void fake() {
- cXyz vec;
- vec.normalize();
+ #if WIDESCREEN_SUPPORT
+ if (mDoGph_gInf_c::isWideZoom()) {
+ var_r30->x *= mDoGph_gInf_c::getScale();
+ var_r30->y *= mDoGph_gInf_c::getScale();
+ }
+ #endif
+
+ var_r30->x = sp20 + ((1.0f + var_r30->x) * (0.5f * sp18));
+ var_r30->y = sp1C + ((1.0f + var_r30->y) * (0.5f * sp14));
+
+ if (var_r30->x < var_f31) {
+ var_f31 = var_r30->x;
+ }
+ if (var_r30->x > sp7C) {
+ sp7C = var_r30->x;
+ }
+ if (var_r30->y < var_f30) {
+ var_f30 = var_r30->y;
+ }
+ if (var_r30->y > sp78) {
+ sp78 = var_r30->y;
+ }
+ if (var_r30->z > sp74) {
+ sp74 = var_r30->z;
+ }
+
+ var_r30++;
+ }
+
+ var_r30 = spEC;
+ cXyz spD4 = var_r30[1] - var_r30[0];
+ cXyz spC8;
+ cXyz spBC(0.0f, 0.0f, 1.0f);
+ for (int i = 0; i < 2; i++) {
+ var_r30++;
+ spC8 = var_r30[1] - var_r30[0];
+ if (!spD4.isZero()) {
+ spBC = spD4.outprod(spC8);
+ if (spBC.z < 0.0f) {
+ break;
+ }
+ }
+
+ spD4 = spC8;
+ }
+
+ if (spBC.z < 0.0f || var_f31 > sp6C || sp7C < sp70 || var_f30 > sp64 || sp78 < sp68) {
+ GXSetScissor(FB_WIDTH + 1, FB_HEIGHT + 1, 0, 0);
+ } else {
+ var_f31 = cLib_minLimit<f32>(var_f31, sp70);
+ sp7C = cLib_maxLimit<f32>(sp7C, sp6C);
+ var_f30 = cLib_minLimit<f32>(var_f30, sp68);
+ sp78 = cLib_maxLimit<f32>(sp78, sp64);
+ GXSetScissor((u32)var_f31, (u32)var_f30, (u32)(sp7C - var_f31), (u32)(sp78 - var_f30));
+ }
}
/* 80C96DE8-80C96E20 0007C8 0038+00 1/0 0/0 0/0 .text draw__20dScissorEnd_packet_cFv */
void dScissorEnd_packet_c::draw() {
+ #if DEBUG
+ JUT_ASSERT(246, l_begin);
+ l_begin = FALSE;
+ #endif
+
GXSetScissor(l_scissor[0], l_scissor[1], l_scissor[2], l_scissor[3]);
}
/* 80C96E20-80C96E40 000800 0020+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
static int createSolidHeap(fopAc_ac_c* i_this) {
- return static_cast<daObjMirrorChain_c*>(i_this)->createHeap();
+ return ((daObjMirrorChain_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 80C98058-80C98060 000030 0008+00 1/1 0/0 0/0 .rodata @4164 */
-SECTION_RODATA static u8 const lit_4164[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80C98058, &lit_4164);
-
-extern void* __vt__12J3DFrameCtrl[3];
-
/* 80C96E40-80C975A4 000820 0764+00 1/1 0/0 0/0 .text createHeap__18daObjMirrorChain_cFv
*/
int daObjMirrorChain_c::createHeap() {
- J3DModelData* model_data;
+ J3DModelData* modelData;
+
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
- model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 16);
- mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000284);
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 16);
+ JUT_ASSERT(306, modelData != NULL);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
- J3DAnmTevRegKey* brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 21);
+ J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 21);
+ JUT_ASSERT(316, brk != NULL);
mpBrkAnm = new mDoExt_brkAnm();
- if (mpBrkAnm == NULL || !mpBrkAnm->init(model_data, brk_anm, 1, 2, 1.0f, 0, -1)) {
+ if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, brk, 1, 2, 1.0f, 0, -1)) {
return 0;
}
} else {
- model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 15);
- mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084);
+ modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 15);
+ JUT_ASSERT(323, modelData != NULL);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
mpBrkAnm = NULL;
}
+
if (mpModel == NULL) {
return 0;
}
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
- J3DModelData* portal_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
- mpPortalModel = mDoExt_J3DModel__create(portal_model_data, 0, 0x11000084);
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
+ JUT_ASSERT(336, modelData != NULL);
+ mpPortalModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
if (mpPortalModel == NULL) {
return 0;
}
- J3DAnmTransform* bck_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9);
+ J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9);
+ JUT_ASSERT(344, bck != NULL);
mpBckAnm = new mDoExt_bckAnm();
- if (mpBckAnm == NULL
- || !mpBckAnm->init(bck_anm, 1, 2, 1.0f, 0, -1, false))
- {
+ if (mpBckAnm == NULL || !mpBckAnm->init(bck, 1, 2, 1.0f, 0, -1, false)) {
return 0;
}
mpBckAnm->setEndFrame(300);
- J3DAnmTevRegKey* portal_brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 20);
+ J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 20);
+ JUT_ASSERT(353, brk != NULL);
mpPortalBrkAnm = new mDoExt_brkAnm();
- if (mpPortalBrkAnm == NULL
- || !mpPortalBrkAnm->init(portal_model_data, portal_brk_anm, 1, 2, 1.0f, 0, -1))
+ if (mpPortalBrkAnm == NULL || !mpPortalBrkAnm->init(modelData, brk, 1, 0, 1.0f, 0, -1))
{
return 0;
}
- mpPortalBrkAnm->setFrame(portal_brk_anm->getFrameMax());
+ mpPortalBrkAnm->setFrame(brk->getFrameMax());
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 26);
if (mBgW[1].Set(dzb, 1, &mMtx)) {
return 0;
}
+
mBgW[0] = mBgW[1];
} else {
- J3DAnmTransform* bck_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(367, bck != NULL);
mpBckAnm = new mDoExt_bckAnm();
- bool b = fopAcM_isSwitch(this, getSwitchNo())
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
- || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]);
- f32 rate = b ? 1.0f : 0.0f;
- if (mpBckAnm == NULL
- || !mpBckAnm->init(bck_anm, 1, 0, rate, 0, -1, false))
+
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ f32 rate = (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) ? 1.0f : 0.0f;
+ if (mpBckAnm == NULL || !mpBckAnm->init(bck, 1, 0, rate, 0, -1, false))
{
return 0;
}
- if (fopAcM_isSwitch(this, getSwitchNo())
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
- || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]))
- {
- mpBckAnm->setFrame(bck_anm->getFrameMax());
+
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ if (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) {
+ mpBckAnm->setFrame(bck->getFrameMax());
}
- J3DAnmTevRegKey* brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 19);
+ J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 19);
+ JUT_ASSERT(381, brk != NULL);
mpBrkAnm = new mDoExt_brkAnm();
- if (mpBrkAnm == NULL
- || !mpBrkAnm->init(model_data, brk_anm, 1, 0, 1.0f, 0, -1))
+ if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, brk, 1, 0, 0.0f, 0, -1))
{
return 0;
}
@@ -208,13 +302,6 @@ int daObjMirrorChain_c::createHeap() {
return 1;
}
-
-/* 80C975A4-80C975EC 000F84 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
-}
-
/* 80C975EC-80C97618 000FCC 002C+00 1/1 0/0 0/0 .text initBaseMtx__18daObjMirrorChain_cFv
*/
void daObjMirrorChain_c::initBaseMtx() {
@@ -228,9 +315,11 @@ void daObjMirrorChain_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+
if (mpPortalModel != NULL) {
mpPortalModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
+
MTXCopy(mDoMtx_stack_c::get(), mMtx);
mpActiveBgW->Move();
}
@@ -243,32 +332,40 @@ static int daObjMirrorChain_Draw(daObjMirrorChain_c* i_this) {
/* 80C976B8-80C97968 001098 02B0+00 1/1 0/0 0/0 .text draw__18daObjMirrorChain_cFv */
int daObjMirrorChain_c::draw() {
- static f32 const SCISSOR_CENTER_X = 1799.2f;
- static f32 const SCISSOR_CENTER_Y = 4779.58f;
- static f32 const SCISSOR_CENTER_Z = -23024.53f;
- static f32 const SCISSOR_SIZE = 984.0f;
+ static const f32 SCISSOR_CENTER_X = 1799.2f;
+ static const f32 SCISSOR_CENTER_Y = 4779.58f;
+ static const f32 SCISSOR_CENTER_Z = -23024.53f;
+ static const f32 SCISSOR_SIZE = 984.0f;
+
g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
g_env_light.setLightTevColorType_MAJI(mpPortalModel, &tevStr);
+
if (mpBckAnm != NULL) {
mpBckAnm->entry(mpPortalModel->getModelData());
}
+
if (mpBrkAnm != NULL) {
mpBrkAnm->entry(mpModel->getModelData());
}
+
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->entry(mpPortalModel->getModelData());
}
+
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
+
static Vec l_offsetScissor[4] = {
{SCISSOR_CENTER_X - SCISSOR_SIZE / 2, SCISSOR_CENTER_Y + SCISSOR_SIZE, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X + SCISSOR_SIZE / 2, SCISSOR_CENTER_Y + SCISSOR_SIZE, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X + SCISSOR_SIZE / 2, SCISSOR_CENTER_Y, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X - SCISSOR_SIZE / 2, SCISSOR_CENTER_Y, SCISSOR_CENTER_Z},
};
+
cXyz* quad = mScissorBegin.getQuad();
PSMTXMultVecArray(mpModel->getBaseTRMtx(), l_offsetScissor, quad, 4);
j3dSys.setDrawBuffer(dComIfGd_getXluListBG(), 0);
@@ -276,12 +373,15 @@ int daObjMirrorChain_c::draw() {
mDoExt_modelUpdateDL(mpPortalModel);
mScissorBegin.entryPacket();
dComIfGd_setList();
+
if (mpBckAnm != NULL) {
mpBckAnm->remove(mpPortalModel->getModelData());
}
+
if (mpBrkAnm != NULL) {
mpBrkAnm->remove(mpModel->getModelData());
}
+
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->remove(mpPortalModel->getModelData());
}
@@ -289,19 +389,24 @@ int daObjMirrorChain_c::draw() {
if (mpBckAnm != NULL) {
mpBckAnm->entry(mpModel->getModelData());
}
+
if (mpBrkAnm != NULL) {
mpBrkAnm->entry(mpModel->getModelData());
}
+
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
+
if (mpBckAnm != NULL) {
mpBckAnm->remove(mpModel->getModelData());
}
+
if (mpBrkAnm != NULL) {
mpBrkAnm->remove(mpModel->getModelData());
}
}
+
return 1;
}
@@ -311,83 +416,22 @@ static int daObjMirrorChain_Execute(daObjMirrorChain_c* i_this) {
return i_this->execute();
}
-// this should come automatically from the static data in draw() but it does not
-
-/* ############################################################################################## */
-/* 80C98060-80C98064 000038 0004+00 0/0 0/0 0/0 .rodata
- * SCISSOR_CENTER_X$localstatic3$draw__18daObjMirrorChain_cFv */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const data_80C98060[4] = {
- 0x44,
- 0xE0,
- 0xE6,
- 0x66,
-};
-COMPILER_STRIP_GATE(0x80C98060, &data_80C98060);
-#pragma pop
-
-/* 80C98064-80C98068 00003C 0004+00 0/0 0/0 0/0 .rodata
- * SCISSOR_CENTER_Y$localstatic4$draw__18daObjMirrorChain_cFv */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const data_80C98064[4] = {
- 0x45,
- 0x95,
- 0x5C,
- 0xA4,
-};
-COMPILER_STRIP_GATE(0x80C98064, &data_80C98064);
-#pragma pop
-
-/* 80C98068-80C9806C 000040 0004+00 0/0 0/0 0/0 .rodata
- * SCISSOR_CENTER_Z$localstatic5$draw__18daObjMirrorChain_cFv */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const data_80C98068[4] = {
- 0xC6,
- 0xB3,
- 0xE1,
- 0x0F,
-};
-COMPILER_STRIP_GATE(0x80C98068, &data_80C98068);
-#pragma pop
-
-/* 80C9806C-80C98070 000044 0004+00 0/0 0/0 0/0 .rodata
- * SCISSOR_SIZE$localstatic6$draw__18daObjMirrorChain_cFv */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const data_80C9806C[4] = {
- 0x44,
- 0x76,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80C9806C, &data_80C9806C);
-#pragma pop
-
-/* 80C98070-80C98074 000048 0004+00 0/1 0/0 0/0 .rodata @4494 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4494 = -1.0f;
-COMPILER_STRIP_GATE(0x80C98070, &lit_4494);
-#pragma pop
-
/* 80C97988-80C97BA4 001368 021C+00 1/1 0/0 0/0 .text execute__18daObjMirrorChain_cFv */
int daObjMirrorChain_c::execute() {
if (mpBckAnm != NULL) {
mpBckAnm->play();
}
+
if (mpBrkAnm != NULL) {
mpBrkAnm->play();
}
+
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->play();
}
- /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
- if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])
- && mpBckAnm != NULL && mpBckAnm->getPlaySpeed() > 0.0f) {
+ /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
+ if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]) && mpBckAnm != NULL && mpBckAnm->getPlaySpeed() > 0.0f) {
if (mpActiveBgW == &mBgW[0]) {
dComIfG_Bgsp().Release(&mBgW[0]);
dComIfG_Bgsp().Regist(&mBgW[1], this);
@@ -396,7 +440,7 @@ int daObjMirrorChain_c::execute() {
}
if (mpEmitter == NULL) {
- mpEmitter = dComIfGp_particle_set(0x8acc, &current.pos, &shape_angle, NULL);
+ mpEmitter = dComIfGp_particle_set(dPa_RM(ID_ZF_S_D32_01_MONO02SAND), &current.pos, &shape_angle, NULL);
cXyz pos;
mDoMtx_stack_c::copy(mpModel->getAnmMtx(1));
mDoMtx_stack_c::multVecZero(&pos);
@@ -412,7 +456,6 @@ int daObjMirrorChain_c::execute() {
return 1;
}
-
/* 80C97BA4-80C97BAC 001584 0008+00 1/0 0/0 0/0 .text
* daObjMirrorChain_IsDelete__FP18daObjMirrorChain_c */
static int daObjMirrorChain_IsDelete(daObjMirrorChain_c* i_this) {
@@ -423,9 +466,11 @@ daObjMirrorChain_c::~daObjMirrorChain_c() {
if (mBgW[0].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgW[0]);
}
+
if (mBgW[1].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgW[1]);
}
+
dComIfG_resDelete(&mPhaseReq, l_arcName);
}
@@ -438,40 +483,41 @@ static int daObjMirrorChain_Delete(daObjMirrorChain_c* i_this) {
}
void daObjMirrorChain_c::create_init() {
- if (mpBckAnm != NULL
- /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
- && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
+ /* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
+ if (mpBckAnm != NULL && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
mpBckAnm->setPlaySpeed(0.0f);
}
+
mpEmitter = NULL;
mBgW[0].SetCrrFunc(NULL);
mBgW[0].SetRoomId(fopAcM_GetRoomNo(this));
mBgW[1].SetCrrFunc(NULL);
mBgW[1].SetRoomId(fopAcM_GetRoomNo(this));
- bool b = fopAcM_isSwitch(this, getSwitchNo())
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
- || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]);
- mpActiveBgW = b ? &mBgW[1] : &mBgW[0];
+
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ mpActiveBgW = (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) ? &mBgW[1] : &mBgW[0];
dComIfG_Bgsp().Regist(mpActiveBgW, this);
initBaseMtx();
}
cPhs__Step daObjMirrorChain_c::create() {
fopAcM_ct(this, daObjMirrorChain_c);
- cPhs__Step step = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
- if (step == cPhs_COMPLEATE_e) {
+
+ cPhs__Step phase_state = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
+ if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x71b0)) {
return cPhs_ERROR_e;
}
create_init();
}
- return step;
+
+ return phase_state;
}
/* 80C97D24-80C97F3C 001704 0218+00 1/0 0/0 0/0 .text daObjMirrorChain_Create__FP10fopAc_ac_c */
static cPhs__Step daObjMirrorChain_Create(fopAc_ac_c* i_this) {
fopAcM_GetID(i_this);
- return static_cast<daObjMirrorChain_c*>(i_this)->create();
+ return ((daObjMirrorChain_c*)i_this)->create();
}
/* 80C980B4-80C980D4 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirrorChain_Method */
@@ -500,10 +546,3 @@ extern actor_process_profile_definition g_profile_Obj_MirrorChain = {
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};
-
-/* 80C98104-80C98110 000084 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
diff --git a/src/d/actor/d_a_obj_octhashi.cpp b/src/d/actor/d_a_obj_octhashi.cpp
index b291664040..013ab862e4 100644
--- a/src/d/actor/d_a_obj_octhashi.cpp
+++ b/src/d/actor/d_a_obj_octhashi.cpp
@@ -187,8 +187,8 @@ void daObjOCTHASHI_c::SphAction() {
f32 fvals_3888[2] = {2.125f, 0.0f};
f32 fvals_3889[2] = {0.0f, 0.0f};
f32 fval_3890[1] = {2000.0f};
- f32 fval_3903[1] = {608.0f};
- f32 fval_3904[1] = {448.0f};
+ f32 fval_3903[1] = {FB_WIDTH};
+ f32 fval_3904[1] = {FB_HEIGHT};
for (int idx = 0; idx < mPieceNum; ++idx) {
if (mColliders[idx].ChkCoHit()) {
fopAc_ac_c* hit_actor = dCc_GetAc(mColliders[idx].GetCoHitObj()->GetAc());
diff --git a/src/d/actor/d_a_obj_rstair.cpp b/src/d/actor/d_a_obj_rstair.cpp
index c5f90996f3..5b4d6c90da 100644
--- a/src/d/actor/d_a_obj_rstair.cpp
+++ b/src/d/actor/d_a_obj_rstair.cpp
@@ -346,7 +346,9 @@ int daObjRotStair_c::Draw() {
Mtx lightMtx;
C_MTXLightPerspective(lightMtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
+ #if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightMtx);
+ #endif
texMtxInfo->setEffectMtx(lightMtx);
modelData->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp
index a6433d378d..ce6e576b2a 100644
--- a/src/d/actor/d_a_obj_ten.cpp
+++ b/src/d/actor/d_a_obj_ten.cpp
@@ -624,8 +624,8 @@ void daObjTEN_c::Z_BufferChk() {
} else {
trimHeight = 0.0f;
}
- if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight &&
- local_5c.y < 448.0f - trimHeight)
+ if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH && local_5c.y > trimHeight &&
+ local_5c.y < FB_HEIGHT - trimHeight)
{
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x61c);
}
diff --git a/src/d/actor/d_a_obj_thashi.cpp b/src/d/actor/d_a_obj_thashi.cpp
index a66b59c8c8..a01da21a5d 100644
--- a/src/d/actor/d_a_obj_thashi.cpp
+++ b/src/d/actor/d_a_obj_thashi.cpp
@@ -90,8 +90,8 @@ static void dataStripping2() {
stripFloat(3.0f);
stripFloat(2000.0f);
- stripFloat(608.0f);
- stripFloat(448.0f);
+ stripFloat(FB_WIDTH);
+ stripFloat(FB_HEIGHT);
}
/* 80D0C298-80D0C2B8 0000D8 0020+00 1/0 0/0 0/0 .text daObjTHASHI_Create__FP10fopAc_ac_c
diff --git a/src/d/actor/d_a_obj_tombo.cpp b/src/d/actor/d_a_obj_tombo.cpp
index 22c837165a..fea30f10c7 100644
--- a/src/d/actor/d_a_obj_tombo.cpp
+++ b/src/d/actor/d_a_obj_tombo.cpp
@@ -543,8 +543,8 @@ void daObjTOMBO_c::Z_BufferChk() {
} else {
trimHeight = 0.0f;
}
- if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight &&
- local_5c.y < 448.0f - trimHeight)
+ if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH && local_5c.y > trimHeight &&
+ local_5c.y < FB_HEIGHT - trimHeight)
{
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x754);
}
diff --git a/src/d/actor/d_a_obj_tp.cpp b/src/d/actor/d_a_obj_tp.cpp
index 7d1d3a4b1e..15beae19a7 100644
--- a/src/d/actor/d_a_obj_tp.cpp
+++ b/src/d/actor/d_a_obj_tp.cpp
@@ -39,7 +39,9 @@ static int daObj_Tp_Draw(obj_tp_class* i_this) {
Mtx lightProjMtx;
C_MTXLightPerspective(lightProjMtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
+ #if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightProjMtx);
+ #endif
texMtxInfo->setEffectMtx(lightProjMtx);
modelData->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
diff --git a/src/d/actor/d_a_obj_zra_freeze.cpp b/src/d/actor/d_a_obj_zra_freeze.cpp
index 24b1cff7d0..250bcf5d6e 100644
--- a/src/d/actor/d_a_obj_zra_freeze.cpp
+++ b/src/d/actor/d_a_obj_zra_freeze.cpp
@@ -44,7 +44,7 @@ BOOL daZraFreeze_c::chkActorInScreen() {
PSMTXMultVecArray(mDoMtx_stack_c::get(), vec, vec, 8);
for (int i = 0; i < 8; i++) {
mDoLib_project(&vec[i], &proj);
- if (0.0f < proj.x && proj.x < 608.0f && 0.0f < proj.y && proj.y < 448.0f) {
+ if (0.0f < proj.x && proj.x < FB_WIDTH && 0.0f < proj.y && proj.y < FB_HEIGHT) {
continue;
}
return false;
diff --git a/src/d/actor/d_a_tag_attack_item.cpp b/src/d/actor/d_a_tag_attack_item.cpp
index 5a7f51b3c0..23e42f479f 100644
--- a/src/d/actor/d_a_tag_attack_item.cpp
+++ b/src/d/actor/d_a_tag_attack_item.cpp
@@ -1,114 +1,8 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d_a_tag_attack_item
-//
-
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_tag_attack_item.h"
#include "SSystem/SComponent/c_math.h"
#include "d/actor/d_a_player.h"
-#include "d/d_com_inf_game.h"
-#include "d/d_event_lib.h"
-#include "dol2asm.h"
-
-
-// need to figure out how to use dEvLib_callback_c properly
-class daTagAtkItem_c : public fopAc_ac_c , public dEvLib_callback_c {
-public:
- /* 805A2958 */ void setBaseMtx();
- /* 805A2990 */ int Create();
- /* 805A2A34 */ int create();
- /* 805A2C48 */ int execute();
- /* 805A2CA8 */ void action();
- /* 805A2D58 */ BOOL checkHit();
- /* 805A2F54 */ void createItem();
- /* 805A3038 */ int _delete();
-
- /* 805A3118 */ ~daTagAtkItem_c();
- /* 805A2D10 */ bool eventStart();
- /* 805A2D34 */ bool eventEnd();
-
- u8 getEvId() { return fopAcM_GetParamBit(this, 0x18, 8); }
- u8 getNum() { return fopAcM_GetParamBit(this, 8, 8); }
- u8 getItemBit() { return fopAcM_GetParamBit(this, 0x10, 8); }
- u8 getItemNo() { return fopAcM_GetParamBit(this, 0, 8); }
-
- /* 0x568 */ u8 temp[0x57C - 0x568]; // remove when dEvLib_callback_c setup
- /* 0x57C */ u8 field_0x57C[0x584 - 0x57C];
- /* 0x584 */ dCcD_Stts mCcStts;
- /* 0x5C0 */ dCcD_Cyl mCyl;
-};
-
-//
-// Forward References:
-//
-
-extern "C" void setBaseMtx__14daTagAtkItem_cFv();
-extern "C" void Create__14daTagAtkItem_cFv();
-extern "C" void create__14daTagAtkItem_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void execute__14daTagAtkItem_cFv();
-extern "C" void action__14daTagAtkItem_cFv();
-extern "C" void eventStart__14daTagAtkItem_cFv();
-extern "C" void eventEnd__14daTagAtkItem_cFv();
-extern "C" void checkHit__14daTagAtkItem_cFv();
-extern "C" void createItem__14daTagAtkItem_cFv();
-extern "C" bool _delete__14daTagAtkItem_cFv();
-extern "C" static void daTagAtkItem_Execute__FP14daTagAtkItem_c();
-extern "C" static void daTagAtkItem_Delete__FP14daTagAtkItem_c();
-extern "C" static void daTagAtkItem_Create__FP14daTagAtkItem_c();
-extern "C" void __dt__17dEvLib_callback_cFv();
-extern "C" bool eventRun__17dEvLib_callback_cFv();
-extern "C" bool eventStart__17dEvLib_callback_cFv();
-extern "C" bool eventEnd__17dEvLib_callback_cFv();
-extern "C" static void func_805A3100();
-extern "C" static void func_805A3108();
-extern "C" static void func_805A3110();
-extern "C" void __dt__14daTagAtkItem_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-
-//
-// External References:
-//
-
-extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
-extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb();
-extern "C" void eventUpdate__17dEvLib_callback_cFv();
-extern "C" void orderEvent__17dEvLib_callback_cFiii();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __ct__5csXyzFsss();
-extern "C" void cM_rndFX__Ff();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-
-//
-// Declarations:
-//
/* 805A2958-805A2990 000078 0038+00 1/1 0/0 0/0 .text setBaseMtx__14daTagAtkItem_cFv */
void daTagAtkItem_c::setBaseMtx() {
@@ -143,103 +37,16 @@ int daTagAtkItem_c::Create() {
return 1;
}
-/* ############################################################################################## */
-/* 805A3338-805A3358 -00001 0020+00 1/0 0/0 0/0 .data l_daTagAtkItem_Method */
-SECTION_DATA static void* l_daTagAtkItem_Method[8] = {
- (void*)daTagAtkItem_Create__FP14daTagAtkItem_c,
- (void*)daTagAtkItem_Delete__FP14daTagAtkItem_c,
- (void*)daTagAtkItem_Execute__FP14daTagAtkItem_c,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
-};
-
-/* 805A3358-805A3388 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_AttackItem */
-SECTION_DATA extern void* g_profile_Tag_AttackItem[12] = {
- (void*)0xFFFFFFFD, (void*)0x0007FFFD,
- (void*)0x01AA0000, (void*)&g_fpcLf_Method,
- (void*)0x000006FC, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x02490000, (void*)&l_daTagAtkItem_Method,
- (void*)0x00040000, (void*)0x000E0000,
-};
-
-/* 805A3388-805A33B4 000094 002C+00 2/2 0/0 0/0 .data __vt__14daTagAtkItem_c */
-SECTION_DATA extern void* __vt__14daTagAtkItem_c[11] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)func_805A3110,
- (void*)func_805A3108,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)func_805A3100,
- (void*)__dt__14daTagAtkItem_cFv,
- (void*)eventStart__14daTagAtkItem_cFv,
- (void*)eventEnd__14daTagAtkItem_cFv,
-};
-
-/* 805A33B4-805A33C0 0000C0 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
-
-/* 805A33C0-805A33CC 0000CC 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
-
-/* 805A33CC-805A33D8 0000D8 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 805A33D8-805A33E4 0000E4 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 805A33E4-805A33FC 0000F0 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */
-SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17dEvLib_callback_cFv,
- (void*)eventStart__17dEvLib_callback_cFv,
- (void*)eventRun__17dEvLib_callback_cFv,
- (void*)eventEnd__17dEvLib_callback_cFv,
-};
-
/* 805A2A34-805A2B5C 000154 0128+00 1/1 0/0 0/0 .text create__14daTagAtkItem_cFv */
int daTagAtkItem_c::create() {
- // NONMATCHING
-}
-
-/* 805A2B5C-805A2BA4 00027C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ fopAcM_ct(this, daTagAtkItem_c);
-/* 805A2BA4-805A2BEC 0002C4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ if (!Create()) {
+ return cPhs_ERROR_e;
+ }
-/* 805A2BEC-805A2C48 00030C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
+ OS_REPORT("攻撃反応アイテム:<%x>\n", fopAcM_GetParam(this));
+ return cPhs_COMPLEATE_e;
}
/* 805A2C48-805A2CA8 000368 0060+00 1/1 0/0 0/0 .text execute__14daTagAtkItem_cFv */
@@ -285,10 +92,8 @@ BOOL daTagAtkItem_c::checkHit() {
if (hitobj_p != NULL &&
(hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) || hitobj_p->ChkAtType(AT_TYPE_BOMB)))
{
-#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
- OSReport("攻撃反応アイテム:回転アタックヒット!\n");
-#endif
+ OS_REPORT("攻撃反応アイテム:回転アタックヒット!\n");
return true;
}
}
@@ -297,12 +102,10 @@ BOOL daTagAtkItem_c::checkHit() {
if ((player_p->checkFrontRollCrash() || player_p->checkWolfAttackReverse()) &&
player_p->current.pos.absXZ(current.pos) < scale.x * 50.0f &&
- fabsf(player_p->current.pos.y - current.pos.y) < scale.y * 100.0f)
+ std::fabs(player_p->current.pos.y - current.pos.y) < scale.y * 100.0f)
{
-#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
- OSReport("攻撃反応アイテム:回転アタックヒット!\n");
-#endif
+ OS_REPORT("攻撃反応アイテム:回転アタックヒット!\n");
return true;
}
@@ -353,54 +156,29 @@ static int daTagAtkItem_Create(daTagAtkItem_c* i_this) {
return i_this->create();
}
-/* 805A30A0-805A30E8 0007C0 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */
-// dEvLib_callback_c::~dEvLib_callback_c() {
-extern "C" void __dt__17dEvLib_callback_cFv() {
- // NONMATCHING
-}
-
-/* 805A30E8-805A30F0 000808 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */
-// bool dEvLib_callback_c::eventRun() {
-extern "C" bool eventRun__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 805A30F0-805A30F8 000810 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv
- */
-// bool dEvLib_callback_c::eventStart()() {
-extern "C" bool eventStart__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 805A30F8-805A3100 000818 0008+00 1/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */
-// bool dEvLib_callback_c::eventEnd() {
-extern "C" bool eventEnd__17dEvLib_callback_cFv() {
- return true;
-}
-
-/* 805A3100-805A3108 000820 0008+00 1/0 0/0 0/0 .text @1384@eventEnd__14daTagAtkItem_cFv
- */
-static void func_805A3100() {
- // NONMATCHING
-}
-
-/* 805A3108-805A3110 000828 0008+00 1/0 0/0 0/0 .text @1384@eventStart__14daTagAtkItem_cFv */
-static void func_805A3108() {
- // NONMATCHING
-}
-
-/* 805A3110-805A3118 000830 0008+00 1/0 0/0 0/0 .text @1384@__dt__14daTagAtkItem_cFv */
-static void func_805A3110() {
- // NONMATCHING
-}
-
-/* 805A3118-805A3278 000838 0160+00 2/1 0/0 0/0 .text __dt__14daTagAtkItem_cFv */
-daTagAtkItem_c::~daTagAtkItem_c() {
- // NONMATCHING
-}
+/* 805A3338-805A3358 -00001 0020+00 1/0 0/0 0/0 .data l_daTagAtkItem_Method */
+static actor_method_class l_daTagAtkItem_Method = {
+ (process_method_func)daTagAtkItem_Create,
+ (process_method_func)daTagAtkItem_Delete,
+ (process_method_func)daTagAtkItem_Execute,
+ (process_method_func)NULL,
+ (process_method_func)NULL,
+};
-/* 805A3278-805A32C0 000998 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
+/* 805A3358-805A3388 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_AttackItem */
+extern actor_process_profile_definition g_profile_Tag_AttackItem = {
+ fpcLy_CURRENT_e,
+ 7,
+ fpcPi_CURRENT_e,
+ PROC_Tag_AttackItem,
+ &g_fpcLf_Method.base,
+ sizeof(daTagAtkItem_c),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 585,
+ &l_daTagAtkItem_Method,
+ 0x40000,
+ fopAc_ACTOR_e,
+ fopAc_CULLBOX_CUSTOM_e,
+};
diff --git a/src/d/actor/d_a_title.cpp b/src/d/actor/d_a_title.cpp
index a3c49be95a..98b7c1e9c0 100644
--- a/src/d/actor/d_a_title.cpp
+++ b/src/d/actor/d_a_title.cpp
@@ -68,7 +68,7 @@ daTit_HIO_c::daTit_HIO_c() {
mPSPosX = 303.0f;
break;
case OS_LANGUAGE_FRENCH:
- mPSPosX = 304.0f;
+ mPSPosX = FB_WIDTH / 2;
break;
}
#else