zramark work, sWallShutter / firewood2 done (#2187)

* obj_zramark done except weaks

* setup fixes

* obj_sWallShutter done

* firewood2 done

* remove asm
This commit is contained in:
TakaRikka
2024-08-07 08:32:04 -07:00
committed by GitHub
parent 106d72032c
commit e7e5453771
55 changed files with 1681 additions and 2957 deletions
+153 -159
View File
@@ -1,18 +1,19 @@
//
// Balloon
//
/**
* d_a_obj_balloon.cpp
* Plumm Minigame Balloon
*/
#include "rel/d/a/obj/d_a_obj_balloon/d_a_obj_balloon.h"
#include "rel/d/a/d_a_balloon_2D/d_a_balloon_2D.h"
#include "d/cc/d_cc_d.h"
#include "d/cc/d_cc_uty.h"
#include "d/d_drawlist.h"
#include "d/com/d_com_inf_game.h"
#include "f_op/f_op_actor_mng.h"
#include "SSystem/SComponent/c_math.h"
#include "JSystem/JAudio2/JASAudioThread.h"
#include "JSystem/JAudio2/JAUSoundTable.h"
#include "SSystem/SComponent/c_math.h"
#include "Z2AudioLib/Z2WolfHowlMgr.h"
#include "d/cc/d_cc_d.h"
#include "d/cc/d_cc_uty.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_drawlist.h"
#include "f_op/f_op_actor_mng.h"
#include "rel/d/a/d_a_balloon_2D/d_a_balloon_2D.h"
/* 80BA8E5C-80BA8E68 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
static u8 cNullVec__6Z2Calc[12] = {
@@ -125,53 +126,17 @@ static u8 lit_1010[1 + 3 /* padding */];
static u8 lit_1009[1 + 3 /* padding */];
#pragma pop
/* 80BA8E7C-80BA8E80 000020 0004+00 0/1 0/0 0/0 .data
* m_combo_type__29@unnamed@d_a_obj_balloon_cpp@ */
static int m_combo_type = 0xFFFFFFFF;
/* 80BA8E80-80BA8E8C 000024 000C+00 1/1 0/0 0/0 .data balloon_radius$3706 */
static f32 balloon_radius[3] = {
1070.0f, 390.0f, 110.0f,
};
/* 80BA8E8C-80BA8E90 000030 0004+00 0/1 0/0 0/0 .data kago_wall_hit_id$3736 */
static u16 kago_wall_hit_id[2] = {
0x8A12,
0x8A13,
};
/* 80BA8E90-80BA8E9C 000034 000C+00 0/1 0/0 0/0 .data kago_effect_scale$3737 */
static f32 kago_effect_scale[3] = {
4.0f, 1.5f, 0.8f,
};
/* 80BA8E9C-80BA8EA8 000040 000C+00 0/1 0/0 0/0 .data break_sound_id$3749 */
static u32 break_sound_id[3] = {
Z2SE_OBJ_BLN_BREAK_L, Z2SE_OBJ_BLN_BREAK_M, Z2SE_OBJ_BLN_BREAK_S,
};
/* 80BA8EA8-80BA8EE8 00004C 0040+00 1/1 0/0 0/0 .data cc_sph_src$3893 */
static dCcD_SrcSph cc_sph_src = {
{
{0x0, {{0x0, 0x0, 0x0}, {0x8, 0x11}, 0x0}}, // mObj
{dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
} // mSphAttr
};
/* 80BA7FAC-80BA7FF4 0000EC 0048+00 1/1 0/0 0/0 .text __ct__19daObj_Balloon_HIO_cFv */
daObj_Balloon_HIO_c::daObj_Balloon_HIO_c() {
field_0x04 = -1;
field_0x08[0] = 1.0f;
field_0x08[1] = 1.0f;
field_0x08[2] = 1.5f;
field_0x14[0] = 1.0f;
field_0x14[1] = 3.0f;
field_0x14[2] = 10.0f;
mScale[daObj_Balloon_c::SIZE_LARGE_e] = 1.0f;
mScale[daObj_Balloon_c::SIZE_MEDIUM_e] = 1.0f;
mScale[daObj_Balloon_c::SIZE_SMALL_e] = 1.5f;
mScore[daObj_Balloon_c::SIZE_LARGE_e] = 1.0f;
mScore[daObj_Balloon_c::SIZE_MEDIUM_e] = 3.0f;
mScore[daObj_Balloon_c::SIZE_SMALL_e] = 10.0f;
}
/* 80BA7FF4-80BA80D4 000134 00E0+00 1/1 0/0 0/0 .text draw__15daObj_Balloon_cFv */
@@ -180,11 +145,12 @@ int daObj_Balloon_c::draw() {
g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);
fopAcM_setEffectMtx(this, mModel->getModelData());
mDoExt_modelUpdateDL(mModel);
cXyz acStack_28;
acStack_28.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
field_0x574 = dComIfGd_setShadow(field_0x574, 1, mModel, &acStack_28, 400.0f, 0.0f,
current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0,
1.0f, dDlst_shadowControl_c::getSimpleTex());
cXyz pos;
pos.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
mShadowKey = dComIfGd_setShadow(mShadowKey, 1, mModel, &pos, 400.0f, 0.0f, current.pos.y,
mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
return 1;
}
@@ -193,6 +159,11 @@ static int daObj_Balloon_Draw(daObj_Balloon_c* i_this) {
return i_this->draw();
}
namespace {
/* 80BA8E7C-80BA8E80 000020 0004+00 0/1 0/0 0/0 .data
* m_combo_type__29@unnamed@d_a_obj_balloon_cpp@ */
static int m_combo_type = 0xFFFFFFFF;
/* 80BA8FF0-80BA8FF4 000048 0004+00 0/1 0/0 0/0 .bss
* m_combo_count__29@unnamed@d_a_obj_balloon_cpp@ */
static int m_combo_count;
@@ -204,6 +175,7 @@ static int m_combo_next_score;
/* 80BA8FF8-80BA8FFC 000050 0004+00 1/2 0/0 0/0 .bss
* m_balloon_score__29@unnamed@d_a_obj_balloon_cpp@ */
static u32 m_balloon_score;
} // namespace
/* 80BA80F4-80BA810C 000234 0018+00 0/0 0/0 1/1 .text saveBestScore__15daObj_Balloon_cFv
*/
@@ -211,114 +183,123 @@ void daObj_Balloon_c::saveBestScore() {
dComIfGp_setMessageCountNumber(m_balloon_score);
}
/* ############################################################################################## */
/* 80BA8FFC-80BA9000 000054 0004+00 2/2 0/0 0/0 .bss None */
static u8 data_80BA8FFC;
/* 80BA9000-80BA900C 000058 000C+00 1/1 0/0 0/0 .bss @3651 */
//static u8 lit_3651[12];
static u8 l_initHIO;
/* 80BA900C-80BA902C 000064 0020+00 4/5 0/0 0/0 .bss l_HIO */
static daObj_Balloon_HIO_c l_HIO;
/* 80BA810C-80BA81B8 00024C 00AC+00 1/1 0/0 0/0 .text cc_set__15daObj_Balloon_cFv */
void daObj_Balloon_c::cc_set() {
cXyz cStack_18;
cXyz cc_center;
mDoMtx_stack_c::copy(mModel->getBaseTRMtx());
mDoMtx_stack_c::multVecZero(&cStack_18);
mSph.SetC(cStack_18);
mSph.SetR(balloon_radius[field_0x578] * l_HIO.field_0x08[field_0x578]);
mDoMtx_stack_c::multVecZero(&cc_center);
static f32 balloon_radius[3] = {1070.0f, 390.0f, 110.0f};
mSph.SetC(cc_center);
mSph.SetR(balloon_radius[mType] * l_HIO.mScale[mType]);
dComIfG_Ccsp()->Set(&mSph);
}
/* 80BA81B8-80BA865C 0002F8 04A4+00 1/1 0/0 0/0 .text action__15daObj_Balloon_cFv */
void daObj_Balloon_c::action() {
switch (field_0x579) {
static u16 kago_wall_hit_id[2] = {0x8A12, 0x8A13};
static f32 kago_effect_scale[3] = {4.0f, 1.5f, 0.8f};
static u32 break_sound_id[3] = {Z2SE_OBJ_BLN_BREAK_L, Z2SE_OBJ_BLN_BREAK_M,
Z2SE_OBJ_BLN_BREAK_S};
switch (mRotateMode) {
case 0:
gravity = 0.0f;
speedF = 0.0f;
speed.y = 0.0f;
field_0x579 = 1;
mRotateMode = 1;
break;
case 1:
cLib_addCalcAngleS2(&field_0x580, field_0x584, 16, 8);
cLib_addCalcAngleS2(&field_0x582, field_0x586, 16, 8);
cLib_addCalcAngleS2(&mRotateZ, mRotZTarget, 16, 8);
cLib_addCalcAngleS2(&mRotateY, mRotYTarget, 16, 8);
cLib_chaseF(&speed.y, -3.0f, 0.1f);
if (current.pos.y < home.pos.y) {
field_0x579 = 2;
field_0x57c = (s16)(30.0f + cM_rndF(60.0f));
field_0x584 = 512.0f + cM_rndF(512.0f);
field_0x586 = 512.0f + cM_rndF(512.0f);
mRotateMode = 2;
mRotateTimer = (s16)(30.0f + cM_rndF(60.0f));
mRotZTarget = 512.0f + cM_rndF(512.0f);
mRotYTarget = 512.0f + cM_rndF(512.0f);
}
break;
case 2:
cLib_addCalcAngleS2(&field_0x580, field_0x584, 16, 32);
cLib_addCalcAngleS2(&field_0x582, field_0x586, 16, 32);
cLib_addCalcAngleS2(&mRotateZ, mRotZTarget, 16, 32);
cLib_addCalcAngleS2(&mRotateY, mRotYTarget, 16, 32);
cLib_chaseF(&speed.y, 5.0f, 0.1f);
if (field_0x57c == 0) {
field_0x579 = 1;
field_0x584 = cM_rndF(128.0f);
field_0x586 = cM_rndF(128.0f);
if (mRotateTimer == 0) {
mRotateMode = 1;
mRotZTarget = cM_rndF(128.0f);
mRotYTarget = cM_rndF(128.0f);
}
break;
}
shape_angle.z += field_0x580;
shape_angle.y += field_0x582;
if (field_0x57c != 0) {
field_0x57c--;
shape_angle.z += mRotateZ;
shape_angle.y += mRotateY;
if (mRotateTimer != 0) {
mRotateTimer--;
}
mStts.Move();
if (mSph.ChkTgHit()) {
cCcD_Obj* tgHit = mSph.GetTgHitObj();
if (fopAcM_GetName(dCc_GetAc(tgHit->GetAc())) == 0xf4) {
cXyz cStack_48(kago_effect_scale[field_0x578], kago_effect_scale[field_0x578],
kago_effect_scale[field_0x578]);
cCcD_Obj* hit_obj = mSph.GetTgHitObj();
if (fopAcM_GetName(dCc_GetAc(hit_obj->GetAc())) == PROC_KAGO) {
cXyz eff_scale(kago_effect_scale[mType], kago_effect_scale[mType],
kago_effect_scale[mType]);
for (int i = 0; i < 2; i++) {
dComIfGp_particle_set(kago_wall_hit_id[i], &current.pos, &tevStr, &shape_angle,
&cStack_48);
&eff_scale);
}
u32 local_74;
u32 local_28;
if (m_combo_type == field_0x578) {
u32 add_score;
if (m_combo_type == mType) {
m_combo_count++;
local_74 = m_combo_next_score;
add_score = m_combo_next_score;
if (m_combo_count >= 10) {
m_combo_next_score = l_HIO.field_0x14[field_0x578] * 512.0f;
local_28 = m_combo_next_score;
m_combo_next_score = l_HIO.mScore[mType] * 512.0f;
} else {
m_combo_next_score <<= 1;
m_combo_next_score *= 2;
}
} else {
m_combo_type = field_0x578;
m_combo_type = mType;
m_combo_count = 1;
m_combo_next_score =
l_HIO.field_0x14[field_0x578] * 2.0f;
local_28 = m_combo_next_score;
local_74 = l_HIO.field_0x14[field_0x578];
m_combo_next_score = l_HIO.mScore[mType] * 2.0f;
add_score = l_HIO.mScore[mType];
}
Z2GetAudioMgr()->seStart(break_sound_id[field_0x578], &current.pos, m_combo_count, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
m_balloon_score += local_74;
daBalloon2D_c* balloon2d = (daBalloon2D_c*)fopAcM_SearchByName(PROC_BALLOON2D);
if (balloon2d != NULL) {
u8 unaff_r25;
if (field_0x578 == 2) {
unaff_r25 = 0;
} else if (field_0x578 == 1) {
unaff_r25 = 1;
} else if (field_0x578 == 0) {
unaff_r25 = 2;
Z2GetAudioMgr()->seStart(break_sound_id[mType], &current.pos, m_combo_count, 0, 1.0f,
1.0f, -1.0f, -1.0f, 0);
m_balloon_score += add_score;
daBalloon2D_c* balloon_2d = (daBalloon2D_c*)fopAcM_SearchByName(PROC_BALLOON2D);
if (balloon_2d != NULL) {
u8 balloon_size;
if (mType == SIZE_SMALL_e) {
balloon_size = 0;
} else if (mType == SIZE_MEDIUM_e) {
balloon_size = 1;
} else if (mType == SIZE_LARGE_e) {
balloon_size = 2;
}
cXyz cStack_54(dCc_GetAc(tgHit->GetAc())->current.pos);
cStack_54 = (cStack_54 + current.pos) / 2.0f;
balloon2d->setComboCount(unaff_r25, m_combo_count);
balloon2d->setScoreCount(m_balloon_score);
balloon2d->addScoreCount(&cStack_54, local_74, unaff_r25);
cXyz pos_2d(dCc_GetAc(hit_obj->GetAc())->current.pos);
pos_2d = (pos_2d + current.pos) / 2.0f;
balloon_2d->setComboCount(balloon_size, m_combo_count);
balloon_2d->setScoreCount(m_balloon_score);
balloon_2d->addScoreCount(&pos_2d, add_score, balloon_size);
}
fopAcM_delete(this);
return;
}
}
fopAcM_posMoveF(this, mStts.GetCCMoveP());
}
@@ -326,9 +307,7 @@ void daObj_Balloon_c::action() {
void daObj_Balloon_c::mtx_set() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::scaleM(l_HIO.field_0x08[field_0x578],
l_HIO.field_0x08[field_0x578],
l_HIO.field_0x08[field_0x578]);
mDoMtx_stack_c::scaleM(l_HIO.mScale[mType], l_HIO.mScale[mType], l_HIO.mScale[mType]);
mModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
@@ -356,8 +335,8 @@ static int daObj_Balloon_IsDelete(daObj_Balloon_c* i_this) {
int daObj_Balloon_c::_delete() {
dComIfG_resDelete(&mPhase, "Obj_bal");
Z2GetAudioMgr()->seStop(Z2SE_OBJ_WATERMILL_ROUND, 0);
if (field_0x914 != 0) {
data_80BA8FFC = 0;
if (mHIOInit) {
l_initHIO = false;
}
return 1;
}
@@ -370,16 +349,16 @@ static int daObj_Balloon_Delete(daObj_Balloon_c* i_this) {
/* 80BA87CC-80BA88A4 00090C 00D8+00 1/1 0/0 0/0 .text CreateHeap__15daObj_Balloon_cFv */
int daObj_Balloon_c::CreateHeap() {
J3DModelData* modelData;
if (field_0x578 == 0) {
if (mType == SIZE_LARGE_e) {
modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_bal", 3);
} else if (field_0x578 == 1) {
} else if (mType == SIZE_MEDIUM_e) {
modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_bal", 4);
} else if (field_0x578 == 2) {
} else if (mType == SIZE_SMALL_e) {
modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_bal", 5);
}
JUT_ASSERT(501, modelData != 0);
mModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
return mModel != NULL ? 1 : 0;
return mModel != NULL ? TRUE : FALSE;
}
/* 80BA88A4-80BA88C4 0009E4 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
@@ -390,38 +369,56 @@ static int useHeapInit(fopAc_ac_c* i_this) {
/* 80BA88C4-80BA8B30 000A04 026C+00 1/1 0/0 0/0 .text create__15daObj_Balloon_cFv */
int daObj_Balloon_c::create() {
fopAcM_SetupActor(this, daObj_Balloon_c);
field_0x578 = fopAcM_GetParam(this);
if (field_0x578 == 0xff) {
field_0x578 = 0x0;
mType = fopAcM_GetParam(this);
if (mType == 0xFF) {
mType = SIZE_LARGE_e;
}
int rv = dComIfG_resLoad(&mPhase, "Obj_bal");
if (rv == cPhs_COMPLEATE_e) {
int phase_state = dComIfG_resLoad(&mPhase, "Obj_bal");
if (phase_state == cPhs_COMPLEATE_e) {
OS_REPORT("Obj_Balloon PARAM %x\n", fopAcM_GetParam(this));
if (fopAcM_entrySolidHeap(this, useHeapInit, 0xd60) == 0) {
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0xD60)) {
return cPhs_ERROR_e;
} else {
if (data_80BA8FFC == 0) {
field_0x914 = 1;
data_80BA8FFC = 1;
l_HIO.field_0x04 = -1;
}
attention_info.flags = 0;
fopAcM_SetMtx(this, mModel->getBaseTRMtx());
fopAcM_SetMin(this, -1000.0f, -1000.0f, -1000.0f);
fopAcM_SetMax(this, 1000.0f, 1000.0f, 1000.0f);
fopAcM_setCullSizeFar(this, 2.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
mAcchCir.SetWall(0.0f, 0.0f);
health = 60;
field_0x560 = 60;
mStts.Init(0xff, 0, this);
mSph.Set(cc_sph_src);
mSph.SetStts(&mStts);
daObj_Balloon_Execute(this);
}
if (!l_initHIO) {
mHIOInit = true;
l_initHIO = true;
l_HIO.field_0x04 = -1;
}
attention_info.flags = 0;
fopAcM_SetMtx(this, mModel->getBaseTRMtx());
fopAcM_SetMin(this, -1000.0f, -1000.0f, -1000.0f);
fopAcM_SetMax(this, 1000.0f, 1000.0f, 1000.0f);
fopAcM_setCullSizeFar(this, 2.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
mAcchCir.SetWall(0.0f, 0.0f);
health = 60;
field_0x560 = 60;
static dCcD_SrcSph cc_sph_src = {
{
{0x0, {{0x0, 0x0, 0x0}, {0x8, 0x11}, 0x0}}, // mObj
{dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
} // mSphAttr
};
mStts.Init(0xFF, 0, this);
mSph.Set(cc_sph_src);
mSph.SetStts(&mStts);
daObj_Balloon_Execute(this);
}
return rv;
return phase_state;
}
/* 80BA8CFC-80BA8D1C 000E3C 0020+00 1/0 0/0 0/0 .text daObj_Balloon_Create__FP15daObj_Balloon_c */
@@ -454,7 +451,6 @@ extern actor_process_profile_definition g_profile_OBJ_BALLOON = {
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* ############################################################################################## */
/* 80BA902C-80BA9030 000084 0004+00 0/0 0/0 0/0 .bss
* sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
JASDefaultBankTable* JASGlobalInstance<JASDefaultBankTable>::sInstance;
@@ -556,5 +552,3 @@ static u8 data_80BA9088[4];
/* 80BA908C-80BA9090 0000E4 0004+00 0/0 0/0 0/0 .bss
* sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
Z2WolfHowlMgr* JASGlobalInstance<Z2WolfHowlMgr>::sInstance;
/* 80BA8E54-80BA8E54 000048 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1,371 +1,253 @@
/**
* d_a_obj_fireWood2.cpp
*
* Firewood 2 (Flame)
*/
#include "rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2.h"
#include "dol2asm.h"
#include "m_Do/m_Do_hostIO.h"
/* 80BE824C-80BE8288 0000EC 003C+00 1/1 0/0 0/0 .text __ct__17daFireWood2_HIO_cFv */
daFireWood2_HIO_c::daFireWood2_HIO_c() {
mFlameOffsetY = 15.0f;
mCollisionDiameter = 25.0f;
mCollisionHeight = 50.0f;
}
//
// Forward References:
//
/* 80BE82D0-80BE8328 000170 0058+00 2/2 0/0 0/0 .text setBaseMtx__13daFireWood2_cFv */
void daFireWood2_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::ZXYrotM(current.angle.x, current.angle.y, current.angle.z);
}
extern "C" void __ct__17daFireWood2_HIO_cFv();
extern "C" void __dt__14mDoHIO_entry_cFv();
extern "C" void setBaseMtx__13daFireWood2_cFv();
extern "C" void create__13daFireWood2_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void lightInit__13daFireWood2_cFv();
extern "C" void setLight__13daFireWood2_cFv();
extern "C" void cutLight__13daFireWood2_cFv();
extern "C" void pointLightProc__13daFireWood2_cFv();
extern "C" void Execute__13daFireWood2_cFv();
extern "C" bool Draw__13daFireWood2_cFv();
extern "C" void Delete__13daFireWood2_cFv();
extern "C" static void daFireWood2_Draw__FP13daFireWood2_c();
extern "C" static void daFireWood2_Execute__FP13daFireWood2_c();
extern "C" static void daFireWood2_Delete__FP13daFireWood2_c();
extern "C" static void daFireWood2_Create__FP10fopAc_ac_c();
extern "C" void __dt__17daFireWood2_HIO_cFv();
extern "C" void __sinit_d_a_obj_fireWood2_cpp();
extern "C" u8 const mCcDObjInfo__13daFireWood2_c[48];
extern "C" u8 mCcDCyl__13daFireWood2_c[68];
/* 80BE908C-80BE909C 000014 0010+00 3/3 0/0 0/0 .bss l_HIO */
static daFireWood2_HIO_c l_HIO;
//
// External References:
//
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
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
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void GetTgHitGObj__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
extern "C" void dKy_plight_set__FP15LIGHT_INFLUENCE();
extern "C" void dKy_plight_cut__FP15LIGHT_INFLUENCE();
extern "C" void dKy_BossLight_set__FP4cXyzP8_GXColorfUc();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetH__8cM3dGCylFf();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
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];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80BE8F34-80BE8F38 000000 0004+00 3/3 0/0 0/0 .rodata @3625 */
SECTION_RODATA static f32 const lit_3625 = 15.0f;
COMPILER_STRIP_GATE(0x80BE8F34, &lit_3625);
/* 80BE8F38-80BE8F3C 000004 0004+00 0/1 0/0 0/0 .rodata @3626 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3626 = 25.0f;
COMPILER_STRIP_GATE(0x80BE8F38, &lit_3626);
#pragma pop
/* 80BE8F3C-80BE8F40 000008 0004+00 0/2 0/0 0/0 .rodata @3627 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3627 = 50.0f;
COMPILER_STRIP_GATE(0x80BE8F3C, &lit_3627);
#pragma pop
/* 80BE8F40-80BE8F70 00000C 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__13daFireWood2_c */
const dCcD_SrcGObjInf daFireWood2_c::mCcDObjInfo = {
{0, {{AT_TYPE_LANTERN_SWING, 0, 0x13}, {0xD8FBFFFF, 0x1F}, {0x79}}},
{dCcD_SE_SWORD, 0, 0, dCcD_MTRL_NONE, 0},
{dCcD_SE_STONE, 0, 0, dCcD_MTRL_NONE, 0},
{0},
};
/* 80BE8F98-80BE8FDC 000000 0044+00 2/2 0/0 0/0 .data mCcDCyl__13daFireWood2_c */
SECTION_DATA u8 daFireWood2_c::mCcDCyl[68] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
dCcD_SrcCyl daFireWood2_c::mCcDCyl = {
daFireWood2_c::mCcDObjInfo,
{
{0.0f, 0.0f, 0.0f}, // mCenter
0.0f, // mRadius
0.0f // mHeight
} // mCyl
};
/* 80BE8FDC-80BE8FF4 000044 0018+00 1/1 0/0 0/0 .data l_cull_box */
SECTION_DATA static u8 l_cull_box[24] = {
0xC2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00,
0x42, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00,
static cull_box l_cull_box = {
{-50.0f, 0.0f, -50.0f},
{50.0f, 100.0f, 50.0f},
};
/* 80BE8FF4-80BE9014 -00001 0020+00 1/0 0/0 0/0 .data l_daFireWood2_Method */
static actor_method_class l_daFireWood2_Method = {
(process_method_func)daFireWood2_Create__FP10fopAc_ac_c,
(process_method_func)daFireWood2_Delete__FP13daFireWood2_c,
(process_method_func)daFireWood2_Execute__FP13daFireWood2_c,
0,
(process_method_func)daFireWood2_Draw__FP13daFireWood2_c,
};
/* 80BE9014-80BE9044 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_FireWood2 */
extern actor_process_profile_definition g_profile_Obj_FireWood2 = {
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Lv1Cdl00, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daFireWood2_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
494, // mPriority
&l_daFireWood2_Method, // sub_method
0x00060000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80BE9044-80BE9050 0000AC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGCylFv,
};
/* 80BE9050-80BE905C 0000B8 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 80BE905C-80BE9068 0000C4 000C+00 2/2 0/0 0/0 .data __vt__17daFireWood2_HIO_c */
SECTION_DATA extern void* __vt__17daFireWood2_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__17daFireWood2_HIO_cFv,
};
/* 80BE9068-80BE9074 0000D0 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */
SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__14mDoHIO_entry_cFv,
};
/* 80BE824C-80BE8288 0000EC 003C+00 1/1 0/0 0/0 .text __ct__17daFireWood2_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daFireWood2_HIO_c::daFireWood2_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__ct__17daFireWood2_HIO_cFv.s"
}
#pragma pop
/* 80BE8288-80BE82D0 000128 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// mDoHIO_entry_c::~mDoHIO_entry_c()
extern "C" asm void __dt__14mDoHIO_entry_cFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__dt__14mDoHIO_entry_cFv.s"
}
#pragma pop
/* 80BE82D0-80BE8328 000170 0058+00 2/2 0/0 0/0 .text setBaseMtx__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::setBaseMtx() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/setBaseMtx__13daFireWood2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80BE9080-80BE908C 000008 000C+00 1/1 0/0 0/0 .bss @3619 */
static u8 lit_3619[12];
/* 80BE908C-80BE909C 000014 0010+00 3/3 0/0 0/0 .bss l_HIO */
static u8 l_HIO[16];
/* 80BE8328-80BE85B0 0001C8 0288+00 1/1 0/0 0/0 .text create__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/create__13daFireWood2_cFv.s"
int daFireWood2_c::create() {
fopAcM_SetupActor(this, daFireWood2_c);
setBaseMtx();
mCcStts.Init(0xFF, 0xFF, this);
mCcCyl.Set(mCcDCyl);
mCcCyl.SetStts(&mCcStts);
f32 min_x = l_cull_box.min.x * scale.x;
f32 min_y = l_cull_box.min.y * scale.y;
f32 min_z = l_cull_box.min.z * scale.x;
f32 max_x = l_cull_box.max.x * scale.x;
f32 max_y = l_cull_box.max.y * scale.y;
f32 max_z = l_cull_box.max.z * scale.x;
fopAcM_setCullSizeBox(this, min_x, min_y, min_z, max_x, max_y, max_y);
mFlamePos.x = current.pos.x;
mFlamePos.y = current.pos.y + l_HIO.mFlameOffsetY;
mFlamePos.z = current.pos.z;
for (int i = 0; i < 4; i++) {
mFlameEmtrIDs[i] = 0;
}
mIsPLight = fopAcM_GetParam(this) >> 0x10;
if (mIsPLight == 0xFF) {
mIsPLight = false;
}
lightInit();
mSwitchType = fopAcM_GetParam(this) >> 0x8;
if (mSwitchType == 0xFF) {
mSwitchType = 0;
}
mFlameType = fopAcM_GetParam(this) >> 0x18;
eyePos = mFlamePos;
mIsSwitch = fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF);
mIsLit = false;
if (mSwitchType == 0) {
if (mIsSwitch) {
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
setLight();
}
} else if (!mIsSwitch) {
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
setLight();
}
return cPhs_COMPLEATE_e;
}
#pragma pop
/* 80BE85B0-80BE85F8 000450 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// cM3dGCyl::~cM3dGCyl()
extern "C" asm void __dt__8cM3dGCylFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__dt__8cM3dGCylFv.s"
}
#pragma pop
/* 80BE85F8-80BE8640 000498 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// cM3dGAab::~cM3dGAab()
extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80BE8F40-80BE8F70 00000C 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__13daFireWood2_c */
SECTION_RODATA u8 const daFireWood2_c::mCcDObjInfo[48] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
0xD8, 0xFB, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80BE8F40, &daFireWood2_c::mCcDObjInfo);
/* 80BE8F70-80BE8F74 00003C 0004+00 0/1 0/0 0/0 .rodata @3834 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3834 = 10.0f;
COMPILER_STRIP_GATE(0x80BE8F70, &lit_3834);
#pragma pop
/* 80BE8F74-80BE8F78 000040 0004+00 0/1 0/0 0/0 .rodata @3835 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3835 = 500.0f;
COMPILER_STRIP_GATE(0x80BE8F74, &lit_3835);
#pragma pop
/* 80BE8F78-80BE8F7C 000044 0004+00 1/3 0/0 0/0 .rodata @3836 */
SECTION_RODATA static f32 const lit_3836 = 1.0f;
COMPILER_STRIP_GATE(0x80BE8F78, &lit_3836);
/* 80BE8F7C-80BE8F80 000048 0004+00 0/2 0/0 0/0 .rodata @3837 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3837[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80BE8F7C, &lit_3837);
#pragma pop
/* 80BE8640-80BE86CC 0004E0 008C+00 1/1 0/0 0/0 .text lightInit__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::lightInit() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/lightInit__13daFireWood2_cFv.s"
void daFireWood2_c::lightInit() {
mLightPos = mFlamePos;
mLightPos.y += 10.0f;
if (mIsPLight) {
mLightInfluence.mPosition = mLightPos;
mLightInfluence.mColor.r = 0xBC;
mLightInfluence.mColor.g = 0x66;
mLightInfluence.mColor.b = 0x42;
mLightInfluence.mPow = 500.0f;
mLightInfluence.mFluctuation = 1.0f;
} else {
mBossLightStrength = 0.0f;
}
}
#pragma pop
/* 80BE86CC-80BE86FC 00056C 0030+00 2/2 0/0 0/0 .text setLight__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::setLight() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/setLight__13daFireWood2_cFv.s"
void daFireWood2_c::setLight() {
if (mIsPLight) {
dKy_plight_set(&mLightInfluence);
}
}
#pragma pop
/* 80BE86FC-80BE872C 00059C 0030+00 1/1 0/0 0/0 .text cutLight__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::cutLight() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/cutLight__13daFireWood2_cFv.s"
void daFireWood2_c::cutLight() {
if (mIsPLight) {
dKy_plight_cut(&mLightInfluence);
}
}
#pragma pop
/* ############################################################################################## */
/* 80BE8F80-80BE8F84 00004C 0004+00 0/1 0/0 0/0 .rodata @3855 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3855 = 0xBC6642FF;
COMPILER_STRIP_GATE(0x80BE8F80, &lit_3855);
#pragma pop
/* 80BE8F84-80BE8F88 000050 0004+00 0/1 0/0 0/0 .rodata @3863 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3863 = 0.5f;
COMPILER_STRIP_GATE(0x80BE8F84, &lit_3863);
#pragma pop
/* 80BE8F88-80BE8F8C 000054 0004+00 0/1 0/0 0/0 .rodata @3864 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3864 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80BE8F88, &lit_3864);
#pragma pop
/* 80BE8F8C-80BE8F90 000058 0004+00 0/1 0/0 0/0 .rodata @3865 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3865 = 0x38D1B717;
COMPILER_STRIP_GATE(0x80BE8F8C, &lit_3865);
#pragma pop
/* 80BE8F90-80BE8F94 00005C 0004+00 0/1 0/0 0/0 .rodata @3866 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3866 = 0x358637BD;
COMPILER_STRIP_GATE(0x80BE8F90, &lit_3866);
#pragma pop
/* 80BE872C-80BE87DC 0005CC 00B0+00 1/1 0/0 0/0 .text pointLightProc__13daFireWood2_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::pointLightProc() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/pointLightProc__13daFireWood2_cFv.s"
}
#pragma pop
void daFireWood2_c::pointLightProc() {
if (!mIsPLight) {
GXColor color = {0xBC, 0x66, 0x42, 0xFF};
/* ############################################################################################## */
/* 80BE8F94-80BE8F98 000060 0004+00 1/2 0/0 0/0 .rodata @4018 */
SECTION_RODATA static f32 const lit_4018 = -1.0f;
COMPILER_STRIP_GATE(0x80BE8F94, &lit_4018);
if (mIsLit) {
cLib_addCalc(&mBossLightStrength, 1.0f, 0.5f, 0.1f, 0.0001f);
} else {
cLib_addCalc(&mBossLightStrength, 0.0f, 0.5f, 0.1f, 0.0001f);
}
if (mBossLightStrength >= 0.000001f) {
dKy_BossLight_set(&mLightPos, &color, mBossLightStrength, 0);
}
}
}
/* 80BE87DC-80BE8D98 00067C 05BC+00 1/1 0/0 0/0 .text Execute__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::Execute() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/Execute__13daFireWood2_cFv.s"
int daFireWood2_c::Execute() {
u8 is_switch = fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF);
if (mIsSwitch != is_switch) {
mIsLit = false;
mCcCyl.SetAtMtrl(dCcD_MTRL_NONE);
cutLight();
if (mSwitchType == 0) {
if (is_switch) {
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
setLight();
}
} else if (!is_switch) {
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
setLight();
}
mIsSwitch = is_switch;
}
if (mIsLit) {
if (mFlameType == 1) {
mFlameEmtrIDs[0] =
dComIfGp_particle_set(mFlameEmtrIDs[0], 0x85A7, &mFlamePos, NULL, NULL);
mFlameEmtrIDs[1] =
dComIfGp_particle_set(mFlameEmtrIDs[1], 0x85BB, &mFlamePos, NULL, NULL);
mFlameEmtrIDs[2] =
dComIfGp_particle_set(mFlameEmtrIDs[2], 0x85BC, &mFlamePos, NULL, NULL);
mFlameEmtrIDs[3] =
dComIfGp_particle_set(mFlameEmtrIDs[3], 0x85BD, &mFlamePos, NULL, NULL);
} else {
mFlameEmtrIDs[0] =
dComIfGp_particle_set(mFlameEmtrIDs[0], 0x3AD, &mFlamePos, NULL, NULL);
mFlameEmtrIDs[1] =
dComIfGp_particle_set(mFlameEmtrIDs[1], 0x3AF, &mFlamePos, NULL, NULL);
mFlameEmtrIDs[2] =
dComIfGp_particle_set(mFlameEmtrIDs[2], 0x3AE, &mFlamePos, NULL, NULL);
}
mDoAud_seStartLevel(Z2SE_OBJ_FIRE_BURNING, &mFlamePos, 0,
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
}
setBaseMtx();
if (mCcCyl.ChkTgHit()) {
dCcD_GObjInf* gobj = mCcCyl.GetTgHitGObj();
if (gobj->GetAtType() == AT_TYPE_LANTERN_SWING && gobj->GetAtMtrl() == dCcD_MTRL_FIRE &&
!mIsLit)
{
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
if (mSwitchType == 0) {
fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF);
} else {
fopAcM_offSwitch(this, fopAcM_GetParam(this) & 0xFF);
}
mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &mFlamePos, 0,
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
setLight();
}
if (gobj->GetAtType() == AT_TYPE_BOOMERANG && gobj->GetAtMtrl() == dCcD_MTRL_WIND &&
mIsLit == true)
{
mIsLit = false;
mCcCyl.SetAtMtrl(dCcD_MTRL_NONE);
if (mSwitchType == 0) {
fopAcM_offSwitch(this, fopAcM_GetParam(this) & 0xFF);
} else {
fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF);
}
mDoAud_seStart(Z2SE_OBJ_FIRE_OFF, &mFlamePos, 0,
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
cutLight();
}
}
mCcCyl.SetR(l_HIO.mCollisionDiameter);
mCcCyl.SetH(l_HIO.mCollisionHeight);
mCcCyl.SetC(current.pos);
dComIfG_Ccsp()->Set(&mCcCyl);
pointLightProc();
return 1;
}
#pragma pop
/* 80BE8D98-80BE8DA0 000C38 0008+00 1/1 0/0 0/0 .text Draw__13daFireWood2_cFv */
int daFireWood2_c::Draw() {
@@ -373,77 +255,57 @@ int daFireWood2_c::Draw() {
}
/* 80BE8DA0-80BE8DD4 000C40 0034+00 1/1 0/0 0/0 .text Delete__13daFireWood2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood2_c::Delete() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/Delete__13daFireWood2_cFv.s"
int daFireWood2_c::Delete() {
if (mIsPLight) {
dKy_plight_cut(&mLightInfluence);
}
return 1;
}
#pragma pop
/* 80BE8DD4-80BE8DF4 000C74 0020+00 1/0 0/0 0/0 .text daFireWood2_Draw__FP13daFireWood2_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood2_Draw(daFireWood2_c* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/daFireWood2_Draw__FP13daFireWood2_c.s"
static int daFireWood2_Draw(daFireWood2_c* i_this) {
return i_this->Draw();
}
#pragma pop
/* 80BE8DF4-80BE8E14 000C94 0020+00 1/0 0/0 0/0 .text daFireWood2_Execute__FP13daFireWood2_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood2_Execute(daFireWood2_c* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/daFireWood2_Execute__FP13daFireWood2_c.s"
static int daFireWood2_Execute(daFireWood2_c* i_this) {
return i_this->Execute();
}
#pragma pop
/* 80BE8E14-80BE8E34 000CB4 0020+00 1/0 0/0 0/0 .text daFireWood2_Delete__FP13daFireWood2_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood2_Delete(daFireWood2_c* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/daFireWood2_Delete__FP13daFireWood2_c.s"
static int daFireWood2_Delete(daFireWood2_c* i_this) {
return i_this->Delete();
}
#pragma pop
/* 80BE8E34-80BE8E54 000CD4 0020+00 1/0 0/0 0/0 .text daFireWood2_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood2_Create(fopAc_ac_c* i_this) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/daFireWood2_Create__FP10fopAc_ac_c.s"
static int daFireWood2_Create(fopAc_ac_c* i_this) {
return ((daFireWood2_c*)i_this)->create();
}
#pragma pop
/* 80BE8E54-80BE8EB0 000CF4 005C+00 2/1 0/0 0/0 .text __dt__17daFireWood2_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daFireWood2_HIO_c::~daFireWood2_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__dt__17daFireWood2_HIO_cFv.s"
}
#pragma pop
/* 80BE8FF4-80BE9014 -00001 0020+00 1/0 0/0 0/0 .data l_daFireWood2_Method */
static actor_method_class l_daFireWood2_Method = {
(process_method_func)daFireWood2_Create, (process_method_func)daFireWood2_Delete,
(process_method_func)daFireWood2_Execute, (process_method_func)NULL,
(process_method_func)daFireWood2_Draw,
};
/* 80BE8EB0-80BE8F20 000D50 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_fireWood2_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_a_obj_fireWood2_cpp(){nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2/__sinit_d_a_obj_fireWood2_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80BE8EB0, __sinit_d_a_obj_fireWood2_cpp);
#pragma pop
/* 80BE9014-80BE9044 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_FireWood2 */
extern actor_process_profile_definition g_profile_Obj_FireWood2 = {
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Lv1Cdl00, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daFireWood2_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
494, // mPriority
&l_daFireWood2_Method, // sub_method
0x00060000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
@@ -1,166 +1,21 @@
/**
* @file d_a_obj_sWallShutter.cpp
*
*/
*
*/
#include "rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void __ct__17daSwShutter_HIO_cFv();
extern "C" void __dt__14mDoHIO_entry_cFv();
extern "C" void setBaseMtx__13daSwShutter_cFv();
extern "C" void CreateHeap__13daSwShutter_cFv();
extern "C" void create__13daSwShutter_cFv();
extern "C" void Execute__13daSwShutter_cFPPA3_A4_f();
extern "C" void moveMain__13daSwShutter_cFv();
extern "C" void init_modeWait__13daSwShutter_cFv();
extern "C" void modeWait__13daSwShutter_cFv();
extern "C" void init_modeMoveDownInit__13daSwShutter_cFv();
extern "C" void modeMoveDownInit__13daSwShutter_cFv();
extern "C" void init_modeMoveDown__13daSwShutter_cFv();
extern "C" void modeMoveDown__13daSwShutter_cFv();
extern "C" void init_modeMoveDownEnd__13daSwShutter_cFv();
extern "C" void modeMoveDownEnd__13daSwShutter_cFv();
extern "C" void Draw__13daSwShutter_cFv();
extern "C" void Delete__13daSwShutter_cFv();
extern "C" static void daSwShutter_Draw__FP13daSwShutter_c();
extern "C" static void daSwShutter_Execute__FP13daSwShutter_c();
extern "C" static void daSwShutter_Delete__FP13daSwShutter_c();
extern "C" static void daSwShutter_Create__FP10fopAc_ac_c();
extern "C" void __dt__17daSwShutter_HIO_cFv();
extern "C" void __sinit_d_a_obj_sWallShutter_cpp();
extern "C" extern char const* const d_a_obj_sWallShutter__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
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 isSwitch__10dSv_info_cCFii();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void
set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void StartShock__12dVibration_cFii4cXyz();
extern "C" void StartQuake__12dVibration_cFii4cXyz();
extern "C" void StopQuake__12dVibration_cFi();
extern "C" void dBgS_MoveBGProc_TypicalRotY__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
extern "C" void __ct__16dBgS_MoveBgActorFv();
extern "C" bool Create__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 cLib_addCalc__FPfffff();
extern "C" void cLib_chaseF__FPfff();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80598F78-80598F7C 000000 0004+00 6/6 0/0 0/0 .rodata @3630 */
SECTION_RODATA static u8 const lit_3630[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80598F78, &lit_3630);
/* 80598F7C-80598F80 000004 0004+00 0/1 0/0 0/0 .rodata @3631 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3631 = 100.0f;
COMPILER_STRIP_GATE(0x80598F7C, &lit_3631);
#pragma pop
/* 80598F80-80598F84 000008 0004+00 0/1 0/0 0/0 .rodata @3632 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3632 = 1.0f / 5.0f;
COMPILER_STRIP_GATE(0x80598F80, &lit_3632);
#pragma pop
/* 80598F84-80598F88 00000C 0004+00 0/1 0/0 0/0 .rodata @3633 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3633 = 90.0f;
COMPILER_STRIP_GATE(0x80598F84, &lit_3633);
#pragma pop
/* 80598F88-80598F8C 000010 0004+00 0/1 0/0 0/0 .rodata @3634 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3634 = 45.0f;
COMPILER_STRIP_GATE(0x80598F88, &lit_3634);
#pragma pop
/* 80598F8C-80598F90 000014 0004+00 0/1 0/0 0/0 .rodata @3635 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3635 = 150.0f;
COMPILER_STRIP_GATE(0x80598F8C, &lit_3635);
#pragma pop
/* 80598F90-80598F94 000018 0004+00 0/1 0/0 0/0 .rodata @3636 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3636 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80598F90, &lit_3636);
#pragma pop
/* 80598F94-80598F98 00001C 0004+00 0/1 0/0 0/0 .rodata @3637 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3637 = 5.0f;
COMPILER_STRIP_GATE(0x80598F94, &lit_3637);
#pragma pop
/* 80598FB8-80598FB8 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80598FB8 = "P_Rgate";
SECTION_DEAD static char const* const stringBase_80598FC0 = "SDGate";
#pragma pop
#include "SSystem/SComponent/c_math.h"
#include "d/com/d_com_inf_game.h"
/* 80598FC8-80598FD4 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80598FD4-80598FE8 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
@@ -171,400 +26,277 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
#pragma pop
/* 80598FE8-80598FF0 -00001 0008+00 3/3 0/0 0/0 .data l_resNameIdx */
SECTION_DATA static void* l_resNameIdx[2] = {
(void*)&d_a_obj_sWallShutter__stringBase0,
(void*)(((char*)&d_a_obj_sWallShutter__stringBase0) + 0x8),
static char* l_resNameIdx[2] = {
"P_Rgate",
"SDGate",
};
/* 80598FF0-80598FFC -00001 000C+00 0/1 0/0 0/0 .data @3746 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3746[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeWait__13daSwShutter_cFv,
};
#pragma pop
/* 805981EC-8059825C 0000EC 0070+00 1/1 0/0 0/0 .text __ct__17daSwShutter_HIO_cFv */
daSwShutter_HIO_c::daSwShutter_HIO_c() {
mInitSpeed = 0.0f;
mMaxSpeed = 100.0f;
mAcceleration = 0.2f;
mVibrationStrength = 4;
mShakeAmpZ = 90.0f;
mShakeAmpY = 45.0f;
mShakeStrength = 150.0f;
mShakeAtten = 0.1f;
mMaxAtten = 5.0f;
mMinAtten = 0.1f;
}
/* 80598FFC-80599008 -00001 000C+00 0/1 0/0 0/0 .data @3747 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3747[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeMoveDownInit__13daSwShutter_cFv,
};
#pragma pop
/* 805982A4-80598344 0001A4 00A0+00 2/2 0/0 0/0 .text setBaseMtx__13daSwShutter_cFv */
void daSwShutter_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
mDoMtx_stack_c::ZXYrotM(mShakeRot.x, mShakeRot.y, mShakeRot.z);
/* 80599008-80599014 -00001 000C+00 0/1 0/0 0/0 .data @3748 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3748[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeMoveDown__13daSwShutter_cFv,
};
#pragma pop
mpModel->setBaseScale(scale);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 80599014-80599020 -00001 000C+00 0/1 0/0 0/0 .data @3749 */
#pragma push
#pragma force_active on
SECTION_DATA static void* lit_3749[3] = {
(void*)NULL,
(void*)0xFFFFFFFF,
(void*)modeMoveDownEnd__13daSwShutter_cFv,
};
#pragma pop
/* 80598F98-80598FA0 000020 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */
static const int l_bmdIdx[2] = {4, 4};
/* 80599020-80599050 000058 0030+00 0/1 0/0 0/0 .data mode_proc$3745 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 mode_proc[48] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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
/* 80598344-805983C4 000244 0080+00 1/0 0/0 0/0 .text CreateHeap__13daSwShutter_cFv */
int daSwShutter_c::CreateHeap() {
J3DModelData* modelData =
(J3DModelData*)dComIfG_getObjectRes(l_resNameIdx[mModelType], l_bmdIdx[mModelType]);
JUT_ASSERT(199, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
return 1;
}
/* 80598FA0-80598FA8 000028 0008+00 0/1 0/0 0/0 .rodata l_dzbIdx */
static const int l_dzbIdx[2] = {7, 7};
/* 805983C4-80598564 0002C4 01A0+00 1/1 0/0 0/0 .text create__13daSwShutter_cFv */
int daSwShutter_c::create() {
fopAcM_SetupActor(this, daSwShutter_c);
mModelType = getModelType();
if (mModelType == 0xF) {
mModelType = TYPE_ROCKWALL_e;
}
int phase_state = dComIfG_resLoad(&mPhase, l_resNameIdx[mModelType]);
if (phase_state == cPhs_COMPLEATE_e) {
if (MoveBGCreate(l_resNameIdx[mModelType], l_dzbIdx[mModelType],
dBgS_MoveBGProc_TypicalRotY, 0x1000, NULL) == cPhs_ERROR_e)
{
return cPhs_ERROR_e;
}
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
mCounter = 0;
field_0x5b0 = 0.0f;
if (fopAcM_isSwitch(this, getSwBit())) {
current.pos.y += -450.0f;
init_modeMoveDownEnd();
} else {
mShakeRot.x = 0;
mShakeRot.y = 0;
mShakeRot.z = 0;
mShakeStrength = 0.0f;
mShakeAmpY = 0.0f;
mShakeAmpZ = 0.0f;
mShakeAtten = 0.0f;
mMaxAtten = 0.0f;
mMinAtten = 0.0f;
init_modeWait();
}
setBaseMtx();
}
return phase_state;
}
/* 80598564-805985B4 000464 0050+00 1/0 0/0 0/0 .text Execute__13daSwShutter_cFPPA3_A4_f
*/
int daSwShutter_c::Execute(Mtx** param_0) {
moveMain();
*param_0 = &mpModel->getBaseTRMtx();
setBaseMtx();
return 1;
}
/* 805990F4-80599120 000014 002C+00 4/4 0/0 0/0 .bss l_HIO */
static daSwShutter_HIO_c l_HIO;
/* 805985B4-8059873C 0004B4 0188+00 1/1 0/0 0/0 .text moveMain__13daSwShutter_cFv */
void daSwShutter_c::moveMain() {
typedef void (daSwShutter_c::*modeFunc)();
static modeFunc mode_proc[] = {
&daSwShutter_c::modeWait,
&daSwShutter_c::modeMoveDownInit,
&daSwShutter_c::modeMoveDown,
&daSwShutter_c::modeMoveDownEnd,
};
(this->*mode_proc[mMode])();
mShakeRot.z = mShakeStrength * cM_scos(mCounter * (s16)cM_deg2s(mShakeAmpY));
mShakeRot.y = mShakeStrength * cM_ssin(mCounter * (s16)cM_deg2s(mShakeAmpZ));
cLib_addCalc(&mShakeStrength, 0.0f, mShakeAtten, mMaxAtten, mMinAtten);
mCounter++;
}
/* 8059873C-80598748 00063C 000C+00 1/1 0/0 0/0 .text init_modeWait__13daSwShutter_cFv */
void daSwShutter_c::init_modeWait() {
mMode = MODE_WAIT;
}
/* 80598748-8059879C 000648 0054+00 1/0 0/0 0/0 .text modeWait__13daSwShutter_cFv */
void daSwShutter_c::modeWait() {
if (fopAcM_isSwitch(this, getSwBit())) {
init_modeMoveDownInit();
}
}
/* 8059879C-805989D0 00069C 0234+00 1/1 0/0 0/0 .text init_modeMoveDownInit__13daSwShutter_cFv */
void daSwShutter_c::init_modeMoveDownInit() {
mShakeStrength = l_HIO.mShakeStrength;
mShakeAmpY = l_HIO.mShakeAmpY;
mShakeAmpZ = l_HIO.mShakeAmpZ;
mShakeAtten = l_HIO.mShakeAtten;
mMaxAtten = l_HIO.mMaxAtten;
mMinAtten = l_HIO.mMinAtten;
if (mModelType == TYPE_SUBDAN_e) {
dComIfGp_particle_set(0x8C73, &current.pos, &shape_angle, NULL);
dComIfGp_particle_set(0x8C74, &current.pos, &shape_angle, NULL);
} else {
dComIfGp_particle_set(0x8709, &current.pos, &shape_angle, NULL);
dComIfGp_particle_set(0x870A, &current.pos, &shape_angle, NULL);
}
mDoAud_seStart(Z2SE_OBJ_WALLSHUTTER_OPEN, &current.pos, 0,
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
dComIfGp_getVibration().StartQuake(2, 15, cXyz(0.0f, 1.0f, 0.0f));
mMode = MODE_MOVE_DOWN_INIT;
}
/* 805989D0-80598A04 0008D0 0034+00 1/0 0/0 0/0 .text modeMoveDownInit__13daSwShutter_cFv
*/
void daSwShutter_c::modeMoveDownInit() {
if (mShakeStrength == 0.0f) {
init_modeMoveDown();
}
}
/* 80598A04-80598AFC 000904 00F8+00 1/1 0/0 0/0 .text init_modeMoveDown__13daSwShutter_cFv */
void daSwShutter_c::init_modeMoveDown() {
fopAcM_SetSpeedF(this, l_HIO.mInitSpeed);
if (mModelType == TYPE_SUBDAN_e) {
dComIfGp_particle_set(0x8C77, &current.pos, &shape_angle, NULL);
} else {
dComIfGp_particle_set(0x870D, &current.pos, &shape_angle, NULL);
}
mMode = MODE_MOVE_DOWN;
}
/* 80598AFC-80598D4C 0009FC 0250+00 1/0 0/0 0/0 .text modeMoveDown__13daSwShutter_cFv */
void daSwShutter_c::modeMoveDown() {
cLib_chaseF(&speedF, l_HIO.mMaxSpeed, l_HIO.mAcceleration);
f32 target_dist =
cLib_addCalc(&current.pos.y, home.pos.y + -450.0f, 1.0f, fopAcM_GetSpeedF(this), 1.0f);
if (mModelType == TYPE_SUBDAN_e) {
mEmitterID0 = dComIfGp_particle_set(mEmitterID0, 0x8C75, &current.pos, &shape_angle, NULL);
mEmitterID1 = dComIfGp_particle_set(mEmitterID1, 0x8C76, &current.pos, &shape_angle, NULL);
} else {
mEmitterID0 = dComIfGp_particle_set(mEmitterID0, 0x870B, &current.pos, &shape_angle, NULL);
mEmitterID1 = dComIfGp_particle_set(mEmitterID1, 0x870C, &current.pos, &shape_angle, NULL);
}
if (target_dist == 0.0f) {
dComIfGp_getVibration().StopQuake(15);
dComIfGp_getVibration().StartShock(l_HIO.mVibrationStrength, 15, cXyz(0.0f, 1.0f, 0.0f));
init_modeMoveDownEnd();
}
}
/* 80598D4C-80598D58 000C4C 000C+00 2/2 0/0 0/0 .text init_modeMoveDownEnd__13daSwShutter_cFv */
void daSwShutter_c::init_modeMoveDownEnd() {
mMode = MODE_MOVE_DOWN_END;
}
/* 80598D58-80598D5C 000C58 0004+00 1/0 0/0 0/0 .text modeMoveDownEnd__13daSwShutter_cFv
*/
void daSwShutter_c::modeMoveDownEnd() {}
/* 80598D5C-80598E00 000C5C 00A4+00 1/0 0/0 0/0 .text Draw__13daSwShutter_cFv */
int daSwShutter_c::Draw() {
g_env_light.settingTevStruct(16, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return 1;
}
/* 80598E00-80598E40 000D00 0040+00 1/0 0/0 0/0 .text Delete__13daSwShutter_cFv */
int daSwShutter_c::Delete() {
dComIfG_resDelete(&mPhase, l_resNameIdx[mModelType]);
return 1;
}
/* 80598E40-80598E6C 000D40 002C+00 1/0 0/0 0/0 .text daSwShutter_Draw__FP13daSwShutter_c
*/
static int daSwShutter_Draw(daSwShutter_c* i_this) {
return i_this->MoveBGDraw();
}
/* 80598E6C-80598E8C 000D6C 0020+00 1/0 0/0 0/0 .text daSwShutter_Execute__FP13daSwShutter_c */
static int daSwShutter_Execute(daSwShutter_c* i_this) {
return i_this->MoveBGExecute();
}
/* 80598E8C-80598EAC 000D8C 0020+00 1/0 0/0 0/0 .text daSwShutter_Delete__FP13daSwShutter_c */
static int daSwShutter_Delete(daSwShutter_c* i_this) {
return i_this->MoveBGDelete();
}
/* 80598EAC-80598ECC 000DAC 0020+00 1/0 0/0 0/0 .text daSwShutter_Create__FP10fopAc_ac_c
*/
static int daSwShutter_Create(fopAc_ac_c* i_this) {
return ((daSwShutter_c*)i_this)->create();
}
/* 80599050-80599070 -00001 0020+00 1/0 0/0 0/0 .data l_daSwShutter_Method */
static actor_method_class l_daSwShutter_Method = {
(process_method_func)daSwShutter_Create__FP10fopAc_ac_c,
(process_method_func)daSwShutter_Delete__FP13daSwShutter_c,
(process_method_func)daSwShutter_Execute__FP13daSwShutter_c,
0,
(process_method_func)daSwShutter_Draw__FP13daSwShutter_c,
(process_method_func)daSwShutter_Create, (process_method_func)daSwShutter_Delete,
(process_method_func)daSwShutter_Execute, (process_method_func)NULL,
(process_method_func)daSwShutter_Draw,
};
/* 80599070-805990A0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SwallShutter */
extern actor_process_profile_definition g_profile_Obj_SwallShutter = {
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_SwallShutter, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daSwShutter_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
619, // mPriority
&l_daSwShutter_Method, // sub_method
0x00044000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
fpcLy_CURRENT_e, // mLayerID
3, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_SwallShutter, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daSwShutter_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
619, // mPriority
&l_daSwShutter_Method, // sub_method
0x00044000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 805990A0-805990C8 0000D8 0028+00 1/1 0/0 0/0 .data __vt__13daSwShutter_c */
SECTION_DATA extern void* __vt__13daSwShutter_c[10] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)CreateHeap__13daSwShutter_cFv,
(void*)Create__16dBgS_MoveBgActorFv,
(void*)Execute__13daSwShutter_cFPPA3_A4_f,
(void*)Draw__13daSwShutter_cFv,
(void*)Delete__13daSwShutter_cFv,
(void*)IsDelete__16dBgS_MoveBgActorFv,
(void*)ToFore__16dBgS_MoveBgActorFv,
(void*)ToBack__16dBgS_MoveBgActorFv,
};
/* 805990C8-805990D4 000100 000C+00 2/2 0/0 0/0 .data __vt__17daSwShutter_HIO_c */
SECTION_DATA extern void* __vt__17daSwShutter_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__17daSwShutter_HIO_cFv,
};
/* 805990D4-805990E0 00010C 000C+00 3/3 0/0 0/0 .data __vt__14mDoHIO_entry_c */
SECTION_DATA extern void* __vt__14mDoHIO_entry_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__14mDoHIO_entry_cFv,
};
/* 805981EC-8059825C 0000EC 0070+00 1/1 0/0 0/0 .text __ct__17daSwShutter_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daSwShutter_HIO_c::daSwShutter_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/__ct__17daSwShutter_HIO_cFv.s"
}
#pragma pop
/* 8059825C-805982A4 00015C 0048+00 1/0 0/0 0/0 .text __dt__14mDoHIO_entry_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm mDoHIO_entry_c::~mDoHIO_entry_c() {
extern "C" asm void __dt__14mDoHIO_entry_cFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/__dt__14mDoHIO_entry_cFv.s"
}
#pragma pop
/* 805982A4-80598344 0001A4 00A0+00 2/2 0/0 0/0 .text setBaseMtx__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::setBaseMtx() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/setBaseMtx__13daSwShutter_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80598F98-80598FA0 000020 0008+00 1/1 0/0 0/0 .rodata l_bmdIdx */
SECTION_RODATA static u8 const l_bmdIdx[8] = {
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04,
};
COMPILER_STRIP_GATE(0x80598F98, &l_bmdIdx);
/* 80598344-805983C4 000244 0080+00 1/0 0/0 0/0 .text CreateHeap__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::CreateHeap() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/CreateHeap__13daSwShutter_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80598FA0-80598FA8 000028 0008+00 0/1 0/0 0/0 .rodata l_dzbIdx */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const l_dzbIdx[8] = {
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07,
};
COMPILER_STRIP_GATE(0x80598FA0, &l_dzbIdx);
#pragma pop
/* 80598FA8-80598FAC 000030 0004+00 0/2 0/0 0/0 .rodata @3730 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3730 = -450.0f;
COMPILER_STRIP_GATE(0x80598FA8, &lit_3730);
#pragma pop
/* 805983C4-80598564 0002C4 01A0+00 1/1 0/0 0/0 .text create__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/create__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598564-805985B4 000464 0050+00 1/0 0/0 0/0 .text Execute__13daSwShutter_cFPPA3_A4_f
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::Execute(f32 (**param_0)[3][4]) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/Execute__13daSwShutter_cFPPA3_A4_f.s"
}
#pragma pop
/* ############################################################################################## */
/* 80598FAC-80598FB0 000034 0004+00 1/1 0/0 0/0 .rodata @3766 */
SECTION_RODATA static u32 const lit_3766 = 0x43360B61;
COMPILER_STRIP_GATE(0x80598FAC, &lit_3766);
/* 805990E8-805990F4 000008 000C+00 1/1 0/0 0/0 .bss @3624 */
static u8 lit_3624[12];
/* 805990F4-80599120 000014 002C+00 4/4 0/0 0/0 .bss l_HIO */
static u8 l_HIO[44];
/* 80599120-80599124 000040 0004+00 1/1 0/0 0/0 .bss None */
static u8 data_80599120[4];
/* 805985B4-8059873C 0004B4 0188+00 1/1 0/0 0/0 .text moveMain__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::moveMain() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/moveMain__13daSwShutter_cFv.s"
}
#pragma pop
/* 8059873C-80598748 00063C 000C+00 1/1 0/0 0/0 .text init_modeWait__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::init_modeWait() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/init_modeWait__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598748-8059879C 000648 0054+00 1/0 0/0 0/0 .text modeWait__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::modeWait() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/modeWait__13daSwShutter_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80598FB0-80598FB4 000038 0004+00 1/3 0/0 0/0 .rodata @3826 */
SECTION_RODATA static f32 const lit_3826 = 1.0f;
COMPILER_STRIP_GATE(0x80598FB0, &lit_3826);
/* 80598FB4-80598FB8 00003C 0004+00 0/1 0/0 0/0 .rodata @3827 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3827 = -1.0f;
COMPILER_STRIP_GATE(0x80598FB4, &lit_3827);
#pragma pop
/* 8059879C-805989D0 00069C 0234+00 1/1 0/0 0/0 .text init_modeMoveDownInit__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::init_modeMoveDownInit() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/init_modeMoveDownInit__13daSwShutter_cFv.s"
}
#pragma pop
/* 805989D0-80598A04 0008D0 0034+00 1/0 0/0 0/0 .text modeMoveDownInit__13daSwShutter_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::modeMoveDownInit() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/modeMoveDownInit__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598A04-80598AFC 000904 00F8+00 1/1 0/0 0/0 .text init_modeMoveDown__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::init_modeMoveDown() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/init_modeMoveDown__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598AFC-80598D4C 0009FC 0250+00 1/0 0/0 0/0 .text modeMoveDown__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::modeMoveDown() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/modeMoveDown__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598D4C-80598D58 000C4C 000C+00 2/2 0/0 0/0 .text init_modeMoveDownEnd__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::init_modeMoveDownEnd() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/init_modeMoveDownEnd__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598D58-80598D5C 000C58 0004+00 1/0 0/0 0/0 .text modeMoveDownEnd__13daSwShutter_cFv
*/
void daSwShutter_c::modeMoveDownEnd() {
/* empty function */
}
/* 80598D5C-80598E00 000C5C 00A4+00 1/0 0/0 0/0 .text Draw__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::Draw() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/Draw__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598E00-80598E40 000D00 0040+00 1/0 0/0 0/0 .text Delete__13daSwShutter_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSwShutter_c::Delete() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/Delete__13daSwShutter_cFv.s"
}
#pragma pop
/* 80598E40-80598E6C 000D40 002C+00 1/0 0/0 0/0 .text daSwShutter_Draw__FP13daSwShutter_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSwShutter_Draw(daSwShutter_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/daSwShutter_Draw__FP13daSwShutter_c.s"
}
#pragma pop
/* 80598E6C-80598E8C 000D6C 0020+00 1/0 0/0 0/0 .text daSwShutter_Execute__FP13daSwShutter_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSwShutter_Execute(daSwShutter_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/daSwShutter_Execute__FP13daSwShutter_c.s"
}
#pragma pop
/* 80598E8C-80598EAC 000D8C 0020+00 1/0 0/0 0/0 .text daSwShutter_Delete__FP13daSwShutter_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSwShutter_Delete(daSwShutter_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/daSwShutter_Delete__FP13daSwShutter_c.s"
}
#pragma pop
/* 80598EAC-80598ECC 000DAC 0020+00 1/0 0/0 0/0 .text daSwShutter_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSwShutter_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/daSwShutter_Create__FP10fopAc_ac_c.s"
}
#pragma pop
/* 80598ECC-80598F28 000DCC 005C+00 2/1 0/0 0/0 .text __dt__17daSwShutter_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daSwShutter_HIO_c::~daSwShutter_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/__dt__17daSwShutter_HIO_cFv.s"
}
#pragma pop
/* 80598F28-80598F64 000E28 003C+00 0/0 1/0 0/0 .text __sinit_d_a_obj_sWallShutter_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_a_obj_sWallShutter_cpp() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter/__sinit_d_a_obj_sWallShutter_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80598F28, __sinit_d_a_obj_sWallShutter_cpp);
#pragma pop
/* 80598FB8-80598FB8 000040 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+42 -15
View File
@@ -1,6 +1,6 @@
/**
* @file d_a_obj_zraMark.cpp
*
* Iza's River Ride Destructible Buoy
*/
#include "rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h"
@@ -111,7 +111,6 @@ extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@@ -121,6 +120,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
/* 80D42658-80D42678 000078 0020+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -258,10 +258,11 @@ SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
};
/* 80D42678-80D4287C 000098 0204+00 1/1 0/0 0/0 .text Create__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::Create() {
asm int daObjZraMark_c::Create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/Create__14daObjZraMark_cFv.s"
}
@@ -290,50 +291,55 @@ COMPILER_STRIP_GATE(0x80D43E0C, &lit_4124);
#pragma pop
/* 80D4287C-80D42A7C 00029C 0200+00 1/1 0/0 0/0 .text CreateHeap__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::CreateHeap() {
asm int daObjZraMark_c::CreateHeap() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/CreateHeap__14daObjZraMark_cFv.s"
}
#pragma pop
/* 80D42A7C-80D42B0C 00049C 0090+00 1/1 0/0 0/0 .text Execute__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::Execute() {
asm int daObjZraMark_c::Execute() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/Execute__14daObjZraMark_cFv.s"
}
#pragma pop
/* 80D42B0C-80D42C98 00052C 018C+00 1/1 0/0 0/0 .text Draw__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::Draw() {
asm int daObjZraMark_c::Draw() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/Draw__14daObjZraMark_cFv.s"
}
#pragma pop
/* 80D42C98-80D42CE0 0006B8 0048+00 1/1 0/0 0/0 .text Delete__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::Delete() {
asm int daObjZraMark_c::Delete() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/Delete__14daObjZraMark_cFv.s"
}
#pragma pop
/* 80D42CE0-80D42D2C 000700 004C+00 1/1 0/0 0/0 .text getType__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::getType() {
asm int daObjZraMark_c::getType() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/getType__14daObjZraMark_cFv.s"
}
@@ -359,6 +365,7 @@ COMPILER_STRIP_GATE(0x80D43E40, &lit_4296);
#pragma pop
/* 80D42D2C-80D42EE0 00074C 01B4+00 2/2 0/0 0/0 .text setBaseMtx__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -369,6 +376,7 @@ asm void daObjZraMark_c::setBaseMtx() {
#pragma pop
/* 80D42EE0-80D42F5C 000900 007C+00 1/1 0/0 0/0 .text col_init__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -388,6 +396,7 @@ SECTION_RODATA static f32 const lit_4401 = -1.0f;
COMPILER_STRIP_GATE(0x80D43E48, &lit_4401);
/* 80D42F5C-80D432C8 00097C 036C+00 1/1 0/0 0/0 .text col_set__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -398,10 +407,11 @@ asm void daObjZraMark_c::col_set() {
#pragma pop
/* 80D432C8-80D43314 000CE8 004C+00 1/1 0/0 0/0 .text schHoz__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::schHoz() {
asm daNpc_Hoz_c* daObjZraMark_c::schHoz() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/schHoz__14daObjZraMark_cFv.s"
}
@@ -409,16 +419,18 @@ asm void daObjZraMark_c::schHoz() {
/* 80D43314-80D43370 000D34 005C+00 0/0 0/0 1/1 .text entryPointer__14daObjZraMark_cFP10fopAc_ac_c
*/
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjZraMark_c::entryPointer(fopAc_ac_c* param_0) {
asm bool daObjZraMark_c::entryPointer(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/entryPointer__14daObjZraMark_cFP10fopAc_ac_c.s"
}
#pragma pop
/* 80D43370-80D433F4 000D90 0084+00 1/1 0/0 0/0 .text informBlast__14daObjZraMark_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -429,6 +441,7 @@ asm void daObjZraMark_c::informBlast() {
#pragma pop
/* 80D433F4-80D43414 000E14 0020+00 1/0 0/0 0/0 .text daObjZraMark_Execute__FP14daObjZraMark_c */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -439,6 +452,7 @@ static asm void daObjZraMark_Execute(daObjZraMark_c* param_0) {
#pragma pop
/* 80D43414-80D43434 000E34 0020+00 1/0 0/0 0/0 .text daObjZraMark_Draw__FP14daObjZraMark_c */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -454,6 +468,7 @@ static bool daObjZraMark_IsDelete(daObjZraMark_c* param_0) {
}
/* 80D4343C-80D4345C 000E5C 0020+00 1/0 0/0 0/0 .text daObjZraMark_Delete__FP14daObjZraMark_c */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -465,6 +480,7 @@ static asm void daObjZraMark_Delete(daObjZraMark_c* param_0) {
/* 80D4345C-80D4347C 000E7C 0020+00 1/0 0/0 0/0 .text daObjZraMark_create__FP10fopAc_ac_c
*/
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -476,10 +492,11 @@ static asm void daObjZraMark_create(fopAc_ac_c* param_0) {
/* 80D4347C-80D434F8 000E9C 007C+00 1/1 0/0 0/0 .text create__16_ZraMark_Hahen_cFRC4cXyzScScScSc
*/
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void _ZraMark_Hahen_c::create(cXyz const& param_0, s8 param_1, s8 param_2, s8 param_3,
asm int _ZraMark_Hahen_c::create(cXyz const& param_0, s8 param_1, s8 param_2, s8 param_3,
s8 param_4) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/create__16_ZraMark_Hahen_cFRC4cXyzScScScSc.s"
@@ -494,10 +511,11 @@ SECTION_RODATA static u8 const sHahenBmdType[8] = {
COMPILER_STRIP_GATE(0x80D43E4C, &sHahenBmdType);
/* 80D434F8-80D4357C 000F18 0084+00 1/1 0/0 0/0 .text loadModel__16_ZraMark_Hahen_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void _ZraMark_Hahen_c::loadModel() {
asm BOOL _ZraMark_Hahen_c::loadModel() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/loadModel__16_ZraMark_Hahen_cFv.s"
}
@@ -606,6 +624,7 @@ static u8 roottype[4];
static u8 data_80D44024[4];
/* 80D4357C-80D43808 000F9C 028C+00 1/1 0/0 0/0 .text init__16_ZraMark_Hahen_cFRC4cXyzScScSc */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -621,6 +640,7 @@ SECTION_RODATA static f32 const lit_4571 = 9.0f;
COMPILER_STRIP_GATE(0x80D43F8C, &lit_4571);
/* 80D43808-80D43864 001228 005C+00 1/1 0/0 0/0 .text calcSpeed__16_ZraMark_Hahen_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -631,6 +651,7 @@ asm void _ZraMark_Hahen_c::calcSpeed() {
#pragma pop
/* 80D43864-80D438C8 001284 0064+00 2/2 0/0 0/0 .text setMtx__16_ZraMark_Hahen_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -641,6 +662,7 @@ asm void _ZraMark_Hahen_c::setMtx() {
#pragma pop
/* 80D438C8-80D43968 0012E8 00A0+00 1/1 0/0 0/0 .text draw__16_ZraMark_Hahen_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -652,10 +674,11 @@ asm void _ZraMark_Hahen_c::draw() {
/* 80D43968-80D439F8 001388 0090+00 1/1 0/0 0/0 .text
* create__20_ZraMark_Hahen_Mng_cFRC4cXyzScScScSc */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void _ZraMark_Hahen_Mng_c::create(cXyz const& param_0, s8 param_1, s8 param_2, s8 param_3,
asm int _ZraMark_Hahen_Mng_c::create(cXyz const& param_0, s8 param_1, s8 param_2, s8 param_3,
s8 param_4) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/create__20_ZraMark_Hahen_Mng_cFRC4cXyzScScScSc.s"
@@ -663,6 +686,7 @@ asm void _ZraMark_Hahen_Mng_c::create(cXyz const& param_0, s8 param_1, s8 param_
#pragma pop
/* 80D439F8-80D43A74 001418 007C+00 1/1 0/0 0/0 .text calc__20_ZraMark_Hahen_Mng_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -673,6 +697,7 @@ asm void _ZraMark_Hahen_Mng_c::calc() {
#pragma pop
/* 80D43A74-80D43ACC 001494 0058+00 1/1 0/0 0/0 .text draw__20_ZraMark_Hahen_Mng_cFv */
// matches with literals
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -703,7 +728,8 @@ extern "C" asm void func_80D43ACC(void* _this, int param_0, int param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm _ZraMark_Hahen_c::~_ZraMark_Hahen_c() {
// asm _ZraMark_Hahen_c::~_ZraMark_Hahen_c() {
extern "C" asm void __dt__16_ZraMark_Hahen_cFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/__dt__16_ZraMark_Hahen_cFv.s"
}
@@ -713,7 +739,8 @@ asm _ZraMark_Hahen_c::~_ZraMark_Hahen_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm _ZraMark_Hahen_c::_ZraMark_Hahen_c() {
// asm _ZraMark_Hahen_c::_ZraMark_Hahen_c() {
extern "C" asm void __ct__16_ZraMark_Hahen_cFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark/__ct__16_ZraMark_Hahen_cFv.s"
}
@@ -0,0 +1,703 @@
/**
* @file d_a_obj_zraMark.cpp
*
*/
#include "rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h"
#include "SSystem/SComponent/c_lib.h"
#include "SSystem/SComponent/c_math.h"
#include "d/meter/d_meter2_info.h"
#include "dol2asm.h"
#include "rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h"
#include "rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h"
//
// Forward References:
//
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
extern "C" void Create__14daObjZraMark_cFv();
extern "C" void CreateHeap__14daObjZraMark_cFv();
extern "C" void Execute__14daObjZraMark_cFv();
extern "C" void Draw__14daObjZraMark_cFv();
extern "C" void Delete__14daObjZraMark_cFv();
extern "C" void getType__14daObjZraMark_cFv();
extern "C" void setBaseMtx__14daObjZraMark_cFv();
extern "C" void col_init__14daObjZraMark_cFv();
extern "C" void col_set__14daObjZraMark_cFv();
extern "C" void schHoz__14daObjZraMark_cFv();
extern "C" void entryPointer__14daObjZraMark_cFP10fopAc_ac_c();
extern "C" void informBlast__14daObjZraMark_cFv();
extern "C" static void daObjZraMark_Execute__FP14daObjZraMark_c();
extern "C" static void daObjZraMark_Draw__FP14daObjZraMark_c();
extern "C" static bool daObjZraMark_IsDelete__FP14daObjZraMark_c();
extern "C" static void daObjZraMark_Delete__FP14daObjZraMark_c();
extern "C" static void daObjZraMark_create__FP10fopAc_ac_c();
extern "C" void create__16_ZraMark_Hahen_cFRC4cXyzScScScSc();
extern "C" void loadModel__16_ZraMark_Hahen_cFv();
extern "C" void init__16_ZraMark_Hahen_cFRC4cXyzScScSc();
extern "C" void calcSpeed__16_ZraMark_Hahen_cFv();
extern "C" void setMtx__16_ZraMark_Hahen_cFv();
extern "C" void draw__16_ZraMark_Hahen_cFv();
extern "C" void create__20_ZraMark_Hahen_Mng_cFRC4cXyzScScScSc();
extern "C" void calc__20_ZraMark_Hahen_Mng_cFv();
extern "C" void draw__20_ZraMark_Hahen_Mng_cFv();
extern "C" void func_80D43ACC(void* _this, int, int);
extern "C" void __dt__16_ZraMark_Hahen_cFv();
extern "C" void __ct__16_ZraMark_Hahen_cFv();
extern "C" void __ct__11J3DLightObjFv();
extern "C" void __dt__18daNpcF_ActorMngr_cFv();
extern "C" void __ct__18daNpcF_ActorMngr_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" extern char const* const d_a_obj_zraMark__stringBase0;
//
// External References:
//
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void XYZrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
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 getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv();
extern "C" void getHitSeID__12dCcD_GObjInfFUci();
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
extern "C" void initialize__18daNpcF_ActorMngr_cFv();
extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dKy_tevstr_init__FP12dKy_tevstr_cScUc();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void __apl__5csXyzFR5csXyz();
extern "C" void cM_rndF__Ff();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetH__8cM3dGCylFf();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dt__14Z2SoundObjBaseFv();
extern "C" void deleteObject__14Z2SoundObjBaseFv();
extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase();
extern "C" void __ct__16Z2SoundObjSimpleFv();
extern "C" void __dl__FPv();
extern "C" void __as__12J3DLightInfoFRC12J3DLightInfo();
extern "C" void __construct_array();
extern "C" void _savegpr_22();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_22();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
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];
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
/* 80D42658-80D42678 000078 0020+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
static int createSolidHeap(fopAc_ac_c* i_this) {
return ((daObjZraMark_c*)i_this)->CreateHeap();
}
/* 80D43D88-80D43D9C 000000 0014+00 4/4 0/0 0/0 .rodata l_DATA */
static const daObjZraMark_Hio_Param_c l_DATA = {
8.0f, // mMarkSize
2.0f, // mInteriorMarkSize
1.2f, //
45.0f, // mMarkCollisionRadius
820.0f, // mMarkCollisionHeight
};
/* 80D43D9C-80D43DE0 000014 0044+00 1/1 0/0 0/0 .rodata l_sph_src */
static const dCcD_SrcCyl l_sph_src = {
{
{0x0, {{0x0, 0x0, 0x0}, {0xD8FBFDFF, 0x11}, 0x79}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x8}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{0.0f, 0.0f, 0.0f}, // mCenter
0.0f, // mRadius
0.0f, // mHeight
} // mCylAttr
};
/* 80D43DE0-80D43DF0 000058 0010+00 0/1 0/0 0/0 .rodata l_arcIdx */
static const int l_arcIdx[] = {3, 6, 5, 4};
/* 80D43FA0-80D43FA4 000000 0004+00 1/1 0/0 0/0 .data None */
/* SECTION_DATA static u8 data_80D43FA0[4] = {
0x00,
0x00,
0x00,
0x00,
}; */
/* 80D43FA4-80D43FA8 -00001 0004+00 4/4 0/0 0/0 .data l_arcName */
SECTION_DATA static char* l_arcName[1] = {"buoy"};
/* 80D42678-80D4287C 000098 0204+00 1/1 0/0 0/0 .text Create__14daObjZraMark_cFv */
int daObjZraMark_c::Create() {
fopAcM_SetupActor(this, daObjZraMark_c);
mType = getType();
int phase_state = cPhs_ERROR_e;
for (int i = 0; i < 1; i++) {
phase_state = dComIfG_resLoad(&mPhase[i], l_arcName[i]);
if (phase_state != cPhs_COMPLEATE_e) {
OS_REPORT("リソース読み込み失敗!! :: %s \n", l_arcName[i]);
return phase_state;
}
}
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x85B0)) {
return cPhs_ERROR_e;
}
setBaseMtx();
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
fopAcM_setCullSizeFar(this, 3.0f);
fopAcM_setCullSizeBox(this, -60.0f, -500.0f, -60.0f, 60.0f, 500.0f, 60.0f);
mpHoz = NULL;
initBlastFlag();
col_init();
mSound.init(&current.pos, 1);
}
return phase_state;
}
/* 80D4287C-80D42A7C 00029C 0200+00 1/1 0/0 0/0 .text CreateHeap__14daObjZraMark_cFv */
int daObjZraMark_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName[0], l_arcIdx[mType]);
JUT_ASSERT(0x176, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
s8 color;
if (mType == TYPE_BRANCH_GREEN || mType == TYPE_GREEN) {
color = 0;
} else {
color = 1;
}
s8 var_r29;
cXyz pos(current.pos);
switch (get_MarkType()) {
case 0:
var_r29 = 2;
if (!is_branch_pat()) {
pos.y += l_DATA.mMarkCollisionHeight / 2;
}
break;
case 1:
var_r29 = 1;
if (!is_branch_pat()) {
pos.y += l_DATA.mMarkCollisionHeight / 16;
}
break;
case 2:
var_r29 = 0;
if (!is_branch_pat()) {
pos.y += l_DATA.mMarkCollisionHeight / 20;
}
break;
}
s32 room_no = fopAcM_GetRoomNo(this);
if (!mHahenMngr.create(pos, room_no, color, var_r29, 0)) {
// "------------------Fragment Generation Error\n"
OS_REPORT("------------------破片生成ミス\n");
return FALSE;
}
return TRUE;
}
/* 80D42A7C-80D42B0C 00049C 0090+00 1/1 0/0 0/0 .text Execute__14daObjZraMark_cFv */
int daObjZraMark_c::Execute() {
if (is_blasted()) {
if (is_branch_pat()) {
setBaseMtx();
}
mHahenMngr.decTimer();
mHahenMngr.calc();
} else {
setBaseMtx();
col_set();
}
return 1;
}
/* 80D42B0C-80D42C98 00052C 018C+00 1/1 0/0 0/0 .text Draw__14daObjZraMark_cFv */
int daObjZraMark_c::Draw() {
if (is_blasted()) {
mHahenMngr.draw();
if (is_branch_pat()) {
_Vanish_Vase();
} else {
return 1;
}
} else {
if (is_branch_pat()) {
_Disp_Vase();
}
}
g_env_light.settingTevStruct(16, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
return 1;
}
/* 80D42C98-80D42CE0 0006B8 0048+00 1/1 0/0 0/0 .text Delete__14daObjZraMark_cFv */
int daObjZraMark_c::Delete() {
for (int i = 0; i < 1; i++) {
dComIfG_resDelete(&mPhase[i], l_arcName[i]);
}
mSound.deleteObject();
return 1;
}
/* 80D42CE0-80D42D2C 000700 004C+00 1/1 0/0 0/0 .text getType__14daObjZraMark_cFv */
int daObjZraMark_c::getType() {
u8 prm = fopAcM_GetParam(this) >> 8;
switch (prm) {
case 1:
return 1;
case 2:
return 2;
case 3:
return 3;
default:
return 0;
}
}
/* 80D42D2C-80D42EE0 00074C 01B4+00 2/2 0/0 0/0 .text setBaseMtx__14daObjZraMark_cFv */
void daObjZraMark_c::setBaseMtx() {
static const Vec l_coOffset[] = {
{8.0f, -50.0f, 0.0f},
{8.0f, 0.0f, 0.0f},
{8.0f, -50.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
};
cXyz cc_pos(l_coOffset[mType].x, l_coOffset[mType].y, l_coOffset[mType].z);
f32 size;
f32 cc_height;
switch (get_MarkType()) {
case 0:
size = l_DATA.mMarkSize;
cc_height = l_DATA.mMarkCollisionHeight;
break;
case 1:
cc_pos.y -= 20.0f;
size = l_DATA.mInteriorMarkSize;
cc_height =
l_DATA.mMarkCollisionHeight / (l_DATA.mMarkSize / l_DATA.mInteriorMarkSize) + 40.0f;
break;
case 2:
size = l_DATA.field_0x8;
cc_height = l_DATA.mMarkCollisionHeight / (l_DATA.mMarkSize / l_DATA.field_0x8);
break;
}
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::XYZrotM(shape_angle);
mDoMtx_stack_c::scaleM(size, size, size);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::multVec(&cc_pos, &cc_pos);
MTXCopy(mDoMtx_stack_c::get(), field_0x574);
mCcCyl.SetC(cc_pos);
mCcCyl.SetH(cc_height);
mCcCyl.SetR(l_DATA.mMarkCollisionRadius * size);
}
/* 80D42EE0-80D42F5C 000900 007C+00 1/1 0/0 0/0 .text col_init__14daObjZraMark_cFv */
void daObjZraMark_c::col_init() {
mCcStts.Init(0xFF, 0xFF, this);
mCcCyl.Set(l_sph_src);
mCcCyl.SetStts(&mCcStts);
if (get_MarkType() == 0) {
mCcCyl.OffCoSetBit();
}
}
/* 80D42F5C-80D432C8 00097C 036C+00 1/1 0/0 0/0 .text col_set__14daObjZraMark_cFv */
void daObjZraMark_c::col_set() {
if (mpHoz == NULL) {
mpHoz = schHoz();
}
if (mCcCyl.ChkTgHit()) {
if (checkHitAt(mCcCyl.GetTgHitObj())) {
cXyz pos(current.pos);
switch (get_MarkType()) {
case 0:
onBlastFlag();
mCcCyl.OffTgSetBit();
Z2GetAudioMgr()->seStart(Z2SE_OBJ_MG_CANOE_TSUBO_BRK, &pos, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
if (mType >= 2) {
dMeter2Info_setNowCount(dMeter2Info_getNowCount() + 2);
Z2GetAudioMgr()->seStart(Z2SE_SY_MG_CANOE_SCORE_2, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
} else {
dMeter2Info_setNowCount(dMeter2Info_getNowCount() + 1);
Z2GetAudioMgr()->seStart(Z2SE_SY_MG_CANOE_SCORE, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
}
informBlast();
break;
case 1:
if (daPy_getPlayerActorClass()->checkCanoeSlider()) {
mCcCyl.ClrTgHit();
return;
}
if (mpHoz != NULL) {
mpHoz->setPotBreakFlag();
}
case 2:
if (daPy_getPlayerActorClass()->checkCanoeSlider()) {
mCcCyl.ClrTgHit();
return;
}
onBlastFlag();
mCcCyl.OffTgSetBit();
Z2GetAudioMgr()->seStart(Z2SE_OBJ_SAMPLE_TSUBO_BRK, &pos, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
}
} else {
mSound.startCollisionSE(mCcCyl.GetTgHitObjHitSeID(1), 2, NULL);
}
mCcCyl.ClrTgHit();
}
mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
dComIfG_Ccsp()->Set(&mCcCyl);
}
/* 80D432C8-80D43314 000CE8 004C+00 1/1 0/0 0/0 .text schHoz__14daObjZraMark_cFv */
daNpc_Hoz_c* daObjZraMark_c::schHoz() {
fopAc_ac_c* hoz = NULL;
if (fopAcM_SearchByName(PROC_NPC_HOZ, &hoz) && hoz != NULL) {
return (daNpc_Hoz_c*)hoz;
}
return NULL;
}
/* 80D43314-80D43370 000D34 005C+00 0/0 0/0 1/1 .text entryPointer__14daObjZraMark_cFP10fopAc_ac_c
*/
bool daObjZraMark_c::entryPointer(fopAc_ac_c* i_actor) {
if (field_0x72c < 2) {
mActorMngr[field_0x72c].entry(i_actor);
field_0x72c++;
return true;
}
return false;
}
/* 80D43370-80D433F4 000D90 0084+00 1/1 0/0 0/0 .text informBlast__14daObjZraMark_cFv */
void daObjZraMark_c::informBlast() {
if (field_0x72c != 0) {
for (int i = 0; i < field_0x72c; i++) {
fopAc_ac_c* actorp = mActorMngr[i].getActorP();
if (actorp != NULL && fopAcM_GetName(actorp) == PROC_NPC_ZRA) {
((daNpc_zrA_c*)actorp)->setBlastFlag(1);
}
}
}
}
/* 80D433F4-80D43414 000E14 0020+00 1/0 0/0 0/0 .text daObjZraMark_Execute__FP14daObjZraMark_c */
static int daObjZraMark_Execute(daObjZraMark_c* i_this) {
return i_this->Execute();
}
/* 80D43414-80D43434 000E34 0020+00 1/0 0/0 0/0 .text daObjZraMark_Draw__FP14daObjZraMark_c */
static int daObjZraMark_Draw(daObjZraMark_c* i_this) {
return i_this->Draw();
}
/* 80D43434-80D4343C 000E54 0008+00 1/0 0/0 0/0 .text daObjZraMark_IsDelete__FP14daObjZraMark_c */
static int daObjZraMark_IsDelete(daObjZraMark_c* i_this) {
return 1;
}
/* 80D4343C-80D4345C 000E5C 0020+00 1/0 0/0 0/0 .text daObjZraMark_Delete__FP14daObjZraMark_c */
static int daObjZraMark_Delete(daObjZraMark_c* i_this) {
return i_this->Delete();
}
/* 80D4345C-80D4347C 000E7C 0020+00 1/0 0/0 0/0 .text daObjZraMark_create__FP10fopAc_ac_c
*/
static int daObjZraMark_create(fopAc_ac_c* i_this) {
return ((daObjZraMark_c*)i_this)->Create();
}
/* 80D4347C-80D434F8 000E9C 007C+00 1/1 0/0 0/0 .text create__16_ZraMark_Hahen_cFRC4cXyzScScScSc
*/
int _ZraMark_Hahen_c::create(const cXyz& i_pos, s8 i_roomNo, s8 i_color, s8 param_3, s8 i_no) {
setColor(i_color);
if (loadModel()) {
init(i_pos, i_roomNo, param_3, i_no);
setMtx();
return 1;
}
return 0;
}
/* 80D434F8-80D4357C 000F18 0084+00 1/1 0/0 0/0 .text loadModel__16_ZraMark_Hahen_cFv */
BOOL _ZraMark_Hahen_c::loadModel() {
static const int sHahenBmdType[] = {7, 8};
J3DModelData* modelData =
(J3DModelData*)dComIfG_getObjectRes(l_arcName[0], sHahenBmdType[getColor()]);
JUT_ASSERT(0x428, modelData != 0);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
// "--------------Can't load Fragment Model\n"
OS_REPORT("--------------破片モデルを読み込めません\n");
return 0;
}
return 1;
}
/* 80D4357C-80D43808 000F9C 028C+00 1/1 0/0 0/0 .text init__16_ZraMark_Hahen_cFRC4cXyzScScSc */
void _ZraMark_Hahen_c::init(cXyz const& i_pos, s8 i_roomNo, s8 param_2, s8 i_no) {
static const f32 sScale[] = {
3.0f, 2.0f, 6.0f, 4.0f, 2.0f, 6.0f, 3.0f, 1.0f, 0.5f, 0.69999999f, 0.5f, 1.2f, 1.0f, 0.8f,
};
static const f32 sRoot[4][7][2] = {
{
{78.8f, 54.9f},
{101.9f, 62.4f},
{122.2f, 18.9f},
{124.2f, 63.5f},
{83.599998f, 60.299999f},
{118.6f, 54.099998f},
{73.9f, 22.0f},
},
{
{111.5f, 42.0f},
{110.2f, 21.6f},
{127.1f, 18.6f},
{99.3f, 65.0f},
{75.8f, 39.799999f},
{106.1f, 46.9f},
{71.699997f, 34.7f},
},
{
{82.599998f, 18.1f},
{132.6f, 48.799999f},
{119.2f, 43.0f},
{56.7f, 66.099998f},
{89.0f, 57.299999f},
{91.8f, 41.0f},
{78.3f, 31.0f},
},
{
{98.4f, 23.6f},
{125.0f, 20.2f},
{62.5f, 54.7f},
{119.2f, 47.299999f},
{79.9f, 53.799999f},
{61.7f, 58.099998f},
{57.599998f, 29.1f},
},
};
static int roottype = -1;
roottype = (roottype + 1) & 3;
s8 var_r28 = i_no % 7;
int var_r26 = cLib_getRndValue(0, 0xFFFF);
int var_r25 = cLib_getRndValue(0, 0xFFFF);
int var_r24 = cLib_getRndValue(0, 0xFFFF);
mAngle.set(var_r26, var_r25, var_r24);
var_r26 = cLib_getRndValue(0x400, 0x1800);
var_r25 = cLib_getRndValue(0x400, 0x1800);
var_r24 = cLib_getRndValue(0x400, 0x1800);
field_0x3aa.set(var_r26, var_r25, var_r24);
f32 scale = sScale[i_no] + 2.0f;
f32 y_speed = sRoot[roottype][var_r28][0];
f32 xz_speed = sRoot[roottype][var_r28][1];
if (param_2 == 1) {
scale /= l_DATA.mMarkSize / l_DATA.mInteriorMarkSize;
y_speed /= 2.5f;
xz_speed /= 2.5f;
} else if (param_2 == 0) {
scale /= l_DATA.mMarkSize / l_DATA.mInteriorMarkSize;
y_speed /= 1.5f;
xz_speed /= 3.0f;
}
if (i_no >= 7) {
y_speed /= 1.5f;
xz_speed /= 2.0f;
}
field_0x3b0.setall(scale);
mSpeed.set(0.0f, y_speed, 0.0f);
field_0x3c0 = xz_speed;
field_0x3bc = i_no * 0x4800;
f32 rnd_xz = cM_rndF(35.0f) + 10.0f;
f32 rnd_y = cM_rndF(30.0f) - 15.0f;
cXyz pos;
pos.x = i_pos.x + rnd_xz * cM_ssin(field_0x3bc);
pos.y = i_pos.y + rnd_y;
pos.z = i_pos.z + rnd_xz * cM_scos(field_0x3bc);
setPos(pos);
dKy_tevstr_init(&mTevstr, i_roomNo, 0xFF);
}
/* 80D43808-80D43864 001228 005C+00 1/1 0/0 0/0 .text calcSpeed__16_ZraMark_Hahen_cFv */
void _ZraMark_Hahen_c::calcSpeed() {
cXyz speed;
speed.x = field_0x3c0 * cM_ssin(field_0x3bc);
speed.y = mSpeed.y - 9.0f;
speed.z = field_0x3c0 * cM_scos(field_0x3bc);
setSpeed(speed);
}
/* 80D43864-80D438C8 001284 0064+00 2/2 0/0 0/0 .text setMtx__16_ZraMark_Hahen_cFv */
void _ZraMark_Hahen_c::setMtx() {
mDoMtx_stack_c::transS(mPos.x, mPos.y, mPos.z);
mDoMtx_stack_c::XYZrotM(mAngle);
mDoMtx_stack_c::scaleM(field_0x3b0);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
/* 80D438C8-80D43968 0012E8 00A0+00 1/1 0/0 0/0 .text draw__16_ZraMark_Hahen_cFv */
void _ZraMark_Hahen_c::draw() {
g_env_light.settingTevStruct(16, &mPos, &mTevstr);
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevstr);
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
}
/* 80D43968-80D439F8 001388 0090+00 1/1 0/0 0/0 .text
* create__20_ZraMark_Hahen_Mng_cFRC4cXyzScScScSc */
int _ZraMark_Hahen_Mng_c::create(const cXyz& i_pos, s8 i_roomNo, s8 i_color, s8 param_3,
s8 unused) {
_ZraMark_Hahen_c* hahen = mHahen;
for (int i = 0; i < 14; i++) {
if (!hahen->create(i_pos, i_roomNo, i_color, param_3, i)) {
return 0;
}
hahen++;
}
setTimer(200);
return 1;
}
/* 80D439F8-80D43A74 001418 007C+00 1/1 0/0 0/0 .text calc__20_ZraMark_Hahen_Mng_cFv */
void _ZraMark_Hahen_Mng_c::calc() {
if (getTimer() > 0) {
_ZraMark_Hahen_c* hahen = mHahen;
for (int i = 0; i < 14; i++) {
hahen->fall();
hahen->setMtx();
hahen++;
}
}
}
/* 80D43A74-80D43ACC 001494 0058+00 1/1 0/0 0/0 .text draw__20_ZraMark_Hahen_Mng_cFv */
void _ZraMark_Hahen_Mng_c::draw() {
if (getTimer() > 0) {
_ZraMark_Hahen_c* hahen = mHahen;
for (int i = 0; i < 14; i++) {
hahen->draw();
hahen++;
}
}
}
/* 80D43FA8-80D43FC8 -00001 0020+00 1/0 0/0 0/0 .data l_daObjZraMark_Method */
static actor_method_class l_daObjZraMark_Method = {
(process_method_func)daObjZraMark_create__FP10fopAc_ac_c,
(process_method_func)daObjZraMark_Delete__FP14daObjZraMark_c,
(process_method_func)daObjZraMark_Execute__FP14daObjZraMark_c,
(process_method_func)daObjZraMark_IsDelete__FP14daObjZraMark_c,
(process_method_func)daObjZraMark_Draw__FP14daObjZraMark_c,
};
/* 80D43FC8-80D43FF8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_ZRA_MARK */
extern actor_process_profile_definition g_profile_ZRA_MARK = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_ZRA_MARK, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daObjZraMark_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
392, // mPriority
&l_daObjZraMark_Method, // sub_method
0x00044100, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};