summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-07-15 11:28:47 +0300
committerGitHub <noreply@github.com>2025-07-15 01:28:47 -0700
commitaeeaf91054da4b6fc2914f25eedf19ff35f34980 (patch)
tree113e27564fa01ff2c22a0d6c7048939be31aa2ec /src
parent07403fe796f6040754d01190c3390eb63fd83ef2 (diff)
d_a_ppolamp OK (#2535)
* d_a_ppolamp OK * Remove include * d_a_tag_Lv6Gate OK
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_ppolamp.cpp648
-rw-r--r--src/d/actor/d_a_tag_Lv6Gate.cpp232
2 files changed, 264 insertions, 616 deletions
diff --git a/src/d/actor/d_a_ppolamp.cpp b/src/d/actor/d_a_ppolamp.cpp
index 3541e0266a..5ece0ad036 100644
--- a/src/d/actor/d_a_ppolamp.cpp
+++ b/src/d/actor/d_a_ppolamp.cpp
@@ -4,560 +4,216 @@
*/
#include "d/actor/d_a_ppolamp.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void daPPolamp_c_createHeap__FP10fopAc_ac_c();
-extern "C" void __dt__11daPPolamp_cFv();
-extern "C" void create__11daPPolamp_cFv();
-extern "C" void execute__11daPPolamp_cFv();
-extern "C" void draw__11daPPolamp_cFv();
-extern "C" void Delete__11daPPolamp_cFv();
-extern "C" void setModelMtx__11daPPolamp_cFv();
-extern "C" void setPclModelMtx__11daPPolamp_cFv();
-extern "C" void createHeap__11daPPolamp_cFv();
-extern "C" void moveSwing__11daPPolamp_cFv();
-extern "C" void initParam__11daPPolamp_cFv();
-extern "C" static void daPPolamp_create__FP11daPPolamp_c();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" static void daPPolamp_Delete__FP11daPPolamp_c();
-extern "C" static void daPPolamp_execute__FP11daPPolamp_c();
-extern "C" static void daPPolamp_draw__FP11daPPolamp_c();
-extern "C" extern char const* const d_a_ppolamp__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_XrotM__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-extern "C" void play__14mDoExt_baseAnmFv();
-extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
-extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void atan2sX_Z__4cXyzCFv();
-extern "C" void atan2sY_XZ__4cXyzCFv();
-extern "C" void cM_rndF__Ff();
-extern "C" void cM_rndFX__Ff();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void _savegpr_27();
-extern "C" void _restgpr_27();
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-
-//
-// Declarations:
-//
+#include "Z2AudioLib/Z2Instances.h"
+#include "d/d_com_inf_game.h"
/* 80D4C938-80D4C958 000078 0020+00 1/1 0/0 0/0 .text daPPolamp_c_createHeap__FP10fopAc_ac_c */
-static void daPPolamp_c_createHeap(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daPPolamp_c_createHeap(fopAc_ac_c* i_this) {
+ return ((daPPolamp_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 80D4D2C8-80D4D2C8 00004C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D4D2C8 = "PPolamp";
-#pragma pop
-
/* 80D4D2D0-80D4D2D4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_ppolamp__stringBase0;
-
-/* 80D4D2D4-80D4D2F4 -00001 0020+00 1/0 0/0 0/0 .data daPPolamp_METHODS */
-static actor_method_class daPPolamp_METHODS = {
- (process_method_func)daPPolamp_create__FP11daPPolamp_c,
- (process_method_func)daPPolamp_Delete__FP11daPPolamp_c,
- (process_method_func)daPPolamp_execute__FP11daPPolamp_c,
- 0,
- (process_method_func)daPPolamp_draw__FP11daPPolamp_c,
-};
-
-/* 80D4D2F4-80D4D324 -00001 0030+00 0/0 0/0 1/0 .data g_profile_PPolamp */
-extern actor_process_profile_definition g_profile_PPolamp = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_PPolamp, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daPPolamp_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 727, // mPriority
- &daPPolamp_METHODS, // sub_method
- 0x00040180, // mStatus
- fopAc_ENV_e, // mActorType
- fopAc_CULLBOX_12_e, // cullType
-};
-
-/* 80D4D324-80D4D330 000054 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
-
-/* 80D4D330-80D4D33C 000060 000C+00 2/2 0/0 0/0 .data __vt__11daPPolamp_c */
-SECTION_DATA extern void* __vt__11daPPolamp_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__11daPPolamp_cFv,
-};
+static char* l_arcName = "PPolamp";
/* 80D4C958-80D4C9FC 000098 00A4+00 1/0 0/0 0/0 .text __dt__11daPPolamp_cFv */
daPPolamp_c::~daPPolamp_c() {
- // NONMATCHING
+ dComIfG_resDelete(this, l_arcName);
}
-/* ############################################################################################## */
-/* 80D4D27C-80D4D288 000000 000C+00 2/2 0/0 0/0 .rodata @3757 */
-SECTION_RODATA static u8 const lit_3757[12] = {
- 0x00, 0x00, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D4D27C, &lit_3757);
-
/* 80D4C9FC-80D4CB24 00013C 0128+00 1/1 0/0 0/0 .text create__11daPPolamp_cFv */
-void daPPolamp_c::create() {
- // NONMATCHING
+int daPPolamp_c::create() {
+ int rv = dComIfG_resLoad(this, l_arcName);
+ if (rv == cPhs_COMPLEATE_e) {
+ if (fopAcM_entrySolidHeap(this, daPPolamp_c_createHeap, 0x1010) == 0) {
+ return cPhs_ERROR_e;
+ }
+ initParam();
+ setModelMtx();
+ fopAcM_SetMtx(this, mModel1->getBaseTRMtx());
+ Vec local_1c;
+ Vec local_28 = {0.0f, -45.0f, 0.0f};
+ cMtx_multVec(mModel1->getBaseTRMtx(), &local_28, &local_1c);
+ mDoMtx_stack_c::transS(local_1c.x, local_1c.y, local_1c.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mDoMtx_stack_c::XrotM(shape_angle.x);
+ mDoMtx_stack_c::ZrotM(shape_angle.z);
+ mModel2->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+ return rv;
}
/* 80D4CB24-80D4CB84 000264 0060+00 1/1 0/0 0/0 .text execute__11daPPolamp_cFv */
-void daPPolamp_c::execute() {
- // NONMATCHING
+int daPPolamp_c::execute() {
+ if (mSwingTimer != 0) {
+ mSwingTimer--;
+ } else {
+ moveSwing();
+ }
+ setModelMtx();
+ setPclModelMtx();
+ mBck.play();
+ return 1;
}
-/* ############################################################################################## */
-/* 80D4D288-80D4D290 00000C 0008+00 1/1 0/0 0/0 .rodata @3797 */
-SECTION_RODATA static u8 const lit_3797[8] = {
- 0x00, 0x48, 0x00, 0x85, 0x00, 0xFF, 0x00, 0xFF,
-};
-COMPILER_STRIP_GATE(0x80D4D288, &lit_3797);
-
-/* 80D4D290-80D4D298 000014 0008+00 1/1 0/0 0/0 .rodata @3802 */
-SECTION_RODATA static u8 const lit_3802[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
-};
-COMPILER_STRIP_GATE(0x80D4D290, &lit_3802);
-
-/* 80D4D340-80D4D344 000000 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 80D4D344-80D4D348 000004 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D348-80D4D34C 000008 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D34C-80D4D350 00000C 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D350-80D4D354 000010 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D354-80D4D358 000014 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D358-80D4D35C 000018 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D35C-80D4D360 00001C 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D360-80D4D364 000020 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D364-80D4D368 000024 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D368-80D4D36C 000028 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D36C-80D4D370 00002C 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D370-80D4D374 000030 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D374-80D4D378 000034 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D378-80D4D37C 000038 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D37C-80D4D380 00003C 0001+03 0/0 0/0 0/0 .bss @1009 */
-#pragma push
-#pragma force_active on
-static u8 lit_1009[1 + 3 /* padding */];
-#pragma pop
-
-/* 80D4D380-80D4D38C 000040 0008+04 0/1 0/0 0/0 .bss TEV_COLOR_1$3795 */
-#pragma push
-#pragma force_active on
-static u8 TEV_COLOR_1[8 + 4 /* padding */];
-#pragma pop
-
-/* 80D4D38C-80D4D394 00004C 0008+00 0/1 0/0 0/0 .bss TEV_COLOR_2$3800 */
-#pragma push
-#pragma force_active on
-static u8 TEV_COLOR_2[8];
-#pragma pop
+UNK_REL_BSS
/* 80D4CB84-80D4CCF0 0002C4 016C+00 1/1 0/0 0/0 .text draw__11daPPolamp_cFv */
-void daPPolamp_c::draw() {
- // NONMATCHING
+int daPPolamp_c::draw() {
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mModel1, &tevStr);
+ mDoExt_modelUpdateDL(mModel1);
+ g_env_light.setLightTevColorType_MAJI(mModel2, &tevStr);
+ static J3DGXColorS10 TEV_COLOR_1 = (GXColorS10){0x48, 0x85, 0xff, 0xff};
+ static J3DGXColorS10 TEV_COLOR_2 = (GXColorS10){0, 0, 0xff, 0xff};
+ J3DModelData* modelData = mModel2->getModelData();
+ for (u16 i = 0; i < modelData->getMaterialNum(); i++)
+ {
+ J3DMaterial* material = modelData->getMaterialNodePointer(i);
+ if (material != NULL) {
+ material->setTevColor(1, &TEV_COLOR_1);
+ material->setTevColor(2, &TEV_COLOR_2);
+ }
+ }
+ mBck.entry(modelData);
+ mDoExt_modelUpdateDL(mModel2);
+ return 1;
}
/* 80D4CCF0-80D4CD24 000430 0034+00 1/1 0/0 0/0 .text Delete__11daPPolamp_cFv */
-void daPPolamp_c::Delete() {
- // NONMATCHING
+int daPPolamp_c::Delete() {
+ this->~daPPolamp_c();
+ return 1;
}
/* 80D4CD24-80D4CDA8 000464 0084+00 2/2 0/0 0/0 .text setModelMtx__11daPPolamp_cFv */
void daPPolamp_c::setModelMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mDoMtx_stack_c::XrotM(shape_angle.x);
+ mDoMtx_stack_c::ZrotM(shape_angle.z);
+ mModel1->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
-/* 80D4D298-80D4D2A4 00001C 000C+00 1/1 0/0 0/0 .rodata @3859 */
-SECTION_RODATA static u8 const lit_3859[12] = {
- 0x00, 0x00, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D4D298, &lit_3859);
-
/* 80D4CDA8-80D4CE9C 0004E8 00F4+00 1/1 0/0 0/0 .text setPclModelMtx__11daPPolamp_cFv */
void daPPolamp_c::setPclModelMtx() {
- // NONMATCHING
+ Vec local_20;
+ Vec local_2c = {0.0f, -45.0f, 0.0f};
+ cMtx_multVec(mModel1->getBaseTRMtx(), &local_2c, &local_20);
+ mDoMtx_stack_c::transS(local_20.x, local_20.y, local_20.z);
+ camera_class* camera = dComIfGp_getCamera(0);
+ if (camera != NULL) {
+ cXyz cStack_38 = camera->lookat.eye - current.pos;
+ mDoMtx_stack_c::YrotM(cStack_38.atan2sX_Z());
+ mDoMtx_stack_c::XrotM(cStack_38.atan2sY_XZ());
+ }
+ mModel2->setBaseTRMtx(mDoMtx_stack_c::get());
}
-/* ############################################################################################## */
-/* 80D4D2A4-80D4D2A8 000028 0004+00 2/2 0/0 0/0 .rodata @3909 */
-SECTION_RODATA static f32 const lit_3909 = 1.0f;
-COMPILER_STRIP_GATE(0x80D4D2A4, &lit_3909);
-
/* 80D4CE9C-80D4CFB0 0005DC 0114+00 1/1 0/0 0/0 .text createHeap__11daPPolamp_cFv */
-void daPPolamp_c::createHeap() {
- // NONMATCHING
+int daPPolamp_c::createHeap() {
+ J3DModelData* a_model_data_p = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 8);
+ JUT_ASSERT(347, a_model_data_p != 0);
+ mModel1 = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084);
+ if (mModel1 == NULL) {
+ return 0;
+ }
+
+ a_model_data_p = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 7);
+ JUT_ASSERT(360, a_model_data_p != 0);
+ mModel2 = mDoExt_J3DModel__create(a_model_data_p, 0x80000, 0x11000084);
+ if (mModel2 == NULL) {
+ return 0;
+ }
+
+ J3DAnmTransform* a_bck_p = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 4);
+ JUT_ASSERT(372, a_bck_p != 0);
+ if (mBck.init(a_bck_p, 1, 2, 1.0f, 0, -1, false) == 0) {
+ return 0;
+ }
+
+ return 1;
}
-/* ############################################################################################## */
-/* 80D4D2A8-80D4D2AC 00002C 0004+00 0/1 0/0 0/0 .rodata @3922 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3922 = 450.0f;
-COMPILER_STRIP_GATE(0x80D4D2A8, &lit_3922);
-#pragma pop
-
-/* 80D4D2AC-80D4D2B0 000030 0004+00 0/1 0/0 0/0 .rodata @3923 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3923 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D4D2AC, &lit_3923);
-#pragma pop
-
-/* 80D4D2B0-80D4D2B4 000034 0004+00 0/1 0/0 0/0 .rodata @3924 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3924 = 11.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D4D2B0, &lit_3924);
-#pragma pop
-
-/* 80D4D2B4-80D4D2B8 000038 0004+00 0/1 0/0 0/0 .rodata @3925 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3925 = 3.0f / 25.0f;
-COMPILER_STRIP_GATE(0x80D4D2B4, &lit_3925);
-#pragma pop
-
-/* 80D4D2B8-80D4D2BC 00003C 0004+00 0/1 0/0 0/0 .rodata @3926 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3926 = 80.0f;
-COMPILER_STRIP_GATE(0x80D4D2B8, &lit_3926);
-#pragma pop
-
-/* 80D4D2BC-80D4D2C4 000040 0008+00 0/1 0/0 0/0 .rodata @3928 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3928[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80D4D2BC, &lit_3928);
-#pragma pop
-
/* 80D4CFB0-80D4D10C 0006F0 015C+00 1/1 0/0 0/0 .text moveSwing__11daPPolamp_cFv */
void daPPolamp_c::moveSwing() {
- // NONMATCHING
+ s16 sVar1 = field_0x598 * 65 - 500;
+ shape_angle.z += (s16)(field_0x5a4 * (field_0x59c * sVar1));
+ shape_angle.y += (s16)(field_0x59e * field_0x5a4);
+ if (sVar1 > 500) {
+ field_0x598 = 0;
+ field_0x59c *= -1;
+ field_0x59e = cM_rndFX(450.0f);
+ if (cLib_chaseF(&field_0x5a4, field_0x5a8, cM_rndF(0.1f)) != 0) {
+ field_0x5a8 = cM_rndF(1.1f);
+ if (field_0x5a4 < 0.12f) {
+ mSwingTimer = cM_rndF(80.0f);
+ }
+ }
+ }
+ field_0x598++;
}
-/* ############################################################################################## */
-/* 80D4D2C4-80D4D2C8 000048 0004+00 1/1 0/0 0/0 .rodata @3936 */
-SECTION_RODATA static f32 const lit_3936 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80D4D2C4, &lit_3936);
-
/* 80D4D10C-80D4D140 00084C 0034+00 1/1 0/0 0/0 .text initParam__11daPPolamp_cFv */
void daPPolamp_c::initParam() {
- // NONMATCHING
+ field_0x598 = 0;
+ field_0x59c = 1;
+ field_0x59e = 0;
+ mSwingTimer = 0;
+ field_0x5a4 = 0.2f;
+ field_0x5a8 = 1.0f;
}
/* 80D4D140-80D4D1CC 000880 008C+00 1/0 0/0 0/0 .text daPPolamp_create__FP11daPPolamp_c
*/
-static void daPPolamp_create(daPPolamp_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D4D1CC-80D4D214 00090C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
+static int daPPolamp_create(daPPolamp_c* i_this) {
+ fopAcM_SetupActor(i_this, daPPolamp_c);
+ return i_this->create();
}
/* 80D4D214-80D4D234 000954 0020+00 1/0 0/0 0/0 .text daPPolamp_Delete__FP11daPPolamp_c
*/
-static void daPPolamp_Delete(daPPolamp_c* param_0) {
- // NONMATCHING
+static int daPPolamp_Delete(daPPolamp_c* i_this) {
+ return i_this->Delete();
}
/* 80D4D234-80D4D254 000974 0020+00 1/0 0/0 0/0 .text daPPolamp_execute__FP11daPPolamp_c
*/
-static void daPPolamp_execute(daPPolamp_c* param_0) {
- // NONMATCHING
+static int daPPolamp_execute(daPPolamp_c* i_this) {
+ return i_this->execute();
}
/* 80D4D254-80D4D274 000994 0020+00 1/0 0/0 0/0 .text daPPolamp_draw__FP11daPPolamp_c */
-static void daPPolamp_draw(daPPolamp_c* param_0) {
- // NONMATCHING
+static int daPPolamp_draw(daPPolamp_c* i_this) {
+ return i_this->draw();
}
-/* ############################################################################################## */
-/* 80D4D394-80D4D398 000054 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D394[4];
-#pragma pop
-
-/* 80D4D398-80D4D39C 000058 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D398[4];
-#pragma pop
-
-/* 80D4D39C-80D4D3A0 00005C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D39C[4];
-#pragma pop
-
-/* 80D4D3A0-80D4D3A4 000060 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3A0[4];
-#pragma pop
-
-/* 80D4D3A4-80D4D3A8 000064 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3A4[4];
-#pragma pop
-
-/* 80D4D3A8-80D4D3AC 000068 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3A8[4];
-#pragma pop
-
-/* 80D4D3AC-80D4D3B0 00006C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3AC[4];
-#pragma pop
-
-/* 80D4D3B0-80D4D3B4 000070 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3B0[4];
-#pragma pop
-
-/* 80D4D3B4-80D4D3B8 000074 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3B4[4];
-#pragma pop
-
-/* 80D4D3B8-80D4D3BC 000078 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3B8[4];
-#pragma pop
-
-/* 80D4D3BC-80D4D3C0 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3BC[4];
-#pragma pop
-
-/* 80D4D3C0-80D4D3C4 000080 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3C0[4];
-#pragma pop
-
-/* 80D4D3C4-80D4D3C8 000084 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3C4[4];
-#pragma pop
-
-/* 80D4D3C8-80D4D3CC 000088 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3C8[4];
-#pragma pop
-
-/* 80D4D3CC-80D4D3D0 00008C 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3CC[4];
-#pragma pop
-
-/* 80D4D3D0-80D4D3D4 000090 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3D0[4];
-#pragma pop
-
-/* 80D4D3D4-80D4D3D8 000094 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3D4[4];
-#pragma pop
-
-/* 80D4D3D8-80D4D3DC 000098 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3D8[4];
-#pragma pop
-
-/* 80D4D3DC-80D4D3E0 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3DC[4];
-#pragma pop
-
-/* 80D4D3E0-80D4D3E4 0000A0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3E0[4];
-#pragma pop
-
-/* 80D4D3E4-80D4D3E8 0000A4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3E4[4];
-#pragma pop
-
-/* 80D4D3E8-80D4D3EC 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3E8[4];
-#pragma pop
-
-/* 80D4D3EC-80D4D3F0 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3EC[4];
-#pragma pop
+/* 80D4D2D4-80D4D2F4 -00001 0020+00 1/0 0/0 0/0 .data daPPolamp_METHODS */
+static actor_method_class daPPolamp_METHODS = {
+ (process_method_func)daPPolamp_create,
+ (process_method_func)daPPolamp_Delete,
+ (process_method_func)daPPolamp_execute,
+ NULL,
+ (process_method_func)daPPolamp_draw,
+};
-/* 80D4D3F0-80D4D3F4 0000B0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3F0[4];
-#pragma pop
+/* 80D4D2F4-80D4D324 -00001 0030+00 0/0 0/0 1/0 .data g_profile_PPolamp */
+extern actor_process_profile_definition g_profile_PPolamp = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_PPolamp, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daPPolamp_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 727, // mPriority
+ &daPPolamp_METHODS, // sub_method
+ 0x00040180, // mStatus
+ fopAc_ENV_e, // mActorType
+ fopAc_CULLBOX_12_e, // cullType
+};
-/* 80D4D3F4-80D4D3F8 0000B4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_80D4D3F4[4];
-#pragma pop
+AUDIO_INSTANCES;
/* 80D4D2C8-80D4D2C8 00004C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/src/d/actor/d_a_tag_Lv6Gate.cpp b/src/d/actor/d_a_tag_Lv6Gate.cpp
index 721148599a..19c6c8f3a6 100644
--- a/src/d/actor/d_a_tag_Lv6Gate.cpp
+++ b/src/d/actor/d_a_tag_Lv6Gate.cpp
@@ -7,7 +7,6 @@
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "d/actor/d_a_player.h"
#include "d/d_procname.h"
-#include "dol2asm.h"
/* 80D4F898-80D4F8B8 000078 0020+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
static int createSolidHeap(fopAc_ac_c* i_this) {
@@ -75,21 +74,6 @@ static int daTagLv6Gate_Create(fopAc_ac_c* i_this) {
return static_cast<daTagLv6Gate_c*>(i_this)->create();
}
-void daTagLv6Gate_c::seStair() {
- Vec se_pos = {0.0f, 1800.0f, -6800.0f};
- mDoAud_seStart(Z2SE_OBJ_LV6_GATE_STAIR, &se_pos, 0, 0);
-}
-
-void daTagLv6Gate_c::seGlassOff() {
- Vec se_pos = {0.0f, 2887.0f, -8330.0f};
- mDoAud_seStart(Z2SE_OBJ_LV6_GATE_GLASS_OFF, &se_pos, 0, 0);
-}
-
-void daTagLv6Gate_c::seGlassOn() {
- Vec se_pos = {0.0f, 2887.0f, -8330.0f};
- mDoAud_seStart(Z2SE_OBJ_LV6_GATE_GLASS_ON, &se_pos, 0, 0);
-}
-
void daTagLv6Gate_c::initBaseMtx() {
fopAcM_SetMtx(this, mpModel[0]->getBaseTRMtx());
@@ -106,60 +90,20 @@ void daTagLv6Gate_c::initBaseMtx() {
mBgW[1].Move();
}
-void daTagLv6Gate_c::create_init() {
- fopAcM_setCullSizeBox(this, -50.0f, 0.0f, -50.0f, 50.0f, 100.0f, 50.0f);
- attention_info.position = current.pos;
- attention_info.flags = (fopAcM_isSwitch(this, getSwitchNo1()) != 0) ? 0 : 0x80;
- attention_info.distances[fopAc_attn_ETC_e] = 89;
- mEvtId = -1;
- field_0x76a = 0;
-
- field_0x760[0] = 255.0f;
- field_0x760[1] = 115.0f;
-
- initBaseMtx();
-
- if (!fopAcM_isSwitch(this, getSwitchNo1())) {
- parentActorID = fopAcM_create(PROC_NPC_TKS, 2, &cXyz(-13.272481f, 2887.0f, -10373.718f),
- fopAcM_GetRoomNo(this), &csXyz(0, 0x7FFF, 0), NULL, -1);
- }
-}
-
-/* 80D4FBD8-80D4FE5C 0003B8 0284+00 1/1 0/0 0/0 .text create__14daTagLv6Gate_cFv */
-int daTagLv6Gate_c::create() {
- fopAcM_SetupActor(this, daTagLv6Gate_c);
-
- int phase = dComIfG_resLoad(&mPhase, l_arcName);
-
- if (phase == cPhs_COMPLEATE_e) {
- if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x7800)) {
- return cPhs_ERROR_e;
- } else {
- create_init();
- }
- }
-
- return phase;
-}
-
-/* 80D4FEBC-80D4FEDC 00069C 0020+00 1/0 0/0 0/0 .text daTagLv6Gate_Execute__FP14daTagLv6Gate_c */
-static int daTagLv6Gate_Execute(daTagLv6Gate_c* i_this) {
- return i_this->execute();
-}
-
-bool daTagLv6Gate_c::checkOpenArea() {
+inline bool daTagLv6Gate_c::checkOpenArea() {
if (!fopAcM_isSwitch(this, getSwitchNo2())) {
return false;
}
+ fopAc_ac_c* actor = NULL;
+ cXyz pos;
mDoMtx_stack_c::copy(mpModel[1]->getBaseTRMtx());
mDoMtx_stack_c::inverse();
for (int i = 0; i < 2; i++) {
- fopAc_ac_c* actor =
+ actor =
(i == 0) ? daPy_getPlayerActorClass() : fopAcM_SearchByName(PROC_NPC_TKS);
if (actor != NULL) {
- cXyz pos;
mDoMtx_stack_c::push();
mDoMtx_stack_c::multVec(fopAcM_GetPosition_p(actor), &pos);
mDoMtx_stack_c::pop();
@@ -174,76 +118,73 @@ bool daTagLv6Gate_c::checkOpenArea() {
return false;
}
-void daTagLv6Gate_c::cut1() {
- dComIfGp_getEvent().setSkipZev(this, "LV6_GATE_APPEAR_SKIP");
-
- cXyz pos(0.0f, 0.0f, 78.0f);
-
- mDoMtx_stack_c::transS(current.pos);
- mDoMtx_stack_c::YrotM(shape_angle.y);
- mDoMtx_stack_c::multVec(&pos, &pos);
- daPy_getPlayerActorClass()->setPlayerPosAndAngle(&pos, shape_angle.y + 0x10000 - 0x8000, 0);
-}
-
-void daTagLv6Gate_c::cut2() {
- cXyz pos(0.0f, 0.0f, 0.0f);
- dComIfGp_particle_set(0x8B89, &pos, &csXyz(0, 0, 0), NULL);
-}
-
-void daTagLv6Gate_c::cut4() {
- cXyz pos(117.8473f, 1677.0f, -5110.8394f);
-
- fopAc_ac_c* actor2;
- fopAc_ac_c* actor1;
-
- actor1 = NULL;
- fopAcM_SearchByID(parentActorID, &actor1);
-
- if (actor1 == NULL) {
- return;
- }
-
- *fopAcM_GetOldPosition_p(actor1) = pos;
- *fopAcM_GetPosition_p(actor1) = pos;
-
- actor2 = NULL;
- fopAcM_SearchByName(PROC_NPC_TKC, &actor2);
-
- if (actor2 == NULL) {
- return;
- }
-
- *fopAcM_GetOldPosition_p(actor2) = pos;
- *fopAcM_GetPosition_p(actor2) = pos;
-}
-
/* 80D4FEDC-80D5068C 0006BC 07B0+00 1/1 0/0 0/0 .text execute__14daTagLv6Gate_cFv */
-// NONMATCHING
-int daTagLv6Gate_c::execute() {
+inline int daTagLv6Gate_c::execute() {
dComIfG_inf_c& game_info = g_dComIfG_gameInfo; // Fake match?
if (game_info.getPlay().getEvent().runCheck() && !eventInfo.checkCommandTalk()) {
- s32 cut_index = dComIfGp_getEventManager().getMyStaffId(l_arcName, NULL, 0);
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ s32 cut_index = eventManager.getMyStaffId(l_arcName, NULL, 0);
if (cut_index != -1) {
- int* cut_name = (int*)dComIfGp_getEventManager().getMyNowCutName(cut_index);
+ int* cut_name = (int*)eventManager.getMyNowCutName(cut_index);
daPy_getPlayerActorClass()->onShieldBackBone();
- if (dComIfGp_evmng_getIsAddvance(cut_index)) {
+ if (eventManager.getIsAddvance(cut_index)) {
switch (*cut_name) {
- case '0001':
- cut1();
+ case '0001': {
+ dComIfGp_getEvent().setSkipZev(this, "LV6_GATE_APPEAR_SKIP");
+
+ cXyz pos(0.0f, 0.0f, 78.0f);
+
+ mDoMtx_stack_c::transS(current.pos);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mDoMtx_stack_c::multVec(&pos, &pos);
+ daPy_getPlayerActorClass()->setPlayerPosAndAngle(&pos, shape_angle.y + 0x10000 - 0x8000, 0);
break;
- case '0002':
- cut2();
+ }
+ case '0002': {
+ cXyz pos(0.0f, 0.0f, 0.0f);
+ csXyz angle(0, 0, 0);
+ dComIfGp_particle_set(0x8B89, &pos, &angle, NULL);
break;
+ }
case '0003':
fopAcM_onSwitch(this, getSwitchNo2());
- seStair();
+ Vec se_pos = {0.0f, 1800.0f, -6800.0f};
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_LV6_GATE_STAIR, &se_pos, 0, 0, 1.0f, 1.0f,
+ -1.0f, -1.0f, 0);
break;
- case '0004':
- cut4();
+ case '0004': {
+ cXyz pos(117.8473f, 1677.0f, -5110.8394f);
+
+ fopAc_ac_c* actor1;
+ fopAc_ac_c* actor2;
+
+ actor1 = NULL;
+ fopAcM_SearchByID(parentActorID, &actor1);
+
+ if (actor1 == NULL) {
+ break;
+ }
+
+ fopAcM_GetOldPosition_p(actor1)->set(pos);
+ fopAcM_GetPosition_p(actor1)->set(pos);
+
+ #if VERSION != VERSION_SHIELD_DEBUG
+
+ actor2 = NULL;
+ fopAcM_SearchByName(PROC_NPC_TKC, &actor2);
+
+ if (actor2 == NULL) {
+ break;
+ }
+
+ *fopAcM_GetOldPosition_p(actor2) = pos;
+ *fopAcM_GetPosition_p(actor2) = pos;
+ #endif
break;
+ }
case '0006':
fopAcM_onSwitch(this, getSwitchNo2());
mpBtk[0]->setFrame(mpBtk[0]->getEndFrame());
@@ -251,6 +192,9 @@ int daTagLv6Gate_c::execute() {
dComIfG_Bgsp().Regist(&mBgW[0], this);
}
fopAcM_delete(parentActorID);
+ break;
+ default:
+ JUT_PANIC(332, "0");
}
}
@@ -261,17 +205,20 @@ int daTagLv6Gate_c::execute() {
case '0004':
case '0005':
case '0006':
- dComIfGp_evmng_cutEnd(cut_index);
+ eventManager.cutEnd(cut_index);
+ break;
+ default:
+ JUT_PANIC(345, "0");
}
if (eventInfo.checkCommandDemoAccrpt() && mEvtId != -1 &&
- dComIfGp_evmng_endCheck(mEvtId))
+ eventManager.endCheck(mEvtId))
{
dComIfGp_event_reset();
mEvtId = -1;
}
}
- } else if (field_0x76a && !fopAcM_isSwitch(this, getSwitchNo1())) {
+ } else if (mIsMasterSwordStabbed && !fopAcM_isSwitch(this, getSwitchNo1())) {
eventInfo.setArchiveName(l_arcName);
dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName());
mEvtId = dComIfGp_getEventManager().getEventIdx(this, "LV6_GATE_APPEAR", -1);
@@ -292,7 +239,9 @@ int daTagLv6Gate_c::execute() {
if (checkOpenArea()) {
if (mBgW[1].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgW[1]);
- seGlassOff();
+ Vec se_pos = {0.0f, 2887.0f, -8330.0f};
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_LV6_GATE_GLASS_OFF, &se_pos, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
}
field_0x760[0] -= 12.75f;
@@ -308,7 +257,9 @@ int daTagLv6Gate_c::execute() {
} else {
if (!mBgW[1].ChkUsed()) {
dComIfG_Bgsp().Regist(&mBgW[1], this);
- seGlassOn();
+ Vec se_pos = {0.0f, 2887.0f, -8330.0f};
+ Z2GetAudioMgr()->seStart(Z2SE_OBJ_LV6_GATE_GLASS_ON, &se_pos, 0, 0, 1.0f, 1.0f, -1.0f,
+ -1.0f, 0);
}
field_0x760[0] += 12.75f;
@@ -326,6 +277,47 @@ int daTagLv6Gate_c::execute() {
return 1;
}
+void daTagLv6Gate_c::create_init() {
+ fopAcM_setCullSizeBox(this, -50.0f, 0.0f, -50.0f, 50.0f, 100.0f, 50.0f);
+ attention_info.position = current.pos;
+ attention_info.flags = (fopAcM_isSwitch(this, getSwitchNo1()) != 0) ? 0 : 0x80;
+ attention_info.distances[fopAc_attn_ETC_e] = 89;
+ mEvtId = -1;
+ mIsMasterSwordStabbed = 0;
+
+ field_0x760[0] = 255.0f;
+ field_0x760[1] = 115.0f;
+
+ initBaseMtx();
+
+ if (!fopAcM_isSwitch(this, getSwitchNo1())) {
+ parentActorID = fopAcM_create(PROC_NPC_TKS, 2, &cXyz(-13.272481f, 2887.0f, -10373.718f),
+ fopAcM_GetRoomNo(this), &csXyz(0, 0x7FFF, 0), NULL, -1);
+ }
+}
+
+/* 80D4FBD8-80D4FE5C 0003B8 0284+00 1/1 0/0 0/0 .text create__14daTagLv6Gate_cFv */
+int daTagLv6Gate_c::create() {
+ fopAcM_SetupActor(this, daTagLv6Gate_c);
+
+ int phase = dComIfG_resLoad(&mPhase, l_arcName);
+
+ if (phase == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x7800)) {
+ return cPhs_ERROR_e;
+ } else {
+ create_init();
+ }
+ }
+
+ return phase;
+}
+
+/* 80D4FEBC-80D4FEDC 00069C 0020+00 1/0 0/0 0/0 .text daTagLv6Gate_Execute__FP14daTagLv6Gate_c */
+static int daTagLv6Gate_Execute(daTagLv6Gate_c* i_this) {
+ return i_this->execute();
+}
+
/* 80D5068C-80D506AC 000E6C 0020+00 1/0 0/0 0/0 .text daTagLv6Gate_Draw__FP14daTagLv6Gate_c */
static int daTagLv6Gate_Draw(daTagLv6Gate_c* i_this) {
return i_this->draw();