d_a_tag_Lv7Gate OK (#1985)

* d_a_tag_Lv7Gate OK

* Fix switch cases
This commit is contained in:
hev7
2023-11-15 14:29:30 +00:00
committed by GitHub
parent 18cb3aa72f
commit 37c0344daa
14 changed files with 397 additions and 1509 deletions
+348 -393
View File
@@ -1,445 +1,400 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_Lv7Gate
// d_a_tag_Lv7Gate.cpp
// City in the Sky Gate
//
#include "rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct csXyz {
/* 802673F4 */ csXyz(s16, s16, s16);
};
struct cXyz {};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
static u8 now[48];
};
struct J3DModelData {};
struct J3DAnmTransform {};
struct mDoExt_bckAnm {
/* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool);
/* 8000D9CC */ void entry(J3DModelData*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTagLv7Gate_c {
/* 80D50C64 */ void create();
/* 80D50D30 */ void create_init();
/* 80D511C8 */ void execute();
/* 80D51628 */ void calcFly();
};
struct dSv_memBit_c {
/* 80034934 */ void isDungeonItem(int) const;
};
struct dSv_event_flag_c {
static u8 saveBitLabels[1644 + 4 /* padding */];
};
struct dSv_event_c {
/* 8003498C */ void onEventBit(u16);
/* 800349BC */ void isEventBit(u16) const;
};
struct dKy_tevstr_c {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPath {};
struct dEvt_control_c {
/* 80042468 */ void reset();
};
struct dEvent_manager_c {
/* 80046800 */ void setObjectArchive(char*);
/* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8);
/* 80047A78 */ void endCheck(s16);
/* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int);
/* 80047D4C */ void getIsAddvance(int);
/* 80047F5C */ void getMyNowCutName(int);
/* 8004817C */ void cutEnd(int);
};
struct JAISoundID {};
struct Vec {};
struct Z2SeMgr {
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct J3DModel {};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 80D50BFC */ ~J3DFrameCtrl();
};
//
// Forward References:
//
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" static void daTagLv7Gate_Create__FP10fopAc_ac_c();
extern "C" void create__14daTagLv7Gate_cFv();
extern "C" void create_init__14daTagLv7Gate_cFv();
extern "C" static void daTagLv7Gate_Execute__FP14daTagLv7Gate_c();
extern "C" void execute__14daTagLv7Gate_cFv();
extern "C" void calcFly__14daTagLv7Gate_cFv();
extern "C" static void daTagLv7Gate_Draw__FP14daTagLv7Gate_c();
extern "C" static bool daTagLv7Gate_IsDelete__FP14daTagLv7Gate_c();
extern "C" static void daTagLv7Gate_Delete__FP14daTagLv7Gate_c();
extern "C" extern char const* const d_a_tag_Lv7Gate__stringBase0;
//
// External References:
//
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
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_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
extern "C" void onEventBit__11dSv_event_cFUs();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void setObjectArchive__16dEvent_manager_cFPc();
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
extern "C" void endCheck__16dEvent_manager_cFs();
extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
extern "C" void getIsAddvance__16dEvent_manager_cFi();
extern "C" void getMyNowCutName__16dEvent_manager_cFi();
extern "C" void cutEnd__16dEvent_manager_cFi();
extern "C" void dPath_GetPnt__FPC5dPathi();
extern "C" void dPath_GetRoomPath__Fii();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void __ct__5csXyzFsss();
extern "C" void cLib_addCalcAngleS2__FPssss();
extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSMTXCopy();
extern "C" void PSMTXMultVec();
extern "C" void PSVECSquareDistance();
extern "C" void _savegpr_23();
extern "C" void _savegpr_29();
extern "C" void _restgpr_23();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" extern u32 __float_nan;
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
// Declarations:
//
/* ############################################################################################## */
/* 80D51AD4-80D51AD8 000000 0004+00 4/4 0/0 0/0 .rodata @3698 */
SECTION_RODATA static f32 const lit_3698 = 1.0f;
COMPILER_STRIP_GATE(0x80D51AD4, &lit_3698);
/* 80D51B14-80D51B14 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D51B14 = "Lv7Gate";
#pragma pop
#include "JSystem/JKernel/JKRHeap.h"
#include "d/a/d_a_player.h"
#include "d/d_path.h"
#include "d/d_procname.h"
/* 80D51B50-80D51B54 -00001 0004+00 5/5 0/0 0/0 .data l_arcName */
SECTION_DATA static void* l_arcName = (void*)&d_a_tag_Lv7Gate__stringBase0;
static char* l_arcName = "Lv7Gate";
/* 80D51B54-80D51B74 -00001 0020+00 1/0 0/0 0/0 .data l_daTagLv7Gate_Method */
SECTION_DATA static void* l_daTagLv7Gate_Method[8] = {
(void*)daTagLv7Gate_Create__FP10fopAc_ac_c,
(void*)daTagLv7Gate_Delete__FP14daTagLv7Gate_c,
(void*)daTagLv7Gate_Execute__FP14daTagLv7Gate_c,
(void*)daTagLv7Gate_IsDelete__FP14daTagLv7Gate_c,
(void*)daTagLv7Gate_Draw__FP14daTagLv7Gate_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
inline int daTagLv7Gate_c::createHeap() {
// Watched City in the Sky start cutscene
if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[510])) {
return 1;
}
/* 80D51B74-80D51BA4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Lv7Gate */
SECTION_DATA extern void* g_profile_Tag_Lv7Gate[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02CA0000, (void*)&g_fpcLf_Method,
(void*)0x000005B4, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01070000, (void*)&l_daTagLv7Gate_Method,
(void*)0x00040000, (void*)0x000E0000,
};
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 11);
mpModel = mDoExt_J3DModel__create(model_data, 0, 0x11000084);
/* 80D51BA4-80D51BB0 000054 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,
};
if (mpModel == NULL) {
return 0;
}
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7);
mpBck = new mDoExt_bckAnm();
if (mpBck == NULL || !mpBck->init(bck, TRUE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false)) {
return 0;
}
return 1;
}
/* 80D50AB8-80D50BFC 000078 0144+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void createSolidHeap(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/createSolidHeap__FP10fopAc_ac_c.s"
static int createSolidHeap(fopAc_ac_c* i_this) {
return static_cast<daTagLv7Gate_c*>(i_this)->createHeap();
}
#pragma pop
/* 80D50BFC-80D50C44 0001BC 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* 80D50C44-80D50C64 000204 0020+00 1/0 0/0 0/0 .text daTagLv7Gate_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagLv7Gate_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/daTagLv7Gate_Create__FP10fopAc_ac_c.s"
static int daTagLv7Gate_Create(fopAc_ac_c* i_this) {
return static_cast<daTagLv7Gate_c*>(i_this)->create();
}
#pragma pop
/* ############################################################################################## */
/* 80D51AD8-80D51ADC 000004 0004+00 1/1 0/0 0/0 .rodata @3829 */
SECTION_RODATA static f32 const lit_3829 = 7500.0f;
COMPILER_STRIP_GATE(0x80D51AD8, &lit_3829);
/* 80D50C64-80D50D30 000224 00CC+00 1/1 0/0 0/0 .text create__14daTagLv7Gate_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagLv7Gate_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/create__14daTagLv7Gate_cFv.s"
int daTagLv7Gate_c::create() {
int phase;
fopAcM_SetupActor(this, daTagLv7Gate_c);
if (fopAcM_GetPosition_p(daPy_getPlayerActorClass()).y < 7500.0f) {
return cPhs_ERROR_e;
} else {
phase = dComIfG_resLoad(&mPhase, l_arcName);
if (phase == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x5340)) {
return cPhs_ERROR_e;
} else {
create_init();
}
}
}
return phase;
}
#pragma pop
/* ############################################################################################## */
/* 80D51ADC-80D51AE4 000008 0004+04 0/2 0/0 0/0 .rodata @3935 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3935[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D51ADC, &lit_3935);
#pragma pop
inline void daTagLv7Gate_c::setPath(u8 i_path_ID) {
mRoomPath = dPath_GetRoomPath(i_path_ID, fopAcM_GetRoomNo(this));
if (mRoomPath != NULL) {
dStage_dPnt_c* pnt = dPath_GetPnt(mRoomPath, 0);
cXyz pos1 = pnt->m_position;
/* 80D51AE4-80D51AEC 000010 0008+00 0/2 0/0 0/0 .rodata @3936 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3936[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D51AE4, &lit_3936);
#pragma pop
pnt = dPath_GetPnt(mRoomPath, 1);
cXyz pos2 = pnt->m_position;
/* 80D51AEC-80D51AF4 000018 0008+00 0/2 0/0 0/0 .rodata @3937 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3937[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D51AEC, &lit_3937);
#pragma pop
mPos1 = pos1;
/* 80D51AF4-80D51AFC 000020 0008+00 0/2 0/0 0/0 .rodata @3938 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3938[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D51AF4, &lit_3938);
#pragma pop
// Fake match?
s16 angle_y = cLib_targetAngleY(&pos1, &pos2);
// s16 angle_x = cLib_targetAngleX(&pos1, &pos2);
/* 80D51AFC-80D51B00 000028 0004+00 0/1 0/0 0/0 .rodata @3939 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3939 = 1000.0f;
COMPILER_STRIP_GATE(0x80D51AFC, &lit_3939);
#pragma pop
// field_0x594.set(-angle_x, angle_y, 0);
field_0x594.x = -cLib_targetAngleX(&pos1, &pos2);
// field_0x594.x = -angle_x;
field_0x594.y = angle_y;
field_0x594.z = 0;
/* 80D51B00-80D51B04 00002C 0004+00 0/1 0/0 0/0 .rodata @3940 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3940 = 0x4522B50A;
COMPILER_STRIP_GATE(0x80D51B00, &lit_3940);
#pragma pop
mDistance = sqrtf(PSVECSquareDistance((Vec*)&mPos1, (Vec*)&pos2));
field_0x5a0 = 1;
mPos2 = pos2;
}
}
/* 80D51B04-80D51B08 000030 0004+00 0/1 0/0 0/0 .rodata @3941 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3941 = -200.0f;
COMPILER_STRIP_GATE(0x80D51B04, &lit_3941);
#pragma pop
inline void daTagLv7Gate_c::initBaseMtx() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
}
/* 80D51B08-80D51B0C 000034 0004+00 0/1 0/0 0/0 .rodata @3942 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3942 = 0x45AB6F61;
COMPILER_STRIP_GATE(0x80D51B08, &lit_3942);
#pragma pop
inline void daTagLv7Gate_c::setBaseMtx() {
if (mpModel) {
cXyz local_34(0.0f, 0.0f, speedF);
/* 80D51B14-80D51B14 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D51B1C = "LV7_NORMAL_START";
SECTION_DEAD static char const* const stringBase_80D51B2D = "LV7_CANNON_BACK";
SECTION_DEAD static char const* const stringBase_80D51B3D = "LV7_FIRST_START";
#pragma pop
mDoMtx_stack_c::transS(mPos1);
mDoMtx_stack_c::ZXYrotM((csXyz&)field_0x594);
mDoMtx_stack_c::multVec(&local_34, (Vec*)&mPos1);
MTXCopy(mDoMtx_stack_c::get(), mpModel->mBaseTransformMtx);
mAttentionInfo.mPosition = mPos1;
}
}
/* 80D50D30-80D511A8 0002F0 0478+00 1/1 0/0 0/0 .text create_init__14daTagLv7Gate_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagLv7Gate_c::create_init() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/create_init__14daTagLv7Gate_cFv.s"
void daTagLv7Gate_c::create_init() {
mAttentionInfo.mFlags = 0;
mLastFrame = 0;
field_0x5ac = 0;
mEvtId = -1;
field_0x5b0 = false;
field_0x5b1 = false;
setPath(getPathID() & 0xFF);
mAttentionInfo.mPosition = mPos1;
if (mpModel) {
initBaseMtx();
setBaseMtx();
}
// City in the Sky clear
if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[268])) {
mEvName = "LV7_NORMAL_START";
} else {
// Watched City in the Sky start cutscene
if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[510])) {
if (dComIfGs_isDungeonItemWarp()) {
mEvName = "LV7_CANNON_BACK";
} else {
mEvName = "LV7_NORMAL_START";
}
} else {
mEvName = "LV7_FIRST_START";
cXyz pos = current.pos;
pos.y -= 1000.0f;
csXyz local_54(getFlowNodeNo(), -0x4000, 0);
fopAcM_create(PROC_NPC_TKS, 7, &pos, fopAcM_GetRoomNo(this), &local_54, NULL, -1);
pos.x = 2603.315f;
pos.y = -200.0f;
pos.z = 5485.9224f;
local_54.x = 0.0f;
local_54.y = -0x4000;
local_54.z = 0.0f;
fopAcM_create(PROC_NPC_TKJ, 0, &pos, fopAcM_GetRoomNo(this), &local_54, NULL, -1);
}
}
mEvtInfo.setArchiveName(l_arcName);
i_dComIfGp_getEventManager().setObjectArchive(mEvtInfo.getArchiveName());
mEvtId = i_dComIfGp_getEventManager().getEventIdx(this, mEvName, -1);
fopAcM_orderOtherEventId(this, mEvtId, -1, -1, 2, 1);
}
#pragma pop
/* 80D511A8-80D511C8 000768 0020+00 1/0 0/0 0/0 .text daTagLv7Gate_Execute__FP14daTagLv7Gate_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagLv7Gate_Execute(daTagLv7Gate_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/daTagLv7Gate_Execute__FP14daTagLv7Gate_c.s"
static int daTagLv7Gate_Execute(daTagLv7Gate_c* i_this) {
return i_this->execute();
}
#pragma pop
/* ############################################################################################## */
/* 80D51B0C-80D51B10 000038 0004+00 0/1 0/0 0/0 .rodata @4046 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4046 = 96.0f;
COMPILER_STRIP_GATE(0x80D51B0C, &lit_4046);
#pragma pop
inline void daTagLv7Gate_c::flyAnime() {
J3DAnmTransform* bck = NULL;
J3DAnmTransform* bck_anm = mpBck->getBckAnm();
J3DAnmTransform* bck_anm_1 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 5);
J3DAnmTransform* bck_anm_2 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 6);
J3DAnmTransform* bck_anm_3 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 7);
J3DAnmTransform* bck_anm_4 = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
s32 attribute = J3DFrameCtrl::LOOP_REPEAT_e;
mLastFrame = mpBck->getFrame();
mpBck->play();
if (bck_anm == bck_anm_3) {
if (field_0x5ac < 150) {
field_0x5ac += 1;
if (field_0x5ac >= 150) {
bck = bck_anm_4;
attribute = J3DFrameCtrl::LOOP_ONCE_e;
}
}
} else if (bck_anm == bck_anm_1) {
if (mLastFrame > mpBck->getFrame()) {
bck = bck_anm_2;
attribute = J3DFrameCtrl::LOOP_ONCE_e;
}
} else {
// } else if (mpBck->isStop()) {
// Fake match?
mDoExt_bckAnm* tmp = mpBck;
if (tmp->isStop()) {
if (bck_anm == bck_anm_2) {
bck = bck_anm_3;
attribute = J3DFrameCtrl::LOOP_REPEAT_e;
} else if (bck_anm == bck_anm_4) {
bck = bck_anm_1;
attribute = J3DFrameCtrl::LOOP_REPEAT_e;
}
}
}
if (bck != NULL) {
mpBck->init(bck, 1, attribute, 1.0f, 0, -1, true);
}
}
/* 80D511C8-80D51628 000788 0460+00 1/1 0/0 0/0 .text execute__14daTagLv7Gate_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagLv7Gate_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/execute__14daTagLv7Gate_cFv.s"
int daTagLv7Gate_c::execute() {
// Fake match?
dComIfG_play_c& play = g_dComIfG_gameInfo.getPlay();
if (i_dComIfGp_event_runCheck() && !mEvtInfo.checkCommandTalk()) {
s32 cut_index = i_dComIfGp_evmng_getMyStaffId(l_arcName, NULL, 0);
if (cut_index != -1) {
// int* cut_name = (int*)i_dComIfGp_getEventManager().getMyNowCutName(cut_index);
int* cut_name = (int*)play.getEvtManager().getMyNowCutName(cut_index);
daPy_getPlayerActorClass()->onShieldBackBone();
if (dComIfGp_evmng_getIsAddvance(cut_index)) {
switch (*cut_name) {
case '0002':
field_0x5b1 = true;
speedF = 96.0f;
break;
case '0001':
break;
case '0003':
break;
}
}
switch (*cut_name) {
case '0001':
dComIfGp_evmng_cutEnd(cut_index);
break;
case '0002':
i_mDoAud_seStartLevel(Z2SE_EN_DR_DEMO_FIRST, &mPos1, 0, 0);
if (!field_0x5b1) {
dComIfGp_evmng_cutEnd(cut_index);
}
break;
case '0003':
break;
}
if (mEvtInfo.checkCommandDemoAccrpt() && mEvtId != -1) {
cut_index = dComIfGp_evmng_endCheck(mEvtId);
if (cut_index != 0) {
i_dComIfGp_event_reset();
mEvtId = -1;
fopAcM_delete(this);
}
}
field_0x5b0 = true;
}
} else {
if (!field_0x5b0) {
mEvtInfo.setArchiveName(l_arcName);
i_dComIfGp_getEventManager().setObjectArchive(mEvtInfo.getArchiveName());
mEvtId = i_dComIfGp_getEventManager().getEventIdx(this, mEvName, -1);
fopAcM_orderOtherEventId(this, mEvtId, -1, -1, 0, 1);
field_0x5b0 = true;
} else {
fopAcM_delete(this);
}
}
if (field_0x5b1) {
calcFly();
flyAnime();
setBaseMtx();
}
return 1;
}
inline bool daTagLv7Gate_c::checkPoint(f32 i_speed) {
dStage_dPnt_c* pnt = dPath_GetPnt(mRoomPath, field_0x5a0);
mDistance -= i_speed;
if (sqrtf(PSVECSquareDistance((Vec*)&mPos1, (Vec*)&pnt->m_position)) < i_speed ||
mDistance < 0.0f) {
return true;
}
return false;
}
inline bool daTagLv7Gate_c::setNextPoint() {
bool bVar1;
dPath_GetPnt(mRoomPath, field_0x5a0);
field_0x5a0 += 1;
if (field_0x5a0 >= mRoomPath->m_num) {
field_0x5a0 = mRoomPath->m_num - 1;
mDistance = 0;
bVar1 = true;
} else {
dStage_dPnt_c* pnt = dPath_GetPnt(mRoomPath, field_0x5a0);
cXyz pos1(mPos1.x, 0.0f, mPos1.z);
cXyz pos2(pnt->m_position.x, 0.0f, pnt->m_position.z);
mDistance = sqrtf(PSVECSquareDistance((Vec*)&pos1, (Vec*)&pos2));
mPos2 = pnt->m_position;
bVar1 = false;
}
if (bVar1) {
field_0x5b1 = false;
speedF = 0;
}
return bVar1;
}
#pragma pop
/* 80D51628-80D519BC 000BE8 0394+00 1/1 0/0 0/0 .text calcFly__14daTagLv7Gate_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagLv7Gate_c::calcFly() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/calcFly__14daTagLv7Gate_cFv.s"
void daTagLv7Gate_c::calcFly() {
f32 speed = speedF;
if (checkPoint(speed)) {
setNextPoint();
}
s16 angle_x = -cLib_targetAngleX(&mPos1, &mPos2);
s16 angle_y = cLib_targetAngleY(&mPos1, &mPos2);
cLib_addCalcAngleS2(&field_0x594.x, angle_x, 0xF, 0x400);
cLib_addCalcAngleS2(&field_0x594.y, angle_y, 0x23, 0x100);
cLib_addCalcAngleS2(&field_0x594.z, (field_0x594.y - angle_y) * 4, 0x23, 0x100);
}
inline int daTagLv7Gate_c::draw() {
if (field_0x5b1) {
g_env_light.settingTevStruct(0, &mPos1, &mTevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
mpBck->entry(mpModel->getModelData());
mDoExt_modelUpdateDL(mpModel);
mpBck->remove(mpModel->getModelData());
}
return 1;
}
#pragma pop
/* 80D519BC-80D51A58 000F7C 009C+00 1/0 0/0 0/0 .text daTagLv7Gate_Draw__FP14daTagLv7Gate_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagLv7Gate_Draw(daTagLv7Gate_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/daTagLv7Gate_Draw__FP14daTagLv7Gate_c.s"
static int daTagLv7Gate_Draw(daTagLv7Gate_c* i_this) {
return i_this->draw();
}
#pragma pop
/* 80D51A58-80D51A60 001018 0008+00 1/0 0/0 0/0 .text daTagLv7Gate_IsDelete__FP14daTagLv7Gate_c */
static bool daTagLv7Gate_IsDelete(daTagLv7Gate_c* param_0) {
return true;
static int daTagLv7Gate_IsDelete(daTagLv7Gate_c* i_this) {
return 1;
}
inline daTagLv7Gate_c::~daTagLv7Gate_c() {
// Watched City in the Sky start cutscene
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[510]);
dComIfG_resDelete(&mPhase, l_arcName);
}
/* 80D51A60-80D51ACC 001020 006C+00 1/0 0/0 0/0 .text daTagLv7Gate_Delete__FP14daTagLv7Gate_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagLv7Gate_Delete(daTagLv7Gate_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_Lv7Gate/d_a_tag_Lv7Gate/daTagLv7Gate_Delete__FP14daTagLv7Gate_c.s"
static int daTagLv7Gate_Delete(daTagLv7Gate_c* i_this) {
i_this->~daTagLv7Gate_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80D51B10-80D51B14 00003C 0004+00 0/0 0/0 0/0 .rodata @4047 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4047 = -1.0f;
COMPILER_STRIP_GATE(0x80D51B10, &lit_4047);
#pragma pop
/* 80D51B54-80D51B74 -00001 0020+00 1/0 0/0 0/0 .data l_daTagLv7Gate_Method */
static actor_method_class l_daTagLv7Gate_Method = {
(process_method_func)daTagLv7Gate_Create, (process_method_func)daTagLv7Gate_Delete,
(process_method_func)daTagLv7Gate_Execute, (process_method_func)daTagLv7Gate_IsDelete,
(process_method_func)daTagLv7Gate_Draw,
};
/* 80D51B14-80D51B14 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 80D51B74-80D51BA4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_Lv7Gate */
extern actor_process_profile_definition g_profile_Tag_Lv7Gate = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Tag_Lv7Gate, // mProcName
&g_fpcLf_Method.mBase, // mSubMtd
sizeof(daTagLv7Gate_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // mSubMtd
263, // mPriority
&l_daTagLv7Gate_Method, // mSubMtd
0x40000, // mStatus
0, // mActorType
fopAc_CULLBOX_CUSTOM_e, // mCullType
};