firewood/tornado/tag_camera done, obj_drop almost (#2190)

* firewood done, obj_drop mostly done

* obj_tornado done, cleanup obj_tornado2

* tag_camera done

* remove asm

* tag_msg done
This commit is contained in:
TakaRikka
2024-08-12 11:34:01 -07:00
committed by GitHub
parent 2fa4bf9f51
commit 2bcec113fb
93 changed files with 1825 additions and 4432 deletions
+54 -15
View File
@@ -150,6 +150,7 @@ extern "C" extern u8 struct_80BE2238[4];
//
/* 80BDFCD8-80BDFD8C 000078 00B4+00 2/2 0/0 0/0 .text searchParentSub__FPvPv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -191,10 +192,11 @@ SECTION_RODATA static f32 const lit_3825 = 50.0f;
COMPILER_STRIP_GATE(0x80BE1FD8, &lit_3825);
/* 80BDFD8C-80BDFE58 00012C 00CC+00 1/1 0/0 0/0 .text Create__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::Create() {
asm int daObjDrop_c::Create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/Create__11daObjDrop_cFv.s"
}
@@ -424,16 +426,18 @@ SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
};
/* 80BDFE58-80BE005C 0001F8 0204+00 1/1 0/0 0/0 .text create__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::create() {
asm int daObjDrop_c::create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/func_80BDFE58.s"
}
#pragma pop
/* 80BE005C-80BE00A4 0003FC 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -445,6 +449,7 @@ extern "C" asm void __dt__8cM3dGSphFv() {
#pragma pop
/* 80BE00A4-80BE00EC 000444 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -456,6 +461,7 @@ extern "C" asm void __dt__8cM3dGAabFv() {
#pragma pop
/* 80BE00EC-80BE0148 00048C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -467,6 +473,7 @@ extern "C" asm void __dt__10dCcD_GSttsFv() {
#pragma pop
/* 80BE0148-80BE01B8 0004E8 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -478,6 +485,7 @@ extern "C" asm void __dt__12dBgS_ObjAcchFv() {
#pragma pop
/* 80BE01B8-80BE0228 000558 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -489,6 +497,7 @@ extern "C" asm void __dt__12dBgS_AcchCirFv() {
#pragma pop
/* 80BE0228-80BE02AC 0005C8 0084+00 1/1 0/0 0/0 .text __dt__19dPa_followEcallBackFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -507,6 +516,7 @@ extern "C" asm void cleanup__18dPa_levelEcallBackFv() {
/* 80BE02B0-80BE02D8 000650 0028+00 1/1 0/0 0/0 .text __defctor__19dPa_followEcallBackFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -518,6 +528,7 @@ extern "C" asm void __defctor__19dPa_followEcallBackFv() {
#pragma pop
/* 80BE02D8-80BE0314 000678 003C+00 1/1 0/0 0/0 .text __dt__5csXyzFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -535,6 +546,7 @@ extern "C" asm void __ct__5csXyzFv() {
}
/* 80BE0318-80BE0354 0006B8 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -552,6 +564,7 @@ extern "C" asm void __ct__4cXyzFv() {
}
/* 80BE0358-80BE0430 0006F8 00D8+00 2/2 0/0 0/0 .text dropGet__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -630,7 +643,7 @@ SECTION_DEAD static char const* const stringBase_80BE2048 = "F_SP112";
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::checkGetArea() {
asm BOOL daObjDrop_c::checkGetArea() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/checkGetArea__11daObjDrop_cFv.s"
}
@@ -638,6 +651,7 @@ asm void daObjDrop_c::checkGetArea() {
/* 80BE05DC-80BE0658 00097C 007C+00 1/1 0/0 0/0 .text checkCompleteDemo__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -654,6 +668,7 @@ COMPILER_STRIP_GATE(0x80BE2004, &lit_4119);
/* 80BE0658-80BE071C 0009F8 00C4+00 1/1 0/0 0/0 .text createLineEffect__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -665,6 +680,7 @@ asm void daObjDrop_c::createLineEffect() {
/* 80BE071C-80BE077C 000ABC 0060+00 2/2 0/0 0/0 .text removeLineEffect__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -676,6 +692,7 @@ asm void daObjDrop_c::removeLineEffect() {
/* 80BE077C-80BE0840 000B1C 00C4+00 2/2 0/0 0/0 .text createBodyEffect__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -687,6 +704,7 @@ asm void daObjDrop_c::createBodyEffect() {
/* 80BE0840-80BE08A0 000BE0 0060+00 2/2 0/0 0/0 .text removeBodyEffect__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -702,20 +720,22 @@ SECTION_RODATA static f32 const lit_4183 = 75.0f;
COMPILER_STRIP_GATE(0x80BE2008, &lit_4183);
/* 80BE08A0-80BE0994 000C40 00F4+00 2/1 0/0 0/0 .text modeInit__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::modeInit() {
asm int daObjDrop_c::modeInit() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/modeInit__11daObjDrop_cFv.s"
}
#pragma pop
/* 80BE0994-80BE09F4 000D34 0060+00 1/0 0/0 0/0 .text modeNoParent__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::modeNoParent() {
asm int daObjDrop_c::modeNoParent() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/modeNoParent__11daObjDrop_cFv.s"
}
@@ -730,10 +750,11 @@ COMPILER_STRIP_GATE(0x80BE200C, &lit_4252);
#pragma pop
/* 80BE09F4-80BE0C08 000D94 0214+00 1/0 0/0 0/0 .text modeParentWait__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::modeParentWait() {
asm int daObjDrop_c::modeParentWait() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/modeParentWait__11daObjDrop_cFv.s"
}
@@ -803,6 +824,7 @@ COMPILER_STRIP_GATE(0x80BE202C, &lit_4725);
#pragma pop
/* 80BE2030-80BE2034 0000A8 0004+00 0/1 0/0 0/0 .rodata @4726 */
// matches with literals/weaks
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4726 = 60.0f;
@@ -838,16 +860,18 @@ COMPILER_STRIP_GATE(0x80BE2040, &lit_4730);
#pragma pop
/* 80BE0C08-80BE18E0 000FA8 0CD8+00 1/0 0/0 0/0 .text modeWait__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::modeWait() {
asm int daObjDrop_c::modeWait() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/modeWait__11daObjDrop_cFv.s"
}
#pragma pop
/* 80BE18E0-80BE1928 001C80 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGLinFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -860,15 +884,16 @@ extern "C" asm void __dt__8cM3dGLinFv() {
/* 80BE1928-80BE1930 001CC8 0008+00 1/0 0/0 0/0 .text actionCompleteWait__11daObjDrop_cFv
*/
bool daObjDrop_c::actionCompleteWait() {
return true;
int daObjDrop_c::actionCompleteWait() {
return 1;
}
/* 80BE1930-80BE19D0 001CD0 00A0+00 1/0 0/0 0/0 .text actionOrderCompleteDemo__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::actionOrderCompleteDemo() {
asm int daObjDrop_c::actionOrderCompleteDemo() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/actionOrderCompleteDemo__11daObjDrop_cFv.s"
}
@@ -880,10 +905,11 @@ SECTION_RODATA static f32 const lit_4787 = 1.0f / 30.0f;
COMPILER_STRIP_GATE(0x80BE2044, &lit_4787);
/* 80BE19D0-80BE1ACC 001D70 00FC+00 1/0 0/0 0/0 .text actionCompleateDemo__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::actionCompleateDemo() {
asm int daObjDrop_c::actionCompleateDemo() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/actionCompleateDemo__11daObjDrop_cFv.s"
}
@@ -891,10 +917,11 @@ asm void daObjDrop_c::actionCompleateDemo() {
/* 80BE1ACC-80BE1B5C 001E6C 0090+00 1/0 0/0 0/0 .text actionWaitCompleteGetDemo__11daObjDrop_cFv
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::actionWaitCompleteGetDemo() {
asm int daObjDrop_c::actionWaitCompleteGetDemo() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/actionWaitCompleteGetDemo__11daObjDrop_cFv.s"
}
@@ -908,30 +935,33 @@ SECTION_DEAD static char const* const stringBase_80BE2050 = "DEFAULT_GETITEM";
#pragma pop
/* 80BE1B5C-80BE1BC4 001EFC 0068+00 1/0 0/0 0/0 .text actionCompleteGetDemo__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::actionCompleteGetDemo() {
asm int daObjDrop_c::actionCompleteGetDemo() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/actionCompleteGetDemo__11daObjDrop_cFv.s"
}
#pragma pop
/* 80BE1BC4-80BE1DCC 001F64 0208+00 1/1 0/0 0/0 .text execute__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::execute() {
asm int daObjDrop_c::execute() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/execute__11daObjDrop_cFv.s"
}
#pragma pop
/* 80BE1DCC-80BE1E0C 00216C 0040+00 1/1 0/0 0/0 .text _delete__11daObjDrop_cFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjDrop_c::_delete() {
asm int daObjDrop_c::_delete() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_drop/d_a_obj_drop/_delete__11daObjDrop_cFv.s"
}
@@ -939,6 +969,7 @@ asm void daObjDrop_c::_delete() {
/* 80BE1E0C-80BE1E2C 0021AC 0020+00 1/0 0/0 0/0 .text daObjDrop_Execute__FP11daObjDrop_c
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -950,6 +981,7 @@ static asm void daObjDrop_Execute(daObjDrop_c* param_0) {
/* 80BE1E2C-80BE1E4C 0021CC 0020+00 1/0 0/0 0/0 .text daObjDrop_Delete__FP11daObjDrop_c
*/
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -960,6 +992,7 @@ static asm void daObjDrop_Delete(daObjDrop_c* param_0) {
#pragma pop
/* 80BE1E4C-80BE1E6C 0021EC 0020+00 1/0 0/0 0/0 .text daObjDrop_Create__FP10fopAc_ac_c */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -970,6 +1003,7 @@ static asm void daObjDrop_Create(fopAc_ac_c* param_0) {
#pragma pop
/* 80BE1E6C-80BE1EE0 00220C 0074+00 1/0 0/0 0/0 .text __dt__18dPa_levelEcallBackFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1009,6 +1043,7 @@ extern "C" asm void drawAfter__18JPAEmitterCallBackFP14JPABaseEmitter() {
}
/* 80BE1EF0-80BE1F38 002290 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1020,6 +1055,7 @@ extern "C" asm void __dt__10cCcD_GSttsFv() {
#pragma pop
/* 80BE1F38-80BE1F54 0022D8 001C+00 2/2 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1030,6 +1066,7 @@ extern "C" asm void func_80BE1F38(void* _this, u8* param_0) {
#pragma pop
/* 80BE1F54-80BE1F70 0022F4 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Sc>__FPSc */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1040,6 +1077,7 @@ extern "C" asm void func_80BE1F54(void* _this, s8* param_0) {
#pragma pop
/* 80BE1F70-80BE1F78 002310 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1050,6 +1088,7 @@ static asm void func_80BE1F70() {
#pragma pop
/* 80BE1F78-80BE1F80 002318 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
// matches with literals/weaks
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -0,0 +1,649 @@
/**
* @file d_a_obj_drop.cpp
*
*/
#include "rel/d/a/obj/d_a_obj_drop/d_a_obj_drop.h"
#include "SSystem/SComponent/c_math.h"
#include "cmath.h"
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_camera.h"
#include "d/d_item.h"
#include "d/d_tresure.h"
#include "d/s/d_s_play.h"
#include "m_Do/m_Do_graphic.h"
#include "rel/d/a/e/d_a_e_ym/d_a_e_ym.h"
#include "rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h"
/* 80BDFCD8-80BDFD8C 000078 00B4+00 2/2 0/0 0/0 .text searchParentSub__FPvPv */
static void* searchParentSub(void* pproc, void* pdata) {
daObjDrop_c* pdrop = (daObjDrop_c*)pdata;
fopAc_ac_c* pym = (fopAc_ac_c*)pproc;
if (pym != NULL && fopAcM_IsActor(pym)) {
if (fopAcM_GetProfName(pym) == PROC_E_YM) {
u8 swbit = ((daE_YM_c*)pym)->getSwitchBit();
if (swbit != 0xFF && swbit == pdrop->getYmSwbit()) {
pdrop->field_0x6b7 = 1;
return pym;
}
} else if (fopAcM_GetProfName(pym) == PROC_E_YMB) {
u8 swbit = ((daE_YMB_c*)pym)->getSwitchBit();
if (swbit != 0xFF && swbit == pdrop->getYmSwbit()) {
pdrop->field_0x6b7 = 2;
return pym;
}
}
}
return NULL;
}
/* 80BE1F88-80BE1F94 000000 000C+00 4/4 0/0 0/0 .rodata l_sizuku_body_effect_list */
static const u16 l_sizuku_body_effect_list[6] = {0x838B, 0x838C, 0x838D, 0x838E, 0x838F, 0x842B};
/* 80BE1F94-80BE1F98 00000C 0004+00 0/1 0/0 0/0 .rodata l_sizuku_app_effect_list */
static const u16 l_sizuku_app_effect_list[] = {0x8388, 0x8389};
/* 80BE1F98-80BE1FD8 000010 0040+00 1/1 0/0 0/0 .rodata l_sph_src */
const static dCcD_SrcSph l_sph_src = {
{
{0x0, {{AT_TYPE_0, 0x0, 0x0}, {0x0, 0x0}, 0x79}}, // mObj
{dCcD_SE_NONE, 0x1, 0x0, dCcD_MTRL_NONE, 0x0}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_NONE, 0x6}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{{0.0f, 0.0f, 0.0f}, 30.0f} // mSph
} // mSphAttr
};
/* 80BDFD8C-80BDFE58 00012C 00CC+00 1/1 0/0 0/0 .text Create__11daObjDrop_cFv */
int daObjDrop_c::Create() {
mAcchCir.SetWall(50.0f, 50.0f);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
mCcStts.Init(0, 0xFF, this);
mCcSph.Set(l_sph_src);
mCcSph.SetStts(&mCcStts);
mTargetPos = current.pos;
mSound.init(&current.pos, 2);
return 1;
}
/* 80BE2060-80BE206C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80BE206C-80BE2080 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
0x00000000,
0x3FE00000,
0x00000000,
};
#pragma pop
/* 80BDFE58-80BE005C 0001F8 0204+00 1/1 0/0 0/0 .text create__11daObjDrop_cFv */
int daObjDrop_c::create() {
fopAcM_SetupActor(this, daObjDrop_c);
if (dComIfGs_isTbox(getSave())) {
return cPhs_ERROR_e;
}
modeInit();
if (!Create()) {
return cPhs_ERROR_e;
}
OS_REPORT("DROP PARAM %x\n", fopAcM_GetParam(this));
return cPhs_COMPLEATE_e;
}
/* 80BE0358-80BE0430 0006F8 00D8+00 2/2 0/0 0/0 .text dropGet__11daObjDrop_cFv */
void daObjDrop_c::dropGet() {
if (mSetCollectDrop) {
dComIfGs_onTbox(getSave());
u8 num = dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea());
dComIfGs_setLightDropNum(dComIfGp_getStartStageDarkArea(), num + 1);
if (dComIfGp_getStartStageDarkArea() == 2 &&
dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea()) == 15)
{
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[9]);
}
u8 need_num = dComIfGp_getNeedLightDropNum();
s8 area = dComIfGp_getStartStageDarkArea();
// "Drop of Light No%d<%d/%d> Get Area<%d>!\n"
OS_REPORT("光の雫No%d<%d/%d>ゲットArea<%d>\n", getSave(), num + 1, need_num, area);
execItemGet(HEART);
mSetCollectDrop = false;
}
}
static f32 dummy() {
f32 temp = -4.0f;
return temp;
}
/* 80BE0430-80BE05DC 0007D0 01AC+00 1/1 0/0 0/0 .text checkGetArea__11daObjDrop_cFv */
BOOL daObjDrop_c::checkGetArea() {
f32 dist_to_player = current.pos.abs(daPy_getPlayerActorClass()->current.pos);
if ((daPy_getPlayerActorClass()->checkCargoCarry() &&
strcmp(dComIfGp_getStartStageName(), "F_SP112") == 0) ||
(dist_to_player < 250.0f && dComIfGs_isLightDropGetFlag(dComIfGp_getStartStageDarkArea())))
{
return true;
}
return false;
}
/* 80BE05DC-80BE0658 00097C 007C+00 1/1 0/0 0/0 .text checkCompleteDemo__11daObjDrop_cFv
*/
void daObjDrop_c::checkCompleteDemo() {
u8 need_num = dComIfGp_getNeedLightDropNum();
u8 num = dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea());
if (need_num - 1 == num) {
field_0x6ac = fpcM_ERROR_PROCESS_ID_e;
setDemoMode(DEMOMODE_ORDER_COMPLETE_DEMO_e);
} else {
mSetCollectDrop = true;
dropGet();
}
}
/* 80BE0658-80BE071C 0009F8 00C4+00 1/1 0/0 0/0 .text createLineEffect__11daObjDrop_cFv
*/
void daObjDrop_c::createLineEffect() {
for (int i = 0; i < 3; i++) {
mpLineEffEmtrs[i] = dComIfGp_particle_set(0x838A, &mLinePos[i], NULL, &scale, 0xFF,
&mLineEffCallbacks[i], -1, NULL, NULL, NULL);
if (mpLineEffEmtrs[i] == NULL) {
// "Drop of Light: Line Effect Set Failed!!\n"
OS_REPORT_ERROR("光の雫:光線エフェクトセット失敗!!\n");
}
}
}
/* 80BE071C-80BE077C 000ABC 0060+00 2/2 0/0 0/0 .text removeLineEffect__11daObjDrop_cFv
*/
void daObjDrop_c::removeLineEffect() {
for (int i = 0; i < 3; i++) {
mLineEffCallbacks[i].remove();
}
}
/* 80BE077C-80BE0840 000B1C 00C4+00 2/2 0/0 0/0 .text createBodyEffect__11daObjDrop_cFv
*/
void daObjDrop_c::createBodyEffect() {
for (int i = 0; i < 6; i++) {
mpBodyEffEmtrs[i] =
dComIfGp_particle_set(l_sizuku_body_effect_list[i], &current.pos, NULL, &scale, 0xFF,
&mBodyEffCallbacks[i], -1, NULL, NULL, NULL);
if (mpBodyEffEmtrs[i] == NULL) {
// "Drop of Light: Effect Set Failed!!!\n"
OS_REPORT_ERROR("光の雫:エフェクトセット失敗!!!\n");
}
}
}
/* 80BE0840-80BE08A0 000BE0 0060+00 2/2 0/0 0/0 .text removeBodyEffect__11daObjDrop_cFv
*/
void daObjDrop_c::removeBodyEffect() {
for (int i = 0; i < 6; i++) {
mBodyEffCallbacks[i].remove();
}
}
/* 80BE08A0-80BE0994 000C40 00F4+00 2/1 0/0 0/0 .text modeInit__11daObjDrop_cFv */
int daObjDrop_c::modeInit() {
u8 ym_swbit = getYmSwbit();
if (ym_swbit == 0xFF || fopAcM_isSwitch(this, ym_swbit)) {
createBodyEffect();
if (ym_swbit != 0xFF) {
field_0x6b7 = 3;
}
home.pos.y = current.pos.y + 75.0f;
mModeAction = 2;
setMode(MODE_WAIT_e);
return 1;
}
mModeAction = 0;
fopAc_ac_c* pparent = (fopAc_ac_c*)fpcM_Search(searchParentSub, this);
if (pparent != NULL) {
parentActorID = fopAcM_GetID(pparent);
setMode(MODE_PARENT_WAIT_e);
return 1;
}
setMode(MODE_NO_PARENT_e);
return 1;
}
/* 80BE0994-80BE09F4 000D34 0060+00 1/0 0/0 0/0 .text modeNoParent__11daObjDrop_cFv */
int daObjDrop_c::modeNoParent() {
fopAc_ac_c* pparent = (fopAc_ac_c*)fpcM_Search(searchParentSub, this);
if (pparent != NULL) {
parentActorID = fopAcM_GetID(pparent);
setMode(MODE_PARENT_WAIT_e);
} else {
#ifdef DEBUG
if (!l_HIO.field_0x17) {
// "Drop of Light: Waiting for Shadow Insect Creation! SW=%d\n"
OS_REPORT("光の雫:闇虫生成待ち!SW=%d\n", getYmSwbit());
l_HIO.field_0x17 = true;
}
#endif
}
return 1;
}
/* 80BE09F4-80BE0C08 000D94 0214+00 1/0 0/0 0/0 .text modeParentWait__11daObjDrop_cFv */
int daObjDrop_c::modeParentWait() {
fopAc_ac_c* pparent = fopAcM_SearchByID(parentActorID);
if (pparent != NULL) {
if (fopAcM_GetProfName(pparent) == PROC_E_YM) {
current.pos = pparent->current.pos;
return 1;
}
if (fopAcM_GetProfName(pparent) == PROC_E_YMB && !mAppear) {
return 1;
}
}
if (daPy_getPlayerActorClass()->checkCargoCarry()) {
mModeAction = 50;
setMode(MODE_WAIT_e);
return 1;
}
switch (mModeAction) {
case 0:
current.angle.set(0, 0, 0);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
dComIfGp_particle_set(l_sizuku_app_effect_list[j], &current.pos, &current.angle,
&scale);
}
current.angle.y += 0x5555;
}
mModeAction = 1;
mModeTimer = 40;
current.pos.y += 300.0f;
mSound.startSound(Z2SE_OBJ_LIGHTDROP_APPEAR, 0, -1);
break;
case 1:
if (cLib_calcTimer<s8>(&mModeTimer) == 0) {
mModeAction = 2;
}
break;
case 2:
createBodyEffect();
mModeTimer = 45;
mModeAction = 0;
setMode(MODE_WAIT_e);
break;
}
return 1;
}
/* 80BE0C08-80BE18E0 000FA8 0CD8+00 1/0 0/0 0/0 .text modeWait__11daObjDrop_cFv */
int daObjDrop_c::modeWait() {
daPy_py_c* pplayer = daPy_getPlayerActorClass();
cXyz collect_pos(pplayer->current.pos);
cXyz spF0;
mDoMtx_stack_c::copy(pplayer->getWolfBackbone2Matrix());
mDoMtx_stack_c::multVecZero(&collect_pos);
switch (mModeAction) {
case 0:
if (mModeTimer > 0) {
mModeTimer--;
} else {
mTargetPos = home.pos;
speedF = 0.0f;
mModeAction = 1;
}
break;
case 1:
case 2:
case 50:
cLib_chaseF(&speedF, 7.5f, 0.4f);
if (mModeAction == 1) {
cLib_chasePos(&current.pos, mTargetPos, speedF);
}
speed.y = -cM_scos((KREG_S(3) + 1000) * mCounter) * 2.5f;
current.pos.y += speed.y;
if (mTargetPos.abs(current.pos) < 30.0f) {
mModeAction = 2;
}
if (checkGetArea()) {
for (int i = 0; i < 3; i++) {
mLinePos[i] = current.pos;
mLineMovePos[i] = cXyz::Zero;
mTargetAngle[i] = csXyz::Zero;
}
createLineEffect();
mModeAction = 3;
}
break;
case 3:
removeBodyEffect();
static const s16 target_rel_angle[] = {0xC000, 0x0000, 0x4000};
static const s16 target_angle_x[] = {0x0000, 0x2000, 0x0000};
for (int i = 0; i < 3; i++) {
mTargetAngle[i].x = target_angle_x[i];
mTargetRelAngle[i] = target_rel_angle[i];
}
mModeAction = 4;
mDrawInTimer = 60;
mSound.startSound(Z2SE_OBJ_LIGHTDROP_DRAW_IN, 0, -1);
break;
case 4:
mDrawInTimer--;
for (int i = 0; i < 3; i++) {
speedF = 60.0f;
if (daPy_getPlayerActorClass()->checkCargoCarry()) {
speedF = 250.0f;
}
f32 var_f25 = cM_scos(mTargetAngle[i].x) * speedF;
f32 var_f24 = cM_ssin(mTargetAngle[i].x) * speedF;
s16 sp150 = cM_atan2s(collect_pos.x - mLinePos[i].x, collect_pos.z - mLinePos[i].z);
sp150 += mTargetRelAngle[i];
cXyz target;
target.x = var_f25 * cM_ssin(sp150);
target.y = var_f24;
target.z = var_f25 * cM_scos(sp150);
f32 step_scale = KREG_F(10) + 0.5f;
f32 step_max = KREG_F(11) + 5.0f;
f32 step_min = KREG_F(12) + 1.0f;
cLib_addCalc(&mLineMovePos[i].x, target.x, step_scale, step_max, step_min);
cLib_addCalc(&mLineMovePos[i].y, target.y, step_scale, step_max, step_min);
cLib_addCalc(&mLineMovePos[i].z, target.z, step_scale, step_max, step_min);
cLib_addCalcAngleS(&mTargetRelAngle[i], 0, 10, 900, 200);
cXyz prev_line_pos(mLinePos[i]);
mLinePos[i].x += mLineMovePos[i].x;
mLinePos[i].y += mLineMovePos[i].y;
mLinePos[i].z += mLineMovePos[i].z;
cM3dGLin line;
cM3dGSph sph;
line.SetStartEnd(prev_line_pos, mLinePos[i]);
sph.Set(collect_pos, KREG_F(17) + 50.0f);
Vec sp114;
if (cM3d_Cross_LinSph(&line, &sph, &sp114)) {
mLinePos[i] = collect_pos;
mLineIsCross[i] = true;
}
cLib_addCalcAngleS(
&mTargetAngle[i].x,
cM_atan2s(collect_pos.y - mLinePos[i].y, mLinePos[i].absXZ(collect_pos)), 5, 1500,
500);
}
if (mLineIsCross[0] || mLineIsCross[1] || mLineIsCross[2] || mDrawInTimer == 0) {
pplayer->onWolfLightDropGet();
removeLineEffect();
mDeleteTimer = 70;
checkCompleteDemo();
mModeAction = 5;
}
break;
case 5:
if (cLib_calcTimer<u8>(&mDeleteTimer) == 0) {
mModeAction = 6;
if (chkDemoMode() == DEMOMODE_COMPLETE_WAIT_e) {
fopAcM_delete(this);
}
}
break;
case 6:
break;
}
if (mModeAction == 0 || mModeAction == 1 || mModeAction == 2 || mModeAction == 3) {
mSound.startLevelSound(Z2SE_OBJ_LIGHTDROP_FLOAT, 0, -1);
}
if (mModeAction == 2) {
if (mTargetPos.absXZ(current.pos) < (KREG_F(4) + 500.0f) && pplayer->getSpeedF() != 0.0f) {
mCcSph.SetC(current.pos);
dComIfG_Ccsp()->Set(&mCcSph);
}
cXyz* cc_movep = mCcStts.GetCCMoveP();
if (cc_movep != NULL) {
cXyz move_vec;
cXyz sp12C;
if (!cc_movep->isZero()) {
current.angle.y = cM_atan2s(cc_movep->x, cc_movep->z);
speedF = 5.0f;
sp12C = cXyz::Zero;
} else {
f32 var_f26 = KREG_F(2) + 1.0f;
if (current.pos.absXZ(mTargetPos) < 10.0f) {
var_f26 = 0.0f;
speedF = 0.0f;
}
s16 sp154 = cM_atan2s(mTargetPos.x - current.pos.x, mTargetPos.z - current.pos.z);
sp12C.set(cM_ssin(sp154) * var_f26, 0.0f, cM_scos(sp154) * var_f26);
}
move_vec.set(cM_ssin(current.angle.y) * speedF, 0.0f,
cM_scos(current.angle.y) * speedF);
move_vec += sp12C;
speedF = std::sqrt(move_vec.x * move_vec.x + move_vec.z * move_vec.z);
if (speedF > 5.0f) {
speedF = 5.0f;
}
current.pos.x += move_vec.x;
current.pos.z += move_vec.z;
*cc_movep = cXyz::Zero;
}
}
return 1;
}
/* 80BE1928-80BE1930 001CC8 0008+00 1/0 0/0 0/0 .text actionCompleteWait__11daObjDrop_cFv
*/
int daObjDrop_c::actionCompleteWait() {
return 1;
}
/* 80BE1930-80BE19D0 001CD0 00A0+00 1/0 0/0 0/0 .text actionOrderCompleteDemo__11daObjDrop_cFv */
int daObjDrop_c::actionOrderCompleteDemo() {
camera_class* pcamera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
if (eventInfo.i_checkCommandDemoAccrpt()) {
pcamera->mCamera.SetTrimTypeForce(1);
setDemoMode(DEMOMODE_COMPLETE_DEMO_e);
mFadeoutTimer = KREG_S(8) + 135;
mSetCollectDrop = true;
dropGet();
} else {
fopAcM_orderPotentialEvent(this, 2, 0, 0);
eventInfo.i_onCondition(dEvtCnd_CANDEMO_e);
}
return 1;
}
/* 80BE19D0-80BE1ACC 001D70 00FC+00 1/0 0/0 0/0 .text actionCompleateDemo__11daObjDrop_cFv */
int daObjDrop_c::actionCompleateDemo() {
camera_class* pcamera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
pcamera->mCamera.SetTrimTypeForce(1);
if (eventInfo.i_checkCommandDemoAccrpt()) {
int timer = cLib_calcTimer<u8>(&mFadeoutTimer);
if (timer == 0) {
u8 need_num = dComIfGp_getNeedLightDropNum();
u8 num = dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea());
if (need_num == num) {
fopAcM_OnStatus(this, 0x4000);
dComIfGs_onSaveSwitch(13);
}
} else if (timer == 1) {
dComIfGs_onSaveSwitch(13);
}
}
if (mFadeoutTimer == KREG_S(9) + 30) {
mDoGph_gInf_c::fadeOut_f(1.0f / 30.0f, g_saftyWhiteColor);
}
return 1;
}
/* 80BE1ACC-80BE1B5C 001E6C 0090+00 1/0 0/0 0/0 .text actionWaitCompleteGetDemo__11daObjDrop_cFv
*/
int daObjDrop_c::actionWaitCompleteGetDemo() {
if (eventInfo.checkCommandItem()) {
setDemoMode(DEMOMODE_COMPLETE_GET_DEMO_e);
if (mPtI_Id != fpcM_ERROR_PROCESS_ID_e) {
dComIfGp_event_setItemPartnerId(mPtI_Id);
}
dComIfGs_onSaveSwitch(13);
} else {
fopAcM_orderItemEvent(this, 0, 0);
eventInfo.i_onCondition(dEvtCnd_CANGETITEM_e);
}
return 1;
}
/* 80BE1B5C-80BE1BC4 001EFC 0068+00 1/0 0/0 0/0 .text actionCompleteGetDemo__11daObjDrop_cFv */
int daObjDrop_c::actionCompleteGetDemo() {
if (dComIfGp_evmng_endCheck("DEFAULT_GETITEM")) {
dComIfGp_event_reset();
fopAcM_delete(this);
}
return 1;
}
/* 80BE1BC4-80BE1DCC 001F64 0208+00 1/1 0/0 0/0 .text execute__11daObjDrop_cFv */
int daObjDrop_c::execute() {
typedef int (daObjDrop_c::*exeFunc)();
static exeFunc l_exeFunc[] = {
&daObjDrop_c::modeInit,
&daObjDrop_c::modeParentWait,
&daObjDrop_c::modeNoParent,
&daObjDrop_c::modeWait,
};
static exeFunc l_completeDemoFunc[] = {
&daObjDrop_c::actionCompleteWait, &daObjDrop_c::actionOrderCompleteDemo,
&daObjDrop_c::actionCompleateDemo, &daObjDrop_c::actionWaitCompleteGetDemo,
&daObjDrop_c::actionCompleteGetDemo,
};
attention_info.position = current.pos;
eyePos = current.pos;
mCounter++;
(this->*l_exeFunc[mMode])();
(this->*l_completeDemoFunc[mDemoMode])();
mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
dTres_c::setLightDropPostion(getSave(), &current.pos);
return 1;
}
/* 80BE1DCC-80BE1E0C 00216C 0040+00 1/1 0/0 0/0 .text _delete__11daObjDrop_cFv */
int daObjDrop_c::_delete() {
removeLineEffect();
removeBodyEffect();
mSound.deleteObject();
return 1;
}
/* 80BE1E0C-80BE1E2C 0021AC 0020+00 1/0 0/0 0/0 .text daObjDrop_Execute__FP11daObjDrop_c
*/
static int daObjDrop_Execute(daObjDrop_c* i_this) {
return i_this->execute();
}
/* 80BE1E2C-80BE1E4C 0021CC 0020+00 1/0 0/0 0/0 .text daObjDrop_Delete__FP11daObjDrop_c
*/
static int daObjDrop_Delete(daObjDrop_c* i_this) {
return i_this->_delete();
}
/* 80BE1E4C-80BE1E6C 0021EC 0020+00 1/0 0/0 0/0 .text daObjDrop_Create__FP10fopAc_ac_c */
static int daObjDrop_Create(fopAc_ac_c* i_this) {
return ((daObjDrop_c*)i_this)->create();
}
/* 80BE2158-80BE2178 -00001 0020+00 1/0 0/0 0/0 .data l_daObjDrop_Method */
static actor_method_class l_daObjDrop_Method = {
(process_method_func)daObjDrop_Create,
(process_method_func)daObjDrop_Delete,
(process_method_func)daObjDrop_Execute,
(process_method_func)NULL,
(process_method_func)NULL,
};
/* 80BE2178-80BE21A8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Drop */
extern actor_process_profile_definition g_profile_Obj_Drop = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Drop, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daObjDrop_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
243, // mPriority
&l_daObjDrop_Method, // sub_method
0x00040000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
+186 -345
View File
@@ -4,110 +4,206 @@
*/
#include "rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood.h"
#include "dol2asm.h"
#include "d/s/d_s_play.h"
//
// Forward References:
//
/* 80BE762C-80BE7668 0000EC 003C+00 1/1 0/0 0/0 .text __ct__16daFireWood_HIO_cFv */
daFireWood_HIO_c::daFireWood_HIO_c() {
mFlameOffsetY = 0.0f;
mCollisionRadius = 60.0f;
mWaitTime = 20;
}
extern "C" void __ct__16daFireWood_HIO_cFv();
extern "C" void __dt__14mDoHIO_entry_cFv();
extern "C" void setBaseMtx__12daFireWood_cFv();
extern "C" void create__12daFireWood_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void lightInit__12daFireWood_cFv();
extern "C" void setLight__12daFireWood_cFv();
extern "C" void Execute__12daFireWood_cFv();
extern "C" bool Draw__12daFireWood_cFv();
extern "C" void Delete__12daFireWood_cFv();
extern "C" static void daFireWood_Draw__FP12daFireWood_c();
extern "C" static void daFireWood_Execute__FP12daFireWood_c();
extern "C" static void daFireWood_Delete__FP12daFireWood_c();
extern "C" static void daFireWood_Create__FP10fopAc_ac_c();
extern "C" void __dt__16daFireWood_HIO_cFv();
extern "C" void __sinit_d_a_obj_fireWood_cpp();
extern "C" u8 const mCcDObjInfo__12daFireWood_c[48];
extern "C" u8 mCcDCyl__12daFireWood_c[68];
/* 80BE76B0-80BE7708 000170 0058+00 1/1 0/0 0/0 .text setBaseMtx__12daFireWood_cFv */
void daFireWood_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);
}
//
// 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 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 Set__4cCcSFP8cCcD_Obj();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetH__8cM3dGCylFf();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
extern "C" void _savegpr_29();
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" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 80BE8004-80BE8008 000000 0004+00 3/3 0/0 0/0 .rodata @3625 */
SECTION_RODATA static u8 const lit_3625[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80BE8004, &lit_3625);
/* 80BE8008-80BE800C 000004 0004+00 1/2 0/0 0/0 .rodata @3626 */
SECTION_RODATA static f32 const lit_3626 = 60.0f;
COMPILER_STRIP_GATE(0x80BE8008, &lit_3626);
/* 80BE8144-80BE8154 000014 0010+00 3/3 0/0 0/0 .bss l_HIO */
static daFireWood_HIO_c l_HIO;
/* 80BE8050-80BE8094 000000 0044+00 2/2 0/0 0/0 .data mCcDCyl__12daFireWood_c */
SECTION_DATA u8 daFireWood_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 daFireWood_c::mCcDCyl = {
daFireWood_c::mCcDObjInfo,
{
{0.0f, 0.0f, 0.0f}, // mCenter
0.0f, // mRadius
0.0f // mHeight
} // mCyl
};
/* 80BE800C-80BE803C 000008 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__12daFireWood_c */
const dCcD_SrcGObjInf daFireWood_c::mCcDObjInfo = {
{0, {{AT_TYPE_LANTERN_SWING, 0, 0x13}, {0xD8FBFFFF, 0x1F}, {0x0}}},
{dCcD_SE_SWORD, 0, 0, dCcD_MTRL_NONE, 0},
{dCcD_SE_STONE, 0, 0, dCcD_MTRL_NONE, 0},
{0},
};
/* 80BE8094-80BE80AC 000044 0018+00 1/1 0/0 0/0 .data l_cull_box */
static Vec l_cull_box[2] = {
static cull_box l_cull_box = {
{-50.0f, 0.0f, -50.0f},
{50.0f, 100.0f, 50.0f},
};
/* 80BE7708-80BE7910 0001C8 0208+00 1/1 0/0 0/0 .text create__12daFireWood_cFv */
int daFireWood_c::create() {
fopAcM_SetupActor(this, daFireWood_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;
}
lightInit();
mIsLit = false;
mIsSwitch = fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF);
if (mIsSwitch) {
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
setLight();
}
mFlameType = fopAcM_GetParam(this) >> 8;
mSwWaitTime = 0;
return cPhs_COMPLEATE_e;
}
/* 80BE79A0-80BE7A14 000460 0074+00 1/1 0/0 0/0 .text lightInit__12daFireWood_cFv */
void daFireWood_c::lightInit() {
mLightPos = mFlamePos;
mLightPos.y += 10.0f;
mLightInfluence.mPosition = mLightPos;
mLightInfluence.mColor.r = 0xBC;
mLightInfluence.mColor.g = 0x66;
mLightInfluence.mColor.b = 0x42;
mLightInfluence.mPow = 500.0f;
mLightInfluence.mFluctuation = 1.0f;
}
/* 80BE7A14-80BE7A38 0004D4 0024+00 2/2 0/0 0/0 .text setLight__12daFireWood_cFv */
void daFireWood_c::setLight() {
dKy_plight_set(&mLightInfluence);
}
/* 80BE7A38-80BE7E74 0004F8 043C+00 1/1 0/0 0/0 .text Execute__12daFireWood_cFv */
int daFireWood_c::Execute() {
mIsSwitch = fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xFF);
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)));
}
if (mCcCyl.ChkTgHit()) {
dCcD_GObjInf* gobj = mCcCyl.GetTgHitGObj();
if (gobj->GetAtType() == AT_TYPE_LANTERN_SWING && gobj->GetAtMtrl() == dCcD_MTRL_FIRE &&
!mIsLit)
{
mSwWaitTime = l_HIO.mWaitTime;
mIsLit = true;
mCcCyl.SetAtMtrl(dCcD_MTRL_FIRE);
mDoAud_seStart(Z2SE_OBJ_FIRE_IGNITION, &mFlamePos, 0,
dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
setLight();
}
}
mCcCyl.SetR(l_HIO.mCollisionRadius);
mCcCyl.SetH(oREG_F(11) + 100.0f);
mCcCyl.SetC(current.pos);
dComIfG_Ccsp()->Set(&mCcCyl);
if (mSwWaitTime != 0) {
mSwWaitTime--;
if (mSwWaitTime == 0) {
fopAcM_onSwitch(this, fopAcM_GetParam(this) & 0xFF);
}
}
return 1;
}
/* 80BE7E74-80BE7E7C 000934 0008+00 1/1 0/0 0/0 .text Draw__12daFireWood_cFv */
int daFireWood_c::Draw() {
return 1;
}
/* 80BE7E7C-80BE7EA4 00093C 0028+00 1/1 0/0 0/0 .text Delete__12daFireWood_cFv */
int daFireWood_c::Delete() {
dKy_plight_cut(&mLightInfluence);
return 1;
}
/* 80BE7EA4-80BE7EC4 000964 0020+00 1/0 0/0 0/0 .text daFireWood_Draw__FP12daFireWood_c
*/
static int daFireWood_Draw(daFireWood_c* i_this) {
return i_this->Draw();
}
/* 80BE7EC4-80BE7EE4 000984 0020+00 1/0 0/0 0/0 .text daFireWood_Execute__FP12daFireWood_c */
static int daFireWood_Execute(daFireWood_c* i_this) {
return i_this->Execute();
}
/* 80BE7EE4-80BE7F04 0009A4 0020+00 1/0 0/0 0/0 .text daFireWood_Delete__FP12daFireWood_c
*/
static int daFireWood_Delete(daFireWood_c* i_this) {
return i_this->Delete();
}
/* 80BE7F04-80BE7F24 0009C4 0020+00 1/0 0/0 0/0 .text daFireWood_Create__FP10fopAc_ac_c
*/
static int daFireWood_Create(fopAc_ac_c* i_this) {
return ((daFireWood_c*)i_this)->create();
}
/* 80BE80AC-80BE80CC -00001 0020+00 1/0 0/0 0/0 .data l_daFireWood_Method */
static actor_method_class l_daFireWood_Method = {
(process_method_func)daFireWood_Create__FP10fopAc_ac_c,
(process_method_func)daFireWood_Delete__FP12daFireWood_c,
(process_method_func)daFireWood_Execute__FP12daFireWood_c,
0,
(process_method_func)daFireWood_Draw__FP12daFireWood_c,
(process_method_func)daFireWood_Create, (process_method_func)daFireWood_Delete,
(process_method_func)daFireWood_Execute, (process_method_func)NULL,
(process_method_func)daFireWood_Draw,
};
/* 80BE80CC-80BE80FC -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_FireWood */
@@ -127,258 +223,3 @@ extern actor_process_profile_definition g_profile_Obj_FireWood = {
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80BE80FC-80BE8108 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,
};
/* 80BE8108-80BE8114 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,
};
/* 80BE8114-80BE8120 0000C4 000C+00 2/2 0/0 0/0 .data __vt__16daFireWood_HIO_c */
SECTION_DATA extern void* __vt__16daFireWood_HIO_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__16daFireWood_HIO_cFv,
};
/* 80BE8120-80BE812C 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,
};
/* 80BE762C-80BE7668 0000EC 003C+00 1/1 0/0 0/0 .text __ct__16daFireWood_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daFireWood_HIO_c::daFireWood_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/__ct__16daFireWood_HIO_cFv.s"
}
#pragma pop
/* 80BE7668-80BE76B0 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_fireWood/d_a_obj_fireWood/__dt__14mDoHIO_entry_cFv.s"
}
#pragma pop
/* 80BE76B0-80BE7708 000170 0058+00 1/1 0/0 0/0 .text setBaseMtx__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::setBaseMtx() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/setBaseMtx__12daFireWood_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80BE8138-80BE8144 000008 000C+00 1/1 0/0 0/0 .bss @3619 */
static u8 lit_3619[12];
/* 80BE8144-80BE8154 000014 0010+00 3/3 0/0 0/0 .bss l_HIO */
static u8 l_HIO[16];
/* 80BE7708-80BE7910 0001C8 0208+00 1/1 0/0 0/0 .text create__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/create__12daFireWood_cFv.s"
}
#pragma pop
/* 80BE7910-80BE7958 0003D0 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_fireWood/d_a_obj_fireWood/__dt__8cM3dGCylFv.s"
}
#pragma pop
/* 80BE7958-80BE79A0 000418 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_fireWood/d_a_obj_fireWood/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80BE800C-80BE803C 000008 0030+00 1/1 0/0 0/0 .rodata mCcDObjInfo__12daFireWood_c */
SECTION_RODATA u8 const daFireWood_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, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80BE800C, &daFireWood_c::mCcDObjInfo);
/* 80BE803C-80BE8040 000038 0004+00 0/1 0/0 0/0 .rodata @3806 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3806 = 10.0f;
COMPILER_STRIP_GATE(0x80BE803C, &lit_3806);
#pragma pop
/* 80BE8040-80BE8044 00003C 0004+00 0/1 0/0 0/0 .rodata @3807 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3807 = 500.0f;
COMPILER_STRIP_GATE(0x80BE8040, &lit_3807);
#pragma pop
/* 80BE8044-80BE8048 000040 0004+00 0/2 0/0 0/0 .rodata @3808 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3808 = 1.0f;
COMPILER_STRIP_GATE(0x80BE8044, &lit_3808);
#pragma pop
/* 80BE79A0-80BE7A14 000460 0074+00 1/1 0/0 0/0 .text lightInit__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::lightInit() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/lightInit__12daFireWood_cFv.s"
}
#pragma pop
/* 80BE7A14-80BE7A38 0004D4 0024+00 2/2 0/0 0/0 .text setLight__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::setLight() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/setLight__12daFireWood_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80BE8048-80BE804C 000044 0004+00 0/1 0/0 0/0 .rodata @3919 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3919 = -1.0f;
COMPILER_STRIP_GATE(0x80BE8048, &lit_3919);
#pragma pop
/* 80BE804C-80BE8050 000048 0004+00 0/2 0/0 0/0 .rodata @3920 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3920 = 100.0f;
COMPILER_STRIP_GATE(0x80BE804C, &lit_3920);
#pragma pop
/* 80BE7A38-80BE7E74 0004F8 043C+00 1/1 0/0 0/0 .text Execute__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::Execute() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/Execute__12daFireWood_cFv.s"
}
#pragma pop
/* 80BE7E74-80BE7E7C 000934 0008+00 1/1 0/0 0/0 .text Draw__12daFireWood_cFv */
bool daFireWood_c::Draw() {
return true;
}
/* 80BE7E7C-80BE7EA4 00093C 0028+00 1/1 0/0 0/0 .text Delete__12daFireWood_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daFireWood_c::Delete() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/Delete__12daFireWood_cFv.s"
}
#pragma pop
/* 80BE7EA4-80BE7EC4 000964 0020+00 1/0 0/0 0/0 .text daFireWood_Draw__FP12daFireWood_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood_Draw(daFireWood_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/daFireWood_Draw__FP12daFireWood_c.s"
}
#pragma pop
/* 80BE7EC4-80BE7EE4 000984 0020+00 1/0 0/0 0/0 .text daFireWood_Execute__FP12daFireWood_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood_Execute(daFireWood_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/daFireWood_Execute__FP12daFireWood_c.s"
}
#pragma pop
/* 80BE7EE4-80BE7F04 0009A4 0020+00 1/0 0/0 0/0 .text daFireWood_Delete__FP12daFireWood_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood_Delete(daFireWood_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/daFireWood_Delete__FP12daFireWood_c.s"
}
#pragma pop
/* 80BE7F04-80BE7F24 0009C4 0020+00 1/0 0/0 0/0 .text daFireWood_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daFireWood_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/daFireWood_Create__FP10fopAc_ac_c.s"
}
#pragma pop
/* 80BE7F24-80BE7F80 0009E4 005C+00 2/1 0/0 0/0 .text __dt__16daFireWood_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daFireWood_HIO_c::~daFireWood_HIO_c() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/__dt__16daFireWood_HIO_cFv.s"
}
#pragma pop
/* 80BE7F80-80BE7FF0 000A40 0070+00 0/0 1/0 0/0 .text __sinit_d_a_obj_fireWood_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_a_obj_fireWood_cpp(){nofralloc
#include "asm/rel/d/a/obj/d_a_obj_fireWood/d_a_obj_fireWood/__sinit_d_a_obj_fireWood_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80BE7F80, __sinit_d_a_obj_fireWood_cpp);
#pragma pop
+118 -396
View File
@@ -1,109 +1,14 @@
/**
* d_a_obj_tornado.cpp
*
* Wind Column
*/
#include "rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado.h"
#include "dol2asm.h"
#include "d/kankyo/d_kankyo_rain.h"
//
// Forward References:
//
extern "C" void setPntWind__11daObjTrnd_cFv();
extern "C" void cutPntWind__11daObjTrnd_cFv();
extern "C" void movePntWind__11daObjTrnd_cFv();
extern "C" void setCpsInfo__11daObjTrnd_cFv();
extern "C" void initBaseMtx__11daObjTrnd_cFv();
extern "C" void setBaseMtx__11daObjTrnd_cFv();
extern "C" void Create__11daObjTrnd_cFv();
extern "C" void create__11daObjTrnd_cFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void execute__11daObjTrnd_cFv();
extern "C" bool draw__11daObjTrnd_cFv();
extern "C" void _delete__11daObjTrnd_cFv();
extern "C" static void daObjTrnd_Draw__FP11daObjTrnd_c();
extern "C" static void daObjTrnd_Execute__FP11daObjTrnd_c();
extern "C" static void daObjTrnd_Delete__FP11daObjTrnd_c();
extern "C" static void daObjTrnd_Create__FP11daObjTrnd_c();
extern "C" extern char const* const d_a_obj_tornado__stringBase0;
//
// External References:
//
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void dKyw_pntwind_set__FP14WIND_INFLUENCE();
extern "C" void dKyw_pntwind_cut__FP14WIND_INFLUENCE();
extern "C" void dKyw_custom_windpower__Ff();
extern "C" void dKyw_evt_wind_set__Fss();
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void normalize__4cXyzFv();
extern "C" void isZero__4cXyzCFv();
extern "C" void __ct__8cM3dGCpsFv();
extern "C" void Set__8cM3dGCpsFRC9cM3dGCpsS();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void cLib_chaseF__FPfff();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __dl__FPv();
extern "C" void __cvt_fp2unsigned();
extern "C" extern void* __vt__8dCcD_Cps[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_CpsAttr[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" f32 Zero__4cXyz[3];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
// Declarations:
//
/* ############################################################################################## */
/* 80D1C354-80D1C358 000000 0004+00 5/5 0/0 0/0 .rodata @3628 */
SECTION_RODATA static u8 const lit_3628[4] = {
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80D1C354, &lit_3628);
/* 80D1C358-80D1C35C 000004 0004+00 0/2 0/0 0/0 .rodata @3629 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3629 = 1.0f;
COMPILER_STRIP_GATE(0x80D1C358, &lit_3629);
#pragma pop
/* 80D1C35C-80D1C360 000008 0004+00 0/2 0/0 0/0 .rodata @3630 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3630 = 300.0f;
COMPILER_STRIP_GATE(0x80D1C35C, &lit_3630);
#pragma pop
/* 80D1C360-80D1C364 00000C 0004+00 0/2 0/0 0/0 .rodata @3631 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3631 = 1.0f / 5.0f;
COMPILER_STRIP_GATE(0x80D1C360, &lit_3631);
#pragma pop
#include "d/s/d_s_play.h"
#include "dol2asm.h"
/* 80D1B998-80D1BA0C 000078 0074+00 2/2 0/0 0/0 .text setPntWind__11daObjTrnd_cFv */
// Matches with literals
#ifdef NONMATCHING
void daObjTrnd_c::setPntWind() {
mWindInfluence.position = current.pos;
mWindInfluence.mDirection.x = 0.0f;
@@ -114,187 +19,73 @@ void daObjTrnd_c::setPntWind() {
mWindInfluence.mStrength = 0.2f;
dKyw_pntwind_set(&mWindInfluence);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjTrnd_c::setPntWind() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/setPntWind__11daObjTrnd_cFv.s"
}
#pragma pop
#endif
/* 80D1BA0C-80D1BA30 0000EC 0024+00 2/2 0/0 0/0 .text cutPntWind__11daObjTrnd_cFv */
void daObjTrnd_c::cutPntWind() {
dKyw_pntwind_cut(&mWindInfluence);
}
/* ############################################################################################## */
/* 80D1C364-80D1C368 000010 0004+00 0/1 0/0 0/0 .rodata @3679 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3679 = 2.0f;
COMPILER_STRIP_GATE(0x80D1C364, &lit_3679);
#pragma pop
/* 80D1C368-80D1C36C 000014 0004+00 0/2 0/0 0/0 .rodata @3680 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3680 = 1.0f / 10.0f;
COMPILER_STRIP_GATE(0x80D1C368, &lit_3680);
#pragma pop
/* 80D1C36C-80D1C374 000018 0004+04 0/2 0/0 0/0 .rodata @3681 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3681[1 + 1 /* padding */] = {
0.5f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x80D1C36C, &lit_3681);
#pragma pop
/* 80D1C374-80D1C37C 000020 0008+00 0/1 0/0 0/0 .rodata @3682 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3682[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D1C374, &lit_3682);
#pragma pop
/* 80D1C37C-80D1C384 000028 0008+00 0/1 0/0 0/0 .rodata @3683 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3683[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D1C37C, &lit_3683);
#pragma pop
/* 80D1C384-80D1C38C 000030 0008+00 0/1 0/0 0/0 .rodata @3684 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3684[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80D1C384, &lit_3684);
#pragma pop
/* 80D1BA30-80D1BC40 000110 0210+00 1/1 0/0 0/0 .text movePntWind__11daObjTrnd_cFv */
// Matches with literals
#ifdef NONMATCHING
void daObjTrnd_c::movePntWind() {
cXyz local_20;
cXyz local_2c;
cXyz cStack_38;
local_20.x = field_0x6e8.mStart.x;
local_20.y = field_0x6e8.mStart.y;
local_20.z = field_0x6e8.mStart.z;
local_2c.x = field_0x6e8.mEnd.x;
local_2c.y = field_0x6e8.mEnd.y;
local_2c.z = field_0x6e8.mEnd.z;
dKyr_get_vectle_calc(&local_20, &local_2c, &cStack_38);
mWindInfluence.mDirection = cStack_38;
mWindInfluence.mRadius = field_0x6e8.mRadius * 2.0f;
cXyz start;
cXyz end;
cXyz direction;
start.x = mWindCps.mStart.x;
start.y = mWindCps.mStart.y;
start.z = mWindCps.mStart.z;
end.x = mWindCps.mEnd.x;
end.y = mWindCps.mEnd.y;
end.z = mWindCps.mEnd.z;
dKyr_get_vectle_calc(&start, &end, &direction);
mWindInfluence.mDirection = direction;
mWindInfluence.mRadius = mWindCps.mRadius * 2.0f;
mWindInfluence.field_0x20 = 0.0f;
cLib_addCalc(&mWindInfluence.position.x, field_0x6e8.mEnd.x, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.x, mWindCps.mEnd.x, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
cLib_addCalc(&mWindInfluence.position.y, field_0x6e8.mEnd.y, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.y, mWindCps.mEnd.y, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
cLib_addCalc(&mWindInfluence.position.z, field_0x6e8.mEnd.z, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.z, mWindCps.mEnd.z, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
if (mWindInfluence.position.abs(field_0x6e8.mEnd) < mWindInfluence.mRadius) {
mWindInfluence.position = field_0x6e8.mStart;
if (mWindInfluence.position.abs(mWindCps.mEnd) < mWindInfluence.mRadius) {
mWindInfluence.position = mWindCps.mStart;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjTrnd_c::movePntWind() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/movePntWind__11daObjTrnd_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80D1C38C-80D1C390 000038 0004+00 0/1 0/0 0/0 .rodata @3724 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3724 = 1.0f / 20.0f;
COMPILER_STRIP_GATE(0x80D1C38C, &lit_3724);
#pragma pop
/* 80D1C390-80D1C394 00003C 0004+00 0/3 0/0 0/0 .rodata @3725 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3725 = 3000.0f;
COMPILER_STRIP_GATE(0x80D1C390, &lit_3725);
#pragma pop
/* 80D1C394-80D1C398 000040 0004+00 0/1 0/0 0/0 .rodata @3726 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3726 = 30.0f;
COMPILER_STRIP_GATE(0x80D1C394, &lit_3726);
#pragma pop
/* 80D1C398-80D1C39C 000044 0004+00 0/1 0/0 0/0 .rodata @3727 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3727 = 127.0f;
COMPILER_STRIP_GATE(0x80D1C398, &lit_3727);
#pragma pop
/* 80D1C39C-80D1C3A0 000048 0004+00 0/1 0/0 0/0 .rodata @3728 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3728 = -1.0f;
COMPILER_STRIP_GATE(0x80D1C39C, &lit_3728);
#pragma pop
/* 80D1BC40-80D1BE04 000320 01C4+00 1/1 0/0 0/0 .text setCpsInfo__11daObjTrnd_cFv */
// Matches with literals
#ifdef NONMATCHING
void daObjTrnd_c::setCpsInfo() {
cLib_chaseF(&field_0x704, field_0x73c, scale.y * 3000.0f * 0.05f);
field_0x6e8.mEnd.x = 0;
field_0x6e8.mEnd.y = field_0x704;
field_0x6e8.mEnd.z = 0;
mDoMtx_stack_c::transS(field_0x6e8.mStart);
cLib_chaseF(&mNowLength, mTargetLength, scale.y * 3000.0f * 0.05f);
mWindCps.mEnd.x = 0;
mWindCps.mEnd.y = mNowLength;
mWindCps.mEnd.z = 0;
mDoMtx_stack_c::transS(mWindCps.mStart);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::multVec(&field_0x6e8.mEnd, &field_0x6e8.mEnd);
mCps.cM3dGCps::Set(field_0x6e8);
cXyz local_20;
local_20.x = field_0x6e8.mEnd.x - field_0x6e8.mStart.x;
local_20.y = field_0x6e8.mEnd.y - field_0x6e8.mStart.y;
local_20.z = field_0x6e8.mEnd.z - field_0x6e8.mStart.z;
if (!local_20.isZero()) {
local_20.normalize();
mDoMtx_stack_c::multVec(&mWindCps.mEnd, &mWindCps.mEnd);
mCps.cM3dGCps::Set(mWindCps);
cXyz push_vec;
push_vec.x = mWindCps.mEnd.x - mWindCps.mStart.x;
push_vec.y = mWindCps.mEnd.y - mWindCps.mStart.y;
push_vec.z = mWindCps.mEnd.z - mWindCps.mStart.z;
if (!push_vec.isZero()) {
push_vec.normalize();
} else {
local_20 = cXyz::Zero;
push_vec = cXyz::Zero;
}
local_20 *= scale.z * 30.0f;
mCps.SetAtVec(local_20);
push_vec *= scale.z * 30.0f;
mCps.SetAtVec(push_vec);
movePntWind();
if (!checkSE()) {
mDoAud_seStartLevel(Z2SE_ENV_WIND_SARUDAN, 0, (field_0x704 / (scale.y * 3000.0f)) * 127.0f, 0);
mDoAud_seStartLevel(Z2SE_ENV_WIND_SARUDAN, 0, (mNowLength / (scale.y * 3000.0f)) * 127.0f,
0);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjTrnd_c::setCpsInfo() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/setCpsInfo__11daObjTrnd_cFv.s"
}
#pragma pop
#endif
/* 80D1BE04-80D1BE24 0004E4 0020+00 1/1 0/0 0/0 .text initBaseMtx__11daObjTrnd_cFv */
void daObjTrnd_c::initBaseMtx() {
@@ -305,201 +96,108 @@ void daObjTrnd_c::initBaseMtx() {
void daObjTrnd_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
MTXCopy(mDoMtx_stack_c::get(), field_0x708);
MTXCopy(mDoMtx_stack_c::get(), mMtx);
}
/* ############################################################################################## */
/* 80D1C3A0-80D1C3A4 00004C 0004+00 0/1 0/0 0/0 .rodata @3762 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3762 = -300.0f;
COMPILER_STRIP_GATE(0x80D1C3A0, &lit_3762);
#pragma pop
/* 80D1C3B4-80D1C400 000000 004C+00 1/1 0/0 0/0 .data l_cps_src */
static dCcD_SrcCps l_cps_src = {
{
{0x0, {{AT_TYPE_LANTERN_SWING, 0x0, 0x11}, {0x0, 0x0}, 0x0}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, 0x3, 0x2}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
{dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_WIND, 0x2}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_NONE, 0x4}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{{0.0f, 0.0f, 0.0f}, {0.0f, 3000.0f, 0.0f}, 300.0f}, // mCps
} // mCpsAttr
} // mCpsAttr
};
/* 80D1BE6C-80D1BFB0 00054C 0144+00 1/1 0/0 0/0 .text Create__11daObjTrnd_cFv */
// Matches with literals
#ifdef NONMATCHING
int daObjTrnd_c::Create() {
current.angle.z = 0;
shape_angle.z = 0;
home.angle.z = 0;
initBaseMtx();
fopAcM_SetMtx(this, field_0x708);
mStts.Init(0xff, 0xff, this);
fopAcM_SetMtx(this, mMtx);
mStts.Init(0xFF, 0xFF, this);
mCps.Set(l_cps_src);
mCps.SetStts(&mStts);
cXyz local_1c;
cXyz local_28;
local_1c.x = scale.x * -300.0f;
local_1c.y = 0.0;
local_1c.z = scale.x * -300.0f;
local_28.x = scale.x * 300.0f;
local_28.y = scale.y * 3000.0f;
local_28.z = scale.x * 300.0f;
fopAcM_setCullSizeBox(this, local_1c.x, 0, local_1c.z,
local_28.x, local_28.y,
local_28.z);
cXyz cull_min;
cXyz cull_max;
cull_min.x = scale.x * -300.0f;
cull_min.y = 0.0;
cull_min.z = scale.x * -300.0f;
cull_max.x = scale.x * 300.0f;
cull_max.y = scale.y * 3000.0f;
cull_max.z = scale.x * 300.0f;
fopAcM_setCullSizeBox(this, cull_min.x, 0, cull_min.z, cull_max.x, cull_max.y, cull_max.z);
u32 timer = getTimer();
if (timer == 0xff || timer == 0) {
field_0x738 = 0xffff;
if (timer == 0xFF || timer == 0) {
mTimer = 0xFFFF;
} else {
field_0x738 = timer * 15;
mTimer = timer * 15;
}
field_0x6e8.mRadius = scale.x * 300.0f;
field_0x6e8.mStart = current.pos;
field_0x73c = scale.y * 3000.0f;
field_0x704 = field_0x73c;
mWindCps.mRadius = scale.x * 300.0f;
mWindCps.mStart = current.pos;
mTargetLength = scale.y * 3000.0f;
mNowLength = mTargetLength;
setPntWind();
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daObjTrnd_c::Create() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/Create__11daObjTrnd_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80D1C400-80D1C420 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTrnd_Method */
static actor_method_class l_daObjTrnd_Method = {
(process_method_func)daObjTrnd_Create__FP11daObjTrnd_c,
(process_method_func)daObjTrnd_Delete__FP11daObjTrnd_c,
(process_method_func)daObjTrnd_Execute__FP11daObjTrnd_c,
0,
(process_method_func)daObjTrnd_Draw__FP11daObjTrnd_c,
};
/* 80D1C420-80D1C450 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Tornado */
extern actor_process_profile_definition g_profile_Obj_Tornado = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Tornado, // mProcName
&g_fpcLf_Method.mBase, // sub_method
0x00000770, // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
444, // mPriority
&l_daObjTrnd_Method, // sub_method
0x00040100, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80D1C450-80D1C45C 00009C 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,
};
/* 80D1BFB0-80D1C0A8 000690 00F8+00 1/1 0/0 0/0 .text create__11daObjTrnd_cFv */
int daObjTrnd_c::create() {
fopAcM_SetupActor(this, daObjTrnd_c);
if (Create() == 0) {
if (!Create()) {
return cPhs_ERROR_e;
}
return cPhs_COMPLEATE_e;
}
/* 80D1C0A8-80D1C0F0 000788 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
// asm cM3dGAab::~cM3dGAab() {
extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/__dt__8cM3dGAabFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80D1C3A4-80D1C3A8 000050 0004+00 0/1 0/0 0/0 .rodata @3908 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3908 = 3.0f / 10.0f;
COMPILER_STRIP_GATE(0x80D1C3A4, &lit_3908);
#pragma pop
/* 80D1C3A8-80D1C3AC 000054 0004+00 0/1 0/0 0/0 .rodata @3909 */
#pragma push
#pragma force_active on
SECTION_RODATA static u32 const lit_3909 = 0x3A83126F;
COMPILER_STRIP_GATE(0x80D1C3A8, &lit_3909);
#pragma pop
/* 80D1C3AC-80D1C3B0 000058 0004+00 0/1 0/0 0/0 .rodata @3910 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3910 = 9.0f / 10.0f;
COMPILER_STRIP_GATE(0x80D1C3AC, &lit_3910);
#pragma pop
/* 80D1C0F0-80D1C290 0007D0 01A0+00 1/1 0/0 0/0 .text execute__11daObjTrnd_cFv */
// regalloc
#ifdef NONMATCHING
int daObjTrnd_c::execute() {
if (getSwbit() != 0xff && !fopAcM_isSwitch(this, getSwbit())) {
if (field_0x73c != 0.0f) {
field_0x73c = 0;
if (getSwbit() != 0xFF && !fopAcM_isSwitch(this, getSwbit())) {
if (mTargetLength != 0.0f) {
mTargetLength = 0;
cutPntWind();
}
cLib_addCalc(&mWindPower, 0.3f, 0.2f, 0.1f, 0.001f);
} else if (field_0x738 > 0) {
field_0x738--;
if (field_0x73c == 0.0f) {
} else if (mTimer > 0) {
mTimer--;
if (mTargetLength == 0.0f) {
cLib_addCalc(&mWindPower, 0.3f, 0.2f, 0.1f, 0.001f);
} else {
cLib_addCalc(&mWindPower, 0.9f, 0.5f, 0.1f, 0.001f);
}
} else if (field_0x738 == 0) {
field_0x738 = 15 * getTimer();
if (field_0x73c == 0.0f) {
field_0x73c = scale.y * 3000.0f;
} else if (mTimer == 0) {
mTimer = 15 * getTimer();
if (mTargetLength == 0.0f) {
mTargetLength = scale.y * 3000.0f;
setPntWind();
} else {
field_0x73c = 0.0f;
mTargetLength = 0.0f;
cutPntWind();
}
}
dKyw_evt_wind_set(0, home.angle.y);
dKyw_evt_wind_set(0, home.angle.y + KREG_S(0));
dKyw_custom_windpower(mWindPower);
setCpsInfo();
setBaseMtx();
if (field_0x704 != 0.0f) {
mCps.cM3dGCps::Set(field_0x6e8);
if (mNowLength != 0.0f) {
mCps.cM3dGCps::Set(mWindCps);
dComIfG_Ccsp()->Set(&mCps);
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daObjTrnd_c::execute() {
nofralloc
#include "asm/rel/d/a/obj/d_a_obj_tornado/d_a_obj_tornado/execute__11daObjTrnd_cFv.s"
}
#pragma pop
#endif
/* 80D1C290-80D1C298 000970 0008+00 1/1 0/0 0/0 .text draw__11daObjTrnd_cFv */
int daObjTrnd_c::draw() {
@@ -536,9 +234,33 @@ static int daObjTrnd_Create(daObjTrnd_c* i_this) {
return i_this->create();
}
/* ############################################################################################## */
/* 80D1C3B0-80D1C3B1 00005C 0001+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80D1C3B0 = "";
SECTION_DEAD static char const* const unused = "";
#pragma pop
/* 80D1C400-80D1C420 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTrnd_Method */
static actor_method_class l_daObjTrnd_Method = {
(process_method_func)daObjTrnd_Create, (process_method_func)daObjTrnd_Delete,
(process_method_func)daObjTrnd_Execute, (process_method_func)NULL,
(process_method_func)daObjTrnd_Draw,
};
/* 80D1C420-80D1C450 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Tornado */
extern actor_process_profile_definition g_profile_Obj_Tornado = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Tornado, // mProcName
&g_fpcLf_Method.mBase, // sub_method
0x00000770, // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
444, // mPriority
&l_daObjTrnd_Method, // sub_method
0x00040100, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
+170 -173
View File
@@ -1,53 +1,30 @@
//
// Tornado 2
//
/**
* d_a_obj_tornado2.cpp
* Strong Wind Column
*/
#include "rel/d/a/obj/d_a_obj_tornado2/d_a_obj_tornado2.h"
#include "SSystem/SComponent/c_math.h"
#include "d/com/d_com_inf_game.h"
#include "d/kankyo/d_kankyo_rain.h"
#include "SSystem/SComponent/c_math.h"
/* 80D1D3D4-80D1D3DC 000000 0006+02 6/6 0/0 0/0 .rodata l_R02_eff_id */
static u16 const l_R02_eff_id[3] = {
0x8B5E,
0x8B5F,
0xFFFF,
};
static const u16 l_R02_eff_id[3] = {0x8B5E, 0x8B5F, 0xFFFF};
/* 80D1D3DC-80D1D3E4 000008 0006+02 0/1 0/0 0/0 .rodata l_R04_eff_id */
static u16 const l_R04_eff_id[3] = {
0x8B60,
0x8B61,
0xFFFF,
};
static const u16 l_R04_eff_id[3] = {0x8B60, 0x8B61, 0xFFFF};
/* 80D1D3E4-80D1D3EC 000010 0006+02 0/1 0/0 0/0 .rodata l_R05_eff_id */
static u16 const l_R05_eff_id[3] = {
0x8B6B,
0x8B6C,
0xFFFF,
};
static const u16 l_R05_eff_id[3] = {0x8B6B, 0x8B6C, 0xFFFF};
/* 80D1D3EC-80D1D3F4 000018 0006+02 0/1 0/0 0/0 .rodata l_R07_eff_id */
static u16 const l_R07_eff_id[3] = {
0x8B6D,
0x8B6E,
0xFFFF,
};
static const u16 l_R07_eff_id[3] = {0x8B6D, 0x8B6E, 0xFFFF};
/* 80D1D3F4-80D1D3FC 000020 0006+02 0/1 0/0 0/0 .rodata l_R14_eff_id */
static u16 const l_R14_eff_id[3] = {
0x8B66,
0x8B67,
0x8B68,
};
static const u16 l_R14_eff_id[3] = {0x8B66, 0x8B67, 0x8B68};
/* 80D1D3FC-80D1D404 000028 0006+02 0/1 0/0 0/0 .rodata l_R51_eff_id */
static u16 const l_R51_eff_id[3] = {
0x8B69,
0x8B6A,
0xFFFF,
};
static const u16 l_R51_eff_id[3] = {0x8B69, 0x8B6A, 0xFFFF};
/* 80D1C4D8-80D1C54C 000078 0074+00 1/1 0/0 0/0 .text setPntWind__12daObjTrnd2_cFv */
void daObjTrnd2_c::setPntWind() {
@@ -55,7 +32,7 @@ void daObjTrnd2_c::setPntWind() {
mWindInfluence.mDirection.x = 0.0f;
mWindInfluence.mDirection.y = 1.0f;
mWindInfluence.mDirection.z = 0.0f;
mWindInfluence.mRadius = field_0x768 * scale.x;
mWindInfluence.mRadius = mDefaultRadius * scale.x;
mWindInfluence.field_0x20 = 0.0f;
mWindInfluence.mStrength = 0.2f;
dKyw_pntwind_set(&mWindInfluence);
@@ -68,57 +45,65 @@ void daObjTrnd2_c::cutPntWind() {
/* 80D1C570-80D1C780 000110 0210+00 1/1 0/0 0/0 .text movePntWind__12daObjTrnd2_cFv */
void daObjTrnd2_c::movePntWind() {
cXyz local_20;
cXyz local_2c;
cXyz cStack_38;
local_20.x = field_0x6e8.mStart.x;
local_20.y = field_0x6e8.mStart.y;
local_20.z = field_0x6e8.mStart.z;
local_2c.x = field_0x6e8.mEnd.x;
local_2c.y = field_0x6e8.mEnd.y;
local_2c.z = field_0x6e8.mEnd.z;
dKyr_get_vectle_calc(&local_20, &local_2c, &cStack_38);
mWindInfluence.mDirection = cStack_38;
mWindInfluence.mRadius = field_0x6e8.mRadius * 2.0f;
cXyz start;
cXyz end;
cXyz direction;
start.x = mWindCps.mStart.x;
start.y = mWindCps.mStart.y;
start.z = mWindCps.mStart.z;
end.x = mWindCps.mEnd.x;
end.y = mWindCps.mEnd.y;
end.z = mWindCps.mEnd.z;
dKyr_get_vectle_calc(&start, &end, &direction);
mWindInfluence.mDirection = direction;
mWindInfluence.mRadius = mWindCps.mRadius * 2.0f;
mWindInfluence.field_0x20 = 0.0f;
cLib_addCalc(&mWindInfluence.position.x, field_0x6e8.mEnd.x, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.x, mWindCps.mEnd.x, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
cLib_addCalc(&mWindInfluence.position.y, field_0x6e8.mEnd.y, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.y, mWindCps.mEnd.y, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
cLib_addCalc(&mWindInfluence.position.z, field_0x6e8.mEnd.z, 0.1f, mWindInfluence.mRadius,
cLib_addCalc(&mWindInfluence.position.z, mWindCps.mEnd.z, 0.1f, mWindInfluence.mRadius,
mWindInfluence.mRadius * 0.5f);
if (mWindInfluence.position.abs(field_0x6e8.mEnd) < mWindInfluence.mRadius) {
mWindInfluence.position = field_0x6e8.mStart;
if (mWindInfluence.position.abs(mWindCps.mEnd) < mWindInfluence.mRadius) {
mWindInfluence.position = mWindCps.mStart;
}
}
/* 80D1C780-80D1C924 000320 01A4+00 1/1 0/0 0/0 .text setCpsInfo__12daObjTrnd2_cFv */
void daObjTrnd2_c::setCpsInfo() {
cLib_chaseF(&field_0x704, field_0x738, field_0x76c * scale.y * 0.05f);
field_0x6e8.mEnd.x = 0;
field_0x6e8.mEnd.y = field_0x704;
field_0x6e8.mEnd.z = 0;
mDoMtx_stack_c::transS(field_0x6e8.mStart);
cLib_chaseF(&mNowLength, mTargetLength, mDefaultLength * scale.y * 0.05f);
mWindCps.mEnd.x = 0;
mWindCps.mEnd.y = mNowLength;
mWindCps.mEnd.z = 0;
mDoMtx_stack_c::transS(mWindCps.mStart);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::multVec(&field_0x6e8.mEnd, &field_0x6e8.mEnd);
mCps.cM3dGCps::Set(field_0x6e8);
f32 dVar6 = 10.0f;
if (getPower() != 0xff) {
dVar6 = getPower();
mDoMtx_stack_c::multVec(&mWindCps.mEnd, &mWindCps.mEnd);
mCps.cM3dGCps::Set(mWindCps);
f32 strength = 10.0f;
if (getPower() != 0xFF) {
strength = getPower();
}
cXyz local_20;
cXyz cStack_40;
local_20.x = field_0x6e8.mEnd.x - field_0x6e8.mStart.x;
local_20.y = field_0x6e8.mEnd.y - field_0x6e8.mStart.y;
local_20.z = field_0x6e8.mEnd.z - field_0x6e8.mStart.z;
if (!local_20.isZero()) {
local_20.normalize();
cXyz push_vec;
cXyz sp40;
push_vec.x = mWindCps.mEnd.x - mWindCps.mStart.x;
push_vec.y = mWindCps.mEnd.y - mWindCps.mStart.y;
push_vec.z = mWindCps.mEnd.z - mWindCps.mStart.z;
if (!push_vec.isZero()) {
push_vec.normalize();
} else {
local_20 = cXyz::Zero;
push_vec = cXyz::Zero;
}
cStack_40 = local_20;
local_20 *= dVar6;
mCps.SetAtVec(local_20);
sp40 = push_vec;
push_vec *= strength;
mCps.SetAtVec(push_vec);
movePntWind();
}
@@ -131,95 +116,100 @@ void daObjTrnd2_c::initBaseMtx() {
void daObjTrnd2_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
MTXCopy(mDoMtx_stack_c::get(), field_0x708);
MTXCopy(mDoMtx_stack_c::get(), mMtx);
}
/* 80D1D458-80D1D4A4 000000 004C+00 1/1 0/0 0/0 .data l_cps_src */
static dCcD_SrcCps l_cps_src = {
{
{0x0, {{AT_TYPE_LANTERN_SWING, 0x0, 0x1d}, {0x0, 0x0}, 0x0}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, 0x3, 0x2}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{0x0, {{AT_TYPE_LANTERN_SWING, 0x0, 0x1d}, {0x0, 0x0}, 0x0}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_WIND, 0x2}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_NONE, 0x4}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{{0.0f, 0.0f, 0.0f}, {0.0f, 3000.0f, 0.0f}, 150.0f}, // mCps
} // mCpsAttr
{{0.0f, 0.0f, 0.0f}, {0.0f, 3000.0f, 0.0f}, 150.0f}, // mCps
} // mCpsAttr
};
/* 80D1C98C-80D1CC80 00052C 02F4+00 1/1 0/0 0/0 .text Create__12daObjTrnd2_cFv */
int daObjTrnd2_c::Create() {
field_0x768 = 150.0f;
field_0x76c = 1000.0f;
mDefaultRadius = 150.0f;
mDefaultLength = 1000.0f;
if (getScale() == 1) {
field_0x768 *= 10.0f;
field_0x76c *= 10.0f;
mDefaultRadius *= 10.0f;
mDefaultLength *= 10.0f;
}
initBaseMtx();
fopAcM_SetMtx(this, field_0x708);
mStts.Init(0xff, 0xff, this);
fopAcM_SetMtx(this, mMtx);
mStts.Init(0xFF, 0xFF, this);
mCps.Set(l_cps_src);
mCps.SetStts(&mStts);
cXyz local_1c;
cXyz local_28;
local_1c.x = -field_0x768 * scale.x;
local_1c.y = 0.0;
local_1c.z = -field_0x768 * scale.x;
local_28.x = field_0x768 * scale.x;
local_28.y = field_0x76c * scale.y;
local_28.z = field_0x768 * scale.x;
fopAcM_setCullSizeBox(this, local_1c.x, 0, local_1c.z,
local_28.x, local_28.y,
local_28.z);
field_0x6e8.mRadius = field_0x768 * scale.x;
field_0x6e8.mStart = current.pos;
cXyz cull_min;
cXyz cull_max;
cull_min.x = -mDefaultRadius * scale.x;
cull_min.y = 0.0f;
cull_min.z = -mDefaultRadius * scale.x;
cull_max.x = mDefaultRadius * scale.x;
cull_max.y = mDefaultLength * scale.y;
cull_max.z = mDefaultRadius * scale.x;
fopAcM_setCullSizeBox(this, cull_min.x, 0.0f, cull_min.z, cull_max.x, cull_max.y, cull_max.z);
mWindCps.mRadius = mDefaultRadius * scale.x;
mWindCps.mStart = current.pos;
setParticle();
u32 swBit = getSwbit();
switch(getSwType()) {
switch (getSwType()) {
case 15:
if ((swBit != 0xff && fopAcM_isSwitch(this, swBit)) || swBit == 0xff) {
field_0x778 = true;
if ((swBit != 0xFF && fopAcM_isSwitch(this, swBit)) || swBit == 0xFF) {
mColumnOn = true;
} else {
field_0x778 = false;
mColumnOn = false;
}
break;
case 0:
if (fopAcM_isSwitch(this, swBit)) {
field_0x778 = false;
mColumnOn = false;
} else {
field_0x778 = true;
mColumnOn = true;
}
break;
case 1:
if (swBit != 0xff && !fopAcM_isSwitch(this, swBit)) {
field_0x778 = false;
if (swBit != 0xFF && !fopAcM_isSwitch(this, swBit)) {
mColumnOn = false;
mTimer = getOffTime() * 30;
} else if (cM_rndF(1.0f) > 0.5f) {
field_0x778 = true;
mColumnOn = true;
mTimer = getOnTime() * 30;
} else {
field_0x778 = false;
mColumnOn = false;
mTimer = getOffTime() * 30;
}
break;
case 2:
field_0x778 = true;
mColumnOn = true;
mTimer = getOnTime() * 30;
break;
case 3:
field_0x778 = false;
mColumnOn = false;
mTimer = getOffTime() * 30;
break;
}
if (field_0x778 == true) {
field_0x738 = field_0x76c * scale.y;
field_0x704 = field_0x738;
if (mColumnOn == true) {
mTargetLength = mDefaultLength * scale.y;
mNowLength = mTargetLength;
startParticle();
} else {
field_0x738 = 0;
field_0x704 = 0;
mTargetLength = 0;
mNowLength = 0;
}
setPntWind();
return 1;
}
@@ -227,112 +217,120 @@ int daObjTrnd2_c::Create() {
/* 80D1CC80-80D1CD78 000820 00F8+00 1/1 0/0 0/0 .text create__12daObjTrnd2_cFv */
int daObjTrnd2_c::create() {
fopAcM_SetupActor(this, daObjTrnd2_c);
if (Create() == 0) {
if (!Create()) {
return cPhs_ERROR_e;
}
return cPhs_COMPLEATE_e;
}
/* 80D1CDC0-80D1D0AC 000960 02EC+00 1/1 0/0 0/0 .text execute__12daObjTrnd2_cFv */
int daObjTrnd2_c::execute() {
bool bVar1;
bool set_column;
u32 swBit;
if (field_0x778 == true) {
bVar1 = false;
if (mColumnOn == true) {
set_column = false;
swBit = getSwbit();
switch (getSwType()) {
case 15:
if (swBit != 0xff && !fopAcM_isSwitch(this, swBit)) {
bVar1 = true;
if (swBit != 0xFF && !fopAcM_isSwitch(this, swBit)) {
set_column = true;
}
break;
case 0:
if (fopAcM_isSwitch(this, swBit)) {
bVar1 = true;
set_column = true;
}
break;
case 1:
case 2:
case 3:
if (cLib_calcTimer(&mTimer) == 0 || (swBit != 0xff && !fopAcM_isSwitch(this, swBit))) {
bVar1 = true;
if (cLib_calcTimer(&mTimer) == 0 || (swBit != 0xFF && !fopAcM_isSwitch(this, swBit))) {
set_column = true;
mTimer = getOffTime() * 30;
}
break;
}
if (bVar1) {
field_0x738 = 0.0f;
field_0x778 = false;
if (set_column) {
mTargetLength = 0.0f;
mColumnOn = false;
stopParticle();
}
} else if (field_0x778 == false) {
bVar1 = false;
} else if (mColumnOn == false) {
set_column = false;
swBit = getSwbit();
switch(getSwType()) {
switch (getSwType()) {
case 15:
if (fopAcM_isSwitch(this, swBit)) {
bVar1 = true;
set_column = true;
}
break;
case 0:
if (swBit != 0xff && !fopAcM_isSwitch(this, swBit)) {
bVar1 = true;
if (swBit != 0xFF && !fopAcM_isSwitch(this, swBit)) {
set_column = true;
}
break;
case 1:
case 2:
case 3:
if (cLib_calcTimer(&mTimer) == 0 && ((swBit != 0xff && fopAcM_isSwitch(this, swBit)) || swBit == 0xff)) {
bVar1 = true;
if (cLib_calcTimer(&mTimer) == 0 &&
((swBit != 0xFF && fopAcM_isSwitch(this, swBit)) || swBit == 0xFF))
{
set_column = true;
mTimer = getOnTime() * 30;
}
break;
}
if (bVar1) {
field_0x738 = field_0x76c * scale.y;
field_0x778 = true;
if (set_column) {
mTargetLength = mDefaultLength * scale.y;
mColumnOn = true;
startParticle();
}
}
if (field_0x738 == 0.0f) {
if (mTargetLength == 0.0f) {
cLib_addCalc(&mWindPower, 0.3f, 0.2f, 0.1f, 0.001f);
} else {
cLib_addCalc(&mWindPower, 0.9f, 0.5f, 0.1f, 0.001f);
}
dKyw_evt_wind_set(0, home.angle.y);
dKyw_custom_windpower(mWindPower);
setCpsInfo();
setBaseMtx();
if (field_0x704 != 0.0f) {
mCps.cM3dGCps::Set(field_0x6e8);
if (mNowLength != 0.0f) {
mCps.cM3dGCps::Set(mWindCps);
dComIfG_Ccsp()->Set(&mCps);
}
return 1;
}
/* 80D1D0AC-80D1D214 000C4C 0168+00 1/1 0/0 0/0 .text setParticle__12daObjTrnd2_cFv */
void daObjTrnd2_c::setParticle() {
const u16* pEffId = NULL;
const u16* efflist_p = NULL;
switch (fopAcM_GetRoomNo(this)) {
case 2:
pEffId = l_R02_eff_id;
efflist_p = l_R02_eff_id;
break;
case 4:
pEffId = l_R04_eff_id;
efflist_p = l_R04_eff_id;
break;
case 5:
pEffId = l_R05_eff_id;
efflist_p = l_R05_eff_id;
break;
case 7:
case 8:
pEffId = l_R07_eff_id;
efflist_p = l_R07_eff_id;
break;
case 14:
pEffId = l_R14_eff_id;
efflist_p = l_R14_eff_id;
break;
case 51:
pEffId = l_R51_eff_id;
efflist_p = l_R51_eff_id;
break;
case 0:
case 3:
@@ -343,14 +341,15 @@ void daObjTrnd2_c::setParticle() {
break;
}
for (int i = 0; i < 3; pEffId++, i++) {
if (*pEffId != 0xffff) {
mParticles[i] = dComIfGp_particle_set(*pEffId, &current.pos, &home.angle, NULL,
0xff, NULL, -1, NULL, NULL, NULL);
for (int i = 0; i < 3; efflist_p++, i++) {
if (*efflist_p != 0xffff) {
mParticles[i] = dComIfGp_particle_set(*efflist_p, &current.pos, &home.angle, NULL, 0xFF,
NULL, -1, NULL, NULL, NULL);
} else {
mParticles[i] = NULL;
}
}
stopParticle();
}
@@ -422,26 +421,24 @@ static int daObjTrnd2_Create(daObjTrnd2_c* i_this) {
/* 80D1D4A4-80D1D4C4 -00001 0020+00 1/0 0/0 0/0 .data l_daObjTrnd2_Method */
static actor_method_class l_daObjTrnd2_Method = {
(process_method_func)daObjTrnd2_Create,
(process_method_func)daObjTrnd2_Delete,
(process_method_func)daObjTrnd2_Execute,
(process_method_func)NULL,
(process_method_func)daObjTrnd2_Create, (process_method_func)daObjTrnd2_Delete,
(process_method_func)daObjTrnd2_Execute, (process_method_func)NULL,
(process_method_func)daObjTrnd2_Draw,
};
extern actor_process_profile_definition g_profile_Obj_Tornado2 = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Tornado2, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daObjTrnd2_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
0x1BD, // mPriority
&l_daObjTrnd2_Method, // sub_method
0x40000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_Obj_Tornado2, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daObjTrnd2_c), // mDefaultRadius
0, // mDefaultRadiusOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
0x1BD, // mPriority
&l_daObjTrnd2_Method, // sub_method
0x40000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
+225 -447
View File
@@ -4,602 +4,380 @@
//
#include "rel/d/a/tag/d_a_tag_camera/d_a_tag_camera.h"
#include "dol2asm.h"
//
// Types:
//
struct Vec {};
struct cXyz {
/* 80266B34 */ void operator-(Vec const&) const;
};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
static u8 now[48];
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTag_Cam_c {
/* 80489F14 */ void getSwType();
/* 80489F20 */ void getPrio();
/* 80489F2C */ void getSwBit();
/* 80489F38 */ void getCondition();
/* 80489F44 */ void getCameraId();
/* 80489F50 */ void getRailID();
/* 80489F5C */ void getAreaType();
/* 80489F68 */ void getAreaNoChk();
/* 80489F74 */ void execute();
};
struct daAlink_c {
/* 800E1390 */ void getCopyRodCameraActor();
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
struct dCamera_c {
/* 80163558 */ void SetTagData(fopAc_ac_c*, s32, u16, u8);
};
//
// Forward References:
//
extern "C" static bool func_80489A98();
extern "C" static void func_80489AA0();
extern "C" static void func_80489B18();
extern "C" static void func_80489B2C();
extern "C" static void func_80489B6C();
extern "C" static void func_80489BE0();
extern "C" static void func_80489C04();
extern "C" static void func_80489C1C();
extern "C" static void func_80489C34();
extern "C" static void func_80489C6C();
extern "C" static void func_80489CAC();
extern "C" static void func_80489CE4();
extern "C" static void func_80489CF8();
extern "C" static void func_80489D30();
extern "C" static void func_80489D5C();
extern "C" static void func_80489D70();
extern "C" static void func_80489DB0();
extern "C" static void func_80489DE4();
extern "C" static void func_80489DF8();
extern "C" static void func_80489E18();
extern "C" static void func_80489E8C();
extern "C" static void func_80489EDC();
extern "C" void getSwType__11daTag_Cam_cFv();
extern "C" void getPrio__11daTag_Cam_cFv();
extern "C" void getSwBit__11daTag_Cam_cFv();
extern "C" void getCondition__11daTag_Cam_cFv();
extern "C" void getCameraId__11daTag_Cam_cFv();
extern "C" void getRailID__11daTag_Cam_cFv();
extern "C" void getAreaType__11daTag_Cam_cFv();
extern "C" void getAreaNoChk__11daTag_Cam_cFv();
extern "C" void execute__11daTag_Cam_cFv();
extern "C" static bool daTag_Cam_Draw__FP11daTag_Cam_c();
extern "C" static void daTag_Cam_Execute__FP11daTag_Cam_c();
extern "C" static bool daTag_Cam_IsDelete__FP11daTag_Cam_c();
extern "C" static void daTag_Cam_Delete__FP11daTag_Cam_c();
extern "C" static void daTag_Cam_Create__FP10fopAc_ac_c();
extern "C" extern void* g_profile_TAG_CAMERA[12];
//
// External References:
//
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void getCopyRodCameraActor__9daAlink_cFv();
extern "C" void SetTagData__9dCamera_cFP10fopAc_ac_clUsUc();
extern "C" void dCam_getBody__Fv();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void PSMTXMultVec();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u32 __float_nan;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
//
#include "cmath.h"
#include "d/a/d_a_alink.h"
#include "d/com/d_com_inf_game.h"
#include "rel/d/a/d_a_horse/d_a_horse.h"
namespace {
/* 80489A98-80489AA0 000078 0008+00 1/0 0/0 0/0 .text
* always_true__28@unnamed@d_a_tag_camera_cpp@Fv */
static bool func_80489A98() {
bool always_true() {
return true;
}
/* ############################################################################################## */
/* 8048A670-8048A674 000000 0004+00 15/15 0/0 0/0 .bss Player__28@unnamed@d_a_tag_camera_cpp@ */
static u8 data_8048A670[4];
daAlink_c* Player;
/* 80489AA0-80489B18 000080 0078+00 1/0 0/0 0/0 .text
* is_player_riding_horse__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489AA0() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489AA0.s"
bool is_player_riding_horse() {
return Player->checkHorseRide() || Player->checkBoarRide();
}
#pragma pop
/* 80489B18-80489B2C 0000F8 0014+00 1/0 0/0 0/0 .text
* is_player_swimming__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489B18() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489B18.s"
bool is_player_swimming() {
return dComIfGp_checkPlayerStatus0(0, 0x100000);
}
#pragma pop
/* 80489B2C-80489B6C 00010C 0040+00 1/0 0/0 0/0 .text
* is_player_riding_canoe__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489B2C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489B2C.s"
bool is_player_riding_canoe() {
return Player->checkCanoeRide() != 0;
}
#pragma pop
/* 80489B6C-80489BE0 00014C 0074+00 1/0 0/0 0/0 .text
* is_player_jumping_by_horse__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489B6C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489B6C.s"
bool is_player_jumping_by_horse() {
daHorse_c* phorse = dComIfGp_getHorseActor();
return Player->checkHorseRide() && phorse->checkJump();
}
#pragma pop
/* 80489BE0-80489C04 0001C0 0024+00 1/0 0/0 0/0 .text
* is_player_climbing__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489BE0() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489BE0.s"
bool is_player_climbing() {
return dComIfGp_checkPlayerStatus0(0, 0x2000008) != 0;
}
#pragma pop
/* 80489C04-80489C1C 0001E4 0018+00 1/0 0/0 0/0 .text
* is_player_wear_magneboots__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489C04() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489C04.s"
bool is_player_wear_magneboots() {
return Player->checkMagneBootsOn();
}
#pragma pop
/* 80489C1C-80489C34 0001FC 0018+00 1/0 0/0 0/0 .text
* is_player_wolf__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489C1C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489C1C.s"
bool is_player_wolf() {
return Player->i_checkNowWolf();
}
#pragma pop
/* 80489C34-80489C6C 000214 0038+00 1/0 0/0 0/0 .text
* is_player_pulling_chainblock__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489C34() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489C34.s"
bool is_player_pulling_chainblock() {
return Player->checkChainBlockPushPull();
}
#pragma pop
/* 80489C6C-80489CAC 00024C 0040+00 1/0 0/0 0/0 .text
* is_player_playing_spinner__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489C6C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489C6C.s"
bool is_player_playing_spinner() {
return Player->checkSpinnerRide() != 0;
}
#pragma pop
/* 80489CAC-80489CE4 00028C 0038+00 1/0 0/0 0/0 .text
* is_player_sliding_slope__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489CAC() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489CAC.s"
bool is_player_sliding_slope() {
return Player->checkLv3Slide();
}
#pragma pop
/* 80489CE4-80489CF8 0002C4 0014+00 2/1 0/0 0/0 .text
* is_player_on_watersurface__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489CE4() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489CE4.s"
bool is_player_on_watersurface() {
return dComIfGp_checkCameraAttentionStatus(0, 0x800) != 0;
}
#pragma pop
/* 80489CF8-80489D30 0002D8 0038+00 1/0 0/0 0/0 .text
* is_player_moving_on_spinnerrail__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489CF8() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489CF8.s"
bool is_player_moving_on_spinnerrail() {
return Player->checkSpinnerPathMove();
}
#pragma pop
/* 80489D30-80489D5C 000310 002C+00 1/0 0/0 0/0 .text
* is_player_gliding__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489D30() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489D30.s"
bool is_player_gliding() {
return Player->checkCokkoGlide();
}
#pragma pop
/* 80489D5C-80489D70 00033C 0014+00 1/0 0/0 0/0 .text
* is_player_hunging_by_hookshot__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489D5C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489D5C.s"
bool is_player_hunging_by_hookshot() {
return dComIfGp_checkPlayerStatus1(0, 0x10000) != 0;
}
#pragma pop
/* 80489D70-80489DB0 000350 0040+00 1/0 0/0 0/0 .text
* is_player_on_rope__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489D70() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489D70.s"
bool is_player_on_rope() {
return Player->checkWolfRope() != 0;
}
#pragma pop
/* 80489DB0-80489DE4 000390 0034+00 1/0 0/0 0/0 .text
* is_player_using_copyrod__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489DB0() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489DB0.s"
bool is_player_using_copyrod() {
return Player->getCopyRodCameraActor() != NULL;
}
#pragma pop
/* 80489DE4-80489DF8 0003C4 0014+00 1/0 0/0 0/0 .text
* is_player_hunging_wall_by_hookshot__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489DE4() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489DE4.s"
bool is_player_hunging_wall_by_hookshot() {
return dComIfGp_checkPlayerStatus1(0, 0x2000000) != 0;
}
#pragma pop
/* 80489DF8-80489E18 0003D8 0020+00 1/0 0/0 0/0 .text
* is_player_carried_by_cargo__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489DF8() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489DF8.s"
bool is_player_carried_by_cargo() {
return Player->checkCargoCarry();
}
#pragma pop
/* 80489E18-80489E8C 0003F8 0074+00 1/0 0/0 0/0 .text
* is_player_playing_rodeo__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489E18() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489E18.s"
bool is_player_playing_rodeo() {
daHorse_c* phorse = dComIfGp_getHorseActor();
return Player->checkHorseRide() && phorse->checkRodeoMode();
}
#pragma pop
/* 80489E8C-80489EDC 00046C 0050+00 1/0 0/0 0/0 .text
* is_player_in_water__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489E8C() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489E8C.s"
bool is_player_in_water() {
return dComIfGp_checkPlayerStatus0(0, 0x100000) && !is_player_on_watersurface();
}
#pragma pop
/* 80489EDC-80489F14 0004BC 0038+00 1/0 0/0 0/0 .text
* is_player_hugging_eal__28@unnamed@d_a_tag_camera_cpp@Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_80489EDC() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/func_80489EDC.s"
bool is_player_hugging_eal() {
return Player->checkOctaIealHang();
}
#pragma pop
} // namespace
/* 80489F14-80489F20 0004F4 000C+00 1/1 0/0 0/0 .text getSwType__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getSwType() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getSwType__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getSwType() {
return fopAcM_GetParam(this) & 0xF;
}
#pragma pop
/* 80489F20-80489F2C 000500 000C+00 1/1 0/0 0/0 .text getPrio__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getPrio() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getPrio__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getPrio() {
return (fopAcM_GetParam(this) >> 4) & 0xF;
}
#pragma pop
/* 80489F2C-80489F38 00050C 000C+00 1/1 0/0 0/0 .text getSwBit__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getSwBit() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getSwBit__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getSwBit() {
return (fopAcM_GetParam(this) >> 8) & 0xFF;
}
#pragma pop
/* 80489F38-80489F44 000518 000C+00 2/2 0/0 0/0 .text getCondition__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getCondition() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getCondition__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getCondition() {
return (fopAcM_GetParam(this) >> 0x10) & 0xFF;
}
#pragma pop
/* 80489F44-80489F50 000524 000C+00 1/1 0/0 0/0 .text getCameraId__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getCameraId() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getCameraId__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getCameraId() {
return (fopAcM_GetParam(this) >> 0x18) & 0xFF;
}
#pragma pop
/* 80489F50-80489F5C 000530 000C+00 1/1 0/0 0/0 .text getRailID__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getRailID() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getRailID__11daTag_Cam_cFv.s"
u8 daTag_Cam_c::getRailID() {
return home.angle.z & 0xFF;
}
#pragma pop
/* 80489F5C-80489F68 00053C 000C+00 2/2 0/0 0/0 .text getAreaType__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getAreaType() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getAreaType__11daTag_Cam_cFv.s"
u16 daTag_Cam_c::getAreaType() {
return home.angle.z & 0x100;
}
#pragma pop
/* 80489F68-80489F74 000548 000C+00 1/1 0/0 0/0 .text getAreaNoChk__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::getAreaNoChk() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/getAreaNoChk__11daTag_Cam_cFv.s"
u16 daTag_Cam_c::getAreaNoChk() {
return home.angle.z & 0x200;
}
#pragma pop
/* ############################################################################################## */
/* 8048A590-8048A59C 000000 000C+00 2/2 0/0 0/0 .rodata @3874 */
SECTION_RODATA static u8 const lit_3874[12] = {
static u8 const lit_3874[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x8048A590, &lit_3874);
/* 8048A59C-8048A5F4 -00001 0058+00 0/0 0/0 0/0 .rodata @4358 */
#pragma push
#pragma force_active on
SECTION_RODATA static void* const lit_4358[22] = {
(void*)func_80489AA0, (void*)func_80489B18, (void*)func_80489B2C, (void*)func_80489A98,
(void*)func_80489B6C, (void*)func_80489BE0, (void*)func_80489C04, (void*)func_80489C1C,
(void*)func_80489C34, (void*)func_80489C6C, (void*)func_80489CAC, (void*)func_80489CE4,
(void*)func_80489CF8, (void*)func_80489D30, (void*)func_80489D5C, (void*)func_80489D70,
(void*)func_80489DB0, (void*)func_80489DE4, (void*)func_80489DF8, (void*)func_80489E18,
(void*)func_80489E8C, (void*)func_80489EDC,
};
COMPILER_STRIP_GATE(0x8048A59C, &lit_4358);
#pragma pop
int daTag_Cam_c::create() {
fopAcM_SetupActor(this, daTag_Cam_c);
/* 8048A5F4-8048A5F8 000064 0004+00 0/1 0/0 0/0 .rodata @4466 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4466 = 80.0f;
COMPILER_STRIP_GATE(0x8048A5F4, &lit_4466);
#pragma pop
if (getAreaType() == 0) {
scale.x *= 500.0f;
scale.y *= 1000.0f;
scale.z *= 500.0f;
/* 8048A5F8-8048A600 000068 0004+04 0/2 0/0 0/0 .rodata @4467 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_4467[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x8048A5F8, &lit_4467);
#pragma pop
mBoundsLo.set(current.pos.x - scale.x, current.pos.y, current.pos.z - scale.z);
mBoundsHi.set(current.pos.x + scale.x, current.pos.y + scale.y, current.pos.z + scale.z);
} else {
scale.x *= 1000.0f;
scale.y *= 1000.0f;
scale.z *= 0.0f;
/* 8048A600-8048A608 000070 0008+00 0/1 0/0 0/0 .rodata @4468 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_4468[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x8048A600, &lit_4468);
#pragma pop
mBoundsLo.set(0.0f, current.pos.y, 0.0f);
mBoundsHi.set(0.0f, current.pos.y + scale.y, 0.0f);
}
/* 8048A608-8048A610 000078 0008+00 0/1 0/0 0/0 .rodata @4469 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_4469[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x8048A608, &lit_4469);
#pragma pop
Player = daAlink_getAlinkActorClass();
/* 8048A610-8048A618 000080 0008+00 0/1 0/0 0/0 .rodata @4470 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_4470[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x8048A610, &lit_4470);
#pragma pop
bool (*check_func[])() = {
is_player_riding_horse,
is_player_swimming,
is_player_riding_canoe,
always_true,
is_player_jumping_by_horse,
is_player_climbing,
is_player_wear_magneboots,
is_player_wolf,
is_player_pulling_chainblock,
is_player_playing_spinner,
is_player_sliding_slope,
is_player_on_watersurface,
is_player_moving_on_spinnerrail,
is_player_gliding,
is_player_hunging_by_hookshot,
is_player_on_rope,
is_player_using_copyrod,
is_player_hunging_wall_by_hookshot,
is_player_carried_by_cargo,
is_player_playing_rodeo,
is_player_in_water,
is_player_hugging_eal,
};
u8 func_index = getCondition();
if ((int)func_index > 22) {
func_index = 3;
}
mCheckFunc = check_func[func_index];
return cPhs_COMPLEATE_e;
}
/* 80489F74-8048A378 000554 0404+00 1/1 0/0 0/0 .text execute__11daTag_Cam_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Cam_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/execute__11daTag_Cam_cFv.s"
int daTag_Cam_c::execute() {
if (fopAcM_GetRoomNo(this) != dComIfGp_roomControl_getStayNo()) {
return 0;
}
u8 sw_type = getSwType();
u8 sw_bit = getSwBit();
bool var_r29 = false;
bool do_area_check = false;
if (sw_bit != 0xFF) {
bool is_switch_on = dComIfGs_isSwitch(sw_bit, fopAcM_GetRoomNo(this)) != 0;
if ((sw_type != 0 && is_switch_on) || (sw_type == 0 && !is_switch_on)) {
do_area_check = true;
}
} else {
do_area_check = true;
}
if (do_area_check) {
cXyz pos(dComIfGp_getLinkPlayer()->current.pos);
if (dComIfGp_checkPlayerStatus0(0, 8)) {
pos = dComIfGp_getLinkPlayer()->attention_info.position;
pos.y -= 80.0f;
}
if (getAreaNoChk()) {
var_r29 = true;
} else if (getAreaType() == 0) {
if (home.angle.y != 0) {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(-home.angle.y);
cXyz sp84 = pos - current.pos;
mDoMtx_stack_c::multVec(&sp84, &pos);
}
if (mBoundsLo.x <= pos.x && pos.x <= mBoundsHi.x && mBoundsLo.y <= pos.y &&
pos.y <= mBoundsHi.y && mBoundsLo.z <= pos.z && pos.z <= mBoundsHi.z)
{
var_r29 = true;
}
} else {
f32 temp_f31 = current.pos.x - pos.x;
f32 temp_f30 = current.pos.z - pos.z;
f32 sq_dist = std::sqrt(temp_f31 * temp_f31 + temp_f30 * temp_f30);
if (sq_dist < scale.x && mBoundsLo.y <= pos.y && pos.y <= mBoundsHi.y) {
var_r29 = true;
}
}
}
if (var_r29) {
u16 priority = getPrio();
u8 condition = getCondition();
bool set_camera = mCheckFunc();
if (condition == 0xFF) {
priority |= 0x8000;
} else if (condition == 0xFA) {
if (dCam_getBody()->CheckFlag(0x8000000)) {
set_camera = true;
}
}
if (set_camera) {
u8 cam_id = getCameraId();
u8 rail_id = getRailID();
dCam_getBody()->SetTagData(this, cam_id, priority, rail_id);
}
}
return 1;
}
#pragma pop
/* 8048A378-8048A380 000958 0008+00 1/0 0/0 0/0 .text daTag_Cam_Draw__FP11daTag_Cam_c */
static bool daTag_Cam_Draw(daTag_Cam_c* param_0) {
return true;
static int daTag_Cam_Draw(daTag_Cam_c* i_this) {
return 1;
}
/* 8048A380-8048A3A4 000960 0024+00 1/0 0/0 0/0 .text daTag_Cam_Execute__FP11daTag_Cam_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Cam_Execute(daTag_Cam_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/daTag_Cam_Execute__FP11daTag_Cam_c.s"
static int daTag_Cam_Execute(daTag_Cam_c* i_this) {
i_this->execute();
return 1;
}
#pragma pop
/* 8048A3A4-8048A3AC 000984 0008+00 1/0 0/0 0/0 .text daTag_Cam_IsDelete__FP11daTag_Cam_c
*/
static bool daTag_Cam_IsDelete(daTag_Cam_c* param_0) {
return true;
static int daTag_Cam_IsDelete(daTag_Cam_c* i_this) {
return 1;
}
/* 8048A3AC-8048A3DC 00098C 0030+00 1/0 0/0 0/0 .text daTag_Cam_Delete__FP11daTag_Cam_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Cam_Delete(daTag_Cam_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/daTag_Cam_Delete__FP11daTag_Cam_c.s"
static int daTag_Cam_Delete(daTag_Cam_c* i_this) {
i_this->~daTag_Cam_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 8048A618-8048A61C 000088 0004+00 0/1 0/0 0/0 .rodata @4545 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4545 = 500.0f;
COMPILER_STRIP_GATE(0x8048A618, &lit_4545);
#pragma pop
/* 8048A61C-8048A620 00008C 0004+00 0/1 0/0 0/0 .rodata @4546 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4546 = 1000.0f;
COMPILER_STRIP_GATE(0x8048A61C, &lit_4546);
#pragma pop
/* 8048A3DC-8048A588 0009BC 01AC+00 1/0 0/0 0/0 .text daTag_Cam_Create__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Cam_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_camera/d_a_tag_camera/daTag_Cam_Create__FP10fopAc_ac_c.s"
static int daTag_Cam_Create(fopAc_ac_c* i_this) {
daTag_Cam_c* a_this = (daTag_Cam_c*)i_this;
return a_this->create();
}
#pragma pop
/* ############################################################################################## */
/* 8048A620-8048A640 -00001 0020+00 1/0 0/0 0/0 .data l_daTag_Cam_Method */
SECTION_DATA static void* l_daTag_Cam_Method[8] = {
(void*)daTag_Cam_Create__FP10fopAc_ac_c,
(void*)daTag_Cam_Delete__FP11daTag_Cam_c,
(void*)daTag_Cam_Execute__FP11daTag_Cam_c,
(void*)daTag_Cam_IsDelete__FP11daTag_Cam_c,
(void*)daTag_Cam_Draw__FP11daTag_Cam_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
static actor_method_class l_daTag_Cam_Method = {
(process_method_func)daTag_Cam_Create, (process_method_func)daTag_Cam_Delete,
(process_method_func)daTag_Cam_Execute, (process_method_func)daTag_Cam_IsDelete,
(process_method_func)daTag_Cam_Draw,
};
/* 8048A640-8048A670 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_CAMERA */
SECTION_DATA extern void* g_profile_TAG_CAMERA[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02CF0000, (void*)&g_fpcLf_Method,
(void*)0x0000058C, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x01170000, (void*)&l_daTag_Cam_Method,
(void*)0x00044000, (void*)0x00060000,
extern actor_process_profile_definition g_profile_TAG_CAMERA = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_TAG_CAMERA, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daTag_Cam_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
279, // mPriority
&l_daTag_Cam_Method, // sub_method
0x00044000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_6_e, // cullType
};
+212 -385
View File
@@ -1,454 +1,281 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_msg
//
/**
* d_a_tag_msg.cpp
*
*/
#include "rel/d/a/tag/d_a_tag_msg/d_a_tag_msg.h"
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
//
// Types:
//
struct request_of_phase_process_class {};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTag_Msg_c {
/* 8048F7F8 */ ~daTag_Msg_c();
/* 8048F878 */ void create();
/* 8048F954 */ void createHeap();
/* 8048F9B4 */ void destroy();
/* 8048F9E8 */ void execute();
/* 8048FC68 */ bool draw();
/* 8048FC70 */ void rangeCheck();
/* 8048FE18 */ void otherCheck();
/* 8048FF8C */ void getResName();
/* 8048FF9C */ void getParam();
/* 8049004C */ void cut_speak(int, int);
static void* mEvtCutTBL[2];
};
struct daTag_Msg_Param_c {
/* 80490128 */ ~daTag_Msg_Param_c();
static u8 const m[1 + 3 /* padding */];
};
struct dSv_info_c {
/* 80035200 */ void onSwitch(int, int);
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_flag_c {
static u8 saveBitLabels[1644 + 4 /* padding */];
};
struct dSv_event_c {
/* 800349BC */ void isEventBit(u16) const;
};
struct dMsgFlow_c {
/* 80249F00 */ dMsgFlow_c();
/* 80249F48 */ ~dMsgFlow_c();
/* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
/* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
};
struct dEvt_control_c {
/* 80042468 */ void reset();
};
struct dEvent_manager_c {
/* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8);
/* 80047A78 */ void endCheck(s16);
/* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int);
/* 80047D4C */ void getIsAddvance(int);
/* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int);
/* 8004817C */ void cutEnd(int);
};
struct Vec {};
struct cXyz {
/* 80266B34 */ void operator-(Vec const&) const;
};
//
// Forward References:
//
extern "C" static void createHeapCallBack__FP10fopAc_ac_c();
extern "C" void __dt__11daTag_Msg_cFv();
extern "C" void create__11daTag_Msg_cFv();
extern "C" void createHeap__11daTag_Msg_cFv();
extern "C" void destroy__11daTag_Msg_cFv();
extern "C" void execute__11daTag_Msg_cFv();
extern "C" bool draw__11daTag_Msg_cFv();
extern "C" void rangeCheck__11daTag_Msg_cFv();
extern "C" void otherCheck__11daTag_Msg_cFv();
extern "C" void getResName__11daTag_Msg_cFv();
extern "C" void getParam__11daTag_Msg_cFv();
extern "C" void cut_speak__11daTag_Msg_cFii();
extern "C" static void daTag_Msg_Create__FPv();
extern "C" static void daTag_Msg_Delete__FPv();
extern "C" static void daTag_Msg_Execute__FPv();
extern "C" static void daTag_Msg_Draw__FPv();
extern "C" static bool daTag_Msg_IsDelete__FPv();
extern "C" void __dt__17daTag_Msg_Param_cFv();
extern "C" u8 const m__17daTag_Msg_Param_c[1 + 3 /* padding */];
extern "C" extern char const* const d_a_tag_msg__stringBase0;
extern "C" void* mEvtCutTBL__11daTag_Msg_c[2];
//
// External References:
//
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void onSwitch__10dSv_info_cFii();
extern "C" void isSwitch__10dSv_info_cCFii();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
extern "C" void endCheck__16dEvent_manager_cFs();
extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
extern "C" void getIsAddvance__16dEvent_manager_cFi();
extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
extern "C" void cutEnd__16dEvent_manager_cFi();
extern "C" void __ct__10dMsgFlow_cFv();
extern "C" void __dt__10dMsgFlow_cFv();
extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void PSVECSquareMag();
extern "C" void _savegpr_26();
extern "C" void _restgpr_26();
extern "C" void strcpy();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u32 __float_nan;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
//
// Declarations:
//
/* 8048F7D8-8048F7F8 000078 0020+00 1/1 0/0 0/0 .text createHeapCallBack__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void createHeapCallBack(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/createHeapCallBack__FP10fopAc_ac_c.s"
static int createHeapCallBack(fopAc_ac_c* i_this) {
return ((daTag_Msg_c*)i_this)->createHeap();
}
#pragma pop
/* ############################################################################################## */
/* 804901A4-804901A4 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804901A4 = "TagMsg";
SECTION_DEAD static char const* const stringBase_804901AB = "SPEAK";
SECTION_DEAD static char const* const stringBase_804901B1 = "Tag_ms";
SECTION_DEAD static char const* const stringBase_804901B8 = "PAUSE";
#pragma pop
/* 804901C4-804901C8 -00001 0004+00 1/1 0/0 0/0 .data l_resName */
SECTION_DATA static void* l_resName = (void*)&d_a_tag_msg__stringBase0;
static char* l_resName = "TagMsg";
/* 804901C8-804901D0 -00001 0008+00 1/1 0/0 0/0 .data l_evtNameTBL */
SECTION_DATA static void* l_evtNameTBL[2] = {
(void*)NULL,
(void*)(((char*)&d_a_tag_msg__stringBase0) + 0x7),
};
/* 804901D0-804901D8 -00001 0008+00 1/1 0/0 0/0 .data mEvtCutTBL__11daTag_Msg_c */
SECTION_DATA void* daTag_Msg_c::mEvtCutTBL[2] = {
(void*)(((char*)&d_a_tag_msg__stringBase0) + 0x7),
(void*)(((char*)&d_a_tag_msg__stringBase0) + 0x14),
};
/* 804901D8-804901F8 -00001 0020+00 1/0 0/0 0/0 .data daTag_Msg_MethodTable */
SECTION_DATA static void* daTag_Msg_MethodTable[8] = {
(void*)daTag_Msg_Create__FPv,
(void*)daTag_Msg_Delete__FPv,
(void*)daTag_Msg_Execute__FPv,
(void*)daTag_Msg_IsDelete__FPv,
(void*)daTag_Msg_Draw__FPv,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 804901F8-80490228 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_MSG */
SECTION_DATA extern void* g_profile_TAG_MSG[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x02D50000, (void*)&g_fpcLf_Method,
(void*)0x000005E8, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x011D0000, (void*)&daTag_Msg_MethodTable,
(void*)0x00044000, (void*)0x000E0000,
};
/* 80490228-80490234 000064 000C+00 2/2 0/0 0/0 .data __vt__17daTag_Msg_Param_c */
SECTION_DATA extern void* __vt__17daTag_Msg_Param_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__17daTag_Msg_Param_cFv,
};
/* 80490234-80490240 000070 000C+00 2/2 0/0 0/0 .data __vt__11daTag_Msg_c */
SECTION_DATA extern void* __vt__11daTag_Msg_c[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__11daTag_Msg_cFv,
static char* l_evtNameTBL[2] = {
NULL,
"SPEAK",
};
/* 8048F7F8-8048F878 000098 0080+00 1/0 0/0 0/0 .text __dt__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daTag_Msg_c::~daTag_Msg_c() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/__dt__11daTag_Msg_cFv.s"
daTag_Msg_c::~daTag_Msg_c() {
dComIfG_resDelete(&mPhase, getResName());
}
#pragma pop
/* 8048F878-8048F954 000118 00DC+00 1/1 0/0 0/0 .text create__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/create__11daTag_Msg_cFv.s"
int daTag_Msg_c::create() {
fopAcM_SetupActor(this, daTag_Msg_c);
int phase_state = dComIfG_resLoad(&mPhase, getResName());
if (phase_state == cPhs_COMPLEATE_e) {
attention_info.flags = 0x20000008;
getParam();
eventInfo.setArchiveName(getResName());
mEventIdx = -1;
if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x10)) {
return cPhs_ERROR_e;
}
}
return phase_state;
}
#pragma pop
/* 8048F954-8048F9B4 0001F4 0060+00 1/1 0/0 0/0 .text createHeap__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::createHeap() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/createHeap__11daTag_Msg_cFv.s"
int daTag_Msg_c::createHeap() {
mParam = new daTag_Msg_Param_c();
if (mParam == NULL) {
return 0;
}
return 1;
}
#pragma pop
/* 8048F9B4-8048F9E8 000254 0034+00 1/1 0/0 0/0 .text destroy__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::destroy() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/destroy__11daTag_Msg_cFv.s"
int daTag_Msg_c::destroy() {
this->~daTag_Msg_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80490178-8049017C 000000 0001+03 1/1 0/0 0/0 .rodata m__17daTag_Msg_Param_c */
SECTION_RODATA u8 const daTag_Msg_Param_c::m[1 + 3 /* padding */] = {
0x00,
/* padding */
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80490178, &daTag_Msg_Param_c::m);
/* 8049017C-80490180 000004 0004+00 1/1 0/0 0/0 .rodata @3757 */
SECTION_RODATA static f32 const lit_3757 = 150.0f;
COMPILER_STRIP_GATE(0x8049017C, &lit_3757);
const daTag_Msg_HIO_Param_c daTag_Msg_Param_c::m = {0};
/* 8048F9E8-8048FC68 000288 0280+00 1/1 0/0 0/0 .text execute__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/execute__11daTag_Msg_cFv.s"
int daTag_Msg_c::execute() {
bool set_event = true;
fopAcM_SetRoomNo(this, dComIfGp_roomControl_getStayNo());
eyePos.set(current.pos.x, current.pos.y + 150.0f, current.pos.z);
attention_info.position = eyePos;
dComIfG_play_c& play = g_dComIfG_gameInfo.play; // FAKE, event inlines need to be fixed
if (play.getEvent().runCheck()) {
set_event = false;
if (eventInfo.checkCommandTalk()) {
if (cut_speak(-1, field_0x5e4)) {
if (field_0x5dc == 1 && mOffSwitch != 0xFF) {
dComIfGs_onSwitch(mOffSwitch, fopAcM_GetRoomNo(this));
}
play.getEvent().reset();
set_event = true;
}
field_0x5e4 = 0;
} else if (mEventIdx != -1) {
if (dComIfGp_getEventManager().endCheck(mEventIdx)) {
mOrderEvtNum = 0;
mEventIdx = -1;
if (field_0x5dc == 0 && mOffSwitch != 0xFF) {
dComIfGs_onSwitch(mOffSwitch, fopAcM_GetRoomNo(this));
}
play.getEvent().reset();
set_event = true;
} else {
int staff_id = dComIfGp_evmng_getMyStaffId(mStaffName, NULL, 0);
int act_idx = dComIfGp_getEventManager().getMyActIdx(staff_id, mEvtCutTBL, 2, 0, 0);
int is_advance = dComIfGp_getEventManager().getIsAddvance(staff_id);
BOOL var_r27 = false;
switch (act_idx) {
case 0:
var_r27 = cut_speak(staff_id, is_advance);
break;
}
if (var_r27) {
dComIfGp_getEventManager().cutEnd(staff_id);
}
}
}
}
if (set_event && rangeCheck() && otherCheck()) {
if (field_0x5dd) {
mOrderEvtNum = 1;
JUT_ASSERT(0 != l_evtNameTBL[mOrderEvtNum]);
mEventIdx =
dComIfGp_getEventManager().getEventIdx(this, l_evtNameTBL[mOrderEvtNum], 0xFF);
fopAcM_orderOtherEventId(this, mEventIdx, 0xFF, 0xFFFF, 0, 1);
} else {
eventInfo.i_onCondition(1);
field_0x5e4 = 1;
}
}
return 1;
}
#pragma pop
/* 8048FC68-8048FC70 000508 0008+00 1/1 0/0 0/0 .text draw__11daTag_Msg_cFv */
bool daTag_Msg_c::draw() {
return true;
int daTag_Msg_c::draw() {
return 1;
}
/* ############################################################################################## */
/* 80490180-80490188 000008 0004+04 0/1 0/0 0/0 .rodata @3813 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3813[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80490180, &lit_3813);
#pragma pop
/* 80490188-80490190 000010 0008+00 0/1 0/0 0/0 .rodata @3814 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3814[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80490188, &lit_3814);
#pragma pop
/* 80490190-80490198 000018 0008+00 0/1 0/0 0/0 .rodata @3815 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3815[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80490190, &lit_3815);
#pragma pop
/* 80490198-804901A0 000020 0008+00 0/1 0/0 0/0 .rodata @3816 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3816[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80490198, &lit_3816);
#pragma pop
/* 8048FC70-8048FE18 000510 01A8+00 1/1 0/0 0/0 .text rangeCheck__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::rangeCheck() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/rangeCheck__11daTag_Msg_cFv.s"
BOOL daTag_Msg_c::rangeCheck() {
cXyz player_dist = daPy_getPlayerActorClass()->current.pos - current.pos;
return player_dist.absXZ() < scale.x && (-scale.y < player_dist.y && player_dist.y < scale.y);
}
#pragma pop
/* 8048FE18-8048FF8C 0006B8 0174+00 1/1 0/0 0/0 .text otherCheck__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::otherCheck() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/otherCheck__11daTag_Msg_cFv.s"
BOOL daTag_Msg_c::otherCheck() {
if (field_0x5dc) {
if (mOnSaveLabel == 0xFFF ||
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mOnSaveLabel]))
{
if (mOffSaveLabel != 0xFFF &&
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[mOffSaveLabel]))
{
return false;
}
} else {
return false;
}
} else if (mOnSwitch == 0xFF || dComIfGs_isSwitch(mOnSwitch, fopAcM_GetRoomNo(this))) {
if (mOffSwitch != 0xFF && dComIfGs_isSwitch(mOffSwitch, fopAcM_GetRoomNo(this))) {
return false;
}
} else {
return false;
}
if (field_0x5dd) {
return 1;
}
s16 var_r28 = fopAcM_searchActorAngleY(this, daPy_getPlayerActorClass()) + 0x7FFF;
s16 angle_to_player = var_r28 - daPy_getPlayerActorClass()->current.angle.y;
if (angle_to_player < 0) {
angle_to_player = -angle_to_player;
}
return angle_to_player <= 0x1000;
}
#pragma pop
/* 8048FF8C-8048FF9C 00082C 0010+00 2/2 0/0 0/0 .text getResName__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::getResName() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/getResName__11daTag_Msg_cFv.s"
char* daTag_Msg_c::getResName() {
return l_resName;
}
#pragma pop
/* ############################################################################################## */
/* 804901A0-804901A4 000028 0004+00 1/1 0/0 0/0 .rodata @3880 */
SECTION_RODATA static f32 const lit_3880 = 100.0f;
COMPILER_STRIP_GATE(0x804901A0, &lit_3880);
/* 8048FF9C-8049004C 00083C 00B0+00 1/1 0/0 0/0 .text getParam__11daTag_Msg_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::getParam() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/getParam__11daTag_Msg_cFv.s"
void daTag_Msg_c::getParam() {
mOnSwitch = home.angle.x & 0xFF;
mOffSwitch = (home.angle.x >> 8) & 0xFF;
mOnSaveLabel = fopAcM_GetParam(this) & 0xFFF;
mOffSaveLabel = (fopAcM_GetParam(this) >> 0xC) & 0xFFF;
field_0x5dc = (fopAcM_GetParam(this) & 0x1000000) != 0;
field_0x5dd = (fopAcM_GetParam(this) & 0x2000000) != 0;
if ((home.angle.z & 0xFFFF) != 0) {
mFlowID = home.angle.z & 0xFFFF;
} else {
mFlowID = -1;
}
scale.x *= 100.0f;
scale.y *= 100.0f;
strcpy(mStaffName, "Tag_ms");
}
#pragma pop
/* 804901D0-804901D8 -00001 0008+00 1/1 0/0 0/0 .data mEvtCutTBL__11daTag_Msg_c */
SECTION_DATA char* daTag_Msg_c::mEvtCutTBL[2] = {
"SPEAK",
"PAUSE",
};
/* 8049004C-804900A0 0008EC 0054+00 1/1 0/0 0/0 .text cut_speak__11daTag_Msg_cFii */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTag_Msg_c::cut_speak(int param_0, int param_1) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/cut_speak__11daTag_Msg_cFii.s"
BOOL daTag_Msg_c::cut_speak(int i_staffId, BOOL i_isAdvance) {
if (i_isAdvance) {
mMsgFlow.init(this, mFlowID, 0, NULL);
return false;
} else {
return mMsgFlow.doFlow(this, NULL, 0);
}
}
#pragma pop
/* 804900A0-804900C0 000940 0020+00 1/0 0/0 0/0 .text daTag_Msg_Create__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Msg_Create(void* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/daTag_Msg_Create__FPv.s"
static int daTag_Msg_Create(void* i_this) {
return ((daTag_Msg_c*)i_this)->create();
}
#pragma pop
/* 804900C0-804900E0 000960 0020+00 1/0 0/0 0/0 .text daTag_Msg_Delete__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Msg_Delete(void* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/daTag_Msg_Delete__FPv.s"
static int daTag_Msg_Delete(void* i_this) {
return ((daTag_Msg_c*)i_this)->destroy();
}
#pragma pop
/* 804900E0-80490100 000980 0020+00 1/0 0/0 0/0 .text daTag_Msg_Execute__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Msg_Execute(void* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/daTag_Msg_Execute__FPv.s"
static int daTag_Msg_Execute(void* i_this) {
return ((daTag_Msg_c*)i_this)->execute();
}
#pragma pop
/* 80490100-80490120 0009A0 0020+00 1/0 0/0 0/0 .text daTag_Msg_Draw__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTag_Msg_Draw(void* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/daTag_Msg_Draw__FPv.s"
static int daTag_Msg_Draw(void* i_this) {
return ((daTag_Msg_c*)i_this)->draw();
}
#pragma pop
/* 80490120-80490128 0009C0 0008+00 1/0 0/0 0/0 .text daTag_Msg_IsDelete__FPv */
static bool daTag_Msg_IsDelete(void* param_0) {
return true;
static int daTag_Msg_IsDelete(void* i_this) {
return 1;
}
/* 80490128-80490170 0009C8 0048+00 1/0 0/0 0/0 .text __dt__17daTag_Msg_Param_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daTag_Msg_Param_c::~daTag_Msg_Param_c() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_msg/d_a_tag_msg/__dt__17daTag_Msg_Param_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804901BE-804901C4 000046 0006+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804901BE = "Timer";
#pragma pop
/* 804901A4-804901A4 00002C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
/* 804901D8-804901F8 -00001 0020+00 1/0 0/0 0/0 .data daTag_Msg_MethodTable */
static actor_method_class daTag_Msg_MethodTable = {
(process_method_func)daTag_Msg_Create, (process_method_func)daTag_Msg_Delete,
(process_method_func)daTag_Msg_Execute, (process_method_func)daTag_Msg_IsDelete,
(process_method_func)daTag_Msg_Draw,
};
/* 804901F8-80490228 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_MSG */
extern actor_process_profile_definition g_profile_TAG_MSG = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_TAG_MSG, // mProcName
&g_fpcLf_Method.mBase, // sub_method
sizeof(daTag_Msg_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
285, // mPriority
&daTag_Msg_MethodTable, // sub_method
0x00044000, // mStatus
fopAc_ACTOR_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};