mirror of https://github.com/zeldaret/tp.git
link d_a_obj_lv6swturn (#2743)
* link d_a_obj_lv6swturn * fix pal and jp build * fix suggestions
This commit is contained in:
parent
962728ce44
commit
c215366d9f
|
|
@ -13,3 +13,4 @@ d/actor/d_a_obj_lv6swturn.cpp:
|
|||
.text start:0x00000078 end:0x00000D7C
|
||||
.rodata start:0x00000000 end:0x0000002C
|
||||
.data start:0x00000000 end:0x000000CC
|
||||
.bss start:0x00000000 end:0x00000004
|
||||
|
|
|
|||
|
|
@ -13,3 +13,4 @@ d/actor/d_a_obj_lv6swturn.cpp:
|
|||
.text start:0x00000078 end:0x00000D7C
|
||||
.rodata start:0x00000000 end:0x0000002C
|
||||
.data start:0x00000000 end:0x000000CC
|
||||
.bss start:0x00000000 end:0x00000004
|
||||
|
|
|
|||
|
|
@ -2095,7 +2095,7 @@ config.libs = [
|
|||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6bemos2"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6egate"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6elevta"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6swturn"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6swturn"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv7BsGate"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv7PropellerY"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv7bridge"),
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define D_A_OBJ_LV6SWTURN_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-objects
|
||||
|
|
@ -11,27 +12,57 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjLv6SwTurn_c : public fopAc_ac_c {
|
||||
class daObjLv6SwTurn_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
/* 80C83A98 */ void initBaseMtx();
|
||||
/* 80C83AD4 */ void setBaseMtx();
|
||||
/* 80C83B38 */ void Create();
|
||||
/* 80C83C10 */ void CreateHeap();
|
||||
/* 80C83C80 */ void create1st();
|
||||
/* 80C83D04 */ void Execute(Mtx**);
|
||||
/* 80C83B38 */ int Create();
|
||||
/* 80C83C10 */ int CreateHeap();
|
||||
/* 80C83C80 */ int create1st();
|
||||
/* 80C83D04 */ int Execute(Mtx**);
|
||||
/* 80C83D94 */ void mode_proc_call();
|
||||
/* 80C83E20 */ void init_modeWait();
|
||||
/* 80C83E58 */ void modeWait();
|
||||
/* 80C84238 */ void init_modeRotate();
|
||||
/* 80C8425C */ void modeRotate();
|
||||
/* 80C844F8 */ void Draw();
|
||||
/* 80C8459C */ void Delete();
|
||||
/* 80C844F8 */ int Draw();
|
||||
/* 80C8459C */ int Delete();
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x5cc - 0x568];
|
||||
u8 getSwbit() { return fopAcM_GetParamBit((void*)this, 0, 8); };
|
||||
u8 getSwbit2() { return fopAcM_GetParamBit((void*)this, 8, 8); };
|
||||
|
||||
/* 0x5A0 */ request_of_phase_process_class unk5A0;
|
||||
/* 0x5A8 */ J3DModel* unk5A8;
|
||||
/* 0x5AC */ u8 mMode;
|
||||
/* 0x5AD */ u8 unk5AD;
|
||||
/* 0x5AE */ u8 unk5AE[2];
|
||||
/* 0x5B0 */ s16 unk5B0;
|
||||
/* 0x5B2 */ s16 unk5B2;
|
||||
/* 0x5B4 */ s16 unk5B4;
|
||||
/* 0x5B6 */ s16 unk5B6;
|
||||
/* 0x5B8 */ int unk5B8;
|
||||
/* 0x5BC */ s8 unk5BC;
|
||||
/* 0x5BD */ u8 unk5BD;
|
||||
/* 0x5C0 */ u32 unk5C0;
|
||||
/* 0x5C4 */ dBgW_Base::PushPullLabel unk5C4;
|
||||
/* 0x5C8 */ s16 unk5C8;
|
||||
/* 0x5CA */ s16 unk5CA;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjLv6SwTurn_c) == 0x5cc);
|
||||
|
||||
#ifdef DEBUG
|
||||
class daObjLv6SwTurn_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daObjLv6SwTurn_HIO_c();
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
/* 0x6 */ u8 mWaitTime;
|
||||
/* 0x7 */ u8 mChargeTime;
|
||||
/* 0x8 */ s16 mRotationTime;
|
||||
/* 0xA */ u8 unkA;
|
||||
/* 0xB */ u8 mDrawFlag;
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* D_A_OBJ_LV6SWTURN_H */
|
||||
|
|
|
|||
|
|
@ -1,321 +1,400 @@
|
|||
/**
|
||||
* @file d_a_obj_lv6swturn.cpp
|
||||
*
|
||||
*/
|
||||
*
|
||||
*/
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
#include "d/d_s_play.h"
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
|
||||
#include "d/actor/d_a_obj_lv6swturn.h"
|
||||
#include "dol2asm.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
|
||||
#if DEBUG
|
||||
daObjLv6SwTurn_HIO_c::daObjLv6SwTurn_HIO_c() {
|
||||
mWaitTime = 0x2f;
|
||||
mChargeTime = 0x23;
|
||||
mRotationTime = 0x5a;
|
||||
unkA = 0x0;
|
||||
mDrawFlag = 0x0;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" static void PPCallBack__FP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel();
|
||||
extern "C" void initBaseMtx__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void setBaseMtx__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void Create__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void CreateHeap__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void create1st__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void Execute__16daObjLv6SwTurn_cFPPA3_A4_f();
|
||||
extern "C" void mode_proc_call__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void init_modeWait__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void modeWait__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void init_modeRotate__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void modeRotate__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void Draw__16daObjLv6SwTurn_cFv();
|
||||
extern "C" void Delete__16daObjLv6SwTurn_cFv();
|
||||
extern "C" static void daObjLv6SwTurn_create1st__FP16daObjLv6SwTurn_c();
|
||||
extern "C" static void daObjLv6SwTurn_MoveBGDelete__FP16daObjLv6SwTurn_c();
|
||||
extern "C" static void daObjLv6SwTurn_MoveBGExecute__FP16daObjLv6SwTurn_c();
|
||||
extern "C" static void daObjLv6SwTurn_MoveBGDraw__FP16daObjLv6SwTurn_c();
|
||||
extern "C" extern char const* const d_a_obj_lv6swturn__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_YrotS__FPA4_fs();
|
||||
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
||||
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
|
||||
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
|
||||
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
|
||||
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfGp_getReverb__Fi();
|
||||
extern "C" void onSwitch__10dSv_info_cFii();
|
||||
extern "C" void offSwitch__10dSv_info_cFii();
|
||||
extern "C" void isSwitch__10dSv_info_cCFii();
|
||||
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
||||
extern "C" void StartShock__12dVibration_cFii4cXyz();
|
||||
extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
|
||||
extern "C" void __ct__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToFore__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToBack__16dBgS_MoveBgActorFv();
|
||||
extern "C" void
|
||||
MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
|
||||
extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
|
||||
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
|
||||
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
|
||||
extern "C" void __mi__4cXyzCFRC3Vec();
|
||||
extern "C" void cLib_addCalcAngleS__FPsssss();
|
||||
extern "C" void cLib_addCalcAngleS2__FPssss();
|
||||
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void __ptmf_scall();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" u8 sincosTable___5JMath[65536];
|
||||
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
||||
extern "C" extern u8 data_80C847A0[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C846A4-80C846A8 000000 0004+00 3/3 0/0 0/0 .rodata @3695 */
|
||||
SECTION_RODATA static u8 const lit_3695[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C846A4, &lit_3695);
|
||||
void daObjLv6SwTurn_HIO_c::genMessage(JORMContext* context) {
|
||||
context->genLabel("Lv6回転スイッチ", 0, 0, NULL, -1, -1, 0x200, 0x18);
|
||||
context->genSlider("タメ時間(初回)", &mWaitTime, 0, 100, 0, NULL, -1, -1, 0x200, 0x18);
|
||||
context->genSlider("タメ時間(連続)", &mChargeTime, 0, 100, 0, NULL, -1, -1, 0x200, 0x18);
|
||||
context->genSlider("回転時間", &mRotationTime, 0, 500, 0, NULL, -1, -1, 0x200, 0x18);
|
||||
context->genCheckBox("チェック描画", &mDrawFlag, 1, 0, NULL, -1, -1, 0x200, 0x18);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 80C83998-80C83A98 000078 0100+00 1/1 0/0 0/0 .text
|
||||
* PPCallBack__FP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel */
|
||||
static void PPCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, s16 param_2,
|
||||
dBgW_Base::PushPullLabel param_3) {
|
||||
// NONMATCHING
|
||||
static fopAc_ac_c* PPCallBack(fopAc_ac_c* actor1, fopAc_ac_c* actor2, s16 param_2,
|
||||
dBgW_Base::PushPullLabel pushPull) {
|
||||
(void)param_2; // needed to match debug
|
||||
dBgW_Base::PushPullLabel pushPull_3 = cLib_checkBit(pushPull, dBgW_Base::PPLABEL_3);
|
||||
daObjLv6SwTurn_c* swTurnActor1 = (daObjLv6SwTurn_c*)actor1;
|
||||
daObjLv6SwTurn_c* swTurnActor2 = (daObjLv6SwTurn_c*)actor2;
|
||||
if (pushPull_3 != dBgW_Base::PPLABEL_NONE) {
|
||||
cXyz posVec = swTurnActor2->current.pos - swTurnActor1->current.pos;
|
||||
mDoMtx_stack_c::YrotS(-swTurnActor1->shape_angle.y);
|
||||
mDoMtx_stack_c::multVec(&posVec, &posVec);
|
||||
int ind;
|
||||
if (posVec.z > 0.0f) {
|
||||
ind = cLib_checkBit(pushPull_3, dBgW_Base::PPLABEL_PULL) ? 0 : 1;
|
||||
} else {
|
||||
ind = cLib_checkBit(pushPull_3, dBgW_Base::PPLABEL_PULL) ? 1 : 0;
|
||||
}
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (i == ind) {
|
||||
swTurnActor1->unk5AE[i]++;
|
||||
} else {
|
||||
swTurnActor1->unk5AE[i] = 0;
|
||||
}
|
||||
}
|
||||
swTurnActor1->unk5AD = 1;
|
||||
swTurnActor1->unk5C4 = pushPull;
|
||||
}
|
||||
return actor1;
|
||||
}
|
||||
|
||||
/* 80C846F0-80C846F4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
|
||||
static char* l_arcName = "Obj_l6tsw";
|
||||
|
||||
/* 80C83A98-80C83AD4 000178 003C+00 1/1 0/0 0/0 .text initBaseMtx__16daObjLv6SwTurn_cFv
|
||||
*/
|
||||
void daObjLv6SwTurn_c::initBaseMtx() {
|
||||
// NONMATCHING
|
||||
unk5A8->setBaseScale(scale);
|
||||
setBaseMtx();
|
||||
}
|
||||
|
||||
/* 80C83AD4-80C83B38 0001B4 0064+00 2/2 0/0 0/0 .text setBaseMtx__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::setBaseMtx() {
|
||||
// NONMATCHING
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
unk5A8->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
|
||||
}
|
||||
|
||||
/* 80C83B38-80C83C10 000218 00D8+00 1/0 0/0 0/0 .text Create__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::Create() {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::Create() {
|
||||
if (fopAcM_isSwitch(this, getSwbit())) {
|
||||
unk5BC = 1;
|
||||
} else if (fopAcM_isSwitch(this, getSwbit2())) {
|
||||
unk5BC = -1;
|
||||
} else {
|
||||
unk5BC = 0;
|
||||
}
|
||||
fopAcM_SetMtx(this, unk5A8->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox2(this, unk5A8->getModelData());
|
||||
mpBgW->SetPushPullCallback(PPCallBack);
|
||||
init_modeWait();
|
||||
MoveBGExecute();
|
||||
initBaseMtx();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C846C4-80C846C4 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80C846C4 = "Obj_l6tsw";
|
||||
#pragma pop
|
||||
|
||||
/* 80C846F0-80C846F4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
|
||||
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_lv6swturn__stringBase0;
|
||||
|
||||
/* 80C83C10-80C83C80 0002F0 0070+00 1/0 0/0 0/0 .text CreateHeap__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::CreateHeap() {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::CreateHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
|
||||
JUT_ASSERT(268, modelData != NULL);
|
||||
unk5A8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
if (unk5A8 == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
static daObjLv6SwTurn_HIO_c l_HIO;
|
||||
#endif
|
||||
|
||||
/* 80C83C80-80C83D04 000360 0084+00 1/1 0/0 0/0 .text create1st__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::create1st() {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::create1st() {
|
||||
int step = dComIfG_resLoad(&unk5A0, l_arcName);
|
||||
if (step == cPhs_COMPLEATE_e) {
|
||||
step = MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_TypicalRotY, 0x1800, 0);
|
||||
if (step == cPhs_ERROR_e) {
|
||||
return step;
|
||||
}
|
||||
#if DEBUG
|
||||
l_HIO.entryHIO("Lv6回転スイッチ");
|
||||
#endif
|
||||
}
|
||||
return step;
|
||||
}
|
||||
|
||||
/* 80C83D04-80C83D94 0003E4 0090+00 1/0 0/0 0/0 .text Execute__16daObjLv6SwTurn_cFPPA3_A4_f */
|
||||
void daObjLv6SwTurn_c::Execute(Mtx** param_0) {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::Execute(Mtx** i_pMtx) {
|
||||
unk5C0++;
|
||||
mode_proc_call();
|
||||
*i_pMtx = &mBgMtx;
|
||||
setBaseMtx();
|
||||
eyePos = current.pos;
|
||||
attention_info.position = current.pos;
|
||||
unk5AD = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C846F4-80C84700 -00001 000C+00 0/1 0/0 0/0 .data @3777 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3777[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)modeWait__16daObjLv6SwTurn_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C84700-80C8470C -00001 000C+00 0/1 0/0 0/0 .data @3778 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3778[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)modeRotate__16daObjLv6SwTurn_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C8470C-80C84724 00003C 0018+00 0/1 0/0 0/0 .data l_func$3776 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u8 l_func[24] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C83D94-80C83E20 000474 008C+00 1/1 0/0 0/0 .text mode_proc_call__16daObjLv6SwTurn_cFv */
|
||||
enum daObjLv6SwTurn_c_mode{
|
||||
DAOBJLV6SWTURN_C_MODE_WAIT,
|
||||
DAOBJLV6SWTURN_C_MODE_ROTATE,
|
||||
};
|
||||
|
||||
void daObjLv6SwTurn_c::mode_proc_call() {
|
||||
// NONMATCHING
|
||||
typedef void (daObjLv6SwTurn_c::*func_type)();
|
||||
// naming difference between debug and release
|
||||
#if DEBUG
|
||||
static func_type mode_proc_call[] = {
|
||||
&daObjLv6SwTurn_c::modeWait,
|
||||
&daObjLv6SwTurn_c::modeRotate
|
||||
};
|
||||
(this->*mode_proc_call[mMode])();
|
||||
#else
|
||||
static func_type l_func[] = {
|
||||
&daObjLv6SwTurn_c::modeWait,
|
||||
&daObjLv6SwTurn_c::modeRotate
|
||||
};
|
||||
(this->*l_func[mMode])();
|
||||
#endif
|
||||
}
|
||||
|
||||
/* 80C83E20-80C83E58 000500 0038+00 2/2 0/0 0/0 .text init_modeWait__16daObjLv6SwTurn_cFv
|
||||
*/
|
||||
void daObjLv6SwTurn_c::init_modeWait() {
|
||||
// NONMATCHING
|
||||
unk5B2 = 0;
|
||||
unk5B8 = -1;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
unk5AE[i] = 0;
|
||||
}
|
||||
mMode = DAOBJLV6SWTURN_C_MODE_WAIT;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C846A8-80C846AC 000004 0004+00 0/2 0/0 0/0 .rodata @3960 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3960 = 1.0f;
|
||||
COMPILER_STRIP_GATE(0x80C846A8, &lit_3960);
|
||||
#pragma pop
|
||||
|
||||
/* 80C846AC-80C846B0 000008 0004+00 0/2 0/0 0/0 .rodata @3961 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3961 = -1.0f;
|
||||
COMPILER_STRIP_GATE(0x80C846AC, &lit_3961);
|
||||
#pragma pop
|
||||
|
||||
/* 80C846B0-80C846B4 00000C 0004+00 0/1 0/0 0/0 .rodata @3962 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3962 = 10.0f;
|
||||
COMPILER_STRIP_GATE(0x80C846B0, &lit_3962);
|
||||
#pragma pop
|
||||
|
||||
/* 80C846B4-80C846BC 000010 0008+00 0/2 0/0 0/0 .rodata @3964 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3964[8] = {
|
||||
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80C846B4, &lit_3964);
|
||||
#pragma pop
|
||||
|
||||
/* 80C83E58-80C84238 000538 03E0+00 1/0 0/0 0/0 .text modeWait__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::modeWait() {
|
||||
// NONMATCHING
|
||||
bool a = true;
|
||||
int b = -1;
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
if (unk5AD) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
u32 timer;
|
||||
if (cLib_checkBit(unk5C4, cBgW::PPLABEL_4)) {
|
||||
#if DEBUG
|
||||
timer = l_HIO.mWaitTime;
|
||||
#else
|
||||
timer = 0x2f;
|
||||
#endif
|
||||
} else {
|
||||
#if DEBUG
|
||||
timer = l_HIO.mChargeTime;
|
||||
#else
|
||||
timer = 0x23;
|
||||
#endif
|
||||
}
|
||||
if (unk5AE[i] == (u8)timer) {
|
||||
unk5B8 = i;
|
||||
}
|
||||
if (unk5AE[i] != 0) {
|
||||
b = i;
|
||||
}
|
||||
}
|
||||
if ((unk5B8 == 0 && unk5BC == 1) || (unk5B8 == 1 && unk5BC == -1)) {
|
||||
unk5B8 = -1;
|
||||
} else {
|
||||
a = 0;
|
||||
}
|
||||
bool c = false;
|
||||
if ((unk5BC == 0 && b != -1) || (unk5BC == 1 && b == 1) || (unk5BC == -1 && b == 0)) {
|
||||
c = true;
|
||||
}
|
||||
if (c) {
|
||||
if (b == 0) {
|
||||
cLib_addCalcAngleS2(&unk5B4, 500 + KREG_S(1), 60, 5);
|
||||
} else {
|
||||
cLib_addCalcAngleS2(&unk5B4, -500 - KREG_S(1), 60, 5);
|
||||
}
|
||||
if (unk5BD == 18) {
|
||||
fopAcM_seStart(this, Z2SE_OBJ_L6_RL_SW_ON, 0);
|
||||
OS_REPORT("Lv6回転スイッチ:Z2SE_OBJ_L6_RL_SW_ON\n");
|
||||
}
|
||||
unk5BD++;
|
||||
unk5B2 = unk5B4 * std::fabs(cM_ssin((KREG_S(0) + 992) * unk5BD)) + 10.0f;
|
||||
if (unk5B2 == unk5C8) {
|
||||
unk5B2++;
|
||||
}
|
||||
}
|
||||
if (unk5B8 != -1 && unk5CA == current.angle.y) {
|
||||
((daPy_py_c*)dComIfGp_getPlayer(0))->onPushPullKeep();
|
||||
init_modeRotate();
|
||||
}
|
||||
} else {
|
||||
unk5B4 = 0;
|
||||
unk5BD = 0;
|
||||
cLib_addCalcAngleS(&unk5B2, 0, 4, 50, 5);
|
||||
}
|
||||
shape_angle.y = current.angle.y + (unk5BC * 0x4000) + unk5B2;
|
||||
if (a) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
unk5AE[i] = 0;
|
||||
}
|
||||
unk5B8 = -1;
|
||||
}
|
||||
if (daPy_py_c::checkNowWolf()) {
|
||||
cXyz c = player->current.pos - current.pos;
|
||||
mDoMtx_stack_c::YrotS(-shape_angle.y);
|
||||
mDoMtx_stack_c::multVec(&c, &c);
|
||||
if (c.z > 0.0f) {
|
||||
if (unk5BC == -1) {
|
||||
mpBgW->OffPushPullOk();
|
||||
} else {
|
||||
mpBgW->OnPushPullOk();
|
||||
}
|
||||
} else {
|
||||
if (unk5BC == 1) {
|
||||
mpBgW->OffPushPullOk();
|
||||
} else {
|
||||
mpBgW->OnPushPullOk();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mpBgW->OnPushPullOk();
|
||||
}
|
||||
unk5C8 = unk5B2;
|
||||
unk5CA = current.angle.y;
|
||||
}
|
||||
|
||||
/* 80C84238-80C8425C 000918 0024+00 1/1 0/0 0/0 .text init_modeRotate__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::init_modeRotate() {
|
||||
// NONMATCHING
|
||||
unk5B4 = 0;
|
||||
unk5BD = 0;
|
||||
unk5B0 = 0;
|
||||
unk5B6 = shape_angle.y;
|
||||
mMode = DAOBJLV6SWTURN_C_MODE_ROTATE;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C846BC-80C846C0 000018 0004+00 0/1 0/0 0/0 .rodata @4069 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_4069 = 16384.0f;
|
||||
COMPILER_STRIP_GATE(0x80C846BC, &lit_4069);
|
||||
#pragma pop
|
||||
|
||||
/* 80C846C0-80C846C4 00001C 0004+00 0/1 0/0 0/0 .rodata @4070 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_4070 = 90.0f;
|
||||
COMPILER_STRIP_GATE(0x80C846C0, &lit_4070);
|
||||
#pragma pop
|
||||
|
||||
/* 80C8425C-80C844F8 00093C 029C+00 1/0 0/0 0/0 .text modeRotate__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::modeRotate() {
|
||||
// NONMATCHING
|
||||
unk5B0++;
|
||||
#if DEBUG
|
||||
unk5B2 = (f32)unk5B0 / (f32)l_HIO.mRotationTime * (f32)0x4000;
|
||||
#else
|
||||
unk5B2 = (f32)unk5B0 / (f32)0x5a * (f32)0x4000;
|
||||
#endif
|
||||
if (unk5B8 == 1) {
|
||||
unk5B2 = -unk5B2;
|
||||
}
|
||||
|
||||
shape_angle.y = unk5B6 + unk5B2;
|
||||
|
||||
fopAcM_seStartLevel(this, Z2SE_OBJ_L6_RL_SW_MV, 0);
|
||||
#if DEBUG
|
||||
if (unk5B0 == l_HIO.mRotationTime)
|
||||
#else
|
||||
if (unk5B0 == 0x5a)
|
||||
#endif
|
||||
{
|
||||
if (unk5B8 == 0) {
|
||||
unk5BC++;
|
||||
} else {
|
||||
unk5BC--;
|
||||
}
|
||||
|
||||
if (unk5BC == 1) {
|
||||
fopAcM_onSwitch(this, getSwbit());
|
||||
fopAcM_offSwitch(this, getSwbit2());
|
||||
} else if (unk5BC == 0) {
|
||||
fopAcM_offSwitch(this, getSwbit());
|
||||
fopAcM_offSwitch(this, getSwbit2());
|
||||
} else if (unk5BC == -1) {
|
||||
fopAcM_offSwitch(this, getSwbit());
|
||||
fopAcM_onSwitch(this, getSwbit2());
|
||||
}
|
||||
((daPy_py_c*)dComIfGp_getPlayer(0))->offPushPullKeep();
|
||||
fopAcM_seStart(this, Z2SE_OBJ_L6_RL_SW_OFF, 0);
|
||||
|
||||
dComIfGp_getVibration().StartShock(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
|
||||
init_modeWait();
|
||||
}
|
||||
}
|
||||
|
||||
/* 80C844F8-80C8459C 000BD8 00A4+00 1/0 0/0 0/0 .text Draw__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::Draw() {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::Draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(unk5A8, &tevStr);
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(unk5A8);
|
||||
dComIfGd_setList();
|
||||
#if DEBUG
|
||||
if (l_HIO.mDrawFlag) {
|
||||
mpBgW->GetAttackThrough(0);
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 80C8459C-80C845D0 000C7C 0034+00 1/0 0/0 0/0 .text Delete__16daObjLv6SwTurn_cFv */
|
||||
void daObjLv6SwTurn_c::Delete() {
|
||||
// NONMATCHING
|
||||
int daObjLv6SwTurn_c::Delete() {
|
||||
dComIfG_resDelete(&unk5A0, l_arcName);
|
||||
#if DEBUG
|
||||
l_HIO.removeHIO();
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 80C845D0-80C84630 000CB0 0060+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_create1st__FP16daObjLv6SwTurn_c */
|
||||
static int daObjLv6SwTurn_create1st(daObjLv6SwTurn_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, daObjLv6SwTurn_c);
|
||||
return i_this->create1st();
|
||||
}
|
||||
|
||||
/* 80C84630-80C84650 000D10 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGDelete__FP16daObjLv6SwTurn_c */
|
||||
static int daObjLv6SwTurn_MoveBGDelete(daObjLv6SwTurn_c* i_this) {
|
||||
return i_this->MoveBGDelete();
|
||||
}
|
||||
|
||||
/* 80C84650-80C84670 000D30 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGExecute__FP16daObjLv6SwTurn_c */
|
||||
static int daObjLv6SwTurn_MoveBGExecute(daObjLv6SwTurn_c* i_this) {
|
||||
return i_this->MoveBGExecute();
|
||||
}
|
||||
|
||||
/* 80C84670-80C8469C 000D50 002C+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGDraw__FP16daObjLv6SwTurn_c */
|
||||
static int daObjLv6SwTurn_MoveBGDraw(daObjLv6SwTurn_c* i_this) {
|
||||
return i_this->MoveBGDraw();
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C84724-80C84744 -00001 0020+00 1/0 0/0 0/0 .data daObjLv6SwTurn_METHODS */
|
||||
static actor_method_class daObjLv6SwTurn_METHODS = {
|
||||
(process_method_func)daObjLv6SwTurn_create1st__FP16daObjLv6SwTurn_c,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGDelete__FP16daObjLv6SwTurn_c,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGExecute__FP16daObjLv6SwTurn_c,
|
||||
0,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGDraw__FP16daObjLv6SwTurn_c,
|
||||
(process_method_func)daObjLv6SwTurn_create1st,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGDelete,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGExecute,
|
||||
NULL,
|
||||
(process_method_func)daObjLv6SwTurn_MoveBGDraw,
|
||||
};
|
||||
|
||||
/* 80C84744-80C84774 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv6SwTurn */
|
||||
extern actor_process_profile_definition g_profile_Obj_Lv6SwTurn = {
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
3, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_Obj_Lv6SwTurn, // mProcName
|
||||
&g_fpcLf_Method.base, // sub_method
|
||||
sizeof(daObjLv6SwTurn_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // sub_method
|
||||
15, // mPriority
|
||||
&daObjLv6SwTurn_METHODS, // sub_method
|
||||
0x00040100, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
3, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_Obj_Lv6SwTurn, // mProcName
|
||||
&g_fpcLf_Method.base, // sub_method
|
||||
sizeof(daObjLv6SwTurn_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // sub_method
|
||||
15, // mPriority
|
||||
&daObjLv6SwTurn_METHODS, // sub_method
|
||||
0x00040100, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
|
||||
/* 80C84774-80C8479C 0000A4 0028+00 1/1 0/0 0/0 .data __vt__16daObjLv6SwTurn_c */
|
||||
SECTION_DATA extern void* __vt__16daObjLv6SwTurn_c[10] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)CreateHeap__16daObjLv6SwTurn_cFv,
|
||||
(void*)Create__16daObjLv6SwTurn_cFv,
|
||||
(void*)Execute__16daObjLv6SwTurn_cFPPA3_A4_f,
|
||||
(void*)Draw__16daObjLv6SwTurn_cFv,
|
||||
(void*)Delete__16daObjLv6SwTurn_cFv,
|
||||
(void*)IsDelete__16dBgS_MoveBgActorFv,
|
||||
(void*)ToFore__16dBgS_MoveBgActorFv,
|
||||
(void*)ToBack__16dBgS_MoveBgActorFv,
|
||||
};
|
||||
|
||||
/* 80C845D0-80C84630 000CB0 0060+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_create1st__FP16daObjLv6SwTurn_c */
|
||||
static void daObjLv6SwTurn_create1st(daObjLv6SwTurn_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C84630-80C84650 000D10 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGDelete__FP16daObjLv6SwTurn_c */
|
||||
static void daObjLv6SwTurn_MoveBGDelete(daObjLv6SwTurn_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C84650-80C84670 000D30 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGExecute__FP16daObjLv6SwTurn_c */
|
||||
static void daObjLv6SwTurn_MoveBGExecute(daObjLv6SwTurn_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C84670-80C8469C 000D50 002C+00 1/0 0/0 0/0 .text
|
||||
* daObjLv6SwTurn_MoveBGDraw__FP16daObjLv6SwTurn_c */
|
||||
static void daObjLv6SwTurn_MoveBGDraw(daObjLv6SwTurn_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C846C4-80C846C4 000020 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue