d_a_obj_YLzou matching (#1118)

* Most simple functions match or almost matching

* Run format

* set_start_type except some regswap

* Fix set_start_type regswap

* create_heap match except instruction locations

* eff_set_slip_smoke_pos matching except for some offsets

* Remove unnecessary

* Capitalize some hex

* eff_smoke_slip_start matching except some offsets

* Remove debug map comment

* name emitter

* vib_proc matching except some offsets

* demo_regist_wait_act_proc match

* demo_vib_start_wait_act_proc 100%

* Remove useless return

* demo_vib_act_proc matching except instruction offsets

* format

* move_ylzou_demo_move_act_proc matching except for instruction locations

* Clean up unnecessary returns

* demo_end_wait_act_proc except instruction offset for instruction offsets

* format

* demo_regist_wait_act_init_proc matched

* demo_end_wait_act_init_proc matching except instruction offsets

* go_up_stairs_demo_move_start_wait_act_init_proc matching except instruction offsets

* go_up_stairs_demo_move_act_proc matching except instruction offsets

* formatting

* _execute matching

* _create matched

* _delete matching

* rename variable to match objdiff

* 100% match

* Cleanup

* Add matching for since it doesn't match for demo

* Match d_a_obj_YLzou

* Demo matching

* Demo matched

* Update d_a_obj_YLzou.cpp

* Format and type triforce_complete as BOOL

---------

Co-authored-by: WilliamArnett <arnettwilliam7@gmail.com>
This commit is contained in:
Lee, Derek
2026-09-20 20:33:32 -07:00
committed by GitHub
parent adfcecf5f9
commit 5725ecf675
3 changed files with 536 additions and 43 deletions
+1 -1
View File
@@ -1726,7 +1726,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_Itnak"),
ActorRel(NonMatching, "d_a_obj_Vds"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_Vteng"),
ActorRel(NonMatching, "d_a_obj_YLzou"),
ActorRel(Matching, "d_a_obj_YLzou"),
ActorRel(Matching, "d_a_obj_Yboil"),
ActorRel(Matching, "d_a_obj_adnno"),
ActorRel(Matching, "d_a_obj_ajav"),
+32 -5
View File
@@ -2,16 +2,24 @@
#define D_A_OBJ_YLZOU_H
#include "f_op/f_op_actor.h"
#include "d/actor/d_a_obj_movebox.h"
class daObjYLzou_c : public fopAc_ac_c {
public:
void param_get_swSave() const {}
enum Param_e {
PARAM_SWSAVE_W = 8,
PARAM_SWSAVE_S = 0,
};
typedef void (daObjYLzou_c::*ProcFunc)();
s32 param_get_swSave() const { return daObj::PrmAbstract(this, PARAM_SWSAVE_W, PARAM_SWSAVE_S); }
void set_start_type();
void set_mtx();
void init_mtx();
void solidHeapCB(fopAc_ac_c*);
void create_heap();
static BOOL solidHeapCB(fopAc_ac_c*);
bool create_heap();
void eff_set_slip_smoke_pos();
void eff_smoke_slip_start();
void eff_smoke_slip_end();
@@ -43,7 +51,26 @@ public:
bool _draw();
public:
/* Place member variables here */
};
/* 0x290 */ request_of_phase_process_class field_0x290;
/* 0x298 */ J3DModel* field_0x298;
/* 0x29C */ dBgW* field_0x29C;
/* 0x2A0 */ Mtx field_0x2A0;
/* 0x2D0 */ void (daObjYLzou_c::*field_0x2D0)();
/* 0x2DC */ int field_0x2DC;
/* 0x2E0 */ int field_0x2E0;
/* 0x2E4 */ s16 field_0x2E4;
/* 0x2E6 */ u8 field_0x2E6[0x2E8 - 0x2E6];
/* 0x2E8 */ BOOL field_0x2E8;
/* 0x2EC */ int field_0x2EC;
/* 0x2F0 */ daObjMovebox::EffSmokeCB mSmokeCbs[2];
/* 0x358 */ s16 field_0x358;
/* 0x35A */ u8 field_0x35A[0x35C - 0x35A];
/* 0x35C */ f32 field_0x35C;
/* 0x360 */ u8 field_0x360;
/* 0x361 */ u8 field_0x361;
/* 0x362 */ u8 field_0x362[0x364 - 0x362];
/* 0x364 */ int field_0x364;
/* 0x368 */ int field_0x368;
}; // Size: 0x36C
#endif /* D_A_OBJ_YLZOU_H */
+503 -37
View File
@@ -5,175 +5,641 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_obj_YLzou.h"
#include "res/Object/YLzou.h"
typedef enum {
ENUM_ONE_UNK_0000 = 0x0000,
ENUM_ONE_UNK_0006 = 0x0006,
ENUM_ONE_UNK_0007 = 0x0007,
ENUM_ONE_UNK_000B = 0x000B,
ENUM_ONE_UNK_000C = 0x000C,
ENUM_ONE_UNK_000D = 0x000D
} UNK_YLZOU_ENUM_ONE;
typedef enum { ENUM_TWO_UNK_0000 = 0x0000, ENUM_TWO_UNK_0001 = 0x0001, ENUM_TWO_UNK_0002 = 0x0002, ENUM_TWO_UNK_0003 = 0x0003 } UNK_YLZOU_ENUM_TWO;
namespace {
static const char l_arcname[] = "YLzou";
static const char l_move_ylzou_demo_name[] = "move_YLzou";
static const char l_go_up_stairs_demo_name[] = "go_up_stairs";
static const char l_go_up_stairs_demo2_name[] = "go_up_stairs2";
static char* l_demo_name[4] = {NULL, (char*)l_move_ylzou_demo_name, (char*)l_go_up_stairs_demo_name, (char*)l_go_up_stairs_demo2_name};
} // namespace
#if VERSION == VERSION_DEMO
class daObjYLzou_HIO_c : public JORReflexible {
public:
daObjYLzou_HIO_c();
virtual ~daObjYLzou_HIO_c() {};
void genMessage(JORMContext*);
public:
s8 m4;
f32 m8;
f32 mC;
f32 m10;
f32 m14;
f32 m18;
f32 m1C;
f32 m20;
u8 m24;
u8 m25;
u8 m26;
u8 m27;
u8 m28;
u8 m29;
u8 m2A;
};
daObjYLzou_HIO_c::daObjYLzou_HIO_c() {
m4 = -1;
m8 = 6.0f;
mC = 0.1f;
m10 = 2.0f;
m14 = 16384.0f;
m18 = 0.05f;
m1C = 0.8f;
m24 = 0;
m25 = 0;
m26 = 0;
m27 = 0;
m28 = 0;
m29 = 0;
m2A = 0;
}
#endif
/* 000000EC-000002B8 .text set_start_type__12daObjYLzou_cFv */
void daObjYLzou_c::set_start_type() {
/* Nonmatching */
UNK_YLZOU_ENUM_ONE unk_ylzou_enum_one;
BOOL triforce_complete = FALSE;
UNK_YLZOU_ENUM_TWO unk_ylzou_enum_two = ENUM_TWO_UNK_0000;
bool event_bit_3820 = false;
if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D04)) {
if (field_0x2E0 != 0xFF && fopAcM_isSwitch(this, field_0x2E0) == FALSE) {
unk_ylzou_enum_one = ENUM_ONE_UNK_0000;
unk_ylzou_enum_two = ENUM_TWO_UNK_0001;
} else {
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
event_bit_3820 = true;
}
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3A04)) {
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
event_bit_3820 = true;
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3804)) {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3820) == TRUE) {
unk_ylzou_enum_one = ENUM_ONE_UNK_0007;
unk_ylzou_enum_two = ENUM_TWO_UNK_0002;
} else {
unk_ylzou_enum_one = ENUM_ONE_UNK_000B;
}
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2D02)) {
unk_ylzou_enum_one = ENUM_ONE_UNK_0006;
event_bit_3820 = true;
} else if (dComIfGs_getTriforceNum() < 8) {
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3820) == TRUE) {
unk_ylzou_enum_one = ENUM_ONE_UNK_0007;
unk_ylzou_enum_two = ENUM_TWO_UNK_0002;
} else {
unk_ylzou_enum_one = ENUM_ONE_UNK_000B;
}
} else {
triforce_complete = TRUE;
if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_2C01)) {
unk_ylzou_enum_one = ENUM_ONE_UNK_000C;
} else if (!dComIfGs_isEventBit(dSv_event_flag_c::UNK_3980)) {
unk_ylzou_enum_one = ENUM_ONE_UNK_000D;
unk_ylzou_enum_two = ENUM_TWO_UNK_0003;
} else {
unk_ylzou_enum_one = ENUM_ONE_UNK_000C;
}
}
field_0x2DC = unk_ylzou_enum_one;
field_0x2E8 = triforce_complete;
field_0x2EC = unk_ylzou_enum_two;
if (!event_bit_3820) {
dComIfGs_offEventBit(dSv_event_flag_c::UNK_3820);
} else {
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3820);
}
}
/* 000002B8-00000374 .text set_mtx__12daObjYLzou_cFv */
void daObjYLzou_c::set_mtx() {
/* Nonmatching */
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0x35C * cM_ssin(field_0x358), current.pos.z);
mDoMtx_stack_c::XYZrotM(shape_angle);
field_0x298->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::scaleM(scale);
cMtx_copy(mDoMtx_stack_c::get(), field_0x2A0);
}
/* 00000374-000003B0 .text init_mtx__12daObjYLzou_cFv */
void daObjYLzou_c::init_mtx() {
/* Nonmatching */
field_0x298->setBaseScale(scale);
set_mtx();
}
/* 000003B0-000003D4 .text solidHeapCB__12daObjYLzou_cFP10fopAc_ac_c */
void daObjYLzou_c::solidHeapCB(fopAc_ac_c*) {
/* Nonmatching */
BOOL daObjYLzou_c::solidHeapCB(fopAc_ac_c* i_this) {
return ((daObjYLzou_c*)i_this)->create_heap();
}
/* 000003D4-000004F4 .text create_heap__12daObjYLzou_cFv */
void daObjYLzou_c::create_heap() {
/* Nonmatching */
bool daObjYLzou_c::create_heap() {
J3DModelData* model_data;
J3DModel* model;
dBgW* bgw;
bool res;
static s32 bdl_table[] = {dRes_INDEX_YLZOU_BDL_YLZOU_e, dRes_INDEX_YLZOU_BDL_YLZOU2_e};
static s32 dzb_table[] = {dRes_INDEX_YLZOU_DZB_YLZOU_e, dRes_INDEX_YLZOU_DZB_YLZOU2_e};
res = true;
model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcname, bdl_table[field_0x2E8]);
if (model_data == NULL) {
JUT_ASSERT(DEMO_SELECT(0x194, 0x198), FALSE);
res = false;
} else {
model = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000022);
field_0x298 = model;
model = field_0x298;
bgw = dBgW_NewSet((cBgD_t*)dComIfG_getObjectRes(l_arcname, dzb_table[field_0x2E8]), cBgW::MOVE_BG_e, &model->getBaseTRMtx());
field_0x29C = bgw;
if (field_0x298 == NULL || field_0x29C == NULL) {
res = false;
}
}
return res;
}
#if VERSION == VERSION_DEMO
static daObjYLzou_HIO_c l_HIO;
#endif
/* 000004F4-00000668 .text eff_set_slip_smoke_pos__12daObjYLzou_cFv */
void daObjYLzou_c::eff_set_slip_smoke_pos() {
/* Nonmatching */
static cXyz base_pos[(int)ARRAY_SIZE(mSmokeCbs)] = {cXyz(-240.0f, 0.0f, -240.0f), cXyz(240.0f, 0.0f, -240.0f)};
f32 new_z = current.pos.z + -1200;
f32 new_y = current.pos.y + -1550;
mDoMtx_stack_c::transS(current.pos.x, new_y, new_z);
mDoMtx_stack_c::YrotM(current.angle.y);
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
mDoMtx_stack_c::push();
mDoMtx_stack_c::transM(base_pos[i]);
mDoMtx_stack_c::multVecZero(&mSmokeCbs[i].field_0x20);
mSmokeCbs[i].field_0x2C.set(0, current.angle.y, 0);
mDoMtx_stack_c::pop();
}
}
/* 000006A4-000007AC .text eff_smoke_slip_start__12daObjYLzou_cFv */
void daObjYLzou_c::eff_smoke_slip_start() {
/* Nonmatching */
static cXyz scl(2.0f, 2.0f, 2.0f);
eff_set_slip_smoke_pos();
#if VERSION == VERSION_DEMO
scl.set((s16)l_HIO.m10, (s16)l_HIO.m10, (s16)l_HIO.m10);
#endif
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
JPABaseEmitter* emitter = dComIfGp_particle_setToon(
dPa_name::ID_AK_JT_ELEMENTSMOKE00,
&mSmokeCbs[i].field_0x20,
&mSmokeCbs[i].field_0x2C,
&scl,
0xB9,
&mSmokeCbs[i],
fopAcM_GetRoomNo(this),
NULL,
NULL,
NULL
);
if (emitter != NULL) {
emitter->setRate(2.0);
emitter->setDirectionalSpeed(15.0);
emitter->setSpread(0.15);
emitter->setLifeTime(0x1e);
}
}
}
/* 000007AC-0000080C .text eff_smoke_slip_end__12daObjYLzou_cFv */
void daObjYLzou_c::eff_smoke_slip_end() {
/* Nonmatching */
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
mSmokeCbs[i].remove();
}
}
/* 0000080C-0000086C .text eff_smoke_slip_remove__12daObjYLzou_cFv */
void daObjYLzou_c::eff_smoke_slip_remove() {
/* Nonmatching */
for (int i = 0; i < (int)ARRAY_SIZE(mSmokeCbs); ++i) {
mSmokeCbs[i].remove();
}
}
/* 0000086C-000008D0 .text eff_smoke_proc__12daObjYLzou_cFv */
void daObjYLzou_c::eff_smoke_proc() {
/* Nonmatching */
if (field_0x360 != field_0x361) {
if (field_0x361 == 1) {
eff_smoke_slip_start();
} else {
eff_smoke_slip_end();
}
field_0x360 = field_0x361;
} else {
if (field_0x360 == 1) {
eff_set_slip_smoke_pos();
}
}
}
/* 000008D0-000009A4 .text vib_proc__12daObjYLzou_cFv */
void daObjYLzou_c::vib_proc() {
/* Nonmatching */
if (field_0x364 != field_0x368) {
field_0x364 = field_0x368;
}
switch (field_0x364) {
case 1:
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
field_0x35C += DEMO_SELECT(l_HIO.m18, 0.05f);
if (field_0x35C > DEMO_SELECT(l_HIO.m1C, 0.8f)) {
field_0x35C = DEMO_SELECT(l_HIO.m1C, 0.8f);
}
break;
case 2:
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
field_0x35C -= DEMO_SELECT(l_HIO.m18, 0.05f);
if (field_0x35C < DEMO_SELECT(l_HIO.m20, 0.4f)) {
field_0x35C = DEMO_SELECT(l_HIO.m20, 0.4f);
}
break;
default:
field_0x358 += DEMO_SELECT((s16)l_HIO.m14, 0x4000);
field_0x35C -= DEMO_SELECT(l_HIO.m18 * 2.0f, 0.1f);
if (field_0x35C < 0.0f) {
field_0x35C = 0.0f;
}
break;
}
}
/* 000009A4-00000AE0 .text _create__12daObjYLzou_cFv */
cPhs_State daObjYLzou_c::_create() {
/* Nonmatching */
static u32 solidHeapSize_table[] = {0x5840, 0x49e0};
cPhs_State cphs_state;
fopAcM_ct(this, daObjYLzou_c);
if (fopAcM_IsFirstCreating(this)) {
field_0x2E0 = param_get_swSave();
set_start_type();
}
cphs_state = dComIfG_resLoad(&field_0x290, l_arcname);
if (cphs_state == cPhs_COMPLEATE_e) {
if (fopAcM_entrySolidHeap(this, solidHeapCB, solidHeapSize_table[field_0x2E8])) {
if (dComIfG_Bgsp()->Regist(field_0x29C, this)) {
cphs_state = cPhs_ERROR_e;
} else {
fopAcM_SetMtx(this, field_0x298->getBaseTRMtx());
setup_action(field_0x2DC);
init_mtx();
}
} else {
cphs_state = cPhs_ERROR_e;
}
}
#if VERSION == VERSION_DEMO
if (l_HIO.m4 < 0) {
l_HIO.m4 = mDoHIO_createChild("勇者像", &l_HIO); //Hero Statue
}
#endif
return cphs_state;
}
/* 00000AE0-00000B7C .text _delete__12daObjYLzou_cFv */
bool daObjYLzou_c::_delete() {
/* Nonmatching */
dComIfG_resDelete(&field_0x290, l_arcname);
eff_smoke_slip_remove();
if (DEMO_SELECT(TRUE, heap != NULL) && field_0x29C != NULL) {
if (field_0x29C->ChkUsed()) {
dComIfG_Bgsp()->Release(field_0x29C);
}
#if VERSION == VERSION_DEMO
}
if (l_HIO.m4 >= 0) {
mDoHIO_deleteChild(l_HIO.m4);
l_HIO.m4 = -1;
}
#else
field_0x29C = NULL;
}
#endif
return true;
}
/* 00000B7C-00000BD8 .text move_ylzou_demo_start_wait_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_start_wait_act_proc() {
/* Nonmatching */
if (field_0x2E0 != 0xFF) {
if (fopAcM_isSwitch(this, field_0x2E0) == TRUE) {
setup_action(1);
}
}
#if VERSION == VERSION_DEMO
if (l_HIO.m24 == 1) {
setup_action(4);
} else if (l_HIO.m26 == 1) {
setup_action(1);
}
#endif
}
/* 00000BD8-00000C70 .text demo_regist_wait_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_regist_wait_act_proc() {
/* Nonmatching */
if (field_0x2E4 != -1) {
if (eventInfo.checkCommandDemoAccrpt()) {
setup_action(field_0x2DC + 1);
return;
}
fopAcM_orderOtherEventId(this, field_0x2E4);
return;
}
field_0x2E4 = dComIfGp_evmng_getEventIdx(l_demo_name[field_0x2EC]);
}
/* 00000C70-00000D18 .text demo_vib_start_wait_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_vib_start_wait_act_proc() {
/* Nonmatching */
if (dComIfGp_evmng_existence(field_0x2E4)) {
int staff_idx = dComIfGp_evmng_getMyStaffId("YLzou", NULL, 0);
if (staff_idx != -1) {
if (strcmp(dComIfGp_getPEvtManager()->getMyNowCutName(staff_idx), "Vibrate") == 0) {
setup_action(field_0x2DC + 1);
}
}
}
}
/* 00000D18-00000E08 .text demo_vib_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_vib_act_proc() {
/* Nonmatching */
if (dComIfGp_evmng_existence(field_0x2E4)) {
int staff_idx = dComIfGp_evmng_getMyStaffId("YLzou", NULL, 0);
if (staff_idx != -1) {
if (strcmp(dComIfGp_getPEvtManager()->getMyNowCutName(staff_idx), "Move") == 0) {
setup_action(field_0x2DC + 1);
}
}
}
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_VIB, 0);
}
/* 00000E08-00000F0C .text move_ylzou_demo_move_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_move_act_proc() {
/* Nonmatching */
if (current.pos.z < home.pos.z + -680) {
#if VERSION == VERSION_DEMO
if (l_HIO.m24 == 1) {
l_HIO.m24 = 0;
speedF = 0.0f;
field_0x361 = 0;
dComIfGp_getVibration().StopQuake(-1);
field_0x368 = 0;
setup_action(6);
return;
}
l_HIO.m26 = 0;
#endif
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_STOP, 0);
setup_action(5);
} else {
speedF += DEMO_SELECT(l_HIO.mC, 0.1f);
if (speedF > DEMO_SELECT(l_HIO.m8, 6.0f)) {
speedF = DEMO_SELECT(l_HIO.m8, 6.0f);
}
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_MOVE, 0);
}
}
/* 00000F0C-00001008 .text go_up_stairs_demo_move_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::go_up_stairs_demo_move_act_proc() {
/* Nonmatching */
if (current.pos.z > home.pos.z) {
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_STOP, 0);
DEMO_SELECT(l_HIO.m24 = 0, TRUE);
setup_action(10);
} else {
speedF += DEMO_SELECT(l_HIO.mC, 0.1f);
if (speedF > DEMO_SELECT(l_HIO.m8, 6.0f)) {
speedF = DEMO_SELECT(l_HIO.m8, 6.0f);
}
fopAcM_seStartCurrent(this, JA_SE_OBJ_H_STATUE_MOVE, 0);
}
}
/* 00001008-000010A8 .text demo_end_wait_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_end_wait_act_proc() {
/* Nonmatching */
static int next_act_idx[4] = {-1, 6, 11, 12};
if (dComIfGp_evmng_endCheck(field_0x2E4)) {
dComIfGp_event_reset();
if (field_0x2DC == 0xE) {
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3980);
}
fopAcM_OffStatus(this, fopAcStts_UNK4000_e);
setup_action(next_act_idx[field_0x2EC]);
}
}
/* 000010A8-000010AC .text wait_act_proc__12daObjYLzou_cFv */
void daObjYLzou_c::wait_act_proc() {
/* Nonmatching */
#if VERSION == VERSION_DEMO
if (l_HIO.m25 == 1) {
dComIfGs_offEventBit(dSv_event_flag_c::UNK_3820);
setup_action(0);
}
#endif
return;
}
/* 000010AC-000010D8 .text move_ylzou_demo_start_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_start_wait_act_init_proc() {
/* Nonmatching */
field_0x2E4 = -1;
home.pos.x = 0.0;
home.pos.y = 0.0;
home.pos.z = 0.0;
current.pos.x = 0.0;
current.pos.y = 0.0;
current.pos.z = 0.0;
}
/* 000010D8-00001174 .text demo_regist_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_regist_wait_act_init_proc() {
/* Nonmatching */
if (field_0x2EC != 1) {
dComIfGp_evmng_cancelStartDemo();
fopAcM_OnStatus(this, fopAcStts_UNK4000_e);
}
field_0x2E4 = dComIfGp_evmng_getEventIdx(l_demo_name[field_0x2EC]);
fopAcM_orderOtherEventId(this, field_0x2E4, 0xFF, 0xFFFF, 0, 1);
}
/* 00001174-000011A4 .text move_ylzou_demo_vib_start_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_vib_start_wait_act_init_proc() {
/* Nonmatching */
dComIfGs_onEventBit(dSv_event_flag_c::UNK_3820);
}
/* 000011A4-0000120C .text move_ylzou_demo_vib_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_vib_act_init_proc() {
/* Nonmatching */
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0, 1, 0));
field_0x368 = 1;
return;
}
/* 0000120C-00001228 .text move_ylzou_demo_move_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::move_ylzou_demo_move_act_init_proc() {
/* Nonmatching */
field_0x361 = 1;
field_0x368 = 2;
current.angle.y = SHRT_MIN;
}
/* 00001228-000012C8 .text demo_end_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::demo_end_wait_act_init_proc() {
/* Nonmatching */
speedF = 0.0;
field_0x361 = 0;
if (DEMO_SELECT(TRUE, field_0x2EC != 3)) {
dComIfGp_getVibration().StopQuake(-1);
dComIfGp_getVibration().StartShock(8, 1, cXyz(0, 1, 0));
}
field_0x368 = 0;
}
/* 000012C8-000012F4 .text open_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::open_wait_act_init_proc() {
/* Nonmatching */
home.pos.x = 0.0;
home.pos.y = 0.0;
home.pos.z = -680.0;
current.pos.x = 0.0;
current.pos.y = 0.0;
current.pos.z = -680.0;
}
/* 000012F4-00001318 .text close_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::close_wait_act_init_proc() {
/* Nonmatching */
home.pos.x = 0.0;
home.pos.y = 0.0;
home.pos.z = 0.0;
current.pos.x = 0.0;
current.pos.y = 0.0;
current.pos.z = 0.0;
}
/* 00001318-000013A4 .text go_up_stairs_demo_move_start_wait_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::go_up_stairs_demo_move_start_wait_act_init_proc() {
/* Nonmatching */
current.angle.y = 0;
home.pos.set(0, 0, 0);
current.pos.set(0, 0, -680);
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0, 1, 0));
field_0x368 = 1;
return;
}
/* 000013A4-000013B8 .text go_up_stairs_demo_move_act_init_proc__12daObjYLzou_cFv */
void daObjYLzou_c::go_up_stairs_demo_move_act_init_proc() {
/* Nonmatching */
field_0x361 = 1;
field_0x368 = 2;
}
/* 000013B8-00001740 .text setup_action__12daObjYLzou_cFi */
void daObjYLzou_c::setup_action(int) {
/* Nonmatching */
void daObjYLzou_c::setup_action(int i_action_idx) {
static ProcFunc act_init_proc[15] = {
&daObjYLzou_c::move_ylzou_demo_start_wait_act_init_proc,
&daObjYLzou_c::demo_regist_wait_act_init_proc,
&daObjYLzou_c::move_ylzou_demo_vib_start_wait_act_init_proc,
&daObjYLzou_c::move_ylzou_demo_vib_act_init_proc,
&daObjYLzou_c::move_ylzou_demo_move_act_init_proc,
&daObjYLzou_c::demo_end_wait_act_init_proc,
&daObjYLzou_c::open_wait_act_init_proc,
&daObjYLzou_c::demo_regist_wait_act_init_proc,
&daObjYLzou_c::go_up_stairs_demo_move_start_wait_act_init_proc,
&daObjYLzou_c::go_up_stairs_demo_move_act_init_proc,
&daObjYLzou_c::demo_end_wait_act_init_proc,
&daObjYLzou_c::close_wait_act_init_proc,
&daObjYLzou_c::close_wait_act_init_proc,
&daObjYLzou_c::demo_regist_wait_act_init_proc,
&daObjYLzou_c::demo_end_wait_act_init_proc,
};
static ProcFunc act_proc[15] = {
&daObjYLzou_c::move_ylzou_demo_start_wait_act_proc,
&daObjYLzou_c::demo_regist_wait_act_proc,
&daObjYLzou_c::demo_vib_start_wait_act_proc,
&daObjYLzou_c::demo_vib_act_proc,
&daObjYLzou_c::move_ylzou_demo_move_act_proc,
&daObjYLzou_c::demo_end_wait_act_proc,
&daObjYLzou_c::wait_act_proc,
&daObjYLzou_c::demo_regist_wait_act_proc,
&daObjYLzou_c::demo_vib_act_proc,
&daObjYLzou_c::go_up_stairs_demo_move_act_proc,
&daObjYLzou_c::demo_end_wait_act_proc,
&daObjYLzou_c::wait_act_proc,
&daObjYLzou_c::wait_act_proc,
&daObjYLzou_c::demo_regist_wait_act_proc,
&daObjYLzou_c::demo_end_wait_act_proc,
};
(this->*act_init_proc[i_action_idx])();
field_0x2D0 = act_proc[i_action_idx];
field_0x2DC = i_action_idx;
}
/* 00001740-000017D4 .text _execute__12daObjYLzou_cFv */
bool daObjYLzou_c::_execute() {
/* Nonmatching */
fopAcM_posMoveF(this, NULL);
set_mtx();
if (field_0x29C != NULL) {
if (field_0x29C->ChkUsed()) {
field_0x29C->Move();
}
}
(this->*field_0x2D0)();
#if VERSION == VERSION_DEMO
if (l_HIO.m29 == 1) {
if (l_HIO.m27 == 1) {
field_0x361 = 1;
} else {
field_0x361 = 0;
}
}
if (l_HIO.m2A == 1) {
if (l_HIO.m28 == 1) {
dComIfGp_getVibration().StartQuake(6, 1, cXyz(0.0f, 1.0f, 0.0f));
field_0x368 = 1;
} else {
dComIfGp_getVibration().StopQuake(-1);
field_0x368 = 0;
}
}
#endif
eff_smoke_proc();
vib_proc();
return true;
}
/* 000017D4-00001834 .text _draw__12daObjYLzou_cFv */
bool daObjYLzou_c::_draw() {
/* Nonmatching */
g_env_light.settingTevStruct(TEV_TYPE_BG0, &current.pos, &tevStr);
g_env_light.setLightTevColorType(field_0x298, &tevStr);
mDoExt_modelUpdateDL(field_0x298);
return true;
}
/* 00001834-00001854 .text daObjYLzou_Create__FP10fopAc_ac_c */