summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <takarikka@outlook.com>2023-06-30 00:26:45 -0700
committerTakaRikka <takarikka@outlook.com>2023-06-30 00:26:45 -0700
commit7b680de442ca367fca79bf1c0a74ab477a50fa21 (patch)
treec642b50ef3debab541c442683c7aab05bd0024e3
parentdae37fdbbb757cbf42eb636816f01ef076e2c1aa (diff)
d_a_obj_lv3waterEff / d_a_kytag16 OK
-rw-r--r--include/d/kankyo/d_kankyo.h6
-rw-r--r--include/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h21
-rw-r--r--include/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h14
-rw-r--r--rel/d/a/kytag/d_a_kytag16/d_a_kytag16.cpp449
-rw-r--r--rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.cpp309
5 files changed, 293 insertions, 506 deletions
diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h
index 6daa055ab8..5265deda92 100644
--- a/include/d/kankyo/d_kankyo.h
+++ b/include/d/kankyo/d_kankyo.h
@@ -42,6 +42,8 @@ void dKy_BossLight_set(cXyz* param_0, _GXColor* param_1, f32 param_2, u8 param_3
void dKy_custom_colset(u8 prevGather, u8 curGather, f32 blend);
void dKy_setLight();
cXyz dKy_plight_near_pos();
+void dKy_BossSpotLight_set(cXyz* param_0, f32 param_1, f32 param_2, f32 param_3, _GXColor* param_4,
+ f32 param_5, u8 param_6, u8 param_7);
struct LIGHT_INFLUENCE {
/* 800CFC7C */ ~LIGHT_INFLUENCE() {}
@@ -168,12 +170,12 @@ struct LightStatus {
/* 0x4C */ f32 mRefDist;
/* 0x50 */ f32 mRefBrightness;
/* 0x54 */ GXDistAttnFn mDistFn;
- /* 0x58 */ u32 field_0x58[2][6]; //?
+ /* 0x58 */ u32 field_0x58[2][6]; //?
/* 0x88 */ f32 field_0x88;
/* 0x8C */ f32 field_0x8c;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ f32 field_0x94;
- /* 0x98 */ u32 field_0x98[2][8]; //?
+ /* 0x98 */ u32 field_0x98[2][8]; //?
/* 0xD8 */ f32 field_0xd8;
/* 0xDC */ f32 field_0xdc;
/* 0xE0 */ f32 field_0xe0;
diff --git a/include/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h b/include/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h
index 8aced5f54f..57bf6472eb 100644
--- a/include/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h
+++ b/include/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h
@@ -1,6 +1,25 @@
#ifndef D_A_KYTAG16_H
#define D_A_KYTAG16_H
-#include "dolphin/types.h"
+#include "f_op/f_op_actor_mng.h"
+
+class kytag16_class : public fopAc_ac_c {
+public:
+ /* 0x568 */ f32 field_0x568;
+ /* 0x56C */ u8 field_0x56c;
+ /* 0x56D */ GXColor field_0x56d;
+ /* 0x571 */ u8 field_0x571;
+ /* 0x572 */ u8 field_0x572;
+ /* 0x573 */ u8 field_0x573;
+ /* 0x574 */ f32 field_0x574;
+ /* 0x578 */ f32 field_0x578;
+ /* 0x57C */ f32 field_0x57c;
+ /* 0x580 */ f32 field_0x580;
+ /* 0x584 */ f32 field_0x584;
+ /* 0x588 */ s16 field_0x588;
+ /* 0x58A */ s16 field_0x58a;
+ /* 0x58C */ u8 field_0x58c;
+ /* 0x58D */ u8 field_0x58d;
+};
#endif /* D_A_KYTAG16_H */
diff --git a/include/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h b/include/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h
index 1dc777bd76..e8064a8889 100644
--- a/include/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h
+++ b/include/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h
@@ -1,6 +1,18 @@
#ifndef D_A_OBJ_LV3WATEREFF_H
#define D_A_OBJ_LV3WATEREFF_H
-#include "dolphin/types.h"
+#include "f_op/f_op_actor_mng.h"
+
+class daObjWaterEff_c : public fopAc_ac_c {
+public:
+ /* 80C5C4F8 */ int Create();
+ /* 80C5C5DC */ int create();
+ /* 80C5C6B0 */ int execute();
+ /* 80C5C7B8 */ int _delete();
+
+ /* 0x568 */ cXyz mSePositions[2];
+ /* 0x580 */ JPABaseEmitter* mParticles[4];
+ /* 0x590 */ u8 unused_0x590[0x594 - 0x590];
+};
#endif /* D_A_OBJ_LV3WATEREFF_H */
diff --git a/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.cpp b/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.cpp
index db890c3bd5..15524a7186 100644
--- a/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.cpp
+++ b/rel/d/a/kytag/d_a_kytag16/d_a_kytag16.cpp
@@ -4,307 +4,196 @@
//
#include "rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h"
-#include "dol2asm.h"
-#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct kytag16_class {};
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
-};
-
-struct dSv_info_c {
- /* 80035360 */ void isSwitch(int, int) const;
-};
-
-struct cXyz {};
-
-struct _GXColor {};
-
-struct JMath {
- static u8 sincosTable_[65536];
-};
-
-//
-// Forward References:
-//
-
-extern "C" static bool daKytag16_Draw__FP13kytag16_class();
-extern "C" static void daKytag16_Execute__FP13kytag16_class();
-extern "C" static bool daKytag16_IsDelete__FP13kytag16_class();
-extern "C" static bool daKytag16_Delete__FP13kytag16_class();
-extern "C" static void daKytag16_Create__FP10fopAc_ac_c();
-extern "C" extern char const* const d_a_kytag16__stringBase0;
-extern "C" extern void* g_profile_KYTAG16[12];
-
-//
-// External References:
-//
-
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void isSwitch__10dSv_info_cCFii();
-extern "C" void dKy_getdaytime_hour__Fv();
-extern "C" void dKy_BossSpotLight_set__FP4cXyzfffP8_GXColorfUcUc();
-extern "C" void cM_rndFX__Ff();
-extern "C" void cLib_addCalc__FPfffff();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_29();
-extern "C" void strcmp();
-extern "C" extern void* g_fopAc_Method[8];
-extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 g_Counter[12 + 4 /* padding */];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
-
-//
-// Declarations:
-//
+#include "JSystem/JKernel/JKRHeap.h"
+#include "SSystem/SComponent/c_counter.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/d_procname.h"
/* 80860C58-80860C60 000078 0008+00 1/0 0/0 0/0 .text daKytag16_Draw__FP13kytag16_class
*/
-static bool daKytag16_Draw(kytag16_class* param_0) {
- return true;
+static int daKytag16_Draw(kytag16_class* i_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 80861134-80861138 000000 0004+00 2/2 0/0 0/0 .rodata @3839 */
-SECTION_RODATA static u8 const lit_3839[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80861134, &lit_3839);
-
-/* 80861138-8086113C 000004 0004+00 0/2 0/0 0/0 .rodata @3840 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3840 = 1.0f;
-COMPILER_STRIP_GATE(0x80861138, &lit_3840);
-#pragma pop
-
-/* 8086113C-80861140 000008 0004+00 0/1 0/0 0/0 .rodata @3841 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3841 = 0.5f;
-COMPILER_STRIP_GATE(0x8086113C, &lit_3841);
-#pragma pop
-
-/* 80861140-80861144 00000C 0004+00 0/1 0/0 0/0 .rodata @3842 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3842 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80861140, &lit_3842);
-#pragma pop
-
-/* 80861144-80861148 000010 0004+00 0/1 0/0 0/0 .rodata @3843 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_3843 = 0x38D1B717;
-COMPILER_STRIP_GATE(0x80861144, &lit_3843);
-#pragma pop
-
-/* 80861148-8086114C 000014 0004+00 0/1 0/0 0/0 .rodata @3844 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3844 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80861148, &lit_3844);
-#pragma pop
-
-/* 8086114C-80861150 000018 0004+00 0/1 0/0 0/0 .rodata @3845 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3845 = 40.0f;
-COMPILER_STRIP_GATE(0x8086114C, &lit_3845);
-#pragma pop
-
-/* 80861150-80861154 00001C 0004+00 0/1 0/0 0/0 .rodata @3846 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3846 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80861150, &lit_3846);
-#pragma pop
-
-/* 80861154-80861158 000020 0004+00 0/1 0/0 0/0 .rodata @3847 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_3847 = 0x3A83126F;
-COMPILER_STRIP_GATE(0x80861154, &lit_3847);
-#pragma pop
-
-/* 80861158-8086115C 000024 0004+00 0/1 0/0 0/0 .rodata @3848 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3848 = 12.0f;
-COMPILER_STRIP_GATE(0x80861158, &lit_3848);
-#pragma pop
-
-/* 8086115C-80861160 000028 0004+00 0/1 0/0 0/0 .rodata @3849 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3849 = 50.0f;
-COMPILER_STRIP_GATE(0x8086115C, &lit_3849);
-#pragma pop
-
-/* 80861194-80861194 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80861194 = "F_SP117";
-#pragma pop
-
/* 80860C60-80860E9C 000080 023C+00 1/0 0/0 0/0 .text daKytag16_Execute__FP13kytag16_class */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daKytag16_Execute(kytag16_class* param_0) {
- nofralloc
-#include "asm/rel/d/a/kytag/d_a_kytag16/d_a_kytag16/daKytag16_Execute__FP13kytag16_class.s"
+static int daKytag16_Execute(kytag16_class* i_this) {
+ bool var_r29 = false;
+ f32 var_f31 = 0.0f;
+ f32 var_f30 = 0.0f;
+
+ if (i_this->field_0x571 < 31) {
+ if (i_this->field_0x571 > i_this->field_0x572) {
+ if (dKy_getdaytime_hour() >= i_this->field_0x571 ||
+ dKy_getdaytime_hour() <= i_this->field_0x572)
+ {
+ var_r29 = true;
+ }
+ } else if (dKy_getdaytime_hour() >= i_this->field_0x571 &&
+ dKy_getdaytime_hour() <= i_this->field_0x572)
+ {
+ var_r29 = true;
+ }
+ } else {
+ var_r29 = true;
+ }
+
+ if (var_r29) {
+ var_r29 = false;
+
+ if (i_this->field_0x573 != 0xFF) {
+ s32 room_no = dComIfGp_roomControl_getStayNo();
+
+ if (dComIfGs_isSwitch(i_this->field_0x573, room_no)) {
+ var_r29 = true;
+ }
+ } else {
+ var_r29 = true;
+ }
+ }
+
+ if (var_r29) {
+ if (strcmp(dComIfGp_getStartStageName(), "F_SP117") != 0) {
+ cLib_addCalc(&i_this->field_0x568, 1.0f, 0.5f, 0.1f, 0.0001f);
+ } else {
+ var_f31 = cM_ssin(i_this->field_0x588);
+ var_f30 = cM_scos(i_this->field_0x58a);
+
+ i_this->field_0x588 += 0x500;
+ i_this->field_0x58a += 800;
+
+ cLib_addCalc(&i_this->field_0x568, 0.9f + (0.1f * cM_ssin(g_Counter.mCounter0 * 0x500)),
+ 0.5f, 0.1f, 0.0001f);
+ i_this->field_0x580 = 40.0f;
+ }
+ } else {
+ cLib_addCalc(&i_this->field_0x568, 0.0f, 0.5f, 0.05f, 0.0001f);
+ }
+
+ if (i_this->field_0x568 > 0.001f) {
+ dKy_BossSpotLight_set(&i_this->current.pos, i_this->field_0x578 + (12.0f * var_f31),
+ i_this->field_0x57c + (50.0f * var_f30), i_this->field_0x580,
+ &i_this->field_0x56d, i_this->field_0x574 * i_this->field_0x568,
+ i_this->field_0x58c, i_this->field_0x58d);
+ }
+
+ return 1;
}
-#pragma pop
/* 80860E9C-80860EA4 0002BC 0008+00 1/0 0/0 0/0 .text daKytag16_IsDelete__FP13kytag16_class */
-static bool daKytag16_IsDelete(kytag16_class* param_0) {
- return true;
+static int daKytag16_IsDelete(kytag16_class* i_this) {
+ return 1;
}
/* 80860EA4-80860EAC 0002C4 0008+00 1/0 0/0 0/0 .text daKytag16_Delete__FP13kytag16_class
*/
-static bool daKytag16_Delete(kytag16_class* param_0) {
- return true;
+static int daKytag16_Delete(kytag16_class* i_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 80861160-80861164 00002C 0004+00 0/1 0/0 0/0 .rodata @3902 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3902 = 180.0f;
-COMPILER_STRIP_GATE(0x80861160, &lit_3902);
-#pragma pop
-
-/* 80861164-80861168 000030 0004+00 0/1 0/0 0/0 .rodata @3903 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3903 = 32767.0f;
-COMPILER_STRIP_GATE(0x80861164, &lit_3903);
-#pragma pop
-
-/* 80861168-8086116C 000034 0004+00 0/1 0/0 0/0 .rodata @3904 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3904 = 65535.0f;
-COMPILER_STRIP_GATE(0x80861168, &lit_3904);
-#pragma pop
-
-/* 8086116C-80861170 000038 0004+00 0/1 0/0 0/0 .rodata @3905 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3905 = 45.0f;
-COMPILER_STRIP_GATE(0x8086116C, &lit_3905);
-#pragma pop
-
-/* 80861170-80861174 00003C 0004+00 0/0 0/0 0/0 .rodata @3906 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3906 = 5.0f;
-COMPILER_STRIP_GATE(0x80861170, &lit_3906);
-#pragma pop
-
-/* 80861174-80861178 000040 0004+00 0/0 0/0 0/0 .rodata @3907 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3907 = 10.0f;
-COMPILER_STRIP_GATE(0x80861174, &lit_3907);
-#pragma pop
-
-/* 80861178-8086117C 000044 0004+00 0/0 0/0 0/0 .rodata @3908 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3908 = 25.0f;
-COMPILER_STRIP_GATE(0x80861178, &lit_3908);
-#pragma pop
-
-/* 8086117C-80861180 000048 0004+00 0/0 0/0 0/0 .rodata @3909 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3909 = 70.0f;
-COMPILER_STRIP_GATE(0x8086117C, &lit_3909);
-#pragma pop
-
-/* 80861180-80861184 00004C 0004+00 0/0 0/0 0/0 .rodata @3910 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3910 = 60.0f;
-COMPILER_STRIP_GATE(0x80861180, &lit_3910);
-#pragma pop
-
-/* 80861184-8086118C 000050 0004+04 0/0 0/0 0/0 .rodata @3911 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3911[1 + 1 /* padding */] = {
- 1.0f / 100.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x80861184, &lit_3911);
-#pragma pop
-
-/* 8086118C-80861194 000058 0008+00 0/1 0/0 0/0 .rodata @3913 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_3913[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8086118C, &lit_3913);
-#pragma pop
-
-/* 8086119C-808611BC -00001 0020+00 1/1 0/0 0/0 .data @3917 */
-SECTION_DATA static void* lit_3917[8] = {
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x150),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x170),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x194),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x1B8),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x1D8),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x1FC),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x220),
- (void*)(((char*)daKytag16_Create__FP10fopAc_ac_c) + 0x244),
-};
-
/* 80860EAC-8086112C 0002CC 0280+00 2/0 0/0 0/0 .text daKytag16_Create__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daKytag16_Create(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/kytag/d_a_kytag16/d_a_kytag16/daKytag16_Create__FP10fopAc_ac_c.s"
+static int daKytag16_Create(fopAc_ac_c* i_this) {
+ if (!fopAcM_CheckCondition(i_this, 8)) {
+ new (i_this) kytag16_class();
+ fopAcM_OnCondition(i_this, 8);
+ }
+ kytag16_class* this_ = (kytag16_class*)i_this;
+
+ this_->field_0x573 = fopAcM_GetParam(this_) & 0xFF;
+ this_->field_0x56c = (this_->current.angle.z >> 10) & 0x3F;
+
+ this_->field_0x56d.r = fopAcM_GetParam(this_) >> 0x8;
+ this_->field_0x56d.g = fopAcM_GetParam(this_) >> 0x10;
+ this_->field_0x56d.b = fopAcM_GetParam(this_) >> 0x18;
+
+ this_->field_0x571 = this_->current.angle.z & 0x1F;
+ this_->field_0x572 = (this_->current.angle.z >> 5) & 0x1F;
+ this_->field_0x578 = (this_->shape_angle.x / 32767.0f) * 180.0f;
+ this_->field_0x57c = (this_->shape_angle.y / 32767.0f) * 180.0f;
+
+ this_->field_0x588 = cM_rndFX(65535.0f);
+ this_->field_0x58a = cM_rndFX(65535.0f);
+ this_->field_0x584 = 1.0f;
+ this_->field_0x568 = 0.0f;
+
+ switch (this_->field_0x56c) {
+ case 0:
+ this_->field_0x580 = 45.0f;
+ this_->field_0x574 = 1.0f;
+ this_->field_0x58c = 0;
+ this_->field_0x58d = 3;
+ break;
+ case 1:
+ this_->field_0x580 = 45.0f;
+ this_->field_0x574 = 5.0f;
+ this_->field_0x58c = 0;
+ this_->field_0x58d = 3;
+ break;
+ case 2:
+ this_->field_0x580 = 45.0f;
+ this_->field_0x574 = 10.0f;
+ this_->field_0x58c = 0;
+ this_->field_0x58d = 3;
+ break;
+ case 3:
+ this_->field_0x580 = 25.0f;
+ this_->field_0x574 = 1.0f;
+ this_->field_0x58c = 2;
+ this_->field_0x58d = 3;
+ break;
+ case 4:
+ this_->field_0x580 = 45.0f;
+ this_->field_0x574 = 5.0f;
+ this_->field_0x58c = 2;
+ this_->field_0x58d = 3;
+ break;
+ case 5:
+ this_->field_0x580 = 70.0f;
+ this_->field_0x574 = 10.0f;
+ this_->field_0x58c = 2;
+ this_->field_0x58d = 3;
+ break;
+ case 6:
+ this_->field_0x580 = 60.0f;
+ this_->field_0x574 = 0.01f;
+ this_->field_0x58c = 2;
+ this_->field_0x58d = 1;
+ break;
+ case 7:
+ this_->field_0x580 = 50.0f;
+ this_->field_0x574 = 0.01f;
+ this_->field_0x58c = 2;
+ this_->field_0x58d = 1;
+ break;
+ }
+
+ return cPhs_COMPLEATE_e;
}
-#pragma pop
/* ############################################################################################## */
/* 808611BC-808611DC -00001 0020+00 1/0 0/0 0/0 .data l_daKytag16_Method */
-SECTION_DATA static void* l_daKytag16_Method[8] = {
- (void*)daKytag16_Create__FP10fopAc_ac_c,
- (void*)daKytag16_Delete__FP13kytag16_class,
- (void*)daKytag16_Execute__FP13kytag16_class,
- (void*)daKytag16_IsDelete__FP13kytag16_class,
- (void*)daKytag16_Draw__FP13kytag16_class,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daKytag16_Method = {
+ (process_method_func)daKytag16_Create,
+ (process_method_func)daKytag16_Delete,
+ (process_method_func)daKytag16_Execute,
+ (process_method_func)daKytag16_IsDelete,
+ (process_method_func)daKytag16_Draw,
};
/* 808611DC-8086120C -00001 0030+00 0/0 0/0 1/0 .data g_profile_KYTAG16 */
-SECTION_DATA extern void* g_profile_KYTAG16[12] = {
- (void*)0xFFFFFFFD, (void*)0x0007FFFD,
- (void*)0x02BA0000, (void*)&g_fpcLf_Method,
- (void*)0x00000590, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x006E0000, (void*)&l_daKytag16_Method,
- (void*)0x00060000, (void*)NULL,
+extern actor_process_profile_definition g_profile_KYTAG16 = {
+ -3,
+ 7,
+ -3,
+ PROC_KYTAG16,
+ &g_fpcLf_Method.mBase,
+ sizeof(kytag16_class),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 110,
+ &l_daKytag16_Method,
+ 0x60000,
+ 0,
+ 0,
};
-
-/* 80861194-80861194 000060 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
diff --git a/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.cpp b/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.cpp
index 4e5d5404da..3861fd49b1 100644
--- a/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.cpp
+++ b/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.cpp
@@ -1,258 +1,123 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d_a_obj_lv3waterEff
-//
+/**
+ * d_a_obj_lv3waterEff.cpp
+ * Lakebed Temple Pre-Deku Toad Room Water Bubbles
+ */
#include "rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff.h"
-#include "dol2asm.h"
-#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
-};
-
-struct daObjWaterEff_c {
- /* 80C5C4F8 */ void Create();
- /* 80C5C5DC */ void create();
- /* 80C5C6B0 */ void execute();
- /* 80C5C7B8 */ void _delete();
-};
-
-struct dPa_levelEcallBack {};
-
-struct dKy_tevstr_c {};
-
-struct csXyz {};
-
-struct _GXColor {};
+#include "JSystem/JKernel/JKRHeap.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/d_procname.h"
-struct cXyz {
- /* 80C5C670 */ ~cXyz();
- /* 80C5C6AC */ cXyz();
-};
-
-struct dPa_control_c {
- /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
- u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
- cXyz const*, f32);
-};
-
-struct JAISoundID {};
-
-struct Vec {};
-
-struct Z2SeMgr {
- /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
-};
-
-struct Z2AudioMgr {
- static u8 mAudioMgrPtr[4 + 4 /* padding */];
-};
-
-//
-// Forward References:
-//
-
-extern "C" void Create__15daObjWaterEff_cFv();
-extern "C" void create__15daObjWaterEff_cFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void execute__15daObjWaterEff_cFv();
-extern "C" void _delete__15daObjWaterEff_cFv();
-extern "C" static void daObjWaterEff_Execute__FP15daObjWaterEff_c();
-extern "C" static void daObjWaterEff_Delete__FP15daObjWaterEff_c();
-extern "C" static void daObjWaterEff_Create__FP10fopAc_ac_c();
-extern "C" extern void* g_profile_Obj_WaterEff[12];
-
-//
-// External References:
-//
-
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void
-set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
-extern "C" void dKy_camera_water_in_status_check__Fv();
-extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void __dl__FPv();
-extern "C" void __construct_array();
-extern "C" void _savegpr_25();
-extern "C" void _restgpr_25();
-extern "C" extern void* g_fopAc_Method[8];
-extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 80C5C878-80C5C880 000000 0008+00 1/1 0/0 0/0 .rodata l_eff_id */
-SECTION_RODATA static u8 const l_eff_id[8] = {
- 0x86, 0xD2, 0x86, 0xD3, 0x86, 0xD4, 0x86, 0xD5,
+static u16 const l_eff_id[] = {
+ 0x86D2,
+ 0x86D3,
+ 0x86D4,
+ 0x86D5,
};
-COMPILER_STRIP_GATE(0x80C5C878, &l_eff_id);
-
-/* 80C5C880-80C5C884 000008 0004+00 1/2 0/0 0/0 .rodata @3637 */
-SECTION_RODATA static f32 const lit_3637 = 1.0f;
-COMPILER_STRIP_GATE(0x80C5C880, &lit_3637);
-
-/* 80C5C884-80C5C888 00000C 0004+00 0/1 0/0 0/0 .rodata @3638 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3638 = 14420.0f;
-COMPILER_STRIP_GATE(0x80C5C884, &lit_3638);
-#pragma pop
-
-/* 80C5C888-80C5C88C 000010 0004+00 0/1 0/0 0/0 .rodata @3639 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3639 = -1100.0f;
-COMPILER_STRIP_GATE(0x80C5C888, &lit_3639);
-#pragma pop
-
-/* 80C5C88C-80C5C890 000014 0004+00 0/1 0/0 0/0 .rodata @3640 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3640 = -4950.0f;
-COMPILER_STRIP_GATE(0x80C5C88C, &lit_3640);
-#pragma pop
-
-/* 80C5C890-80C5C894 000018 0004+00 0/1 0/0 0/0 .rodata @3641 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3641 = 12585.0f;
-COMPILER_STRIP_GATE(0x80C5C890, &lit_3641);
-#pragma pop
-
-/* 80C5C894-80C5C898 00001C 0004+00 0/1 0/0 0/0 .rodata @3642 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3642 = -550.0f;
-COMPILER_STRIP_GATE(0x80C5C894, &lit_3642);
-#pragma pop
-
-/* 80C5C898-80C5C89C 000020 0004+00 0/1 0/0 0/0 .rodata @3643 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3643 = -2390.0f;
-COMPILER_STRIP_GATE(0x80C5C898, &lit_3643);
-#pragma pop
/* 80C5C4F8-80C5C5DC 000078 00E4+00 1/1 0/0 0/0 .text Create__15daObjWaterEff_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjWaterEff_c::Create() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/Create__15daObjWaterEff_cFv.s"
+int daObjWaterEff_c::Create() {
+ for (int i = 0; i < 4; i++) {
+ mParticles[i] = dComIfGp_particle_set(l_eff_id[i], &current.pos, NULL, NULL, 0xFF, NULL, -1,
+ NULL, NULL, NULL);
+ }
+
+ mSePositions[0].set(14420.0f, -1100.0f, -4950.0f);
+ mSePositions[1].set(12585.0f, -550.0f, -2390.0f);
+ return 1;
}
-#pragma pop
/* 80C5C5DC-80C5C670 00015C 0094+00 1/1 0/0 0/0 .text create__15daObjWaterEff_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjWaterEff_c::create() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/func_80C5C5DC.s"
-}
-#pragma pop
+int daObjWaterEff_c::create() {
+ if (!fopAcM_CheckCondition(this, 8)) {
+ new (this) daObjWaterEff_c();
+ fopAcM_OnCondition(this, 8);
+ }
-/* 80C5C670-80C5C6AC 0001F0 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm cXyz::~cXyz() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/__dt__4cXyzFv.s"
-}
-#pragma pop
+ if (!Create()) {
+ return cPhs_ERROR_e;
+ }
-/* 80C5C6AC-80C5C6B0 00022C 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-cXyz::cXyz() {
- /* empty function */
+ return cPhs_COMPLEATE_e;
}
-/* ############################################################################################## */
-/* 80C5C89C-80C5C8A0 000024 0004+00 1/1 0/0 0/0 .rodata @3710 */
-SECTION_RODATA static f32 const lit_3710 = -1.0f;
-COMPILER_STRIP_GATE(0x80C5C89C, &lit_3710);
-
/* 80C5C6B0-80C5C7B8 000230 0108+00 1/1 0/0 0/0 .text execute__15daObjWaterEff_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjWaterEff_c::execute() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/execute__15daObjWaterEff_cFv.s"
+int daObjWaterEff_c::execute() {
+ if (dKy_camera_water_in_status_check()) {
+ for (int i = 0; i < 4; i++) {
+ if (mParticles[i] != NULL) {
+ mParticles[i]->setGlobalAlpha(255);
+ }
+ }
+ } else {
+ for (int i = 0; i < 4; i++) {
+ if (mParticles[i] != NULL) {
+ mParticles[i]->setGlobalAlpha(128);
+ }
+ }
+ }
+
+ for (int i = 0; i < 2; i++) {
+ i_mDoAud_seStartLevel(Z2SE_OBJ_WTR_STREAM, &mSePositions[i], 0, 0);
+ }
+
+ return 1;
}
-#pragma pop
/* 80C5C7B8-80C5C810 000338 0058+00 1/1 0/0 0/0 .text _delete__15daObjWaterEff_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daObjWaterEff_c::_delete() {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/_delete__15daObjWaterEff_cFv.s"
+int daObjWaterEff_c::_delete() {
+ for (int i = 0; i < 4; i++) {
+ if (mParticles[i] != NULL) {
+ mParticles[i]->becomeInvalidEmitter();
+ mParticles[i]->quitImmortalEmitter();
+ mParticles[i] = NULL;
+ }
+ }
+
+ return 1;
}
-#pragma pop
/* 80C5C810-80C5C830 000390 0020+00 1/0 0/0 0/0 .text daObjWaterEff_Execute__FP15daObjWaterEff_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjWaterEff_Execute(daObjWaterEff_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/daObjWaterEff_Execute__FP15daObjWaterEff_c.s"
+static int daObjWaterEff_Execute(daObjWaterEff_c* i_this) {
+ return i_this->execute();
}
-#pragma pop
/* 80C5C830-80C5C850 0003B0 0020+00 1/0 0/0 0/0 .text daObjWaterEff_Delete__FP15daObjWaterEff_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjWaterEff_Delete(daObjWaterEff_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/daObjWaterEff_Delete__FP15daObjWaterEff_c.s"
+static int daObjWaterEff_Delete(daObjWaterEff_c* i_this) {
+ return i_this->_delete();
}
-#pragma pop
/* 80C5C850-80C5C870 0003D0 0020+00 1/0 0/0 0/0 .text daObjWaterEff_Create__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daObjWaterEff_Create(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/obj/d_a_obj_lv3waterEff/d_a_obj_lv3waterEff/daObjWaterEff_Create__FP10fopAc_ac_c.s"
+static int daObjWaterEff_Create(fopAc_ac_c* i_this) {
+ return static_cast<daObjWaterEff_c*>(i_this)->create();
}
-#pragma pop
/* ############################################################################################## */
/* 80C5C8A0-80C5C8C0 -00001 0020+00 1/0 0/0 0/0 .data l_daObjWaterEff_Method */
-SECTION_DATA static void* l_daObjWaterEff_Method[8] = {
- (void*)daObjWaterEff_Create__FP10fopAc_ac_c,
- (void*)daObjWaterEff_Delete__FP15daObjWaterEff_c,
- (void*)daObjWaterEff_Execute__FP15daObjWaterEff_c,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daObjWaterEff_Method = {
+ (process_method_func)daObjWaterEff_Create,
+ (process_method_func)daObjWaterEff_Delete,
+ (process_method_func)daObjWaterEff_Execute,
+ (process_method_func)NULL,
+ (process_method_func)NULL,
};
/* 80C5C8C0-80C5C8F0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_WaterEff */
-SECTION_DATA extern void* g_profile_Obj_WaterEff[12] = {
- (void*)0xFFFFFFFD, (void*)0x0007FFFD,
- (void*)0x017F0000, (void*)&g_fpcLf_Method,
- (void*)0x00000594, (void*)NULL,
- (void*)NULL, (void*)&g_fopAc_Method,
- (void*)0x022B0000, (void*)&l_daObjWaterEff_Method,
- (void*)0x00040100, (void*)0x000E0000,
+extern actor_process_profile_definition g_profile_Obj_WaterEff = {
+ -3,
+ 7,
+ -3,
+ PROC_Obj_WaterEff,
+ &g_fpcLf_Method.mBase,
+ sizeof(daObjWaterEff_c),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 555,
+ &l_daObjWaterEff_Method,
+ 0x40100,
+ 0,
+ 14,
};